コンテンツにスキップ

FileSystem

サンドボックス内でのファイルシステム操作を提供します。

Constructors

new FileSystem()

new FileSystem(
sandboxId: string,
clientConfig: Configuration,
toolboxApi: ToolboxApi,
getRootDir: () => Promise<string>): FileSystem

Parameters:

  • sandboxId string
  • clientConfig Configuration
  • toolboxApi ToolboxApi
  • getRootDir () => Promise<string>

Returns:

  • FileSystem

Methods

createFolder()

createFolder(path: string, mode: string): Promise<void>

指定した権限でサンドボックス内に新しいディレクトリを作成します。

Parameters:

  • path string - ディレクトリを作成するパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • mode string - 8 進数形式のディレクトリ権限(例: “755”)

Returns:

  • Promise<void>

Example:

// 標準的な権限でディレクトリを作成
await fs.createFolder('app/data', '755');

deleteFile()

deleteFile(path: string): Promise<void>

サンドボックスからファイルまたはディレクトリを削除します。

Parameters:

  • path string - 削除するファイルまたはディレクトリのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。

Returns:

  • Promise<void>

Example:

// ファイルを削除
await fs.deleteFile('app/temp.log');

downloadFile()

Call Signature
downloadFile(remotePath: string, timeout?: number): Promise<Buffer<ArrayBufferLike>>

サンドボックスからファイルをダウンロードします。このメソッドはファイル全体をメモリに読み込むため、 大きなファイルのダウンロードには推奨されません。

Parameters:

  • remotePath string - ダウンロードするファイルのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • timeout? number - ダウンロード操作のタイムアウト(秒)。0 はタイムアウトなしを意味します。 既定は 30 分です。

Returns:

  • Promise<Buffer<ArrayBufferLike>> - ファイル内容を表す Buffer。

Example:

// ファイルをダウンロードして処理
const fileBuffer = await fs.downloadFile('tmp/data.json');
console.log('File content:', fileBuffer.toString());
Call Signature
downloadFile(
remotePath: string,
localPath: string,
timeout?: number): Promise<void>

サンドボックスからファイルをダウンロードしてローカルファイルに保存します。このメソッドはストリーミングを使用して ファイルをダウンロードするため、より大きなファイルのダウンロードに適しています。

Parameters:

  • remotePath string - サンドボックス内でダウンロードするファイルのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • localPath string - ダウンロードしたファイルの保存先パス。
  • timeout? number - ダウンロード操作のタイムアウト(秒)。0 はタイムアウトなしを意味します。 既定は 30 分です。

Returns:

  • Promise<void>

Example:

// ファイルをダウンロードして保存
await fs.downloadFile('tmp/data.json', 'local_file.json');

findFiles()

findFiles(path: string, pattern: string): Promise<Match[]>

サンドボックス内のファイルでテキストパターンを検索します。

Parameters:

  • path string - 検索対象のディレクトリ。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • pattern string - 検索パターン

Returns:

  • Promise<Match[]> - ファイルおよび行情報を含む一致結果の配列

Example:

// TypeScript ファイル内の TODO コメントをすべて検索
const matches = await fs.findFiles('app/src', 'TODO:');
matches.forEach(match => {
console.log(`${match.file}:${match.line}: ${match.content}`);
});

getFileDetails()

getFileDetails(path: string): Promise<FileInfo>

ファイルまたはディレクトリの詳細情報を取得します。

Parameters:

  • path string - ファイルまたはディレクトリのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。

Returns:

  • Promise<FileInfo> - サイズ、権限、更新時刻などの詳細情報

Example:

// ファイルの詳細を取得
const info = await fs.getFileDetails('app/config.json');
console.log(`Size: ${info.size}, Modified: ${info.modTime}`);

listFiles()

listFiles(path: string): Promise<FileInfo[]>

サンドボックス内のディレクトリの内容を一覧表示します。

パラメータ:

  • path string - 一覧表示するディレクトリのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。

戻り値:

  • Promise<FileInfo[]> - ファイルおよびディレクトリ情報の配列

例:

// List directory contents
const files = await fs.listFiles('app/src');
files.forEach(file => {
console.log(`${file.name} (${file.size} bytes)`);
});

moveFiles()

moveFiles(source: string, destination: string): Promise<void>

ファイルまたはディレクトリを移動または名前変更します。

パラメータ:

  • source string - 移動元のパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • destination string - 移動先のパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。

戻り値:

  • Promise<void>

例:

// Move a file to a new location
await fs.moveFiles('app/temp/data.json', 'app/data/data.json');

replaceInFiles()

replaceInFiles(
files: string[],
pattern: string,
newValue: string): Promise<ReplaceResult[]>

複数のファイル内のテキストを置換します。

パラメータ:

  • files string[] - 処理するファイルパスの配列。相対パスはユーザーの
  • pattern string - 置換対象のパターン
  • newValue string - 置換後のテキスト

戻り値:

  • Promise<ReplaceResult[]> - 各ファイルに対する置換結果

例:

// Update version number across multiple files
const results = await fs.replaceInFiles(
['app/package.json', 'app/version.ts'],
'"version": "1.0.0"',
'"version": "1.1.0"'
);

searchFiles()

searchFiles(path: string, pattern: string): Promise<SearchFilesResponse>

サンドボックス内で、名前パターンに一致するファイルやディレクトリを検索します。

パラメータ:

  • path string - 検索対象のディレクトリ。相対パスはユーザーの
  • pattern string - ファイル名のパターン(グロブ対応)

戻り値:

  • Promise<SearchFilesResponse> - 一致したファイルを含む検索結果

例:

// Find all TypeScript files
const result = await fs.searchFiles('app', '*.ts');
result.files.forEach(file => console.log(file));

setFilePermissions()

setFilePermissions(path: string, permissions: FilePermissionsParams): Promise<void>

ファイルまたはディレクトリの権限と所有権を設定します。

パラメータ:

  • path string - ファイルまたはディレクトリのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • permissions FilePermissionsParams - 権限設定

戻り値:

  • Promise<void>

例:

// Set file permissions and ownership
await fs.setFilePermissions('app/script.sh', {
owner: 'daytona',
group: 'users',
mode: '755' // シェルスクリプトに実行権限を付与
});

uploadFile()

呼び出しシグネチャ
uploadFile(
file: Buffer,
remotePath: string,
timeout?: number): Promise<void>

サンドボックスにファイルをアップロードします。このメソッドはファイル全体をメモリに読み込むため、大きなファイルのアップロードには推奨されません。

パラメータ:

  • file Buffer - アップロードするファイルのバッファ。
  • remotePath string - サンドボックス内のアップロード先パス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • timeout? number - アップロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。 既定値は30分です。

戻り値:

  • Promise<void>

例:

// Upload a configuration file
await fs.uploadFile(Buffer.from('{"setting": "value"}'), 'tmp/config.json');
呼び出しシグネチャ
uploadFile(
localPath: string,
remotePath: string,
timeout?: number): Promise<void>

ローカルファイルシステムからサンドボックスへファイルをアップロードします。このメソッドはストリーミングでアップロードを行うため、大きなファイルのアップロードに適しています。

パラメータ:

  • localPath string - アップロードするローカルファイルのパス。
  • remotePath string - サンドボックス内の保存先パス。相対パスはユーザーのルートディレクトリを基準に解決されます。
  • timeout? number - アップロード操作のタイムアウト(秒)。0 はタイムアウトなしを意味します。 既定値は 30 分です。

戻り値:

  • Promise<void>

例:

// ローカルファイルをアップロード
await fs.uploadFile('local_file.txt', 'tmp/file.txt');

uploadFiles()

uploadFiles(files: FileUpload[], timeout?: number): Promise<void>

複数のファイルをサンドボックスにアップロードします。保存先パスに既にファイルが存在する場合は上書きされます。

パラメータ:

  • files FileUpload[] - アップロードするファイルの配列。
  • timeout? number = … - アップロード操作のタイムアウト(秒)。0 はタイムアウトなしを意味します。 既定値は 30 分です。

戻り値:

  • Promise<void>

例:

// 複数のテキストファイルをアップロード
const files = [
{
source: Buffer.from('Content of file 1'),
destination: '/tmp/file1.txt'
},
{
source: 'app/data/file2.txt',
destination: '/tmp/file2.txt'
},
{
source: Buffer.from('{"key": "value"}'),
destination: '/tmp/config.json'
}
];
await fs.uploadFiles(files);

FilePermissionsParams

サンドボックス内のファイル権限を設定するためのパラメータ。

プロパティ:

  • group? string - ファイルのグループ所有者
  • mode? string - 8進数形式のファイルモード/権限(例: “644”)
  • owner? string - ファイルのユーザー所有者

例:

const permissions: FilePermissionsParams = {
mode: '644',
owner: 'daytona',
group: 'users'
};

FileUpload

サンドボックスにアップロードするファイルを表します。

プロパティ:

  • destination string - サンドボックス内の絶対パス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • source string | Buffer<ArrayBufferLike> - アップロード対象のファイル。Buffer の場合、ファイル内容として解釈され、メモリに読み込まれます。 メモリに収まることを確認してください。収まらない場合はローカルファイルパスを使用すると、その内容がサンドボックスへストリーミングされます。