diff --git a/apps/docs/gt.config.json b/apps/docs/gt.config.json index a3a376711..8e7d9b380 100644 --- a/apps/docs/gt.config.json +++ b/apps/docs/gt.config.json @@ -34,5 +34,5 @@ "experimentalLocalizeStaticUrls": true, "docsUrlPattern": "/docs/[locale]/" }, - "_versionId": "e9edf82e30c7226839d457b619cc781a7f9ff298eb8485697a17047ec81d8e9b" + "_versionId": "3c6469d4d7d6305a67125117e78d21b37ec3aed70d76495a582a69dbed985f78" } \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/api-keys.mdx b/apps/docs/src/content/docs/ja/api-keys.mdx index dd7e8a4ef..2cb5be2d7 100644 --- a/apps/docs/src/content/docs/ja/api-keys.mdx +++ b/apps/docs/src/content/docs/ja/api-keys.mdx @@ -1,27 +1,34 @@ --- -title: API Keys +title: API キー --- -DaytonaのAPIキーは、[Daytona API](/docs/ja/tools/api)へのリクエストを認証するために使用します。 +Daytona の API キーは、[Daytona API](/docs/ja/tools/api) へのリクエストを認証するために使用します。API キーは [API Keys](https://app.daytona.io/dashboard/keys) ページで表示、作成、削除できます。 -[Configuration](/docs/ja/configuration)ページでは、`DAYTONA_API_KEY` 環境変数の設定方法を説明しています。 +## API キーの作成 \{#creating-an-api-key\} -APIキーを管理するには、Dashboardの[Keys](https://app.daytona.io/dashboard/keys)セクションに移動します。`Create Key` をクリックして新しいキーを作成し、クリップボードにコピーします。 +Daytona プラットフォームから API キーを取得できます。 -## 権限 +1. [Daytona Dashboard](https://app.daytona.io/dashboard/) の [API Keys](https://app.daytona.io/dashboard/keys) に移動します。 +2. **`Create Key`** ボタンをクリックします。 +3. 表示されたモーダルで新しいキーを作成し、クリップボードにコピーします。 -新しいAPIキーを追加する際、キーに付与する権限のセットを選択するよう求められます: +アプリケーションで API キーを使用するには、[Configuration](/docs/ja/configuration) ページの説明に従って `DAYTONA_API_KEY` 環境変数を設定します。 -| 権限 | 説明 | -|------------|-------------| -| **`Sandboxes`** | サンドボックスの作成および管理を許可します | -| **`Snapshots`** | スナップショットの作成および管理を許可します | -| **`Registries`** | レジストリの作成および管理を許可します | -| **`Volumes`** | ボリュームの作成および管理を許可します | +## 権限とスコープ \{#permissions-scopes\} -各権限には細かなスコープがあります: +新しい API キーを作成する際、そのキーに付与する特定の権限(スコープ)を選択できます。スコープはキーで実行可能な操作を制御します。各キーには必要最小限のスコープのみを付与してください。 -- `write:*` は作成および更新 -- `delete:*` はリソースの削除 +以下は、利用可能なスコープとその説明の一覧です: -例: `write:sandboxes`, `delete:sandboxes` \ No newline at end of file +| Resource | Scope | Description | +|-------------|----------------------|----------------------------| +| Sandboxes | `write:sandboxes` | サンドボックスの作成/変更 | +| | `delete:sandboxes` | サンドボックスの削除 | +| Snapshots | `write:snapshots` | スナップショットの作成/変更 | +| | `delete:snapshots` | スナップショットの削除 | +| Registries | `write:registries` | レジストリの作成/変更 | +| | `delete:registries` | レジストリの削除 | +| Volumes | `read:volumes` | ボリュームの表示 | +| | `write:volumes` | ボリュームの作成/変更 | +| | `delete:volumes` | ボリュームの削除 | +| Audit | `read:audit_logs` | 監査ログの表示 | \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/audit-logs.mdx b/apps/docs/src/content/docs/ja/audit-logs.mdx index 7d9fa3873..16c54555e 100644 --- a/apps/docs/src/content/docs/ja/audit-logs.mdx +++ b/apps/docs/src/content/docs/ja/audit-logs.mdx @@ -1,113 +1,117 @@ --- title: 監査ログ -description: Daytona の組織全体にわたるすべてのユーザー操作を表示および監視します。 +description: Daytona の組織全体でのすべてのユーザー操作を表示・監視します。 --- -Daytona の監査ログは、組織全体のユーザーおよびシステムのアクティビティを詳細に記録します。サンドボックスのライフサイクルイベント、ユーザーアクセス、システム変更などの追跡にご利用ください。 +Daytona の監査ログは、組織全体におけるユーザーおよびシステムの活動を詳細に記録します。サンドボックスのライフサイクルイベント、ユーザーアクセス、システム変更などの追跡に利用できます。 [Dashboard](https://app.daytona.io/dashboard/audit-logs) から監査ログにアクセスできます。 -## 前提条件 +## 前提条件 \{#prerequisites\} -監査ログを利用できるのは次のユーザーです: -- **管理者** - すべての監査ログへのフルアクセス -- **メンバー** - 監査ログの権限が付与されている場合のみアクセス可能 +監査ログを利用できるのは次のユーザーです: + +* **Admins** - すべての監査ログへのフルアクセス権があります +* **Members** - 監査ログの権限が付与されている場合にのみアクセスできます 監査ログにアクセスできない場合は、組織の管理者にお問い合わせください。 -## リアルタイム更新 +## リアルタイム更新 \{#real-time-updates\} -監査ログページの右上にある**リアルタイム更新**のトグルを有効にすると、新しいイベントの発生に合わせてログが自動的に更新されます。 +監査ログページ右上の**リアルタイム更新**トグルをオンにすると、新規イベントの発生にあわせてログが自動更新されます。 -## ログ構造 +## ログ構造 \{#log-structure\} -各ログエントリには次の列が含まれます: +各ログエントリには次の列が含まれます: -| Field | 説明 | -|---------- |--------------------------------------------| -| **Time** | アクションが発生した日時のタイムスタンプ(UTC) | -| **User** | アクションを実行したユーザーのメールアドレス | -| **Action**| 実行された操作 | -| **Target**| 影響を受けたリソースの種類 | -| **Outcome**| 結果のステータスコードとメッセージ | +| フィールド | 説明 | +|----------- |--------------------------------------------| +| **Time** | アクションが発生した時刻(UTC)のタイムスタンプ | +| **User** | アクションを実行したユーザーのメールアドレス | +| **Action** | 実行された操作 | +| **Target** | 影響を受けたリソースの種類 | +| **Outcome**| 結果のステータスコードとメッセージ | -### 例 +### 例 \{#example\} ```text -Time: 5時間前 (7/31/2025, 8:15:27 AM) -User: janedoe@acme.com -Action: create -Target: sandbox (ID: 10f249ad-...) -Outcome: Success (200) +時刻: 5時間前 (7/31/2025, 8:15:27 AM) +ユーザー: janedoe@acme.com +アクション: 作成 +対象: サンドボックス (ID: 10f249ad-...) +結果: 成功 (200) ``` -## ユースケース +## ユースケース \{#use-cases\} -- **セキュリティ監査**: 不正アクセスやサンドボックスの不正利用を監視 -- **デバッグ**: サンドボックスのライフサイクルに関する問題を把握(例:起動失敗) -- **コンプライアンス向けエクスポート**: 内部監査や外部監査に向けてログをエクスポート(近日対応) +* **セキュリティ監査**: 不正アクセスやサンドボックスの不正利用を監視 +* **デバッグ**: サンドボックスのライフサイクルに関する問題を把握(例:起動失敗) +* **コンプライアンス向けエクスポート**: 内部監査・外部監査向けにログをエクスポート(近日対応予定) -## アクション +## アクション \{#actions\} -以下は、Daytona によって記録されるアクションの全一覧です: +以下は、Daytona によって記録されたアクションの全リストです。 ```text -create, read, update, delete, login, -set_default, update_role, update_assigned_roles, update_quota, -suspend, unsuspend, accept, decline, -link_account, unlink_account, leave_organization, -regenerate_key_pair, update_scheduling, -start, stop, replace_labels, create_backup, -update_public_status, set_auto_stop_interval, -set_auto_archive_interval, set_auto_delete_interval, archive, -get_port_preview_url, toggle_state, set_general_status, activate, -update_network_settings, -toolbox_delete_file, toolbox_download_file, toolbox_create_folder, -toolbox_move_file, toolbox_set_file_permissions, toolbox_replace_in_files, -toolbox_upload_file, toolbox_bulk_upload_files, -toolbox_git_add_files, toolbox_git_create_branch, toolbox_git_delete_branch, -toolbox_git_clone_repository, toolbox_git_commit_changes, -toolbox_git_pull_changes, toolbox_git_push_changes, -toolbox_git_checkout_branch, toolbox_execute_command, -toolbox_create_session, toolbox_session_execute_command, -toolbox_delete_session, toolbox_computer_use_start, -toolbox_computer_use_stop, toolbox_computer_use_restart_process +作成、読み取り、更新、削除、ログイン、 +デフォルト設定、アクセス更新、クォータ更新、 +一時停止、一時停止解除、承認、拒否、 +アカウント連携、アカウント連携解除、組織から脱退、 +キーペア再生成、スケジューリング更新、 +開始、停止、ラベル置換、バックアップ作成、 +公開ステータス更新、自動停止間隔設定、 +自動アーカイブ間隔設定、自動削除間隔設定、アーカイブ、 +ポートプレビューURL取得、一般ステータス設定、有効化、無効化、 +ネットワーク設定更新、Webhookアプリポータルアクセス取得、 +Webhookメッセージ送信、Webhook初期化、 +サンドボックスデフォルト制限ネットワークエグレス更新、 +SSHアクセス作成、SSHアクセス取り消し、 +ツールボックスファイル削除、ツールボックスファイルダウンロード、ツールボックスフォルダ作成、 +ツールボックスファイル移動、ツールボックスファイル権限設定、ツールボックスファイル内置換、 +ツールボックスファイルアップロード、ツールボックス一括ファイルアップロード、 +ツールボックスGitファイル追加、ツールボックスGitブランチ作成、ツールボックスGitブランチ削除、 +ツールボックスGitリポジトリクローン、ツールボックスGit変更コミット、 +ツールボックスGit変更プル、ツールボックスGit変更プッシュ、 +ツールボックスGitブランチチェックアウト、ツールボックスコマンド実行、 +ツールボックスセッション作成、ツールボックスセッションコマンド実行、 +ツールボックスセッション削除、ツールボックスコンピュータ使用開始、 +ツールボックスコンピュータ使用停止、ツールボックスコンピュータ使用プロセス再起動 ``` -## ターゲット +## 対象 \{#targets\} -各アクションは特定のリソースタイプを対象とします。対象となり得るものは次のとおりです: +各アクションは特定のリソースタイプを対象とします。想定される対象には次のものが含まれます: ```text -api_key, organization, organization_invitation, +api_key, 組織, organization_invitation, organization_role, organization_user, docker_registry, -runner, sandbox, snapshot, user, volume +ランナー, サンドボックス, スナップショット, user, ボリューム ``` -## 結果 +## 結果 \{#outcomes\} -Outcome フィールドはアクションの結果を示します。ステータスは標準的な HTTP セマンティクスに従います: +outcome フィールドはアクションの結果を示します。ステータスは標準的な HTTP セマンティクスに従います。 | 結果 | 説明 | |---------|-------------| -| **情報** | 情報(1xx コード) | -| **成功** | アクション成功(2xx コード) | -| **リダイレクト** | リダイレクト(3xx コード) | -| **エラー** | クライアント/サーバー エラー(4xx/5xx) | +| **Info** | 情報 (1xx コード) | +| **Success** | 成功 (2xx コード) | +| **Redirect** | リダイレクト (3xx コード) | +| **Error** | クライアント/サーバーエラー (4xx/5xx) | エラーの例: -- `400` – サンドボックスが起動していません -- `403` – 認可されていません -- `500` – 内部エラー +* `400` – サンドボックスが起動していません +* `403` – 認可されていません +* `500` – 内部エラー {/* ## Filtering & Pagination -You can filter and search logs by: + You can filter and search logs by: -- Action type -- Target resource -- Outcome status -- User email + - Action type + - Target resource + - Outcome status + - User email -Use the page size selector to change how many results are shown per page. */} \ No newline at end of file + Use the page size selector to change how many results are shown per page. */} \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/billing.mdx b/apps/docs/src/content/docs/ja/billing.mdx index d3c3d8486..9428f407e 100644 --- a/apps/docs/src/content/docs/ja/billing.mdx +++ b/apps/docs/src/content/docs/ja/billing.mdx @@ -2,23 +2,21 @@ title: 請求 --- -Dashboard の「請求」サブページでは、組織の請求情報を表示します。 +Daytona ダッシュボードの [Billing](https://app.daytona.io/dashboard/billing) ページでは、組織の請求、ウォレット、利用状況の概要を確認できます。 -## ウォレット +## ウォレットの概要 \{#wallet-overview\} -ウォレットでは、組織のウォレット残高と今月のクレジット消費額を表示します。 +「ウォレット」セクションでは、組織のウォレット残高と今月のクレジット消費額が表示されます。 -## 自動チャージ +## 自動チャージ \{#automatic-top-up\} -組織はウォレットに対する自動チャージのルールを設定できます。 +組織はウォレットに対して自動チャージのルールを設定できます。 -- **しきい値** — ウォレット残高がこの金額まで下がると、チャージが実行されます。 -- **ターゲット** — ウォレット残高がこの金額まで補充されます。 +* **しきい値** — ウォレット残高がこの金額を下回ると、チャージが開始されます。 +* **目標額** — ウォレット残高がこの金額まで補充されます。 -自動チャージを無効化するには、**しきい値** と **ターゲット** の両方を `0` に設定してください。 +自動チャージを無効にするには、**しきい値** と **目標額** の両方を `0` に設定してください。 -## コスト内訳 +## コスト内訳 \{#cost-breakdown\} -「コスト内訳」チャートでは、リソースごとのコストを表示します。 - -CPU、RAM、ストレージの使用量を確認でき、エリアチャートと棒グラフを切り替えられます。 \ No newline at end of file +Cost Breakdown チャートでは、リソースごとのコスト内訳を表示します。ユーザーは CPU、RAM、ディスクの消費量を確認でき、エリアチャートと棒グラフを切り替えて表示できます。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/computer-use-linux.mdx b/apps/docs/src/content/docs/ja/computer-use-linux.mdx new file mode 100644 index 000000000..9b79694cb --- /dev/null +++ b/apps/docs/src/content/docs/ja/computer-use-linux.mdx @@ -0,0 +1,106 @@ +--- +title: コンピューター使用 - Linux +description: Daytona を用いて、Linux 環境でデスクトップの自動化と GUI 操作をプログラムから実行します。 +--- + +import { TabItem, Tabs } from '@astrojs/starlight/components' + +**コンピューター使用**は、Daytona のサンドボックス内にあるデスクトップ環境をプログラムから制御できる機能です。GUI 操作の自動化やデスクトップアプリのテストに必要な、マウス/キーボード操作、スクリーンショット取得、ディスプレイ制御を提供します。 + +多くの用途では、このインスタンスタイプの利用を推奨します。 + +## 一般的なユースケース \{#common-use-cases\} + +* **GUIアプリケーションのテスト** - デスクトップアプリの操作を自動化し、ボタンのクリックやフォーム入力、UI動作の検証を行う +* **ビジュアルテストとスクリーンショット** - アプリのスクリーンショットを取得し、UIの状態を比較してビジュアルリグレッションテストを実施する +* **デスクトップ自動化** - 繰り返し作業やGUI経由のファイル管理、複雑なワークフローを自動化する +* **Human-in-the-Loop** - [Daytona Dashboard](https://app.daytona.io/dashboard/sandboxes) からVNCインターフェースに直接アクセスし、自動化スクリプトと併用してデスクトップ環境を手動で操作・対話する + +## SDK リファレンス \{#sdk-references\} + +コンピューター使用の自動化を始めるには、利用したい SDK を選んでください: + +### TypeScript SDK \{#typescript-sdk\} + +TypeScript のコンピューター使用操作に関する完全な API リファレンス。 + +[TypeScript SDK を表示 →](/docs/ja/typescript-sdk/computer-use) + +### Python SDK \{#python-sdk\} + +Python向けのコンピューター使用操作に関する完全なAPIリファレンス(同期・非同期)。 + +[Python SDK を表示 →](/docs/ja/python-sdk/sync/computer-use) + +## クイック例 \{#quick-example\} + + + + ```python + from daytona import Daytona + + # 環境変数で初期化(推奨) + daytona = Daytona() + # 明示的に設定する場合: + # daytona = Daytona( + # api_key=os.getenv('DAYTONA_API_KEY'), + # api_url=os.getenv('DAYTONA_API_URL', 'https://app.daytona.io/api') + # ) + + # デフォルトのスナップショットからサンドボックスを作成(デスクトップ環境を含む) + sandbox = daytona.create() + + # コンピューター使用プロセスを開始 + result = sandbox.computer_use.start() + print("コンピューター使用を開始:", result.message) + + # スクリーンショットを取得 + screenshot = sandbox.computer_use.screenshot.take_full_screen() + + # クリックと入力 + sandbox.computer_use.mouse.click(100, 200) + sandbox.computer_use.keyboard.type('Hello, Linux!') + sandbox.computer_use.keyboard.hotkey('ctrl+s') + ``` + + + + ```typescript + import { Daytona } from '@daytonaio/sdk'; + + // 環境変数で初期化(推奨) + const daytona = new Daytona(); + // 明示的に設定する場合: + // const daytona = new Daytona({ + // apiKey: process.env.DAYTONA_API_KEY, + // apiUrl: process.env.DAYTONA_API_URL || 'https://app.daytona.io/api' + // }); + + // デフォルトのスナップショットからサンドボックスを作成(デスクトップ環境を含む) + const sandbox = await daytona.create(); + + // コンピューター使用プロセスを開始 + await sandbox.computerUse.start(); + + // スクリーンショットを取得 + const screenshot = await sandbox.computerUse.screenshot.takeFullScreen(); + + // クリックと入力 + await sandbox.computerUse.mouse.click(100, 200); + await sandbox.computerUse.keyboard.type('Hello, Linux!'); + await sandbox.computerUse.keyboard.hotkey('ctrl+s'); + ``` + + + +**環境変数(.env ファイル):** + +```bash +DAYTONA_API_KEY=your-api-key-here +DAYTONA_API_URL=https://app.daytona.io/api +``` + +## 関連ドキュメント \{#related-documentation\} + +* [コンピューター使用 - Windows](/docs/ja/computer-use-windows) +* [コンピューター使用 - macOS](/docs/ja/computer-use-macos) \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/computer-use-macos.mdx b/apps/docs/src/content/docs/ja/computer-use-macos.mdx new file mode 100644 index 000000000..e510cab13 --- /dev/null +++ b/apps/docs/src/content/docs/ja/computer-use-macos.mdx @@ -0,0 +1,29 @@ +--- +title: コンピューター使用 - macOS +description: Daytona を使用した macOS 環境向けのプログラムによるデスクトップ自動化と GUI 操作。 +--- + +**コンピューター使用** は、Daytona のサンドボックス内でデスクトップ環境をプログラムから制御できる機能です。GUI の操作自動化やデスクトップアプリのテストのために、マウス、キーボード、スクリーンショット、ディスプレイ操作を提供します。 + +macOS 専用アプリケーションとやり取りする必要がある場合は、このインスタンスタイプの利用を推奨します。 + +:::caution[アルファ版アクセスが必要] +macOS のコンピューター使用は現在 **プライベートアルファ** です。アクセスを希望される方は、[macOS アクセス申請フォーム](https://docs.google.com/forms/d/e/1FAIpQLSc9xlGZ49OjWNkyzDPC9Ip3InMRR0ZXY3tcoD-PFQj3ck6gzQ/viewform?usp=sharing\&ouid=103304973264148733944)にご記入ください。 + +送信後、当チームが申請内容を審査し、セットアップ手順および提供状況の詳細をご連絡します。 +::: + +## 一般的なユースケース \{#common-use-cases\} + +* **GUIアプリケーションのテスト** - ネイティブなmacOSアプリの操作を自動化し、ボタンのクリック、フォーム入力、UI動作の検証を行う +* **ビジュアルテストとスクリーンショット** - アプリケーションのスクリーンショットを取得し、UIの状態を比較してビジュアル回帰テストを実施する +* **デスクトップ自動化** - 繰り返し発生するmacOSデスクトップ作業やGUIでのファイル管理、複雑なワークフローを自動化する + +## はじめに \{#getting-started\} + +macOS のコンピューター使用アルファ版へのアクセスが付与されると、Daytona のサンドボックス内で macOS のデスクトップ環境をプログラムから制御できるようになります。この機能には、macOS 環境向けに最適化されたマウス操作、キーボードの自動化、スクリーンショットの取得、ディスプレイ管理が含まれます。 + +## 関連ドキュメント \{#related-documentation\} + +* [コンピューター使用 - Linux](/docs/ja/computer-use-linux) +* [コンピューター使用 - Windows](/docs/ja/computer-use-windows) \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/computer-use-windows.mdx b/apps/docs/src/content/docs/ja/computer-use-windows.mdx new file mode 100644 index 000000000..654510cb4 --- /dev/null +++ b/apps/docs/src/content/docs/ja/computer-use-windows.mdx @@ -0,0 +1,29 @@ +--- +title: コンピューター使用 - Windows +description: Daytona を用いた Windows 環境向けのプログラム的なデスクトップ自動化と GUI 操作。 +--- + +**コンピューター使用** は、Daytona のサンドボックス内でデスクトップ環境をプログラムから制御する機能です。GUI 操作の自動化やデスクトップアプリのテストに向けて、マウス、キーボード、スクリーンショット、ディスプレイの操作を提供します。 + +Windows 専用アプリとの対話が必要な場合は、このインスタンスタイプの使用を推奨します。 + +:::caution[アルファアクセスが必要] +Windows のコンピューター使用は現在 **プライベートアルファ** です。アクセスをご希望の方は、[アクセス申請フォーム](https://docs.google.com/forms/d/e/1FAIpQLSfoK-77-VpfsMubw8F4f1opCxIL1AyJUgnM0ONYup5hZ0RTvQ/viewform?usp=dialog) にご記入ください。 + +送信後、当社チームが申請内容を確認し、セットアップ手順および利用可能時期の詳細をご連絡します。 +::: + +## 一般的なユースケース \{#common-use-cases\} + +* **GUIアプリケーションのテスト** - Windowsデスクトップアプリの操作を自動化し、ボタンのクリック、フォーム入力、UIの挙動を検証する +* **ビジュアルテストとスクリーンショット** - アプリのスクリーンショットを取得し、UIの状態を比較してビジュアルリグレッションテストを行う +* **デスクトップ自動化** - Windowsデスクトップでの反復作業やGUI経由のファイル管理、複雑なワークフローを自動化する + +## はじめに \{#getting-started\} + +Windows のコンピューター使用アルファ版へのアクセスが付与されると、Daytona のサンドボックス内にある Windows デスクトップ環境をプログラムで制御できるようになります。機能には、Windows 環境向けに最適化されたマウス操作、キーボードの自動化、スクリーンショットの取得、ディスプレイ管理が含まれます。 + +## 関連ドキュメント \{#related-documentation\} + +* [コンピューター使用 - Linux](/docs/ja/computer-use-linux) +* [コンピューター使用 - macOS](/docs/ja/computer-use-macos) \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/configuration.mdx b/apps/docs/src/content/docs/ja/configuration.mdx index ecdbe7aa7..c71e515b4 100644 --- a/apps/docs/src/content/docs/ja/configuration.mdx +++ b/apps/docs/src/content/docs/ja/configuration.mdx @@ -4,71 +4,85 @@ title: 構成 import { TabItem, Tabs } from '@astrojs/starlight/components' -## 環境変数を設定する +## 設定方法 \{#configuration-methods\} -Daytona で認証するには API キーが必要です。API キーは Daytona プラットフォームから取得できます。 +Daytona SDK では、優先度の高い順に、環境を設定する次の方法をサポートしています: -1. [Daytona Dashboard](https://app.daytona.io/dashboard/) にアクセスします。 -2. API Keys を開きます。 -3. **`Create Key`** ボタンをクリックします。 -4. **`.env`** ファイルで **`DAYTONA_API_KEY`** 環境変数を設定し、API キーを追加します。 -5. **`.env`** ファイルで **`DAYTONA_API_URL`** 環境変数を設定し、Daytona の API URL を指定します。 +1. [**コード内での設定**](#configuration-in-code) +2. [**環境変数**](#environment-variables) +3. [**.env ファイル**](#env-file) +4. [**デフォルト値**](#default-values) -## 構成オプション +## コードでの設定 \{#configuration-in-code\} -Daytona SDK では、Python と TypeScript で `DaytonaConfig` クラスを使用して設定を行えます。`DaytonaConfig` クラスは次のパラメータを受け取ります。 +Daytona SDK では、Python と TypeScript の `DaytonaConfig` クラスを使って設定を行うことができます。`DaytonaConfig` クラスは次のパラメータを受け取ります: -- `api_key`: Daytona の APIキー -- `api_url`: Daytona の API の URL -- `target`: サンドボックスを作成する Daytona のターゲット(リージョン) +* `api_key`: Daytona の [API キー](/docs/api-keys) +* `api_url`: Daytona API の URL +* `target`: サンドボックスを作成する Daytona のターゲット - -```python -from daytona import DaytonaConfig - -config = DaytonaConfig( - api_key="your-api-key", - api_url="your-api-url", - target="us" -) - -``` - - -```typescript -import { DaytonaConfig } from '@daytonaio/sdk'; - -const config: DaytonaConfig = { - apiKey: "your-api-key", - apiUrl: "your-api-url", - target: "us" -}; -``` - - + + ```python + from daytona import DaytonaConfig + + config = DaytonaConfig( + api_key="your-api-key", + api_url="your-api-url", + target="us" + ) + + ``` + + + + ```typescript + import { DaytonaConfig } from '@daytonaio/sdk'; + + const config: DaytonaConfig = { + apiKey: "your-api-key", + apiUrl: "your-api-url", + target: "us" + }; + ``` + -## 環境変数 +## 環境変数 \{#environment-variables\} -Daytona SDK は設定に環境変数を利用できます。SDK は次の環境変数を自動的に参照します: +Daytona SDK は設定に環境変数を利用できます。SDK は以下の環境変数を自動的に参照します: -| Variable | Description | Optional | -| --------------------- | ------------------------------------------ | -------- | -| **`DAYTONA_API_KEY`** | Daytona の APIキー。 | | -| **`DAYTONA_API_URL`** | Daytona API の URL。 | Yes | -| **`DAYTONA_TARGET`** | サンドボックスを作成する Daytona のターゲット(ターゲット(リージョン))。 | Yes | +| 変数 | 説明 | 任意 | +| --------------------- | ----------------------------------------- | -------- | +| **`DAYTONA_API_KEY`** | Daytona の API キー。 | いいえ | +| **`DAYTONA_API_URL`** | Daytona API の URL。 | はい | +| **`DAYTONA_TARGET`** | サンドボックスを作成する対象の Daytona。 | はい | -### 環境変数の設定 +シェルで環境変数を設定します: -Daytona SDK は環境変数から設定を読み込みます。以下の方法で設定できます。 + + + ```bash + export DAYTONA_API_KEY=your-api-key + export DAYTONA_API_URL=https://your-api-url + export DAYTONA_TARGET=us + ``` + + + + ```bash + $env:DAYTONA_API_KEY="your-api-key" + $env:DAYTONA_API_URL="https://your-api-url" + $env:DAYTONA_TARGET="us" + ``` + + -- [**`.env`** ファイルを使用](#using-a-env-file) -- [シェル環境を使用](#using-shell-environment) +これらの環境変数は `.env` ファイルでも設定できます。 -#### **`.env`** ファイルを使用 +## .env ファイル \{#env-file\} -プロジェクトのルートディレクトリに `.env` ファイルを作成します: +プロジェクトのルートディレクトリに `.env` ファイルを作成します。 ```bash DAYTONA_API_KEY=your-api-key @@ -76,34 +90,13 @@ DAYTONA_API_URL=https://your-api-url DAYTONA_TARGET=us ``` -- `DAYTONA_API_KEY`: Daytona の APIキー。 -- `DAYTONA_API_URL`: Daytona API の URL。 -- `DAYTONA_TARGET`: サンドボックスを作成する Daytona のターゲット(ターゲット(リージョン))。 - -#### シェル環境を使用 - -シェルで環境変数を設定します: - - - -```bash -export DAYTONA_API_KEY=your-api-key -export DAYTONA_API_URL=https://your-api-url -``` - - -```bash -$env:DAYTONA_API_KEY="your-api-key" -$env:DAYTONA_API_URL="https://your-api-url" -``` - - +SDK は初期化時にこれらの値を自動的に読み込みます。 -## 設定の優先順位 +## デフォルト値 \{#default-values\} -SDK は設定に対して次の優先順位(高い順)を適用します: +設定がない場合、Daytona SDK は組み込みの既定値を使用します。 -1. コード内で明示的に指定された設定 -2. 環境変数 -3. 設定ファイル -4. デフォルト値 +| オプション | 既定値 | +|------------|----------------------------------| +| API URL | https://app.daytona.io/api | +| ターゲット | 組織のデフォルトリージョン | \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/custom-domain-authentication.mdx b/apps/docs/src/content/docs/ja/custom-domain-authentication.mdx index 46a4ba26a..f190e5b6c 100644 --- a/apps/docs/src/content/docs/ja/custom-domain-authentication.mdx +++ b/apps/docs/src/content/docs/ja/custom-domain-authentication.mdx @@ -1,68 +1,78 @@ --- -title: カスタムプレビュープロキシ -description: 独自のドメインとロジックでプレビュープロキシをカスタマイズします。 +title: カスタムドメイン/認証 +description: プレビュー用プロキシを独自のドメインとロジックでカスタマイズします。 --- -Daytona では、サンドボックスのプレビューURLを処理するために、独自のカスタムプレビュープロキシをデプロイできます。これにより、カスタムドメイン、認証、エラーハンドリング、スタイリングなど、プレビューエクスペリエンスを完全に制御できます。 +Daytona では、サンドボックスのプレビュー URL を処理するために、独自のカスタムプレビュー用プロキシをデプロイできます。これにより、カスタムドメイン、認証、エラーハンドリング、スタイリングなど、プレビュー体験を完全にコントロールできます。 -**カスタムプレビュープロキシで可能なこと:** +**カスタムプレビュー用プロキシでできること:** -- **カスタムドメイン:** 独自ドメイン配下でプロキシをホスト(例: `preview.yourcompany.com`) -- **ユーザー認証:** プライベートプレビュー向けの独自認証ロジックを実装 -- **スマートなサンドボックス管理:** 転送前に停止中のサンドボックスを自動的に起動 -- **カスタムエラーページ:** ブランドに合わせてエラーページの見た目をカスタマイズ -- **プレビュー警告の制御:** Daytona のプレビュー警告を無効化 -- **CORS 管理:** Daytona の既定の CORS 設定を上書き +* **カスタムドメイン:** 独自ドメインでプロキシをホスト(例:`preview.yourcompany.com`) +* **ユーザー認証:** プライベートプレビュー向けに独自の認証ロジックを実装 +* **スマートなサンドボックス管理:** ユーザー転送前に停止中のサンドボックスを自動起動 +* **カスタムエラーページ:** ブランドに合わせてエラーページのデザインを統一 +* **プレビュー警告の制御:** Daytona のプレビュー警告を無効化 +* **CORS 管理:** Daytona の既定の CORS 設定をオーバーライド ---- +*** -## 仕組み +## 仕組み \{#how-it-works\} -ユーザーがプレビューURLにアクセスすると、カスタムプロキシがリクエストを受け取り、次のことが可能です: +ユーザーがプレビューURLにアクセスすると、カスタムプロキシがリクエストを受け取り、次の処理を行えます: -1. カスタムロジックでユーザーを認証する -2. サンドボックスの状態を確認し、必要に応じて起動する -3. 実際のサンドボックスへリクエストを転送する -4. カスタムのスタイルやエラーページでレスポンスを処理する -5. Daytonaの動作を制御するためのカスタムヘッダーを送信する +1. 独自のロジックで**ユーザーを認証**する +2. **サンドボックスの状態を確認**し、必要に応じて起動する +3. **リクエストを実際のサンドボックスへ転送**する +4. **レスポンスを処理**し、独自のスタイルやエラーページを適用する +5. Daytona の動作を制御するために**カスタムヘッダーを送信**する ---- +*** -## Daytona ヘッダー +## Daytona ヘッダー \{#daytona-headers\} -プロキシは、Daytona の動作を制御するための特殊なヘッダーを送信できます: +プロキシは、Daytona の動作を制御するための特別なヘッダーを送信できます。 -#### プレビュー警告の無効化 +#### プレビュー警告を無効化する \{#disable-preview-warning\} -Daytona のプレビュー警告ページを無効化するには、次を送信します: +Daytona のプレビュー警告ページを無効にするには、次を送信します: ``` X-Daytona-Skip-Preview-Warning: true ``` -#### CORS の無効化 +#### CORS を無効化する \{#disable-cors\} -Daytona の既定の CORS 設定を上書きするには、次を送信します: +Daytona の既定の CORS 設定を上書きするには、次を送信してください: ``` X-Daytona-Disable-CORS: true ``` -#### 認証 +### 最終アクティビティ更新の無効化 \{#disable-last-activity-update\} -非公開のプレビューリンクでは、次を送信する必要があります: +プレビュー時にサンドボックスの最終アクティビティ更新を行わないようにするには、`X-Daytona-Skip-Last-Activity-Update` ヘッダーを `true` に設定します。 +これにより、[自動停止が有効](/docs/sandbox-management#auto-stop-interval)なサンドボックスについて、Daytona が維持目的で起動状態を保ち続けることを防げます。 + +```bash +curl -H "X-Daytona-Skip-Last-Activity-Update: true" \ +https://3000-sandbox-123456.proxy.daytona.work +``` + +### 認証 \{#authentication\} + +プライベートなプレビューリンクの場合、ユーザーは次を送信する必要があります: ``` X-Daytona-Preview-Token: {sandboxToken} ``` -`sandboxToken` は [Daytona SDK または API](/docs/ja/preview-and-authentication) から取得できます。 +`sandboxToken` は [Daytona SDK もしくは API](/docs/ja/preview-and-authentication) で取得できます。 ---- +*** -## 例 +## 例 \{#examples\} -カスタムプレビュー用プロキシのサンプルは [GitHub](https://github.com/daytonaio/daytona-proxy-samples) にあります。 +カスタムプレビュー用プロキシのサンプルは、当社の [GitHub](https://github.com/daytonaio/daytona-proxy-samples)でご覧いただけます: -- [TypeScript サンプル](https://github.com/daytonaio/daytona-proxy-samples/tree/main/typescript) -- [Go サンプル](https://github.com/daytonaio/daytona-proxy-samples/tree/main/go) +* [TypeScript の例](https://github.com/daytonaio/daytona-proxy-samples/tree/main/typescript) +* [Go の例](https://github.com/daytonaio/daytona-proxy-samples/tree/main/go) \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/data-analysis-with-ai.mdx b/apps/docs/src/content/docs/ja/data-analysis-with-ai.mdx index 6c3d38f77..f1710a2cd 100644 --- a/apps/docs/src/content/docs/ja/data-analysis-with-ai.mdx +++ b/apps/docs/src/content/docs/ja/data-analysis-with-ai.mdx @@ -1,6 +1,6 @@ --- -title: AI でデータを分析する -description: Daytona を使って、AI 生成コードでデータ分析と可視化を実行します。 +title: AIでデータを分析する +description: Daytona を使用して、データ分析と可視化のためのAI生成コードを実行します。 --- import { TabItem, Tabs } from '@astrojs/starlight/components' @@ -8,24 +8,26 @@ import { Image } from 'astro:assets' import chartImage from '../../../assets/docs/images/chart-0.png' -Daytona のサンドボックス(Daytonaが管理する隔離された一時的な実行環境)を使えば、AI が生成したコードでデータを分析できます。一般的な AI によるデータ分析のワークフローは次のとおりです。 +Daytona のサンドボックスを使って、AI 生成コードを実行し、データを分析できます。一般的な AI データ分析のワークフローは次のとおりです。 -1. ユーザーは CSV などの形式でデータセットを用意します。 -2. ユーザーのデータに基づいてコード(通常は Python)を生成するよう、LLM に指示します。 +1. ユーザーが CSV などの形式でデータセットを用意します。 +2. ユーザーのデータに基づいて、LLM にコード(通常は Python)の生成を指示します。 3. サンドボックスが AI 生成コードを実行し、結果を返します。 -4. 結果をユーザーに表示します。 +4. その結果をユーザーに表示します。 -## Daytona で AI データアナリストを構築する +*** -この例では、Daytona の安全なサンドボックス環境を用いて、CSV データから自動的に洞察と可視化を生成する AI 搭載のデータアナリストを構築する方法を示します。 +## Daytona で AI データアナリストを構築する \{#build-an-ai-data-analyst-with-daytona\} -**作成するもの:** 車両評価データセットを分析し、製造年と価格の関係を特定し、プロフェッショナルな可視化を生成するシステムです。すべて自然言語プロンプトで Claude に指示して実行します。 +この例では、Daytona のセキュアなサンドボックス環境を用いて、CSV データから自動的に洞察と可視化を生成する AI 搭載のデータアナリストの構築方法を説明します。 -### 1. プロジェクトのセットアップ +**今回構築するもの:** 車両評価データセットを分析し、製造年と価格の関係を把握し、プロフェッショナルな可視化を生成するシステムです—すべてを Claude への自然言語プロンプトだけで実行します。 -#### 1.1 依存関係のインストール +### 1. プロジェクトのセットアップ \{#1-project-setup\} -Daytona SDK と Anthropic SDK をプロジェクトにインストールします: +#### 1.1 依存関係のインストール \{#11-install-dependencies\} + +Daytona SDK と Anthropic SDK をプロジェクトにインストールします。 @@ -37,12 +39,12 @@ Daytona SDK と Anthropic SDK をプロジェクトにインストールしま -#### 1.2 環境設定 +#### 1.2 環境の設定 \{#12-configure-environment\} -APIキーを取得し、環境を設定します: +API キーを取得し、環境を構成します: -1. **Daytona API key:** [Daytona Dashboard](https://app.daytona.io/dashboard/keys) から取得 -2. **Anthropic API key:** [Anthropic Console](https://console.anthropic.com/) から取得 +1. **Daytona の API キー:** [Daytona Dashboard](https://app.daytona.io/dashboard/keys) から取得 +2. **Anthropic の API キー:** [Anthropic Console](https://console.anthropic.com/) から取得 プロジェクトに `.env` ファイルを作成します: @@ -51,19 +53,19 @@ DAYTONA_API_KEY=dtn_*** ANTHROPIC_API_KEY=sk-ant-*** ``` -### 2. データセットの準備 +### 2. データセット準備 \{#2-dataset-preparation\} -#### 2.1 データセットのダウンロード +#### 2.1 データセットのダウンロード \{#21-download-dataset\} -公開されている車両評価データセットを使用します。以下から直接ダウンロードできます: +車両評価に関する公開データセットを使用します。次のリンクから直接ダウンロードできます。 [https://download.daytona.io/dataset.csv](https://download.daytona.io/dataset.csv) -ファイルをダウンロードし、プロジェクトディレクトリに `dataset.csv` として保存します。 +ファイルをダウンロードし、プロジェクトディレクトリ内に `dataset.csv` として保存してください。 -#### 2.2 サンドボックスの初期化 +#### 2.2 サンドボックスの初期化 \{#22-initialize-sandbox\} -Daytona のサンドボックスを作成し、データセットをアップロードします: +Daytona のサンドボックスを作成し、データセットをアップロードします。 @@ -74,13 +76,11 @@ Daytona のサンドボックスを作成し、データセットをアップロ load_dotenv() - # Create sandbox - + # サンドボックスを作成 daytona = Daytona() sandbox = daytona.create() - # Upload the dataset to the sandbox - + # データセットをサンドボックスにアップロード sandbox.fs.upload_file("dataset.csv", "/home/daytona/dataset.csv") ``` @@ -91,23 +91,23 @@ Daytona のサンドボックスを作成し、データセットをアップロ import 'dotenv/config' import { Daytona } from '@daytonaio/sdk'; - // Create sandbox + // サンドボックスを作成 const daytona = new Daytona(); const sandbox = await daytona.create() - // Upload the dataset to the sandbox + // データセットをサンドボックスにアップロード await sandbox.fs.uploadFile('dataset.csv', '/home/daytona/dataset.csv') ``` -### 3. AI データアナリストの構築 +### 3. AIデータアナリストの構築 \{#3-building-the-ai-data-analyst\} -ここでは、Claude と Daytona を連携させてデータを分析し、可視化を生成する中核機能を作成します。 +ここでは、Claude と Daytona を連携させてデータを分析し、可視化を生成するための中核機能を実装します。 -#### 3.1 コード実行ハンドラー +#### 3.1 コード実行ハンドラー \{#31-code-execution-handler\} -まず、コード実行とチャート抽出を処理する関数を作成します: +まず、コードの実行とチャート抽出を行う関数を作成します: @@ -171,13 +171,13 @@ Daytona のサンドボックスを作成し、データセットをアップロ -#### 3.2 分析用プロンプトの作成 +#### 3.2 分析用プロンプトの作成 \{#32-creating-the-analysis-prompt\} -次に、データセットと求める分析内容をClaudeに伝えるプロンプトを作成します。このプロンプトには以下が含まれます。 +次に、データセットの内容と必要な分析を Claude に伝えるプロンプトを作成します。このプロンプトには次が含まれます: -- データセットのスキーマと列の説明 -- 具体的な分析リクエスト(製造年別の平均価格の推移) -- コード生成に関する指示 +* データセットのスキーマと列の説明 +* 具体的な分析リクエスト(製造年ごとの平均価格の推移) +* コード生成に関する指示 @@ -226,9 +226,9 @@ Daytona のサンドボックスを作成し、データセットをアップロ -#### 3.3 ツール呼び出しのセットアップ +#### 3.3 ツール呼び出しのセットアップ \{#33-tool-calling-setup\} -ここでは、ツール呼び出しを使用してClaudeをDaytonaのサンドボックスに接続します。これにより、Claudeは生成したPythonコードを自動的に実行できます。 +ここでは、ツール呼び出しを使ってClaudeをDaytonaのサンドボックスに接続します。これにより、Claudeが生成したPythonコードを自動で実行できるようになります。 @@ -284,9 +284,9 @@ Daytona のサンドボックスを作成し、データセットをアップロ -#### 3.4 レスポンス処理 +#### 3.4 応答の処理 \{#34-response-processing\} -最後に、Claude のレスポンスを解析し、生成されたコードを Daytona のサンドボックスで実行します: +最後に、Claude の応答をパースし、Daytona のサンドボックス内で生成コードを実行します: @@ -322,18 +322,18 @@ Daytona のサンドボックスを作成し、データセットをアップロ -以上です。作成した `run_ai_generated_code` 関数はチャートの保存を自動的に処理します。Claude が `plt.show()` で可視化を生成すると、Daytona がそれをチャートの成果物として取得し、PNG ファイルとして保存します。 +以上です。作成した `run_ai_generated_code` 関数は、チャートの保存を自動で処理します。Claude が `plt.show()` で可視化を生成すると、Daytona はそれをチャートのアーティファクトとして取得し、PNG ファイルとして保存します。 -主な利点: +**このアプローチの主な利点:** -- セキュアな実行: 分離された Daytona のサンドボックスでコードを実行 -- 成果物の自動取得: チャート、テーブル、出力を自動的に抽出 -- エラーハンドリング: 組み込みのエラー検出とロギング -- 言語非依存: ここでは Python を使用しましたが、Daytona は複数言語をサポート +* **安全な実行:** コードは分離された Daytona のサンドボックスで実行されます +* **アーティファクトの自動取得:** チャート、テーブル、出力を自動的に抽出 +* **エラーハンドリング:** 組み込みのエラー検出とログ記録 +* **言語非依存:** ここでは Python を使用しましたが、Daytona は複数の言語をサポートします -### 4. 分析の実行 +### 4. 分析を実行する \{#4-running-your-analysis\} -完全なコードを実行して結果を確認します。 +これで、結果を確認するためにコード全体を実行できます。 @@ -349,13 +349,13 @@ Daytona のサンドボックスを作成し、データセットをアップロ -プロジェクトディレクトリ内に、次のようなチャートが出力されるはずです: +プロジェクトディレクトリに、次のようなグラフが生成されるはずです: -製造年別の車両評価額チャート +製造年別の車両評価のグラフ -### 5. 完全な実装 +### 5. 完全な実装 \{#5-complete-implementation\} -以下に、すぐに実行できるサンプル一式を示します: +以下は、すぐに実行できる完成済みのサンプルです。 @@ -372,21 +372,21 @@ Daytona のサンドボックスを作成し、データセットをアップロ daytona = Daytona() sandbox = daytona.create() - # データセットをサンドボックスへアップロード + # データセットをサンドボックスにアップロード sandbox.fs.upload_file("dataset.csv", "/home/daytona/dataset.csv") prompt = f""" - /home/daytona/dataset.csv のサンドボックスに、車両の評価額が保存された CSV ファイルがあります。 + サンドボックスの /home/daytona/dataset.csv に車両評価額のCSVファイルが保存されています。 関連する列: - 'year': 整数型、車両の製造年 - - 'price_in_euro': 浮動小数点型、車両のユーロ建て掲載価格 + - 'price_in_euro': 浮動小数点型、車両の表示価格(ユーロ) - 製造年ごとの価格変動を分析してください。 - 'year' または 'price_in_euro' が欠損、非数値、または外れ値の行は除外してください。 + 製造年ごとの価格変動を分析してください。 + 'year' または 'price_in_euro' が欠損値、非数値、または外れ値である行を削除してください。 年ごとの平均価格を示す折れ線グラフを作成してください。 - この要件に基づいてデータセットを分析し、適切なグラフを生成する Python コードを書いてください。 - 最後に plt.show() で終了してください""" + この要求に基づいてデータセットを分析し、適切なグラフを生成するPythonコードを記述してください。 + 最後に plt.show() を実行してください。""" anthropic = Anthropic() print('モデルの応答を待機中...') @@ -397,13 +397,13 @@ Daytona のサンドボックスを作成し、データセットをアップロ tools=[ { 'name': 'run_python_code', - 'description': 'Python コードを実行', + 'description': 'Pythonコードを実行', 'input_schema': { 'type': 'object', 'properties': { 'code': { 'type': 'string', - 'description': '実行する Python コード', + 'description': '実行するPythonコード', }, }, 'required': ['code'], @@ -416,7 +416,7 @@ Daytona のサンドボックスを作成し、データセットをアップロ if content_block.type == 'tool_use': if content_block.name == 'run_python_code': code = content_block.input['code'] - print('サンドボックスで次のコードを実行します:\n', code) + print('サンドボックス内で以下のコードを実行します:\n', code) # サンドボックス内でコードを実行 run_ai_generated_code(sandbox, code) @@ -424,22 +424,22 @@ Daytona のサンドボックスを作成し、データセットをアップロ def run_ai_generated_code(sandbox: Sandbox, ai_generated_code: str): execution = sandbox.process.code_run(ai_generated_code) if execution.exit_code != 0: - print('AI 生成コードでエラーが発生しました。') + print('AI生成コードでエラーが発生しました。') print(execution.exit_code) print(execution.result) return - # すべての結果を走査し、グラフを表す png ファイルがあるか確認 + # すべての結果を反復処理し、グラフを表すpngファイルを確認 if not execution.artifacts or not execution.artifacts.charts: - print('実行成果物にグラフが見つかりませんでした') + print('実行アーティファクト内にグラフが見つかりませんでした') print(execution.artifacts) return result_idx = 0 for result in execution.artifacts.charts: if result.png: - # png をファイルに保存 - # png は base64 形式です。 + # pngをファイルに保存 + # pngはbase64形式 with open(f'chart-{result_idx}.png', 'wb') as f: f.write(base64.b64decode(result.png)) print(f'グラフを chart-{result_idx}.png に保存しました') @@ -468,20 +468,20 @@ Daytona のサンドボックスを作成し、データセットをアップロ await sandbox.fs.uploadFile('dataset.csv', '/home/daytona/dataset.csv') const prompt = ` - サンドボックス内の /home/daytona/dataset.csv に車両評価のCSVファイルがあります。 + /home/daytona/dataset.csvのサンドボックス内に車両評価額のCSVファイルが保存されています。 - 関連列: - - 'year': 整数、車両の製造年 - - 'price_in_euro': 浮動小数点数、ユーロ建ての掲載価格 + 関連する列: + - 'year': 整数型、車両の製造年 + - 'price_in_euro': 浮動小数点型、車両の表示価格(ユーロ) - 製造年ごとの価格の変動を分析してください。 - 'year' または 'price_in_euro' が欠損、非数値、または外れ値の行は除外してください。 + 製造年ごとの価格変動を分析してください。 + 'year'または'price_in_euro'が欠損値、非数値、または外れ値である行を削除してください。 年ごとの平均価格を示す折れ線グラフを作成してください。 - リクエストに基づいてデータセットを分析し、適切なグラフを生成する Python コードを書いてください。 - 最後に plt.show() で終了してください` + この要求に基づいてデータセットを分析し、適切なグラフを生成するPythonコードを記述してください。 + 最後にplt.show()で終了してください。` const anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY }) - console.log('モデルの応答を待っています...') + console.log('モデルの応答を待機中...') const msg = await anthropic.messages.create({ model: 'claude-3-5-sonnet-20240620', max_tokens: 1024, @@ -489,13 +489,13 @@ Daytona のサンドボックスを作成し、データセットをアップロ tools: [ { name: 'run_python_code', - description: 'Python コードを実行', + description: 'Pythonコードを実行', input_schema: { type: 'object', properties: { code: { type: 'string', - description: '実行する Python コード', + description: '実行するPythonコード', }, }, required: ['code'], @@ -512,8 +512,8 @@ Daytona のサンドボックスを作成し、データセットをアップロ if (contentBlock.type === 'tool_use') { if (contentBlock.name === 'run_python_code') { const code = (contentBlock.input as CodeRunToolInput).code - console.log('サンドボックスで次のコードを実行します:\n', code) - // サンドボックスでコードを実行 + console.log('サンドボックス内で以下のコードを実行します:\n', code) + // サンドボックス内でコードを実行 await runAIGeneratedCode(sandbox, code) } } @@ -528,9 +528,9 @@ Daytona のサンドボックスを作成し、データセットをアップロ console.log(execution.result) process.exit(1) } - // すべての結果を確認し、グラフを表す PNG ファイルがあるかを特に確認します。 + // すべての結果を反復処理し、グラフを表すpngファイルを確認 if (!execution.artifacts || !execution.artifacts.charts) { - console.log('実行成果物にチャートが見つかりません') + console.log('実行アーティファクト内にグラフが見つかりませんでした') console.log(execution.artifacts) return } @@ -538,10 +538,10 @@ Daytona のサンドボックスを作成し、データセットをアップロ let resultIdx = 0 for (const result of execution.artifacts.charts) { if (result.png) { - // PNG をファイルに保存 - // PNG は base64 形式です。 + // pngをファイルに保存 + // pngはbase64形式 fs.writeFileSync(`chart-${resultIdx}.png`, result.png, { encoding: 'base64' }) - console.log(`チャートを chart-${resultIdx}.png に保存しました`) + console.log(`グラフをchart-${resultIdx}.pngに保存しました`) resultIdx++ } } @@ -550,4 +550,4 @@ Daytona のサンドボックスを作成し、データセットをアップロ main().catch(console.error); ``` - + \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/declarative-builder.mdx b/apps/docs/src/content/docs/ja/declarative-builder.mdx index 447681621..e65f833ad 100644 --- a/apps/docs/src/content/docs/ja/declarative-builder.mdx +++ b/apps/docs/src/content/docs/ja/declarative-builder.mdx @@ -4,92 +4,51 @@ title: 宣言的ビルダー import { TabItem, Tabs } from '@astrojs/starlight/components' -Daytona(サンドボックスの作成・管理プラットフォーム)の宣言的ビルダーは、サンドボックス(Daytonaが管理する隔離された一時的な実行環境)の依存関係をコードファーストで定義する強力な手法を提供します。コンテナレジストリからイメージを取り込む代わりに、SDKを用いてプログラム的に定義できます。 +Daytona の宣言的ビルダーは、サンドボックスの依存関係を定義するための強力な「コードファースト」アプローチを提供します。コンテナレジストリからイメージを取り込むのではなく、SDK を使ってプログラム的に定義できます。 -## 概要 +## 概要 \{#overview\} -宣言的ビルダーシステムは、主に次の2つのワークフローをサポートします。 +宣言的ビルダーシステムは、主に次の2つのワークフローをサポートします: -1. **動的イメージ**: サンドボックス(Daytonaが管理する隔離された一時的な実行環境)作成時に、依存関係の異なるイメージをオンデマンドでビルド -2. **事前構築済みスナップショット**: 複数のサンドボックスで共有可能な、すぐに使えるスナップショット(サンドボックス作成に使う事前設定済みの再利用可能なイメージ/テンプレート)を作成・登録 +1. [**宣言的イメージ**](#declarative-image-building):サンドボックスの作成時に、異なる依存関係を持つイメージをオンデマンドでビルドする +2. [**事前構築済みスナップショット**](#creating-pre-built-snapshots):複数のサンドボックス間で共有可能な、すぐに使用できる[スナップショット](/docs/snapshots)を作成して登録する -以下の機能を提供します。完全なAPIリファレンスとメソッドシグネチャについては、[Python](/docs/ja/python-sdk/common/image) および [TypeScript](/docs/ja/typescript-sdk/image) のSDKリファレンスを参照してください。 +### 宣言的イメージのビルド \{#declarative-image-building\} -### ベースイメージの選択 +サンドボックス作成時に、宣言的イメージをその場で生成できます。これは、別途スナップショットを作らずに素早く反復するのに最適です。 -- **Debianベースの環境**(Pythonと必須のビルドツールをプリインストール) -- **カスタムベースイメージ**(任意のDockerレジストリまたは既存のコンテナイメージ由来) -- **Dockerfileの取り込み**(既存のDockerfileのインポートと拡張) - -### パッケージ管理 - -- **Pythonパッケージのインストール**(`pip`、`requirements.txt`、`pyproject.toml`に対応) -- **高度なpipオプション**(カスタムインデックス、find-links、オプション依存関係など) - -### ファイルシステム操作 - -- **ファイルのコピー**(ローカル開発環境からイメージへ) -- **ディレクトリのコピー**(大量ファイル転送やプロジェクトセットアップに対応) -- **作業ディレクトリの設定**(デフォルトの実行コンテキストを指定) - -### 環境構成 - -- **環境変数**(アプリケーション設定やシークレット用) -- **シェルコマンドの実行**(イメージビルド中) -- **コンテナのランタイム設定**(エントリポイントやデフォルトコマンドを含む) - -詳細なメソッドシグネチャや使用例については、[Python](/docs/ja/python-sdk/common/image) および [TypeScript](/docs/ja/typescript-sdk/image) のSDKリファレンスを参照してください。 - -## 動的イメージビルド - -サンドボックス作成時に、その場でイメージを生成できます。既存のどのイメージにも含まれていない特定の依存関係を持つ新しいサンドボックスを用意したい場合に有用です。 - -新規のイメージを定義することも、既存のイメージに特定の依存関係を追加することも可能です(例: `pip` パッケージや `apt-get install` コマンド)。\ -これにより、ビルド処理のために自前のコンピュートリソースを使う必要がなくなり、Daytonaのインフラストラクチャにオフロードできます。\ -各バージョンごとに個別のスナップショットを登録・検証する必要もありません。依存関係リストを素早く反復しやすくなり、また、数十〜数百の類似ユースケース/セットアップ向けにわずかに異なるバージョンを用意することもできます。 +宣言的イメージは24時間キャッシュされ、同じスクリプトを実行する際に自動的に再利用されます。したがって、同一ランナーでの以後の実行はほぼ瞬時に完了します。 ```python - # Define the dynamic image - dynamic_image = ( + # Pythonパッケージを含むシンプルな宣言的イメージを定義 + declarative_image = ( Image.debian_slim("3.12") - .pip_install(["pytest", "pytest-cov", "mypy", "ruff", "black", "gunicorn"]) - .run_commands("apt-get update && apt-get install -y git curl", "mkdir -p /home/daytona/project") - .workdir("/home/daytona/project") - .env({"ENV_VAR": "My Environment Variable"}) - .add_local_file("file_example.txt", "/home/daytona/project/file_example.txt") + .pip_install(["requests", "pytest"]) + .workdir("/home/daytona") ) - # Create a new Sandbox with the dynamic image and stream the build logs - + # 宣言的イメージで新しいサンドボックスを作成し、ビルドログをストリーミング sandbox = daytona.create( - CreateSandboxFromImageParams( - image=dynamic_image, - ), + CreateSandboxFromImageParams(image=declarative_image), timeout=0, on_snapshot_create_logs=print, ) - ``` ```typescript - // Define the dynamic image - const dynamicImage = Image.debianSlim('3.13') - .pipInstall(['pytest', 'pytest-cov', 'black', 'isort', 'mypy', 'ruff']) - .runCommands('apt-get update && apt-get install -y git', 'mkdir -p /home/daytona/project') - .workdir('/home/daytona/project') - .env({ - NODE_ENV: 'development', - }) - .addLocalFile('file_example.txt', '/home/daytona/project/file_example.txt') - - // Create a new Sandbox with the dynamic image and stream the build logs + // Pythonパッケージを含むシンプルな宣言的イメージを定義 + const declarativeImage = Image.debianSlim('3.12') + .pipInstall(['requests', 'pytest']) + .workdir('/home/daytona') + + // 宣言的イメージで新しいサンドボックスを作成し、ビルドログをストリーミング const sandbox = await daytona.create( { - image: dynamicImage, + image: declarativeImage, }, { timeout: 0, @@ -100,147 +59,278 @@ Daytona(サンドボックスの作成・管理プラットフォーム)の -:::tip -動的イメージからのサンドボックス作成を一度実行すると、そのイメージは24時間キャッシュされ、同じランナー上での後続のサンドボックス作成はほぼ即時に完了します。 - -つまり、毎回同じスクリプトを使えば、Daytonaがイメージのキャッシュを適切に処理します。 -::: +参照: [CreateSandboxFromImageParams (Python SDK)](/docs/python-sdk/sync/daytona#createsandboxfromimageparams), [CreateSandboxFromImageParams (TypeScript SDK)](/docs/typescript-sdk/daytona#createsandboxfromimageparams) -## 事前ビルド済みスナップショットの作成 +### 事前構築済みスナップショットの作成 \{#creating-pre-built-snapshots\} -特定の依存関係を含む新しいDaytonaのスナップショットを準備し、必要なときに複数のサンドボックスで即座に使いたい場合は、事前ビルド済みのスナップショットを作成できます。 - -このスナップショットはDaytonaダッシュボード上に表示され続け、永続的にキャッシュされるため、再ビルドは不要です。 +複数のサンドボックスで再利用するイメージには、事前構築済みのスナップショットを作成します。作成したスナップショットはDaytonaダッシュボードに表示され、恒久的にキャッシュされるため、再ビルドなしで即座に利用できます。 ```python - # スナップショット用の一意の名前を生成 - snapshot_name = f"python-example:{int(time.time())}" - - # イメージに追加するデータを含むローカルファイルを作成 - - with open("file_example.txt", "w") as f: - f.write("Hello, World!") - - # 一般的なデータサイエンスパッケージを含むPythonイメージを作成 + # シンプルなPythonのデータサイエンス用イメージを作成 + snapshot_name = "data-science-snapshot" image = ( Image.debian_slim("3.12") - .pip_install(["numpy", "pandas", "matplotlib", "scipy", "scikit-learn", "jupyter"]) - .run_commands( - "apt-get update && apt-get install -y git", - "groupadd -r daytona && useradd -r -g daytona -m daytona", - "mkdir -p /home/daytona/workspace", - ) - .dockerfile_commands(["USER daytona"]) - .workdir("/home/daytona/workspace") - .env({"MY_ENV_VAR": "My Environment Variable"}) - .add_local_file("file_example.txt", "/home/daytona/workspace/file_example.txt") + .pip_install(["pandas", "numpy"]) + .workdir("/home/daytona") ) - # スナップショットを作成し、ビルドログをストリーミング出力 - - print(f"=== Creating Snapshot: {snapshot_name} ===") + # スナップショットを作成し、ビルドログをストリーム出力 daytona.snapshot.create( CreateSnapshotParams( name=snapshot_name, image=image, - resources=Resources( - cpu=1, - memory=1, - disk=3, - ), ), on_logs=print, ) - # 事前ビルド済みのスナップショットを使って新しいサンドボックスを作成 - + # 事前構築済みのスナップショットから新しいサンドボックスを作成 sandbox = daytona.create( - CreateSandboxFromSnapshotParams( - snapshot=snapshot_name - ) + CreateSandboxFromSnapshotParams(snapshot=snapshot_name) ) - ``` ```typescript - // イメージ用の一意の名前を生成 - const snapshotName = `node-example:${Date.now()}` - console.log(`Creating Snapshot with name: ${snapshotName}`) - - // スナップショットに追加するデータを含むローカルファイルを作成 - const localFilePath = 'file_example.txt' - const localFileContent = 'Hello, World!' - fs.writeFileSync(localFilePath, localFileContent) + // シンプルなPythonのデータサイエンス用イメージを作成 + const snapshotName = 'data-science-snapshot' - // 一般的なデータサイエンスパッケージを含むPythonイメージを作成 const image = Image.debianSlim('3.12') - .pipInstall(['numpy', 'pandas', 'matplotlib', 'scipy', 'scikit-learn']) - .runCommands( - 'apt-get update && apt-get install -y git', - 'groupadd -r daytona && useradd -r -g daytona -m daytona', - 'mkdir -p /home/daytona/workspace' - ) - .dockerfileCommands(['USER daytona']) - .workdir('/home/daytona/workspace') - .env({ - MY_ENV_VAR: 'My Environment Variable', - }) - .addLocalFile(localFilePath, '/home/daytona/workspace/file_example.txt') - - # スナップショットを作成し、ビルドログをストリーミング出力 - console.log(`=== Creating Snapshot: ${snapshotName} ===`) + .pipInstall(['pandas', 'numpy']) + .workdir('/home/daytona') + + // スナップショットを作成し、ビルドログをストリーム出力 await daytona.snapshot.create( - { + { name: snapshotName, image, - resources: { - cpu: 1, - memory: 1, - disk: 3, - }, - }, - { + }, + { onLogs: console.log, - }, - ) + } + ) - // 事前ビルド済みのスナップショットを使って新しいサンドボックスを作成 + // 事前構築済みのスナップショットから新しいサンドボックスを作成 const sandbox = await daytona.create({ - snapshot: snapshotName, + snapshot: snapshotName, }) ``` -## 既存の Dockerfile を利用する +参照: [CreateSnapshotParams (Python SDK)](/docs/python-sdk/sync/snapshot#createsnapshotparams), [CreateSnapshotParams (TypeScript SDK)](/docs/typescript-sdk/snapshot#createsnapshotparams) + +## イメージの構成 \{#image-configuration\} + +Daytona SDK には、イメージをプログラムで定義するためのメソッドが用意されています。ベースイメージの指定、パッケージのインストール、ファイルの追加、環境変数の設定などを行えます。 + +完全な API リファレンスとメソッドシグネチャについては、[Python](/docs/python-sdk/common/image) および [TypeScript](/docs/typescript-sdk/image) の SDK リファレンスを参照してください。 + +### ベースイメージの選択 \{#base-image-selection\} + +次の例は、ベースイメージの選択と構成方法を示します: + + + + ```python + # ベースイメージから作成 + image = Image.base("python:3.12-slim-bookworm") + + # Python 3.12 を含む Debian slim イメージを使用 + image = Image.debian_slim("3.12") + ``` + + + + ```typescript + // ベースイメージから作成 + const image = Image.base('python:3.12-slim-bookworm') + + // Python 3.12 を含む Debian slim イメージを使用 + const image = Image.debianSlim('3.12') + ``` + + + +参照: [base (Python SDK)](/docs/python-sdk/common/image#imagebase)、[debian_slim (Python SDK)](/docs/python-sdk/common/image#imagedebian_slim)、[base (TypeScript SDK)](/docs/typescript-sdk/image#base)、[debianSlim (TypeScript SDK)](/docs/typescript-sdk/image#debianslim) -既存の Dockerfile をイメージのベースとして使いたい場合は、次のようにインポートできます。 +### パッケージ管理 \{#package-management\} + +次の方法で Python パッケージと依存関係をインストールします。 ```python + # pip パッケージを追加 + image = Image.debian_slim("3.12").pip_install("requests", "pandas") + + # requirements.txt からインストール + image = Image.debian_slim("3.12").pip_install_from_requirements("requirements.txt") + + # pyproject.toml からインストール(オプション依存関係あり) + image = Image.debian_slim("3.12").pip_install_from_pyproject("pyproject.toml", optional_dependencies=["dev"]) + ``` + + + + ```typescript + // pip パッケージを追加 + const image = Image.debianSlim('3.12').pipInstall(['requests', 'pandas']) + + // requirements.txt からインストール + const image = Image.debianSlim('3.12').pipInstallFromRequirements('requirements.txt') + + // pyproject.toml からインストール(オプション依存関係あり) + const image = Image.debianSlim('3.12').pipInstallFromPyproject('pyproject.toml', { + optionalDependencies: ['dev'] + }) + ``` + + + +参照: [pip_install (Python SDK)](/docs/python-sdk/common/image#imagepip_install)、[pip_install_from_requirements (Python SDK)](/docs/python-sdk/common/image#imagepip_install_from_requirements)、[pip_install_from_pyproject (Python SDK)](/docs/python-sdk/common/image#imagepip_install_from_pyproject)、[pipInstall (TypeScript SDK)](/docs/typescript-sdk/image#pipinstall)、[pipInstallFromRequirements (TypeScript SDK)](/docs/typescript-sdk/image#pipinstallfromrequirements)、[pipInstallFromPyproject (TypeScript SDK)](/docs/typescript-sdk/image#pipinstallfrompyproject) + +### ファイルシステム操作 \{#file-system-operations\} + +以下の例では、イメージにファイルやディレクトリを追加する方法を示します。 + + + + ```python + # ローカルファイルを追加 + image = Image.debian_slim("3.12").add_local_file("package.json", "/home/daytona/package.json") + + # ローカルディレクトリを追加 + image = Image.debian_slim("3.12").add_local_dir("src", "/home/daytona/src") + ``` + + + + ```typescript + // ローカルファイルを追加 + const image = Image.debianSlim('3.12').addLocalFile('package.json', '/home/daytona/package.json') + + // ローカルディレクトリを追加 + const image = Image.debianSlim('3.12').addLocalDir('src', '/home/daytona/src') + ``` + + + +参照: [add_local_file (Python SDK)](/docs/python-sdk/common/image#imageadd_local_file), [add_local_dir (Python SDK)](/docs/python-sdk/common/image#imageadd_local_dir), [addLocalFile (TypeScript SDK)](/docs/typescript-sdk/image#addlocalfile), [addLocalDir (TypeScript SDK)](/docs/typescript-sdk/image#addlocaldir) + +### 環境設定 \{#environment-configuration\} + +以下の方法で環境変数と作業ディレクトリを設定します: + + + + ```python + # 環境変数を設定 + image = Image.debian_slim("3.12").env({"PROJECT_ROOT": "/home/daytona"}) + + # 作業ディレクトリを設定 + image = Image.debian_slim("3.12").workdir("/home/daytona") + ``` + + + + ```typescript + // 環境変数を設定 + const image = Image.debianSlim('3.12').env({ PROJECT_ROOT: '/home/daytona' }) + + // 作業ディレクトリを設定 + const image = Image.debianSlim('3.12').workdir('/home/daytona') + ``` + + + +参照: [env(Python SDK)](/docs/python-sdk/common/image#imageenv)、[workdir(Python SDK)](/docs/python-sdk/common/image#imageworkdir)、[env(TypeScript SDK)](/docs/typescript-sdk/image#env)、[workdir(TypeScript SDK)](/docs/typescript-sdk/image#workdir) + +### コマンドとエントリポイント \{#commands-and-entrypoints\} + +ビルド時にコマンドを実行し、コンテナの起動時の挙動を設定します: + + + + ```python + # ビルド時にシェルコマンドを実行 + image = Image.debian_slim("3.12").run_commands( + 'apt-get update && apt-get install -y git', + 'groupadd -r daytona && useradd -r -g daytona -m daytona', + 'mkdir -p /home/daytona/workspace' + ) + + # エントリポイントを設定 + image = Image.debian_slim("3.12").entrypoint(["/bin/bash"]) + + # デフォルトのコマンドを設定 + image = Image.debian_slim("3.12").cmd(["/bin/bash"]) + ``` + + + + ```typescript + // ビルド時にシェルコマンドを実行 + const image = Image.debianSlim('3.12').runCommands( + 'apt-get update && apt-get install -y git', + 'groupadd -r daytona && useradd -r -g daytona -m daytona', + 'mkdir -p /home/daytona/workspace' + ) + + // エントリポイントを設定 + const image = Image.debianSlim('3.12').entrypoint(['/bin/bash']) + + // デフォルトのコマンドを設定 + const image = Image.debianSlim('3.12').cmd(['/bin/bash']) + ``` + + + +参照: [run_commands (Python SDK)](/docs/python-sdk/common/image#imagerun_commands)、[entrypoint (Python SDK)](/docs/python-sdk/common/image#imageentrypoint)、[cmd (Python SDK)](/docs/python-sdk/common/image#imagecmd)、[runCommands (TypeScript SDK)](/docs/typescript-sdk/image#runcommands)、[entrypoint (TypeScript SDK)](/docs/typescript-sdk/image#entrypoint)、[cmd (TypeScript SDK)](/docs/typescript-sdk/image#cmd) + +### Dockerfile の統合 \{#dockerfile-integration\} + +既存の Dockerfile を取り込む、またはカスタムの Dockerfile コマンドを追加する: + + + + ```python + # カスタムの Dockerfile コマンドを追加 + image = Image.debian_slim("3.12").dockerfile_commands(["RUN echo 'Hello, world!'"]) + + # 既存の Dockerfile を使用 + image = Image.from_dockerfile("Dockerfile") + + # 既存の Dockerfile を拡張 image = Image.from_dockerfile("app/Dockerfile").pip_install(["numpy"]) ``` ```typescript + // カスタムの Dockerfile コマンドを追加 + const image = Image.debianSlim('3.12').dockerfileCommands(['RUN echo "Hello, world!"']) + + // 既存の Dockerfile を使用 + const image = Image.fromDockerfile('Dockerfile') + + // 既存の Dockerfile を拡張 const image = Image.fromDockerfile("app/Dockerfile").pipInstall(['numpy']) ``` -## ベストプラクティス +参照: [dockerfile_commands (Python SDK)](/docs/python-sdk/common/image#imagedockerfile_commands)、[from_dockerfile (Python SDK)](/docs/python-sdk/common/image#imagefrom_dockerfile)、[dockerfileCommands (TypeScript SDK)](/docs/typescript-sdk/image#dockerfilecommands)、[fromDockerfile (TypeScript SDK)](/docs/typescript-sdk/image#fromdockerfile) + +## ベストプラクティス \{#best-practices\} -1. **レイヤー最適化**: 関連する操作をまとめて、Dockerのレイヤー数を抑える -2. **キャッシュの活用**: 同一のビルドコマンドとコンテキストはキャッシュされ、以降のビルドはほぼ即時に完了する -3. **セキュリティ**: アプリケーションのワークロード用に非rootユーザーを作成する -4. **リソース効率**: 適切な場合はスリムなベースイメージを使用する -5. **コンテキストの最小化**: ビルドコンテキストには必要なファイルだけを含める +宣言的ビルダーを使用する際は、次のベストプラクティスに従ってください: -宣言的ビルダーは、Dockerの強力さと柔軟性を損なうことなく、コンテナイメージ作成に対するプログラム的で保守しやすいアプローチを提供し、開発ワークフローを効率化します。 +1. **レイヤーの最適化**:関連する処理をまとめて Docker レイヤーを最小化する +2. **キャッシュの活用**:同一のビルドコマンドとコンテキストはキャッシュされ、以降のビルドはほぼ即時に完了する +3. **セキュリティ**:アプリケーションのワークロード用に非 root ユーザーを作成する +4. **リソース効率**:適切な場合はスリムなベースイメージを使用する +5. **コンテキストの最小化**:ビルドコンテキストには必要なファイルのみを含める \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/file-system-operations.mdx b/apps/docs/src/content/docs/ja/file-system-operations.mdx index 8a793fc12..c520202e5 100644 --- a/apps/docs/src/content/docs/ja/file-system-operations.mdx +++ b/apps/docs/src/content/docs/ja/file-system-operations.mdx @@ -4,283 +4,344 @@ title: ファイルシステム操作 import { TabItem, Tabs } from '@astrojs/starlight/components' -Daytona(サンドボックスという隔離されたクラウド開発環境を作成・管理するプラットフォーム)のSDKは、サンドボックス(Daytonaが管理する隔離された一時的な実行環境)内の`fs`モジュールを通じて、充実したファイルシステム操作機能を提供します。本ガイドでは、利用可能なすべてのファイルシステム操作とベストプラクティスについて説明します。 +DaytonaのTS SDK / Python SDKは、サンドボックス内の`fs`モジュールを通じて、充実したファイルシステム操作を提供します。本ガイドでは、利用可能なすべてのファイルシステム操作とベストプラクティスを解説します。 -## 基本操作 +## 基本操作 \{#basic-operations\} -Daytona SDK は、サンドボックス(Daytonaが管理する隔離された一時的な実行環境)内のファイルシステムとやり取りする機能を提供します。ファイルの一覧表示、ディレクトリ作成、ファイルの読み書きなど、さまざまな操作を実行できます。 +Daytona SDK では、サンドボックス内のファイルシステムを操作するための機能を提供しています。ファイル一覧の取得、ディレクトリの作成、ファイルの読み書きなど、さまざまな操作を実行できます。 -簡潔さのため、ファイル操作はデフォルトでサンドボックスユーザーのホームディレクトリ直下で行われる前提です。例えば、`workspace` は `/home/[username]/workspace` を意味します。先頭にスラッシュ `/` を付けた絶対パスを作業ディレクトリとして指定することも可能です。 +ファイル操作は、サンドボックスユーザーのホームディレクトリで作業していることを前提としています(例: `workspace` は `/home/[username]/workspace` を指します)。絶対パスを指定する場合は、先頭に `/` を付けてください。 -### ファイルとディレクトリの一覧表示 +### ファイルとディレクトリの一覧 \{#listing-files-and-directories\} -Daytona SDK は、Python と TypeScript を用いてサンドボックス内のファイルやディレクトリを一覧表示できます。 +Daytona SDK では、Python と TypeScript を使用してサンドボックス内のファイルやディレクトリを一覧できます。 - -```python -# List files in a directory -files = sandbox.fs.list_files("workspace") - -for file in files: - print(f"Name: {file.name}") - print(f"Is directory: {file.is_dir}") - print(f"Size: {file.size}") - print(f"Modified: {file.mod_time}") - -``` - - -```typescript -// List files in a directory -const files = await sandbox.fs.listFiles("workspace") - -files.forEach(file => { - console.log(`Name: ${file.name}`) - console.log(`Is directory: ${file.isDir}`) - console.log(`Size: ${file.size}`) - console.log(`Modified: ${file.modTime}`) -}) -``` - - + + ```python + # ディレクトリ内のファイルを一覧 + files = sandbox.fs.list_files("workspace") + + for file in files: + print(f"Name: {file.name}") + print(f"Is directory: {file.is_dir}") + print(f"Size: {file.size}") + print(f"Modified: {file.mod_time}") + + ``` + + + + ```typescript + // ディレクトリ内のファイルを一覧 + const files = await sandbox.fs.listFiles("workspace") + + files.forEach(file => { + console.log(`Name: ${file.name}`) + console.log(`Is directory: ${file.isDir}`) + console.log(`Size: ${file.size}`) + console.log(`Modified: ${file.modTime}`) + }) + ``` + -### ディレクトリの作成 +参照: [list_files (Python SDK)](/docs/python-sdk/sync/file-system/#filesystemlist_files), [listFiles (TypeScript SDK)](/docs/typescript-sdk/file-system/#listfiles) -Daytona SDK は、Python と TypeScript で特定のパーミッションを指定してディレクトリを作成できます。 +### ディレクトリの作成 \{#creating-directories\} + +Daytona SDK では、Python と TypeScript を使用して特定の権限を指定してディレクトリを作成できます。 - -```python -# Create with specific permissions -sandbox.fs.create_folder("workspace/new-dir", "755") -``` - - -```typescript -// Create with specific permissions -await sandbox.fs.createFolder("workspace/new-dir", "755") -``` - - + + ```python + # 権限を指定して作成 + sandbox.fs.create_folder("workspace/new-dir", "755") + ``` + + + + ```typescript + // 権限を指定して作成 + await sandbox.fs.createFolder("workspace/new-dir", "755") + ``` + -### ファイルのアップロード +参照: [create_folder (Python SDK)](/docs/python-sdk/sync/file-system/#filesystemcreate_folder), [createFolder (TypeScript SDK)](/docs/typescript-sdk/file-system/#createfolder) + +### ファイルのアップロード \{#uploading-files\} -Daytona SDK は、Python と TypeScript を用いて、サンドボックス内でのファイルの読み取り、書き込み、アップロード、ダウンロード、削除を行うための機能を提供します。 +Daytona SDK は、Python と TypeScript を用いてサンドボックス内のファイルを読み取り、書き込み、アップロード、ダウンロード、削除できる機能を提供します。 -#### 単一ファイルのアップロード +#### 単一ファイルのアップロード \{#uploading-a-single-file\} -単一ファイルをアップロードする場合は、次のように実行します。 +以下は、単一のファイルをアップロードする例です: - -```python -# Upload a single file -with open("local_file.txt", "rb") as f: - content = f.read() -sandbox.fs.upload_file(content, "remote_file.txt") -``` - - -```typescript -// Upload a single file -const fileContent = Buffer.from('Hello, World!') -await sandbox.fs.uploadFile(fileContent, "data.txt") -``` - - + + ```python + # 単一のファイルをアップロード + with open("local_file.txt", "rb") as f: + content = f.read() + sandbox.fs.upload_file(content, "remote_file.txt") + ``` + + + + ```typescript + // 単一のファイルをアップロード + const fileContent = Buffer.from('Hello, World!') + await sandbox.fs.uploadFile(fileContent, "data.txt") + ``` + -#### 複数ファイルのアップロード +参考: [upload_file (Python SDK)](/docs/python-sdk/sync/file-system/#filesystemupload_file), [uploadFile (TypeScript SDK)](/docs/typescript-sdk/file-system/#uploadfile) -以下は、1回のメソッド呼び出しで複数ファイルを効率的にアップロードする例です。 +#### 複数ファイルのアップロード \{#uploading-multiple-files\} + +次の例は、1回のメソッド呼び出しで複数のファイルを効率的にアップロードする方法を示します。 - -```python -# Upload multiple files at once -files_to_upload = [] - -with open("file1.txt", "rb") as f1: - files_to_upload.append(FileUpload( - source=f1.read(), - destination="data/file1.txt", - )) - -with open("file2.txt", "rb") as f2: - files_to_upload.append(FileUpload( - source=f2.read(), - destination="data/file2.txt", - )) - -with open("settings.json", "rb") as f3: - files_to_upload.append(FileUpload( - source=f3.read(), - destination="config/settings.json", - )) - -sandbox.fs.upload_files(files_to_upload) - -``` - - -```typescript -// Upload multiple files at once -const files = [ - { - source: Buffer.from('Content of file 1'), - destination: 'data/file1.txt', - }, - { - source: Buffer.from('Content of file 2'), - destination: 'data/file2.txt', - }, - { - source: Buffer.from('{"key": "value"}'), - destination: 'config/settings.json', - } -] - -await sandbox.fs.uploadFiles(files) -``` - - + + ```python + # 複数のファイルを一度にアップロードする + files_to_upload = [] + + with open("file1.txt", "rb") as f1: + files_to_upload.append(FileUpload( + source=f1.read(), + destination="data/file1.txt", + )) + + with open("file2.txt", "rb") as f2: + files_to_upload.append(FileUpload( + source=f2.read(), + destination="data/file2.txt", + )) + + with open("settings.json", "rb") as f3: + files_to_upload.append(FileUpload( + source=f3.read(), + destination="config/settings.json", + )) + + sandbox.fs.upload_files(files_to_upload) + + ``` + + + + ```typescript + // 複数のファイルを一度にアップロードする + const files = [ + { + source: Buffer.from('Content of file 1'), + destination: 'data/file1.txt', + }, + { + source: Buffer.from('Content of file 2'), + destination: 'data/file2.txt', + }, + { + source: Buffer.from('{"key": "value"}'), + destination: 'config/settings.json', + } + ] + + await sandbox.fs.uploadFiles(files) + ``` + -### ファイルのダウンロード +参照: [upload_files(Python SDK)](/docs/python-sdk/sync/file-system/#filesystemupload_files)、[uploadFiles(TypeScript SDK)](/docs/typescript-sdk/file-system/#uploadfiles) + +### ファイルをダウンロードする \{#downloading-files\} -次のコマンドは、サンドボックスユーザーのホームディレクトリから `file1.txt` をダウンロードし、その内容を出力します。 +#### 単一ファイルのダウンロード \{#downloading-a-single-file\} + +次のコマンドは、サンドボックスの作業ディレクトリから `file1.txt` を1件ダウンロードし、その内容を出力します: - -```python + + ```python -content = sandbox.fs.download_file("file1.txt") + content = sandbox.fs.download_file("file1.txt") -with open("local_file.txt", "wb") as f: - f.write(content) + with open("local_file.txt", "wb") as f: + f.write(content) -print(content.decode('utf-8')) + print(content.decode('utf-8')) -``` - - -```typescript + ``` + -const downloadedFile = await sandbox.fs.downloadFile("file1.txt") + + ```typescript -console.log('File content:', downloadedFile.toString()) + const downloadedFile = await sandbox.fs.downloadFile("file1.txt") -``` + console.log('File content:', downloadedFile.toString()) - + ``` + -### ファイルの削除 +参照: [download_file (Python SDK)](/docs/python-sdk/sync/file-system/#filesystemdownload_file), [downloadFile (TypeScript SDK)](/docs/typescript-sdk/file-system/#downloadfile) + +#### 複数ファイルのダウンロード \{#downloading-multiple-files\} -不要になったファイルは、`delete_file` 関数で削除できます。 +次の例では、単一のメソッド呼び出しで複数のファイルを効率的にダウンロードする方法を示します。 - -```python + + ```python + # 複数ファイルをまとめてダウンロード + files_to_download = [ + FileDownloadRequest(source="data/file1.txt"), # 保存先なし - メモリにダウンロード + FileDownloadRequest(source="data/file2.txt", destination="local_file2.txt"), # ローカルファイルにダウンロード + ] + + results = sandbox.fs.download_files(files_to_download) + + for result in results: + if result.error: + print(f"Error downloading {result.source}: {result.error}") + elif result.result: + print(f"Downloaded {result.source} to {result.result}") + + ``` + + + + ```typescript + // 複数ファイルをまとめてダウンロード + const files = [ + { source: "data/file1.txt" }, // 保存先なし - メモリにダウンロード + { source: "data/file2.txt", destination: "local_file2.txt" }, // ローカルファイルにダウンロード + ] + + const results = await sandbox.fs.downloadFiles(files) + + results.forEach(result => { + if (result.error) { + console.error(`Error downloading ${result.source}: ${result.error}`) + } else if (result.result) { + console.log(`Downloaded ${result.source} to ${result.result}`) + } + }) + ``` + + -sandbox.fs.delete_file("workspace/file.txt") +参照: [download_files (Python SDK)](/docs/python-sdk/sync/file-system/#filesystemdownload_files), [downloadFiles (TypeScript SDK)](/docs/typescript-sdk/file-system/#downloadfiles) -``` - - -```typescript +### ファイルの削除 \{#deleting-files\} -await sandbox.fs.deleteFile("workspace/file.txt") -``` +次の例は、ファイルを削除する方法を示します。 - - + + + ```python -## 高度な操作 + sandbox.fs.delete_file("workspace/file.txt") -Daytona SDK は、ファイル権限の設定・取得、検索と置換などの高度なファイルシステム操作を提供します。 + ``` + -### ファイル権限 + + ```typescript -Daytona SDK では、Python と TypeScript から、ファイル権限の設定・取得や、ディレクトリ権限の再帰的な設定が行えます。 + await sandbox.fs.deleteFile("workspace/file.txt") + ``` + + - - -```python -# Set file permissions -sandbox.fs.set_file_permissions("workspace/file.txt", "644") +参照: [delete_file(Python SDK)](/docs/python-sdk/sync/file-system/#filesystemdelete_file)、[deleteFile(TypeScript SDK)](/docs/typescript-sdk/file-system/#deletefile) -# Get file permissions +## 高度な操作 \{#advanced-operations\} -file_info = sandbox.fs.get_file_info("workspace/file.txt") -print(f"Permissions: {file_info.permissions}") +Daytona SDK は、ファイルのアクセス権や検索・置換など、より高度なファイルシステム操作を提供します。 -``` - - -```typescript -// Set file permissions -await sandbox.fs.setFilePermissions("workspace/file.txt", { mode: "644" }) +### ファイル権限 \{#file-permissions\} -// Get file permissions -const fileInfo = await sandbox.fs.getFileDetails("workspace/file.txt") -console.log(`Permissions: ${fileInfo.permissions}`) -``` +Daytona SDK では、Python と TypeScript を用いて、ファイル権限の設定・取得や、ディレクトリ権限の再帰的な設定を行うための機能を提供しています。 - + + + ```python + # ファイル権限を設定 + sandbox.fs.set_file_permissions("workspace/file.txt", "644") + + # ファイル権限を取得 + file_info = sandbox.fs.get_file_info("workspace/file.txt") + print(f"Permissions: {file_info.permissions}") + ``` + + + + ```typescript + // ファイル権限を設定 + await sandbox.fs.setFilePermissions("workspace/file.txt", { mode: "644" }) + + // ファイル権限を取得 + const fileInfo = await sandbox.fs.getFileDetails("workspace/file.txt") + console.log(`Permissions: ${fileInfo.permissions}`) + ``` + -### ファイルの検索と置換 +参照: [set_file_permissions (Python SDK)](/docs/python-sdk/sync/file-system/#filesystemset_file_permissions), [setFilePermissions (TypeScript SDK)](/docs/typescript-sdk/file-system/#setfilepermissions) + +### ファイルの検索と置換 \{#file-search-and-replace\} -Daytona SDK では、Python と TypeScript から、ファイル内のテキストの検索および置換を行えます。 +Daytona SDK は、Python と TypeScript でファイル内のテキスト検索および置換を行う機能を提供します。 - -```python -# Search for text in files; if a folder is specified, the search is recursive -results = sandbox.fs.find_files( - path="workspace/src", - pattern="text-of-interest" -) -for match in results: - print(f"Absolute file path: {match.file}") - print(f"Line number: {match.line}") - print(f"Line content: {match.content}") - print("\n") - -# Replace text in files - -sandbox.fs.replace_in_files( - files=["workspace/file1.txt", "workspace/file2.txt"], - pattern="old_text", - new_value="new_text" -) - -``` - - -```typescript -// Search for text in files; if a folder is specified, the search is recursive -const results = await sandbox.fs.findFiles({ - path="workspace/src", - pattern: "text-of-interest" -}) -results.forEach(match => { - console.log('Absolute file path:', match.file) - console.log('Line number:', match.line) - console.log('Line content:', match.content) -}) - -// Replace text in files -await sandbox.fs.replaceInFiles( - ["workspace/file1.txt", "workspace/file2.txt"], - "old_text", - "new_text" -) -``` - - + + ```python + # ファイル内のテキストを検索します。フォルダを指定した場合、再帰的に検索されます + results = sandbox.fs.find_files( + path="workspace/src", + pattern="text-of-interest" + ) + for match in results: + print(f"Absolute file path: {match.file}") + print(f"Line number: {match.line}") + print(f"Line content: {match.content}") + print("\n") + + # ファイル内のテキストを置換します + sandbox.fs.replace_in_files( + files=["workspace/file1.txt", "workspace/file2.txt"], + pattern="old_text", + new_value="new_text" + ) + ``` + + + + ```typescript + // ファイル内のテキストを検索します。フォルダを指定した場合、再帰的に検索されます + const results = await sandbox.fs.findFiles({ + path: "workspace/src", + pattern: "text-of-interest" + }) + results.forEach(match => { + console.log('Absolute file path:', match.file) + console.log('Line number:', match.line) + console.log('Line content:', match.content) + }) + + // ファイル内のテキストを置換します + await sandbox.fs.replaceInFiles( + ["workspace/file1.txt", "workspace/file2.txt"], + "old_text", + "new_text" + ) + ``` + + +参照: [find_files (Python SDK)](/docs/python-sdk/sync/file-system/#filesystemfind_files)、[replace_in_files (Python SDK)](/docs/python-sdk/sync/file-system/#filesystemreplace_in_files)、[findFiles (TypeScript SDK)](/docs/typescript-sdk/file-system/#findfiles)、[replaceInFiles (TypeScript SDK)](/docs/typescript-sdk/file-system/#replaceinfiles) \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/getting-started.mdx b/apps/docs/src/content/docs/ja/getting-started.mdx index b50f5fa66..d6fdd8a75 100644 --- a/apps/docs/src/content/docs/ja/getting-started.mdx +++ b/apps/docs/src/content/docs/ja/getting-started.mdx @@ -1,18 +1,18 @@ --- -title: はじめに +title: はじめよう --- import { TabItem, Tabs } from '@astrojs/starlight/components' -Daytona SDKはDaytonaと連携するための公式[Python](/docs/ja/python-sdk)および[TypeScript](/docs/ja/typescript-sdk)インターフェースを提供し、開発環境をプログラムで管理し、コードを実行できます。[Python SDK](/docs/ja/python-sdk)は同期・非同期の両方のプログラミングモデルをサポートしており、非同期クラスには`Async`の接頭辞が付きます。 +Daytona SDK は、Daytona と連携するための公式の [Python](/docs/ja/python-sdk) および [TypeScript](/docs/ja/typescript-sdk) インターフェースを提供し、開発環境のプログラムによる管理やコードの実行を可能にします。[Python SDK](/docs/ja/python-sdk) は同期・非同期の両方のプログラミングモデルをサポートしており、非同期クラスには接頭辞として `Async` が付きます。 -手順に従って、AIエージェント向けの最初のDaytona サンドボックス(Daytonaが管理する隔離された一時的な実行環境)を作成・実行しましょう。 +ステップバイステップのガイドに従って、AI エージェント向けの最初の Daytona サンドボックスを作成・実行してください。 -環境変数の設定やステージング環境での実験的機能へのアクセスなど、追加の設定手順については[Configuration](/docs/ja/configuration)を参照してください。 +環境変数の設定や、ステージング環境での実験的機能へのアクセスなど、追加の設定手順については [Configuration](/docs/ja/configuration) を参照してください。 -## Daytona SDK をインストールする +## Daytona SDK をインストールする \{#install-the-daytona-sdk\} -Daytona は、Daytona プラットフォームと連携するための公式 Python および TypeScript の SDK を提供しています。お好みの方法で SDK をインストールしてください。 +Daytona は、Daytona プラットフォームと連携するための公式 Python および TypeScript 向け SDK を提供しています。お好みの方法で SDK をインストールしてください。 @@ -23,19 +23,20 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt ```bash - # npm を使用 + # npm を使用する場合 npm install @daytonaio/sdk - # yarn を使用 + # yarn を使用する場合 yarn add @daytonaio/sdk - # pnpm を使用 + # pnpm を使用する場合 pnpm add @daytonaio/sdk + ``` -## サンドボックス内でコードを実行する +## サンドボックス内でコードを実行する \{#run-code-inside-a-sandbox\} 次のコードを実行して、Daytona のサンドボックスを作成し、コマンドを実行します。 @@ -47,7 +48,7 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt # Daytona クライアントを初期化 daytona = Daytona(DaytonaConfig(api_key="YOUR_API_KEY")) - # サンドボックスのインスタンスを作成 + # サンドボックスを作成 sandbox = daytona.create() # サンドボックス内で安全にコードを実行 @@ -74,7 +75,7 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt let sandbox; try { - // サンドボックスのインスタンスを作成 + // サンドボックスを作成 sandbox = await daytona.create({ language: "python", }); @@ -117,9 +118,9 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt -## アプリをプレビュー +## アプリをプレビューする \{#preview-your-app\} -次のスニペットは、シンプルな Flask アプリを含むファイルを Daytona のサンドボックスにアップロードします。Web サーバーはポート `3000` で起動し、提供されたプレビューURLからアクセスできます。 +次のスニペットは、シンプルな Flask アプリを含むファイルを Daytona のサンドボックスにアップロードします。Web サーバーはポート `3000` で起動し、提供されたプレビューリンク経由でアクセスできます。 @@ -240,15 +241,15 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt -このエンドポイントにプログラムからアクセスする必要がありますか?[プレビューと認証](/docs/ja/preview-and-authentication)をご覧ください。 +このエンドポイントにプログラムからアクセスしたい場合は、[プレビューと認証](/docs/ja/preview-and-authentication)をご覧ください。 :::tip -ポート `22222` のプレビューURLを表示するか、Dashboard -> Sandboxes に移動して Terminal のアイコンをクリックすると、サンドボックスの[Web Terminal](/docs/ja/web-terminal)にアクセスできます。 +ポート `22222` のプレビューURLを表示するか、Dashboard -> Sandboxes に移動して Terminal のアイコンをクリックすると、サンドボックスの [Web Terminal](/docs/ja/web-terminal) にアクセスできます。 ::: -## LLM に接続する +## LLM に接続する \{#connect-to-an-llm\} -次のスニペットは、Anthropic API を用いて LLM に接続し、Claude に 25 の階乗を求めるコードの生成を依頼し、そのコードを Daytona のサンドボックス(Daytonaが管理する隔離された一時的な実行環境)内で実行します。 +次のスニペットでは、Anthropic API を用いて LLM に接続し、Claude に 25 の階乗を求めるコードの生成を依頼し、そのコードを Daytona のサンドボックス内で実行します。 @@ -284,7 +285,7 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt else: return f"Error {response.status_code}: {response.text}" - prompt = "25 の階乗を返す Python コード。出力はコードのみ。説明なし。前置きなし。コメントなし。単一のコードブロックで生のコードのみ。" + prompt = "25の階乗を返すPythonコード。コードのみを出力。説明不要。前置き不要。コメント不要。単一のコードブロック内の生コードのみ。" result = get_claude_response(os.environ["ANTHROPIC_API_KEY"], prompt) @@ -293,14 +294,14 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt code = code_match.group(1) if code_match else result code = code.replace('\\', '\\\\') - # サンドボックス内で Python コードを実行し、結果を取得 + # サンドボックス内でPythonコードを実行し、出力を取得 response = sandbox.process.code_run(code) - print("The factorial of 25 is", response.result) + print("25の階乗は", response.result) ```` - スニペットを実行する: + スニペットを実行するには: ```bash ANTHROPIC_API_KEY="your-anthropic-api-key" @@ -310,7 +311,7 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt ``` ```bash - > 25 の階乗は 15511210043330985984000000 です + > 25の階乗は15511210043330985984000000です ``` @@ -356,11 +357,11 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt async function main() { const sandbox = await daytona.create() - const prompt = "25 の階乗を返す Python コード。コードのみを出力。説明なし。前置きなし。コメントなし。単一のコードブロックに生のコードのみ。" + const prompt = "25の階乗を返すPythonコード。コードのみを出力。説明不要。前置き不要。コメント不要。単一のコードブロック内に生のコードのみ。" const result = await getClaudeResponse(process.env.ANTHROPIC_API_KEY || "", prompt) - // レスポンスから正規表現でコードを抽出 + // 正規表現を使用してレスポンスからコードを抽出 const codeMatch = result.match(/```python\n(.*?)```/s) let code = codeMatch ? codeMatch[1] : result @@ -368,14 +369,14 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt // 抽出したコードをサンドボックスで実行 const response = await sandbox.process.codeRun(code) - console.log("The factorial of 25 is", response.result) + console.log("25の階乗は", response.result) } main().catch(console.error) ```` - スニペットを実行する: + スニペットを実行する: ```bash ANTHROPIC_API_KEY="your-anthropic-api-key" @@ -385,29 +386,37 @@ Daytona は、Daytona プラットフォームと連携するための公式 Pyt ``` ```bash - > 25の階乗は 15511210043330985984000000 です + > 25の階乗は15511210043330985984000000です ``` -## 追加の例 +## 追加のサンプル \{#additional-examples\} + +Daytona SDK の [Python サンプル](https://github.com/daytonaio/daytona/tree/main/examples/python) または [TypeScript/JavaScript サンプル](https://github.com/daytonaio/daytona/tree/main/examples/typescript)を使ってサンドボックスを作成し、コードを実行します。 + +LLM を活用して Daytona 上での開発を加速しましょう。/llms.txt ファイルをコピーして、プロジェクトまたはチャットのコンテキストに組み込んでください: [llms-full.txt](https://www.daytona.io/docs/llms-full.txt) または [llms.txt](https://www.daytona.io/docs/llms.txt) -Daytona SDK の [Python の例](https://github.com/daytonaio/daytona/tree/main/examples/python) または [TypeScript/JavaScript の例](https://github.com/daytonaio/daytona/tree/main/examples/typescript) を使ってサンドボックス(Daytonaが管理する隔離された一時的な実行環境)を作成し、コードを実行しましょう。 +[GitHub](https://github.com/daytonaio/daytona) 上の Daytona SDK リポジトリを確認して、詳しく学びましょう。 -LLM を活用して Daytona 上での開発を加速できます。/llms.txt ファイルをコピーし、プロジェクトやチャットのコンテキストに含めてください: [llms-full.txt](https://www.daytona.io/docs/llms-full.txt) または [llms.txt](https://www.daytona.io/docs/llms.txt) +## 複数ランタイムのサポート \{#multiple-runtime-support\} -[GitHub](https://github.com/daytonaio/daytona) 上の Daytona SDK リポジトリを参照して、さらに詳しく学びましょう。 +Daytona TypeScript SDK は、Node.js、Deno、Bun、ブラウザ、サーバーレスプラットフォーム(Cloudflare Workers、AWS Lambda、Azure Functions など)を含む複数の JavaScript ランタイムで動作します。 -## ViteプロジェクトでのDaytona +:::note[ブラウザおよびフレームワークの設定] +ブラウザ環境や Vite や Next.js のようなフレームワークで SDK を使用する場合は、Node のポリフィルを設定する必要があります。セットアップ手順は以下のセクションを参照してください。 +::: + +### ViteプロジェクトでのDaytona \{#daytona-in-vite-projects\} -ViteベースのプロジェクトでDaytona SDKを使用する場合、互換性を確保するためにNodeのポリフィルを設定する必要があります。`vite.config.ts` のplugins配列に以下の設定を追加してください: +ViteベースのプロジェクトでDaytona SDKを使用する場合、互換性を確保するためにNodeのポリフィルを設定する必要があります。`vite.config.ts` の plugins 配列に次の設定を追加してください。 ```typescript import { nodePolyfills } from 'vite-plugin-node-polyfills' export default defineConfig({ plugins: [ - // ... other plugins + // ... その他のプラグイン nodePolyfills({ globals: { global: true, process: true, Buffer: true }, overrides: { @@ -415,13 +424,13 @@ export default defineConfig({ }, }), ], - // ... rest of your config + // ... 設定の残りの部分 }) ``` -## Next.js プロジェクトにおける Daytona +### Next.js プロジェクトでの Daytona \{#daytona-in-nextjs-projects\} -Next.js プロジェクトで Daytona SDK を使用する場合、利用中のバンドラーに応じて Webpack や Turbopack との互換性を保つため、Node のポリフィルを設定する必要があります。次の設定を `next.config.ts` に追加してください: +Next.js プロジェクトで Daytona SDK を使用する場合、使用しているバンドラ(Webpack または Turbopack)との互換性を確保するために、Node のポリフィルを設定する必要があります。次の設定を `next.config.ts` ファイルに追加してください。 ```typescript import type { NextConfig } from 'next' @@ -451,9 +460,9 @@ const nextConfig: NextConfig = { export default nextConfig ``` -## Daytona CLI のセットアップ +## Daytona CLI のセットアップ \{#setting-up-the-daytona-cli\} -[ローカルデバイス上のイメージ](/docs/ja/snapshots#using-a-local-image)を使用する場合、またはコマンドラインインターフェースでサンドボックスを管理したい場合は、次のコマンドで Daytona CLI をインストールしてください: +[ローカルデバイス上のイメージ](/docs/ja/snapshots#using-a-local-image)を使用する場合、またはコマンドラインインターフェイスでサンドボックスを管理したい場合は、以下のコマンドを実行して Daytona CLI をインストールしてください。 @@ -467,4 +476,4 @@ export default nextConfig powershell -Command "irm https://get.daytona.io/windows | iex" ``` - + \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/git-operations.mdx b/apps/docs/src/content/docs/ja/git-operations.mdx index f19df58b4..a68576f60 100644 --- a/apps/docs/src/content/docs/ja/git-operations.mdx +++ b/apps/docs/src/content/docs/ja/git-operations.mdx @@ -1,220 +1,227 @@ --- -title: Git操作 +title: Git 操作 --- import { TabItem, Tabs } from '@astrojs/starlight/components' -Daytona SDKは、Sandbox内の`git`モジュールを通じてGitの組み込みサポートを提供します。本ガイドでは、利用可能なすべてのGit操作とベストプラクティスを解説します。 +Daytona SDKは、サンドボックス内の`git`モジュールを通じて、Gitの標準サポートを提供します。本ガイドでは、利用可能なすべてのGit操作とベストプラクティスを解説します。 -## 基本操作 +## 基本操作 \{#basic-operations\} -Daytona SDKは、Sandbox(Daytonaが管理する隔離された一時的な実行環境)内でGitリポジトリのクローン、ステータス確認、管理を行う機能を提供します。`git`モジュールを使ってGitリポジトリを操作できます。 +Daytona SDK では、サンドボックス内の Git リポジトリのクローン、ステータス確認、管理を行えます。`git` モジュールを使用して Git リポジトリを操作できます。 -ファイル操作と同様に、クローンの基準ディレクトリは現在のSandboxユーザーのホームです。例えば、`workspace/repo` は `/home/[username]/workspace/repo` を意味します。先頭を `/` にすることで作業ディレクトリに絶対パスも指定できます。 +ファイル操作と同様に、クローンの開始ディレクトリは現在のサンドボックスの作業ディレクトリです。Dockerfile に WORKDIR が指定されている場合はそれを使用し、指定されていない場合はユーザーのホームディレクトリが使用されます。たとえば `workspace/repo` は `/my-work-dir/workspace/repo` を意味します。なお、パスを `/` で始めれば、絶対パスの workDir を指定することもできます。 -### リポジトリのクローン +### リポジトリのクローン \{#cloning-repositories\} -Daytona SDKは、PythonおよびTypeScriptからSandboxにGitリポジトリをクローンできます。パブリック/プライベートリポジトリ、特定ブランチのクローンに対応し、Personal Access Tokenを用いた認証も可能です。 +Daytona SDK は、Python と TypeScript からサンドボックスへ Git リポジトリをクローンできます。公開・非公開リポジトリ、特定ブランチのクローンに対応し、Personal Access Token による認証も可能です。 - -```python -# Basic clone -sandbox.git.clone( - url="https://github.com/user/repo.git", - path="workspace/repo" -) - -# Clone with authentication - -sandbox.git.clone( - url="https://github.com/user/repo.git", - path="workspace/repo", - username="git", - password="personal_access_token" -) - -# Clone specific branch - -sandbox.git.clone( - url="https://github.com/user/repo.git", - path="workspace/repo", - branch="develop" -) - -``` - - -```typescript -// Basic clone -await sandbox.git.clone( - "https://github.com/user/repo.git", - "workspace/repo" -); - -// Clone with authentication -await sandbox.git.clone( - "https://github.com/user/repo.git", - "workspace/repo", - undefined, - undefined, - "git", - "personal_access_token" -); - -// Clone specific branch -await sandbox.git.clone( - "https://github.com/user/repo.git", - "workspace/repo", - "develop" -); -``` - - + + ```python + # 基本的なクローン + sandbox.git.clone( + url="https://github.com/user/repo.git", + path="workspace/repo" + ) + + # 認証付きクローン + sandbox.git.clone( + url="https://github.com/user/repo.git", + path="workspace/repo", + username="git", + password="personal_access_token" + ) + + # 特定ブランチのクローン + sandbox.git.clone( + url="https://github.com/user/repo.git", + path="workspace/repo", + branch="develop" + ) + ``` + + + + ```typescript + // 基本的なクローン + await sandbox.git.clone( + "https://github.com/user/repo.git", + "workspace/repo" + ); + + // 認証付きクローン + await sandbox.git.clone( + "https://github.com/user/repo.git", + "workspace/repo", + undefined, + undefined, + "git", + "personal_access_token" + ); + + // 特定ブランチのクローン + await sandbox.git.clone( + "https://github.com/user/repo.git", + "workspace/repo", + "develop" + ); + ``` + -### リポジトリのステータス +参照: [clone(Python SDK)](/docs/python-sdk/sync/git/#gitclone)、[clone(TypeScript SDK)](/docs/typescript-sdk/git/#clone) -Daytona SDKは、Sandbox内のGitリポジトリのステータス確認にも対応しています。PythonおよびTypeScriptで、現在のブランチ、変更ファイル、メインブランチに対する先行/遅行コミット数を取得できます。 +### リポジトリの状態 \{#repository-status\} + +Daytona SDK では、サンドボックス内の Git リポジトリの状態を確認できます。Python と TypeScript を用いて、現在のブランチ、変更されたファイル、メインブランチに対して先行/遅延しているコミット数を取得できます。 - -```python -# Get repository status -status = sandbox.git.status("workspace/repo") -print(f"Current branch: {status.current_branch}") -print(f"Commits ahead: {status.ahead}") -print(f"Commits behind: {status.behind}") -for file in status.file_status: - print(f"File: {file.name}") - -# List branches - -response = sandbox.git.branches("workspace/repo") -for branch in response.branches: - print(f"Branch: {branch}") - -``` - - -```typescript -// Get repository status -const status = await sandbox.git.status("workspace/repo"); -console.log(`Current branch: ${status.currentBranch}`); -console.log(`Commits ahead: ${status.ahead}`); -console.log(`Commits behind: ${status.behind}`); -status.fileStatus.forEach(file => { - console.log(`File: ${file.name}`); -}); - -// List branches -const response = await sandbox.git.branches("workspace/repo"); -response.branches.forEach(branch => { - console.log(`Branch: ${branch}`); -}); -``` - - + + ```python + # リポジトリの状態を取得 + status = sandbox.git.status("workspace/repo") + print(f"Current branch: {status.current_branch}") + print(f"Commits ahead: {status.ahead}") + print(f"Commits behind: {status.behind}") + for file in status.file_status: + print(f"File: {file.name}") + + # ブランチの一覧 + response = sandbox.git.branches("workspace/repo") + for branch in response.branches: + print(f"Branch: {branch}") + + ``` + + + + ```typescript + // リポジトリの状態を取得 + const status = await sandbox.git.status("workspace/repo"); + console.log(`Current branch: ${status.currentBranch}`); + console.log(`Commits ahead: ${status.ahead}`); + console.log(`Commits behind: ${status.behind}`); + status.fileStatus.forEach(file => { + console.log(`File: ${file.name}`); + }); + + // ブランチの一覧 + const response = await sandbox.git.branches("workspace/repo"); + response.branches.forEach(branch => { + console.log(`Branch: ${branch}`); + }); + ``` + -## ブランチ操作 +参照: [status (Python SDK)](/docs/python-sdk/sync/git/#gitstatus), [status (TypeScript SDK)](/docs/typescript-sdk/git/#status) + +## ブランチ操作 \{#branch-operations\} -Daytona SDK は、Git リポジトリのブランチ管理機能を提供します。ブランチの作成・切り替え・削除が可能です。 +Daytona SDK では、Git リポジトリのブランチを管理できます。ブランチの作成・切り替え・削除に対応しています。 -### ブランチの管理 +### ブランチの管理 \{#managing-branches\} -Daytona SDK では、Python と TypeScript から Git リポジトリのブランチを作成・切り替え・削除できます。 +Daytona SDK では、Python と TypeScript を使って Git リポジトリのブランチを作成・切り替え・削除できます。 - -```python -# 新しいブランチを作成 -sandbox.git.create_branch("workspace/repo", "feature/new-feature") + + ```python + # 新規ブランチを作成 + sandbox.git.create_branch("workspace/repo", "feature/new-feature") -# ブランチを切り替え -sandbox.git.checkout_branch("workspace/repo", "feature/new-feature") + # ブランチを切り替え + sandbox.git.checkout_branch("workspace/repo", "feature/new-feature") -# ブランチを削除 -sandbox.git.delete_branch("workspace/repo", "feature/old-feature") + # ブランチを削除 + sandbox.git.delete_branch("workspace/repo", "feature/old-feature") -``` - - -```typescript -// 新しいブランチを作成 -await sandbox.git.createBranch("workspace/repo", "feature/new-feature"); + ``` + -// ブランチを切り替え -await sandbox.git.checkoutBranch("workspace/repo", "feature/new-feature"); + + ```typescript + // 新規ブランチを作成 + await sandbox.git.createBranch("workspace/repo", "feature/new-feature"); -// ブランチを削除 -await sandbox.git.deleteBranch("workspace/repo", "feature/old-feature"); -``` + // ブランチを切り替え + await sandbox.git.checkoutBranch("workspace/repo", "feature/new-feature"); - + // ブランチを削除 + await sandbox.git.deleteBranch("workspace/repo", "feature/old-feature"); + ``` + -## ステージングとコミット +参照: [create_branch (Python SDK)](/docs/python-sdk/sync/git/#gitcreate_branch), [checkout_branch (Python SDK)](/docs/python-sdk/sync/git/#gitcheckout_branch), [delete_branch (Python SDK)](/docs/python-sdk/sync/git/#gitdelete_branch), [createBranch (TypeScript SDK)](/docs/typescript-sdk/git/#createbranch), [checkoutBranch (TypeScript SDK)](/docs/typescript-sdk/git/#checkoutbranch), [deleteBranch (TypeScript SDK)](/docs/typescript-sdk/git/#deletebranch) + +## ステージングとコミット \{#staging-and-committing\} -Daytona SDK では、Git リポジトリの変更をステージしてコミットできます。Python と TypeScript から、特定のファイルのみ、またはすべての変更をステージし、メッセージ付きでコミットできます。 +Daytona SDK は、Git リポジトリの変更をステージングしてコミットできる機能を提供します。Python と TypeScript を用いて、特定のファイルまたはすべての変更をステージングし、メッセージを付けてコミットできます。 -### 変更の扱い +### 変更の操作 \{#working-with-changes\} - -```python -# 特定のファイルをステージ -sandbox.git.add("workspace/repo", ["file1.txt", "file2.txt"]) - -# すべての変更をステージ -sandbox.git.add("workspace/repo", ["."]) - -# 変更をコミット -sandbox.git.commit("workspace/repo", "feat: add new feature", "John Doe", "john@example.com") -``` - - -```typescript -// 特定のファイルをステージ -await sandbox.git.add("workspace/repo", ["file1.txt", "file2.txt"]); - -// すべての変更をステージ -await sandbox.git.add("workspace/repo", ["."]); - -// 変更をコミット -await sandbox.git.commit("workspace/repo", "feat: add new feature", "John Doe", "john@example.com"); -``` - - + + ```python + # 特定のファイルをステージする + sandbox.git.add("workspace/repo", ["file1.txt", "file2.txt"]) + + # すべての変更をステージする + sandbox.git.add("workspace/repo", ["."]) + + # 変更をコミットする + sandbox.git.commit("workspace/repo", "feat: add new feature", "John Doe", "john@example.com") + + ``` + + + + ```typescript + // 特定のファイルをステージする + await sandbox.git.add("workspace/repo", ["file1.txt", "file2.txt"]); + + // すべての変更をステージする + await sandbox.git.add("workspace/repo", ["."]); + + // 変更をコミットする + await sandbox.git.commit("workspace/repo", "feat: add new feature", "John Doe", "john@example.com"); + ``` + -## リモート操作 +参照: [add (Python SDK)](/docs/python-sdk/sync/git/#gitadd), [commit (Python SDK)](/docs/python-sdk/sync/git/#gitcommit), [add (TypeScript SDK)](/docs/typescript-sdk/git/#add), [commit (TypeScript SDK)](/docs/typescript-sdk/git/#commit) -Daytona SDK は Git のリモートリポジトリを扱う機能を提供します。変更のプッシュ、変更のプル、リモートの一覧表示が可能です。 +## リモート操作 \{#remote-operations\} -### リモートの操作 +Daytona SDK は、Git のリモートリポジトリを扱うための機能を提供します。 -Daytona SDK は、Python と TypeScript から Git リポジトリに対してプッシュ、プル、リモートの一覧表示を行う機能を提供します。 +### リモートの操作 \{#working-with-remotes\} + +Daytona SDK では、Python と TypeScript を用いて変更の push および pull を実行できます。 - -```python -# 変更をプッシュ -sandbox.git.push("workspace/repo") - -# 変更をプル -sandbox.git.pull("workspace/repo") - -``` - - -```typescript -// 変更をプッシュ -await sandbox.git.push("workspace/repo"); - -// 変更をプル -await sandbox.git.pull("workspace/repo"); -``` - - - \ No newline at end of file + + ```python + # Push changes + sandbox.git.push("workspace/repo") + + # Pull changes + sandbox.git.pull("workspace/repo") + + ``` + + + + ```typescript + // Push changes + await sandbox.git.push("workspace/repo"); + + // Pull changes + await sandbox.git.pull("workspace/repo"); + ``` + + + +参考: [push (Python SDK)](/docs/python-sdk/sync/git/#gitpush), [pull (Python SDK)](/docs/python-sdk/sync/git/#gitpull), [push (TypeScript SDK)](/docs/typescript-sdk/git/#push), [pull (TypeScript SDK)](/docs/typescript-sdk/git/#pull) \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/index.mdx b/apps/docs/src/content/docs/ja/index.mdx index 7c0f4854f..d58df8ce1 100644 --- a/apps/docs/src/content/docs/ja/index.mdx +++ b/apps/docs/src/content/docs/ja/index.mdx @@ -21,16 +21,16 @@ import ExploreMore from '@components/ExploreMore.astro'; Daytona SDK は Daytona と対話するための公式の Python および TypeScript インターフェースを提供し、開発環境をプログラムから管理してコードを実行できます。 -### クイックスタート +### クイックスタート \{#quick-start\} Daytona のサンドボックスで最初のコードを実行しましょう。AI アシスタントとの開発を加速するために、[LLMs のコンテキストファイル](/docs/ja/getting-started#additional-examples)を活用してください。 -#### 1. APIキーを取得する +#### 1. APIキーを取得する \{#1-get-your-api-key\} -- Daytona の[ダッシュボード](https://app.daytona.io/dashboard)に移動します。 -- 新しい[APIキー](https://app.daytona.io/dashboard/keys)を作成します。安全な場所に保存してください。再表示はされません。 +* Daytona の[ダッシュボード](https://app.daytona.io/dashboard)に移動します。 +* 新しい[APIキー](https://app.daytona.io/dashboard/keys)を作成します。安全な場所に保存してください。再表示はされません。 -#### 2. SDK をインストールする +#### 2. SDK をインストールする \{#2-install-the-sdk\} @@ -46,7 +46,7 @@ Daytona のサンドボックスで最初のコードを実行しましょう。 -#### 3. コードを書く +#### 3. コードを書く \{#3-write-your-code\} @@ -110,7 +110,7 @@ Daytona のサンドボックスで最初のコードを実行しましょう。 `your-api-key` は Daytona ダッシュボードで取得した値に置き換えてください。 ::: -#### 4. 実行する +#### 4. 実行する \{#4-run-it\} @@ -126,12 +126,12 @@ Daytona のサンドボックスで最初のコードを実行しましょう。 -#### ✅ 今やったこと +#### ✅ 今やったこと \{#what-you-just-did\} -- Daytona SDK をインストールしました。 -- セキュアなサンドボックス環境を作成しました。 -- そのサンドボックス内でコードをリモート実行しました。 -- 出力をローカルで取得して表示しました。 +* Daytona SDK をインストールしました。 +* セキュアなサンドボックス環境を作成しました。 +* そのサンドボックス内でコードをリモート実行しました。 +* 出力をローカルで取得して表示しました。 これで、Daytona を使ったセキュアで分離されたコード実行を開始できます。 diff --git a/apps/docs/src/content/docs/ja/langchain-data-analysis.mdx b/apps/docs/src/content/docs/ja/langchain-data-analysis.mdx new file mode 100644 index 000000000..f47e8eea6 --- /dev/null +++ b/apps/docs/src/content/docs/ja/langchain-data-analysis.mdx @@ -0,0 +1,749 @@ +--- +title: LangChainのAIエージェントでデータを分析する +description: Daytonaの隔離型サンドボックス環境を用いて、安全にデータ分析を実行するLangChainエージェントを構築します。 +--- + +import { TabItem, Tabs } from '@astrojs/starlight/components' +import { Image } from 'astro:assets' + +import chartImage from '../../../assets/docs/images/langchain-data-analysis-chart.png' + +このパッケージは `DaytonaDataAnalysisTool` を提供します。LangChain のツール統合であり、エージェントがサンドボックス環境で安全に Python によるデータ分析を実行できるようにします。マルチステップのワークフロー、ファイルのアップロード/ダウンロード、カスタム結果処理をサポートしており、LangChain エージェントによるデータ分析タスクの自動化に最適です。 + +このページでは、車両評価データセットを分析する基本例を用いて本ツールの使い方を示します。目的は、製造年ごとの車両価格の変動を分析し、年別の平均価格を示す折れ線グラフを作成することです。 + +*** + +### 1. ワークフロー概要 \{#1-workflow-overview\} + +データセットをアップロードし、実施したい分析内容を記述する自然言語プロンプトを入力します。エージェントはリクエストの意図を解釈し、`DaytonaDataAnalysisTool` をどのように用いてデータセットに対するタスクを実行するかを判断し、Daytona のサンドボックス内で安全に分析を実行します。 + +必要なデータを提供し、求めるインサイトを記述するだけで、あとはエージェントが処理します。 + +### 2. プロジェクトの設定 \{#2-project-setup\} + +#### 2.1 依存関係のインストール \{#21-install-dependencies\} + +:::note[Python Version Requirement] +この例は LangChain 1.0+ の構文を使用するため、**Python 3.10 以上**が必要です。プロジェクトの依存関係を分離するには、仮想環境(例: `venv` や `poetry`)の使用を推奨します。 +::: + +この例で必要なパッケージをインストールします: + + + + ```bash + pip install -U langchain langchain-anthropic langchain-daytona-data-analysis python-dotenv + ``` + + パッケージの内訳: + + * `langchain`: AI エージェントを構築するための LangChain フレームワーク + * `langchain-anthropic`: Claude(Anthropic)API と LangChain を接続するための統合パッケージ + * `langchain-daytona-data-analysis`: LangChain エージェント向けの `DaytonaDataAnalysisTool` を提供 + * `python-dotenv`: `.env` ファイルから環境変数を読み込むためのライブラリ + + + +#### 2.2 環境の設定 \{#22-configure-environment\} + +API キーを取得し、環境を設定します: + +1. **Daytona API キー:** [Daytona Dashboard](https://app.daytona.io/dashboard/keys) から取得 +2. **Anthropic API キー:** [Anthropic Console](https://console.anthropic.com/) から取得 + +プロジェクト内に `.env` ファイルを作成します: + +```bash +DAYTONA_API_KEY=dtn_*** +ANTHROPIC_API_KEY=sk-ant-*** +``` + +### 3. データセットのダウンロード \{#3-download-dataset\} + +一般公開されている車両評価用データセットを使用します。以下のリンクから直接ダウンロードできます: + +[https://download.daytona.io/dataset.csv](https://download.daytona.io/dataset.csv) + +ファイルをダウンロードし、プロジェクトディレクトリに `vehicle-dataset.csv` の名前で保存してください。 + +### 4. 言語モデルを初期化する \{#4-initialize-the-language-model\} + +モデルは LangChain エージェントの推論エンジンであり、意思決定を行い、使用するツールを選択し、結果を解釈します。 + +この例では、コード生成や分析タスクに優れた Anthropic の Claude モデルを使用します。 + +以下のパラメータで Claude モデルを設定します: + + + + ```python + from langchain_anthropic import ChatAnthropic + + model = ChatAnthropic( + model_name="claude-sonnet-4-5-20250929", + temperature=0, + max_tokens_to_sample=1024, + timeout=None, + max_retries=2, + stop=None + ) + ``` + + **パラメータの説明:** + + * `model_name`: 使用する Claude モデルを指定 + * `temperature`: 生成のランダム性の度合いを調整 + * `max_tokens_to_sample`: 1 回の生成で予測するトークン数 + * `max_retries`: Anthropic API リクエストの再試行回数 + + + +:::tip[モデルについてさらに学ぶ] +LangChain のモデル、各プロバイダー、ユースケースに適したモデルの選び方についての詳細は、[LangChain Models のドキュメント](https://docs.langchain.com/oss/python/langchain/models)を参照してください。 +::: + +### 5. 結果ハンドラーを定義する \{#5-define-the-result-handler\} + +エージェントがサンドボックス内で Python コードを実行すると、チャートや出力ログといったアーティファクトが生成されます。これらの結果を処理するためのハンドラー関数を定義できます。 + +この関数は実行アーティファクトからチャートデータを抽出し、PNG ファイルとして保存します: + + + + ```python + import base64 + from daytona import ExecutionArtifacts + + def process_data_analysis_result(result: ExecutionArtifacts): + # Print the standard output from code execution + print("Result stdout", result.stdout) + + result_idx = 0 + for chart in result.charts: + if chart.png: + # Charts are returned in base64 format + # Decode and save them as PNG files + with open(f'chart-{result_idx}.png', 'wb') as f: + f.write(base64.b64decode(chart.png)) + print(f'Chart saved to chart-{result_idx}.png') + result_idx += 1 + ``` + + このハンドラーは実行アーティファクトを次のように処理します: + + * 実行コードの stdout をログ出力 + * アーティファクトからチャートデータを抽出 + * base64 エンコードされた PNG チャートをデコード + * ローカルファイルに保存 + + + +### 6. データ分析ツールを構成する \{#6-configure-the-data-analysis-tool\} + +ここでは `DaytonaDataAnalysisTool` を初期化し、データセットをアップロードします。 + + + + ```python + from langchain_daytona_data_analysis import DaytonaDataAnalysisTool + + # Initialize the tool with our result handler + DataAnalysisTool = DaytonaDataAnalysisTool( + on_result=process_data_analysis_result + ) + + try: + # Upload the dataset with metadata describing its structure + with open("./vehicle-dataset.csv", "rb") as f: + DataAnalysisTool.upload_file( + f, + description=( + "This is a CSV file containing vehicle valuations. " + "Relevant columns:\n" + "- 'year': integer, the manufacturing year of the vehicle\n" + "- 'price_in_euro': float, the listed price of the vehicle in Euros\n" + "Drop rows where 'year' or 'price_in_euro' is missing, non-numeric, or an outlier." + ) + ) + ``` + + **重要なポイント:** + + * `on_result` パラメータでカスタム結果ハンドラーを接続します + * `description` はデータセットの構造に関するコンテキストをエージェントに提供します + * 列の説明は、エージェントがデータの処理方法を理解するのに役立ちます + * データクリーニングの指示により、分析の品質を確保します + + + +### 7. エージェントの作成と実行 \{#7-create-and-run-the-agent\} + +最後に、設定したモデルとツールで LangChain エージェントを作成し、分析リクエストで実行します。 + + + + ```python + from langchain.agents import create_agent + + # モデルとデータ分析ツールでエージェントを作成 + agent = create_agent(model, tools=[DataAnalysisTool], debug=True) + + # 分析リクエストでエージェントを呼び出し + agent_response = agent.invoke({ + "messages": [{ + "role": "user", + "content": "Analyze how vehicles price varies by manufacturing year. Create a line chart showing average price per year." + }] + }) + finally: + # サンドボックスのリソースを解放するため、必ずツールをクローズ + DataAnalysisTool.close() + ``` + + **ここで行われること:** + + 1. エージェントが自然言語のリクエストを受け取る + 2. `DaytonaDataAnalysisTool` を使用する必要があると判断する + 3. データ分析用の Python コードを生成する + 4. コードが Daytona のサンドボックス内で安全に実行される + 5. 結果がハンドラー関数で処理される + 6. グラフがローカルディレクトリに保存される + 7. `finally` ブロックでサンドボックスのリソースがクリーンアップされる + + + +### 8. 分析の実行 \{#8-running-your-analysis\} + +これで、コード全体を実行して結果を確認できます。 + + + + ```bash + python data-analysis.py + ``` + + + +#### エージェントの実行フローを理解する \{#understanding-the-agents-execution-flow\} + +コードを実行すると、エージェントはリクエストを段階的に処理します。内部では次の処理が行われます。 + +**ステップ 1: エージェントがリクエストを受け取り解釈する** + +エージェントは分析リクエストを受理し、解釈します。 + +``` +AIメッセージ:「製造年別の車両価格の変動を分析し、年別の平均価格を示す折れ線グラフを作成します。」 +``` + +**ステップ2:エージェントが Python コードを生成する** + +まず、エージェントはデータセットを探索するための Python コードを生成します。 + +```python +import pandas as pd +import matplotlib.pyplot as plt +import numpy as np + +# データセットを読み込む +df = pd.read_csv('/home/daytona/vehicle-dataset.csv') + +# データセットの基本情報を表示 +print("データセットの形状:", df.shape) +print("\n先頭行:") +print(df.head()) +print("\nカラム名:") +print(df.columns.tolist()) +print("\nデータ型:") +print(df.dtypes) +``` + +**ステップ 3: コードは Daytona のサンドボックスで実行されます** + +このツールはコードを安全なサンドボックスで実行し、結果を返します。 + +``` +標準出力結果 データセット形状: (100000, 15) + +先頭数行: + Unnamed: 0 ... offer_description +0 75721 ... ST-Line Hybrid Adapt.LED+Head-Up-Display Klima +1 80184 ... blue Trend,Viele Extras,Top-Zustand +2 19864 ... 35 e-tron S line/Matrix/Pano/ACC/SONOS/LM 21 +3 76699 ... 2.0 Lifestyle Plus Automatik Navi FAP +4 92991 ... 1.6 T 48V 2WD Spirit LED, WR + +[5 rows x 15 columns] + +カラム名: +['Unnamed: 0', 'brand', 'model', 'color', 'registration_date', 'year', + 'price_in_euro', 'power_kw', 'power_ps', 'transmission_type', 'fuel_type', + 'fuel_consumption_l_100km', 'fuel_consumption_g_km', 'mileage_in_km', + 'offer_description'] + +データ型: +Unnamed: 0 int64 +brand object +model object +color object +registration_date object +year object +price_in_euro object +power_kw object +power_ps object +transmission_type object +fuel_type object +fuel_consumption_l_100km object +fuel_consumption_g_km object +mileage_in_km float64 +offer_description object +dtype: object +``` + +**ステップ 4: エージェントが詳細な分析コードを生成** + +初期のデータセット情報に基づき、エージェントは主要カラムを検証するための、より具体的なコードを生成します。 + +```python +import pandas as pd +import matplotlib.pyplot as plt +import numpy as np + +# データセットを読み込む +df = pd.read_csv('/home/daytona/vehicle-dataset.csv') + +print("データセットの形状:", df.shape) +print("\nカラム名:") +print(df.columns.tolist()) + +# yearカラムとprice_in_euroカラムを確認 +print("\n'year'カラムを確認:") +print(df['year'].describe()) +print("\n'year'の欠損値:", df['year'].isna().sum()) + +print("\n'price_in_euro'カラムを確認:") +print(df['price_in_euro'].describe()) +print("\n'price_in_euro'の欠損値:", df['price_in_euro'].isna().sum()) +``` + +**ステップ5:サンドボックスでの実行結果** + +コードを実行すると、列の統計情報が返されます。 + +``` +実行結果 stdout データセット形状: (100000, 15) + +列名: +['Unnamed: 0', 'brand', 'model', 'color', 'registration_date', 'year', + 'price_in_euro', 'power_kw', 'power_ps', 'transmission_type', 'fuel_type', + 'fuel_consumption_l_100km', 'fuel_consumption_g_km', 'mileage_in_km', + 'offer_description'] + +'year' 列の確認: +count 100000 +unique 49 +top 2019 +freq 12056 +Name: year, dtype: object + +'year' の欠損値: 0 + +'price_in_euro' 列の確認: +count 100000 +unique 11652 +top 19990 +freq 665 +Name: price_in_euro, dtype: object + +'price_in_euro' の欠損値: 0 +``` + +**ステップ6: エージェントが最終的な分析・可視化コードを生成する** + +エージェントがデータ構造を把握したため、データのクレンジング、処理、可視化を含む完全な分析用コードを生成します。 + +```python +import pandas as pd +import matplotlib.pyplot as plt +import numpy as np + +# データセットを読み込む +df = pd.read_csv('/home/daytona/vehicle-dataset.csv') + +print("元のデータセットの形状:", df.shape) + +# データをクリーニング - yearまたはprice_in_euroに欠損値がある行を削除 +df_clean = df.dropna(subset=['year', 'price_in_euro']) +print(f"欠損値削除後: {df_clean.shape}") + +# 数値に変換し、非数値を削除 +df_clean['year'] = pd.to_numeric(df_clean['year'], errors='coerce') +df_clean['price_in_euro'] = pd.to_numeric(df_clean['price_in_euro'], errors='coerce') + +# 変換に失敗した行を削除 +df_clean = df_clean.dropna(subset=['year', 'price_in_euro']) +print(f"非数値削除後: {df_clean.shape}") + +# IQR法を使用してyearとpriceの両方の外れ値を削除 +def remove_outliers(df, column): + Q1 = df[column].quantile(0.25) + Q3 = df[column].quantile(0.75) + IQR = Q3 - Q1 + lower_bound = Q1 - 1.5 * IQR + upper_bound = Q3 + 1.5 * IQR + return df[(df[column] >= lower_bound) & (df[column] <= upper_bound)] + +df_clean = remove_outliers(df_clean, 'year') +print(f"年の外れ値削除後: {df_clean.shape}") + +df_clean = remove_outliers(df_clean, 'price_in_euro') +print(f"価格の外れ値削除後: {df_clean.shape}") + +print("\nクリーニング済みデータの要約:") +print(df_clean[['year', 'price_in_euro']].describe()) + +# 年ごとの平均価格を計算 +avg_price_by_year = df_clean.groupby('year')['price_in_euro'].mean().sort_index() + +print("\n年ごとの平均価格:") +print(avg_price_by_year) + +# 折れ線グラフを作成 +plt.figure(figsize=(14, 7)) +plt.plot(avg_price_by_year.index, avg_price_by_year.values, marker='o', + linewidth=2, markersize=6, color='#2E86AB') +plt.xlabel('製造年', fontsize=12, fontweight='bold') +plt.ylabel('平均価格 (€)', fontsize=12, fontweight='bold') +plt.title('製造年別の平均車両価格', fontsize=14, + fontweight='bold', pad=20) +plt.grid(True, alpha=0.3, linestyle='--') +plt.xticks(rotation=45) + +# y軸を通貨形式で表示 +ax = plt.gca() +ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f'€{x:,.0f}')) + +plt.tight_layout() +plt.show() + +# 追加の統計情報 +print(f"\n分析した車両の総数: {len(df_clean)}") +print(f"年の範囲: {int(df_clean['year'].min())} - {int(df_clean['year'].max())}") +print(f"価格の範囲: €{df_clean['price_in_euro'].min():.2f} - €{df_clean['price_in_euro'].max():.2f}") +print(f"全体の平均価格: €{df_clean['price_in_euro'].mean():.2f}") +``` + +この包括的なコードは、データのクレンジング、外れ値の除去、年次平均の計算を行い、プロフェッショナルな可視化を作成します。 + +**ステップ 7: 最終実行とチャート生成** + +このコードはサンドボックス内で正常に実行され、データを処理して可視化を生成します。 + +``` +結果 stdout 元のデータセット形状: (100000, 15) +欠損値削除後: (100000, 15) +非数値削除後: (99946, 15) +年の外れ値削除後: (96598, 15) +価格の外れ値削除後: (90095, 15) + +クリーニング済みデータの要約: + year price_in_euro +count 90095.000000 90095.000000 +mean 2016.698563 22422.266707 +std 4.457647 12964.727116 +min 2005.000000 150.000000 +25% 2014.000000 12980.000000 +50% 2018.000000 19900.000000 +75% 2020.000000 29500.000000 +max 2023.000000 62090.000000 + +年別平均価格: +year +2005.0 5968.124319 +2006.0 6870.881523 +2007.0 8015.234473 +2008.0 8788.644495 +2009.0 8406.198576 +2010.0 10378.815972 +2011.0 11540.640435 +2012.0 13306.642261 +2013.0 14512.707025 +2014.0 15997.682899 +2015.0 18563.864358 +2016.0 20124.556294 +2017.0 22268.083322 +2018.0 24241.123673 +2019.0 26757.469111 +2020.0 29400.163494 +2021.0 30720.168646 +2022.0 33861.717552 +2023.0 33119.840175 +Name: price_in_euro, dtype: float64 + +分析対象車両総数: 90095 +年の範囲: 2005 - 2023 +価格の範囲: €150.00 - €62090.00 +全体平均価格: €22422.27 + +チャートを chart-0.png に保存しました +``` + +エージェントは分析を正常に完了し、車両価格が2005年(€5,968)から2022年(€33,862)にかけて概ね上昇し、2023年にはわずかに低下したことを示しました。結果ハンドラーは生成されたチャートを取得し、`chart-0.png`として保存しました。 + +プロジェクトディレクトリに、次のようなチャートが表示されるはずです: + +製造年別の車両評価チャート + +### 9. 実装の完成版 \{#9-complete-implementation\} + +以下は、すぐに実行できる完全な例です: + + + + ```python + import base64 + from dotenv import load_dotenv + from langchain.agents import create_agent + from langchain_anthropic import ChatAnthropic + from daytona import ExecutionArtifacts + from langchain_daytona_data_analysis import DaytonaDataAnalysisTool + + load_dotenv() + + model = ChatAnthropic( + model_name="claude-sonnet-4-5-20250929", + temperature=0, + max_tokens_to_sample=1024, + timeout=None, + max_retries=2, + stop=None + ) + + def process_data_analysis_result(result: ExecutionArtifacts): + # Print the standard output from code execution + print("Result stdout", result.stdout) + result_idx = 0 + for chart in result.charts: + if chart.png: + # Save the png to a file + # The png is in base64 format. + with open(f'chart-{result_idx}.png', 'wb') as f: + f.write(base64.b64decode(chart.png)) + print(f'Chart saved to chart-{result_idx}.png') + result_idx += 1 + + def main(): + DataAnalysisTool = DaytonaDataAnalysisTool( + on_result=process_data_analysis_result + ) + + try: + with open("./vehicle-dataset.csv", "rb") as f: + DataAnalysisTool.upload_file( + f, + description=( + "This is a CSV file containing vehicle valuations. " + "Relevant columns:\n" + "- 'year': integer, the manufacturing year of the vehicle\n" + "- 'price_in_euro': float, the listed price of the vehicle in Euros\n" + "Drop rows where 'year' or 'price_in_euro' is missing, non-numeric, or an outlier." + ) + ) + + agent = create_agent(model, tools=[DataAnalysisTool], debug=True) + + agent_response = agent.invoke( + {"messages": [{"role": "user", "content": "Analyze how vehicles price varies by manufacturing year. Create a line chart showing average price per year."}]} + ) + finally: + DataAnalysisTool.close() + + if __name__ == "__main__": + main() + ``` + + + +**このアプローチの主な利点:** + +* **安全な実行:** コードは隔離された Daytona のサンドボックスで実行されます +* **成果物の自動取得:** チャート、テーブル、出力が自動的に抽出されます +* **自然言語インターフェース:** 解析タスクを平易な英語で指示できます +* **フレームワーク統合:** LangChain のエージェントエコシステムとシームレスに連携します + +### 10. API リファレンス \{#10-api-reference\} + +`DaytonaDataAnalysisTool` で利用可能なパブリックメソッドは次のとおりです。 + +#### download_file \{#download_file\} + +```python +def download_file(remote_path: str) -> bytes +``` + +サンドボックス内のリモートパスを指定してファイルをダウンロードします。 + +**引数**: + +* `remote_path` - str: サンドボックス内のファイルパス。 + +**戻り値**: + +* `bytes` - ファイルの内容。 + +**例**: + +```python +# サンドボックスからファイルをダウンロードする +file_bytes = tool.download_file("/home/daytona/results.csv") +``` + +#### upload_file \{#upload_file\} + +```python +def upload_file(file: IO, description: str) -> SandboxUploadedFile +``` + +サンドボックスにファイルをアップロードします。ファイルは `/home/daytona/` に配置されます。 + +**引数**: + +* `file` - IO: アップロードするファイル様オブジェクト。 +* `description` - str: ファイルの目的や内容(含まれるデータの種類)を説明する記述。 + +**戻り値**: + +* [`SandboxUploadedFile`](#sandboxuploadedfile) - アップロードされたファイルに関するメタデータ。 + +**例**: + +小売ビジネスの売上データを分析するケースを考えます。`transaction_id`、`date`、`product`、`quantity`、`revenue` といった列を含む `sales_q3_2025.csv` というCSVファイルがあり、分析の前提となる説明を添えてこのファイルをアップロードします。 + +```python +with open("sales_q3_2025.csv", "rb") as f: + uploaded = tool.upload_file( + f, + "2025年第3四半期の小売販売トランザクションを含むCSVファイル。カラム: transaction_id, date, product, quantity, revenue。" + ) +``` + +#### remove_uploaded_file \{#remove_uploaded_file\} + +```python +def remove_uploaded_file(uploaded_file: SandboxUploadedFile) -> None +``` + +サンドボックスから、アップロード済みのファイルを削除します。 + +**引数**: + +* `uploaded_file` - [`SandboxUploadedFile`](#sandboxuploadedfile): 削除するファイル。 + +**戻り値**: + +* なし + +**例**: + +```python +# アップロードされたファイルを削除 +tool.remove_uploaded_file(uploaded) +``` + +#### get_sandbox \{#get_sandbox\} + +```python +def get_sandbox() -> Sandbox +``` + +現在のサンドボックスインスタンスを取得します。 + +このメソッドは Daytona のサンドボックスインスタンスへアクセスし、サンドボックスのプロパティやメタデータの確認およびサンドボックス関連の各種操作を実行できます。利用可能な属性やメソッドの詳細は、以下の[Sandbox](#sandbox) データ構造のセクションを参照してください。 + +**引数**: + +* なし + +**戻り値**: + +* [`Sandbox`](#sandbox) - サンドボックスインスタンス。 + +**例**: + +```python +sandbox = tool.get_sandbox() +``` + +#### install_python_packages \{#install_python_packages\} + +```python +def install_python_packages(package_names: str | list[str]) -> None +``` + +pip を使用してサンドボックスに 1 つ以上の Python パッケージをインストールします。 + +**引数**: + +* `package_names` - str | list[str]: インストールするパッケージ名(複数可)。 + +**戻り値**: + +* なし + +:::note +サンドボックスにあらかじめインストールされているパッケージの一覧は、[Daytona のデフォルトスナップショットのドキュメント](https://www.daytona.io/docs/en/snapshots/#default-snapshot)で確認できます。 +::: + +**例**: + +```python +# 単一のパッケージをインストールする +tool.install_python_packages("pandas") + +# 複数のパッケージをインストールする +tool.install_python_packages(["numpy", "matplotlib"]) +``` + +#### 閉じる \{#close\} + +```python +def close() -> None +``` + +サンドボックス環境を閉じて削除します。 + +**引数**: + +* なし + +**戻り値**: + +* なし + +:::note +すべてのデータ分析タスクが完了したら、このメソッドを呼び出してリソースを適切にクリーンアップし、不要な利用を避けてください。 +::: + +**例**: + +```python +# サンドボックスを閉じてクリーンアップする +tool.close() +``` + +### 11. データ構造 \{#11-data-structures\} + +#### SandboxUploadedFile \{#sandboxuploadedfile\} + +サンドボックスにアップロードされたファイルのメタデータを表します。 + +* `name`: `str` - サンドボックス内でのアップロードファイル名 +* `remote_path`: `str` - サンドボックス内のファイルの絶対パス +* `description`: `str` - アップロード時に指定された説明 + +#### サンドボックス \{#sandbox\} + +Daytona のサンドボックス・インスタンスを表します。 + +完全な構造と API については、[Daytona Python SDK のサンドボックスドキュメント](https://www.daytona.io/docs/en/python-sdk/sync/sandbox/#sandbox)をご参照ください。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/language-server-protocol.mdx b/apps/docs/src/content/docs/ja/language-server-protocol.mdx index bcd76f564..412de3905 100644 --- a/apps/docs/src/content/docs/ja/language-server-protocol.mdx +++ b/apps/docs/src/content/docs/ja/language-server-protocol.mdx @@ -1,110 +1,93 @@ --- -title: Language Server Protocol +title: LSP (言語サーバープロトコル) --- import { TabItem, Tabs } from '@astrojs/starlight/components' -Daytona(デイトナ)SDKは、サンドボックスインスタンス経由でLSP(Language Server Protocol)をサポートします。これにより、コード補完や診断などの高度な言語機能を利用できます。 +Daytona SDKは、サンドボックスインスタンスを介してLSP (言語サーバープロトコル) をサポートします。これにより、コード補完や診断などの高度な言語機能を利用できます。 -## LSPサーバーの作成 +## LSP サーバーの作成 \{#creating-lsp-servers\} -Daytona(デイトナ)SDKは、PythonおよびTypeScriptでLSPサーバーを作成する機能を提供します。`path_to_project` の基準パスはデフォルトで現在のサンドボックスユーザーのホーム直下です。たとえば `workspace/project` は `/home/[username]/workspace/project` を指します。先頭を `/` にすることで絶対パスも指定できます。 +Daytona SDK では、Python と TypeScript 向けに LSP サーバーを作成できます。先頭に `/` がない場合、`path_to_project` 引数は現在のサンドボックスの作業ディレクトリからの相対パスとして解釈されます。作業ディレクトリは、Dockerfile に WORKDIR が指定されていればその値が使用され、指定がない場合はユーザーのホームディレクトリが使用されます。 - -```python -from daytona import Daytona, LspLanguageId - -# サンドボックスを作成 - -daytona = Daytona() -sandbox = daytona.create() - -# Python用のLSPサーバーを作成 - -lsp_server = sandbox.create_lsp_server( - language_id=LspLanguageId.PYTHON, - path_to_project="workspace/project" -) - -``` - - -```typescript -import { Daytona, LspLanguageId } from '@daytonaio/sdk' - -// サンドボックスを作成 -const daytona = new Daytona() -const sandbox = await daytona.create({ - language: 'typescript' -}) - -// TypeScript用のLSPサーバーを作成 -const lspServer = await sandbox.createLspServer( - LspLanguageId.TYPESCRIPT, - "workspace/project" -) -``` - - + + ```python + from daytona import Daytona, LspLanguageId + + # Create Sandbox + daytona = Daytona() + sandbox = daytona.create() + + # Create LSP server for Python + lsp_server = sandbox.create_lsp_server( + language_id=LspLanguageId.PYTHON, + path_to_project="workspace/project" + ) + + ``` + + + + ```typescript + import { Daytona, LspLanguageId } from '@daytonaio/sdk' + + // Create sandbox + const daytona = new Daytona() + const sandbox = await daytona.create({ + language: 'typescript' + }) + + // Create LSP server for TypeScript + const lspServer = await sandbox.createLspServer( + LspLanguageId.TYPESCRIPT, + "workspace/project" + ) + ``` + -## サポート対象の言語 +参照: [create_lsp_server (Python SDK)](/docs/python-sdk/sync/sandbox#sandboxcreate_lsp_server), [createLspServer (TypeScript SDK)](/docs/typescript-sdk/sandbox#createlspserver) -Daytona SDK では、Python および TypeScript の `LspLanguageId` 列挙体を使用して、各種言語向けの LSP サーバーを作成できます。 +### 対応言語 \{#supported-languages\} - - -```python -from daytona import LspLanguageId - -# 利用可能な言語 ID +Daytona SDK で LSP サーバーを作成する際に対応している言語は、`LspLanguageId` 列挙型で定義されています。 -LspLanguageId.PYTHON -LspLanguageId.TYPESCRIPT +| 列挙値 | 説明 | +|------------------------------|----------------------------------------| +| `LspLanguageId.PYTHON` | Python 用の言語サーバー。 | +| `LspLanguageId.TYPESCRIPT` | TypeScript/JavaScript 用の言語サーバー。 | -``` - - -```typescript -import { LspLanguageId } from '@daytonaio/sdk' +参照: [LspLanguageId(Python SDK)](/docs/python-sdk/sync/lsp-server/#lsplanguageid), [LspLanguageId(TypeScript SDK)](/docs/typescript-sdk/lsp-server/#lsplanguageid) -// 利用可能な言語 ID -LspLanguageId.PYTHON -LspLanguageId.TYPESCRIPT -``` - - - +## LSP 機能 \{#lsp-features\} -- `LspLanguageId.PYTHON`: Python 向け言語サーバー。 -- `LspLanguageId.TYPESCRIPT`: TypeScript/JavaScript 向け言語サーバー。 +Daytona SDK は、コードの解析や編集のための LSP 機能を提供します。 -## LSP 機能 +### コード補完 \{#code-completion\} -Daytona SDK は、コード解析や編集のための各種 LSP 機能を提供します。 - -### コード補完 - -Daytona SDK では、Python と TypeScript を用いて、ファイル内の特定位置のコード補完候補を取得できます。 +Daytona SDK では、Python と TypeScript を用いて、ファイル内の特定の位置に対するコード補完候補を取得できます。 - -```python -completions = lsp_server.completions( - path="workspace/project/main.py", - position={"line": 10, "character": 15} -) -print(f"Completions: {completions}") -``` - - -```typescript -const completions = await lspServer.completions( - "workspace/project/main.ts", - { line: 10, character: 15 } -) -console.log('Completions:', completions) -``` - + + ```python + completions = lsp_server.completions( + path="workspace/project/main.py", + position={"line": 10, "character": 15} + ) + print(f"Completions: {completions}") + ``` + + + + ```typescript + const completions = await lspServer.completions( + "workspace/project/main.ts", + { line: 10, character: 15 } + ) + console.log('Completions:', completions) + ``` + + +参照: [completions(Python SDK)](/docs/python-sdk/sync/lsp-server/#lspservercompletions), [completions(TypeScript SDK)](/docs/typescript-sdk/lsp-server/#completions) \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/limits.mdx b/apps/docs/src/content/docs/ja/limits.mdx index 44b7d4d58..a05aa105e 100644 --- a/apps/docs/src/content/docs/ja/limits.mdx +++ b/apps/docs/src/content/docs/ja/limits.mdx @@ -2,45 +2,44 @@ title: 制限 --- -Daytonaは、すべての組織での公平な利用と安定性を確保するため、リソース制限を適用しています。組織は、次のリソースで構成されるコンピュートプールにアクセスできます: +Daytona は、すべての組織での公平な利用と安定性を確保するため、リソース制限を適用しています。組織は、次のリソースで構成されるコンピュートプールにアクセスできます: -- **vCPU** — 利用可能なCPUコアの総数 -- **Memory** — 利用可能なRAMの総量 -- **Storage** — 利用可能なディスク容量の総量 +* **vCPU** — 利用可能な CPU コア数の合計 +* **Memory** — 利用可能な RAM 容量の合計 +* **Storage** — 利用可能なディスク容量の合計 -これらのリソースはプールされ、稼働中のすべてのサンドボックス間で共有されます。\ -同時に実行できるサンドボックス数は、各サンドボックスが使用するCPU、RAM、ストレージの量によって異なります。リソース使用量の設定や見積もり方法は、[サンドボックス管理のドキュメント](https://www.daytona.io/docs/sandbox-management/)を参照してください。 +リソースは稼働中のすべてのサンドボックスで共有されるため、同時に実行できるサンドボックス数は、各サンドボックスの個別の使用量に依存します。 -## ティアと上限引き上げ +既定値や使用方法の設定については [Sandbox Resources](/docs/ja/sandbox-management/#sandbox-resources) を参照してください。現在の使用状況と制限は [Dashboard](https://app.daytona.io/dashboard/limits) で確認できます。 + +## ティアと上限の引き上げ \{#tiers-limit-increases\} 組織は認証状況に基づいて自動的にティアに割り当てられます。\ 以下の手順を完了すると、より高い上限を利用できるようになります: -| ティア | リソース (vCPU / RAM / Storage) | アクセス要件 | -| ------ | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| ティア 1 | 10 / 10GiB / 30GiB | メール認証済み | -| ティア 2 | 100 / 200GiB / 300GiB | クレジットカード連携、$25 のチャージ、[GitHub 連携](https://www.daytona.io/docs/linked-accounts#how-to-link-an-account)。 | -| ティア 3 | 250 / 500GiB / 2000GiB | 企業メール認証済み、電話番号認証済み、$500 のチャージ。 | -| ティア 4 | 500 / 1000GiB / 5000GiB | 30 日ごとに $2000 のチャージ。 | -| カスタム | カスタム上限 | [support@daytona.io](mailto:support@daytona.io) までご連絡ください | +| ティア | リソース (vCPU / RAM / Storage) | アクセス要件 | +| ------ | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| ティア 1 | 10 / 10GiB / 30GiB | メール認証済み | +| ティア 2 | 100 / 200GiB / 300GiB | クレジットカードのリンク、$25 のチャージ、[GitHub 連携](/docs/ja/linked-accounts#how-to-link-an-account)。 | +| ティア 3 | 250 / 500GiB / 2000GiB | ビジネスメール認証済み、電話認証済み、$500 のチャージ。 | +| ティア 4 | 500 / 1000GiB / 5000GiB | 30 日ごとに $2000 をチャージ。 | +| カスタム | カスタム上限 | [support@daytona.io](mailto:support@daytona.io) までご連絡ください | より高いティアの条件を満たしたら、[Dashboard](https://app.daytona.io/dashboard/limits) の「Upgrade」ボタンをクリックしてアップグレードしてください。 -:::tip - -### 利用状況を動的に管理する - -サンドボックスの状態によるリソースへの影響は次のとおりです: +## 使用状況を動的に管理する \{#manage-usage-dynamically\} -- **Running:** Compute、Memory、Storage を使用します。 -- **Stopped:** Compute と Memory は解放されますが、Storage は引き続き使用します。 -- **Archived:** データをコールドストレージに移し、すべてのリソースを解放します。 -- **Deleted:** 完全に削除され、すべてのリソースが解放されます。 +サンドボックスの[状態を変更](http://localhost:4321/docs/sandbox-management#sandbox-lifecycle)することで、リソース使用を管理できます。以下の表は、各状態がリソース使用にどのように影響するかをまとめたものです。 -::: +| 状態 | vCPU | メモリ | ストレージ | 備考 | +|------------|:-------:|:--------:|:------:|------------------------------------------------------------| +| 実行中 | ✅ | ✅ | ✅ | すべての上限に対してカウントされる | +| 停止中 | ❌ | ❌ | ✅ | CPU とメモリは解放されるが、ストレージは引き続き使用される | +| アーカイブ済み | ❌ | ❌ | ❌ | データはコールドストレージに移動され、クォータには影響しない | +| 削除済み | ❌ | ❌ | ❌ | すべてのリソースが解放される | -現在の使用量と上限は [Dashboard](https://app.daytona.io/dashboard/limits) で確認できます。 +詳細は [Sandbox Management](/docs/ja/sandbox-management/) を参照してください。 -## さらに必要ですか? +## さらに必要ですか? \{#need-more\} -より高い、または特別な上限が必要な場合は、[support@daytona.io](mailto:support@daytona.io) までお問い合わせください。 +より高い、または特別な上限が必要な場合は、[support@daytona.io](mailto:support@daytona.io) までお問い合わせください。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/linked-accounts.mdx b/apps/docs/src/content/docs/ja/linked-accounts.mdx index fe546f9a6..707a08cec 100644 --- a/apps/docs/src/content/docs/ja/linked-accounts.mdx +++ b/apps/docs/src/content/docs/ja/linked-accounts.mdx @@ -1,30 +1,29 @@ --- -title: 連携済みアカウント +title: 連携アカウント --- -Daytona は、さまざまなアイデンティティプロバイダーのユーザーアカウント連携をサポートしています。現時点でサポートされているプロバイダーは次のとおりです: +Daytona は、さまざまなアイデンティティプロバイダーのユーザーアカウント連携をサポートしています。現時点で対応しているプロバイダーは次のとおりです: -- Google -- GitHub +* Google +* GitHub -これにより、Daytona アカウントへのログインに異なるプロバイダーを利用できます。 +連携済みのいずれかのプロバイダーを使用して、Daytona アカウントにログインできます。 :::tip -#### より高い使用上限を解放 +#### さらに高い利用上限を開放 \{#unlock-higher-usage-limits\} -GitHub アカウントの連携は、Tier 2 へ自動アップグレードされるための要件の一つです。 +GitHub アカウントの連携は、Tier 2 への自動アップグレード要件の一つです。 ::: -## アカウントをリンクする方法 +## アカウントのリンク/解除 \{#linkingunlinking-accounts\} -アカウントをリンクするには、Daytona ダッシュボードの[Linked Accounts](https://app.daytona.io/dashboard/user/linked-accounts)ページに移動し、リンクしたいアカウントプロバイダーの「Link Account」ボタンをクリックします。 +アカウントをリンクまたは解除するには: -## アカウントの連携解除方法 +1. Daytona ダッシュボードの [Linked Accounts](https://app.daytona.io/dashboard/user/linked-accounts) ページにアクセスします。 +2. 管理したいプロバイダーの横にある「Link Account」または「Unlink」ボタンをクリックします。 -アカウントの連携を解除するには、Daytona ダッシュボードの [Linked Accounts](https://app.daytona.io/dashboard/user/linked-accounts) ページを開き、連携を解除したいアカウントプロバイダーの「Unlink」ボタンをクリックします。 +## ほかに必要なものはありますか? \{#need-more\} -## さらにサポートが必要ですか? - -他のアイデンティティプロバイダーへの対応が必要な場合は、[support@daytona.io](mailto:support@daytona.io) までご連絡ください。 +他のアイデンティティプロバイダーへの対応が必要な場合は、[support@daytona.io](mailto:support@daytona.io) までご連絡ください。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/log-streaming.mdx b/apps/docs/src/content/docs/ja/log-streaming.mdx index 644c3ff1d..3cc563c56 100644 --- a/apps/docs/src/content/docs/ja/log-streaming.mdx +++ b/apps/docs/src/content/docs/ja/log-streaming.mdx @@ -2,208 +2,207 @@ title: ログストリーミング --- -サンドボックス(隔離された一時的な実行環境)で長時間動作するプロセスを扱う場合、**リアルタイム**でログにアクセスし処理したいことがよくあります。 +サンドボックスで長時間稼働するプロセスを実行する際には、**リアルタイム**でログにアクセスして処理したいことがよくあります。 -Daytona(サンドボックスを作成・管理するプラットフォーム)のSDKは次の両方をサポートします: +Daytona SDK は次の両方をサポートします: -- `Fetching log snapshot` — 指定時点までのすべてのログを取得します。 -- `Log streaming` — プロセスの実行中に生成されるログをストリーミングします。 +* `Fetching log snapshot` — ある時点までのログをまとめて取得します。 +* `Log streaming` — プロセス実行中に生成されるログをリアルタイムで受信します。 -このガイドでは、非同期モードと同期モードの両方でログストリーミングを使用する方法を説明します。 -リアルタイムストリーミングは、**デバッグ**、**モニタリング**、および**可観測性ツール**との統合に特に有用です。 +このガイドでは、非同期モードと同期モードの両方でログストリーミングを利用する方法を説明します。 +リアルタイムストリーミングは、**デバッグ**、**監視**、および**オブザーバビリティツール**との統合に特に有用です。 -## 非同期 +:::note +バージョン `0.27.0` 以降、セッションコマンドのログは **stdout** と **stderr** の2つの独立したストリームで取得できます。 +::: -サンドボックス(隔離された一時的な実行環境)内のプロセスが大規模なシステムの一部で、長時間(あるいは無期限に)稼働する場合でも、 -システムの他の処理を進めながら、ログを**バックグラウンド**で非同期に処理できます。 +## コールバックを用いたログのストリーミング \{#streaming-logs-with-callbacks\} -この方法は次の用途に最適です: +サンドボックス内のプロセスが大規模なシステムの一部で、長時間(または無期限)実行される想定の場合は、 +システムの他の部分を動かし続けながら、**バックグラウンド**でログを非同期処理できます。 -- 継続的な監視 -- 長時間実行ジョブのデバッグ -- ライブログの転送や可視化 +これは次の用途に最適です: + +* 継続的な監視 +* 長時間実行ジョブのデバッグ +* ライブログの転送や可視化 import { TabItem, Tabs } from '@astrojs/starlight/components' - -```python -import asyncio -from daytona import Daytona, SessionExecuteRequest - -async def main(): - daytona = Daytona() - sandbox = daytona.create() + + ```python + import asyncio + from daytona import Daytona, SessionExecuteRequest - try: - session_id = "exec-session-1" - sandbox.process.create_session(session_id) + async def main(): + daytona = Daytona() + sandbox = daytona.create() - command = sandbox.process.execute_session_command( - session_id, - SessionExecuteRequest( - command='for i in {1..10}; do echo "Processing step $i..."; sleep 1; done', - var_async=True, - ), + session_id = "streaming-session" + sandbox.process.create_session(session_id) + + command = sandbox.process.execute_session_command( + session_id, + SessionExecuteRequest( + command='for i in {1..5}; do echo "Step $i"; echo "Error $i" >&2; sleep 1; done', + var_async=True, + ), + ) + + # 個別のコールバックでログをストリーミング + logs_task = asyncio.create_task( + sandbox.process.get_session_command_logs_async( + session_id, + command.cmd_id, + lambda stdout: print(f"[STDOUT]: {stdout}"), + lambda stderr: print(f"[STDERR]: {stderr}"), ) + ) - logs_task = asyncio.create_task( - sandbox.process.get_session_command_logs_async( - session_id, command.cmd_id, lambda chunk: print(f"Log chunk: {chunk}") - ) - ) + print("ログをストリーミングしながら実行を継続します...") + await asyncio.sleep(3) + print("その他の処理が完了しました。") - print("Continuing execution while logs are streaming...") - await asyncio.sleep(1) - print("Other operations completed!") + # ログの完了を待つ + await logs_task - print("At the end wait for any asynchronous task to complete and clean up resources...") - await logs_task - except Exception as e: - print(f"Error: {e}") - finally: - print("Cleaning up sandbox...") - sandbox.delete() + sandbox.delete() + + if __name__ == "__main__": + asyncio.run(main()) -if __name__ == "__main__": - asyncio.run(main()) + ``` + -``` - - ```typescript - import { Daytona, Sandbox } from '@daytonaio/sdk' + ```typescript + import { Daytona, SessionExecuteRequest } from '@daytonaio/sdk' - async function main() { - const daytona = new Daytona() - const sandbox = await daytona.create() - - try { - const sessionId = 'exec-session-async-logs' + async function main() { + const daytona = new Daytona() + const sandbox = await daytona.create() + const sessionId = "exec-session-1" await sandbox.process.createSession(sessionId) - const command = await sandbox.process.executeSessionCommand(sessionId, { - command: 'for i in {1..10}; do echo "Processing step $i..."; sleep 1; done', - async: true, - }) - - const logTask = sandbox.process.getSessionCommandLogs(sessionId, command.cmdId!, (chunk) => { - console.log('Log chunk:', chunk) - }) - - console.log('Continuing execution while logs are streaming...') - sleep(1) - console.log('Other operations completed!') - - console.log('At the end wait for any asynchronous task to complete and clean up resources...') - await logTask - } catch (error) { - console.error('Error:', error) - } finally { - console.log('Cleaning up sandbox...') + const command = await sandbox.process.executeSessionCommand( + sessionId, + { + command: 'for i in {1..5}; do echo "Step $i"; echo "Error $i" >&2; sleep 1; done', + runAsync: true, + }, + ) + + // 個別のコールバックでログをストリーミング + const logsTask = sandbox.process.getSessionCommandLogs( + sessionId, + command.cmdId!, + (stdout) => console.log('[STDOUT]:', stdout), + (stderr) => console.log('[STDERR]:', stderr), + ) + + console.log('ログをストリーミングしながら実行を継続します...') + await new Promise((resolve) => setTimeout(resolve, 3000)) + console.log('その他の処理が完了しました。') + + // ログの完了を待つ + await logsTask + await sandbox.delete() } - } - - main() - ``` + main() + ``` -## 同期実行 +See: [get_session_command_logs_async (Python SDK)](/docs/python-sdk/sync/process/#processget_session_command_logs_async), [getSessionCommandLogs (TypeScript SDK)](/docs/typescript-sdk/process/#getsessioncommandlogs) -コマンドの実行時間が予測できる場合、またはバックグラウンドで動かす必要がない場合は、 -ログストリームを同期的に処理できます。たとえば、ログをファイルやその他のストレージに書き出せます。 +## 既存のログをすべて取得する \{#retrieve-all-existing-logs\} + +コマンドの実行時間が予測できる場合、あるいはバックグラウンド実行は不要だが +定期的に既存のログをまとめて確認したい場合は、次の例で現時点までのログを取得できます。 - ```python - import asyncio - import os - from daytona import Daytona, SessionExecuteRequest - - async def main(): - daytona = Daytona() - sandbox = daytona.create() + ```python + import time + from daytona import Daytona, SessionExecuteRequest - try: - session_id = "exec-session-1" - sandbox.process.create_session(session_id) - - command = sandbox.process.execute_session_command( - session_id, - SessionExecuteRequest( - command='counter=1; while (( counter <= 5 )); do echo "Count: $counter"; ((counter++)); sleep 2; done', - var_async=True, - ), - ) - - log_file_path = f"./logs/logs-session_{session_id}-command_{command.cmd_id}.log" - os.makedirs(os.path.dirname(log_file_path), exist_ok=True) - - with open(log_file_path, "w") as log_file: - def handle_chunk(chunk: str): - # nullバイトを削除 - clean_chunk = chunk.replace("\x00", "") - # ファイルに書き込む - log_file.write(clean_chunk) - log_file.flush() - - await sandbox.process.get_session_command_logs_async( - session_id, command.cmd_id, handle_chunk - ) - except Exception as e: - print(f"Error: {e}") - finally: - print("Cleaning up sandbox...") - sandbox.delete() - - if __name__ == "__main__": - asyncio.run(main()) - - ``` + daytona = Daytona() + sandbox = daytona.create() + session_id = "exec-session-1" + sandbox.process.create_session(session_id) + + # ブロッキングなコマンドを実行して結果を待つ + command = sandbox.process.execute_session_command( + session_id, SessionExecuteRequest(command="echo 'Hello from stdout' && echo 'Hello from stderr' >&2") + ) + print(f"[STDOUT]: {command.stdout}") + print(f"[STDERR]: {command.stderr}") + print(f"[OUTPUT]: {command.output}") + + # もしくはコマンドをバックグラウンドで実行し、後からログを取得する + command = sandbox.process.execute_session_command( + session_id, + SessionExecuteRequest( + command='while true; do if (( RANDOM % 2 )); then echo "All good at $(date)"; else echo "Oops, an error at $(date)" >&2; fi; sleep 1; done', + run_async=True + ) + ) + time.sleep(5) + # 現時点までのログを取得 + logs = sandbox.process.get_session_command_logs(session_id, command.cmd_id) + print(f"[STDOUT]: {logs.stdout}") + print(f"[STDERR]: {logs.stderr}") + print(f"[OUTPUT]: {logs.output}") + + sandbox.delete() + ``` - - ```typescript - import { Daytona, Sandbox } from '@daytonaio/sdk' - async function main() { - const daytona = new Daytona() - const sandbox = await daytona.create() + + ```typescript + import { Daytona, SessionExecuteRequest } from '@daytonaio/sdk' - try { - const sessionId = 'exec-session-async-logs' + async function main() { + const daytona = new Daytona() + const sandbox = await daytona.create() + const sessionId = "exec-session-1" await sandbox.process.createSession(sessionId) - const command = await sandbox.process.executeSessionCommand(sessionId, { - command: 'counter=1; while (( counter <= 5 )); do echo "Count: $counter"; ((counter++)); sleep 2; done', - async: true, - }) - - const logFilePath = `./logs/logs-session-${sessionId}-command-${command.cmdId}.log` - const logsDir = path.dirname(logFilePath) - if (!fs.existsSync(logsDir)) { - fs.mkdirSync(logsDir, { recursive: true }) - } - - const stream = fs.createWriteStream(logFilePath) - await sandbox.process.getSessionCommandLogs(sessionId, command.cmdId!, (chunk) => { - const cleanChunk = chunk.replace(/\x00/g, '') - stream.write(cleanChunk) - }) - stream.end() - await logTask - } catch (error) { - console.error('Error:', error) - } finally { - console.log('Cleaning up sandbox...') + // ブロッキングなコマンドを実行して結果を待つ + const command = await sandbox.process.executeSessionCommand( + sessionId, + { + command: 'echo "Hello from stdout" && echo "Hello from stderr" >&2', + }, + ) + console.log(`[STDOUT]: ${command.stdout}`) + console.log(`[STDERR]: ${command.stderr}`) + console.log(`[OUTPUT]: ${command.output}`) + + // もしくはコマンドをバックグラウンドで実行し、後からログを取得する + const command2 = await sandbox.process.executeSessionCommand( + sessionId, + { + command: 'while true; do if (( RANDOM % 2 )); then echo "All good at $(date)"; else echo "Oops, an error at $(date)" >&2; fi; sleep 1; done', + runAsync: true, + }, + ) + await new Promise((resolve) => setTimeout(resolve, 5000)) + // 現時点までのログを取得 + const logs = await sandbox.process.getSessionCommandLogs(sessionId, command2.cmdId!) + console.log(`[STDOUT]: ${logs.stdout}`) + console.log(`[STDERR]: ${logs.stderr}`) + console.log(`[OUTPUT]: ${logs.output}`) + await sandbox.delete() } - } - - main() - ``` + main() + ``` + +参照: [get_session_command_logs_async (Python SDK)](/docs/python-sdk/sync/process/#processget_session_command_logs_async)、[getSessionCommandLogs (TypeScript SDK)](/docs/typescript-sdk/process/#getsessioncommandlogs) \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/mcp.mdx b/apps/docs/src/content/docs/ja/mcp.mdx index db5135708..73008b195 100644 --- a/apps/docs/src/content/docs/ja/mcp.mdx +++ b/apps/docs/src/content/docs/ja/mcp.mdx @@ -1,66 +1,66 @@ --- -title: Daytona MCPサーバー +title: Daytona MCP サーバ --- import { TabItem, Tabs } from '@astrojs/starlight/components' -Daytona Model Context Protocol (MCP) サーバーは、AIエージェントがDaytonaの機能にプログラムからアクセスし、操作できるようにします。本ガイドでは、各種AIエージェントでMCPサーバーをセットアップして利用する方法を解説します。 +Daytona Model Context Protocol(MCP)サーバーは、AIエージェントがDaytonaの機能にプログラムからアクセスして操作できるようにします。本ガイドでは、各種AIエージェントでMCPサーバーをセットアップし、利用する方法を解説します。 -## 前提条件 +## 前提条件 \{#prerequisites\} 開始する前に、以下を用意してください: -- Daytona アカウント -- Daytona CLI がインストールされていること -- 互換性のある AI エージェント(Claude Desktop App、Claude Code、Cursor、または Windsurf) +* Daytona アカウント +* Daytona CLI のインストール +* 互換性のある AI エージェント(Claude Desktop App、Claude Code、Cursor、または Windsurf) -## インストールとセットアップ +## インストールと設定 \{#installation-and-setup\} -### 1. Daytona CLI のインストール +### 1. Daytona CLI をインストールする \{#1-install-daytona-cli\} - -```bash -brew install daytonaio/cli/daytona -``` - - - -```bash -powershell -Command "irm https://get.daytona.io/windows | iex" -``` - + + ```bash + brew install daytonaio/cli/daytona + ``` + + + + ```bash + powershell -Command "irm https://get.daytona.io/windows | iex" + ``` + -### 2. Daytona に認証する +### 2. Daytona に認証する \{#2-authenticate-with-daytona\} ```bash daytona login ``` -### 3. MCPサーバーを初期化 +### 3. MCP サーバーの初期化 \{#3-initialize-mcp-server\} -使用するAIエージェントで Daytona の MCPサーバーを初期化します: +任意の AI エージェントを使って、Daytona の MCP サーバーを初期化します。 ```bash daytona mcp init [claude/cursor/windsurf] ``` -### 4. AIエージェントを起動 +### 4. AIエージェントを開く \{#4-open-your-ai-agent\} -初期化後、AIエージェントのアプリケーションを起動して、Daytona の機能の利用を開始します。 +初期化後、AIエージェントのアプリケーションを開き、Daytonaの機能の利用を開始します。 -## 他のAIエージェントとの統合 +## 他の AI エージェントとの統合 \{#integration-with-other-ai-agents\} -Daytona MCP を他のAIエージェントと統合するには、次の手順に従ってください。 +Daytona MCP を他の AI エージェントと統合するには、次の手順に従ってください。 -1. MCP の設定を生成します: +1. MCP の構成を生成します: ```bash daytona mcp config ``` -このコマンドは、エージェントの設定にコピーできる JSON 設定を出力します: +このコマンドは、エージェントの設定にコピーできる JSON 設定を出力します。 ```json { @@ -79,7 +79,7 @@ daytona mcp config ``` :::note -Windows ユーザーは、`env` フィールドに次を追加してください: +Windows をお使いの場合は、`env` フィールドに次を追加してください: ```json "APPDATA": "${APPDATA}" @@ -87,130 +87,156 @@ Windows ユーザーは、`env` フィールドに次を追加してください ::: -2. 設定を反映するため、AI エージェントを開き直すか再起動します。 - -## 利用可能なツール - -### サンドボックス管理 - -- **サンドボックスの作成** - - - 新しい Daytona サンドボックスを作成します - - パラメータ: - - `target` (default: "us"): ターゲット (リージョン) - - `snapshot`: サンドボックス用のスナップショット (任意) - - `auto_stop_interval` (default: "15"): 自動停止までの分数 (0 で無効) - - `auto_archive_interval` (default: "10080"): 自動アーカイブまでの分数 (0 の場合は最大間隔が適用) - -- **サンドボックスの破棄** - - 既存の Daytona サンドボックスを削除します - -### ファイル操作 - -- **ファイルのダウンロード** - - - Daytona サンドボックスからファイルをダウンロードします - - コンテンツをテキストまたは base64 エンコード画像として返します - - パラメータ: - - `file_path`: ファイルパス - -- **ファイルのアップロード** - - - Daytona サンドボックスにファイルをアップロードします - - テキストまたは base64 エンコードのバイナリをサポート - - 必要な親ディレクトリを自動作成 - - 適切な権限でセッション中はファイルを保持 - - 上書き制御をサポートし、元のファイル形式を維持 - - パラメータ: - - `file_path`: アップロードするファイルのパス - - `content`: アップロードするファイルの内容 - - `encoding`: アップロードするファイルのエンコーディング - - `overwrite`: 既存の場合に上書きするか - -- **フォルダーの作成** - - - サンドボックスに新しいディレクトリを作成します - - パラメータ: - - `folder_path`: 作成するパス - - `mode`: ディレクトリのパーミッション (default: 0755) - -- **ファイル情報の取得** - - - ファイル情報を取得します - - パラメータ: - - `file_path`: ファイルパス - -- **ファイル一覧** - - - ディレクトリの内容を一覧表示します - - パラメータ: - - `path`: ディレクトリパス (デフォルトはカレントディレクトリ) - -- **ファイルの移動** - - - ファイルを移動またはリネームします - - パラメータ: - - `source_path`: ソースの場所 - - `dest_path`: 移動先の場所 - -- **ファイルの削除** - - ファイルまたはディレクトリを削除します - - パラメータ: - - `file_path`: 削除対象のパス - -### プレビュー - -- **プレビューリンク** - - Web アプリケーション向けにアクセス可能なプレビュー URL を生成します - - ローカルポートを外部に公開するための安全なトンネルを作成 - - 指定ポートのサーバー稼働状況を検証 - - トラブルシューティング用の診断情報を提供 - - サービス整理のためのカスタム説明とメタデータをサポート - - パラメータ: - - `port`: 公開するポート - - `description`: サービスの説明 - - `check_server`: ポートでサーバーが稼働中かを確認 - -### Git 操作 - -- **Git Clone** - - Git リポジトリをクローンします - - パラメータ: - - `url`: リポジトリの URL - - `path`: ターゲットディレクトリ (デフォルトはカレント) - - `branch`: クローンするブランチ - - `commit_id`: クローンする特定のコミット - - `username`: Git ユーザー名 - - `password`: Git パスワード - -### コマンド実行 - -- **コマンドの実行** - - Daytona 環境でシェルコマンドを実行します - - stdout、stderr、終了コードを返します - - コマンドはサンドボックスユーザー権限で実行されます - - パラメータ: - - `command`: 実行するコマンド - -## トラブルシューティング - -一般的な問題と解決策: - -- **認証の問題** - - - 資格情報を更新するために `daytona login` を実行する - -- **接続エラー** +2. 設定を反映するために、AIエージェントを開くか、再起動します。 + +## 使用可能なツール \{#available-tools\} + +### サンドボックス管理 \{#sandbox-management\} + +* **サンドボックスの作成** + + * 新しい Daytona サンドボックスを作成します + * パラメータ: + * `name`: サンドボックス名(任意) + * `target`: 対象リージョン(任意) + * `snapshot`: サンドボックス用のスナップショット(任意) + * `auto_stop_interval`(既定値: "15"): 自動停止までの分数(0 は無効) + * `auto_archive_interval`(既定値: "10080"): 自動アーカイブまでの分数(0 は最大間隔を使用) + * `auto_delete_interval`(既定値: "-1"): 自動削除までの分数(負の値は無効、0 は停止時に即時削除) + * `volumes`: サンドボックスにアタッチするボリューム(任意) + * `network_block_all`: サンドボックスのネットワークアクセスをすべて遮断するか(任意) + * `network_allow_list`: サンドボックスで許可する CIDR ネットワークアドレスのカンマ区切りリスト(任意) + * `public`: サンドボックスの HTTP プレビューを公開アクセス可能にするか(任意) + * `cpu`: サンドボックスに割り当てる CPU コア数(任意) + * `gpu`: サンドボックスに割り当てる GPU ユニット数(任意) + * `memory`: サンドボックスに割り当てるメモリ(GB)(任意) + * `disk`: サンドボックスに割り当てるディスク容量(GB)(任意) + * `user`: サンドボックスに関連付けるユーザー(任意) + * `build_info`: サンドボックスのビルド情報(任意) + * `env`: サンドボックスの環境変数(任意) + * `labels`: サンドボックスのラベル(任意) + +* **サンドボックスの破棄** + * 既存の Daytona サンドボックスを削除します + * パラメータ: + * `id`: 破棄するサンドボックスの ID + +### ファイル操作 \{#file-operations\} + +* **ファイルのダウンロード** + + * Daytona のサンドボックスからファイルをダウンロードします + * コンテンツをテキストまたは base64 エンコード画像として返します + * パラメータ: + * `id`: ダウンロード元のサンドボックス ID + * `file_path`: ファイルパス + +* **ファイルのアップロード** + + * Daytona のサンドボックスにファイルをアップロードします + * テキストまたは base64 エンコードのバイナリコンテンツに対応 + * 必要な親ディレクトリを自動作成 + * セッション中は適切な権限でファイルが保持されます + * 上書きの可否を制御でき、元のファイル形式を保持します + * パラメータ: + * `id`: アップロード先のサンドボックス ID + * `file_path`: アップロードするファイルのパス + * `content`: アップロードするファイルの内容 + * `encoding`: アップロードするファイルのエンコーディング + * `overwrite`: 既存の場合に上書きするか + +* **フォルダーの作成** + + * サンドボックス内に新規ディレクトリを作成します + * パラメータ: + * `id`: フォルダーを作成するサンドボックス ID + * `folder_path`: 作成するパス + * `mode`: ディレクトリのパーミッション(デフォルト: 0755) + +* **ファイル情報の取得** + + * ファイル情報を取得します + * パラメータ: + * `id`: 情報を取得するサンドボックス ID + * `file_path`: ファイルパス + +* **ファイル一覧** + + * ディレクトリの内容を一覧表示します + * パラメータ: + * `id`: 一覧を取得するサンドボックス ID + * `path`: ディレクトリパス(デフォルト: カレントディレクトリ) + +* **ファイルの移動** + + * ファイルを移動またはリネームします + * パラメータ: + * `id`: ファイルを移動するサンドボックス ID + * `source_path`: 移動元パス + * `dest_path`: 移動先パス + +* **ファイルの削除** + * ファイルまたはディレクトリを削除します + * パラメータ: + * `id`: 削除を行うサンドボックス ID + * `file_path`: 削除するパス + +### プレビュー \{#preview\} + +* **プレビューリンク** + * Webアプリケーション向けのアクセス可能なプレビューURLを生成します + * ローカルポートを外部公開するための安全なトンネルを作成します + * 指定したポートでのサーバー稼働状況を検証します + * トラブルシューティング用の診断情報を提供します + * サービスの整理に役立つカスタムの説明とメタデータをサポートします + * パラメータ: + * `id`: プレビューリンクを発行するサンドボックスのID + * `port`: 公開するポート + * `description`: サービスの説明 + * `check_server`: ポートでサーバーが稼働中かを確認 + +### Git 操作 \{#git-operations\} + +* **Git Clone** + * Git リポジトリをクローンします + * パラメータ: + * `id`: リポジトリをクローンするサンドボックスのID + * `url`: リポジトリのURL + * `path`: 対象ディレクトリ(既定ではカレント) + * `branch`: クローンするブランチ + * `commit_id`: クローンするコミットID + * `username`: Gitのユーザー名 + * `password`: Gitのパスワード + +### コマンド実行 \{#command-execution\} + +* **コマンドの実行** + * Daytona 環境でシェルコマンドを実行します + * stdout、stderr、および終了コードを返します + * コマンドはサンドボックスのユーザー権限で実行されます + * パラメータ: + * `id`: コマンドを実行するサンドボックスのID + * `command`: 実行するコマンド - - MCPサーバーの構成を確認する - - サーバーのステータスを確認する +## トラブルシューティング \{#troubleshooting\} -- **サンドボックスのエラー** - - `daytona sandbox list` を使用してサンドボックスのステータスを確認する +よくある問題と解決策: -## サポート +* **認証に関する問題** + + * 資格情報を更新するには `daytona login` を実行します + +* **接続エラー** + + * MCP サーバーの設定を確認します + * サーバーのステータスを確認します -サポートが必要な場合は、次をご利用ください: +* **サンドボックスのエラー** + * サンドボックスのステータスを確認するには `daytona sandbox list` を使用します + +## サポート \{#support\} + +追加のサポートが必要な場合は、次をご参照ください。 -- [daytona.io](https://daytona.io) をご覧ください -- support@daytona.io までお問い合わせください +* [daytona.io](https://daytona.io) をご覧ください +* support@daytona.io までお問い合わせください \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/network-limits.mdx b/apps/docs/src/content/docs/ja/network-limits.mdx new file mode 100644 index 000000000..38c9635b2 --- /dev/null +++ b/apps/docs/src/content/docs/ja/network-limits.mdx @@ -0,0 +1,156 @@ +--- +title: ネットワーク制限(Firewall) +--- + +import { TabItem, Tabs } from '@astrojs/starlight/components' + +Daytona は、サンドボックスのインターネットアクセスを制御するためのネットワーク送信(egress)制限を提供します。この機能は、組織の課金ティアに応じて自動適用することも、特定のサンドボックスごとに手動で設定することもできます。 + +## ティアベースのネットワーク制限 \{#tier-based-network-restrictions\} + +ネットワーク制限は、組織の課金ティアに基づいてサンドボックスに自動適用されます。これにより、開発環境に対して安全で管理されたインターネットアクセスが提供されます。 + +* **ティア 1・ティア 2**: ネットワークアクセスは制限され、サンドボックス単位での上書きはできません +* **ティア 3・ティア 4**: 既定でフルのインターネットアクセスが有効で、カスタムのネットワーク設定を構成できます + +:::note +**ティア 1・2**: 組織レベルのネットワーク制限がサンドボックスレベルの設定より優先されます。サンドボックス作成時に `networkAllowList` を指定しても、組織のネットワーク制限は引き続き適用されます。 +::: + +組織のティアと制限の詳細は、[制限に関するドキュメント](/docs/limits/)を参照してください。 + +## ネットワークアクセスの管理 \{#managing-network-access\} + +### ネットワーク制限付きでサンドボックスを作成する \{#creating-sandboxes-with-network-restrictions\} + +`networkAllowList` と `networkBlockAll` パラメータを使用して、サンドボックス作成時のネットワークアクセスを制御できます。 + + + + ```python + from daytona import CreateSandboxFromSnapshotParams, Daytona + + daytona = Daytona() + + # 特定の IP アドレスへのアクセスを許可(Wikipedia、X/Twitter、プライベートネットワーク) + sandbox = daytona.create(CreateSandboxFromSnapshotParams( + network_allow_list='208.80.154.232/32,199.16.156.103/32,192.168.1.0/24' + )) + + # または、すべてのネットワークアクセスをブロック + sandbox = daytona.create(CreateSandboxFromSnapshotParams( + network_block_all=True + )) + ``` + + + + ```typescript + import { Daytona } from '@daytonaio/sdk' + + const daytona = new Daytona() + + // 特定の IP アドレスへのアクセスを許可(Wikipedia、X/Twitter、プライベートネットワーク) + const sandbox = await daytona.create({ + networkAllowList: '208.80.154.232/32,199.16.156.103/32,192.168.1.0/24' + }) + + // または、すべてのネットワークアクセスをブロック + const sandbox = await daytona.create({ + networkBlockAll: true + }) + ``` + + + +:::note +`networkBlockAll` と `networkAllowList` の両方が指定された場合は、`networkBlockAll` が優先され、許可リストは無視されてすべてのネットワークアクセスがブロックされます。 +::: + +### ネットワーク許可リストの形式 \{#network-allow-list-format\} + +`networkAllowList` には、カンマ区切りで最大5つのCIDRネットワークブロックを指定できます: + +* **単一IP**: `208.80.154.232/32`(Wikipedia) +* **サブネット**: `192.168.1.0/24`(プライベートネットワーク) +* **複数ネットワーク**: `208.80.154.232/32,199.16.156.103/32,10.0.0.0/8` + +:::note +**Essential Services**: 開発に不可欠なサービス(パッケージレジストリ、コンテナレジストリ、Gitリポジトリ、CDNサービス、プラットフォームサービス、システムパッケージマネージャー等)は、すべてのティアでアクセス可能です。\ +これらの必須開発サービスで問題が発生した場合は、すべてのティアで利用可能であるべきため、[support@daytona.io](mailto:support@daytona.io) までご連絡ください。 + +許可対象サービスの完全な一覧は、以下の [Essential Services](#essential-services) を参照してください。 +::: + +## 組織の構成 \{#organization-configuration\} + +組織のネットワークアクセスポリシーは、組織の制限ティアに応じて自動的に設定され、組織の管理者が変更することはできません。これらのポリシーは、組織内のすべてのサンドボックスにおけるデフォルトのネットワーク動作を決定します。 + +## ネットワークアクセスのテスト \{#testing-network-access\} + +サンドボックスからのネットワーク接続をテストするには: + +```bash +# 許可されたアドレスへの HTTP 接続をテスト +curl -I https://208.80.154.232 + +# パッケージマネージャーへのアクセスをテスト(全ティアで許可) +apt update # Ubuntu/Debian の場合 +npm ping # Node.js の場合 +pip install --dry-run requests # Python の場合 +``` + +## セキュリティ上の利点 \{#security-benefits\} + +ネットワーク制限には次のようなセキュリティ上のメリットがあります: + +* サンドボックスからの**データ流出を防止**します +* 外部接続を制限することで**攻撃対象領域を縮小**します +* 開発環境に関する**セキュリティポリシーに準拠**できます +* ネットワークアクセスを**きめ細かく制御**できます + +:::caution +信頼されていないコードを実行する場合、無制限のネットワークアクセスを有効化するとセキュリティリスクが生じる可能性があります。`networkAllowList` を使用して特定のネットワークアドレスのみを許可するか、`networkBlockAll` を使用してすべてのネットワークアクセスをブロックすることを推奨します。 + +重要な開発作業を開始する前にネットワーク接続性をテストし、多数の外部サービスへのアクセスが必要な場合はティアのアップグレードを検討してください。 +::: + +## 重要サービス \{#essential-services\} + +以下のサービスは許可リストに登録され、すべてのティアでアクセス可能です: + +* パッケージレジストリ: + * npm: `registry.npmjs.org`, `registry.npmjs.com`, `nodejs.org`, `nodesource.com`, `npm.pkg.github.com` + * yarn: `classic.yarnpkg.com`, `registry.yarnpkg.com`, `repo.yarnpkg.com`, `releases.yarnpkg.com`, `yarn.npmjs.org`, `yarnpkg.netlify.com`, `dl.yarnpkg.com`, `yarnpkg.com` + * PyPI: `pypi.org`, `pypi.python.org`, `files.pythonhosted.org`, `bootstrap.pypa.io` + * Maven: `repo1.maven.org`, `repo.maven.apache.org` +* コンテナレジストリ: + * Docker: `download.docker.com`, `registry-1.docker.io`, `registry.docker.io`, `auth.docker.io`, `index.docker.io`, `hub.docker.com`, `docker.io` + * Google: `gcr.io`, `asia.gcr.io`, `eu.gcr.io`, `us.gcr.io`, `marketplace.gcr.io`, `registry.cloud.google.com` + * Microsoft: `mcr.microsoft.com` + * Quay: `quay.io`, `quay-registry.s3.amazonaws.com` + * Kubernetes: `registry.k8s.io` +* Git リポジトリ: + * GitHub: `github.com`, `api.github.com`, `raw.githubusercontent.com`, `github-releases.githubusercontent.com`, `codeload.github.com`, `ghcr.io`, `packages.github.com` + * GitLab: `gitlab.com`, `registry.gitlab.com` + * Bitbucket: `bitbucket.org` +* システムパッケージマネージャ: + * Ubuntu: `archive.ubuntu.com`, `security.ubuntu.com` + * Debian: `deb.debian.org`, `security.debian.org`, `cdn-fastly.deb.debian.org`, `ftp.debian.org` +* CDN サービス: + * Cloudflare: `cloudflare.com` + * Fastly: `fastly.com` + * JavaScript CDN: `unpkg.com`, `jsdelivr.net` +* AI/ML サービス: + * Anthropic: `api.anthropic.com` +* プラットフォームサービス: + * Daytona: `app.daytona.io` + +## サポートを受ける \{#getting-help\} + +ネットワークアクセスに問題がある、または制限のないネットワークアクセスが必要な場合 + +1. [Dashboard](https://app.daytona.io/dashboard/limits) で**組織のティア**を確認する +2. 必要な認証手続きを完了して**組織のティア**をアップグレードし、より高い制限ティアを自動的に有効化する +3. **ネットワーク許可リスト**の設定を確認する +4. 支援が必要な場合は [support@daytona.io](mailto:support@daytona.io) までお問い合わせください \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/organizations.mdx b/apps/docs/src/content/docs/ja/organizations.mdx index 39c53ce2a..adcd5c499 100644 --- a/apps/docs/src/content/docs/ja/organizations.mdx +++ b/apps/docs/src/content/docs/ja/organizations.mdx @@ -1,67 +1,76 @@ --- -title: Organizations +title: 組織 --- import { TabItem, Tabs } from '@astrojs/starlight/components' -Daytona(サンドボックスの作成・管理を行うプラットフォーム)における組織(Daytona内のリソース・ユーザーのグループ化、役割・課金・制限の管理)は、リソースをまとめ、共同作業を可能にするための単位です。ユーザーは個人の組織(Personal Organization)で単独作業することも、共同組織(Collaborative Organization)で協働することもできます。 +Daytona の組織は、リソースをまとめ、協働を可能にするための単位です。ユーザーは、個人用のパーソナル組織で単独で作業することも、コラボレーティブ組織で共同作業することもできます。 -### 個人組織と共同組織の違い +### 個人用組織 と 共同作業用組織 の違い \{#personal-vs-collaborative-organizations\} -すべてのDaytonaユーザーは、単独利用や検証に最適な**個人組織(Personal Organization)**から始まります。**共同組織(Collaborative Organization)**はユーザーが手動で作成し、共有アクセスとコントロールにより、会社全体でのコラボレーション向けに設計されています。 +すべての Daytona ユーザーは、単独利用や検証に最適な **個人用組織** から始まります。**共同作業用組織** はユーザーが手動で作成し、共有アクセスと制御により、会社全体でのコラボレーションを想定して設計されています。 -| 機能 | 個人組織(Personal Organization) | 共同組織(Collaborative Organization) | -| -------------------- | --------------------------------- | ---------------------------------------------- | -| **作成** | サインアップ時に自動 | ユーザーによる手動 | -| **メンバー** | 単一ユーザーのみ | 複数ユーザー(招待制) | -| **アクセス制御** | 役割や権限なし | 役割とリソース単位の細分化された割り当て | -| **課金** | 個人ユーザーに紐づく | チームメンバー間で共有 | -| **ユースケース** | 個人のテスト・小規模プロジェクト | 会社/チームの開発および本番運用 | -| **クォータの範囲** | ユーザー単位 | 全メンバーで共有 | -| **削除可能性** | ❌ いいえ | ✅ はい(オーナーが実行) | +| 機能 | 個人用組織 | 共同作業用組織 | +| ------------------ | -------------------------------- | ----------------------------------------------- | +| **作成** | サインアップ時に自動 | ユーザーが手動で作成 | +| **メンバー** | 単一ユーザーのみ | 複数ユーザー(招待制) | +| **アクセス制御** | ロールや権限なし | リソース単位のきめ細かな割り当てを伴うロール | +| **課金** | 個々のユーザーに紐づく | チームメンバー間で共有 | +| **ユースケース** | 個人テスト、小規模プロジェクト | 会社/チームでの開発および本番運用 | +| **クォータ範囲** | ユーザー単位 | 全メンバーで共有 | +| **削除可否** | ❌ いいえ | ✅ はい(オーナーが可能) | -ユーザーはサイドバーのドロップダウンで個人組織と共同組織を切り替えられます。各組織には、それぞれ独自のサンドボックス(Daytonaが管理する隔離された一時的な実行環境)、APIキー(DAYTONA_API_KEY、Daytona API/SDK認証用の資格情報)、およびリソースクォータがあります。 +ユーザーはサイドバーのドロップダウンから、個人用組織と共同作業用組織を切り替えられます。各組織には、それぞれ独自のサンドボックス、API キー、リソースクォータがあります。 -## 組織(Organization)の役割(Roles) +## メンバー管理 \{#managing-members\} -組織内のユーザーは、`Owner` と `Member` の2種類の**役割**のいずれかを持ちます。`Owner` は組織およびそのリソースに対して完全な管理権限を持ちます。`Member` は組織に対する管理権限はありませんが、組織リソースへのアクセスは**割り当て/役割(Assignments)**に基づいて決まります。 +### 組織のロール \{#organization-roles\} -### 管理アクション +組織内のユーザーは、次の2種類のいずれかのロールを持つことができます: -組織の `Owner` は次のような管理アクションを実行できます: +* **Owners** は、組織およびそのリソースに対する完全な管理権限を持ちます。Organization Owners は、次のような管理操作を実行できます: +* **Members** は組織に対する管理権限を持ちません。組織リソースへのアクセスは [**Assignments**](#available-assignments) に基づきます。 -- 組織に新しいユーザーを招待する -- 保留中の招待を管理する -- 組織内のユーザーの役割を変更する -- 組織の `Member` の割り当て(Assignments)を更新する -- 組織からユーザーを削除する -- 監査ログ(Audit Logs)を閲覧する -- 組織を削除する +### 管理アクション \{#administrative-actions\} -## 新規ユーザーの招待 +組織のオーナーは、次のような管理アクションを実行できます: -組織(Organization)の `Owner` は、組織に新しいユーザーを招待できます。_Members ページ_に移動し、_Invite Member_ をクリックして、招待するユーザーのメールアドレスを入力し、**Role** を選択します。 -`Member` の役割を選択した場合は、**割り当て(Assignments)** も設定できます。 +* [新規ユーザーを組織に招待](#inviting-new-users) +* [保留中の招待を管理](#managing-invitations) +* 組織内ユーザーの[ロール](#organization-roles)を変更 +* 組織メンバーの[アサインメント](#available-assignments)を更新 +* 組織からユーザーを削除 +* 監査ログを確認 +* [組織を削除](#organization-settings) -## 利用可能な割り当て +### 新規ユーザーの招待 \{#inviting-new-users\} -利用可能な**割り当て**の一覧は次のとおりです: +組織の**Owner**として、新しいユーザーを組織に招待するには: -| 割り当て | 説明 | -| ----------------------- | -------------------------------------------------------------------- | -| **`Viewer (required)`** | 組織内のすべてのリソースに対する読み取り権限を付与します | -| **`Developer`** | 組織内でサンドボックス(Daytonaが管理する隔離された一時的な実行環境)とキーを作成する権限を付与します | -| **`Sandboxes Admin`** | 組織内のサンドボックスに対する管理者権限を付与します | -| **`Snapshots Admin`** | 組織内のスナップショット(サンドボックス作成に使う事前設定済みの再利用可能なイメージ/テンプレート)に対する管理者権限を付与します | -| **`Registries Admin`** | 組織内のレジストリに対する管理者権限を付与します | -| **`Volumes Admin`** | 組織内のボリューム(S3互換オブジェクトストレージをバックエンドとするFUSEベースの共有ストレージマウント)に対する管理者権限を付与します | -| **`Super Admin`** | 組織内のすべてのリソースに対するフルアクセス権限を付与します | -| **`Auditor`** | 組織内の監査ログ(組織レベルでのユーザー・システム操作を記録するログ)へのアクセス権限を付与します | +1. *Members page* に移動します。 +2. *Invite Member* をクリックします。 +3. 招待するユーザーのメールアドレスを入力します。 +4. 新しいユーザーの [Role](#organization-roles) を選択します。`Member` ロールを選ぶ場合は、その [Assignments](#available-assignments) を設定します。 -## 招待の管理 +### 利用可能なアサインメント \{#available-assignments\} -他の組織(Organization)への参加招待の保留中一覧を表示するには、サイドバー下部のドロップダウンを開き、_Invitations_ をクリックして _Invitations ページ_ に移動します。ユーザーが組織(Organization)への招待を承諾すると、その組織に割り当てられたリソースクォータにアクセスできるようになり、新しい APIキー(DAYTONA_API_KEY、Daytona API/SDK認証用の資格情報)を発行してサンドボックス(Daytonaが管理する隔離された一時的な実行環境)を作成できるようになります。 +利用可能な**アサインメント**は次のとおりです。 -## 設定 +| アサインメント | 説明 | +| ----------------------- | ----------------------------------------------------------------- | +| **`Viewer (required)`** | 組織内のすべてのリソースに対する読み取り権限(必須) | +| **`Developer`** | 組織内でサンドボックスおよびキーを作成できる権限 | +| **`Sandboxes Admin`** | 組織内のサンドボックスに対する管理者権限 | +| **`Snapshots Admin`** | 組織内のスナップショットに対する管理者権限 | +| **`Registries Admin`** | 組織内のレジストリに対する管理者権限 | +| **`Volumes Admin`** | 組織内のボリュームに対する管理者権限 | +| **`Super Admin`** | 組織内のすべてのリソースに対するフルアクセス権限 | +| **`Auditor`** | 組織内の監査ログへのアクセス権限 | -Dashboard の「設定」サブページでは、組織(Organization)のIDと名前を確認でき、不要になった場合は組織を削除できます。この操作は取り消せないため、慎重に実行してください。個人用の組織は既定で用意されており、削除できません。 +### 招待の管理 \{#managing-invitations\} + +他の組織への保留中の招待を表示するには、サイドバー下部のドロップダウンを展開し、*Invitations page* を開いてから *Invitations* をクリックします。組織への招待を受諾すると、その組織に割り当てられたリソースのクォータにアクセスできるようになり、新しい [API key](/docs/ja/api-keys) を発行してサンドボックスを作成できます。 + +## 組織の設定 \{#organization-settings\} + +Dashboard の [Settings](https://app.daytona.io/dashboard/settings) サブページでは、組織 ID と名前を確認でき、不要になった場合は組織を削除できます。この操作は取り消せないため、十分に注意して実行してください。個人用の組織は既定で作成されており、削除できません。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/oss-deployment.mdx b/apps/docs/src/content/docs/ja/oss-deployment.mdx new file mode 100644 index 000000000..ddcd003b1 --- /dev/null +++ b/apps/docs/src/content/docs/ja/oss-deployment.mdx @@ -0,0 +1,361 @@ +--- +title: オープンソースのデプロイ +--- + +このガイドでは、Docker Compose を使用してローカル環境で Daytona Open Source を実行する手順を説明します。 + +Compose ファイルは、Daytona リポジトリの [docker](https://github.com/daytonaio/daytona/tree/main/docker) フォルダにあります。 + +:::caution + +* このセットアップはまだ開発中で、**本番環境での使用は安全ではありません** +* 本番環境向けのデプロイガイドは別途提供予定です + ::: + +## 概要 \{#overview\} + +この Docker Compose 構成には、Daytona を稼働させるために必要なすべてのサービスが含まれています: + +* **API**: Daytona のメインアプリケーションサーバー +* **Proxy**: リクエストのプロキシサービス +* **Runner**: Daytona のランナーをホストするサービス +* **SSH Gateway**: サンドボックスへの SSH アクセスを処理するサービス +* **Database**: データ永続化のための PostgreSQL データベース +* **Redis**: キャッシュとセッション用のインメモリデータストア +* **Dex**: OIDC 認証プロバイダー +* **Registry**: Web UI を備えた Docker イメージレジストリ +* **MinIO**: S3 互換のオブジェクトストレージ +* **MailDev**: メールテストサービス +* **Jaeger**: 分散トレーシング +* **PgAdmin**: データベース管理インターフェース + +## クイックスタート \{#quick-start\} + +1. [Daytona リポジトリ](https://github.com/daytonaio/daytona)をクローンする + +2. [Docker と Docker Compose をインストールする](https://docs.docker.com/get-docker/) + +3. すべてのサービスを起動するために(Daytona リポジトリのルートで)次のコマンドを実行する: + + ```bash + docker compose -f docker/docker-compose.yaml up -d + ``` + +4. サービスにアクセスする: + * Daytona Dashboard: http://localhost:3000 + * 認証情報: dev@daytona.io `password` + * http://localhost:3000/dashboard/snapshots で既定のスナップショットが有効になっていることを確認する + * PgAdmin: http://localhost:5050 + * Registry UI: http://localhost:5100 + * MinIO Console: http://localhost:9001 (minioadmin / minioadmin) + +## プロキシ URL の DNS 設定 \{#dns-setup-for-proxy-urls\} + +ローカル開発では、`*.proxy.localhost` ドメインを `127.0.0.1` に解決する必要があります。 + +```bash +./scripts/setup-proxy-dns.sh +``` + +これは dnsmasq を `address=/proxy.localhost/127.0.0.1` で設定します。 + +**この設定を行わない場合**、SDK のサンプルやプロキシへの直接アクセスは動作しません。 + +## 開発メモ \{#development-notes\} + +* サービス間通信を簡素化するため、共有ネットワークを使用しています +* データベースおよびストレージのデータは Docker ボリュームに永続化されます +* テスト用に、レジストリはイメージの削除を許可するよう設定されています +* ソケットがマウントされていない DinD 環境では cgroups を分割できないため、サンドボックスのリソース制限は無効化されています + +## 追加のネットワーク設定 \{#additional-network-options\} + +### HTTPプロキシ \{#http-proxy\} + +Daytona のサービスで外向きの HTTP プロキシを設定するには、プロキシ経由のアクセスが必要な各サービス(イメージ取得のために外部アクセスが必要なのは API サービスのみ)について、`docker-compose.yaml` ファイル内で次の環境変数を設定します。 + +* `HTTP_PROXY`: HTTP プロキシサーバーの URL +* `HTTPS_PROXY`: HTTPS プロキシサーバーの URL +* `NO_PROXY`: プロキシを経由しないホスト名または IP アドレスのカンマ区切りリスト + +API サービスの基本設定は次のとおりです。 + +```yaml +environment: + - HTTP_PROXY= + - HTTPS_PROXY= + - NO_PROXY=localhost,runner,dex,registry,minio,jaeger,otel-collector, +``` + +### 追加 CA 証明書 \{#extra-ca-certificates\} + +追加の CA 証明書(例:`DB_TLS` 環境変数と併用する場合)を設定するには、API サービスで次の環境変数を指定します。 + +```yaml +environment: + - NODE_EXTRA_CA_CERTS=/path/to/your/cert-bundle.pem +``` + +提供されたファイルは証明書バンドルです。つまり、PEM 形式で複数の CA 証明書を含めることができます。 + +## 環境変数 \{#environment-variables\} + +`docker-compose.yaml` ファイル内の環境変数を編集して、デプロイをカスタマイズできます。 +以下は既定値付きの環境変数の全一覧です: + +### API サービス \{#api-service\} + +| 変数 | 型 | デフォルト値 | 説明 | +| ------------------------------------------ | ------- | ---------------------------------------------------- | ------------------------------------------------------------ | +| `PORT` | 数値 | `3000` | API サービス ポート | +| `DB_HOST` | 文字列 | `db` | PostgreSQL データベースのホスト名 | +| `DB_PORT` | 数値 | `5432` | PostgreSQL データベースポート | +| `DB_USERNAME` | string | `user` | PostgreSQL データベースユーザー名 | +| `DB_PASSWORD` | 文字列 | `pass` | PostgreSQL データベース パスワード | +| `DB_DATABASE` | 文字列 | `daytona` | PostgreSQL データベース名 | +| `DB_TLS_ENABLED` | boolean | `false` | データベース接続で TLS を有効にする | +| `DB_TLS_REJECT_UNAUTHORIZED` | boolean | `true` | 信頼されていない TLS 証明書を拒否する | +| `REDIS_HOST` | 文字列 | `redis` | Redis サーバーのホスト名 | +| `REDIS_PORT` | 数値 | `6379` | Redis サーバーポート | +| `OIDC_CLIENT_ID` | 文字列 | `daytona` | OIDC クライアント ID | +| `OIDC_ISSUER_BASE_URL` | 文字列 | `http://dex:5556/dex` | OIDC Issuer のベース URL | +| `PUBLIC_OIDC_DOMAIN` | 文字列 | `http://localhost:5556/dex` | パブリック OIDC ドメイン | +| `OIDC_AUDIENCE` | 文字列 | `daytona` | OIDC のオーディエンス識別子 | +| `OIDC_MANAGEMENT_API_ENABLED` | boolean | (empty) | OIDC 管理 API の有効化 | +| `OIDC_MANAGEMENT_API_CLIENT_ID` | 文字列 | (empty) | OIDC 管理 API のクライアント ID | +| `OIDC_MANAGEMENT_API_CLIENT_SECRET` | 文字列 | (empty) | OIDC 管理 API のクライアントシークレット | +| `OIDC_MANAGEMENT_API_AUDIENCE` | 文字列 | (空) | OIDC 管理 API のオーディエンス | +| `DEFAULT_SNAPSHOT` | 文字列 | `daytonaio/sandbox:0.4.3` | 既定のサンドボックス スナップショット イメージ | +| `DASHBOARD_URL` | 文字列 | `http://localhost:3000/dashboard` | ダッシュボード URL | +| `DASHBOARD_BASE_API_URL` | string | `http://localhost:3000` | ダッシュボード API のベース URL | +| `POSTHOG_API_KEY` | 文字列 | `phc_bYtEsdMDrNLydXPD4tufkBrHKgfO2zbycM30LOowYNv` | 分析のための PostHog API キー | +| `POSTHOG_HOST` | 文字列 | `https://d18ag4dodbta3l.cloudfront.net` | PostHog のホストURL | +| `POSTHOG_ENVIRONMENT` | 文字列 | `local` | PostHog 環境 ID | +| `TRANSIENT_REGISTRY_URL` | 文字列 | `http://registry:6000` | 一時的レジストリ URL | +| `TRANSIENT_REGISTRY_ADMIN` | string | `admin` | 一時レジストリの管理者ユーザー名 | +| `TRANSIENT_REGISTRY_PASSWORD` | string | `password` | 一時レジストリ管理者パスワード | +| `TRANSIENT_REGISTRY_PROJECT_ID` | 文字列 | `daytona` | 一時レジストリ プロジェクト ID | +| `INTERNAL_REGISTRY_URL` | 文字列 | `http://registry:6000` | 内部レジストリURL | +| `INTERNAL_REGISTRY_ADMIN` | 文字列 | `admin` | 内部レジストリ管理者のユーザー名 | +| `INTERNAL_REGISTRY_PASSWORD` | 文字列 | `password` | 内部レジストリの管理者パスワード | +| `INTERNAL_REGISTRY_PROJECT_ID` | 文字列 | `daytona` | 内部レジストリのプロジェクト ID | +| `SMTP_HOST` | string | `maildev` | SMTP サーバーホスト名 | +| `SMTP_PORT` | 数値 | `1025` | SMTP サーバーポート | +| `SMTP_USER` | 文字列 | (empty) | SMTP ユーザー名 | +| `SMTP_PASSWORD` | 文字列 | (empty) | SMTP パスワード | +| `SMTP_SECURE` | ブール値 | (empty) | SMTP のセキュア接続を有効化 | +| `SMTP_EMAIL_FROM` | 文字列 | `"Daytona チーム "` | SMTP 送信元メールアドレス | +| `S3_ENDPOINT` | 文字列 | `http://minio:9000` | S3互換ストレージエンドポイント | +| `S3_STS_ENDPOINT` | 文字列 | `http://minio:9000/minio/v1/assume-role` | S3 STS エンドポイント | +| `S3_REGION` | string | `us-east-1` | S3 リージョン | +| `S3_ACCESS_KEY` | 文字列 | `minioadmin` | S3 アクセスキー | +| `S3_SECRET_KEY` | 文字列 | `minioadmin` | S3 シークレットキー | +| `S3_DEFAULT_BUCKET` | 文字列 | `daytona` | S3 のデフォルトバケット名 | +| `S3_ACCOUNT_ID` | 文字列 | `/` | S3 アカウントID | +| `S3_ROLE_NAME` | string | `/` | S3 ロール名 | +| `ENVIRONMENT` | 文字列 | `dev` | アプリケーション環境 | +| `MAX_AUTO_ARCHIVE_INTERVAL` | 数値 | `43200` | 自動アーカイブの最大間隔(秒) | +| `OTEL_ENABLED` | ブール値 | `true` | OpenTelemetry トレーシングを有効にする | +| `OTEL_COLLECTOR_URL` | 文字列 | `http://jaeger:4318/v1/traces` | OpenTelemetry コレクターの URL | +| `MAINTENANCE_MODE` | ブール値 | `false` | メンテナンスモードを有効化 | +| `PROXY_DOMAIN` | 文字列 | `proxy.localhost:4000` | プロキシドメイン | +| `PROXY_PROTOCOL` | 文字列 | `http` | PROXY プロトコル | +| `PROXY_API_KEY` | string | `super_secret_key` | プロキシ APIキー | +| `PROXY_TEMPLATE_URL` | 文字列 | `http://{{PORT}}-{{sandboxId}}.proxy.localhost:4000` | プロキシ テンプレートの URL パターン | +| `PROXY_TOOLBOX_BASE_URL` | 文字列 | `{PROXY_PROTOCOL}://{PROXY_DOMAIN}` | ツールボックスリクエスト用プロキシのベースURL | +| `DEFAULT_RUNNER_DOMAIN` | 文字列 | `runner:3003` | デフォルトランナー ドメイン | +| `DEFAULT_RUNNER_API_URL` | 文字列 | `http://runner:3003` | デフォルトのランナー API URL | +| `DEFAULT_RUNNER_PROXY_URL` | 文字列 | `http://runner:3003` | デフォルト Runner プロキシ URL | +| `DEFAULT_RUNNER_API_KEY` | 文字列 | `secret_api_token` | デフォルトのランナー API キー | +| `DEFAULT_RUNNER_CPU` | 数値 | `4` | デフォルトのランナーの CPU 割り当て | +| `DEFAULT_RUNNER_MEMORY` | 数値 | `8` | 既定の Runner メモリ割り当て (GB) | +| `DEFAULT_RUNNER_DISK` | 数値 | `50` | ランナーのデフォルトディスク割り当て (GB) | +| `DEFAULT_RUNNER_GPU` | 数値 | `0` | デフォルトランナーの GPU 割り当て | +| `DEFAULT_RUNNER_GPU_TYPE` | 文字列 | `none` | デフォルトのランナー GPU の種類 | +| `DEFAULT_RUNNER_CAPACITY` | 数値 | `100` | デフォルトのランナーキャパシティ | +| `DEFAULT_RUNNER_REGION` | string | `us` | ランナーのデフォルトリージョン | +| `DEFAULT_RUNNER_CLASS` | 文字列 | `small` | 既定のランナークラス | +| `DEFAULT_ORG_QUOTA_TOTAL_CPU_QUOTA` | 数値 | `10000` | 組織のデフォルトの合計 CPU クォータ | +| `DEFAULT_ORG_QUOTA_TOTAL_MEMORY_QUOTA` | 数値 | `10000` | 組織のデフォルトの合計メモリクォータ | +| `DEFAULT_ORG_QUOTA_TOTAL_DISK_QUOTA` | 数値 | `100000` | 組織のデフォルト合計ディスククォータ | +| `DEFAULT_ORG_QUOTA_MAX_CPU_PER_SANDBOX` | 数値 | `100` | 組織のデフォルトのサンドボックスごとの最大 CPU 数 | +| `DEFAULT_ORG_QUOTA_MAX_MEMORY_PER_SANDBOX` | 数値 | `100` | 組織のサンドボックスごとのデフォルト最大メモリ | +| `DEFAULT_ORG_QUOTA_MAX_DISK_PER_SANDBOX` | 数値 | `1000` | 組織のサンドボックスごとのデフォルト最大ディスク容量 | +| `DEFAULT_ORG_QUOTA_SNAPSHOT_QUOTA` | 数値 | `1000` | 組織のデフォルトスナップショット割り当て | +| `DEFAULT_ORG_QUOTA_MAX_SNAPSHOT_SIZE` | 数値 | `1000` | 組織のデフォルトのスナップショットサイズ上限 | +| `DEFAULT_ORG_QUOTA_VOLUME_QUOTA` | 数値 | `10000` | 組織のデフォルトボリュームクォータ | +| `SSH_GATEWAY_API_KEY` | 文字列 | `ssh_secret_api_token` | SSH ゲートウェイ API キー | +| `SSH_GATEWAY_COMMAND` | 文字列 | `ssh -p 2222 {{TOKEN}}@localhost` | SSH ゲートウェイ コマンドテンプレート | +| `RUNNER_DECLARATIVE_BUILD_SCORE_THRESHOLD` | 数値 | `10` | Runner の宣言的ビルドのスコアしきい値 | +| `RUNNER_AVAILABILITY_SCORE_THRESHOLD` | 数値 | `10` | Runner の可用性スコアしきい値 | +| `RUN_MIGRATIONS` | 真偽値 | `true` | 起動時のデータベースマイグレーションの有効化 | +| `ADMIN_API_KEY` | 文字列 | (空) | Admin API キー。空の場合は自動生成され、初期セットアップ時にのみ使用されます。本番環境での使用は推奨されません | +| `ADMIN_TOTAL_CPU_QUOTA` | 番号 | `0` | 管理者の総 CPU クォータ。初期セットアップ時にのみ使用されます | +| `ADMIN_TOTAL_MEMORY_QUOTA` | 数値 | `0` | 初期セットアップ時にのみ使用される管理者の総メモリクォータ | +| `ADMIN_TOTAL_DISK_QUOTA` | 数値 | `0` | 初期セットアップ時にのみ使用される管理者用の総ディスククォータ | +| `ADMIN_MAX_CPU_PER_SANDBOX` | 数値 | `0` | サンドボックスごとの管理者用最大 CPU 数。初回セットアップ時にのみ使用されます | +| `ADMIN_MAX_MEMORY_PER_SANDBOX` | 数値 | `0` | 管理者が設定するサンドボックスごとの最大メモリ。初期セットアップ時にのみ使用 | +| `ADMIN_MAX_DISK_PER_SANDBOX` | 数値 | `0` | 初期セットアップ時にのみ使用される、サンドボックスごとの管理者設定最大ディスク容量 | +| `ADMIN_SNAPSHOT_QUOTA` | 数値 | `100` | 管理者スナップショットクォータ(初期セットアップ時のみ使用) | +| `ADMIN_MAX_SNAPSHOT_SIZE` | 数値 | `100` | 管理者用のスナップショット最大サイズ。初回セットアップ時にのみ使用されます。 | +| `ADMIN_VOLUME_QUOTA` | 数値 | `0` | 初期セットアップ時にのみ使用される管理用ボリュームクォータ | +| `SKIP_USER_EMAIL_VERIFICATION` | ブール値 | `true` | ユーザーのメールアドレス確認をスキップする | +| `RATE_LIMIT_ANONYMOUS_TTL` | 数値 | (empty) | 匿名レート制限の有効期限(秒。空欄の場合はレート制限は無効) | +| `RATE_LIMIT_ANONYMOUS_LIMIT` | 数値 | (empty) | 匿名アクセスのレート制限(TTL ごとのリクエスト数。空の場合はレート制限は無効) | +| `RATE_LIMIT_AUTHENTICATED_TTL` | 数値 | (empty) | 認証済みレート制限の有効期間(秒。空の場合はレート制限を無効化) | +| `RATE_LIMIT_AUTHENTICATED_LIMIT` | 数値 | (空) | 認証済みレート制限(TTL あたりのリクエスト数。空の場合はレート制限は無効) | +| `RATE_LIMIT_SANDBOX_CREATE_TTL` | 数値 | (空) | サンドボックス作成レート制限の有効期間(秒。空欄の場合はレート制限を無効化) | +| `RATE_LIMIT_SANDBOX_CREATE_LIMIT` | 数値 | (empty) | Sandbox 作成レート制限(TTL ごとのリクエスト数。空の場合はレート制限は無効) | +| `RATE_LIMIT_SANDBOX_LIFECYCLE_TTL` | 数値 | (empty) | Sandbox ライフサイクルのレート制限の有効期間(秒。空欄の場合はレート制限が無効化されます) | +| `RATE_LIMIT_SANDBOX_LIFECYCLE_LIMIT` | 数値 | (empty) | Sandbox ライフサイクルのレート制限(TTL 期間あたりのリクエスト数。空の場合はレート制限は無効になります) | + +### ランナー \{#runner\} + +| 変数 | 型 | デフォルト値 | 説明 | +| -------------------------- | ------- | --------------------------------- | ------------------------------------- | +| `VERSION` | string | `0.0.1` | ランナーサービスのバージョン | +| `ENVIRONMENT` | string | `development` | アプリケーション環境 | +| `API_PORT` | number | `3003` | ランナー API サービスのポート | +| `API_TOKEN` | string | `secret_api_token` | ランナー API の認証トークン | +| `LOG_FILE_PATH` | string | `/home/daytona/runner/runner.log` | ランナーのログファイルパス | +| `RESOURCE_LIMITS_DISABLED` | boolean | `true` | サンドボックスのリソース制限を無効化 | +| `AWS_ENDPOINT_URL` | string | `http://minio:9000` | AWS S3 互換ストレージのエンドポイント | +| `AWS_REGION` | string | `us-east-1` | AWS リージョン | +| `AWS_ACCESS_KEY_ID` | string | `minioadmin` | AWS アクセスキー ID | +| `AWS_SECRET_ACCESS_KEY` | string | `minioadmin` | AWS シークレットアクセスキー | +| `AWS_DEFAULT_BUCKET` | string | `daytona` | AWS のデフォルトバケット名 | +| `SERVER_URL` | string | `http://api:3000/api` | Daytona API サーバーの URL | + +### SSH ゲートウェイ \{#ssh-gateway\} + +| 変数 | 型 | 既定値 | 説明 | +| ------------------ | ------ | -------------------------------------- | ---------------------------- | +| `API_URL` | string | `http://api:3000/api` | Daytona API の URL | +| `API_KEY` | string | `ssh_secret_api_token` | API 認証キー | +| `SSH_PRIVATE_KEY` | string | (Base64 でエンコードされた OpenSSH 秘密鍵) | 認証用の SSH 秘密鍵 | +| `SSH_HOST_KEY` | string | (Base64 でエンコードされた OpenSSH ホスト鍵) | サーバー用の SSH ホスト鍵 | +| `SSH_GATEWAY_PORT` | number | `2222` | SSH ゲートウェイの待ち受けポート | + +### プロキシ \{#proxy\} + +| Variable | Type | Default Value | Description | +| ------------------------- | ------- | --------------------------- | ------------------------------------ | +| `DAYTONA_API_URL` | string | `http://api:3000/api` | Daytona API の URL | +| `PROXY_PORT` | number | `4000` | プロキシサービスのポート | +| `PROXY_DOMAIN` | string | `proxy.localhost:4000` | プロキシドメイン | +| `PROXY_API_KEY` | string | `super_secret_key` | プロキシ API の認証キー | +| `PROXY_PROTOCOL` | string | `http` | プロキシプロトコル(http または https) | +| `COOKIE_DOMAIN` | string | `$PROXY_DOMAIN` | プロキシで使用するクッキーのドメイン | +| `OIDC_CLIENT_ID` | string | `daytona` | OIDC クライアント識別子 | +| `OIDC_CLIENT_SECRET` | string | (empty) | OIDC クライアントシークレット | +| `OIDC_DOMAIN` | string | `http://dex:5556/dex` | OIDC ドメイン | +| `OIDC_PUBLIC_DOMAIN` | string | `http://localhost:5556/dex` | OIDC 公開ドメイン | +| `OIDC_AUDIENCE` | string | `daytona` | OIDC オーディエンス識別子 | +| `REDIS_HOST` | string | `redis` | Redis サーバーのホスト名 | +| `REDIS_PORT` | number | `6379` | Redis サーバーのポート | +| `TOOLBOX_ONLY_MODE` | boolean | `false` | Toolbox からのリクエストのみを許可する | +| `PREVIEW_WARNING_ENABLED` | boolean | `false` | ブラウザプレビュー時の警告を有効にする | + +## [OPTIONAL] 認証用に Auth0 を設定する \{#optional-configure-auth0-for-authentication\} + +デフォルトの compose セットアップでは、認証にローカルの Dex OIDC プロバイダーが使用されます。なお、以下の手順に従って、代替の OIDC プロバイダーとして Auth0 を設定することもできます。 + +### ステップ 1: Auth0 テナントを作成する \{#step-1-create-your-auth0-tenant\} + +まず https://auth0.com/signup にアクセスしてサインアップを開始します。ユースケースに応じてアカウント種別を選択します。ビジネス向けアプリケーションなら `Company`、個人プロジェクトなら `Personal` を選択します。\ +「Let's get set up」ページでは、`My Daytona` のようなアプリケーション名を入力し、アプリケーションタイプに `Single Page Application (SPA)` を選択します。認証方法は `Email and Password` から始めて問題ありません。Google、GitHub、Facebook などのソーシャルプロバイダーは後から追加できます。設定が完了したら、右下の `Create Application` をクリックします。 + +### ステップ 2: シングルページアプリケーションを設定する \{#step-2-configure-your-single-page-application\} + +左サイドバーの `Applications` > `Applications` に移動し、先ほど作成したアプリケーションを選択します。`Settings` タブをクリックし、下へスクロールして `Application URIs` セクションを見つけ、コールバック URL とオリジン URL を設定します。 +`Allowed Callback URIs` フィールドに、次の URL を追加します: + +``` +http://localhost:3000 +http://localhost:3000/api/oauth2-redirect.html +http://localhost:4000/callback +http://proxy.localhost:4000/callback +``` + +「Allowed Logout URIs」には次を追加します: + +``` +http://localhost:3000 +``` + +次に、`Allowed Web Origins` に以下を追加します: + +``` +http://localhost:3000 +``` + +これらの設定を反映するには、ページ下部の `Save Changes` をクリックするのを忘れずに行ってください。 + +### ステップ 3: Machine-to-Machine アプリケーションを作成する \{#step-3-create-machine-to-machine-application\} + +Auth0 の Management API と連携するには、Machine-to-Machine アプリケーションが必要です。`Applications` > `Applications` に移動し、`Create Application` をクリックします。タイプとして `Machine to Machine Applications` を選択し、`My Management API M2M` のようなわかりやすい名前を付けます。 +アプリケーションを作成したら、新しい M2M アプリケーションの `APIs` タブに移動します。トグルまたは `Authorize` ボタンをクリックして `Auth0 Management API` を見つけて承認します。\ +承認後、権限を設定するために Management API の横にあるドロップダウン矢印をクリックします。M2M アプリケーションに次の権限を付与します。 + +``` +read:users +update:users +read:connections +create:guardian_enrollment_tickets +read:connections_options +``` + +権限の変更を適用するには、`Save` をクリックします。 + +### ステップ 4: カスタム API を設定する \{#step-4-set-up-custom-api\} + +Daytona アプリケーションでは、認証と認可を処理するためのカスタム API が必要です。左サイドバーの `Applications` > `APIs` に移動し、`Create API` をクリックします。`My Daytona API` のようなわかりやすい名前を入力し、`my-daytona-api` のような識別子を指定します。識別子は、アプリケーション構成で使用される一意の文字列である必要があります。\ +API を作成したら、`Permissions` タブに移動して、アプリケーションで使用するスコープを定義します。以下の各権限を、対応する説明とともに追加してください: + +| Permission | Description | +| --------------------------- | -------------------------------------- | +| `read:node` | ワークスペースノード情報を取得 | +| `create:node` | 新規ワークスペースノードレコードを作成 | +| `create:user` | ユーザーアカウントを作成 | +| `read:users` | すべてのユーザーアカウントを取得 | +| `regenerate-key-pair:users` | ユーザーの SSH キーペアを再生成 | +| `read:workspaces` | ワークスペースを読み取り(ユーザースコープ) | +| `create:registry` | 新規 Docker レジストリアカウントレコードを作成 | +| `read:registries` | すべての Docker レジストリレコードを取得 | +| `read:registry` | Docker レジストリレコードを取得 | +| `write:registry` | Docker レジストリレコードを作成または更新 | + +### ステップ 5: 環境変数の設定 \{#step-5-configure-environment-variables\} + +Auth0 のセットアップ手順をすべて完了したら、Daytona のデプロイで環境変数を設定する必要があります。これらの変数によって、先ほど構成した Auth0 サービスにアプリケーションが接続されます。 + +#### 設定値の確認方法 \{#finding-your-configuration-values\} + +必要な値は Auth0 ダッシュボードで確認できます。SPA アプリケーションの設定は `Applications` > `Applications` に移動し、該当する SPA アプリを選択して `Settings` タブをクリックします。M2M アプリケーションも同様に、Machine-to-Machine アプリを選択してください。カスタム API の設定は `Applications` > `APIs` から対象のカスタム API を選択し、`Settings` を開きます。 + +#### API サービスの設定 \{#api-service-configuration\} + +API サービスで次の環境変数を設定します: + +```bash +OIDC_CLIENT_ID=your_spa_app_client_id +OIDC_ISSUER_BASE_URL=your_spa_app_domain +OIDC_AUDIENCE=your_custom_api_identifier +OIDC_MANAGEMENT_API_ENABLED=true +OIDC_MANAGEMENT_API_CLIENT_ID=your_m2m_app_client_id +OIDC_MANAGEMENT_API_CLIENT_SECRET=your_m2m_app_client_secret +OIDC_MANAGEMENT_API_AUDIENCE=your_auth0_managment_api_identifier +``` + +#### プロキシサービスの設定 \{#proxy-service-configuration\} + +プロキシサービスでは、次の環境変数を設定します: + +```bash +OIDC_CLIENT_ID=your_spa_app_client_id +OIDC_CLIENT_SECRET= +OIDC_DOMAIN=your_spa_app_domain +OIDC_AUDIENCE=your_custom_api_identifier(末尾スラッシュ付き) +``` + +プロキシ環境では、`OIDC_CLIENT_SECRET` は空のままにしておいてください。 diff --git a/apps/docs/src/content/docs/ja/preview-and-authentication.mdx b/apps/docs/src/content/docs/ja/preview-and-authentication.mdx index 72e23cf13..72bcdefeb 100644 --- a/apps/docs/src/content/docs/ja/preview-and-authentication.mdx +++ b/apps/docs/src/content/docs/ja/preview-and-authentication.mdx @@ -2,45 +2,67 @@ title: プレビューと認証 --- -import { Tabs, TabItem } from '@astrojs/starlight/components'; +import { Tabs, TabItem } from '@astrojs/starlight/components' -ポート範囲 `3000-9999` でHTTPトラフィックを待ち受けるプロセスは、プレビューリンクで公開して確認できます。 +Daytona SDK は、サンドボックス向けのプレビューリンクを生成するメソッドを提供します。プレビューリンクのスキーマは、ポートとサンドボックス ID で構成されます(例: +`https://3000-sandboxid.proxy.daytona.works`)。 -プレビューリンクの形式はポート番号とサンドボックス(Sandbox)IDの組み合わせです。例: -`https://3000-sandbox-123456.proxy.daytona.work` +ポート 3000~9999 で HTTP トラフィックを待ち受けているプロセスは、プレビューできます。 -サンドボックスの `public` プロパティが `true` の場合、これらのリンクは一般公開されます。そうでない場合、プレビューリンクにアクセスできるのは当該サンドボックスの組織(Organization)ユーザーのみです。 +## プレビューリンクを取得する \{#fetching-a-preview-link\} -プログラムからアクセスする場合(例: `curl`)、プレビュートークン(x-daytona-preview-token)をヘッダーに指定してプレビューURLへアクセスします: +特定のポートのプレビューリンクと認証トークンを取得するには、次の SDK メソッドを使用します: -```bash -curl -H "x-daytona-preview-token: vg5c0ylmcimr8b_v1ne0u6mdnvit6gc0" \ -https://3000-sandbox-123456.proxy.daytona.work -``` + + + ```python -特定のポートに対応するプレビューリンクとトークンを取得するには、SDKのメソッドを使用します: + preview_info = sandbox.get_preview_link(3000) - - -```python + print(f"Preview link url: {preview_info.url}") + print(f"Preview link token: {preview_info.token}") -preview_info = sandbox.get_preview_link(3000) + ``` + -print(f"Preview link url: {preview_info.url}") -print(f"Preview link token: {preview_info.token}") + + ```typescript -``` + const previewInfo = await sandbox.getPreviewUrl(3000); + + console.log(`Preview link url: ${previewInfo.url}`); + console.log(`Preview link token: ${previewInfo.token}`); + + ``` + + - - -```typescript +:::tip +Daytona の URL ではなく独自ドメイン配下でプレビューを提供したい場合は、[Custom Domain/Authentication](/docs/ja/custom-domain-authentication) セクションを参照してください。 +::: -const previewInfo = await sandbox.getPreviewUrl(3000); +参照: [get_preview_link (Python SDK)](/docs/python-sdk/sync/sandbox/#sandboxget_preview_link), [getPreviewLink (TypeScript SDK)](/docs/typescript-sdk/sandbox/#getpreviewlink) -console.log(`Preview link url: ${previewInfo.url}`); -console.log(`Preview link token: ${previewInfo.token}`); +## 認証 \{#authentication\} +サンドボックスの `public` プロパティが `true` の場合、これらのリンクは公開されます。そうでない場合、プレビューリンクはサンドボックスの組織のユーザーのみが利用できます。 + +プログラムからアクセスする場合は、認可トークンを使用してプレビューURLにアクセスしてください。 + +```bash +curl -H "x-daytona-preview-token: vg5c0ylmcimr8b_v1ne0u6mdnvit6gc0" \ +https://3000-sandbox-123456.proxy.daytona.work ``` - - \ No newline at end of file +## 警告ページ \{#warning-page\} + +ブラウザでプレビューリンクを初めて開くと、警告ページが表示されます。 +この警告は、プレビューURLにアクセスする際の潜在的なリスクをユーザーに知らせるためのセキュリティ対策です。 + +警告ページは、ブラウザでプレビューリンクを読み込む場合にのみ表示されます。 + +この警告を回避するには、次のいずれかを行ってください: + +* `X-Daytona-Skip-Preview-Warning: true` ヘッダーを送信する +* [Tier 3](/docs/ja/limits) にアップグレードする +* 独自の [カスタムプレビュープロキシ](/docs/ja/custom-domain-authentication) をデプロイする \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/process-code-execution.mdx b/apps/docs/src/content/docs/ja/process-code-execution.mdx index f61baf01b..1ce1fb427 100644 --- a/apps/docs/src/content/docs/ja/process-code-execution.mdx +++ b/apps/docs/src/content/docs/ja/process-code-execution.mdx @@ -4,248 +4,251 @@ title: プロセスとコード実行 import { Tabs, TabItem } from '@astrojs/starlight/components'; -DaytonaのTS SDK / Python SDKは、サンドボックス内の`process`モジュールを通じて強力なプロセスとコード実行機能を提供します。本ガイドでは、利用可能なプロセス操作のすべてとベストプラクティスを解説します。 +Daytona SDKは、サンドボックス内の`process`モジュールを通じて、強力なプロセスとコード実行の機能を提供します。本ガイドでは、利用可能なすべてのプロセス操作とベストプラクティスを紹介します。 -## プロセスとコード実行 +## プロセスとコード実行 \{#code-execution\} -Daytona SDK は、Python と TypeScript でコードを実行できます。 +Daytona SDK は、Python と TypeScript でコードを実行する機能を提供します。 -### コードの実行 +### コードの実行 \{#running-code\} -Daytona SDK は、Python と TypeScript のコードスニペット実行に対応しています。入力、タイムアウト、環境変数を指定して実行できます。 +Daytona SDK では、Python と TypeScript のコードスニペットを実行できます。入力、タイムアウト、環境変数を指定してコードを実行可能です。 - -```python -# Python コードを実行 -response = sandbox.process.code_run(''' -def greet(name): - return f"Hello, {name}!" - -print(greet("Daytona")) -''') - -print(response.result) - -``` - - -```typescript -// TypeScript コードを実行 -let response = await sandbox.process.codeRun(` -function greet(name: string): string { - return \`Hello, \${name}!\`; -} - -console.log(greet("Daytona")); -`); -console.log(response.result); - -// argv と環境変数を指定して実行 -response = await sandbox.process.codeRun( - ` - console.log(\`Hello, \${process.argv[2]}!\`); - console.log(\`FOO: \${process.env.FOO}\`); - `, - { - argv: ["Daytona"], - env: { FOO: "BAR" } + + ```python + # Python コードを実行 + response = sandbox.process.code_run(''' + def greet(name): + return f"Hello, {name}!" + + print(greet("Daytona")) + ''') + + print(response.result) + + ``` + + + + ```typescript + // TypeScript コードを実行 + let response = await sandbox.process.codeRun(` + function greet(name: string): string { + return \`Hello, \${name}!\`; } -); -console.log(response.result); - -// タイムアウトを指定して実行 -response = await sandbox.process.codeRun( - 'setTimeout(() => console.log("Done"), 2000);', - undefined, - 5000 -); -console.log(response.result); -``` - - - - -## プロセスとコード実行 - -Daytona SDK は、サンドボックス(Daytonaが管理する隔離された一時的な実行環境)内でシェルコマンドを実行し、バックグラウンドプロセスを管理できます。実行時の作業ディレクトリはデフォルトで現在のサンドボックスユーザーのホーム配下です。たとえば `workspace/repo` は `/home/[username]/workspace/repo` を指しますが、絶対パス(先頭を `/` にする)を指定して上書きできます。 - -### コマンドの実行 - -Daytona SDK は、Python と TypeScript からシェルコマンドを実行できます。標準入力、タイムアウト、環境変数を指定してコマンドを実行可能です。 - - -```python -# 任意のシェルコマンドを実行 -response = sandbox.process.exec("ls -la") -print(response.result) - -# 作業ディレクトリとタイムアウトを設定 -response = sandbox.process.exec("sleep 3", cwd="workspace/src", timeout=5) -print(response.result) - -# 環境変数を渡す -response = sandbox.process.exec("echo $CUSTOM_SECRET", env={ - "CUSTOM_SECRET": "DAYTONA" - } -) -print(response.result) + console.log(greet("Daytona")); + `); + console.log(response.result); + + // argv と環境変数を指定してコードを実行 + response = await sandbox.process.codeRun( + ` + console.log(\`Hello, \${process.argv[2]}!\`); + console.log(\`FOO: \${process.env.FOO}\`); + `, + { + argv: ["Daytona"], + env: { FOO: "BAR" } + } + ); + console.log(response.result); + + // タイムアウトを指定してコードを実行 + response = await sandbox.process.codeRun( + 'setTimeout(() => console.log("Done"), 2000);', + undefined, + 5000 + ); + console.log(response.result); + ``` + + -``` - - -```typescript +参照: [code_run(Python SDK)](/docs/python-sdk/sync/process/#processcode_run), [codeRun(TypeScript SDK)](/docs/typescript-sdk/process/#coderun) -// 任意のシェルコマンドを実行 -const response = await sandbox.process.executeCommand("ls -la"); -console.log(response.result); +## プロセス実行 \{#process-execution\} -// 作業ディレクトリとタイムアウトを設定 -const response2 = await sandbox.process.executeCommand("sleep 3", "workspace/src", undefined, 5); -console.log(response2.result); +Daytona SDK は、サンドボックス内でシェルコマンドを実行し、バックグラウンドプロセスを管理する機能を提供します。実行時の workDir は、既定で現在のサンドボックスの作業ディレクトリです。Dockerfile に WORKDIR が指定されていればそれが使われ、指定がない場合はユーザーのホームディレクトリが用いられます。例: `workspace/repo` は `/my-work-dir/workspace/repo` を意味しますが、パスを `/` で始めることで絶対パスにして上書きできます。 -// 環境変数を渡す -const response3 = await sandbox.process.executeCommand("echo $CUSTOM_SECRET", "~", { - "CUSTOM_SECRET": "DAYTONA" - } -); -console.log(response3.result); +### コマンドの実行 \{#running-commands\} -``` +Daytona SDK は、Python と TypeScript でシェルコマンドを実行する手段を提供します。入力、タイムアウト、環境変数を指定してコマンドを実行できます。 - + + + ```python + # 任意のシェルコマンドを実行 + response = sandbox.process.exec("ls -la") + print(response.result) + + # 作業ディレクトリとタイムアウトを設定 + response = sandbox.process.exec("sleep 3", cwd="workspace/src", timeout=5) + print(response.result) + + # 環境変数を渡す + response = sandbox.process.exec("echo $CUSTOM_SECRET", env={ + "CUSTOM_SECRET": "DAYTONA" + } + ) + print(response.result) + + ``` + + + + ```typescript + + // 任意のシェルコマンドを実行 + const response = await sandbox.process.executeCommand("ls -la"); + console.log(response.result); + + // 作業ディレクトリとタイムアウトを設定 + const response2 = await sandbox.process.executeCommand("sleep 3", "workspace/src", undefined, 5); + console.log(response2.result); + + // 環境変数を渡す + const response3 = await sandbox.process.executeCommand("echo $CUSTOM_SECRET", ".", { + "CUSTOM_SECRET": "DAYTONA" + } + ); + console.log(response3.result); + + ``` + -## セッション(バックグラウンドプロセス) +参照: [exec (Python SDK)](/docs/python-sdk/sync/process/#processexec), [executeCommand (TypeScript SDK)](/docs/typescript-sdk/process/#executecommand) -Daytona SDK は、サンドボックス(Daytonaが管理する隔離された一時的な実行環境)内でバックグラウンドプロセスのセッションを開始・停止・管理する機能を提供します。長時間実行のコマンドを走らせ、プロセスの状態を監視し、稼働中のすべてのプロセスを一覧できます。 +## セッション(バックグラウンドプロセス) \{#sessions-background-processes\} -### 長時間実行プロセスの管理 +Daytona SDK は、サンドボックス内のバックグラウンドプロセスセッションの開始・停止・管理に対応しています。長時間実行されるコマンドを実行し、プロセスの状態を監視し、稼働中のプロセスを一覧できます。 -Daytona SDK は、バックグラウンドプロセスの開始および停止機能を提供します。長時間実行のコマンドを実行し、プロセスの状態を監視できます。 +### 長時間実行プロセスの管理 \{#managing-long-running-processes\} + +Daytona SDK はバックグラウンドプロセスの開始・停止を行う機能を提供します。長時間実行するコマンドを実行し、プロセスの状態を監視できます。 - -```python -# セッションで実行されたコマンドを確認 -session = sandbox.process.get_session(session_id) -print(f"Session {session_id}:") -for command in session.commands: - print(f"Command: {command.command}, Exit Code: {command.exit_code}") - -# 実行中のすべてのセッションを一覧表示 -sessions = sandbox.process.list_sessions() -for session in sessions: - print(f"PID: {session.id}, Commands: {session.commands}") -``` - - -```typescript -// セッションで実行されたコマンドを確認 -const session = await sandbox.process.getSession(sessionId); -console.log(`Session ${sessionId}:`); -for (const command of session.commands) { - console.log(`Command: ${command.command}, Exit Code: ${command.exitCode}`); -} - -// 実行中のすべてのセッションを一覧表示 -const sessions = await sandbox.process.listSessions(); -for (const session of sessions) { - console.log(`PID: ${session.id}, Commands: ${session.commands}`); -} -``` - - + + ```python + # セッションで実行されたコマンドを確認 + session = sandbox.process.get_session(session_id) + print(f"Session {session_id}:") + for command in session.commands: + print(f"Command: {command.command}, Exit Code: {command.exit_code}") + + # 実行中のすべてのセッションを一覧表示 + sessions = sandbox.process.list_sessions() + for session in sessions: + print(f"PID: {session.id}, Commands: {session.commands}") + ``` + + + + ```typescript + // セッションで実行されたコマンドを確認 + const session = await sandbox.process.getSession(sessionId); + console.log(`Session ${sessionId}:`); + for (const command of session.commands) { + console.log(`Command: ${command.command}, Exit Code: ${command.exitCode}`); + } -## ベストプラクティス + // 実行中のすべてのセッションを一覧表示 + const sessions = await sandbox.process.listSessions(); + for (const session of sessions) { + console.log(`PID: ${session.id}, Commands: ${session.commands}`); + } + ``` + + -Daytona SDK は、サンドボックス(Daytonaが管理する隔離された一時的な実行環境)におけるプロセスとコード実行(サンドボックス内でのコマンド/コード実行モジュール)のベストプラクティスを提供します。 +参照: [get_session (Python SDK)](/docs/python-sdk/sync/process/#processget_session), [list_sessions (Python SDK)](/docs/python-sdk/sync/process/#processlist_sessions), [getSession (TypeScript SDK)](/docs/typescript-sdk/process/#getsession), [listSessions (TypeScript SDK)](/docs/typescript-sdk/process/#listsessions) -1. **リソース管理** +## ベストプラクティス \{#best-practices\} -- 長時間実行の処理にはセッションを使用する -- 実行後はセッションを確実にクリーンアップする -- セッションで発生する例外を適切に処理する +Daytona SDK でプロセスやコードの実行を扱う際は、次のベストプラクティスに従ってください。 - - - ```python - # Python - セッションのクリーンアップ - session_id = "long-running-cmd" - try: - sandbox.process.create_session(session_id) - session = sandbox.process.get_session(session_id) - # 処理を実行... - finally: - sandbox.process.delete_session(session.session_id) - ``` - - - ```typescript - // TypeScript - セッションのクリーンアップ - const sessionId = "long-running-cmd"; - try { - await sandbox.process.createSession(sessionId); - const session = await sandbox.process.getSession(sessionId); - // 処理を実行... - } finally { - await sandbox.process.deleteSession(session.sessionId); - } - ``` - - +### リソース管理 \{#resource-management\} -2. **エラーハンドリング** +プロセス実行時のリソース管理には、次のベストプラクティスが適用されます: -- プロセスの例外を適切に処理する -- デバッグのためにエラーの詳細を記録する -- エラーハンドリングには try-catch ブロックを使用する +1. 長時間実行の処理には[セッション](#sessions-background-processes)を使用する +2. 実行後はセッションを後片付け(クリーンアップ)する +3. セッションで発生する例外を適切に処理する - -```python -try: - response = sandbox.process.code_run("invalid python code") -except ProcessExecutionError as e: - print(f"Execution failed: {e}") - print(f"Exit code: {e.exit_code}") - print(f"Error output: {e.stderr}") -``` - - -```typescript -try { - const response = await sandbox.process.codeRun("invalid typescript code"); -} catch (e) { - if (e instanceof ProcessExecutionError) { - console.error("Execution failed:", e); - console.error("Exit code:", e.exitCode); - console.error("Error output:", e.stderr); + + ```python + # Python - セッションのクリーンアップ + session_id = "long-running-cmd" + try: + sandbox.process.create_session(session_id) + session = sandbox.process.get_session(session_id) + # Do work... + finally: + sandbox.process.delete_session(session.session_id) + ``` + + + + ```typescript + // TypeScript - セッションのクリーンアップ + const sessionId = "long-running-cmd"; + try { + await sandbox.process.createSession(sessionId); + const session = await sandbox.process.getSession(sessionId); + // Do work... + } finally { + await sandbox.process.deleteSession(session.sessionId); } -} -``` - + ``` + -## よくある問題 +参照:[create_session(Python SDK)](/docs/python-sdk/sync/process/#processcreate_session)、[delete_session(Python SDK)](/docs/python-sdk/sync/process/#processdelete_session)、[createSession(TypeScript SDK)](/docs/typescript-sdk/process/#createsession)、[deleteSession(TypeScript SDK)](/docs/typescript-sdk/process/#deletesession) -Daytona SDK は、プロセスとコードの実行(プロセスとコード実行)に関する一般的な問題のトラブルシューティング手段を提供します。 +### エラー処理 \{#error-handling\} -### プロセス実行に失敗する +プロセス実行時のエラー処理には、次のベストプラクティスが有効です: -- コマンドの構文を確認する -- 必要な依存関係を満たしているか確認する -- 必要な権限が付与されていることを確認する +* プロセスで発生した例外を適切に処理する +* デバッグのためにエラーの詳細をログに記録する +* エラー処理には try-catch ブロックを使用する -### プロセスがタイムアウトする + + + ```python + try: + response = sandbox.process.code_run("invalid python code") + except ProcessExecutionError as e: + print(f"Execution failed: {e}") + print(f"Exit code: {e.exit_code}") + print(f"Error output: {e.stderr}") + ``` + + + + ```typescript + try { + const response = await sandbox.process.codeRun("invalid typescript code"); + } catch (e) { + if (e instanceof ProcessExecutionError) { + console.error("Execution failed:", e); + console.error("Exit code:", e.exitCode); + console.error("Error output:", e.stderr); + } + } + ``` + + -- タイムアウト設定を調整する -- 長時間実行タスクを最適化する -- バックグラウンド処理の利用を検討する +## よくある問題 \{#common-issues\} -### リソース制限 +プロセスやコード実行に関するよくある問題のトラブルシューティングは、次の表を参照してください。 -- プロセスのメモリ使用量を監視する -- プロセスのクリーンアップを適切に行う -- 適切なリソース制約を設定する +| 問題 | 解決策 | +|-------|-----------| +| `Process Execution Failed` | ・コマンドの構文を確認する
・必要な依存関係を確認する
・必要な権限が付与されていることを確認する | +| `Process Timeout` | ・タイムアウト設定を調整する
・長時間実行タスクを最適化する
・バックグラウンド処理の利用を検討する | +| `Resource Limits` | ・プロセスのメモリ使用量を監視する
・プロセスの後処理(クリーンアップ)を適切に行う
・適切なリソース制限を設定する | \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/pty.mdx b/apps/docs/src/content/docs/ja/pty.mdx new file mode 100644 index 000000000..e78ad7995 --- /dev/null +++ b/apps/docs/src/content/docs/ja/pty.mdx @@ -0,0 +1,253 @@ +--- +title: 擬似端末 (PTY) +--- + +import { TabItem, Tabs } from '@astrojs/starlight/components' + +Daytona SDK は、サンドボックス内の `process` モジュールを通じて強力な擬似端末 (PTY) 機能を提供します。PTY セッションを使うと、コマンドの実行、ユーザー入力の処理、端末操作の管理が可能な対話型ターミナルセッションを作成できます。 + +## PTY とは? \{#what-is-pty\} + +PTY(擬似端末)は、プログラムが実際の端末に接続されているかのようにシェルとやり取りできる仮想端末インターフェースです。Daytona における PTY セッションでは、以下が可能です: + +* リアルタイムの入出力による対話的なコマンド実行 +* 端末のリサイズ +* kill 操作を含むプロセス管理 +* 端末セッションからのリアルタイムなデータストリーミング + +## PTY を使った対話型コマンド \{#interactive-commands-with-pty\} + +PTY セッションは、ユーザー入力を伴う対話型コマンドの実行や、実行中のターミナルサイズ変更に適しています。 + + + + ```python + import time + from daytona import Daytona, Sandbox + from daytona.common.pty import PtySize + + def handle_pty_data(data: bytes): + text = data.decode("utf-8", errors="replace") + print(text, end="") + + # PTY セッションを作成 + + pty_handle = sandbox.process.create_pty_session( + id="interactive-session", + pty_size=PtySize(cols=300, rows=100) + ) + + # 対話型コマンドを送信 + + pty_handle.send_input('printf "Are you accepting the terms and conditions? (y/n): " && read confirm && if [ "$confirm" = "y" ]; then echo "You accepted"; else echo "You did not accept"; fi\n') + time.sleep(1) + pty_handle.send_input("y\n") + + # ターミナルをリサイズ + + pty_session_info = pty_handle.resize(PtySize(cols=210, rows=110)) + print(f"PTY session resized to {pty_session_info.cols}x{pty_session_info.rows}") + + # セッションを終了 + + pty_handle.send_input('exit\n') + + # イテレーターで出力を処理 + + for data in pty_handle: + handle_pty_data(data) + + print(f"Session completed with exit code: {pty_handle.exit_code}") + + ``` + + + + ```typescript + import { Daytona, Sandbox } from '@daytonaio/sdk' + + // PTY セッションを作成 + const ptyHandle = await sandbox.process.createPty({ + id: 'interactive-session', + cols: 300, + rows: 100, + onData: (data) => { + const text = new TextDecoder().decode(data) + process.stdout.write(text) + }, + }) + + await ptyHandle.waitForConnection() + + // 対話型コマンドを送信 + await ptyHandle.sendInput('printf "Are you accepting the terms and conditions? (y/n): " && read confirm && if [ "$confirm" = "y" ]; then echo "You accepted"; else echo "You did not accept"; fi\n') + await new Promise(resolve => setTimeout(resolve, 1000)) + await ptyHandle.sendInput('y\n') + + // ターミナルをリサイズ + const ptySessionInfo = await sandbox.process.resizePtySession(ptySessionId, 210, 110) + console.log(`\nPTY session resized to ${ptySessionInfo.cols}x${ptySessionInfo.rows}`) + + // セッションを終了 + await ptyHandle.sendInput('exit\n') + + // 完了を待機 + const result = await ptyHandle.wait() + console.log(`Session completed with exit code: ${result.exitCode}`) + ``` + + + +## PTY を使った長時間実行プロセス \{#long-running-processes-with-pty\} + +PTY セッションは、監視や強制終了が必要な長時間実行プロセスの管理に最適です。 + + + + ```python + import time + from daytona import Daytona, Sandbox + from daytona.common.pty import PtySize + + def handle_pty_data(data: bytes): + text = data.decode("utf-8", errors="replace") + print(text, end="") + + # PTY セッションを作成 + pty_handle = sandbox.process.create_pty_session( + id="long-running-session", + pty_size=PtySize(cols=120, rows=30) + ) + + # 長時間実行プロセスを開始 + pty_handle.send_input('while true; do echo "Running... $(date)"; sleep 1; done\n') + + # スレッドと wait() メソッドで PTY の出力を処理 + thread = threading.Thread(target=pty_handle.wait, args=(handle_pty_data, 10)) + thread.start() + + time.sleep(3) # しばらく実行させる + + print("長時間実行プロセスを終了します...") + pty_handle.kill() + + thread.join() + + print(f"\nプロセスは終了コード {result.exit_code} で終了しました") + if result.error: + print(f"終了理由: {result.error}") + + ``` + + + + ```typescript + import { Daytona, Sandbox } from '@daytonaio/sdk' + + // PTY セッションを作成 + const ptyHandle = await sandbox.process.createPty({ + id: 'long-running-session', + cols: 120, + rows: 30, + onData: (data) => { + const text = new TextDecoder().decode(data) + process.stdout.write(text) + }, + }) + + await ptyHandle.waitForConnection() + + // 長時間実行プロセスを開始 + await ptyHandle.sendInput('while true; do echo "Running... $(date)"; sleep 1; done\n') + await new Promise(resolve => setTimeout(resolve, 3000)) // しばらく実行させる + + console.log('長時間実行プロセスを終了します...') + await ptyHandle.kill() + + // 終了を待機 + const result = await ptyHandle.wait() + console.log(`\nプロセスは終了コード: ${result.exitCode} で終了しました`) + if (result.error) { + console.log(`終了理由: ${result.error}`) + } + ``` + + + +## ベストプラクティス \{#best-practices\} + +### リソース管理 \{#resource-management\} + +リソースリークを防ぐため、常に PTY セッションをクリーンアップしてください: + + + + ```python + # Python: try/finally を使用 + pty_handle = None + try: + pty_handle = sandbox.process.create_pty_session(id="session", pty_size=PtySize(cols=120, rows=30)) + # ここで処理を行う... + finally: + if pty_handle: + pty_handle.kill() + ``` + + + + ```typescript + // TypeScript: try/finally を使用 + let ptyHandle + try { + ptyHandle = await sandbox.process.createPty({ + id: 'session', + cols: 120, + rows: 30, + }) + // ここで処理を行う... + } finally { + if (ptyHandle) await ptyHandle.kill() + } + ``` + + + +### エラー処理 \{#error-handling\} + +終了コードを監視し、適切にエラーを処理します。 + + + + ```python + # Python: 終了コードを確認 + result = pty_handle.wait() + if result.exit_code != 0: + print(f"Command failed: {result.exit_code}") + print(f"Error: {result.error}") + ``` + + + + ```typescript + // TypeScript: 終了コードを確認 + const result = await ptyHandle.wait() + if (result.exitCode !== 0) { + console.log(`Command failed: ${result.exitCode}`) + console.log(`Error: ${result.error}`) + } + ``` + + + +## 一般的なユースケース \{#common-use-cases\} + +* **インタラクティブ開発**: REPL、デバッガ、開発ツール +* **ビルド処理**: コンパイル、テスト、デプロイの実行と監視 +* **システム管理**: リモートサーバーの管理と設定 +* **ユーザーインターフェース**: ユーザー操作を伴うターミナルベースのアプリケーション + +## トラブルシューティング \{#troubleshooting\} + +**接続の問題**: サンドボックスのステータス、ネットワーク接続、正しいセッションIDを確認してください。 +**パフォーマンスの問題**: 適切なターミナルサイズと効率的なデータハンドラーを使用してください。 +**プロセス管理**: 長時間実行されるプロセスには、明示的な `kill()` の呼び出しと適切なタイムアウト処理を行ってください。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/python-sdk/async/async-computer-use.mdx b/apps/docs/src/content/docs/ja/python-sdk/async/async-computer-use.mdx index 140bc9103..6084b5468 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/async/async-computer-use.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/async/async-computer-use.mdx @@ -3,104 +3,100 @@ title: "AsyncComputerUse" hideTitleOnPage: true --- -## AsyncComputerUse +## AsyncComputerUse \{#asynccomputeruse\} ```python class AsyncComputerUse() ``` -デスクトップ環境と対話するためのコンピューター操作(Computer Use)機能。 +デスクトップ環境と対話するためのコンピューター使用機能。 -サンドボックス(Daytonaが管理する隔離された一時的な実行環境)内でのデスクトップ操作自動化のために、マウス、キーボード、スクリーンショット、ディスプレイの各操作にアクセスできます。 +サンドボックス内でのデスクトップ操作を自動化できるよう、 +マウス、キーボード、スクリーンショット、ディスプレイの操作にアクセスを提供します。 **属性**: -- `mouse` _AsyncMouse_ - マウス操作インターフェース。 -- `keyboard` _AsyncKeyboard_ - キーボード操作インターフェース。 -- `screenshot` _AsyncScreenshot_ - スクリーンショット操作インターフェース。 -- `display` _AsyncDisplay_ - ディスプレイ操作インターフェース。 +* `mouse` *AsyncMouse* - マウス操作用インターフェース。 +* `keyboard` *AsyncKeyboard* - キーボード操作用インターフェース。 +* `screenshot` *AsyncScreenshot* - スクリーンショット操作用インターフェース。 +* `display` *AsyncDisplay* - ディスプレイ操作用インターフェース。 -#### AsyncComputerUse.start +#### AsyncComputerUse.start \{#asynccomputerusestart\} ```python -@intercept_errors(message_prefix="Failed to start computer use: ") +@intercept_errors(message_prefix="コンピューター使用の開始に失敗しました: ") async def start() -> ComputerUseStartResponse ``` -すべてのコンピューター操作プロセス(Xvfb、xfce4、x11vnc、novnc)を起動します。 +すべてのコンピューター使用プロセス(Xvfb、xfce4、x11vnc、novnc)を起動します。 **戻り値**: -- `ComputerUseStartResponse` - コンピューター操作の起動レスポンス。 - +* `ComputerUseStartResponse` - コンピューター使用の起動応答。 **例**: ```python result = await sandbox.computer_use.start() -print("Computer use processes started:", result.message) +print("コンピューター使用プロセスが開始されました:", result.message) ``` -#### AsyncComputerUse.stop +#### AsyncComputerUse.stop \{#asynccomputerusestop\} ```python -@intercept_errors(message_prefix="Failed to stop computer use: ") +@intercept_errors(message_prefix="コンピューター使用の停止に失敗しました: ") async def stop() -> ComputerUseStopResponse ``` -すべてのコンピューター操作プロセスを停止します。 +すべてのコンピューター使用プロセスを停止します。 **戻り値**: -- `ComputerUseStopResponse` - コンピューター操作の停止レスポンス。 - +* `ComputerUseStopResponse` - コンピューター使用の停止応答。 **例**: ```python result = await sandbox.computer_use.stop() -print("Computer use processes stopped:", result.message) +print("コンピューター使用プロセスが停止しました:", result.message) ``` -#### AsyncComputerUse.get\_status +#### AsyncComputerUse.get_status \{#asynccomputeruseget_status\} ```python -@intercept_errors(message_prefix="Failed to get computer use status: ") +@intercept_errors(message_prefix="コンピューター使用ステータスの取得に失敗しました: ") async def get_status() -> ComputerUseStatusResponse ``` -すべてのコンピューター操作プロセスのステータスを取得します。 +すべてのコンピューター使用プロセスのステータスを取得します。 **戻り値**: -- `ComputerUseStatusResponse` - すべてのVNCデスクトッププロセスに関するステータス情報。 - +* `ComputerUseStatusResponse` - すべての VNC デスクトッププロセスに関するステータス情報。 **例**: ```python response = await sandbox.computer_use.get_status() -print("Computer use status:", response.status) +print("コンピューター使用ステータス:", response.status) ``` -#### AsyncComputerUse.get\_process\_status +#### AsyncComputerUse.get_process_status \{#asynccomputeruseget_process_status\} ```python -@intercept_errors(message_prefix="Failed to get process status: ") +@intercept_errors(message_prefix="プロセス状態の取得に失敗しました: ") async def get_process_status(process_name: str) -> ProcessStatusResponse ``` -特定のVNCプロセスのステータスを取得します。 +特定の VNC プロセスのステータスを取得します。 **引数**: -- `process_name` _str_ - 確認するプロセス名。 - +* `process_name` *str* - 確認対象のプロセス名。 **戻り値**: -- `ProcessStatusResponse` - 指定したプロセスに関するステータス情報。 - +* `ProcessStatusResponse` - 当該プロセスのステータス情報。 **例**: @@ -109,183 +105,171 @@ xvfb_status = await sandbox.computer_use.get_process_status("xvfb") no_vnc_status = await sandbox.computer_use.get_process_status("novnc") ``` -#### AsyncComputerUse.restart\_process +#### AsyncComputerUse.restart_process \{#asynccomputeruserestart_process\} ```python -@intercept_errors(message_prefix="Failed to restart process: ") +@intercept_errors(message_prefix="プロセスの再起動に失敗しました: ") async def restart_process(process_name: str) -> ProcessRestartResponse ``` -特定のVNCプロセスを再起動します。 +特定の VNC プロセスを再起動します。 **引数**: -- `process_name` _str_ - 再起動するプロセス名。 - +* `process_name` *str* - 再起動するプロセスの名前。 **戻り値**: -- `ProcessRestartResponse` - プロセス再起動のレスポンス。 - +* `ProcessRestartResponse` - プロセス再起動のレスポンス。 **例**: ```python result = await sandbox.computer_use.restart_process("xfce4") -print("XFCE4 process restarted:", result.message) +print("XFCE4プロセスを再起動しました:", result.message) ``` -#### AsyncComputerUse.get\_process\_logs +#### AsyncComputerUse.get_process_logs \{#asynccomputeruseget_process_logs\} ```python -@intercept_errors(message_prefix="Failed to get process logs: ") +@intercept_errors(message_prefix="プロセスログの取得に失敗しました: ") async def get_process_logs(process_name: str) -> ProcessLogsResponse ``` -特定のVNCプロセスのログを取得します。 +特定の VNC プロセスのログを取得します。 **引数**: -- `process_name` _str_ - ログを取得するプロセス名。 - +* `process_name` *str* - ログを取得するプロセスの名前。 **戻り値**: -- `ProcessLogsResponse` - プロセスのログ。 - +* `ProcessLogsResponse` - プロセスのログ。 **例**: ```python logs = await sandbox.computer_use.get_process_logs("novnc") -print("NoVNC logs:", logs) +print("NoVNC ログ:", logs) ``` -#### AsyncComputerUse.get\_process\_errors +#### AsyncComputerUse.get_process_errors \{#asynccomputeruseget_process_errors\} ```python -@intercept_errors(message_prefix="Failed to get process errors: ") +@intercept_errors(message_prefix="プロセスエラーの取得に失敗しました: ") async def get_process_errors(process_name: str) -> ProcessErrorsResponse ``` -特定のVNCプロセスのエラーログを取得します。 +特定の VNC プロセスのエラーログを取得します。 **引数**: -- `process_name` _str_ - エラーログを取得するプロセス名。 - +* `process_name` *str* - エラーログを取得するプロセス名。 **戻り値**: -- `ProcessErrorsResponse` - プロセスのエラーログ。 - +* `ProcessErrorsResponse` - プロセスのエラーログ。 **例**: ```python errors = await sandbox.computer_use.get_process_errors("x11vnc") -print("X11VNC errors:", errors) +print("X11VNCエラー:", errors) ``` - -## AsyncMouse +## AsyncMouse(非同期マウス) \{#asyncmouse\} ```python class AsyncMouse() ``` -コンピューター操作機能のためのマウス操作。 +コンピューター使用機能におけるマウス操作 -#### AsyncMouse.get\_position +#### AsyncMouse.get_position \{#asyncmouseget_position\} ```python @intercept_errors(message_prefix="Failed to get mouse position: ") -async def get_position() -> MousePosition +async def get_position() -> MousePositionResponse ``` -現在のマウスカーソル位置を取得します。 +現在のマウスカーソルの位置を取得します。 -**Returns**: +**戻り値**: -- `MousePosition` - x座標とy座標を含む現在のマウス位置。 - +* `MousePositionResponse` - 現在のマウス位置(x および y 座標)。 -**Example**: +**例**: ```python position = await sandbox.computer_use.mouse.get_position() -print(f"Mouse is at: {position.x}, {position.y}") +print(f"マウスの位置: {position.x}, {position.y}") ``` -#### AsyncMouse.move +#### AsyncMouse.move \{#asyncmousemove\} ```python -@intercept_errors(message_prefix="Failed to move mouse: ") -async def move(x: int, y: int) -> MouseMoveResponse +@intercept_errors(message_prefix="マウスの移動に失敗しました: ") +async def move(x: int, y: int) -> MousePositionResponse ``` -マウスカーソルを指定した座標に移動します。 +マウスカーソルを指定した座標へ移動します。 -**Arguments**: +**引数**: -- `x` _int_ - 移動先のx座標。 -- `y` _int_ - 移動先のy座標。 - +* `x` *int* - 移動先のx座標。 +* `y` *int* - 移動先のy座標。 -**Returns**: +**戻り値**: -- `MouseMoveResponse` - 移動操作の結果。 - +* `MousePositionResponse` - 移動後の位置。 -**Example**: +**例**: ```python result = await sandbox.computer_use.mouse.move(100, 200) -print(f"Mouse moved to: {result.x}, {result.y}") +print(f"マウスを移動しました: {result.x}, {result.y}") ``` -#### AsyncMouse.click +#### AsyncMouse.click \{#asyncmouseclick\} ```python -@intercept_errors(message_prefix="Failed to click mouse: ") +@intercept_errors(message_prefix="マウスクリックに失敗しました: ") async def click(x: int, y: int, button: str = "left", double: bool = False) -> MouseClickResponse ``` -指定した座標でマウスをクリックします。 +指定した座標でマウスクリックを実行します。 -**Arguments**: +**引数**: -- `x` _int_ - クリックするx座標。 -- `y` _int_ - クリックするy座標。 -- `button` _str_ - クリックするマウスボタン('left'、'right'、'middle')。 -- `double` _bool_ - ダブルクリックを行うかどうか。 - +* `x` *int* - クリックするX座標。 +* `y` *int* - クリックするY座標。 +* `button` *str* - クリックするマウスボタン('left'、'right'、'middle')。 +* `double` *bool* - ダブルクリックを行うかどうか。 -**Returns**: +**戻り値**: -- `MouseClickResponse` - クリック操作の結果。 - +* `MouseClickResponse` - クリック操作の結果。 -**Example**: +**例**: ```python -# Single left click +# 左シングルクリック result = await sandbox.computer_use.mouse.click(100, 200) -# Double click +# ダブルクリック double_click = await sandbox.computer_use.mouse.click(100, 200, "left", True) -# Right click +# 右クリック right_click = await sandbox.computer_use.mouse.click(100, 200, "right") ``` -#### AsyncMouse.drag +#### AsyncMouse.drag \{#asyncmousedrag\} ```python -@intercept_errors(message_prefix="Failed to drag mouse: ") +@intercept_errors(message_prefix="マウスのドラッグに失敗しました: ") async def drag(start_x: int, start_y: int, end_x: int, @@ -295,318 +279,298 @@ async def drag(start_x: int, 開始座標から終了座標までマウスをドラッグします。 -**Arguments**: +**引数**: -- `start_x` _int_ - 開始x座標。 -- `start_y` _int_ - 開始y座標。 -- `end_x` _int_ - 終了x座標。 -- `end_y` _int_ - 終了y座標。 -- `button` _str_ - ドラッグに使用するマウスボタン。 - +* `start_x` *int* - 開始 x 座標。 +* `start_y` *int* - 開始 y 座標。 +* `end_x` *int* - 終了 x 座標。 +* `end_y` *int* - 終了 y 座標。 +* `button` *str* - ドラッグに使用するマウスボタン。 -**Returns**: +**戻り値**: -- `MouseDragResponse` - ドラッグ操作の結果。 - +* `MouseDragResponse` - ドラッグ操作の結果。 -**Example**: +**例**: ```python result = await sandbox.computer_use.mouse.drag(50, 50, 150, 150) -print(f"Dragged from {result.from_x},{result.from_y} to {result.to_x},{result.to_y}") +print(f"({result.from_x},{result.from_y})から({result.to_x},{result.to_y})へドラッグしました") ``` -#### AsyncMouse.scroll +#### AsyncMouse.scroll \{#asyncmousescroll\} ```python -@intercept_errors(message_prefix="Failed to scroll mouse: ") +@intercept_errors(message_prefix="マウススクロールに失敗しました: ") async def scroll(x: int, y: int, direction: str, amount: int = 1) -> bool ``` 指定した座標でマウスホイールをスクロールします。 -**Arguments**: +**引数**: -- `x` _int_ - スクロールするx座標。 -- `y` _int_ - スクロールするy座標。 -- `direction` _str_ - スクロール方向('up' または 'down')。 -- `amount` _int_ - スクロール量。 - +* `x` *int* - スクロールするX座標。 +* `y` *int* - スクロールするY座標。 +* `direction` *str* - スクロール方向('up' または 'down')。 +* `amount` *int* - スクロール量。 -**Returns**: +**戻り値**: -- `bool` - スクロール操作が成功したかどうか。 - +* `bool` - スクロール操作が成功したかどうか。 -**Example**: +**例**: ```python -# Scroll up +# 上にスクロール scroll_up = await sandbox.computer_use.mouse.scroll(100, 200, "up", 3) -# Scroll down +# 下にスクロール scroll_down = await sandbox.computer_use.mouse.scroll(100, 200, "down", 5) ``` -## AsyncKeyboard +## AsyncKeyboard \{#asynckeyboard\} ```python class AsyncKeyboard() ``` -コンピューター操作(Computer Use)機能におけるキーボード操作。 +コンピューター使用機能におけるキーボード操作 -#### AsyncKeyboard.type +#### AsyncKeyboard.type \{#asynckeyboardtype\} ```python -@intercept_errors(message_prefix="Failed to type text: ") +@intercept_errors(message_prefix="テキストの入力に失敗しました: ") async def type(text: str, delay: Optional[int] = None) -> None ``` 指定したテキストを入力します。 -**Arguments**: +**引数**: -- `text` _str_ - 入力するテキスト。 -- `delay` _int_ - 文字ごとの遅延(ミリ秒)。 - +* `text` *str* - 入力するテキスト。 +* `delay` *int* - 文字ごとの遅延(ミリ秒)。 -**Raises**: +**例外**: -- `DaytonaError` - 入力処理に失敗した場合。 - +* `DaytonaError` - 入力処理に失敗した場合。 -**Example**: +**例**: ```python try: await sandbox.computer_use.keyboard.type("Hello, World!") - print(f"Operation success") + print(f"操作が成功しました") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作が失敗しました: {e}") -# 文字ごとに遅延を入れる場合 +# 文字間に遅延を設定 try: await sandbox.computer_use.keyboard.type("Slow typing", 100) - print(f"Operation success") + print(f"操作が成功しました") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作が失敗しました: {e}") ``` -#### AsyncKeyboard.press +#### AsyncKeyboard.press \{#asynckeyboardpress\} ```python -@intercept_errors(message_prefix="Failed to press key: ") +@intercept_errors(message_prefix="キーの押下に失敗しました: ") async def press(key: str, modifiers: Optional[List[str]] = None) -> None ``` -必要に応じてモディファイアキーと組み合わせてキーを押します。 +オプションの修飾キーとともにキーを押します。 -**Arguments**: +**引数**: -- `key` _str_ - 押下するキー(例: 'Enter', 'Escape', 'Tab', 'a', 'A')。 -- `modifiers` _List[str]_ - モディファイアキー('ctrl', 'alt', 'meta', 'shift')。 - +* `key` *str* - 押すキー(例: 'Enter', 'Escape', 'Tab', 'a', 'A')。 +* `modifiers` *List[str]* - 修飾キー('ctrl', 'alt', 'meta', 'shift')。 -**Raises**: +**例外**: -- `DaytonaError` - キー押下処理に失敗した場合。 - +* `DaytonaError` - 押下操作に失敗した場合。 -**Example**: +**例**: ```python -# Enter を押す +# Enterキーを押す try: await sandbox.computer_use.keyboard.press("Return") - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") -# Ctrl+C を押す +# Ctrl+Cを押す try: await sandbox.computer_use.keyboard.press("c", ["ctrl"]) - print(f"Operation success") + print(f"操作成功") -# Ctrl+Shift+T を押す +# Ctrl+Shift+Tを押す try: await sandbox.computer_use.keyboard.press("t", ["ctrl", "shift"]) - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") ``` -#### AsyncKeyboard.hotkey +#### AsyncKeyboard.hotkey \{#asynckeyboardhotkey\} ```python -@intercept_errors(message_prefix="Failed to press hotkey: ") +@intercept_errors(message_prefix="ホットキーの押下に失敗しました: ") async def hotkey(keys: str) -> None ``` -ホットキーの組み合わせを押します。 +ホットキーの組み合わせを押下します。 -**Arguments**: +**引数**: -- `keys` _str_ - ホットキーの組み合わせ(例: 'ctrl+c', 'alt+tab', 'cmd+shift+t')。 - +* `keys` *str* - ホットキーの組み合わせ(例: 'ctrl+c', 'alt+tab', 'cmd+shift+t')。 -**Raises**: +**例外**: -- `DaytonaError` - ホットキー処理に失敗した場合。 - +* `DaytonaError` - ホットキー操作に失敗した場合。 -**Example**: +**例**: ```python # コピー try: await sandbox.computer_use.keyboard.hotkey("ctrl+c") - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") # ペースト try: await sandbox.computer_use.keyboard.hotkey("ctrl+v") - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") # Alt+Tab try: await sandbox.computer_use.keyboard.hotkey("alt+tab") - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") ``` -## AsyncScreenshot +## AsyncScreenshot \{#asyncscreenshot\} ```python class AsyncScreenshot() ``` -コンピューター操作(Computer Use)機能向けのスクリーンショット処理。 +コンピューター使用機能におけるスクリーンショットの操作 -#### AsyncScreenshot.take\_full\_screen +#### AsyncScreenshot.take_full_screen \{#asyncscreenshottake_full_screen\} ```python -@intercept_errors(message_prefix="Failed to take screenshot: ") +@intercept_errors(message_prefix="スクリーンショットの撮影に失敗しました: ") async def take_full_screen(show_cursor: bool = False) -> ScreenshotResponse ``` -画面全体のスクリーンショットを取得します。 +画面全体のスクリーンショットを撮影します。 **引数**: -- `show_cursor` _bool_ - スクリーンショットにカーソルを表示するかどうか。 - +* `show_cursor` *bool* - スクリーンショットにカーソルを表示するかどうか。 **戻り値**: -- `ScreenshotResponse` - 画像をbase64エンコードしたスクリーンショットデータ。 - +* `ScreenshotResponse` - 画像を base64 エンコードしたスクリーンショットデータ。 **例**: ```python screenshot = await sandbox.computer_use.screenshot.take_full_screen() -print(f"Screenshot size: {screenshot.width}x{screenshot.height}") +print(f"スクリーンショットサイズ: {screenshot.width}x{screenshot.height}") -# With cursor visible +# カーソルを表示する場合 with_cursor = await sandbox.computer_use.screenshot.take_full_screen(True) ``` -#### AsyncScreenshot.take\_region +#### AsyncScreenshot.take_region \{#asyncscreenshottake_region\} ```python @intercept_errors(message_prefix="Failed to take region screenshot: ") async def take_region(region: ScreenshotRegion, - show_cursor: bool = False) -> RegionScreenshotResponse + show_cursor: bool = False) -> ScreenshotResponse ``` -指定した領域のスクリーンショットを取得します。 +特定の領域のスクリーンショットを取得します。 **引数**: -- `region` _ScreenshotRegion_ - 取得対象の領域。 -- `show_cursor` _bool_ - スクリーンショットにカーソルを表示するかどうか。 - +* `region` *ScreenshotRegion* - キャプチャする領域。 +* `show_cursor` *bool* - スクリーンショットにカーソルを表示するかどうか。 **戻り値**: -- `RegionScreenshotResponse` - 画像をbase64エンコードしたスクリーンショットデータ。 - +* `ScreenshotResponse` - 画像を base64 エンコードしたスクリーンショットデータ。 **例**: ```python region = ScreenshotRegion(x=100, y=100, width=300, height=200) screenshot = await sandbox.computer_use.screenshot.take_region(region) -print(f"Captured region: {screenshot.region.width}x{screenshot.region.height}") +print(f"キャプチャした領域: {screenshot.region.width}x{screenshot.region.height}") ``` -#### AsyncScreenshot.take\_compressed +#### AsyncScreenshot.take_compressed \{#asyncscreenshottake_compressed\} ```python -@intercept_errors(message_prefix="Failed to take compressed screenshot: ") +@intercept_errors(message_prefix="圧縮スクリーンショットの取得に失敗しました: ") async def take_compressed( - options: Optional[ScreenshotOptions] = None -) -> CompressedScreenshotResponse + options: Optional[ScreenshotOptions] = None) -> ScreenshotResponse ``` -画面全体の圧縮スクリーンショットを取得します。 +画面全体の圧縮済みスクリーンショットを取得します。 **引数**: -- `options` _ScreenshotOptions_ - 圧縮および表示のオプション。 - +* `options` *ScreenshotOptions* - 圧縮および表示に関するオプション。 **戻り値**: -- `CompressedScreenshotResponse` - 圧縮済みスクリーンショットデータ。 - +* `ScreenshotResponse` - 圧縮済みスクリーンショットデータ。 **例**: ```python -# Default compression +# デフォルト圧縮 screenshot = await sandbox.computer_use.screenshot.take_compressed() -# High quality JPEG +# 高品質JPEG jpeg = await sandbox.computer_use.screenshot.take_compressed( ScreenshotOptions(format="jpeg", quality=95, show_cursor=True) ) -# Scaled down PNG +# 縮小されたPNG scaled = await sandbox.computer_use.screenshot.take_compressed( ScreenshotOptions(format="png", scale=0.5) ) ``` -#### AsyncScreenshot.take\_compressed\_region +#### AsyncScreenshot.take_compressed_region \{#asyncscreenshottake_compressed_region\} ```python @intercept_errors( - message_prefix="Failed to take compressed region screenshot: ") + message_prefix="圧縮領域のスクリーンショット取得に失敗しました: ") async def take_compressed_region( - region: ScreenshotRegion, - options: Optional[ScreenshotOptions] = None -) -> CompressedScreenshotResponse + region: ScreenshotRegion, + options: Optional[ScreenshotOptions] = None) -> ScreenshotResponse ``` -指定した領域の圧縮スクリーンショットを取得します。 +特定の領域のスクリーンショットを圧縮して取得します。 **引数**: -- `region` _ScreenshotRegion_ - 取得対象の領域。 -- `options` _ScreenshotOptions_ - 圧縮および表示のオプション。 - +* `region` *ScreenshotRegion* - キャプチャする領域。 +* `options` *ScreenshotOptions* - 圧縮および表示に関するオプション。 **戻り値**: -- `CompressedScreenshotResponse` - 圧縮済みスクリーンショットデータ。 - +* `ScreenshotResponse` - 圧縮されたスクリーンショットデータ。 **例**: @@ -616,91 +580,88 @@ screenshot = await sandbox.computer_use.screenshot.take_compressed_region( region, ScreenshotOptions(format="webp", quality=80, show_cursor=True) ) -print(f"Compressed size: {screenshot.size_bytes} bytes") +print(f"圧縮後のサイズ: {screenshot.size_bytes} バイト") ``` -## AsyncDisplay +## AsyncDisplay \{#asyncdisplay\} ```python class AsyncDisplay() ``` -コンピューター操作機能向けのディスプレイ操作。 +コンピューター使用機能のディスプレイ操作 -#### AsyncDisplay.get\_info +#### AsyncDisplay.get_info \{#asyncdisplayget_info\} ```python -@intercept_errors(message_prefix="Failed to get display info: ") +@intercept_errors(message_prefix="ディスプレイ情報の取得に失敗しました: ") async def get_info() -> DisplayInfoResponse ``` -ディスプレイ情報を取得します。 +ディスプレイに関する情報を取得します。 -**Returns**: +**戻り値**: -- `DisplayInfoResponse` - プライマリディスプレイおよび利用可能なすべてのディスプレイを含む情報。 - +* `DisplayInfoResponse` - 既定のディスプレイ(プライマリ)および利用可能なすべてのディスプレイを含むディスプレイ情報。 -**Example**: +**例**: ```python info = await sandbox.computer_use.display.get_info() -print(f"Primary display: {info.primary_display.width}x{info.primary_display.height}") -print(f"Total displays: {info.total_displays}") +print(f"プライマリディスプレイ: {info.primary_display.width}x{info.primary_display.height}") +print(f"総ディスプレイ数: {info.total_displays}") for i, display in enumerate(info.displays): - print(f"Display {i}: {display.width}x{display.height} at {display.x},{display.y}") + print(f"ディスプレイ {i}: {display.width}x{display.height} at {display.x},{display.y}") ``` -#### AsyncDisplay.get\_windows +#### AsyncDisplay.get_windows \{#asyncdisplayget_windows\} ```python -@intercept_errors(message_prefix="Failed to get windows: ") +@intercept_errors(message_prefix="ウィンドウの取得に失敗しました: ") async def get_windows() -> WindowsResponse ``` 開いているウィンドウの一覧を取得します。 -**Returns**: +**戻り値**: -- `WindowsResponse` - IDとタイトルを含む開いているウィンドウの一覧。 - +* `WindowsResponse` - ID とタイトルを含む開いているウィンドウの一覧。 -**Example**: +**例**: ```python windows = await sandbox.computer_use.display.get_windows() -print(f"Found {windows.count} open windows:") +print(f"{windows.count}個の開いているウィンドウが見つかりました:") for window in windows.windows: print(f"- {window.title} (ID: {window.id})") ``` -## ScreenshotRegion +## ScreenshotRegion(スクリーンショット・リージョン) \{#screenshotregion\} ```python class ScreenshotRegion() ``` -スクリーンショット操作のための領域座標。 +スクリーンショット操作用の領域座標。 **属性**: -- `x` _int_ - 領域のX座標。 -- `y` _int_ - 領域のY座標。 -- `width` _int_ - 領域の幅。 -- `height` _int_ - 領域の高さ。 +* `x` *int* - 領域の X 座標。 +* `y` *int* - 領域の Y 座標。 +* `width` *int* - 領域の幅。 +* `height` *int* - 領域の高さ。 -## ScreenshotOptions +## ScreenshotOptions \{#screenshotoptions\} ```python class ScreenshotOptions() ``` -スクリーンショットの圧縮や表示に関するオプション。 - -**属性**: +スクリーンショットの圧縮および表示に関するオプション。 -- `show_cursor` _bool_ - スクリーンショットにカーソルを表示するかどうか。 -- `fmt` _str_ - 画像形式(例: 'png'、'jpeg'、'webp')。 -- `quality` _int_ - 圧縮品質(0〜100)。 -- `scale` _float_ - スクリーンショットの拡大率。 +**Attributes**: +* `show_cursor` *bool* - スクリーンショットにカーソルを表示するかどうか。 +* `fmt` *str* - 画像形式(例: 'png', 'jpeg', 'webp')。 +* `quality` *int* - 圧縮品質(0〜100)。 +* `scale` *float* - スクリーンショットのスケール係数。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/async/async-daytona.mdx b/apps/docs/src/content/docs/ja/python-sdk/async/async-daytona.mdx index 842e1bba6..274ed3dd9 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/async/async-daytona.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/async/async-daytona.mdx @@ -3,32 +3,33 @@ title: "AsyncDaytona" hideTitleOnPage: true --- -## AsyncDaytona +## AsyncDaytona \{#asyncdaytona\} ```python class AsyncDaytona() ``` -Daytona API と対話するためのメインクラス。 +Daytona API とやり取りするためのメインクラス。 -このクラスは、Daytona サンドボックスの作成・管理・操作を非同期メソッドで提供します。 -明示的な設定、または環境変数を用いて初期化できます。 +このクラスは、Daytona のサンドボックスを作成・管理・操作するための非同期メソッドを提供します。 +明示的な設定または環境変数を用いて初期化できます。 **属性**: -- `volume` _AsyncVolumeService_ - ボリュームを管理するサービス。 -- `snapshot` _AsyncSnapshotService_ - スナップショットを管理するサービス。 - +* `volume` *AsyncVolumeService* - ボリュームを管理するサービス。 +* `snapshot` *AsyncSnapshotService* - スナップショットを管理するサービス。 **例**: - 環境変数を使用する場合: +環境変数を使用する場合: + ```python async with AsyncDaytona() as daytona: # Uses DAYTONA_API_KEY, DAYTONA_API_URL sandbox = await daytona.create() ``` - - 明示的な設定を使用する場合: + +明示的な設定を使用する場合: + ```python config = DaytonaConfig( api_key="your-api-key", @@ -42,28 +43,27 @@ finally: await daytona.close() ``` -#### AsyncDaytona.__init__ +#### AsyncDaytona.__init__ \{#asyncdaytona__init__\} ```python def __init__(config: Optional[DaytonaConfig] = None) ``` -任意の設定で Daytona インスタンスを初期化します。 +オプションの設定で Daytona インスタンスを初期化します。 + +設定が指定されていない場合は、環境変数から読み込みます: -config が指定されていない場合、次の環境変数から読み取ります: -- `DAYTONA_API_KEY`: 認証に必要な API キー(必須) -- `DAYTONA_API_URL`: API の URL(必須) -- `DAYTONA_TARGET`: ターゲット環境(任意、デフォルトは 'us') +* `DAYTONA_API_KEY`: 認証に必須の API キー +* `DAYTONA_API_URL`: 必須の API URL +* `DAYTONA_TARGET`: 任意のターゲット環境(未指定の場合、組織のデフォルトリージョンが使用されます) **引数**: -- `config` _Optional[DaytonaConfig]_ - api_key、api_url、target を含むオブジェクト。 - +* `config` *Optional[DaytonaConfig]* - api_key、api_url、target を含むオブジェクト。 -**送出**: +**例外**: -- `DaytonaError` - API キーが config または環境変数で提供されていない場合 - +* `DaytonaError` - 設定または環境変数で API キーが指定されていない場合 **例**: @@ -82,32 +82,31 @@ daytona2 = AsyncDaytona(config) await daytona2.close() ``` -#### AsyncDaytona.__aenter__ +#### AsyncDaytona.**aenter** \{#asyncdaytona__aenter__\} ```python async def __aenter__() ``` -非同期コンテキストマネージャへのエントリ。 +非同期コンテキストマネージャーの開始処理。 -#### AsyncDaytona.__aexit__ +#### AsyncDaytona.__aexit__ \{#asyncdaytona__aexit__\} ```python async def __aexit__(exc_type, exc_value, traceback) ``` -非同期コンテキストマネージャの終了—適切なクリーンアップを保証します。 +非同期コンテキストマネージャの終了処理—適切にクリーンアップします。 -#### AsyncDaytona.close +#### AsyncDaytona.close \{#asyncdaytonaclose\} ```python async def close() ``` -HTTP セッションを閉じてリソースをクリーンアップします。 +HTTP セッションを閉じ、リソースをクリーンアップします。 -このメソッドは AsyncDaytona インスタンスの使用を終えたときに呼び出し、 -基盤となる HTTP セッションを適切に閉じてリソースリークを防ぎます。 +AsyncDaytona インスタンスの使用が完了したら、このメソッドを呼び出してください。基盤となる HTTP セッションを適切に閉じ、リソースのリークを防ぎます。 **例**: @@ -115,20 +114,21 @@ HTTP セッションを閉じてリソースをクリーンアップします。 daytona = AsyncDaytona() try: sandbox = await daytona.create() - # ... use sandbox ... + # ... サンドボックスを使用 ... finally: await daytona.close() ``` - - あるいは、非同期コンテキストマネージャとして使用するのが望ましいです: + +あるいは、より良い方法として非同期コンテキストマネージャーとして使用します: + ```python async with AsyncDaytona() as daytona: sandbox = await daytona.create() - # ... use sandbox ... + # ... サンドボックスを使用 ... # 自動的にクローズされます ``` -#### AsyncDaytona.create +#### AsyncDaytona.create \{#asyncdaytonacreate\} ```python @overload @@ -137,35 +137,34 @@ async def create(params: Optional[CreateSandboxFromSnapshotParams] = None, timeout: Optional[float] = 60) -> AsyncSandbox ``` -指定された、またはデフォルトのスナップショットからサンドボックスを作成します。言語、イメージ、環境変数、ボリュームなど、さまざまなパラメータを指定できます。 +指定した、またはデフォルトのスナップショットからサンドボックスを作成します。言語、イメージ、環境変数、ボリュームなど、さまざまなパラメーターを指定できます。 **引数**: -- `params` _Optional[CreateSandboxFromSnapshotParams]_ - サンドボックス作成用のパラメータ。指定しない場合は、 - デフォルトの Daytona スナップショットと Python 言語が使用されます。 -- `timeout` _Optional[float]_ - サンドボックス作成のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - デフォルトは 60 秒です。 - +* `params` *Optional[CreateSandboxFromSnapshotParams]* - サンドボックス作成用のパラメーター。未指定の場合は、 + デフォルトのDaytonaスナップショットとPython言語が使用されます。 +* `timeout` *Optional[float]* - サンドボックス作成のタイムアウト(秒)。0はタイムアウトなしを意味します。 + デフォルトは60秒です。 **戻り値**: -- `Sandbox` - 作成されたサンドボックスインスタンス。 - +* `Sandbox` - 作成されたサンドボックスのインスタンス。 -**送出**: +**例外**: -- `DaytonaError` - timeout、auto_stop_interval、または auto_archive_interval が負の場合、 +* `DaytonaError` - timeout、auto_stop_interval、またはauto_archive_intervalが負の値の場合、 またはサンドボックスの起動に失敗した/タイムアウトした場合 - **例**: - デフォルトの Python サンドボックスを作成: +デフォルトのPythonサンドボックスを作成: + ```python sandbox = await daytona.create() ``` - - カスタムサンドボックスを作成: + +カスタムサンドボックスを作成: + ```python params = CreateSandboxFromSnapshotParams( language="python", @@ -178,7 +177,7 @@ params = CreateSandboxFromSnapshotParams( sandbox = await daytona.create(params, timeout=40) ``` -#### AsyncDaytona.create +#### AsyncDaytona.create \{#asyncdaytonacreate\} ```python @overload @@ -189,36 +188,35 @@ async def create( on_snapshot_create_logs: Callable[[str], None] = None) -> AsyncSandbox ``` -指定したレジストリで利用可能なイメージ、または宣言的な Daytona イメージからサンドボックスを作成します。 +レジストリで利用可能な指定のイメージ、または宣言的な Daytona イメージからサンドボックスを作成します。 リソース、言語、イメージ、環境変数、ボリュームなど、さまざまなパラメータを指定できます。Daytona は指定されたイメージからスナップショットを作成し、それを用いてサンドボックスを作成します。 **引数**: -- `params` _Optional[CreateSandboxFromImageParams]_ - イメージからサンドボックスを作成するためのパラメータ。 -- `timeout` _Optional[float]_ - サンドボックス作成のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - デフォルトは 60 秒です。 -- `on_snapshot_create_logs` _Callable[[str], None]_ - スナップショット作成ログを処理するコールバック関数。 - +* `params` *Optional[CreateSandboxFromImageParams]* - イメージからサンドボックスを作成するためのパラメータ。 +* `timeout` *Optional[float]* - サンドボックス作成のタイムアウト(秒)。0 はタイムアウトなしを意味します。 + 既定値は 60 秒です。 +* `on_snapshot_create_logs` *Callable[[str], None]* - スナップショット作成時のログを処理するコールバック関数。 **戻り値**: -- `Sandbox` - 作成されたサンドボックスインスタンス。 - +* `Sandbox` - 作成されたサンドボックスインスタンス。 **例外**: -- `DaytonaError` - timeout、auto_stop_interval、または auto_archive_interval が負の場合、 - もしくはサンドボックスの起動に失敗した場合やタイムアウトした場合 - +* `DaytonaError` - timeout、auto_stop_interval、または auto_archive_interval が負の値の場合、 + あるいはサンドボックスの起動に失敗した、またはタイムアウトした場合。 **例**: - 既定の Python サンドボックスをイメージから作成: +イメージからデフォルトの Python サンドボックスを作成: + ```python sandbox = await daytona.create(CreateSandboxFromImageParams(image="debian:12.9")) ``` - - 宣言的なイメージ定義からカスタムサンドボックスを作成: + +宣言的なイメージ定義からカスタム サンドボックスを作成: + ```python declarative_image = ( Image.base("alpine:3.18") @@ -241,7 +239,7 @@ sandbox = await daytona.create( ) ``` -#### AsyncDaytona.delete +#### AsyncDaytona.delete \{#asyncdaytonadelete\} ```python async def delete(sandbox: AsyncSandbox, timeout: Optional[float] = 60) -> None @@ -251,135 +249,128 @@ async def delete(sandbox: AsyncSandbox, timeout: Optional[float] = 60) -> None **引数**: -- `sandbox` _Sandbox_ - 削除するサンドボックスインスタンス。 -- `timeout` _Optional[float]_ - サンドボックス削除のタイムアウト(秒)。0 はタイムアウトなしを意味します。 +* `sandbox` *Sandbox* - 削除するサンドボックスのインスタンス。 +* `timeout` *Optional[float]* - サンドボックス削除のタイムアウト(秒)。0 はタイムアウトなしを意味します。 デフォルトは 60 秒です。 - **例外**: -- `DaytonaError` - サンドボックスの削除に失敗した場合、またはタイムアウトした場合 - +* `DaytonaError` - サンドボックスの削除に失敗した場合、またはタイムアウトした場合 **例**: ```python sandbox = await daytona.create() -# ... use sandbox ... +# ... サンドボックスを使用 ... await daytona.delete(sandbox) # 完了時にクリーンアップ ``` -#### AsyncDaytona.get +#### AsyncDaytona.get \{#asyncdaytonaget\} ```python -@intercept_errors(message_prefix="Failed to get sandbox: ") -async def get(sandbox_id: str) -> AsyncSandbox +@intercept_errors(message_prefix="サンドボックスの取得に失敗しました: ") +async def get(sandbox_id_or_name: str) -> AsyncSandbox ``` -ID でサンドボックスを取得します。 +ID または名前でサンドボックスを取得します。 **引数**: -- `sandbox_id` _str_ - 取得するサンドボックスの ID。 - +* `sandbox_id_or_name` *str* - 取得するサンドボックスのIDまたは名前。 **戻り値**: -- `Sandbox` - サンドボックスインスタンス。 - +* `Sandbox` - サンドボックスのインスタンス。 **例外**: -- `DaytonaError` - sandbox_id が指定されていない場合。 - +* `DaytonaError` - `sandbox_id_or_name` が指定されていない場合。 **例**: ```python -sandbox = await daytona.get("my-sandbox-id") -print(sandbox.status) +sandbox = await daytona.get("my-sandbox-id-or-name") +print(sandbox.state) ``` -#### AsyncDaytona.find\_one +#### AsyncDaytona.find_one \{#asyncdaytonafind_one\} ```python -@intercept_errors(message_prefix="Failed to find sandbox: ") -async def find_one(sandbox_id: Optional[str] = None, +@intercept_errors(message_prefix="サンドボックスの検索に失敗しました: ") +async def find_one(sandbox_id_or_name: Optional[str] = None, labels: Optional[Dict[str, str]] = None) -> AsyncSandbox ``` -ID またはラベルでサンドボックスを検索します。 +ID、名前、またはラベルでサンドボックスを検索します。 **引数**: -- `sandbox_id` _Optional[str]_ - 取得するサンドボックスの ID。 -- `labels` _Optional[Dict[str, str]]_ - サンドボックスをフィルタリングするためのラベル。 - +* `sandbox_id_or_name` *Optional[str]* - 取得するサンドボックスのIDまたは名前。 +* `labels` *Optional[Dict[str, str]]* - サンドボックスを絞り込むためのラベル。 **戻り値**: -- `Sandbox` - ID またはラベルに一致する最初のサンドボックス。 - +* `Sandbox` - ID、名前、またはラベルに一致する最初のサンドボックス。 -**例外**: +**送出**: -- `DaytonaError` - サンドボックスが見つからない場合。 - +* `DaytonaError` - サンドボックスが見つからない場合。 **例**: ```python sandbox = await daytona.find_one(labels={"my-label": "my-value"}) -print(f"Sandbox ID: {sandbox.id} State: {sandbox.state}") +print(f"サンドボックスID: {sandbox.id} 状態: {sandbox.state}") ``` -#### AsyncDaytona.list +#### AsyncDaytona.list \{#asyncdaytonalist\} ```python -@intercept_errors(message_prefix="Failed to list sandboxes: ") -async def list(labels: Optional[Dict[str, str]] = None) -> List[AsyncSandbox] +@intercept_errors(message_prefix="サンドボックスの一覧取得に失敗しました: ") +async def list(labels: Optional[Dict[str, str]] = None, + page: Optional[int] = None, + limit: Optional[int] = None) -> AsyncPaginatedSandboxes ``` -ラベルでフィルタリングされたサンドボックスの一覧を取得します。 +ラベルでフィルタしたサンドボックスのページネーション付き一覧を返します。 **引数**: -- `labels` _Optional[Dict[str, str]]_ - サンドボックスをフィルタリングするためのラベル。 - +* `labels` *Optional[Dict[str, str]]* - サンドボックスを絞り込むためのラベル。 +* `page` *Optional[int]* - ページ番号(1から開始)。 +* `limit` *Optional[int]* - 1ページあたりの最大件数。 **戻り値**: -- `List[Sandbox]` - ラベルに一致するサンドボックスインスタンスのリスト。 - +* `AsyncPaginatedSandboxes` - ラベルに一致するサンドボックスインスタンスのページネーション付き一覧。 **例**: ```python -sandboxes = await daytona.list(labels={"my-label": "my-value"}) -for sandbox in sandboxes: - print(f"{sandbox.id}: {sandbox.status}") +result = await daytona.list(labels={"my-label": "my-value"}, page=2, limit=10) +for sandbox in result.items: + print(f"{sandbox.id}: {sandbox.state}") ``` -#### AsyncDaytona.start +#### AsyncDaytona.start \{#asyncdaytonastart\} ```python async def start(sandbox: AsyncSandbox, timeout: Optional[float] = 60) -> None ``` -サンドボックスを起動し、準備完了になるまで待機します。 +サンドボックスを起動し、準備が整うまで待機します。 **引数**: -- `sandbox` _Sandbox_ - 起動するサンドボックス。 -- `timeout` _Optional[float]_ - サンドボックスの起動完了を待機するタイムアウト(秒)。省略可。 +* `sandbox` *Sandbox* - 起動するサンドボックス。 +* `timeout` *Optional[float]* - サンドボックスの起動完了まで待機するタイムアウト(秒)。\ 0 はタイムアウトなしを意味します。デフォルトは 60 秒です。 - -**例外**: +**送出**: -- `DaytonaError` - タイムアウトが負の値の場合、またはサンドボックスの起動に失敗した場合・タイムアウトした場合 +* `DaytonaError` - タイムアウトが負の場合、サンドボックスの起動に失敗した場合、またはタイムアウトした場合 -#### AsyncDaytona.stop +#### AsyncDaytona.stop \{#asyncdaytonastop\} ```python async def stop(sandbox: AsyncSandbox, timeout: Optional[float] = 60) -> None @@ -389,17 +380,14 @@ async def stop(sandbox: AsyncSandbox, timeout: Optional[float] = 60) -> None **引数**: -- `sandbox` _Sandbox_ - 停止するサンドボックス。 -- `timeout` _Optional[float]_ - サンドボックスの停止完了を待機するタイムアウト(秒)。省略可。 - 0 はタイムアウトなしを意味します。デフォルトは 60 秒です。 - +* `sandbox` *Sandbox* - 停止対象のサンドボックス +* `timeout` *Optional[float]* - サンドボックス停止のタイムアウト(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒。 **例外**: -- `DaytonaError` - タイムアウトが負の値の場合、またはサンドボックスの停止に失敗した場合・タイムアウトした場合 - +* `DaytonaError` - タイムアウトが負の値の場合、またはサンドボックスの停止に失敗・タイムアウトした場合 -## CodeLanguage +## CodeLanguage \{#codelanguage\} ```python @dataclass @@ -409,44 +397,39 @@ class CodeLanguage(Enum) Daytona がサポートするプログラミング言語 **列挙体メンバー**: - - `PYTHON` ("python") - - `TYPESCRIPT` ("typescript") - - `JAVASCRIPT` ("javascript") -## DaytonaConfig +* `PYTHON` ("python") + * `TYPESCRIPT` ("typescript") + * `JAVASCRIPT` ("javascript") + +## DaytonaConfig(Daytona 設定) \{#daytonaconfig\} ```python class DaytonaConfig(BaseModel) ``` -Daytona クライアントを初期化するための設定オプション。 +Daytona クライアントを初期化するための構成オプション。 **属性**: -- `api_key` _Optional[str]_ - Daytona API への認証に使用する API キー。未設定の場合は - 環境変数 `DAYTONA_API_KEY` で指定するか、代わりに JWT トークンを指定する必要があります。 -- `jwt_token` _Optional[str]_ - Daytona API への認証に使用する JWT トークン。未設定の場合は - 環境変数 `DAYTONA_JWT_TOKEN` で指定するか、代わりに API キーを指定する必要があります。 -- `organization_id` _Optional[str]_ - JWT ベース認証で使用する組織 ID。JWT トークンが指定されている場合は必須で、 - ここで指定するか、環境変数 `DAYTONA_ORGANIZATION_ID` に設定する必要があります。 -- `api_url` _Optional[str]_ - Daytona API の URL。ここまたは環境変数 `DAYTONA_API_URL` で未設定の場合は、 - 既定値は `'https://app.daytona.io/api'` です。 -- `server_url` _Optional[str]_ - 廃止予定。代わりに `api_url` を使用してください。このプロパティは - 将来のバージョンで削除されます。 -- `target` _Optional[str]_ - サンドボックスのターゲットとなるランナーのロケーション。ここまたは - 環境変数 `DAYTONA_TARGET` で未設定の場合は、既定で `'us'` になります。 - +* `api_key` *Optional[str]* - Daytona API への認証に使用する API キー。未設定の場合は、環境変数 `DAYTONA_API_KEY` で指定するか、代わりに JWT トークンを指定する必要があります。 +* `jwt_token` *Optional[str]* - Daytona API への認証に使用する JWT トークン。未設定の場合は、環境変数 `DAYTONA_JWT_TOKEN` で指定するか、代わりに API キーを指定する必要があります。 +* `organization_id` *Optional[str]* - JWT ベースの認証に使用される組織 ID。JWT トークンが指定されている場合は必須で、ここで指定するか環境変数 `DAYTONA_ORGANIZATION_ID` に設定する必要があります。 +* `api_url` *Optional[str]* - Daytona API の URL。ここまたは環境変数 `DAYTONA_API_URL` で未設定の場合、既定値は `'https://app.daytona.io/api'` です。 +* `server_url` *Optional[str]* - 非推奨。代わりに `api_url` を使用してください。このプロパティは将来のバージョンで削除されます。 +* `target` *Optional[str]* - サンドボックスのターゲットとなるランナーのロケーション。ここまたは環境変数 `DAYTONA_TARGET` で未設定の場合、組織の既定リージョンが使用されます。 **例**: ```python config = DaytonaConfig(api_key="your-api-key") ``` + ```python config = DaytonaConfig(jwt_token="your-jwt-token", organization_id="your-organization-id") ``` -## CreateSandboxBaseParams +## CreateSandboxBaseParams \{#createsandboxbaseparams\} ```python class CreateSandboxBaseParams(BaseModel) @@ -456,49 +439,51 @@ class CreateSandboxBaseParams(BaseModel) **属性**: -- `language` _Optional[CodeLanguage]_ - サンドボックスのプログラミング言語。既定は "python"。 -- `os_user` _Optional[str]_ - サンドボックスの OS ユーザー。 -- `env_vars` _Optional[Dict[str, str]]_ - サンドボックスで設定する環境変数。 -- `labels` _Optional[Dict[str, str]]_ - サンドボックスのカスタムラベル。 -- `public` _Optional[bool]_ - サンドボックスを公開にするかどうか。 -- `timeout` _Optional[float]_ - サンドボックスの作成と起動のタイムアウト(秒)。 -- `auto_stop_interval` _Optional[int]_ - サンドボックスでイベントが発生しない場合に、 - 自動的に停止するまでの間隔(分)。既定は 15 分。 +* `name` *Optional[str]* - サンドボックス名。 +* `language` *Optional[CodeLanguage]* - サンドボックスのプログラミング言語。既定は "python"。 +* `os_user` *Optional[str]* - サンドボックスの OS ユーザー。 +* `env_vars` *Optional[Dict[str, str]]* - サンドボックスで設定する環境変数。 +* `labels` *Optional[Dict[str, str]]* - サンドボックスのカスタムラベル。 +* `public` *Optional[bool]* - サンドボックスを公開にするかどうか。 +* `timeout` *Optional[float]* - サンドボックスの作成と起動のタイムアウト(秒)。 +* `auto_stop_interval` *Optional[int]* - この時間内にサンドボックスのイベントが発生しない場合に + 自動停止するまでの間隔(分)。既定は 15 分。 0 は自動停止なしを意味します。 -- `auto_archive_interval` _Optional[int]_ - 連続して停止状態のサンドボックスが +* `auto_archive_interval` *Optional[int]* - 継続して停止中のサンドボックスが 自動的にアーカイブされるまでの間隔(分)。既定は 7 日。 0 は最大の間隔が使用されることを意味します。 -- `auto_delete_interval` _Optional[int]_ - 連続して停止状態のサンドボックスが +* `auto_delete_interval` *Optional[int]* - 継続して停止中のサンドボックスが 自動的に削除されるまでの間隔(分)。既定では自動削除は無効です。 - 負の値は無効、0 は停止と同時に即削除を意味します。 -- `volumes` _Optional[List[VolumeMount]]_ - サンドボックスにアタッチするボリュームのマウント一覧。 -- `network_block_all` _Optional[bool]_ - サンドボックスのすべてのネットワークアクセスをブロックするかどうか。 -- `network_allow_list` _Optional[str]_ - サンドボックスで許可する CIDR ネットワークアドレスのカンマ区切りリスト。 + 負の値は無効、0 は停止と同時に即時削除を意味します。 +* `volumes` *Optional[List[VolumeMount]]* - サンドボックスにアタッチするボリュームのマウント一覧。 +* `network_block_all` *Optional[bool]* - サンドボックスのすべてのネットワークアクセスをブロックするかどうか。 +* `network_allow_list` *Optional[str]* - サンドボックスで許可する CIDR ネットワークアドレスのカンマ区切りリスト。 +* `ephemeral` *Optional[bool]* - サンドボックスを使い捨て(エフェメラル)にするかどうか。 + True の場合、auto_delete_interval は 0 に設定されます。 -## CreateSandboxFromImageParams +## CreateSandboxFromImageParams \{#createsandboxfromimageparams\} ```python class CreateSandboxFromImageParams(CreateSandboxBaseParams) ``` -イメージから新規サンドボックスを作成するためのパラメータ。 +イメージから新しいサンドボックスを作成するためのパラメータ。 **属性**: -- `image` _Union[str, Image]_ - サンドボックスで使用するカスタム Docker イメージ。Image オブジェクトが渡された場合は、 - イメージが動的にビルドされます。 -- `resources` _Optional[Resources]_ - サンドボックスのリソース設定。指定しない場合、サンドボックスは - デフォルトのリソースを使用します。 +* `image` *Union[str, Image]* - サンドボックスで使用するカスタム Docker イメージ。Image オブジェクトが指定された場合、 + イメージは動的にビルドされます。 +* `resources` *Optional[Resources]* - サンドボックスのリソース設定。指定しない場合、サンドボックスは + 既定のリソースを使用します。 -## CreateSandboxFromSnapshotParams +## CreateSandboxFromSnapshotParams \{#createsandboxfromsnapshotparams\} ```python class CreateSandboxFromSnapshotParams(CreateSandboxBaseParams) ``` -スナップショットから新しいサンドボックスを作成するためのパラメーター。 +スナップショットから新しいサンドボックスを作成するためのパラメータ。 **属性**: -- `snapshot` _Optional[str]_ - サンドボックスに使用するスナップショットの名前。 - +* `snapshot` *Optional[str]* - サンドボックスに使用するスナップショット名。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/python-sdk/async/async-file-system.mdx b/apps/docs/src/content/docs/ja/python-sdk/async/async-file-system.mdx index f9e7c76eb..d7690a8f1 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/async/async-file-system.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/async/async-file-system.mdx @@ -3,78 +3,77 @@ title: "AsyncFileSystem" hideTitleOnPage: true --- -## AsyncFileSystem +## AsyncFileSystem \{#asyncfilesystem\} ```python class AsyncFileSystem() ``` -サンドボックス内でのファイルシステム操作を提供します。 +サンドボックス内のファイルシステム操作を提供します。 -このクラスは、Daytona サンドボックス内で実行できるファイルシステム操作に対する高水準インターフェースを実装します。 +このクラスは、Daytonaのサンドボックス内で実行可能なファイルシステム操作に対する高レベルなインターフェースを実装します。 -#### AsyncFileSystem.\_\_init\_\_ +#### AsyncFileSystem.**init** \{#asyncfilesystem__init__\} ```python -def __init__(sandbox_id: str, toolbox_api: ToolboxApi, - get_root_dir: Callable[[], Awaitable[str]]) +def __init__(api_client: FileSystemApi, + ensure_toolbox_url: Callable[[], Awaitable[None]]) ``` 新しい FileSystem インスタンスを初期化します。 -**Arguments**: +**引数**: -- `sandbox_id` _str_ - サンドボックス ID。 -- `toolbox_api` _ToolboxApi_ - サンドボックス操作用の API クライアント。 -- `get_root_dir` _Callable[[], str]_ - サンドボックスの既定のルートディレクトリを取得する関数。 +* `api_client` *FileSystemApi* - サンドボックスのファイルシステム操作用 API クライアント。 +* `ensure_toolbox_url` *Callable[[], Awaitable[None]]* - Toolbox API の URL が初期化済みであることを保証します。 + API クライアントの非公開メソッドを呼び出す前に必ず実行してください。 -#### AsyncFileSystem.create\_folder +#### AsyncFileSystem.create_folder \{#asyncfilesystemcreate_folder\} ```python -@intercept_errors(message_prefix="Failed to create folder: ") +@intercept_errors(message_prefix="フォルダーの作成に失敗しました: ") async def create_folder(path: str, mode: str) -> None ``` -指定されたパスに、与えられた権限でサンドボックス内に新しいディレクトリを作成します。 +指定したパスに、指定の権限でサンドボックス内に新しいディレクトリを作成します。 -**Arguments**: +**引数**: -- `path` _str_ - フォルダを作成するパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `mode` _str_ - 8 進数形式のフォルダ権限(例: "755" は rwxr-xr-x)。 - +* `path` *str* - フォルダを作成するパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `mode` *str* - 8進数形式のフォルダ権限(例: "755" は rwxr-xr-x)。 -**Example**: +**例**: ```python -# 標準的な権限でディレクトリを作成 +# 標準権限でディレクトリを作成 await sandbox.fs.create_folder("workspace/data", "755") -# プライベートなディレクトリを作成 +# プライベートディレクトリを作成 await sandbox.fs.create_folder("workspace/secrets", "700") ``` -#### AsyncFileSystem.delete\_file +#### AsyncFileSystem.delete_file \{#asyncfilesystemdelete_file\} ```python -@intercept_errors(message_prefix="Failed to delete file: ") -async def delete_file(path: str) -> None +@intercept_errors(message_prefix="ファイルの削除に失敗しました: ") +async def delete_file(path: str, recursive: bool = False) -> None ``` サンドボックスからファイルを削除します。 -**Arguments**: +**引数**: -- `path` _str_ - 削除するファイルへの絶対パス。 - +* `path` *str* - 削除するファイルのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `recursive` *bool* - 対象がディレクトリの場合、削除するには true にする必要があります。 -**Example**: +**例**: ```python # ファイルを削除 await sandbox.fs.delete_file("workspace/data/old_file.txt") ``` -#### AsyncFileSystem.download\_file +#### AsyncFileSystem.download_file \{#asyncfilesystemdownload_file\} ```python @overload @@ -82,34 +81,33 @@ async def download_file(remote_path: str, timeout: int = 30 * 60) -> bytes ``` サンドボックスからファイルをダウンロードします。ファイル内容を bytes オブジェクトとして返します。 -ディスクに保存せずにメモリに読み込みたい場合に便利です。 -小さなファイルにのみ使用できます。 +このメソッドは、ディスクに保存せずにファイルをメモリに読み込みたい場合に便利です。 +小容量のファイルにのみ使用できます。 -**Arguments**: +**引数**: -- `remote_path` _str_ - サンドボックス内のファイルへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `timeout` _int_ - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなし。デフォルトは 30 分。 - +* `remote_path` *str* - サンドボックス内のファイルパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `timeout` *int* - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。既定は 30 分です。 -**Returns**: +**戻り値**: -- `bytes` - ファイル内容の bytes オブジェクト。 - +* `bytes` - ファイル内容を表す bytes オブジェクト。 -**Example**: +**例**: ```python -# ダウンロードしてローカルに保存 +# ファイルをローカルにダウンロードして保存 content = await sandbox.fs.download_file("workspace/data/file.txt") with open("local_copy.txt", "wb") as f: f.write(content) -# ダウンロードしてテキスト内容を処理 +# テキストコンテンツをダウンロードして処理 content = await sandbox.fs.download_file("workspace/data/config.json") config = json.loads(content.decode('utf-8')) ``` -#### AsyncFileSystem.download\_file +#### AsyncFileSystem.download_file \{#asyncfilesystemdownload_file\} ```python @overload @@ -119,207 +117,242 @@ async def download_file(remote_path: str, ``` サンドボックスからファイルをダウンロードし、ストリーミングでローカルファイルに保存します。 -メモリに収まりきらない可能性のある大きなファイルをダウンロードしたい場合に便利です。 +このメソッドは、メモリに収まりきらない可能性のある大きなファイルをダウンロードする場合に便利です。 -**Arguments**: +**引数**: -- `remote_path` _str_ - サンドボックス内のファイルへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `local_path` _str_ - ローカルに保存するファイルのパス。 -- `timeout` _int_ - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなし。デフォルトは 30 分。 - +* `remote_path` *str* - サンドボックス内のファイルパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `local_path` *str* - ローカルに保存するファイルのパス。 +* `timeout` *int* - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなし。デフォルトは30分。 -**Example**: +**例**: ```python local_path = "local_copy.txt" await sandbox.fs.download_file("tmp/large_file.txt", local_path) size_mb = os.path.getsize(local_path) / 1024 / 1024 -print(f"Size of the downloaded file {local_path}: {size_mb} MB") +print(f"ダウンロードしたファイル {local_path} のサイズ: {size_mb} MB") +``` + +#### AsyncFileSystem.download_files \{#asyncfilesystemdownload_files\} + +```python +@intercept_errors(message_prefix="ファイルのダウンロードに失敗しました: ") +async def download_files(files: List[FileDownloadRequest], + timeout: int = 30 * 60) -> List[FileDownloadResponse] +``` + +サンドボックスから複数のファイルをダウンロードします。ファイルがローカルにすでに存在する場合は上書きされます。 + +**引数**: + +* `files` *List[FileDownloadRequest]* - ダウンロード対象ファイルのリスト。 +* `timeout` *int* - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。既定値は30分です。 + +**戻り値**: + +* `List[FileDownloadResponse]` - ダウンロード結果のリスト。 + +**例外**: + +* `Exception` - リクエスト自体が失敗した場合のみ(ネットワーク障害、無効なリクエスト/レスポンスなど)。個々のファイルのダウンロードエラーは `FileDownloadResponse.error` フィールドで返されます。 + +**例**: + +```python +# 複数ファイルのダウンロード +results = await sandbox.fs.download_files([ + FileDownloadRequest(source="tmp/data.json"), + FileDownloadRequest(source="tmp/config.json", destination="local_config.json") +]) +for result in results: + if result.error: + print(f"{result.source} のダウンロード中にエラーが発生しました: {result.error}") + elif result.result: + print(f"{result.source} を {result.result} にダウンロードしました") ``` -#### AsyncFileSystem.find\_files +#### AsyncFileSystem.find_files \{#asyncfilesystemfind_files\} ```python -@intercept_errors(message_prefix="Failed to find files: ") +@intercept_errors(message_prefix="ファイルの検索に失敗しました: ") async def find_files(path: str, pattern: str) -> List[Match] ``` -パターンを含むファイルを検索します。`grep` コマンドに似ています。 +パターンに一致するファイルを検索します。`grep` コマンドに似ています。 **引数**: -- `path` _str_ - 検索対象のファイルまたはディレクトリへのパス。パスがディレクトリの場合は再帰的に検索されます。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `pattern` _str_ - ファイル内容に対してマッチングを行う検索パターン。 - +* `path` *str* - 検索対象のファイルまたはディレクトリへのパス。パスがディレクトリの場合は + 再帰的に検索します。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `pattern` *str* - ファイル内容に対して照合する検索パターン。 **戻り値**: -- `List[Match]` - ファイル内で見つかった一致のリスト。各 Match オブジェクトには次が含まれます: - - file: 一致を含むファイルのパス - - line: 一致が見つかった行番号 - - content: 一致した行の内容 - +* `List[Match]` - ファイル内で見つかった一致のリスト。各 Match オブジェクトには次が含まれます: + * file: 一致を含むファイルのパス + * line: 一致が見つかった行番号 + * content: 一致した行の内容 **例**: ```python -# Search for TODOs in Python files +# Pythonファイル内のTODOを検索 matches = await sandbox.fs.find_files("workspace/src", "TODO:") for match in matches: print(f"{match.file}:{match.line}: {match.content.strip()}") ``` -#### AsyncFileSystem.get\_file\_info +#### AsyncFileSystem.get_file_info \{#asyncfilesystemget_file_info\} ```python -@intercept_errors(message_prefix="Failed to get file info: ") +@intercept_errors(message_prefix="ファイル情報の取得に失敗しました: ") async def get_file_info(path: str) -> FileInfo ``` -ファイルまたはディレクトリの詳細情報(サイズ、パーミッション、タイムスタンプなど)を取得します。 +ファイルまたはディレクトリの詳細情報(サイズ、権限、タイムスタンプなど)を取得します。 **引数**: -- `path` _str_ - ファイルまたはディレクトリへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 - +* `path` *str* - ファイルまたはディレクトリへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `FileInfo` - 次を含む詳細なファイル情報: - - name: ファイル名 - - is_dir: パスがディレクトリかどうか - - size: バイト単位のファイルサイズ - - mode: ファイルのパーミッション - - mod_time: 最終更新タイムスタンプ - - permissions: 8進数形式のファイルパーミッション - - owner: ファイルの所有者 - - group: ファイルのグループ - +* `FileInfo` - 次を含む詳細なファイル情報: + * name: ファイル名 + * is_dir: パスがディレクトリかどうか + * size: バイト単位のファイルサイズ + * mode: ファイルの権限 + * mod_time: 最終更新タイムスタンプ + * permissions: 8進数表記のファイル権限 + * owner: ファイルの所有者 + * group: ファイルのグループ **例**: ```python -# Get file metadata +# ファイルメタデータを取得 info = await sandbox.fs.get_file_info("workspace/data/file.txt") -print(f"Size: {info.size} bytes") -print(f"Modified: {info.mod_time}") -print(f"Mode: {info.mode}") +print(f"サイズ: {info.size} バイト") +print(f"更新日時: {info.mod_time}") +print(f"モード: {info.mode}") -# Check if path is a directory +# パスがディレクトリかどうかを確認 info = await sandbox.fs.get_file_info("workspace/data") if info.is_dir: - print("Path is a directory") + print("パスはディレクトリです") ``` -#### AsyncFileSystem.list\_files +#### AsyncFileSystem.list_files \{#asyncfilesystemlist_files\} ```python -@intercept_errors(message_prefix="Failed to list files: ") +@intercept_errors(message_prefix="ファイル一覧の取得に失敗しました: ") async def list_files(path: str) -> List[FileInfo] ``` -指定したパス内のファイルとディレクトリを一覧表示し、その情報を返します。`ls -l` コマンドに似ています。 +指定したパス内のファイルとディレクトリを一覧表示し、その情報を返します。`ls -l` コマンドと同様の動作をします。 **引数**: -- `path` _str_ - 内容を一覧表示するディレクトリへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 - +* `path` *str* - 一覧表示する対象ディレクトリへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `List[FileInfo]` - ファイルおよびディレクトリ情報のリスト。各 FileInfo オブジェクトには、get_file_info() で説明したのと同じフィールドが含まれます。 - +* `List[FileInfo]` - ファイルおよびディレクトリ情報のリスト。各 FileInfo + オブジェクトには、get_file_info() で説明されているものと同一のフィールドが含まれます。 **例**: ```python -# List directory contents +# ディレクトリの内容を一覧表示 files = await sandbox.fs.list_files("workspace/data") -# Print files and their sizes +# ファイルとそのサイズを出力 for file in files: if not file.is_dir: - print(f"{file.name}: {file.size} bytes") + print(f"{file.name}: {file.size} バイト") -# List only directories +# ディレクトリのみを一覧表示 dirs = [f for f in files if f.is_dir] -print("Subdirectories:", ", ".join(d.name for d in dirs)) +print("サブディレクトリ:", ", ".join(d.name for d in dirs)) ``` -#### AsyncFileSystem.move\_files +#### AsyncFileSystem.move_files \{#asyncfilesystemmove_files\} ```python -@intercept_errors(message_prefix="Failed to move files: ") +@intercept_errors(message_prefix="ファイルの移動に失敗しました: ") async def move_files(source: str, destination: str) -> None ``` -ファイルまたはディレクトリを移動または名前変更します。移動先の親ディレクトリは存在している必要があります。 +ファイルまたはディレクトリを移動またはリネームします。移動先の親ディレクトリは存在している必要があります。 **引数**: -- `source` _str_ - 移動元のファイルまたはディレクトリへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `destination` _str_ - 移動先のパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 - +* `source` *str* - 移動元のファイルまたはディレクトリへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `destination` *str* - 移動先のパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 **例**: ```python -# Rename a file +# ファイルの名前を変更 await sandbox.fs.move_files( "workspace/data/old_name.txt", "workspace/data/new_name.txt" ) -# Move a file to a different directory +# ファイルを別のディレクトリに移動 await sandbox.fs.move_files( "workspace/data/file.txt", "workspace/archive/file.txt" ) -# Move a directory +# ディレクトリを移動 await sandbox.fs.move_files( "workspace/old_dir", "workspace/new_dir" ) ``` -#### AsyncFileSystem.replace\_in\_files +#### AsyncFileSystem.replace_in_files \{#asyncfilesystemreplace_in_files\} ```python -@intercept_errors(message_prefix="Failed to replace in files: ") +@intercept_errors(message_prefix="ファイル内の置換に失敗しました: ") async def replace_in_files(files: List[str], pattern: str, new_value: str) -> List[ReplaceResult] ``` -複数のファイルに対して検索および置換を実行します。 +複数のファイルに対して検索と置換を実行します。 **引数**: -- `files` _List[str]_ - 置換を実行するファイルパスのリスト。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `pattern` _str_ - 検索するパターン。 -- `new_value` _str_ - 一致箇所を置換するテキスト。 - +* `files` *List[str]* - 置換を実行するファイルパスのリスト。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `pattern` *str* - 検索するパターン。 +* `new_value` *str* - 一致箇所を置換するテキスト。 **戻り値**: -- `List[ReplaceResult]` - 各ファイルで行われた置換を示す結果のリスト。各 ReplaceResult には次が含まれます: - - file: 変更されたファイルのパス - - success: 操作が成功したかどうか - - error: 操作が失敗した場合のエラーメッセージ - +* `List[ReplaceResult]` - 各ファイルで行われた置換内容を示す結果のリスト。 + 各 ReplaceResult には以下が含まれます: + * file: 変更されたファイルのパス + * success: 操作が成功したかどうか + * error: 操作が失敗した場合のエラーメッセージ **例**: ```python -# 特定のファイルで置換する +# 特定のファイルで置換 results = await sandbox.fs.replace_in_files( files=["workspace/src/file1.py", "workspace/src/file2.py"], pattern="old_function", new_value="new_function" ) -# 結果を出力する +# 結果を出力 for result in results: if result.success: print(f"{result.file}: {result.success}") @@ -327,63 +360,58 @@ for result in results: print(f"{result.file}: {result.error}") ``` -#### AsyncFileSystem.search\_files +#### AsyncFileSystem.search_files \{#asyncfilesystemsearch_files\} ```python -@intercept_errors(message_prefix="Failed to search files: ") +@intercept_errors(message_prefix="ファイル検索に失敗しました: ") async def search_files(path: str, pattern: str) -> SearchFilesResponse ``` -名前が指定のパターンに一致するファイルおよびディレクトリを検索します。パターンは単純な文字列またはグロブパターンに対応します。 +名前が指定したパターンに一致するファイルやディレクトリを検索します。パターンは単純な文字列またはグロブパターンを指定できます。 **引数**: -- `path` _str_ - 検索を開始するルートディレクトリへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `pattern` _str_ - ファイル名と照合するパターン。グロブ - パターンをサポートします(例: Python ファイルの場合は "*.py")。 - +* `path` *str* - 検索を開始するルートディレクトリへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `pattern` *str* - ファイル名に対して照合するパターン。グロブパターンをサポートします(例: "*.py" は Python ファイル)。 **戻り値**: -- `SearchFilesResponse` - 次を含む検索結果: - - files: 一致したファイルおよびディレクトリのパス一覧 - +* `SearchFilesResponse` - 検索結果。以下を含みます: + * files: 一致したファイルおよびディレクトリのパス一覧 **例**: ```python -# すべての Python ファイルを探す +# すべてのPythonファイルを検索 result = await sandbox.fs.search_files("workspace", "*.py") for file in result.files: print(file) -# 特定の接頭辞を持つファイルを探す +# 特定のプレフィックスを持つファイルを検索 result = await sandbox.fs.search_files("workspace/data", "test_*") -print(f"Found {len(result.files)} test files") +print(f"{len(result.files)}個のテストファイルが見つかりました") ``` -#### AsyncFileSystem.set\_file\_permissions +#### AsyncFileSystem.set_file_permissions \{#asyncfilesystemset_file_permissions\} ```python -@intercept_errors(message_prefix="Failed to set file permissions: ") +@intercept_errors(message_prefix="ファイル権限の設定に失敗しました: ") async def set_file_permissions(path: str, mode: str = None, owner: str = None, group: str = None) -> None ``` -ファイルまたはディレクトリのパーミッションと所有権を設定します。いずれのパラメータも None にすると、その属性は変更されません。 +ファイルまたはディレクトリの権限と所有者情報を設定します。各パラメータは None を指定でき、その属性は変更されません。 **引数**: -- `path` _str_ - ファイルまたはディレクトリへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `mode` _Optional[str]_ - 8 進数表記のファイルモード/パーミッション - (例: "644" は rw-r--r--)。 -- `owner` _Optional[str]_ - ファイルの所有ユーザー。 -- `group` _Optional[str]_ - ファイルの所有グループ。 - +* `path` *str* - ファイルまたはディレクトリへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `mode` *Optional[str]* - 8 進表記のファイルモード/パーミッション + (例: "644" は rw-r--r--)。 +* `owner` *Optional[str]* - ファイルの所有ユーザー。 +* `group` *Optional[str]* - ファイルの所有グループ。 **例**: @@ -402,7 +430,7 @@ await sandbox.fs.set_file_permissions( ) ``` -#### AsyncFileSystem.upload\_file +#### AsyncFileSystem.upload_file \{#asyncfilesystemupload_file\} ```python @overload @@ -411,15 +439,13 @@ async def upload_file(file: bytes, timeout: int = 30 * 60) -> None ``` -サンドボックス内の指定パスにファイルをアップロードします。宛先パスに既にファイルが存在する場合は上書きされます。メモリに収まる小さなファイルをアップロードする際に有用です。 +指定したパスにサンドボックス内へファイルをアップロードします。宛先パスに既にファイルがある場合は上書きされます。メモリに収まる小さなファイルのアップロードに適しています。 **引数**: -- `file` _bytes_ - バイト列オブジェクトとしてのファイル内容。 -- `remote_path` _str_ - 宛先ファイルへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `timeout` _int_ - アップロード操作のタイムアウト(秒)。0 はタイムアウトなしを意味します。デフォルトは 30 分です。 - +* `file` *bytes* - バイト列(bytes)のファイル内容。 +* `remote_path` *str* - 宛先ファイルへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `timeout` *int* - アップロード処理のタイムアウト(秒)。0 はタイムアウトなし。既定は 30 分。 **例**: @@ -440,7 +466,7 @@ content = json.dumps(data).encode('utf-8') await sandbox.fs.upload_file(content, "tmp/config.json") ``` -#### AsyncFileSystem.upload\_file +#### AsyncFileSystem.upload_file \{#asyncfilesystemupload_file\} ```python @overload @@ -450,17 +476,16 @@ async def upload_file(local_path: str, ``` ローカルファイルシステムからサンドボックス内の指定パスにファイルをアップロードします。 -宛先パスにすでにファイルが存在する場合は上書きされます。このメソッドは -ストリーミングでファイルをアップロードするため、メモリに収まりきらない可能性のある大きなファイルの +宛先パスに同名のファイルが既に存在する場合は上書きされます。このメソッドは +ストリーミングでファイルをアップロードするため、メモリに収まりきらない可能性がある大きなファイルの アップロードに有用です。 **引数**: -- `local_path` _str_ - アップロードするローカルファイルのパス。 -- `remote_path` _str_ - サンドボックス内の宛先ファイルのパス。相対パスは - ユーザーのルートディレクトリを基準に解決されます。 -- `timeout` _int_ - アップロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。デフォルトは30分。 - +* `local_path` *str* - アップロードするローカルファイルのパス。 +* `remote_path` *str* - サンドボックス内の宛先ファイルのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `timeout` *int* - アップロード処理のタイムアウト(秒)。0 はタイムアウトなし。デフォルトは30分。 **例**: @@ -468,7 +493,7 @@ async def upload_file(local_path: str, await sandbox.fs.upload_file("local_file.txt", "tmp/large_file.txt") ``` -#### AsyncFileSystem.upload\_files +#### AsyncFileSystem.upload_files \{#asyncfilesystemupload_files\} ```python @intercept_errors(message_prefix="Failed to upload files: ") @@ -476,13 +501,12 @@ async def upload_files(files: List[FileUpload], timeout: int = 30 * 60) -> None ``` -複数のファイルをサンドボックスにアップロードします。宛先パスにすでにファイルが存在する場合は、 -上書きされます。 +複数のファイルをサンドボックスにアップロードします。宛先パスに同名のファイルが既に存在する場合は上書きされます。 **引数**: -- `files` _List[FileUpload]_ - アップロードするファイルのリスト。 -- `timeout` _int_ - アップロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。デフォルトは30分。 +* `files` *List[FileUpload]* - アップロードするファイルの一覧。 +* `timeout` *int* - アップロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。既定値は 30 分。 **例**: @@ -505,8 +529,7 @@ files = [ await sandbox.fs.upload_files(files) ``` - -## FileUpload +## ファイルアップロード \{#fileupload\} ```python @dataclass @@ -517,6 +540,37 @@ class FileUpload() **属性**: -- `source` _Union[bytes, str]_ - バイト列またはローカルファイルパスで指定するファイル内容。バイト列を指定する場合はメモリに収まることを確認し、そうでない場合はローカルファイルパスを使用してください。ローカルファイルの内容はサンドボックスへストリーミングされます。 -- `destination` _str_ - サンドボックス内の絶対パス。相対パスはユーザーのルートディレクトリを基準に解決されます。 +* `source` *Union[bytes, str]* - ファイルの中身。bytes オブジェクトまたはローカルファイルパスを指定します。bytes オブジェクトを渡す場合は、メモリに収まるサイズであることを確認してください。収まらない場合はローカルファイルパスを使用してください。内容はサンドボックスへストリーミングされます。 +* `destination` *str* - サンドボックス内の絶対パス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 + +## FileDownloadRequest \{#filedownloadrequest\} + +```python +@dataclass +class FileDownloadRequest() +``` + +サンドボックスから単一のファイルをダウンロードするリクエストを表します。 + +**属性**: + +* `source` *str* - サンドボックス内のソースパス。相対パスはユーザーの + ルートディレクトリを基準に解決されます。 +* `destination` *Optional[str]* - ファイル内容をストリーミングするローカルファイルシステム上の保存先パス。 + 指定しない場合、ファイルはバイトバッファにダウンロードされます + (ファイルが大きい場合はメモリに問題が生じる可能性があります)。 + +## FileDownloadResponse \{#filedownloadresponse\} + +```python +@dataclass +class FileDownloadResponse() +``` + +単一のファイルダウンロード要求に対するレスポンスを表します。 + +**属性**: +* `source` *str* - ダウンロード対象として要求された元のソースパス。 +* `result` *Union[str, bytes, None]* - ダウンロード結果。リクエストで保存先が指定されている場合はファイルパス、指定がない場合はバイト列。失敗した場合、またはデータを受信できなかった場合は None。 +* `error` *Optional[str]* - ダウンロードが失敗した場合のエラーメッセージ。成功した場合は None。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/async/async-git.mdx b/apps/docs/src/content/docs/ja/python-sdk/async/async-git.mdx index d9f102331..c90a1de91 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/async/async-git.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/async/async-git.mdx @@ -3,76 +3,72 @@ title: "AsyncGit" hideTitleOnPage: true --- -## AsyncGit +## AsyncGit \{#asyncgit\} ```python class AsyncGit() ``` -サンドボックス内でGit操作を提供します。 +サンドボックス内での Git 操作をサポートします。 **例**: ```python -# リポジトリをクローン +# リポジトリをクローンする await sandbox.git.clone( url="https://github.com/user/repo.git", path="workspace/repo" ) -# リポジトリのステータスを確認 +# リポジトリのステータスを確認する status = await sandbox.git.status("workspace/repo") -print(f"Modified files: {status.modified}") +print(f"変更されたファイル: {status.modified}") -# 変更をステージしてコミット +# 変更をステージしてコミットする await sandbox.git.add("workspace/repo", ["file.txt"]) await sandbox.git.commit( path="workspace/repo", - message="Update file", + message="ファイルを更新", author="John Doe", email="john@example.com" ) ``` -#### AsyncGit.__init__ +#### AsyncGit.**init** \{#asyncgit__init__\} ```python -def __init__(sandbox_id: str, toolbox_api: ToolboxApi, - get_root_dir: Callable[[], Awaitable[str]]) +def __init__(api_client: GitApi) ``` -新しいGitハンドラーインスタンスを初期化します。 +新しい Git ハンドラのインスタンスを初期化します。 **引数**: -- `sandbox_id` _str_ - サンドボックスID。 -- `toolbox_api` _ToolboxApi_ - サンドボックス操作用のAPIクライアント。 -- `get_root_dir` _Callable[[], str]_ - サンドボックスのデフォルトのルートディレクトリを取得する関数。 +* `api_client` *GitApi* - サンドボックスの Git 操作用 API クライアント。 -#### AsyncGit.add +#### AsyncGit.add \{#asyncgitadd\} ```python -@intercept_errors(message_prefix="Failed to add files: ") +@intercept_errors(message_prefix="ファイルの追加に失敗しました: ") async def add(path: str, files: List[str]) -> None ``` -指定したファイルを次回のコミットに向けてステージします。コマンドラインで -「git add」を実行するのと同様です。 +次回のコミットに向けて指定したファイルをステージします。コマンドラインで +'git add' を実行するのと同様です。 **引数**: -- `path` _str_ - Gitリポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `files` _List[str]_ - リポジトリルートからの相対パスで、ステージするファイルまたはディレクトリのリスト。 - +* `path` *str* - Gitリポジトリのルートへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `files` *List[str]* - リポジトリルートからの相対パスで指定する、ステージ対象のファイルまたはディレクトリのリスト。 **例**: ```python -# 単一ファイルをステージ +# 単一ファイルをステージング await sandbox.git.add("workspace/repo", ["file.txt"]) -# 複数ファイルをステージ +# 複数ファイルをステージング await sandbox.git.add("workspace/repo", [ "src/main.py", "tests/test_main.py", @@ -80,37 +76,34 @@ await sandbox.git.add("workspace/repo", [ ]) ``` -#### AsyncGit.branches +#### AsyncGit.branches \{#asyncgitbranches\} ```python -@intercept_errors(message_prefix="Failed to list branches: ") +@intercept_errors(message_prefix="ブランチの一覧取得に失敗しました: ") async def branches(path: str) -> ListBranchResponse ``` -リポジトリ内のブランチを一覧表示します。 +リポジトリのブランチを一覧表示します。 **引数**: -- `path` _str_ - Gitリポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 - +* `path` *str* - Git リポジトリのルートパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 -**返り値**: +**戻り値**: -- `ListBranchResponse` - リポジトリ内のブランチ一覧。 - +* `ListBranchResponse` - リポジトリ内のブランチ一覧。 **例**: ```python response = await sandbox.git.branches("workspace/repo") -print(f"Branches: {response.branches}") +print(f"ブランチ: {response.branches}") ``` -#### AsyncGit.clone +#### AsyncGit.clone \{#asyncgitclone\} ```python -@intercept_errors(message_prefix="Failed to clone repository: ") +@intercept_errors(message_prefix="リポジトリのクローンに失敗しました: ") async def clone(url: str, path: str, branch: Optional[str] = None, @@ -119,33 +112,27 @@ async def clone(url: str, password: Optional[str] = None) -> None ``` -指定したパスにGitリポジトリをクローンします。特定のブランチまたはコミットの -クローンに対応し、認証情報が指定された場合はリモートリポジトリへの -認証も可能です。 +指定したパスに Git リポジトリをクローンします。特定のブランチまたはコミットのクローンに対応しており、認証情報が指定された場合はリモートリポジトリへの認証も行えます。 **引数**: -- `url` _str_ - クローン元のリポジトリURL。 -- `path` _str_ - リポジトリをクローンするパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `branch` _Optional[str]_ - クローンするブランチ。未指定の場合は - デフォルトブランチをクローンします。 -- `commit_id` _Optional[str]_ - クローンするコミット。指定された場合、 - リポジトリはこのコミットのdetached HEAD状態になります。 -- `username` _Optional[str]_ - 認証用のGitユーザー名。 -- `password` _Optional[str]_ - 認証用のGitパスワードまたはトークン。 - +* `url` *str* - クローン元のリポジトリ URL。 +* `path` *str* - リポジトリをクローンするパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `branch` *Optional[str]* - クローンするブランチ。未指定の場合はデフォルトブランチをクローンします。 +* `commit_id` *Optional[str]* - チェックアウトするコミット。指定した場合、リポジトリはそのコミットで detached HEAD 状態のままになります。 +* `username` *Optional[str]* - 認証に使用する Git のユーザー名。 +* `password` *Optional[str]* - 認証に使用する Git のパスワードまたはトークン。 **例**: ```python -# デフォルトブランチをクローン +# デフォルトブランチをクローンする await sandbox.git.clone( url="https://github.com/user/repo.git", path="workspace/repo" ) -# 認証付きで特定のブランチをクローン +# 認証を使用して特定のブランチをクローンする await sandbox.git.clone( url="https://github.com/user/private-repo.git", path="workspace/private", @@ -154,7 +141,7 @@ await sandbox.git.clone( password="token" ) -# 特定のコミットをクローン +# 特定のコミットをクローンする await sandbox.git.clone( url="https://github.com/user/repo.git", path="workspace/repo-old", @@ -162,10 +149,10 @@ await sandbox.git.clone( ) ``` -#### AsyncGit.commit +#### AsyncGit.commit \{#asyncgitcommit\} ```python -@intercept_errors(message_prefix="Failed to commit changes: ") +@intercept_errors(message_prefix="変更のコミットに失敗しました: ") async def commit(path: str, message: str, author: str, @@ -173,53 +160,51 @@ async def commit(path: str, allow_empty: bool = False) -> GitCommitResponse ``` -ステージ済みの変更から新しいコミットを作成します。コミットする前に必ず add() メソッドで変更をステージしてください。 +ステージ済みの変更で新しいコミットを作成します。コミットする前に、必ず add() メソッドを使って変更をステージしてください。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `message` _str_ - 変更内容を説明するコミットメッセージ。 -- `author` _str_ - コミット作者の名前。 -- `email` _str_ - コミット作者のメールアドレス。 -- `allow_empty` _bool, optional_ - 変更がステージされていない場合でも空のコミットの作成を許可します。デフォルトは False。 - +* `path` *str* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `message` *str* - 変更内容を記述するコミットメッセージ。 +* `author` *str* - コミットの作成者名。 +* `email` *str* - コミットの作成者のメールアドレス。 +* `allow_empty` *bool, optional* - 変更がステージされていない場合でも空のコミットの作成を許可します。デフォルトは False。 **例**: ```python -# 変更をステージしてコミットする +# 変更をステージングしてコミット await sandbox.git.add("workspace/repo", ["README.md"]) await sandbox.git.commit( path="workspace/repo", - message="Update documentation", + message="ドキュメントを更新", author="John Doe", email="john@example.com", allow_empty=True ) ``` -#### AsyncGit.push +#### AsyncGit.push \{#asyncgitpush\} ```python -@intercept_errors(message_prefix="Failed to push changes: ") +@intercept_errors(message_prefix="変更のプッシュに失敗しました: ") async def push(path: str, username: Optional[str] = None, password: Optional[str] = None) -> None ``` -現在のブランチのすべてのローカルコミットをリモートリポジトリにプッシュします。リモートリポジトリが認証を必要とする場合は、ユーザー名とパスワード/トークンを指定してください。 +現在のブランチのローカルコミットをすべてリモートリポジトリにプッシュします。リモートリポジトリで認証が必要な場合は、ユーザー名とパスワード/トークンを指定してください。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `username` _Optional[str]_ - 認証用の Git ユーザー名。 -- `password` _Optional[str]_ - 認証用の Git パスワードまたはトークン。 - +* `path` *str* - Gitリポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `username` *Optional[str]* - 認証用のGitユーザー名。 +* `password` *Optional[str]* - 認証用のGitパスワードまたはトークン。 **例**: ```python -# 認証なしでプッシュ(公開リポジトリや SSH の場合) +# 認証なしでプッシュ(パブリックリポジトリまたはSSH用) await sandbox.git.push("workspace/repo") # 認証ありでプッシュ @@ -230,23 +215,24 @@ await sandbox.git.push( ) ``` -#### AsyncGit.pull +#### AsyncGit.pull \{#asyncgitpull\} ```python -@intercept_errors(message_prefix="Failed to pull changes: ") +@intercept_errors(message_prefix="変更の取得に失敗しました: ") async def pull(path: str, username: Optional[str] = None, password: Optional[str] = None) -> None ``` -リモートリポジトリから変更をプルします。リモートリポジトリが認証を必要とする場合は、ユーザー名とパスワード/トークンを指定してください。 +リモートリポジトリから変更を取得します。リモートリポジトリで認証が必要な場合は、 +ユーザー名とパスワード/トークンを指定してください。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `username` _Optional[str]_ - 認証用の Git ユーザー名。 -- `password` _Optional[str]_ - 認証用の Git パスワードまたはトークン。 - +* `path` *str* - Git リポジトリのルートへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `username` *Optional[str]* - 認証用の Git ユーザー名。 +* `password` *Optional[str]* - 認証用の Git パスワードまたはトークン。 **例**: @@ -262,53 +248,51 @@ await sandbox.git.pull( ) ``` -#### AsyncGit.status +#### AsyncGit.status \{#asyncgitstatus\} ```python -@intercept_errors(message_prefix="Failed to get status: ") +@intercept_errors(message_prefix="ステータスの取得に失敗しました: ") async def status(path: str) -> GitStatus ``` -現在の Git リポジトリのステータスを取得します。 +現在の Git リポジトリの状態を取得します。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 - +* `path` *str* - Git リポジトリのルートへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `GitStatus` - 以下を含むリポジトリのステータス情報: - - current_branch: 現在のブランチ名 - - file_status: ファイルのステータス一覧 - - ahead: リモートに未プッシュのローカルコミット数 - - behind: ローカルに未プルのリモートコミット数 - - branch_published: ブランチがリモートリポジトリに公開済みかどうか - +* `GitStatus` - リポジトリの状態情報。以下を含みます: + * current_branch: 現在のブランチ名 + * file_status: ファイルの状態一覧 + * ahead: リモートへ未プッシュのローカルコミット数 + * behind: ローカルに未取得のリモートコミット数 + * branch_published: ブランチがリモートリポジトリに公開済みかどうか **例**: ```python status = await sandbox.git.status("workspace/repo") -print(f"On branch: {status.current_branch}") -print(f"Commits ahead: {status.ahead}") -print(f"Commits behind: {status.behind}") +print(f"ブランチ: {status.current_branch}") +print(f"先行コミット数: {status.ahead}") +print(f"後続コミット数: {status.behind}") ``` -#### AsyncGit.checkout_branch +#### AsyncGit.checkout_branch \{#asyncgitcheckout_branch\} ```python -@intercept_errors(message_prefix="Failed to checkout branch: ") +@intercept_errors(message_prefix="ブランチのチェックアウトに失敗しました: ") async def checkout_branch(path: str, branch: str) -> None ``` -リポジトリでブランチをチェックアウトします。 +リポジトリのブランチをチェックアウトします。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `branch` _str_ - チェックアウトするブランチ名 - +* `path` *str* - Gitリポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `branch` *str* - チェックアウトするブランチ名 **例**: @@ -317,20 +301,19 @@ async def checkout_branch(path: str, branch: str) -> None await sandbox.git.checkout_branch("workspace/repo", "feature-branch") ``` -#### AsyncGit.create_branch +#### AsyncGit.create_branch \{#asyncgitcreate_branch\} ```python -@intercept_errors(message_prefix="Failed to create branch: ") +@intercept_errors(message_prefix="ブランチの作成に失敗しました: ") async def create_branch(path: str, name: str) -> None ``` -リポジトリでブランチを作成します。 +リポジトリ内にブランチを作成します。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `name` _str_ - 作成する新しいブランチ名 - +* `path` *str* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `name` *str* - 作成する新しいブランチ名 **例**: @@ -339,10 +322,10 @@ async def create_branch(path: str, name: str) -> None await sandbox.git.create_branch("workspace/repo", "new-feature") ``` -#### AsyncGit.delete\_branch +#### AsyncGit.delete_branch \{#asyncgitdelete_branch\} ```python -@intercept_errors(message_prefix="Failed to delete branch: ") +@intercept_errors(message_prefix="ブランチの削除に失敗しました: ") async def delete_branch(path: str, name: str) -> None ``` @@ -350,10 +333,8 @@ async def delete_branch(path: str, name: str) -> None **引数**: -- `path` _str_ - Gitリポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `name` _str_ - 削除するブランチ名 - +* `path` *str* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `name` *str* - 削除するブランチ名 **例**: @@ -362,16 +343,14 @@ async def delete_branch(path: str, name: str) -> None await sandbox.git.delete_branch("workspace/repo", "old-feature") ``` - -## GitCommitResponse +## GitCommitResponse \{#gitcommitresponse\} ```python class GitCommitResponse() ``` -Git の commit 操作に対するレスポンス。 +Git のコミットからのレスポンス。 **属性**: -- `sha` _str_ - コミットの SHA - +* `sha` *str* - コミットのSHA diff --git a/apps/docs/src/content/docs/ja/python-sdk/async/async-lsp-server.mdx b/apps/docs/src/content/docs/ja/python-sdk/async/async-lsp-server.mdx index c4ee92699..827170382 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/async/async-lsp-server.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/async/async-lsp-server.mdx @@ -3,118 +3,119 @@ title: "AsyncLspServer" hideTitleOnPage: true --- -## AsyncLspServer +## AsyncLspServer \{#asynclspserver\} ```python class AsyncLspServer() ``` -コードインテリジェンスのための Language Server Protocol 機能を提供し、コード補完やシンボル検索などの IDE 相当の機能を実現します。 +コードインテリジェンスのために LSP (言語サーバープロトコル) 機能を提供し、コード補完やシンボル検索などの IDE 風の機能を実現します。 -#### AsyncLspServer.__init__ +#### AsyncLspServer.**init** \{#asynclspserver__init__\} ```python def __init__(language_id: LspLanguageId, path_to_project: str, - toolbox_api: ToolboxApi, sandbox_id: str) + api_client: LspApi) ``` 新しい LSP サーバーインスタンスを初期化します。 **引数**: -- `language_id` _LspLanguageId_ - 言語サーバーの種類(例: LspLanguageId.TYPESCRIPT)。 -- `path_to_project` _str_ - プロジェクトのルートディレクトリへの絶対パス。 -- `toolbox_api` _ToolboxApi_ - サンドボックス操作用の API クライアント。 -- `instance` _SandboxInstance_ - このサーバーが属するサンドボックスインスタンス。 +* `language_id` *LspLanguageId* - 言語サーバーの種類(例: LspLanguageId.TYPESCRIPT)。 +* `path_to_project` *str* - プロジェクトのルートディレクトリへの絶対パス。 +* `api_client` *LspApi* - サンドボックス操作用の API クライアント。 +* `instance` *SandboxInstance* - このサーバーが属するサンドボックスインスタンス。 -#### AsyncLspServer.start +#### AsyncLspServer.start \{#asynclspserverstart\} ```python -@intercept_errors(message_prefix="Failed to start LSP server: ") +@intercept_errors(message_prefix="LSPサーバーの開始に失敗しました: ") async def start() -> None ``` 言語サーバーを起動します。 -このメソッドは、他の LSP 機能を使用する前に呼び出す必要があります。指定した言語とプロジェクト向けに言語サーバーを初期化します。 +このメソッドは、他の LSP 機能を使用する前に必ず呼び出してください。 +指定した言語とプロジェクトのために言語サーバーを初期化します。 **例**: ```python lsp = sandbox.create_lsp_server("typescript", "workspace/project") -await lsp.start() # Initialize the server -# Now ready for LSP operations +await lsp.start() # サーバーを初期化 +# LSP操作の準備完了 ``` -#### AsyncLspServer.stop +#### AsyncLspServer.stop \{#asynclspserverstop\} ```python -@intercept_errors(message_prefix="Failed to stop LSP server: ") +@intercept_errors(message_prefix="LSPサーバーの停止に失敗しました: ") async def stop() -> None ``` 言語サーバーを停止します。 -LSP サーバーが不要になったときは、システムリソースを解放するためにこのメソッドを呼び出してください。 +LSP サーバーが不要になったら、システムリソースを解放するためにこのメソッドを呼び出してください。 **例**: ```python -# When done with LSP features -await lsp.stop() # Clean up resources +# LSP機能の使用が完了したら +await lsp.stop() # リソースをクリーンアップ ``` -#### AsyncLspServer.did_open +#### AsyncLspServer.did_open \{#asynclspserverdid_open\} ```python -@intercept_errors(message_prefix="Failed to open file: ") +@intercept_errors(message_prefix="ファイルのオープンに失敗しました: ") async def did_open(path: str) -> None ``` -ファイルが開かれたことを言語サーバーに通知します。 +言語サーバーにファイルが開かれたことを通知します。 -このメソッドは、エディタでファイルを開いたときに呼び出し、そのファイルに対する診断や補完などの言語機能を有効化します。サーバーはファイル内容の追跡を開始し、言語機能を提供します。 +このメソッドは、エディターでファイルを開いたときに呼び出して、そのファイル向けの診断や補完などの言語機能を有効化します。サーバーはファイル内容の追跡を開始し、言語機能を提供します。 **引数**: -- `path` _str_ - 開いたファイルのパス。相対パスは LSP サーバーのコンストラクタで設定されたプロジェクトパスに基づいて解決されます。 - +* `path` *str* - 開いたファイルへのパス。相対パスは、LSP サーバーのコンストラクタで設定されたプロジェクトパスに基づいて解決されます。 **例**: ```python -# When opening a file for editing +# ファイルを編集用に開く際 await lsp.did_open("workspace/project/src/index.ts") -# Now can get completions, symbols, etc. for this file +# これで、このファイルに対して補完、シンボルなどを取得できます ``` -#### AsyncLspServer.did_close +#### AsyncLspServer.did_close \{#asynclspserverdid_close\} ```python -@intercept_errors(message_prefix="Failed to close file: ") +@intercept_errors(message_prefix="ファイルのクローズに失敗しました: ") async def did_close(path: str) -> None ``` -ファイルが閉じられたことを言語サーバーに通知します。 +言語サーバーにファイルが閉じられたことを通知します。 -このメソッドは、エディタでファイルを閉じたときに呼び出し、そのファイルに関連するリソースを言語サーバーがクリーンアップできるようにします。 +エディターでファイルが閉じられたときにこのメソッドを呼び出し、 +そのファイルに紐づくリソースを言語サーバー側で解放できるようにします。 **引数**: -- `path` _str_ - 閉じたファイルのパス。相対パスは LSP サーバーのコンストラクタで設定されたプロジェクトパスに基づいて解決されます。 - +* `path` *str* - 閉じられたファイルへのパス。相対パスは、LSPサーバーのコンストラクターで + 設定されたプロジェクトパスを基準に解決されます。 **例**: ```python -# When done editing a file +# ファイルの編集が完了したとき await lsp.did_close("workspace/project/src/index.ts") ``` -#### AsyncLspServer.document_symbols +#### AsyncLspServer.document_symbols \{#asynclspserverdocument_symbols\} ```python -@intercept_errors(message_prefix="Failed to get symbols from document: ") +@intercept_errors(message_prefix="ドキュメントからシンボルの取得に失敗しました: ") async def document_symbols(path: str) -> List[LspSymbol] ``` @@ -122,32 +123,30 @@ async def document_symbols(path: str) -> List[LspSymbol] **引数**: -- `path` _str_ - シンボルを取得するファイルのパス。相対パスは LSP サーバーのコンストラクタで設定されたプロジェクトパスに基づいて解決されます。 - +* `path` *str* - シンボルを取得するファイルへのパス。相対パスは、LSPサーバーのコンストラクターで設定されたプロジェクトパスを基準に解決されます。 **戻り値**: -- `List[LspSymbol]` - ドキュメント内のシンボルのリスト。各シンボルには以下が含まれます: - - name: シンボル名 - - kind: シンボルの種類(関数、クラス、変数など) - - location: ファイル内のシンボルの位置 - +* `List[LspSymbol]` - ドキュメント内のシンボル一覧。各シンボルには以下が含まれます: + * name: シンボル名 + * kind: シンボルの種類(function、class、variable など) + * location: ファイル内でのシンボルの位置 **例**: ```python -# Get all symbols in a file +# ファイル内のすべてのシンボルを取得 symbols = await lsp.document_symbols("workspace/project/src/index.ts") for symbol in symbols: print(f"{symbol.kind} {symbol.name}: {symbol.location}") ``` -#### AsyncLspServer.workspace_symbols +#### AsyncLspServer.workspace_symbols \{#asynclspserverworkspace_symbols\} ```python @deprecated( reason= - "Method is deprecated. Use `sandbox_symbols` instead. This method will be removed in a future version." + "このメソッドは非推奨です。代わりに `sandbox_symbols` を使用してください。このメソッドは将来のバージョンで削除される予定です。" ) async def workspace_symbols(query: str) -> List[LspSymbol] ``` @@ -156,17 +155,16 @@ async def workspace_symbols(query: str) -> List[LspSymbol] **引数**: -- `query` _str_ - シンボル名に対してマッチさせる検索クエリ。 - +* `query` *str* - シンボル名に照合する検索クエリ。 -**戻り値**: +**返り値**: -- `List[LspSymbol]` - すべてのファイルから一致したシンボルのリスト。 +* `List[LspSymbol]` - すべてのファイルから一致したシンボルのリスト。 -#### AsyncLspServer.sandbox\_symbols +#### AsyncLspServer.sandbox_symbols \{#asynclspserversandbox_symbols\} ```python -@intercept_errors(message_prefix="Failed to get symbols from sandbox: ") +@intercept_errors(message_prefix="サンドボックスからシンボルの取得に失敗しました: ") async def sandbox_symbols(query: str) -> List[LspSymbol] ``` @@ -174,102 +172,99 @@ async def sandbox_symbols(query: str) -> List[LspSymbol] **引数**: -- `query` _str_ - シンボル名に対してマッチさせる検索クエリ。 - +* `query` *str* - シンボル名に対してマッチさせる検索クエリ。 **戻り値**: -- `List[LspSymbol]` - すべてのファイルから一致したシンボルのリスト。各シンボルには次が含まれます: - - name: シンボル名 - - kind: シンボルの種別(関数、クラス、変数など) - - location: ファイル内でのシンボルの位置 - +* `List[LspSymbol]` - すべてのファイルからマッチしたシンボルのリスト。各シンボルには以下が含まれます: + * name: シンボル名 + * kind: シンボルの種別(関数、クラス、変数など) + * location: ファイル内での位置 **例**: ```python -# "User" を含むすべてのシンボルを検索 +# "User"を含むすべてのシンボルを検索 symbols = await lsp.sandbox_symbols("User") for symbol in symbols: print(f"{symbol.name} in {symbol.location}") ``` -#### AsyncLspServer.completions +#### AsyncLspServer.completions \{#asynclspservercompletions\} ```python -@intercept_errors(message_prefix="Failed to get completions: ") -async def completions(path: str, position: Position) -> CompletionList +@intercept_errors(message_prefix="補完情報の取得に失敗しました: ") +async def completions(path: str, + position: LspCompletionPosition) -> CompletionList ``` -ファイル内の指定位置での補完候補を取得します。 +ファイル内の指定位置で補完候補を取得します。 **引数**: -- `path` _str_ - ファイルパス。相対パスは、LSP サーバーのコンストラクタで設定されたプロジェクトパスを基準に解決されます。 -- `position` _Position_ - 補完候補を取得するカーソル位置。 - +* `path` *str* - ファイルパス。相対パスは、LSP サーバーのコンストラクターで設定されたプロジェクトパスを基準に解決されます。 +* `position` *LspCompletionPosition* - 補完候補を取得するカーソル位置。 **戻り値**: -- `CompletionList` - 補完候補のリスト。次を含みます: - - isIncomplete: 追加の項目が存在する可能性があるか - - items: 補完アイテムのリスト。各アイテムには次が含まれます: - - label: 挿入するテキスト - - kind: 補完の種別 - - detail: アイテムに関する追加情報 - - documentation: アイテムのドキュメント - - sortText: リスト内での並び替えに用いるテキスト - - filterText: フィルタリングに用いるテキスト - - insertText: 実際に挿入するテキスト(label と異なる場合) - +* `CompletionList` - 補完候補のリスト。リストには次が含まれます: + * isIncomplete: さらに項目が存在する可能性があるかどうか + * items: 各項目が以下を含む補完アイテムのリスト + * label: 挿入するテキスト + * kind: 補完の種類 + * detail: アイテムに関する追加情報 + * documentation: アイテムのドキュメント + * sortText: リスト内での並び替えに使用するテキスト + * filterText: フィルタリングに使用するテキスト + * insertText: 実際に挿入されるテキスト(label と異なる場合) **例**: ```python -# 指定位置で補完候補を取得 -pos = Position(line=10, character=15) +# 指定位置でコード補完を取得 +pos = LspCompletionPosition(line=10, character=15) completions = await lsp.completions("workspace/project/src/index.ts", pos) for item in completions.items: print(f"{item.label} ({item.kind}): {item.detail}") ``` - -## LspLanguageId +## LspLanguageId \{#lsplanguageid\} ```python class LspLanguageId(Enum) ``` -LSP(Language Server Protocol)の言語ID。 +Language Server Protocol (LSP) の言語ID。 -**列挙メンバー**: - - `PYTHON` ("python") - - `TYPESCRIPT` ("typescript") - - `JAVASCRIPT` ("javascript") +**列挙型メンバー**: -## Position +* `PYTHON` ("python") + * `TYPESCRIPT` ("typescript") + * `JAVASCRIPT` ("javascript") + +## LspCompletionPosition \{#lspcompletionposition\} ```python -class Position() +class LspCompletionPosition() ``` -テキストドキュメント内の0始まりの位置を表し、行番号と文字オフセットで指定します。 +テキストドキュメント内の0始まりの補完位置を表し、 +行番号と文字オフセットで指定します。 **属性**: -- `line` _int_ - ドキュメント内の0始まりの行番号。 -- `character` _int_ - 行内の0始まりの文字オフセット。 +* `line` *int* - ドキュメント内の0始まりの行番号。 +* `character` *int* - 行内の0始まりの文字オフセット。 -#### Position.__init__ +#### LspCompletionPosition.__init__ \{#lspcompletionposition__init__\} ```python def __init__(line: int, character: int) ``` -新しい Position インスタンスを初期化します。 +新しい LspCompletionPosition インスタンスを初期化します。 **引数**: -- `line` _int_ - ドキュメント内の0始まりの行番号。 -- `character` _int_ - 行内の0始まりの文字オフセット。 - +* `line` *int* - ドキュメント内のゼロ基準の行番号。 +* `character` *int* - 行内のゼロ基準の文字オフセット。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/async/async-object-storage.mdx b/apps/docs/src/content/docs/ja/python-sdk/async/async-object-storage.mdx index cf87688b3..c5e0b4615 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/async/async-object-storage.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/async/async-object-storage.mdx @@ -3,7 +3,7 @@ title: "AsyncObjectStorage" hideTitleOnPage: true --- -## AsyncObjectStorage +## AsyncObjectStorage \{#asyncobjectstorage\} ```python class AsyncObjectStorage() @@ -13,13 +13,13 @@ class AsyncObjectStorage() **Attributes**: -- `endpoint_url` _str_ - オブジェクトストレージサービスのエンドポイントURL。 -- `aws_access_key_id` _str_ - オブジェクトストレージサービスのアクセスキーID。 -- `aws_secret_access_key` _str_ - オブジェクトストレージサービスのシークレットアクセスキー。 -- `aws_session_token` _str_ - オブジェクトストレージサービスのセッショントークン。一時的な認証情報に使用。 -- `bucket_name` _str_ - 使用するバケット名。既定値は "daytona-volume-builds"。 +* `endpoint_url` *str* - オブジェクトストレージサービスのエンドポイントURL。 +* `aws_access_key_id` *str* - オブジェクトストレージサービスのアクセスキーID。 +* `aws_secret_access_key` *str* - オブジェクトストレージサービスのシークレットアクセスキー。 +* `aws_session_token` *str* - オブジェクトストレージサービスのセッショントークン。一時的な認証情報に使用。 +* `bucket_name` *str* - 使用するバケット名。既定値は "daytona-volume-builds"。 -#### AsyncObjectStorage.upload +#### AsyncObjectStorage.upload \{#asyncobjectstorageupload\} ```python async def upload(path: str, @@ -31,13 +31,10 @@ async def upload(path: str, **Arguments**: -- `path` _str_ - アップロードするファイルのパス。 -- `organization_id` _str_ - 使用する組織ID。 -- `archive_base_path` _str_ - アーカイブに使用するベースパス。 - +* `path` *str* - アップロードするファイルのパス。 +* `organization_id` *str* - 使用する組織ID。 +* `archive_base_path` *str* - アーカイブに使用するベースパス。 **Returns**: -- `str` - アップロードしたファイルのハッシュ値。 - - +* `str` - アップロードしたファイルのハッシュ値。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/async/async-sandbox.mdx b/apps/docs/src/content/docs/ja/python-sdk/async/async-sandbox.mdx index 78d7ecb2a..df5a211ea 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/async/async-sandbox.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/async/async-sandbox.mdx @@ -3,124 +3,143 @@ title: "AsyncSandbox" hideTitleOnPage: true --- -## AsyncSandbox +## AsyncSandbox \{#asyncsandbox\} ```python class AsyncSandbox(SandboxDto) ``` -Daytona のサンドボックスを表します。 +Daytona サンドボックスを表します。 **属性**: -- `fs` _AsyncFileSystem_ - ファイルシステム操作インターフェース。 -- `git` _AsyncGit_ - Git 操作インターフェース。 -- `process` _AsyncProcess_ - プロセス実行インターフェース。 -- `computer_use` _AsyncComputerUse_ - デスクトップ自動化のためのコンピューター使用インターフェース。 -- `id` _str_ - サンドボックスの一意の識別子。 -- `organization_id` _str_ - サンドボックスの組織 ID。 -- `snapshot` _str_ - サンドボックスの作成に使用された Daytona のスナップショット。 -- `user` _str_ - サンドボックス内で実行中の OS ユーザー。 -- `env` _Dict[str, str]_ - サンドボックス内で設定される環境変数。 -- `labels` _Dict[str, str]_ - サンドボックスに付与されたカスタムラベル。 -- `public` _bool_ - サンドボックスが公開アクセス可能かどうか。 -- `target` _str_ - サンドボックスを実行するランナーのターゲット(リージョン)。 -- `cpu` _int_ - サンドボックスに割り当てられた CPU 数。 -- `gpu` _int_ - サンドボックスに割り当てられた GPU 数。 -- `memory` _int_ - サンドボックスに割り当てられたメモリ容量(GiB)。 -- `disk` _int_ - サンドボックスに割り当てられたディスク容量(GiB)。 -- `state` _SandboxState_ - サンドボックスの現在の状態(例: "started", "stopped")。 -- `error_reason` _str_ - サンドボックスがエラー状態の場合のエラーメッセージ。 -- `backup_state` _SandboxBackupStateEnum_ - サンドボックスのバックアップ状態。 -- `backup_created_at` _str_ - バックアップの作成時刻。 -- `auto_stop_interval` _int_ - 自動停止の間隔(分)。 -- `auto_archive_interval` _int_ - 自動アーカイブの間隔(分)。 -- `auto_delete_interval` _int_ - 自動削除の間隔(分)。 -- `runner_domain` _str_ - サンドボックスのランナーのドメイン名。 -- `volumes` _List[str]_ - サンドボックスに接続されたボリューム。 -- `build_info` _str_ - 動的ビルドから作成された場合のビルド情報。 -- `created_at` _str_ - サンドボックスの作成時刻。 -- `updated_at` _str_ - サンドボックスの最終更新時刻。 -- `network_block_all` _bool_ - サンドボックスの全ネットワークアクセスをブロックするかどうか。 -- `network_allow_list` _str_ - サンドボックスで許可される CIDR ネットワークアドレスのカンマ区切りリスト。 - -#### AsyncSandbox.__init__ - -```python -def __init__(sandbox_dto: SandboxDto, sandbox_api: SandboxApi, - toolbox_api: ToolboxApi, code_toolbox: SandboxCodeToolbox) -``` - -新しいサンドボックスインスタンスを初期化します。 +* `fs` *AsyncFileSystem* - ファイルシステム操作インターフェース。 +* `git` *AsyncGit* - Git 操作インターフェース。 +* `process` *AsyncProcess* - プロセス実行インターフェース。 +* `computer_use` *AsyncComputerUse* - デスクトップ自動化のためのコンピューター使用インターフェース。 +* `id` *str* - サンドボックスの一意の識別子。 +* `name` *str* - サンドボックスの名前。 +* `organization_id` *str* - サンドボックスの組織 ID。 +* `snapshot` *str* - サンドボックスの作成に使用された Daytona のスナップショット。 +* `user` *str* - サンドボックス内で動作する OS ユーザー。 +* `env` *Dict[str, str]* - サンドボックスで設定される環境変数。 +* `labels` *Dict[str, str]* - サンドボックスに付与されたカスタムラベル。 +* `public` *bool* - サンドボックスが公開アクセス可能かどうか。 +* `target` *str* - サンドボックスが実行されるランナーのターゲットロケーション。 +* `cpu` *int* - サンドボックスに割り当てられた CPU 数。 +* `gpu` *int* - サンドボックスに割り当てられた GPU 数。 +* `memory` *int* - サンドボックスに割り当てられたメモリ(GiB)。 +* `disk` *int* - サンドボックスに割り当てられたディスク容量(GiB)。 +* `state` *SandboxState* - サンドボックスの現在の状態(例: "started"、"stopped")。 +* `error_reason` *str* - サンドボックスがエラー状態の場合のエラーメッセージ。 +* `backup_state` *SandboxBackupStateEnum* - サンドボックスのバックアップの現在の状態。 +* `backup_created_at` *str* - バックアップの作成日時。 +* `auto_stop_interval` *int* - 自動停止までの間隔(分)。 +* `auto_archive_interval` *int* - 自動アーカイブまでの間隔(分)。 +* `auto_delete_interval` *int* - 自動削除までの間隔(分)。 +* `volumes` *List[str]* - サンドボックスにアタッチされたボリューム。 +* `build_info` *str* - ダイナミックビルドから作成された場合のビルド情報。 +* `created_at` *str* - サンドボックスの作成日時。 +* `updated_at` *str* - サンドボックスの最終更新日時。 +* `network_block_all` *bool* - サンドボックスのすべてのネットワークアクセスをブロックするかどうか。 +* `network_allow_list` *str* - サンドボックスで許可される CIDR ネットワークアドレスのカンマ区切りリスト。 + +#### AsyncSandbox.__init__ \{#asyncsandbox__init__\} + +```python +def __init__(sandbox_dto: SandboxDto, toolbox_api: ApiClient, + sandbox_api: SandboxApi, code_toolbox: SandboxCodeToolbox, + get_toolbox_base_url: Callable[[], Awaitable[str]]) +``` + +新しいサンドボックス インスタンスを初期化します。 **引数**: -- `id` _str_ - サンドボックスの一意の識別子。 -- `instance` _SandboxInstance_ - 基盤となるサンドボックスインスタンス。 -- `sandbox_api` _SandboxApi_ - サンドボックス操作用の API クライアント。 -- `toolbox_api` _ToolboxApi_ - ツールボックス操作用の API クライアント。 -- `code_toolbox` _SandboxCodeToolbox_ - 言語別のツールボックス実装。 +* `sandbox_dto` *SandboxDto* - API から取得したサンドボックスのデータ。 +* `toolbox_api` *ApiClient* - Toolbox 操作用の API クライアント。 +* `sandbox_api` *SandboxApi* - サンドボックス操作用の API クライアント。 +* `code_toolbox` *SandboxCodeToolbox* - 言語別の Toolbox 実装。 +* `get_toolbox_base_url` *Callable[[], Awaitable[str]]* - Toolbox のベース URL を取得する関数。 -#### AsyncSandbox.refresh_data +#### AsyncSandbox.refresh_data \{#asyncsandboxrefresh_data\} ```python +@intercept_errors(message_prefix="サンドボックスデータの更新に失敗しました: ") async def refresh_data() -> None ``` -API からサンドボックスのデータを更新します。 +API からサンドボックスのデータをリフレッシュします。 **例**: ```python await sandbox.refresh_data() -print(f"Sandbox {sandbox.id}:") -print(f"State: {sandbox.state}") -print(f"Resources: {sandbox.cpu} CPU, {sandbox.memory} GiB RAM") +print(f"サンドボックス {sandbox.id}:") +print(f"状態: {sandbox.state}") +print(f"リソース: {sandbox.cpu} CPU、{sandbox.memory} GiB RAM") +``` + +#### AsyncSandbox.get_user_home_dir \{#asyncsandboxget_user_home_dir\} + +```python +@intercept_errors(message_prefix="ユーザーホームディレクトリの取得に失敗しました: ") +async def get_user_home_dir() -> str +``` + +サンドボックス内のユーザーのホームディレクトリのパスを取得します。 + +**戻り値**: + +* `str` - サンドボックス内のユーザーのホームディレクトリへの絶対パス。 + +**例**: + +```python +user_home_dir = await sandbox.get_user_home_dir() +print(f"サンドボックスユーザーホーム: {user_home_dir}") ``` -#### AsyncSandbox.get_user_root_dir +#### AsyncSandbox.get_work_dir \{#asyncsandboxget_work_dir\} ```python -@intercept_errors(message_prefix="Failed to get sandbox root directory: ") -async def get_user_root_dir() -> str +@intercept_errors(message_prefix="作業ディレクトリパスの取得に失敗しました: ") +async def get_work_dir() -> str ``` -サンドボックス内でログイン中のユーザーのルートディレクトリのパスを取得します。 +サンドボックス内の作業ディレクトリのパスを取得します。 **戻り値**: -- `str` - ログイン中のユーザー向けサンドボックスのルートディレクトリへの絶対パス。 - +* `str` - サンドボックスの作業ディレクトリへの絶対パス。Dockerfile に `WORKDIR` が指定されていればそれを使用し、指定されていない場合はユーザーのホームディレクトリを使用します。 **例**: ```python -root_dir = await sandbox.get_user_root_dir() -print(f"Sandbox root: {root_dir}") +work_dir = await sandbox.get_work_dir() +print(f"サンドボックス作業ディレクトリ: {work_dir}") ``` -#### AsyncSandbox.create_lsp_server +#### AsyncSandbox.create_lsp_server \{#asyncsandboxcreate_lsp_server\} ```python def create_lsp_server(language_id: LspLanguageId, path_to_project: str) -> AsyncLspServer ``` -新しい Language Server Protocol (LSP) サーバーインスタンスを作成します。 +新しい Language Server Protocol (LSP) サーバーのインスタンスを作成します。 -LSP サーバーは、コード補完や診断などの言語固有機能を提供します。 +LSP サーバーは、コード補完や診断などの言語固有の機能を提供します。 **引数**: -- `language_id` _LspLanguageId_ - 言語サーバーの種類(例: LspLanguageId.PYTHON)。 -- `path_to_project` _str_ - プロジェクトのルートディレクトリへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 - +* `language_id` *LspLanguageId* - 言語サーバーの種類(例: LspLanguageId.PYTHON)。 +* `path_to_project` *str* - プロジェクトのルートディレクトリへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `LspServer` - 指定した言語向けに構成された新しい LSP サーバーインスタンス。 - +* `LspServer` - 指定した言語向けに構成された新しい LSP サーバーのインスタンス。 **例**: @@ -128,26 +147,24 @@ LSP サーバーは、コード補完や診断などの言語固有機能を提 lsp = sandbox.create_lsp_server("python", "workspace/project") ``` -#### AsyncSandbox.set\_labels +#### AsyncSandbox.set_labels \{#asyncsandboxset_labels\} ```python -@intercept_errors(message_prefix="Failed to set labels: ") +@intercept_errors(message_prefix="ラベルの設定に失敗しました: ") async def set_labels(labels: Dict[str, str]) -> Dict[str, str] ``` -サンドボックスにラベルを設定します。 +サンドボックスのラベルを設定します。 -ラベルは、サンドボックスを整理・識別するために使えるキーと値のペアです。 +ラベルは、サンドボックスを整理・識別するために使用できるキーと値のペアです。 **引数**: -- `labels` _Dict[str, str]_ - サンドボックスのラベルを表すキーと値のペアのディクショナリ。 - +* `labels` *Dict[str, str]* - サンドボックスのラベルを表すキーと値ペアのディクショナリ。 **戻り値**: - Dict[str, str]: 更新後のサンドボックスのラベルを含むディクショナリ。 - +Dict[str, str]: 更新されたサンドボックスのラベルを含むディクショナリ。 **例**: @@ -157,45 +174,43 @@ new_labels = sandbox.set_labels({ "environment": "development", "team": "backend" }) -print(f"Updated labels: {new_labels}") +print(f"更新されたラベル: {new_labels}") ``` -#### AsyncSandbox.start +#### AsyncSandbox.start \{#asyncsandboxstart\} ```python @intercept_errors(message_prefix="Failed to start sandbox: ") @with_timeout(error_message=lambda self, timeout: ( - f"Sandbox {self.id} failed to start within the {timeout} seconds timeout period" + f"サンドボックス {self.id} が {timeout} 秒のタイムアウト期間内に開始に失敗しました" )) async def start(timeout: Optional[float] = 60) ``` -サンドボックスを起動し、準備完了まで待機します。 +サンドボックスを起動し、準備が整うまで待機します。 **引数**: -- `timeout` _Optional[float]_ - 最大待機時間(秒)。0 はタイムアウトなし。デフォルトは 60 秒。 - +* `timeout` *Optional[float]* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒です。 **例外**: -- `DaytonaError` - タイムアウトが負の場合。サンドボックスの起動に失敗した場合、またはタイムアウトした場合。 - +* `DaytonaError` - timeout が負の場合、またはサンドボックスの起動に失敗した/タイムアウトした場合。 **例**: ```python sandbox = daytona.get_current_sandbox("my-sandbox") -sandbox.start(timeout=40) # 最大 40 秒待機 -print("Sandbox started successfully") +sandbox.start(timeout=40) # 最大40秒待機 +print("サンドボックスが正常に開始されました") ``` -#### AsyncSandbox.stop +#### AsyncSandbox.stop \{#asyncsandboxstop\} ```python -@intercept_errors(message_prefix="Failed to stop sandbox: ") +@intercept_errors(message_prefix="サンドボックスの停止に失敗しました: ") @with_timeout(error_message=lambda self, timeout: ( - f"Sandbox {self.id} failed to stop within the {timeout} seconds timeout period" + f"サンドボックス {self.id} は {timeout} 秒のタイムアウト期間内に停止できませんでした" )) async def stop(timeout: Optional[float] = 60) ``` @@ -204,26 +219,24 @@ async def stop(timeout: Optional[float] = 60) **引数**: -- `timeout` _Optional[float]_ - 最大待機時間(秒)。0 はタイムアウトなし。デフォルトは 60 秒。 - +* `timeout` *Optional[float]* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒。 **例外**: -- `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの停止に失敗した場合/タイムアウトした場合。 - +* `DaytonaError` - timeout が負の値の場合、またはサンドボックスの停止に失敗した/タイムアウトした場合 **例**: ```python sandbox = daytona.get_current_sandbox("my-sandbox") sandbox.stop() -print("Sandbox stopped successfully") +print("サンドボックスが正常に停止されました") ``` -#### AsyncSandbox.delete +#### AsyncSandbox.delete \{#asyncsandboxdelete\} ```python -@intercept_errors(message_prefix="Failed to remove sandbox: ") +@intercept_errors(message_prefix="サンドボックスの削除に失敗しました: ") async def delete(timeout: Optional[float] = 60) -> None ``` @@ -231,93 +244,87 @@ async def delete(timeout: Optional[float] = 60) -> None **引数**: -- `timeout` _Optional[float]_ - サンドボックス削除のタイムアウト(秒)。0 はタイムアウトなし。 - デフォルトは 60 秒。 +* `timeout` *Optional[float]* - サンドボックス削除のタイムアウト(秒)。0 はタイムアウトなしを意味します。 + デフォルトは 60 秒です。 -#### AsyncSandbox.wait\_for\_sandbox\_start +#### AsyncSandbox.wait_for_sandbox_start \{#asyncsandboxwait_for_sandbox_start\} ```python @intercept_errors( - message_prefix="Failure during waiting for sandbox to start: ") + message_prefix="サンドボックスの開始待機中に失敗: ") @with_timeout(error_message=lambda self, timeout: ( - f"Sandbox {self.id} failed to become ready within the {timeout} seconds timeout period" + f"サンドボックス {self.id} は {timeout} 秒のタイムアウト期間内に準備完了状態になりませんでした" )) async def wait_for_sandbox_start(timeout: Optional[float] = 60) -> None ``` -サンドボックスが「started」状態になるまで待機します。サンドボックスのステータスをポーリングし、 -「started」になるか、エラーが発生するか、タイムアウトするまで待機します。 +サンドボックスが'started' 状態に到達するまで待機します。サンドボックスのステータスをポーリングし、'started' 状態に到達するか、エラーが発生するか、タイムアウトするまで実行します。 **引数**: -- `timeout` _Optional[float]_ - 最大待機時間(秒)。0 はタイムアウトなし。デフォルトは 60 秒。 - +* `timeout` *Optional[float]* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒です。 -**例外**: +**送出**: -- `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの起動に失敗/タイムアウトした場合。 +* `DaytonaError` - タイムアウトが負の値の場合、またはサンドボックスの起動に失敗するかタイムアウトした場合 -#### AsyncSandbox.wait\_for\_sandbox\_stop +#### AsyncSandbox.wait_for_sandbox_stop \{#asyncsandboxwait_for_sandbox_stop\} ```python @intercept_errors( - message_prefix="Failure during waiting for sandbox to stop: ") + message_prefix="サンドボックスの停止待機中に失敗: ") @with_timeout(error_message=lambda self, timeout: ( - f"Sandbox {self.id} failed to become stopped within the {timeout} seconds timeout period" + f"サンドボックス {self.id} は {timeout} 秒のタイムアウト期間内に停止できませんでした" )) async def wait_for_sandbox_stop(timeout: Optional[float] = 60) -> None ``` -サンドボックスが「stopped」状態になるまで待機します。サンドボックスのステータスをポーリングし、 -「stopped」状態に到達するか、エラーが発生するか、タイムアウトするまで待機します。最大 60 秒間、 -サンドボックスの停止を待機します。 +サンドボックスが「stopped」状態になるまで待機します。サンドボックスのステータスをポーリングし、「stopped」状態に到達するか、エラーが発生するか、タイムアウトするまで継続します。サンドボックスの停止を最大60秒まで待機します。 +停止後に自動削除される短命なサンドボックスに対応するため、destroyed を stopped と同等として扱います。 **引数**: -- `timeout` _Optional[float]_ - 待機する最大時間(秒)。0 はタイムアウトなし。デフォルトは 60 秒。 - +* `timeout` *Optional[float]* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒。 -**送出**: +**例外**: -- `DaytonaError` - タイムアウトが負の場合。サンドボックスの停止に失敗した場合、またはタイムアウトした場合。 +* `DaytonaError` - timeout が負の値の場合。サンドボックスの停止に失敗した場合、またはタイムアウトした場合。 -#### AsyncSandbox.set\_autostop\_interval +#### AsyncSandbox.set_autostop_interval \{#asyncsandboxset_autostop_interval\} ```python -@intercept_errors(message_prefix="Failed to set auto-stop interval: ") +@intercept_errors(message_prefix="自動停止間隔の設定に失敗しました: ") async def set_autostop_interval(interval: int) -> None ``` サンドボックスの自動停止間隔を設定します。 -指定した間隔のあいだアイドル(新規イベントなし)が続くと、サンドボックスは自動的に停止します。 -イベントには、SDK を通じたサンドボックスのあらゆる状態変更や操作が含まれます。 -サンドボックスのプレビューを用いた操作は含まれません。 +サンドボックスは、指定した間隔のあいだアイドル状態(新しいイベントなし)が続くと自動的に停止します。 +イベントには、SDK を通じたサンドボックスへの状態変更や操作が含まれます。 +サンドボックスのプレビュー経由の操作は含まれません。 **引数**: -- `interval` _int_ - 自動停止までの非アクティブ時間(分)。 - 0 に設定すると自動停止を無効化。デフォルトは 15。 - +* `interval` *int* - 自動停止までの非アクティブ時間(分)。 + 0 に設定すると自動停止を無効化します。既定値は 15。 **送出**: -- `DaytonaError` - interval が負の場合 - +* `DaytonaError` - interval が負の場合 **例**: ```python -# 1 時間後に自動停止 +# 1時間後に自動停止 sandbox.set_autostop_interval(60) -# もしくは自動停止を無効化 +# または自動停止を無効化 sandbox.set_autostop_interval(0) ``` -#### AsyncSandbox.set\_auto\_archive\_interval +#### AsyncSandbox.set_auto_archive_interval \{#asyncsandboxset_auto_archive_interval\} ```python -@intercept_errors(message_prefix="Failed to set auto-archive interval: ") +@intercept_errors(message_prefix="自動アーカイブ間隔の設定に失敗しました: ") async def set_auto_archive_interval(interval: int) -> None ``` @@ -327,113 +334,159 @@ async def set_auto_archive_interval(interval: int) -> None **引数**: -- `interval` _int_ - 連続停止中のサンドボックスが自動アーカイブされるまでの分数。 - 0 に設定すると最大の間隔になります。デフォルトは 7 日。 - +* `interval` *int* - 連続停止後に自動アーカイブされるまでの分数。 + 最大の間隔にするには 0 を設定します。デフォルトは 7 日です。 -**送出**: +**例外**: -- `DaytonaError` - interval が負の場合 - +* `DaytonaError` - interval が負の場合 **例**: ```python -# 1 時間後に自動アーカイブ +# 1時間後に自動アーカイブ sandbox.set_auto_archive_interval(60) -# もしくは最大の間隔を使用 +# または最大間隔を使用 sandbox.set_auto_archive_interval(0) ``` -#### AsyncSandbox.set\_auto\_delete\_interval +#### AsyncSandbox.set_auto_delete_interval \{#asyncsandboxset_auto_delete_interval\} ```python -@intercept_errors(message_prefix="Failed to set auto-delete interval: ") +@intercept_errors(message_prefix="自動削除間隔の設定に失敗しました: ") async def set_auto_delete_interval(interval: int) -> None ``` サンドボックスの自動削除間隔を設定します。 -指定した間隔のあいだ連続して停止状態が続くと、サンドボックスは自動的に削除されます。 +指定した間隔のあいだ連続して停止していた場合、サンドボックスは自動的に削除されます。 **引数**: -- `interval` _int_ - 連続停止中のサンドボックスが自動削除されるまでの分数。 - 自動削除を無効化するには負の値を設定。停止時に即時削除するには 0 を設定。 +* `interval` *int* - 連続停止から自動削除までの分数。 + 自動削除を無効にするには負の値を設定します。停止時に即時削除するには 0 を設定します。 既定では自動削除は無効です。 - **例**: ```python -# 1 時間後に自動削除 +# 1時間後に自動削除 sandbox.set_auto_delete_interval(60) -# もしくは停止時に即時削除 +# または停止時に即座に削除 sandbox.set_auto_delete_interval(0) -# もしくは自動削除を無効化 +# または自動削除を無効化 sandbox.set_auto_delete_interval(-1) ``` -#### AsyncSandbox.get\_preview\_link +#### AsyncSandbox.get_preview_link \{#asyncsandboxget_preview_link\} ```python -@intercept_errors(message_prefix="Failed to get preview link: ") +@intercept_errors(message_prefix="プレビューリンクの取得に失敗しました: ") async def get_preview_link(port: int) -> PortPreviewUrl ``` -指定したポートのサンドボックスに対するプレビューリンクを取得します。ポートが閉じている場合は -自動的に開かれます。プライベートなサンドボックスの場合は、URL へのアクセスを許可するトークンが -含まれます。 +指定したポートのサンドボックスに対するプレビューリンクを取得します。ポートが閉じている場合は自動的に開かれます。プライベートなサンドボックスでは、URL へのアクセスを許可するトークンが含まれます。 **引数**: -- `port` _int_ - プレビューリンクを開くポート。 - +* `port` *int* - プレビューリンクを公開するポート。 **戻り値**: -- `PortPreviewUrl` - プレビューリンクのレスポンスオブジェクト。`url` - と `token`(プライベートなサンドボックスへのアクセス用)を含みます。 - +* `PortPreviewUrl` - プレビューリンクのレスポンスオブジェクト。`url` と + `token`(プライベートなサンドボックスにアクセスするため)を含みます。 **例**: ```python preview_link = sandbox.get_preview_link(3000) -print(f"Preview URL: {preview_link.url}") -print(f"Token: {preview_link.token}") +print(f"プレビューURL: {preview_link.url}") +print(f"トークン: {preview_link.token}") ``` -#### AsyncSandbox.archive +#### AsyncSandbox.archive \{#asyncsandboxarchive\} ```python -@intercept_errors(message_prefix="Failed to archive sandbox: ") +@intercept_errors(message_prefix="サンドボックスのアーカイブに失敗しました: ") async def archive() -> None ``` -サンドボックスをアーカイブし、非アクティブ化して状態を保持します。サンドボックスが -アーカイブされると、ファイルシステムの状態全体がコスト効率の高いオブジェクトストレージに移され、 -長期間にわたってサンドボックスを保持できます。アーカイブ状態と停止状態の -トレードオフは、サンドボックスのサイズに応じて、アーカイブされたサンドボックスの起動により -時間がかかる点です。アーカイブ前にサンドボックスは停止している必要があります。 +サンドボックスをアーカイブし、非アクティブ化したうえで状態を保持します。サンドボックスが +アーカイブされると、ファイルシステム全体の状態がコスト効率の高いオブジェクトストレージへ移され、 +サンドボックスを長期間にわたり利用可能な状態で保持できます。アーカイブと +停止状態の違いとして、サンドボックスのサイズに応じてアーカイブ済みサンドボックスの起動にはより時間がかかります。 +アーカイブする前にサンドボックスを停止する必要があります。 +#### AsyncSandbox.create_ssh_access \{#asyncsandboxcreate_ssh_access\} -## リソース +```python +@intercept_errors(message_prefix="SSHアクセスの作成に失敗しました: ") +async def create_ssh_access( + expires_in_minutes: Optional[int] = None) -> SshAccessDto +``` + +サンドボックス用のSSHアクセス・トークンを作成します。 + +**引数**: + +* `expires_in_minutes` *Optional[int]* - SSHアクセス・トークンの有効期間(分)。 + +#### AsyncSandbox.revoke_ssh_access \{#asyncsandboxrevoke_ssh_access\} + +```python +@intercept_errors(message_prefix="SSHアクセスの取り消しに失敗しました: ") +async def revoke_ssh_access(token: str) -> None +``` + +サンドボックスのSSHアクセス用トークンを失効します。 + +**引数**: + +* `token` *str* - 失効するトークン。 + +#### AsyncSandbox.validate_ssh_access \{#asyncsandboxvalidate_ssh_access\} + +```python +@intercept_errors(message_prefix="SSHアクセスの検証に失敗しました: ") +async def validate_ssh_access(token: str) -> SshAccessValidationDto +``` + +サンドボックスのSSHアクセス用トークンを検証します。 + +**引数**: + +* `token` *str* - 検証するトークン。 + +## AsyncPaginatedSandboxes \{#asyncpaginatedsandboxes\} + +```python +class AsyncPaginatedSandboxes(PaginatedSandboxesDto) +``` + +Daytona のサンドボックスをページ分割したリストを表します。 + +**属性**: + +* `items` *List[AsyncSandbox]* - 現在のページに含まれるサンドボックスインスタンスの一覧。 +* `total` *int* - 全ページ合計のサンドボックス数。 +* `page` *int* - 現在のページ番号。 +* `total_pages` *int* - 利用可能なページの総数。 + +## リソース \{#resources\} ```python @dataclass class Resources() ``` -サンドボックスのリソース構成。 +サンドボックスのリソース設定。 **属性**: -- `cpu` _Optional[int]_ - 割り当てるCPUコア数。 -- `memory` _Optional[int]_ - 割り当てるメモリ容量(GiB)。 -- `disk` _Optional[int]_ - 割り当てるディスク容量(GiB)。 -- `gpu` _Optional[int]_ - 割り当てるGPU数。 - +* `cpu` *Optional[int]* - 割り当てる CPU コア数。 +* `memory` *Optional[int]* - 割り当てるメモリ容量(GiB)。 +* `disk` *Optional[int]* - 割り当てるディスク容量(GiB)。 +* `gpu` *Optional[int]* - 割り当てる GPU 数。 **例**: @@ -441,7 +494,7 @@ class Resources() resources = Resources( cpu=2, memory=4, # 4GiB RAM - disk=20, # 20GiB disk + disk=20, # 20GiB ディスク gpu=1 ) params = CreateSandboxFromImageParams( @@ -450,4 +503,3 @@ params = CreateSandboxFromImageParams( resources=resources ) ``` - diff --git a/apps/docs/src/content/docs/ja/python-sdk/async/async-snapshot.mdx b/apps/docs/src/content/docs/ja/python-sdk/async/async-snapshot.mdx index ef13fab20..0e8801a22 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/async/async-snapshot.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/async/async-snapshot.mdx @@ -3,69 +3,73 @@ title: "AsyncSnapshot" hideTitleOnPage: true --- -## スナップショット +## スナップショット \{#snapshot\} ```python class Snapshot(SnapshotDto) ``` -Daytona(サンドボックスの作成・管理を行うプラットフォーム)における、事前構成済みのサンドボックスであるスナップショット(リソースや依存関係を含む再利用可能なイメージ/テンプレート)を表します。 +事前構成済みのサンドボックスである Daytona のスナップショットを表します。 **属性**: -- `id` _StrictStr_ - スナップショットの一意の識別子。 -- `organization_id` _Optional[StrictStr]_ - スナップショットの組織(ユーザー・リソースのグループ化、役割・課金・制限を含む)ID。 -- `general` _Optional[bool]_ - スナップショットが汎用かどうか。 -- `name` _StrictStr_ - スナップショットの名称。 -- `image_name` _StrictStr_ - スナップショットのイメージ名。 -- `state` _StrictStr_ - スナップショットの状態。 -- `size` _Optional[Union[StrictFloat, StrictInt]]_ - スナップショットのサイズ。 -- `entrypoint` _Optional[List[str]]_ - スナップショットのエントリーポイント。 -- `cpu` _Union[StrictFloat, StrictInt]_ - スナップショットのCPU。 -- `gpu` _Union[StrictFloat, StrictInt]_ - スナップショットのGPU。 -- `mem` _Union[StrictFloat, StrictInt]_ - スナップショットのメモリ(GiB)。 -- `disk` _Union[StrictFloat, StrictInt]_ - スナップショットのディスク(GiB)。 -- `error_reason` _Optional[StrictStr]_ - スナップショットのエラー理由。 -- `created_at` _StrictStr_ - スナップショットの作成時刻。 -- `updated_at` _StrictStr_ - スナップショットの最終更新時刻。 -- `last_used_at` _StrictStr_ - スナップショットの最終使用時刻。 - - -## AsyncSnapshotService +* `id` *StrictStr* - スナップショットの一意の識別子。 +* `organization_id` *Optional[StrictStr]* - スナップショットの組織 ID。 +* `general` *Optional[bool]* - スナップショットが汎用かどうか。 +* `name` *StrictStr* - スナップショットの名称。 +* `image_name` *StrictStr* - スナップショットのイメージ名。 +* `state` *StrictStr* - スナップショットの状態。 +* `size` *Optional[Union[StrictFloat, StrictInt]]* - スナップショットのサイズ。 +* `entrypoint` *Optional[List[str]]* - スナップショットのエントリポイント。 +* `cpu` *Union[StrictFloat, StrictInt]* - スナップショットの CPU。 +* `gpu` *Union[StrictFloat, StrictInt]* - スナップショットの GPU。 +* `mem` *Union[StrictFloat, StrictInt]* - スナップショットのメモリ(GiB)。 +* `disk` *Union[StrictFloat, StrictInt]* - スナップショットのディスク(GiB)。 +* `error_reason` *Optional[StrictStr]* - スナップショットのエラー理由。 +* `created_at` *StrictStr* - スナップショットの作成時刻(タイムスタンプ)。 +* `updated_at` *StrictStr* - スナップショットの最終更新時刻(タイムスタンプ)。 +* `last_used_at` *StrictStr* - スナップショットの最終使用時刻(タイムスタンプ)。 + +## AsyncSnapshotService \{#asyncsnapshotservice\} ```python class AsyncSnapshotService() ``` -Daytonaのスナップショット(スナップショット(リソースや依存関係を含む再利用可能なイメージ/テンプレート))を管理するサービス。スナップショットの一覧、取得、作成、削除に使用できます。 +Daytona のスナップショットを管理するサービス。スナップショットの一覧、取得、作成、削除を行えます。 -#### AsyncSnapshotService.list +#### AsyncSnapshotService.list \{#asyncsnapshotservicelist\} ```python -@intercept_errors(message_prefix="Failed to list snapshots: ") -async def list() -> List[Snapshot] +@intercept_errors(message_prefix="スナップショットの一覧取得に失敗しました: ") +async def list(page: Optional[int] = None, + limit: Optional[int] = None) -> PaginatedSnapshots ``` -すべてのスナップショットを一覧します。 +スナップショットのページ分割リストを返します。 + +**引数**: + +* `page` *Optional[int]* - ページ番号(1から開始)。 +* `limit` *Optional[int]* - 1ページあたりの最大件数。 **戻り値**: -- `List[Snapshot]` - すべてのスナップショットのリスト。 - +* `PaginatedSnapshots` - ページ分割されたスナップショットのリスト。 **例**: ```python async with AsyncDaytona() as daytona: - snapshots = await daytona.snapshot.list() - for snapshot in snapshots: + result = await daytona.snapshot.list(page=2, limit=10) + for snapshot in result.items: print(f"{snapshot.name} ({snapshot.image_name})") ``` -#### AsyncSnapshotService.delete +#### AsyncSnapshotService.delete \{#asyncsnapshotservicedelete\} ```python -@intercept_errors(message_prefix="Failed to delete snapshot: ") +@intercept_errors(message_prefix="スナップショットの削除に失敗しました: ") async def delete(snapshot: Snapshot) -> None ``` @@ -73,8 +77,7 @@ async def delete(snapshot: Snapshot) -> None **引数**: -- `snapshot` _Snapshot_ - 削除するスナップショット。 - +* `snapshot` *スナップショット* - 削除するスナップショット。 **例**: @@ -82,13 +85,13 @@ async def delete(snapshot: Snapshot) -> None async with AsyncDaytona() as daytona: snapshot = await daytona.snapshot.get("test-snapshot") await daytona.snapshot.delete(snapshot) - print("Snapshot deleted") + print("スナップショットが削除されました") ``` -#### AsyncSnapshotService.get +#### AsyncSnapshotService.get \{#asyncsnapshotserviceget\} ```python -@intercept_errors(message_prefix="Failed to get snapshot: ") +@intercept_errors(message_prefix="スナップショットの取得に失敗しました: ") async def get(name: str) -> Snapshot ``` @@ -96,13 +99,11 @@ async def get(name: str) -> Snapshot **引数**: -- `name` _str_ - 取得するスナップショット名。 - +* `name` *str* - 取得するスナップショットの名前。 **戻り値**: -- `Snapshot` - 取得したスナップショット。 - +* `Snapshot` - スナップショットのオブジェクト。 **例**: @@ -112,25 +113,25 @@ async with AsyncDaytona() as daytona: print(f"{snapshot.name} ({snapshot.image_name})") ``` -#### AsyncSnapshotService.create +#### AsyncSnapshotService.create \{#asyncsnapshotservicecreate\} ```python -@intercept_errors(message_prefix="Failed to create snapshot: ") +@intercept_errors(message_prefix="スナップショットの作成に失敗しました: ") @with_timeout(error_message=lambda self, timeout: ( - f"Failed to create snapshot within {timeout} seconds timeout period.")) + f"{timeout}秒のタイムアウト期間内にスナップショットを作成できませんでした。")) async def create(params: CreateSnapshotParams, *, on_logs: Callable[[str], None] = None, timeout: Optional[float] = 0) -> Snapshot ``` -指定されたImage定義から新しいスナップショットを作成し、登録します。 +指定されたイメージ定義から新しいスナップショットを作成して登録します。 **引数**: -- `params` _CreateSnapshotParams_ - スナップショット作成用パラメータ。 -- `on_logs` _Callable[[str], None]_ - スナップショット作成時のログを処理するコールバック関数。 -- `timeout` _Optional[float]_ - 既定ではタイムアウトなし。秒数で指定(0はタイムアウトなし)。 +* `params` *CreateSnapshotParams* - スナップショット作成用のパラメータ。 +* `on_logs` *Callable[[str], None]* - スナップショット作成時のログを処理するコールバック関数。 +* `timeout` *Optional[float]* - 既定はタイムアウトなし。秒単位のタイムアウト(0 はタイムアウトなし)。 **例**: @@ -142,23 +143,23 @@ daytona.snapshot.create( ) ``` -#### AsyncSnapshotService.activate +#### AsyncSnapshotService.activate \{#asyncsnapshotserviceactivate\} ```python -async def activate(snapshot: Snapshot) -> Snapshot +async def activate(snapshot: スナップショット) -> スナップショット ``` -スナップショットをアクティブ化します。 +スナップショットを有効化します。 **引数**: -- `snapshot` _Snapshot_ - 対象のスナップショットインスタンス。 +* `snapshot` *スナップショット* - スナップショットのインスタンス。 -**戻り値**: +**返り値**: -- `Snapshot` - アクティブ化されたスナップショットインスタンス。 +* `Snapshot` - 有効化されたスナップショットのインスタンス。 -#### AsyncSnapshotService.process\_image\_context +#### AsyncSnapshotService.process_image_context \{#asyncsnapshotserviceprocess_image_context\} ```python @staticmethod @@ -166,17 +167,32 @@ async def process_image_context(object_storage_api: ObjectStorageApi, image: Image) -> List[str] ``` -イメージのコンテキストをオブジェクトストレージにアップロードして処理します。 +オブジェクトストレージへアップロードして画像コンテキストを処理します。 **引数**: -- `image` _Image_ - 対象のImageインスタンス。 +* `image` *Image* - Image のインスタンス。 **戻り値**: -- `List[str]` - オブジェクトストレージに保存されたコンテキストハッシュのリスト。 +* `List[str]` - オブジェクトストレージに保存されたコンテキストハッシュのリスト。 -## CreateSnapshotParams +## ページネーションされたスナップショット \{#paginatedsnapshots\} + +```python +class PaginatedSnapshots(PaginatedSnapshotsDto) +``` + +Daytona のスナップショットのページネーション対応リストを表します。 + +**属性**: + +* `items` *List[Snapshot]* - 現在のページに含まれるスナップショットインスタンスの一覧。 +* `total` *int* - 全ページ合計のスナップショット総数。 +* `page` *int* - 現在のページ番号。 +* `total_pages` *int* - 利用可能なページの総数。 + +## CreateSnapshotParams(スナップショット作成パラメーター) \{#createsnapshotparams\} ```python class CreateSnapshotParams(BaseModel) @@ -186,10 +202,9 @@ class CreateSnapshotParams(BaseModel) **属性**: -- `name` _Optional[str]_ - スナップショット名。 -- `image` _Union[str, Image]_ - スナップショットのイメージ。文字列が指定された場合は、 - いずれかのレジストリで利用可能である必要があります。Image インスタンスが指定された場合は、 - Daytonaで新しいイメージを作成する際に使用されます。 -- `resources` _Optional[Resources]_ - スナップショットのリソース。 -- `entrypoint` _Optional[List[str]]_ - スナップショットのエントリポイント。 - +* `name` *Optional[str]* - スナップショット名。 +* `image` *Union[str, Image]* - スナップショットのイメージ。文字列が指定された場合は、 + いずれかのレジストリで参照可能である必要があります。Image インスタンスが指定された場合は、 + Daytona 上で新しいイメージを作成するために使用されます。 +* `resources` *Optional[Resources]* - スナップショットのリソース。 +* `entrypoint` *Optional[List[str]]* - スナップショットのエントリポイント。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/async/async-volume.mdx b/apps/docs/src/content/docs/ja/python-sdk/async/async-volume.mdx index 203a909bd..2e8b7109f 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/async/async-volume.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/async/async-volume.mdx @@ -3,7 +3,7 @@ title: "AsyncVolume" hideTitleOnPage: true --- -## ボリューム +## ボリューム \{#volume\} ```python class Volume(VolumeDto) @@ -13,16 +13,15 @@ Daytonaのボリューム(S3互換オブジェクトストレージをバッ **属性**: -- `id` _StrictStr_ - ボリュームの一意な識別子。 -- `name` _StrictStr_ - ボリューム名。 -- `organization_id` _StrictStr_ - ボリュームが属する組織ID。 -- `state` _StrictStr_ - ボリュームの状態。 -- `created_at` _StrictStr_ - ボリュームの作成日時。 -- `updated_at` _StrictStr_ - ボリュームの最終更新日時。 -- `last_used_at` _StrictStr_ - ボリュームの最終使用日時。 +* `id` *StrictStr* - ボリュームの一意な識別子。 +* `name` *StrictStr* - ボリューム名。 +* `organization_id` *StrictStr* - ボリュームが属する組織ID。 +* `state` *StrictStr* - ボリュームの状態。 +* `created_at` *StrictStr* - ボリュームの作成日時。 +* `updated_at` *StrictStr* - ボリュームの最終更新日時。 +* `last_used_at` *StrictStr* - ボリュームの最終使用日時。 - -## AsyncVolumeService +## AsyncVolumeService \{#asyncvolumeservice\} ```python class AsyncVolumeService() @@ -30,7 +29,7 @@ class AsyncVolumeService() Daytonaのボリューム(ボリューム(S3互換オブジェクトストレージをバックエンドとするFUSEベースの共有ストレージマウント))を管理するサービスです。ボリュームの一覧、取得、作成、削除に使用できます。 -#### AsyncVolumeService.list +#### AsyncVolumeService.list \{#asyncvolumeservicelist\} ```python async def list() -> List[Volume] @@ -40,8 +39,7 @@ async def list() -> List[Volume] **Returns**: -- `List[Volume]` - すべてのボリュームのリスト。 - +* `List[Volume]` - すべてのボリュームのリスト。 **Example**: @@ -52,7 +50,7 @@ async with AsyncDaytona() as daytona: print(f"{volume.name} ({volume.id})") ``` -#### AsyncVolumeService.get +#### AsyncVolumeService.get \{#asyncvolumeserviceget\} ```python async def get(name: str, create: bool = False) -> Volume @@ -62,14 +60,12 @@ async def get(name: str, create: bool = False) -> Volume **Arguments**: -- `name` _str_ - 取得するボリューム名。 -- `create` _bool_ - True の場合、存在しなければ新規にボリュームを作成します。 - +* `name` *str* - 取得するボリューム名。 +* `create` *bool* - True の場合、存在しなければ新規にボリュームを作成します。 **Returns**: -- `Volume` - 取得したボリュームオブジェクト。 - +* `Volume` - 取得したボリュームオブジェクト。 **Example**: @@ -79,7 +75,7 @@ async with AsyncDaytona() as daytona: print(f"{volume.name} ({volume.id})") ``` -#### AsyncVolumeService.create +#### AsyncVolumeService.create \{#asyncvolumeservicecreate\} ```python async def create(name: str) -> Volume @@ -89,13 +85,11 @@ async def create(name: str) -> Volume **Arguments**: -- `name` _str_ - 作成するボリューム名。 - +* `name` *str* - 作成するボリューム名。 **Returns**: -- `Volume` - 作成されたボリュームオブジェクト。 - +* `Volume` - 作成されたボリュームオブジェクト。 **Example**: @@ -105,7 +99,7 @@ async with AsyncDaytona() as daytona: print(f"{volume.name} ({volume.id}); state: {volume.state}") ``` -#### AsyncVolumeService.delete +#### AsyncVolumeService.delete \{#asyncvolumeservicedelete\} ```python async def delete(volume: Volume) -> None @@ -115,8 +109,7 @@ async def delete(volume: Volume) -> None **Arguments**: -- `volume` _Volume_ - 削除するボリューム。 - +* `volume` *Volume* - 削除するボリューム。 **Example**: @@ -126,4 +119,3 @@ async with AsyncDaytona() as daytona: await daytona.volume.delete(volume) print("Volume deleted") ``` - diff --git a/apps/docs/src/content/docs/ja/python-sdk/common/charts.mdx b/apps/docs/src/content/docs/ja/python-sdk/common/charts.mdx index 9c62b3fb6..b4c3096c0 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/common/charts.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/common/charts.mdx @@ -3,7 +3,7 @@ title: "チャート" hideTitleOnPage: true --- -## チャート +## チャート \{#chart\} ```python class Chart() @@ -13,13 +13,12 @@ matplotlib のメタデータを含むチャートを表します。 **属性**: -- `type` _ChartType_ - チャートのタイプ -- `title` _str_ - チャートのタイトル -- `elements` _List[Any]_ - チャートの要素 -- `png` _Optional[str]_ - base64 でエンコードされたチャートの PNG 表現 +* `type` *ChartType* - チャートのタイプ +* `title` *str* - チャートのタイトル +* `elements` *List[Any]* - チャートの要素 +* `png` *Optional[str]* - base64 でエンコードされたチャートの PNG 表現 - -## ChartType +## ChartType \{#charttype\} ```python class ChartType(str, Enum) @@ -28,15 +27,16 @@ class ChartType(str, Enum) チャートタイプ **列挙メンバー**: - - `LINE` ("line") - - `SCATTER` ("scatter") - - `BAR` ("bar") - - `PIE` ("pie") - - `BOX_AND_WHISKER` ("box_and_whisker") - - `COMPOSITE_CHART` ("composite_chart") - - `UNKNOWN` ("unknown") -## Chart2D +* `LINE` ("line") +* `SCATTER` ("scatter") +* `BAR` ("bar") +* `PIE` ("pie") +* `BOX_AND_WHISKER` ("box_and_whisker") +* `COMPOSITE_CHART` ("composite_chart") +* `UNKNOWN` ("unknown") + +## Chart2D \{#chart2d\} ```python class Chart2D(Chart) @@ -46,10 +46,10 @@ class Chart2D(Chart) **属性**: -- `x_label` _Optional[str]_ - x軸のラベル -- `y_label` _Optional[str]_ - y軸のラベル +* `x_label` *Optional[str]* - x軸のラベル +* `y_label` *Optional[str]* - y軸のラベル -## PointData +## PointData \{#pointdata\} ```python class PointData() @@ -59,10 +59,10 @@ class PointData() **属性**: -- `label` _str_ - 点のラベル -- `points` _List[Tuple[Union[str, float], Union[str, float]]]_ - チャート上の点の配列 +* `label` *str* - 点のラベル +* `points` *List[Tuple[Union[str, float], Union[str, float]]]* - チャート上の点の配列 -## PointChart +## PointChart \{#pointchart\} ```python class PointChart(Chart2D) @@ -72,15 +72,15 @@ class PointChart(Chart2D) **属性**: -- `x_ticks` _List[Union[str, float]]_ - x軸の目盛 -- `x_tick_labels` _List[str]_ - x軸の目盛ラベル -- `x_scale` _str_ - x軸のスケール -- `y_ticks` _List[Union[str, float]]_ - y軸の目盛 -- `y_tick_labels` _List[str]_ - y軸の目盛ラベル -- `y_scale` _str_ - y軸のスケール -- `elements` _List[PointData]_ - 図の点要素 +* `x_ticks` *List[Union[str, float]]* - x軸の目盛 +* `x_tick_labels` *List[str]* - x軸の目盛ラベル +* `x_scale` *str* - x軸のスケール +* `y_ticks` *List[Union[str, float]]* - y軸の目盛 +* `y_tick_labels` *List[str]* - y軸の目盛ラベル +* `y_scale` *str* - y軸のスケール +* `elements` *List[PointData]* - 図の点要素 -## LineChart +## LineChart \{#linechart\} ```python class LineChart(PointChart) @@ -90,9 +90,9 @@ class LineChart(PointChart) **属性**: -- `type` _ChartType_ - チャートの種類 +* `type` *ChartType* - チャートの種類 -## ScatterChart +## ScatterChart \{#scatterchart\} ```python class ScatterChart(PointChart) @@ -102,9 +102,9 @@ class ScatterChart(PointChart) **属性**: -- `type` _ChartType_ - チャートのタイプ +* `type` *ChartType* - チャートのタイプ -## BarData +## BarData \{#bardata\} ```python class BarData() @@ -114,11 +114,11 @@ class BarData() **属性**: -- `label` _str_ - 棒のラベル -- `group` _str_ - 棒のグループ -- `value` _str_ - 棒の値 +* `label` *str* - 棒のラベル +* `group` *str* - 棒のグループ +* `value` *str* - 棒の値 -## BarChart +## BarChart \{#barchart\} ```python class BarChart(Chart2D) @@ -128,10 +128,10 @@ class BarChart(Chart2D) **属性**: -- `type` _ChartType_ - グラフのタイプ -- `elements` _List[BarData]_ - 棒(バー)のリスト +* `type` *ChartType* - グラフのタイプ +* `elements` *List[BarData]* - 棒(バー)のリスト -## PieData +## PieData \{#piedata\} ```python class PieData() @@ -141,12 +141,12 @@ class PieData() **属性**: -- `label` _str_ - スライスのラベル -- `angle` _float_ - スライスの角度 -- `radius` _float_ - スライスの半径 -- `autopct` _float_ - スライスのautopct値 +* `label` *str* - スライスのラベル +* `angle` *float* - スライスの角度 +* `radius` *float* - スライスの半径 +* `autopct` *float* - スライスのautopct値 -## PieChart +## PieChart \{#piechart\} ```python class PieChart(Chart) @@ -156,10 +156,10 @@ class PieChart(Chart) **属性**: -- `type` _ChartType_ - グラフの種類 -- `elements` _List[PieData]_ - 円グラフのスライス +* `type` *ChartType* - グラフの種類 +* `elements` *List[PieData]* - 円グラフのスライス -## BoxAndWhiskerData +## BoxAndWhiskerData \{#boxandwhiskerdata\} ```python class BoxAndWhiskerData() @@ -169,15 +169,15 @@ class BoxAndWhiskerData() **属性**: -- `label` _str_ - 箱ひげのラベル -- `min` _float_ - 箱ひげの最小値 -- `first_quartile` _float_ - 箱ひげの第1四分位数 -- `median` _float_ - 箱ひげの中央値 -- `third_quartile` _float_ - 箱ひげの第3四分位数 -- `max` _float_ - 箱ひげの最大値 -- `outliers` _List[float]_ - 箱ひげの外れ値 +* `label` *str* - 箱ひげのラベル +* `min` *float* - 箱ひげの最小値 +* `first_quartile` *float* - 箱ひげの第1四分位数 +* `median` *float* - 箱ひげの中央値 +* `third_quartile` *float* - 箱ひげの第3四分位数 +* `max` *float* - 箱ひげの最大値 +* `outliers` *List[float]* - 箱ひげの外れ値 -## BoxAndWhiskerChart +## BoxAndWhiskerChart \{#boxandwhiskerchart\} ```python class BoxAndWhiskerChart(Chart2D) @@ -187,10 +187,10 @@ class BoxAndWhiskerChart(Chart2D) **属性**: -- `type` _ChartType_ - チャートのタイプ -- `elements` _List[BoxAndWhiskerData]_ - チャートの箱ひげ要素 +* `type` *ChartType* - チャートのタイプ +* `elements` *List[BoxAndWhiskerData]* - チャートの箱ひげ要素 -## CompositeChart +## CompositeChart \{#compositechart\} ```python class CompositeChart(Chart) @@ -200,6 +200,5 @@ class CompositeChart(Chart) **属性**: -- `type` _ChartType_ - チャートのタイプ -- `elements` _List[Chart]_ - 複合チャートを構成するチャート(サブプロット) - +* `type` *ChartType* - チャートのタイプ +* `elements` *List[Chart]* - 複合チャートを構成するチャート(サブプロット) diff --git a/apps/docs/src/content/docs/ja/python-sdk/common/errors.mdx b/apps/docs/src/content/docs/ja/python-sdk/common/errors.mdx index a5d26c14d..a77cb35f2 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/common/errors.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/common/errors.mdx @@ -3,12 +3,18 @@ title: "エラー" hideTitleOnPage: true --- -## DaytonaError +## DaytonaError \{#daytonaerror\} ```python class DaytonaError(Exception) ``` -Daytona SDKの基底エラー。 +Daytona SDK の基底エラー。 +## DaytonaNotFoundError \{#daytonanotfounderror\} +```python +class DaytonaNotFoundError(DaytonaError) +``` + +リソースが見つからない場合のエラーです。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/common/image.mdx b/apps/docs/src/content/docs/ja/python-sdk/common/image.mdx index e290157e3..94426a2e1 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/common/image.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/common/image.mdx @@ -3,7 +3,7 @@ title: "イメージ(画像)" hideTitleOnPage: true --- -## イメージ +## イメージ \{#image\} ```python class Image(BaseModel) @@ -12,7 +12,7 @@ class Image(BaseModel) Daytona のサンドボックス用イメージ定義を表します。 このクラスを直接インスタンス化しないでください。代わりに `Image.base()`、`Image.debian_slim()`、`Image.from_dockerfile()` などの静的ファクトリメソッドを使用します。 -#### Image.dockerfile +#### Image.dockerfile \{#imagedockerfile\} ```python def dockerfile() -> str @@ -20,7 +20,7 @@ def dockerfile() -> str このイメージ向けに生成された Dockerfile を返します。 -#### Image.pip_install +#### Image.pip_install \{#imagepip_install\} ```python def pip_install(*packages: Union[str, list[str]], @@ -35,19 +35,17 @@ pip を使用してパッケージをインストールするコマンドを追 **引数**: -- `*packages` - インストールするパッケージ。 -- `find_links` - Optional[list[str]]: 使用する find-links。 -- `index_url` - Optional[str]: 使用する index URL。 -- `extra_index_urls` - Optional[list[str]]: 使用する追加の index URL。 -- `pre` - bool = False: プレリリース版パッケージをインストールするかどうか。 -- `extra_options` - str = "": pip に渡す追加オプション。指定した文字列は +* `*packages` - インストールするパッケージ。 +* `find_links` - Optional[list[str]]: 使用する find-links。 +* `index_url` - Optional[str]: 使用する index URL。 +* `extra_index_urls` - Optional[list[str]]: 使用する追加の index URL。 +* `pre` - bool = False: プレリリース版パッケージをインストールするかどうか。 +* `extra_options` - str = "": pip に渡す追加オプション。指定した文字列は そのまま pip install コマンドに渡されます。 - **戻り値**: -- `Image` - pip install コマンドが追加されたイメージ。 - +* `Image` - pip install コマンドが追加されたイメージ。 **例**: @@ -55,7 +53,7 @@ pip を使用してパッケージをインストールするコマンドを追 image = Image.debian_slim("3.12").pip_install("requests", "pandas") ``` -#### Image.pip_install_from_requirements +#### Image.pip_install_from_requirements \{#imagepip_install_from_requirements\} ```python def pip_install_from_requirements(requirements_txt: str, @@ -70,18 +68,16 @@ requirements.txt から依存関係をインストールします。 **引数**: -- `requirements_txt` - str: requirements.txt へのパス。 -- `find_links` - Optional[list[str]]: 使用する find-links。 -- `index_url` - Optional[str]: 使用する index URL。 -- `extra_index_urls` - Optional[list[str]]: 使用する追加の index URL。 -- `pre` - bool = False: プレリリース版パッケージをインストールするかどうか。 -- `extra_options` - str = "": pip に渡す追加オプション。 - +* `requirements_txt` - str: requirements.txt へのパス。 +* `find_links` - Optional[list[str]]: 使用する find-links。 +* `index_url` - Optional[str]: 使用する index URL。 +* `extra_index_urls` - Optional[list[str]]: 使用する追加の index URL。 +* `pre` - bool = False: プレリリース版パッケージをインストールするかどうか。 +* `extra_options` - str = "": pip に渡す追加オプション。 **戻り値**: -- `Image` - pip install コマンドが追加されたイメージ。 - +* `Image` - pip install コマンドが追加されたイメージ。 **例**: @@ -89,7 +85,7 @@ requirements.txt から依存関係をインストールします。 image = Image.debian_slim("3.12").pip_install_from_requirements("requirements.txt") ``` -#### Image.pip_install_from_pyproject +#### Image.pip_install_from_pyproject \{#imagepip_install_from_pyproject\} ```python def pip_install_from_pyproject(pyproject_toml: str, @@ -105,20 +101,18 @@ pyproject.toml から依存関係をインストールします。 **引数**: -- `pyproject_toml` - str: pyproject.toml へのパス。 -- `optional_dependencies` - list[str] = []: pyproject.toml からインストールする任意の依存関係。 -- `find_links` - Optional[str] = None: 使用する find-links。 -- `index_url` - Optional[str] = None: 使用する index URL。 -- `extra_index_url` - Optional[str] = None: 使用する追加の index URL。 -- `pre` - bool = False: プレリリース版パッケージをインストールするかどうか。 -- `extra_options` - str = "": pip に渡す追加オプション。指定した文字列は +* `pyproject_toml` - str: pyproject.toml へのパス。 +* `optional_dependencies` - list[str] = []: pyproject.toml からインストールする任意の依存関係。 +* `find_links` - Optional[str] = None: 使用する find-links。 +* `index_url` - Optional[str] = None: 使用する index URL。 +* `extra_index_url` - Optional[str] = None: 使用する追加の index URL。 +* `pre` - bool = False: プレリリース版パッケージをインストールするかどうか。 +* `extra_options` - str = "": pip に渡す追加オプション。指定した文字列は そのまま pip install コマンドに渡されます。 - **戻り値**: -- `Image` - pip install コマンドが追加されたイメージ。 - +* `Image` - pip install コマンドが追加されたイメージ。 **例**: @@ -126,7 +120,7 @@ pyproject.toml から依存関係をインストールします。 image = Image.debian_slim("3.12") .pip_install_from_pyproject("pyproject.toml", optional_dependencies=["dev"]) ``` -#### Image.add_local_file +#### Image.add_local_file \{#imageadd_local_file\} ```python def add_local_file(local_path: Union[str, Path], remote_path: str) -> "Image" @@ -136,14 +130,12 @@ def add_local_file(local_path: Union[str, Path], remote_path: str) -> "Image" **引数**: -- `local_path` - Union[str, Path]: ローカルファイルへのパス。 -- `remote_path` - str: イメージ内のファイルのパス。 - +* `local_path` - Union[str, Path]: ローカルファイルへのパス。 +* `remote_path` - str: イメージ内のファイルのパス。 **戻り値**: -- `Image` - ローカルファイルが追加されたイメージ。 - +* `Image` - ローカルファイルが追加されたイメージ。 **例**: @@ -151,7 +143,7 @@ def add_local_file(local_path: Union[str, Path], remote_path: str) -> "Image" image = Image.debian_slim("3.12").add_local_file("package.json", "/home/daytona/package.json") ``` -#### Image.add\_local\_dir +#### Image.add_local_dir \{#imageadd_local_dir\} ```python def add_local_dir(local_path: Union[str, Path], remote_path: str) -> "Image" @@ -161,14 +153,12 @@ def add_local_dir(local_path: Union[str, Path], remote_path: str) -> "Image" **引数**: -- `local_path` - Union[str, Path]: ローカルディレクトリへのパス。 -- `remote_path` - str: イメージ内のディレクトリへのパス。 - +* `local_path` - Union[str, Path]: ローカルディレクトリへのパス。 +* `remote_path` - str: イメージ内のディレクトリへのパス。 **戻り値**: -- `Image` - ローカルディレクトリが追加されたイメージ。 - +* `Image` - ローカルディレクトリが追加されたイメージ。 **例**: @@ -176,7 +166,7 @@ def add_local_dir(local_path: Union[str, Path], remote_path: str) -> "Image" image = Image.debian_slim("3.12").add_local_dir("src", "/home/daytona/src") ``` -#### Image.run\_commands +#### Image.run_commands \{#imagerun_commands\} ```python def run_commands(*commands: Union[str, list[str]]) -> "Image" @@ -186,13 +176,11 @@ def run_commands(*commands: Union[str, list[str]]) -> "Image" **引数**: -- `*commands` - 実行するコマンド列。 - +* `*commands` - 実行するコマンド列。 **戻り値**: -- `Image` - コマンドが追加されたイメージ。 - +* `Image` - コマンドが追加されたイメージ。 **例**: @@ -203,7 +191,7 @@ image = Image.debian_slim("3.12").run_commands( ) ``` -#### Image.env +#### Image.env \{#imageenv\} ```python def env(env_vars: dict[str, str]) -> "Image" @@ -213,13 +201,11 @@ def env(env_vars: dict[str, str]) -> "Image" **引数**: -- `env_vars` - dict[str, str]: 設定する環境変数。 - +* `env_vars` - dict[str, str]: 設定する環境変数。 **戻り値**: -- `Image` - 環境変数が追加されたイメージ。 - +* `Image` - 環境変数が追加されたイメージ。 **例**: @@ -227,7 +213,7 @@ def env(env_vars: dict[str, str]) -> "Image" image = Image.debian_slim("3.12").env({"PROJECT_ROOT": "/home/daytona"}) ``` -#### Image.workdir +#### Image.workdir \{#imageworkdir\} ```python def workdir(path: Union[str, Path]) -> "Image" @@ -237,13 +223,11 @@ def workdir(path: Union[str, Path]) -> "Image" **引数**: -- `path` - Union[str, Path]: 作業ディレクトリへのパス。 - +* `path` - Union[str, Path]: 作業ディレクトリへのパス。 **戻り値**: -- `Image` - 作業ディレクトリが設定されたイメージ。 - +* `Image` - 作業ディレクトリが設定されたイメージ。 **例**: @@ -251,7 +235,7 @@ def workdir(path: Union[str, Path]) -> "Image" image = Image.debian_slim("3.12").workdir("/home/daytona") ``` -#### Image.entrypoint +#### Image.entrypoint \{#imageentrypoint\} ```python def entrypoint(entrypoint_commands: list[str]) -> "Image" @@ -261,13 +245,11 @@ def entrypoint(entrypoint_commands: list[str]) -> "Image" **引数**: -- `entrypoint_commands` - list[str]: エントリポイントとして設定するコマンド。 - +* `entrypoint_commands` - list[str]: エントリポイントとして設定するコマンド。 **戻り値**: -- `Image` - エントリポイントが設定されたイメージ。 - +* `Image` - エントリポイントが設定されたイメージ。 **例**: @@ -275,7 +257,7 @@ def entrypoint(entrypoint_commands: list[str]) -> "Image" image = Image.debian_slim("3.12").entrypoint(["/bin/bash"]) ``` -#### Image.cmd +#### Image.cmd \{#imagecmd\} ```python def cmd(cmd: list[str]) -> "Image" @@ -285,13 +267,11 @@ def cmd(cmd: list[str]) -> "Image" **引数**: -- `cmd` - list[str]: デフォルトコマンドとして設定するコマンド。 - +* `cmd` - list[str]: デフォルトコマンドとして設定するコマンド。 **戻り値**: -- `Image` - デフォルトコマンドが設定されたイメージ。 - +* `Image` - デフォルトコマンドが設定されたイメージ。 **例**: @@ -299,7 +279,7 @@ def cmd(cmd: list[str]) -> "Image" image = Image.debian_slim("3.12").cmd(["/bin/bash"]) ``` -#### Image.dockerfile\_commands +#### Image.dockerfile_commands \{#imagedockerfile_commands\} ```python def dockerfile_commands( @@ -311,14 +291,12 @@ def dockerfile_commands( **引数**: -- `*dockerfile_commands` - Dockerfileに追加するコマンド。 -- `context_dir` - Optional[Union[Path, str]]: コンテキストディレクトリへのパス。 - +* `*dockerfile_commands` - Dockerfileに追加するコマンド。 +* `context_dir` - Optional[Union[Path, str]]: コンテキストディレクトリへのパス。 **戻り値**: -- `Image` - Dockerfileコマンドが追加されたイメージ。 - +* `Image` - Dockerfileコマンドが追加されたイメージ。 **例**: @@ -326,7 +304,7 @@ def dockerfile_commands( image = Image.debian_slim("3.12").dockerfile_commands(["RUN echo 'Hello, world!'"]) ``` -#### Image.from\_dockerfile +#### Image.from_dockerfile \{#imagefrom_dockerfile\} ```python @staticmethod @@ -337,13 +315,11 @@ def from_dockerfile(path: Union[str, Path]) -> "Image" **引数**: -- `path` - Union[str, Path]: Dockerfileへのパス。 - +* `path` - Union[str, Path]: Dockerfileへのパス。 **戻り値**: -- `Image` - Dockerfileを元に作成されたイメージ。 - +* `Image` - Dockerfileを元に作成されたイメージ。 **例**: @@ -351,7 +327,7 @@ def from_dockerfile(path: Union[str, Path]) -> "Image" image = Image.from_dockerfile("Dockerfile") ``` -#### Image.base +#### Image.base \{#imagebase\} ```python @staticmethod @@ -362,13 +338,11 @@ def base(image: str) -> "Image" **引数**: -- `image` - str: 使用するベースイメージ。 - +* `image` - str: 使用するベースイメージ。 **戻り値**: -- `Image` - ベースイメージを基に作成されたイメージ。 - +* `Image` - ベースイメージを基に作成されたイメージ。 **例**: @@ -376,7 +350,7 @@ def base(image: str) -> "Image" image = Image.base("python:3.12-slim-bookworm") ``` -#### Image.debian\_slim +#### Image.debian_slim \{#imagedebian_slim\} ```python @staticmethod @@ -388,13 +362,11 @@ def debian_slim( **引数**: -- `python_version` - Optional[SupportedPythonSeries]: 使用する Python のバージョン。 - +* `python_version` - Optional[SupportedPythonSeries]: 使用する Python のバージョン。 **戻り値**: -- `Image` - Debian slim イメージを追加した Image。 - +* `Image` - Debian slim イメージを追加した Image。 **例**: @@ -402,8 +374,7 @@ def debian_slim( image = Image.debian_slim("3.12") ``` - -## コンテキスト +## コンテキスト \{#context\} ```python class Context(BaseModel) @@ -413,6 +384,5 @@ class Context(BaseModel) **属性**: -- `source_path` _str_ - 元ファイルまたはディレクトリへのパス。 -- `archive_path` _Optional[str]_ - オブジェクトストレージ内のアーカイブファイル内でのパス。 - +* `source_path` *str* - 元ファイルまたはディレクトリへのパス。 +* `archive_path` *Optional[str]* - オブジェクトストレージ内のアーカイブファイル内でのパス。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/index.mdx b/apps/docs/src/content/docs/ja/python-sdk/index.mdx index e8c3148fc..3875df9fa 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/index.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/index.mdx @@ -8,7 +8,7 @@ import { TabItem, Tabs } from '@astrojs/starlight/components' Daytona の Python SDK は、Daytona サンドボックスとプログラム的にやり取りするための堅牢なインターフェースを提供します。 -## インストール +## インストール \{#installation\} pip で Daytona の Python SDK をインストールします: @@ -22,11 +22,11 @@ pip install daytona poetry add daytona ``` -## はじめに +## はじめに \{#getting-started\} Daytona の Python SDK を使い始めるためのシンプルな例を示します。 - + ```python from daytona import Daytona @@ -68,11 +68,11 @@ Daytona の Python SDK を使い始めるためのシンプルな例を示しま -## 構成 +## 構成 \{#configuration\} SDK は環境変数を使うか、コンストラクタにオプションを渡して設定できます: - + ```python from daytona import Daytona, DaytonaConfig diff --git a/apps/docs/src/content/docs/ja/python-sdk/sync/computer-use.mdx b/apps/docs/src/content/docs/ja/python-sdk/sync/computer-use.mdx index c15c4b64a..555181ae6 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/sync/computer-use.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/sync/computer-use.mdx @@ -1,9 +1,9 @@ --- -title: "コンピューター使用" +title: "ComputerUse" hideTitleOnPage: true --- -## ComputerUse +## ComputerUse \{#computeruse\} ```python class ComputerUse() @@ -11,19 +11,19 @@ class ComputerUse() デスクトップ環境と対話するためのコンピューター使用機能。 -サンドボックス内でのデスクトップ操作を自動化するために、マウス、キーボード、スクリーンショット、ディスプレイの操作にアクセスできます。 +サンドボックス内でのデスクトップ操作を自動化するために、マウス、キーボード、スクリーンショット、ディスプレイの各操作へアクセスできます。 **属性**: -- `mouse` _Mouse_ - マウス操作インターフェース。 -- `keyboard` _Keyboard_ - キーボード操作インターフェース。 -- `screenshot` _Screenshot_ - スクリーンショット操作インターフェース。 -- `display` _Display_ - ディスプレイ操作インターフェース。 +* `mouse` *Mouse* - マウス操作インターフェース。 +* `keyboard` *Keyboard* - キーボード操作インターフェース。 +* `screenshot` *Screenshot* - スクリーンショット操作インターフェース。 +* `display` *Display* - ディスプレイ操作インターフェース。 -#### ComputerUse.start +#### ComputerUse.start \{#computerusestart\} ```python -@intercept_errors(message_prefix="Failed to start computer use: ") +@intercept_errors(message_prefix="コンピューター使用の開始に失敗しました: ") def start() -> ComputerUseStartResponse ``` @@ -31,20 +31,19 @@ def start() -> ComputerUseStartResponse **戻り値**: -- `ComputerUseStartResponse` - コンピューター使用の起動レスポンス。 - +* `ComputerUseStartResponse` - コンピューター使用の開始応答。 **例**: ```python result = sandbox.computer_use.start() -print("Computer use processes started:", result.message) +print("コンピューター使用プロセスが開始されました:", result.message) ``` -#### ComputerUse.stop +#### ComputerUse.stop(停止) \{#computerusestop\} ```python -@intercept_errors(message_prefix="Failed to stop computer use: ") +@intercept_errors(message_prefix="コンピューター使用の停止に失敗しました: ") def stop() -> ComputerUseStopResponse ``` @@ -52,41 +51,39 @@ def stop() -> ComputerUseStopResponse **戻り値**: -- `ComputerUseStopResponse` - コンピューター使用の停止レスポンス。 - +* `ComputerUseStopResponse` - コンピューター使用停止レスポンス。 **例**: ```python result = sandbox.computer_use.stop() -print("Computer use processes stopped:", result.message) +print("コンピューター使用プロセスが停止しました:", result.message) ``` -#### ComputerUse.get_status +#### ComputerUse.get_status \{#computeruseget_status\} ```python -@intercept_errors(message_prefix="Failed to get computer use status: ") +@intercept_errors(message_prefix="コンピューター使用ステータスの取得に失敗しました: ") def get_status() -> ComputerUseStatusResponse ``` -すべてのコンピューター使用プロセスのステータスを取得します。 +すべてのコンピューター使用プロセスの状態を取得します。 **戻り値**: -- `ComputerUseStatusResponse` - すべてのVNCデスクトッププロセスに関するステータス情報。 - +* `ComputerUseStatusResponse` - すべての VNC デスクトッププロセスに関する状態情報。 **例**: ```python response = sandbox.computer_use.get_status() -print("Computer use status:", response.status) +print("コンピューター使用ステータス:", response.status) ``` -#### ComputerUse.get_process_status +#### ComputerUse.get_process_status \{#computeruseget_process_status\} ```python -@intercept_errors(message_prefix="Failed to get process status: ") +@intercept_errors(message_prefix="プロセスステータスの取得に失敗しました: ") def get_process_status(process_name: str) -> ProcessStatusResponse ``` @@ -94,13 +91,11 @@ def get_process_status(process_name: str) -> ProcessStatusResponse **引数**: -- `process_name` _str_ - 確認するプロセス名。 - +* `process_name` *str* - 確認するプロセス名。 **戻り値**: -- `ProcessStatusResponse` - 指定したプロセスに関するステータス情報。 - +* `ProcessStatusResponse` - 指定したプロセスのステータス情報。 **例**: @@ -109,183 +104,171 @@ xvfb_status = sandbox.computer_use.get_process_status("xvfb") no_vnc_status = sandbox.computer_use.get_process_status("novnc") ``` -#### ComputerUse.restart_process +#### ComputerUse.restart_process \{#computeruserestart_process\} ```python -@intercept_errors(message_prefix="Failed to restart process: ") +@intercept_errors(message_prefix="プロセスの再起動に失敗しました: ") def restart_process(process_name: str) -> ProcessRestartResponse ``` -特定のVNCプロセスを再起動します。 +特定の VNC プロセスを再起動します。 **引数**: -- `process_name` _str_ - 再起動するプロセス名。 - +* `process_name` *str* - 再起動するプロセス名。 **戻り値**: -- `ProcessRestartResponse` - プロセス再起動レスポンス。 - +* `ProcessRestartResponse` - プロセス再起動の応答。 **例**: ```python result = sandbox.computer_use.restart_process("xfce4") -print("XFCE4 process restarted:", result.message) +print("XFCE4プロセスを再起動しました:", result.message) ``` -#### ComputerUse.get_process_logs +#### ComputerUse.get_process_logs \{#computeruseget_process_logs\} ```python -@intercept_errors(message_prefix="Failed to get process logs: ") +@intercept_errors(message_prefix="プロセスログの取得に失敗しました: ") def get_process_logs(process_name: str) -> ProcessLogsResponse ``` -特定のVNCプロセスのログを取得します。 +特定の VNC プロセスのログを取得します。 **引数**: -- `process_name` _str_ - ログを取得するプロセス名。 - +* `process_name` *str* - ログを取得する対象のプロセス名。 **戻り値**: -- `ProcessLogsResponse` - プロセスのログ。 - +* `ProcessLogsResponse` - プロセスのログ。 **例**: ```python logs = sandbox.computer_use.get_process_logs("novnc") -print("NoVNC logs:", logs) +print("NoVNC ログ:", logs) ``` -#### ComputerUse.get_process_errors +#### ComputerUse.get_process_errors \{#computeruseget_process_errors\} ```python -@intercept_errors(message_prefix="Failed to get process errors: ") +@intercept_errors(message_prefix="プロセスエラーの取得に失敗しました: ") def get_process_errors(process_name: str) -> ProcessErrorsResponse ``` -特定のVNCプロセスのエラーログを取得します。 +特定の VNC プロセスのエラーログを取得します。 **引数**: -- `process_name` _str_ - エラーログを取得するプロセス名。 - +* `process_name` *str* - エラーログを取得する対象のプロセス名。 **戻り値**: -- `ProcessErrorsResponse` - プロセスのエラーログ。 - +* `ProcessErrorsResponse` - プロセスのエラーログ。 **例**: ```python errors = sandbox.computer_use.get_process_errors("x11vnc") -print("X11VNC errors:", errors) +print("X11VNCエラー:", errors) ``` - -## マウス +## マウス \{#mouse\} ```python class Mouse() ``` -コンピューター使用機能のマウス操作。 +コンピューター使用機能におけるマウス操作 -#### Mouse.get\_position +#### Mouse.get_position \{#mouseget_position\} ```python @intercept_errors(message_prefix="Failed to get mouse position: ") -def get_position() -> MousePosition +def get_position() -> MousePositionResponse ``` -現在のマウスカーソル位置を取得します。 +現在のマウスカーソルの位置を取得します。 **戻り値**: -- `MousePosition` - 現在のマウス位置(x および y 座標)。 - +* `MousePositionResponse` - x および y 座標を含む現在のマウス位置。 **例**: ```python position = sandbox.computer_use.mouse.get_position() -print(f"Mouse is at: {position.x}, {position.y}") +print(f"マウスの位置: {position.x}, {position.y}") ``` -#### Mouse.move +#### Mouse.move \{#mousemove\} ```python -@intercept_errors(message_prefix="Failed to move mouse: ") -def move(x: int, y: int) -> MouseMoveResponse +@intercept_errors(message_prefix="マウスの移動に失敗しました: ") +def move(x: int, y: int) -> MousePositionResponse ``` -マウスカーソルを指定した座標に移動します。 +指定した座標にマウスカーソルを移動します。 **引数**: -- `x` _int_ - 移動先の x 座標。 -- `y` _int_ - 移動先の y 座標。 - +* `x` *int* - 移動先のx座標。 +* `y` *int* - 移動先のy座標。 **戻り値**: -- `MouseMoveResponse` - 移動操作の結果。 - +* `MousePositionResponse` - 移動後の位置。 **例**: ```python result = sandbox.computer_use.mouse.move(100, 200) -print(f"Mouse moved to: {result.x}, {result.y}") +print(f"マウスを移動しました: {result.x}, {result.y}") ``` -#### Mouse.click +#### Mouse.click \{#mouseclick\} ```python -@intercept_errors(message_prefix="Failed to click mouse: ") +@intercept_errors(message_prefix="マウスクリックに失敗しました: ") def click(x: int, y: int, button: str = "left", double: bool = False) -> MouseClickResponse ``` -指定した座標でクリックします。 +指定した座標でマウスをクリックします。 **引数**: -- `x` _int_ - クリックする x 座標。 -- `y` _int_ - クリックする y 座標。 -- `button` _str_ - クリックするボタン('left'、'right'、'middle')。 -- `double` _bool_ - ダブルクリックを行うかどうか。 - +* `x` *int* - クリック先の x 座標。 +* `y` *int* - クリック先の y 座標。 +* `button` *str* - クリックするマウスボタン('left'、'right'、'middle')。 +* `double` *bool* - ダブルクリックを行うかどうか。 **戻り値**: -- `MouseClickResponse` - クリック操作の結果。 - +* `MouseClickResponse` - クリック操作の結果。 **例**: ```python -# Single left click +# 左シングルクリック result = sandbox.computer_use.mouse.click(100, 200) -# Double click +# ダブルクリック double_click = sandbox.computer_use.mouse.click(100, 200, "left", True) -# Right click +# 右クリック right_click = sandbox.computer_use.mouse.click(100, 200, "right") ``` -#### Mouse.drag +#### Mouse.drag \{#mousedrag\} ```python -@intercept_errors(message_prefix="Failed to drag mouse: ") +@intercept_errors(message_prefix="マウスのドラッグに失敗しました: ") def drag(start_x: int, start_y: int, end_x: int, @@ -293,33 +276,31 @@ def drag(start_x: int, button: str = "left") -> MouseDragResponse ``` -開始座標から終了座標までドラッグします。 +開始座標から終了座標までマウスをドラッグします。 **引数**: -- `start_x` _int_ - 開始 x 座標。 -- `start_y` _int_ - 開始 y 座標。 -- `end_x` _int_ - 終了 x 座標。 -- `end_y` _int_ - 終了 y 座標。 -- `button` _str_ - ドラッグに使用するボタン。 - +* `start_x` *int* - 開始x座標。 +* `start_y` *int* - 開始y座標。 +* `end_x` *int* - 終了x座標。 +* `end_y` *int* - 終了y座標。 +* `button` *str* - ドラッグに使用するマウスボタン。 **戻り値**: -- `MouseDragResponse` - ドラッグ操作の結果。 - +* `MouseDragResponse` - ドラッグ操作の結果。 **例**: ```python result = sandbox.computer_use.mouse.drag(50, 50, 150, 150) -print(f"Dragged from {result.from_x},{result.from_y} to {result.to_x},{result.to_y}") +print(f"ドラッグしました: ({result.from_x},{result.from_y}) から ({result.to_x},{result.to_y}) へ") ``` -#### Mouse.scroll +#### Mouse.scroll \{#mousescroll\} ```python -@intercept_errors(message_prefix="Failed to scroll mouse: ") +@intercept_errors(message_prefix="マウススクロールに失敗しました: ") def scroll(x: int, y: int, direction: str, amount: int = 1) -> bool ``` @@ -327,119 +308,113 @@ def scroll(x: int, y: int, direction: str, amount: int = 1) -> bool **引数**: -- `x` _int_ - スクロールする x 座標。 -- `y` _int_ - スクロールする y 座標。 -- `direction` _str_ - スクロール方向('up' または 'down')。 -- `amount` _int_ - スクロール量。 - +* `x` *int* - スクロールするX座標。 +* `y` *int* - スクロールするY座標。 +* `direction` *str* - スクロール方向('up' または 'down')。 +* `amount` *int* - スクロール量。 **戻り値**: -- `bool` - スクロール操作が成功したかどうか。 - +* `bool` - スクロール操作が成功したかどうか。 **例**: ```python -# Scroll up +# 上にスクロール scroll_up = sandbox.computer_use.mouse.scroll(100, 200, "up", 3) -# Scroll down +# 下にスクロール scroll_down = sandbox.computer_use.mouse.scroll(100, 200, "down", 5) ``` -## キーボード +## キーボード \{#keyboard\} ```python class Keyboard() ``` -コンピューター使用機能向けのキーボード操作。 +コンピューター使用機能のキーボード操作 -#### Keyboard.type +#### Keyboard.type \{#keyboardtype\} ```python -@intercept_errors(message_prefix="Failed to type text: ") +@intercept_errors(message_prefix="テキストの入力に失敗しました: ") def type(text: str, delay: Optional[int] = None) -> None ``` -指定したテキストを入力します。 +指定したテキストをタイプ入力します。 **引数**: -- `text` _str_ - 入力するテキスト。 -- `delay` _int_ - 文字間の遅延(ミリ秒)。 - +* `text` *str* - タイプするテキスト。 +* `delay` *int* - 文字ごとの遅延(ミリ秒)。 -**送出**: +**例外**: -- `DaytonaError` - 入力処理に失敗した場合。 - +* `DaytonaError` - タイプ操作に失敗した場合。 **例**: ```python try: sandbox.computer_use.keyboard.type("Hello, World!") - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") -# 文字間に遅延を設ける場合 +# 文字間の遅延を設定 try: sandbox.computer_use.keyboard.type("Slow typing", 100) - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") ``` -#### Keyboard.press +#### Keyboard.press \{#keyboardpress\} ```python -@intercept_errors(message_prefix="Failed to press key: ") +@intercept_errors(message_prefix="キーの押下に失敗しました: ") def press(key: str, modifiers: Optional[List[str]] = None) -> None ``` -必要に応じてモディファイアを併用してキーを押します。 +オプションの修飾キーとともにキーを押します。 **引数**: -- `key` _str_ - 押すキー(例: 'Enter', 'Escape', 'Tab', 'a', 'A')。 -- `modifiers` _List[str]_ - モディファイアキー('ctrl', 'alt', 'meta', 'shift')。 - +* `key` *str* - 押すキー(例: 'Enter', 'Escape', 'Tab', 'a', 'A')。 +* `modifiers` *List[str]* - 修飾キー('ctrl', 'alt', 'meta', 'shift')。 **送出**: -- `DaytonaError` - キー押下処理に失敗した場合。 - +* `DaytonaError` - 押下操作に失敗した場合。 **例**: ```python -# Enter を押す +# Enterキーを押す try: sandbox.computer_use.keyboard.press("Return") - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") -# Ctrl+C を押す +# Ctrl+Cを押す try: sandbox.computer_use.keyboard.press("c", ["ctrl"]) - print(f"Operation success") + print(f"操作成功") -# Ctrl+Shift+T を押す +# Ctrl+Shift+Tを押す try: sandbox.computer_use.keyboard.press("t", ["ctrl", "shift"]) - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") ``` -#### Keyboard.hotkey +#### Keyboard.hotkey \{#keyboardhotkey\} ```python -@intercept_errors(message_prefix="Failed to press hotkey: ") +@intercept_errors(message_prefix="ホットキーの押下に失敗しました: ") def hotkey(keys: str) -> None ``` @@ -447,13 +422,11 @@ def hotkey(keys: str) -> None **引数**: -- `keys` _str_ - ホットキーの組み合わせ(例: 'ctrl+c', 'alt+tab', 'cmd+shift+t')。 - +* `keys` *str* - ホットキーの組み合わせ(例: 'ctrl+c', 'alt+tab', 'cmd+shift+t')。 -**送出**: +**例外**: -- `DaytonaError` - ホットキー処理に失敗した場合。 - +* `DaytonaError` - ホットキーの実行に失敗した場合。 **例**: @@ -461,116 +434,109 @@ def hotkey(keys: str) -> None # コピー try: sandbox.computer_use.keyboard.hotkey("ctrl+c") - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") -# ペースト +# 貼り付け try: sandbox.computer_use.keyboard.hotkey("ctrl+v") - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") # Alt+Tab try: sandbox.computer_use.keyboard.hotkey("alt+tab") - print(f"Operation success") + print(f"操作成功") except Exception as e: - print(f"Operation failed: {e}") + print(f"操作失敗: {e}") ``` -## スクリーンショット +## スクリーンショット \{#screenshot\} ```python class Screenshot() ``` -コンピューター使用機能のスクリーンショット操作。 +コンピューター使用機能向けのスクリーンショット操作 -#### Screenshot.take\_full\_screen +#### Screenshot.take_full_screen \{#screenshottake_full_screen\} ```python -@intercept_errors(message_prefix="Failed to take screenshot: ") +@intercept_errors(message_prefix="スクリーンショットの取得に失敗しました: ") def take_full_screen(show_cursor: bool = False) -> ScreenshotResponse ``` -画面全体のスクリーンショットを撮影します。 +画面全体のスクリーンショットを取得します。 **引数**: -- `show_cursor` _bool_ - スクリーンショットにカーソルを表示するかどうか。 - +* `show_cursor` *bool* - スクリーンショットにカーソルを表示するかどうか。 **戻り値**: -- `ScreenshotResponse` - 画像をbase64エンコードしたスクリーンショットデータ。 - +* `ScreenshotResponse` - 画像を base64 エンコードしたスクリーンショットデータ。 **例**: ```python screenshot = sandbox.computer_use.screenshot.take_full_screen() -print(f"Screenshot size: {screenshot.width}x{screenshot.height}") +print(f"スクリーンショットサイズ: {screenshot.width}x{screenshot.height}") -# カーソルを表示 +# カーソルを表示する場合 with_cursor = sandbox.computer_use.screenshot.take_full_screen(True) ``` -#### Screenshot.take\_region +#### Screenshot.take_region \{#screenshottake_region\} ```python @intercept_errors(message_prefix="Failed to take region screenshot: ") def take_region(region: ScreenshotRegion, - show_cursor: bool = False) -> RegionScreenshotResponse + show_cursor: bool = False) -> ScreenshotResponse ``` -指定した領域のスクリーンショットを撮影します。 +特定の領域のスクリーンショットを撮影します。 **引数**: -- `region` _ScreenshotRegion_ - 取得する領域。 -- `show_cursor` _bool_ - スクリーンショットにカーソルを表示するかどうか。 - +* `region` *ScreenshotRegion* - キャプチャする領域。 +* `show_cursor` *bool* - スクリーンショットにカーソルを表示するかどうか。 **戻り値**: -- `RegionScreenshotResponse` - 画像をbase64エンコードしたスクリーンショットデータ。 - +* `ScreenshotResponse` - 画像を base64 でエンコードしたスクリーンショットデータ。 **例**: ```python region = ScreenshotRegion(x=100, y=100, width=300, height=200) screenshot = sandbox.computer_use.screenshot.take_region(region) -print(f"Captured region: {screenshot.region.width}x{screenshot.region.height}") +print(f"キャプチャした領域: {screenshot.region.width}x{screenshot.region.height}") ``` -#### Screenshot.take\_compressed +#### Screenshot.take_compressed \{#screenshottake_compressed\} ```python -@intercept_errors(message_prefix="Failed to take compressed screenshot: ") +@intercept_errors(message_prefix="圧縮スクリーンショットの取得に失敗しました: ") def take_compressed( - options: Optional[ScreenshotOptions] = None -) -> CompressedScreenshotResponse + options: Optional[ScreenshotOptions] = None) -> ScreenshotResponse ``` -画面全体の圧縮スクリーンショットを撮影します。 +画面全体の圧縮スクリーンショットを取得します。 **引数**: -- `options` _ScreenshotOptions_ - 圧縮および表示のオプション。 - +* `options` *ScreenshotOptions* - 圧縮および表示のオプション。 **戻り値**: -- `CompressedScreenshotResponse` - 圧縮されたスクリーンショットデータ。 - +* `ScreenshotResponse` - 圧縮済みスクリーンショットデータ。 **例**: ```python -# 既定の圧縮 +# デフォルトの圧縮 screenshot = sandbox.computer_use.screenshot.take_compressed() # 高品質JPEG @@ -578,35 +544,32 @@ jpeg = sandbox.computer_use.screenshot.take_compressed( ScreenshotOptions(format="jpeg", quality=95, show_cursor=True) ) -# 縮小PNG +# 縮小されたPNG scaled = sandbox.computer_use.screenshot.take_compressed( ScreenshotOptions(format="png", scale=0.5) ) ``` -#### Screenshot.take\_compressed\_region +#### Screenshot.take_compressed_region \{#screenshottake_compressed_region\} ```python @intercept_errors( - message_prefix="Failed to take compressed region screenshot: ") + message_prefix="圧縮領域のスクリーンショット取得に失敗しました: ") def take_compressed_region( - region: ScreenshotRegion, - options: Optional[ScreenshotOptions] = None -) -> CompressedScreenshotResponse + region: ScreenshotRegion, + options: Optional[ScreenshotOptions] = None) -> ScreenshotResponse ``` -指定した領域の圧縮スクリーンショットを撮影します。 +特定の領域の圧縮済みスクリーンショットを取得します。 **引数**: -- `region` _ScreenshotRegion_ - 取得する領域。 -- `options` _ScreenshotOptions_ - 圧縮および表示のオプション。 - +* `region` *ScreenshotRegion* - キャプチャする領域。 +* `options` *ScreenshotOptions* - 圧縮および表示オプション。 -**戻り値**: +**返り値**: -- `CompressedScreenshotResponse` - 圧縮されたスクリーンショットデータ。 - +* `ScreenshotResponse` - 圧縮済みスクリーンショットデータ。 **例**: @@ -616,45 +579,44 @@ screenshot = sandbox.computer_use.screenshot.take_compressed_region( region, ScreenshotOptions(format="webp", quality=80, show_cursor=True) ) -print(f"Compressed size: {screenshot.size_bytes} bytes") +print(f"圧縮後のサイズ: {screenshot.size_bytes} バイト") ``` -## ディスプレイ +## 表示 \{#display\} ```python class Display() ``` -コンピューター使用機能のディスプレイ操作を提供します。 +コンピューター使用機能のディスプレイ操作 -#### Display.get_info +#### Display.get_info \{#displayget_info\} ```python -@intercept_errors(message_prefix="Failed to get display info: ") +@intercept_errors(message_prefix="ディスプレイ情報の取得に失敗しました: ") def get_info() -> DisplayInfoResponse ``` -ディスプレイ情報を取得します。 +ディスプレイに関する情報を取得します。 **戻り値**: -- `DisplayInfoResponse` - プライマリーディスプレイおよび利用可能なすべてのディスプレイを含む情報。 - +* `DisplayInfoResponse` - プライマリディスプレイおよび利用可能なすべてのディスプレイを含むディスプレイ情報。 **例**: ```python info = sandbox.computer_use.display.get_info() -print(f"Primary display: {info.primary_display.width}x{info.primary_display.height}") -print(f"Total displays: {info.total_displays}") +print(f"プライマリディスプレイ: {info.primary_display.width}x{info.primary_display.height}") +print(f"総ディスプレイ数: {info.total_displays}") for i, display in enumerate(info.displays): - print(f"Display {i}: {display.width}x{display.height} at {display.x},{display.y}") + print(f"ディスプレイ {i}: {display.width}x{display.height} at {display.x},{display.y}") ``` -#### Display.get_windows +#### Display.get_windows \{#displayget_windows\} ```python -@intercept_errors(message_prefix="Failed to get windows: ") +@intercept_errors(message_prefix="ウィンドウの取得に失敗しました: ") def get_windows() -> WindowsResponse ``` @@ -662,34 +624,33 @@ def get_windows() -> WindowsResponse **戻り値**: -- `WindowsResponse` - ID とタイトルを含む開いているウィンドウの一覧。 - +* `WindowsResponse` - 各ウィンドウのIDとタイトルを含む、開いているウィンドウの一覧。 **例**: ```python windows = sandbox.computer_use.display.get_windows() -print(f"Found {windows.count} open windows:") +print(f"{windows.count}個の開いているウィンドウが見つかりました:") for window in windows.windows: print(f"- {window.title} (ID: {window.id})") ``` -## ScreenshotRegion +## ScreenshotRegion \{#screenshotregion\} ```python class ScreenshotRegion() ``` -スクリーンショット操作用の領域座標。 +スクリーンショット操作のための領域座標。 **属性**: -- `x` _int_ - 領域のX座標。 -- `y` _int_ - 領域のY座標。 -- `width` _int_ - 領域の幅。 -- `height` _int_ - 領域の高さ。 +* `x` *int* - 領域のX座標。 +* `y` *int* - 領域のY座標。 +* `width` *int* - 領域の幅。 +* `height` *int* - 領域の高さ。 -## ScreenshotOptions +## ScreenshotOptions \{#screenshotoptions\} ```python class ScreenshotOptions() @@ -699,8 +660,7 @@ class ScreenshotOptions() **属性**: -- `show_cursor` _bool_ - スクリーンショットにカーソルを表示するかどうか。 -- `fmt` _str_ - 画像形式(例:'png'、'jpeg'、'webp')。 -- `quality` _int_ - 圧縮品質(0〜100)。 -- `scale` _float_ - スクリーンショットのスケール係数。 - +* `show_cursor` *bool* - スクリーンショットにカーソルを表示するかどうか。 +* `fmt` *str* - 画像形式(例: 'png'、'jpeg'、'webp')。 +* `quality` *int* - 圧縮品質(0~100)。 +* `scale` *float* - スクリーンショットの拡大縮小率。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/sync/daytona.mdx b/apps/docs/src/content/docs/ja/python-sdk/sync/daytona.mdx index a448b1f96..ecb6eeaf5 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/sync/daytona.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/sync/daytona.mdx @@ -3,32 +3,33 @@ title: "Daytona" hideTitleOnPage: true --- -## Daytona +## Daytona \{#daytona\} ```python class Daytona() ``` -Daytona API と対話するためのメインクラス。 +Daytona API とやり取りするためのメインクラス。 -このクラスは、Daytona サンドボックスの作成・管理・操作のためのメソッドを提供します。 -明示的な設定または環境変数を用いて初期化できます。 +このクラスは Daytona のサンドボックスを作成・管理・操作するためのメソッドを提供します。 +明示的な設定を渡すか、環境変数を使用して初期化できます。 **属性**: -- `volume` _VolumeService_ - ボリュームを管理するサービス。 -- `snapshot` _SnapshotService_ - スナップショットを管理するサービス。 - +* `volume` *VolumeService* - ボリュームを管理するサービス。 +* `snapshot` *SnapshotService* - スナップショットを管理するサービス。 **例**: - 環境変数を使用する場合: +環境変数を使用する場合: + ```python daytona = Daytona() # Uses DAYTONA_API_KEY, DAYTONA_API_URL sandbox = daytona.create() ``` - - 明示的な設定を使用する場合: + +明示的な設定を使用する場合: + ```python config = DaytonaConfig( api_key="your-api-key", @@ -39,37 +40,36 @@ daytona = Daytona(config) sandbox = daytona.create() ``` -#### Daytona.\_\_init\_\_ +#### Daytona.**init** \{#daytona__init__\} ```python def __init__(config: Optional[DaytonaConfig] = None) ``` -任意の設定で Daytona インスタンスを初期化します。 +オプションの設定で Daytona インスタンスを初期化します。 + +設定が指定されていない場合は、環境変数から読み取ります: -設定が提供されない場合、環境変数から読み込みます: -- `DAYTONA_API_KEY`: 認証に必要な API キー -- `DAYTONA_API_URL`: 必須の API URL -- `DAYTONA_TARGET`: 任意のターゲット環境(既定は 'us') +* `DAYTONA_API_KEY`: 認証に必須の API キー +* `DAYTONA_API_URL`: 必須の API URL +* `DAYTONA_TARGET`: 任意のターゲット環境(未指定の場合は、組織のデフォルトリージョンが使用されます) **引数**: -- `config` _Optional[DaytonaConfig]_ - api_key、api_url、target を含むオブジェクト。 - +* `config` *Optional[DaytonaConfig]* - `api_key`、`api_url`、`target` を含むオブジェクト。 -**送出**: +**例外**: -- `DaytonaError` - 設定または環境変数のいずれからも API キーが提供されていない場合 - +* `DaytonaError` - 設定または環境変数のいずれからも API キーが提供されていない場合 **例**: ```python from daytona import Daytona, DaytonaConfig -# Using environment variables +# 環境変数を使用する場合 daytona1 = Daytona() -# Using explicit configuration +# 明示的に設定を指定する場合 config = DaytonaConfig( api_key="your-api-key", api_url="https://your-api.com", @@ -79,7 +79,7 @@ daytona2 = Daytona(config) ``` -#### Daytona.create +#### Daytona.create \{#daytonacreate\} ```python @overload @@ -88,35 +88,34 @@ def create(params: Optional[CreateSandboxFromSnapshotParams] = None, timeout: Optional[float] = 60) -> Sandbox ``` -指定された、または既定のスナップショットからサンドボックスを作成します。言語、イメージ、環境変数、ボリュームなど、さまざまなパラメータを指定できます。 +指定した、またはデフォルトのスナップショットからサンドボックスを作成します。言語、イメージ、環境変数、ボリュームなど、各種パラメータを指定できます。 **引数**: -- `params` _Optional[CreateSandboxFromSnapshotParams]_ - サンドボックス作成のためのパラメータ。未指定の場合は、 - 既定の Daytona スナップショットと Python 言語が使用されます。 -- `timeout` _Optional[float]_ - サンドボックス作成のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - 既定は 60 秒。 - +* `params` *Optional[CreateSandboxFromSnapshotParams]* - サンドボックス作成用のパラメータ。未指定の場合は、 + デフォルトのDaytonaスナップショットとPython言語が使用されます。 +* `timeout` *Optional[float]* - サンドボックス作成のタイムアウト(秒)。0はタイムアウトなしを意味します。 + デフォルトは60秒です。 -**返り値**: +**戻り値**: -- `Sandbox` - 作成されたサンドボックスインスタンス。 - +* `Sandbox` - 作成されたサンドボックスのインスタンス。 -**送出**: +**例外**: -- `DaytonaError` - timeout、auto_stop_interval、または auto_archive_interval が負の場合、 - あるいはサンドボックスの起動に失敗した、またはタイムアウトした場合 - +* `DaytonaError` - `timeout`、`auto_stop_interval`、または `auto_archive_interval` が負の値の場合、 + あるいはサンドボックスの起動に失敗した、またはタイムアウトした場合。 **例**: - 既定の Python サンドボックスを作成: +デフォルトのPythonサンドボックスを作成: + ```python sandbox = daytona.create() ``` - - カスタムサンドボックスを作成: + +カスタムサンドボックスを作成: + ```python params = CreateSandboxFromSnapshotParams( language="python", @@ -129,7 +128,7 @@ params = CreateSandboxFromSnapshotParams( sandbox = daytona.create(params, timeout=40) ``` -#### Daytona.create +#### Daytona.create \{#daytonacreate\} ```python @overload @@ -140,35 +139,34 @@ def create(params: Optional[CreateSandboxFromImageParams] = None, ``` レジストリで利用可能な指定イメージ、または宣言的な Daytona イメージからサンドボックスを作成します。 -リソース、言語、イメージ、環境変数、ボリュームなど、さまざまなパラメータを指定できます。Daytona は提供されたイメージからスナップショットを作成し、それを用いてサンドボックスを作成します。 +リソース、言語、イメージ、環境変数、ボリュームなど、さまざまなパラメータを指定できます。Daytona は指定されたイメージからスナップショットを作成し、それを用いてサンドボックスを起動します。 **引数**: -- `params` _Optional[CreateSandboxFromImageParams]_ - イメージからサンドボックスを作成するためのパラメータ。 -- `timeout` _Optional[float]_ - サンドボックス作成のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - 既定は 60 秒。 -- `on_snapshot_create_logs` _Callable[[str], None]_ - スナップショット作成ログを処理するコールバック関数。 - +* `params` *Optional[CreateSandboxFromImageParams]* - イメージからサンドボックスを作成するためのパラメータ。 +* `timeout` *Optional[float]* - サンドボックス作成のタイムアウト(秒)。0 はタイムアウトなしを意味します。 + 既定は 60 秒です。 +* `on_snapshot_create_logs` *Callable[[str], None]* - スナップショット作成時のログを処理するコールバック関数。 -**返り値**: +**戻り値**: -- `Sandbox` - 作成されたサンドボックスインスタンス。 - +* `Sandbox` - 作成されたサンドボックスのインスタンス。 -**送出**: +**例外**: -- `DaytonaError` - timeout、auto_stop_interval、または auto_archive_interval が負の場合、 - あるいはサンドボックスの起動に失敗した、またはタイムアウトした場合 - +* `DaytonaError` - timeout、auto_stop_interval、または auto_archive_interval が負の場合、または + サンドボックスの起動に失敗した場合・タイムアウトした場合に発生 **例**: - イメージから既定の Python サンドボックスを作成: +デフォルトの Python サンドボックスをイメージから作成: + ```python sandbox = daytona.create(CreateSandboxFromImageParams(image="debian:12.9")) ``` - - 宣言的なイメージ定義からカスタムサンドボックスを作成: + +宣言的なイメージ定義からカスタムのサンドボックスを作成: + ```python declarative_image = ( Image.base("alpine:3.18") @@ -191,7 +189,7 @@ sandbox = daytona.create( ) ``` -#### Daytona.delete +#### Daytona.delete \{#daytonadelete\} ```python def delete(sandbox: Sandbox, timeout: Optional[float] = 60) -> None @@ -201,135 +199,128 @@ def delete(sandbox: Sandbox, timeout: Optional[float] = 60) -> None **引数**: -- `sandbox` _Sandbox_ - 削除するサンドボックスインスタンス。 -- `timeout` _Optional[float]_ - サンドボックス削除のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - 既定は 60 秒です。 - +* `sandbox` *Sandbox* - 削除対象のサンドボックスインスタンス。 +* `timeout` *Optional[float]* - サンドボックス削除のタイムアウト(秒)。0 はタイムアウトなしを意味します。 + デフォルトは 60 秒です。 **送出**: -- `DaytonaError` - サンドボックスの削除に失敗した場合、またはタイムアウトした場合 - +* `DaytonaError` - サンドボックスの削除に失敗した場合、またはタイムアウトした場合 **例**: ```python sandbox = daytona.create() -# ... サンドボックスを利用 ... -daytona.delete(sandbox) # 終了時にクリーンアップ +# ... サンドボックスを使用 ... +daytona.delete(sandbox) # 完了時にクリーンアップ ``` -#### Daytona.get +#### Daytona.get \{#daytonaget\} ```python -@intercept_errors(message_prefix="Failed to get sandbox: ") -def get(sandbox_id: str) -> Sandbox +@intercept_errors(message_prefix="サンドボックスの取得に失敗しました: ") +def get(sandbox_id_or_name: str) -> Sandbox ``` -ID でサンドボックスを取得します。 +ID または名前でサンドボックスを取得します。 **引数**: -- `sandbox_id` _str_ - 取得するサンドボックスの ID。 - +* `sandbox_id_or_name` *str* - 取得するサンドボックスのIDまたは名前。 **戻り値**: -- `Sandbox` - サンドボックスインスタンス。 - +* `Sandbox` - サンドボックスのインスタンス。 -**送出**: +**例外**: -- `DaytonaError` - `sandbox_id` が指定されていない場合。 - +* `DaytonaError` - `sandbox_id_or_name` が指定されていない場合。 **例**: ```python -sandbox = daytona.get("my-sandbox-id") -print(sandbox.status) +sandbox = daytona.get("my-sandbox-id-or-name") +print(sandbox.state) ``` -#### Daytona.find\_one +#### Daytona.find_one \{#daytonafind_one\} ```python -@intercept_errors(message_prefix="Failed to find sandbox: ") -def find_one(sandbox_id: Optional[str] = None, +@intercept_errors(message_prefix="サンドボックスの検索に失敗しました: ") +def find_one(sandbox_id_or_name: Optional[str] = None, labels: Optional[Dict[str, str]] = None) -> Sandbox ``` -ID またはラベルでサンドボックスを検索します。 +ID、名前、またはラベルでサンドボックスを検索します。 **引数**: -- `sandbox_id` _Optional[str]_ - 取得するサンドボックスの ID。 -- `labels` _Optional[Dict[str, str]]_ - サンドボックスをフィルタリングするためのラベル。 - +* `sandbox_id_or_name` *Optional[str]* - 取得するサンドボックスのIDまたは名前。 +* `labels` *Optional[Dict[str, str]]* - サンドボックスを絞り込むためのラベル。 **戻り値**: -- `Sandbox` - ID またはラベルに一致する最初のサンドボックス。 - +* `Sandbox` - ID、名前、またはラベルに一致する最初のサンドボックス。 -**送出**: +**例外**: -- `DaytonaError` - サンドボックスが見つからない場合。 - +* `DaytonaError` - サンドボックスが見つからなかった場合。 **例**: ```python sandbox = daytona.find_one(labels={"my-label": "my-value"}) -print(f"Sandbox ID: {sandbox.id} State: {sandbox.state}") +print(f"サンドボックス ID: {sandbox.id} 状態: {sandbox.state}") ``` -#### Daytona.list +#### Daytona.list \{#daytonalist\} ```python -@intercept_errors(message_prefix="Failed to list sandboxes: ") -def list(labels: Optional[Dict[str, str]] = None) -> List[Sandbox] +@intercept_errors(message_prefix="サンドボックスの一覧取得に失敗しました: ") +def list(labels: Optional[Dict[str, str]] = None, + page: Optional[int] = None, + limit: Optional[int] = None) -> PaginatedSandboxes ``` -ラベルでフィルタリングされたサンドボックスを一覧表示します。 +ラベルでフィルタリングされたサンドボックスのページ化リストを返します。 **引数**: -- `labels` _Optional[Dict[str, str]]_ - サンドボックスをフィルタリングするためのラベル。 - +* `labels` *Optional[Dict[str, str]]* - サンドボックスをフィルタリングするためのラベル。 +* `page` *Optional[int]* - ページ番号(1から開始)。 +* `limit` *Optional[int]* - 1ページあたりの最大件数。 **戻り値**: -- `List[Sandbox]` - ラベルに一致するサンドボックスインスタンスのリスト。 - +* `PaginatedSandboxes` - 指定したラベルに一致するサンドボックスのインスタンスのページ化リスト。 **例**: ```python -sandboxes = daytona.list(labels={"my-label": "my-value"}) -for sandbox in sandboxes: - print(f"{sandbox.id}: {sandbox.status}") +result = daytona.list(labels={"my-label": "my-value"}, page=2, limit=10) +for sandbox in result.items: + print(f"{sandbox.id}: {sandbox.state}") ``` -#### Daytona.start +#### Daytona.start \{#daytonastart\} ```python def start(sandbox: Sandbox, timeout: Optional[float] = 60) -> None ``` -サンドボックスを起動し、準備完了まで待機します。 +サンドボックスを起動し、準備が整うまで待機します。 **引数**: -- `sandbox` _Sandbox_ - 起動するサンドボックス。 -- `timeout` _Optional[float]_ - サンドボックスの起動完了を待つ任意のタイムアウト(秒)。 - 0 はタイムアウトなしを意味します。既定は 60 秒です。 - +* `sandbox` *Sandbox* - 起動するサンドボックス。 +* `timeout` *Optional[float]* - サンドボックスの起動を待機する秒単位の任意のタイムアウト。 + 0 はタイムアウトなしを意味します。デフォルトは 60 秒です。 -**送出**: +**例外**: -- `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの起動に失敗/タイムアウトした場合 +* `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの起動に失敗した/タイムアウトした場合 -#### Daytona.stop +#### Daytona.stop \{#daytonastop\} ```python def stop(sandbox: Sandbox, timeout: Optional[float] = 60) -> None @@ -339,17 +330,15 @@ def stop(sandbox: Sandbox, timeout: Optional[float] = 60) -> None **引数**: -- `sandbox` _Sandbox_ - 停止するサンドボックス。 -- `timeout` _Optional[float]_ - サンドボックス停止の任意のタイムアウト(秒)。 - 0 はタイムアウトなしを意味します。既定は 60 秒です。 - - -**送出**: +* `sandbox` *Sandbox* - 停止するサンドボックス +* `timeout` *Optional[float]* - サンドボックス停止のタイムアウト(秒)。\ + 0 はタイムアウトなしを意味します。デフォルトは 60 秒。 -- `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの停止に失敗/タイムアウトした場合 +**例外**: +* `DaytonaError` - タイムアウトが負の場合、サンドボックスの停止に失敗した場合、またはタイムアウトした場合 -## CodeLanguage +## CodeLanguage \{#codelanguage\} ```python @dataclass @@ -358,80 +347,87 @@ class CodeLanguage(Enum) Daytona がサポートするプログラミング言語 -**列挙型メンバー**: - - `PYTHON` ("python") - - `TYPESCRIPT` ("typescript") - - `JAVASCRIPT` ("javascript") +**列挙体メンバー**: -## DaytonaConfig +* `PYTHON` ("python") +* `TYPESCRIPT` ("typescript") +* `JAVASCRIPT` ("javascript") + +## DaytonaConfig \{#daytonaconfig\} ```python class DaytonaConfig(BaseModel) ``` -Daytona クライアントを初期化するための設定オプション。 +Daytona クライアントを初期化するための構成オプション。 **属性**: -- `api_key` _Optional[str]_ - Daytona API で認証するための APIキー。未設定の場合は、環境変数 `DAYTONA_API_KEY` で指定するか、代わりに JWT トークンを指定する必要があります。 -- `jwt_token` _Optional[str]_ - Daytona API で認証するための JWT トークン。未設定の場合は、環境変数 `DAYTONA_JWT_TOKEN` で指定するか、代わりに APIキーを指定する必要があります。 -- `organization_id` _Optional[str]_ - JWT ベース認証で使用される 組織 ID。JWT トークンが指定された場合に必須で、ここで指定するか、環境変数 `DAYTONA_ORGANIZATION_ID` に設定する必要があります。 -- `api_url` _Optional[str]_ - Daytona API の URL。未設定の場合は `'https://app.daytona.io/api'` がデフォルトとなり、ここまたは環境変数 `DAYTONA_API_URL` で設定できます。 -- `server_url` _Optional[str]_ - 非推奨です。代わりに `api_url` を使用してください。このプロパティは将来のバージョンで削除されます。 -- `target` _Optional[str]_ - サンドボックスのターゲット(リージョン)/ランナーの場所。未設定の場合のデフォルトは `'us'` で、ここまたは環境変数 `DAYTONA_TARGET` で設定できます。 - +* `api_key` *Optional[str]* - Daytona API での認証に使用する API キー。未設定の場合は、環境変数 `DAYTONA_API_KEY` で指定するか、代わりに JWT トークンを指定する必要があります。 +* `jwt_token` *Optional[str]* - Daytona API での認証に使用する JWT トークン。未設定の場合は、環境変数 `DAYTONA_JWT_TOKEN` で指定するか、代わりに API キーを指定する必要があります。 +* `organization_id` *Optional[str]* - JWT ベース認証で使用する組織 ID。JWT トークンが指定されている場合は必須で、ここで指定するか、環境変数 `DAYTONA_ORGANIZATION_ID` に設定する必要があります。 +* `api_url` *Optional[str]* - Daytona API の URL。ここ、または環境変数 `DAYTONA_API_URL` で未設定の場合のデフォルトは `'https://app.daytona.io/api'` です。 +* `server_url` *Optional[str]* - 廃止予定。代わりに `api_url` を使用してください。このプロパティは将来のバージョンで削除されます。 +* `target` *Optional[str]* - サンドボックスのターゲットとなるランナーのロケーション。ここ、または環境変数 `DAYTONA_TARGET` で未設定の場合は、組織のデフォルトリージョンが使用されます。 **例**: ```python config = DaytonaConfig(api_key="your-api-key") ``` + ```python config = DaytonaConfig(jwt_token="your-jwt-token", organization_id="your-organization-id") ``` -## CreateSandboxBaseParams +## CreateSandboxBaseParams(サンドボックス作成の基本パラメータ) \{#createsandboxbaseparams\} ```python class CreateSandboxBaseParams(BaseModel) ``` -新しいサンドボックスを作成するための基本パラメーター。 +新しいサンドボックス作成の基本パラメータ。 **属性**: -- `language` _Optional[CodeLanguage]_ - サンドボックスのプログラミング言語。デフォルトは「python」。 -- `os_user` _Optional[str]_ - サンドボックスのOSユーザー。 -- `env_vars` _Optional[Dict[str, str]]_ - サンドボックスに設定する環境変数。 -- `labels` _Optional[Dict[str, str]]_ - サンドボックスのカスタムラベル。 -- `public` _Optional[bool]_ - サンドボックスを公開にするかどうか。 -- `timeout` _Optional[float]_ - サンドボックスの作成および起動のタイムアウト(秒)。 -- `auto_stop_interval` _Optional[int]_ - 指定した時間内にサンドボックスイベントが発生しなかった場合に自動停止するまでの間隔(分)。デフォルトは15分。 - 0は自動停止なしを意味します。 -- `auto_archive_interval` _Optional[int]_ - 連続して停止しているサンドボックスが自動的にアーカイブされるまでの間隔(分)。デフォルトは7日。 - 0は最大の間隔が使用されることを意味します。 -- `auto_delete_interval` _Optional[int]_ - 連続して停止しているサンドボックスが自動的に削除されるまでの間隔(分)。デフォルトでは自動削除は無効です。 - 負の値は無効、0は停止直後に即時削除を意味します。 -- `volumes` _Optional[List[VolumeMount]]_ - サンドボックスにアタッチするボリュームのマウント一覧。 -- `network_block_all` _Optional[bool]_ - サンドボックスのすべてのネットワークアクセスをブロックするかどうか。 -- `network_allow_list` _Optional[str]_ - サンドボックスで許可するCIDRネットワークアドレスのカンマ区切りリスト。 - -## CreateSandboxFromImageParams +* `name` *Optional[str]* - サンドボックス名。 +* `language` *Optional[CodeLanguage]* - サンドボックスのプログラミング言語。既定は "python"。 +* `os_user` *Optional[str]* - サンドボックスの OS ユーザー。 +* `env_vars` *Optional[Dict[str, str]]* - サンドボックスで設定する環境変数。 +* `labels` *Optional[Dict[str, str]]* - サンドボックスのカスタムラベル。 +* `public` *Optional[bool]* - サンドボックスを公開にするかどうか。 +* `timeout` *Optional[float]* - サンドボックスが作成・起動されるまでのタイムアウト(秒)。 +* `auto_stop_interval` *Optional[int]* - 指定時間内にサンドボックスイベントが発生しなかった場合に + 自動的に停止するまでの間隔(分)。既定は 15 分。 + 0 は自動停止なしを意味します。 +* `auto_archive_interval` *Optional[int]* - 継続して停止しているサンドボックスが + 自動的にアーカイブされるまでの間隔(分)。既定は 7 日。 + 0 は最大間隔が使用されることを意味します。 +* `auto_delete_interval` *Optional[int]* - 継続して停止しているサンドボックスが + 自動的に削除されるまでの間隔(分)。既定では自動削除は無効です。 + 負の値は無効、0 は停止直後に削除を意味します。 +* `volumes` *Optional[List[VolumeMount]]* - サンドボックスにアタッチするボリュームのマウント一覧。 +* `network_block_all` *Optional[bool]* - サンドボックスのすべてのネットワークアクセスをブロックするかどうか。 +* `network_allow_list` *Optional[str]* - サンドボックスで許可する CIDR ネットワークアドレスのカンマ区切りリスト。 +* `ephemeral` *Optional[bool]* - サンドボックスをエフェメラルにするかどうか。 + True の場合、auto_delete_interval は 0 に設定されます。 + +## CreateSandboxFromImageParams \{#createsandboxfromimageparams\} ```python class CreateSandboxFromImageParams(CreateSandboxBaseParams) ``` -イメージから新しいサンドボックスを作成するためのパラメータ。 +イメージから新しいサンドボックスを作成するためのパラメーター。 **属性**: -- `image` _Union[str, Image]_ - サンドボックスに使用するカスタム Docker イメージ。Image オブジェクトが指定された場合は、 - イメージが動的にビルドされます。 -- `resources` _Optional[Resources]_ - サンドボックスのリソース構成。指定しない場合は、サンドボックスに +* `image` *Union[str, Image]* - サンドボックスに使用するカスタム Docker イメージ。Image オブジェクトが指定された場合、 + イメージは動的にビルドされます。 +* `resources` *Optional[Resources]* - サンドボックスのリソース設定。指定しない場合、サンドボックスには 既定のリソースが割り当てられます。 -## CreateSandboxFromSnapshotParams +## CreateSandboxFromSnapshotParams \{#createsandboxfromsnapshotparams\} ```python class CreateSandboxFromSnapshotParams(CreateSandboxBaseParams) @@ -441,5 +437,4 @@ class CreateSandboxFromSnapshotParams(CreateSandboxBaseParams) **属性**: -- `snapshot` _Optional[str]_ - サンドボックスに使用するスナップショット名。 - +* `snapshot` *Optional[str]* - サンドボックスに使用するスナップショット名。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/python-sdk/sync/file-system.mdx b/apps/docs/src/content/docs/ja/python-sdk/sync/file-system.mdx index 78fc8ff97..39d521535 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/sync/file-system.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/sync/file-system.mdx @@ -3,7 +3,7 @@ title: "ファイルシステム" hideTitleOnPage: true --- -## FileSystem +## FileSystem \{#filesystem\} ```python class FileSystem() @@ -11,61 +11,60 @@ class FileSystem() サンドボックス内のファイルシステム操作を提供します。 -このクラスは、Daytona のサンドボックス内で実行できるファイルシステム操作に対する高水準インターフェースを実装します。 +このクラスは、Daytonaのサンドボックス内で実行可能なファイルシステム操作に対する高水準インターフェースを実装します。 -#### FileSystem.\_\_init\_\_ +#### FileSystem.__init__ \{#filesystem__init__\} ```python -def __init__(sandbox_id: str, toolbox_api: ToolboxApi, - get_root_dir: Callable[[], str]) +def __init__(api_client: FileSystemApi, ensure_toolbox_url: Callable[[], + None]) ``` 新しい FileSystem インスタンスを初期化します。 **引数**: -- `sandbox_id` _str_ - サンドボックス ID。 -- `toolbox_api` _ToolboxApi_ - サンドボックス操作用の API クライアント。 -- `get_root_dir` _Callable[[], str]_ - サンドボックスのデフォルトのルートディレクトリを取得する関数。 +* `api_client` *FileSystemApi* - サンドボックスのファイルシステム操作用 API クライアント。 +* `ensure_toolbox_url` *Callable[[], None]* - Toolbox API の URL が初期化されていることを保証する関数。 + API クライアントのプライベートメソッドを呼び出す前に必ず実行してください。 -#### FileSystem.create\_folder +#### FileSystem.create_folder \{#filesystemcreate_folder\} ```python -@intercept_errors(message_prefix="Failed to create folder: ") +@intercept_errors(message_prefix="フォルダーの作成に失敗しました: ") def create_folder(path: str, mode: str) -> None ``` -指定したパスに、与えられた権限でサンドボックス内に新しいディレクトリを作成します。 +指定したパスに、指定した権限でサンドボックス内に新しいディレクトリを作成します。 **引数**: -- `path` _str_ - フォルダを作成するパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `mode` _str_ - 8 進数形式のフォルダ権限(例: "755" は rwxr-xr-x)。 - +* `path` *str* - ディレクトリを作成するパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `mode` *str* - 8進数表記のディレクトリ権限(例: "755" は rwxr-xr-x)。 **例**: ```python -# 標準的な権限でディレクトリを作成 +# 標準権限でディレクトリを作成 sandbox.fs.create_folder("workspace/data", "755") # プライベートディレクトリを作成 sandbox.fs.create_folder("workspace/secrets", "700") ``` -#### FileSystem.delete\_file +#### FileSystem.delete_file \{#filesystemdelete_file\} ```python -@intercept_errors(message_prefix="Failed to delete file: ") -def delete_file(path: str) -> None +@intercept_errors(message_prefix="ファイルの削除に失敗しました: ") +def delete_file(path: str, recursive: bool = False) -> None ``` サンドボックスからファイルを削除します。 **引数**: -- `path` _str_ - 削除するファイルへの絶対パス。 - +* `path` *str* - 削除するファイルのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `recursive` *bool* - 対象がディレクトリの場合、削除するには true にする必要があります。 **例**: @@ -74,42 +73,41 @@ def delete_file(path: str) -> None sandbox.fs.delete_file("workspace/data/old_file.txt") ``` -#### FileSystem.download\_file +#### FileSystem.download_file \{#filesystemdownload_file\} ```python @overload def download_file(remote_path: str, timeout: int = 30 * 60) -> bytes ``` -サンドボックスからファイルをダウンロードします。ファイル内容を bytes オブジェクトとして返します。 -ディスクに保存せずにファイルをメモリに読み込みたい場合に便利です。 -小さなファイルにのみ使用できます。 +サンドボックスからファイルをダウンロードします。ファイルの内容をバイト列(bytes)オブジェクトとして返します。 +このメソッドは、ディスクに保存せずにファイルをメモリに読み込みたい場合に便利です。 +小容量のファイルにのみ使用できます。 **引数**: -- `remote_path` _str_ - サンドボックス内のファイルへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `timeout` _int_ - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなし。デフォルトは 30 分。 - +* `remote_path` *str* - サンドボックス内のファイルパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `timeout` *int* - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。既定は30分です。 **戻り値**: -- `bytes` - ファイル内容の bytes オブジェクト。 - +* `bytes` - ファイル内容を表すバイト列(bytes)オブジェクト。 **例**: ```python -# ダウンロードしてローカルに保存 +# ファイルをローカルにダウンロードして保存 content = sandbox.fs.download_file("workspace/data/file.txt") with open("local_copy.txt", "wb") as f: f.write(content) -# ダウンロードしてテキスト内容を処理 +# テキストコンテンツをダウンロードして処理 content = sandbox.fs.download_file("workspace/data/config.json") config = json.loads(content.decode('utf-8')) ``` -#### FileSystem.download\_file +#### FileSystem.download_file \{#filesystemdownload_file\} ```python @overload @@ -118,15 +116,14 @@ def download_file(remote_path: str, timeout: int = 30 * 60) -> None ``` -サンドボックスからファイルをダウンロードし、ストリームでローカルファイルに保存します。 -メモリに収まりきらない可能性のある大きなファイルをダウンロードしたい場合に便利です。 +サンドボックスからファイルをダウンロードし、ストリーム経由でローカルファイルに保存します。 +このメソッドは、メモリに収まりきらない可能性のある大きなファイルをダウンロードする際に有用です。 **引数**: -- `remote_path` _str_ - サンドボックス内のファイルへのパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `local_path` _str_ - ローカルにファイルを保存するパス。 -- `timeout` _int_ - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなし。デフォルトは 30 分。 - +* `remote_path` *str* - サンドボックス内のファイルパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `local_path` *str* - ファイルを保存するローカルのパス。 +* `timeout` *int* - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。デフォルトは30分です。 **例**: @@ -134,13 +131,52 @@ def download_file(remote_path: str, local_path = "local_copy.txt" sandbox.fs.download_file("tmp/large_file.txt", local_path) size_mb = os.path.getsize(local_path) / 1024 / 1024 -print(f"Size of the downloaded file {local_path}: {size_mb} MB") +print(f"ダウンロードしたファイル {local_path} のサイズ: {size_mb} MB") ``` -#### FileSystem.find\_files +#### FileSystem.download_files \{#filesystemdownload_files\} ```python -@intercept_errors(message_prefix="Failed to find files: ") +@intercept_errors(message_prefix="ファイルのダウンロードに失敗しました: ") +def download_files(files: List[FileDownloadRequest], + timeout: int = 30 * 60) -> List[FileDownloadResponse] +``` + +サンドボックスから複数のファイルをダウンロードします。ファイルがローカルに既に存在する場合は上書きされます。 + +**引数**: + +* `files` *List[FileDownloadRequest]* - ダウンロードするファイルのリスト。 +* `timeout` *int* - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。既定値は 30 分です。 + +**戻り値**: + +* `List[FileDownloadResponse]` - ダウンロード結果のリスト。 + +**例外**: + +* `Exception` - リクエスト自体が失敗した場合のみ(ネットワーク障害、不正なリクエスト/レスポンスなど)。個々の + ファイルのダウンロードエラーは `FileDownloadResponse.error` フィールドで返されます。 + +**例**: + +```python +# 複数ファイルのダウンロード +results = sandbox.fs.download_files([ + FileDownloadRequest(source="tmp/data.json"), + FileDownloadRequest(source="tmp/config.json", destination="local_config.json") +]) +for result in results: + if result.error: + print(f"{result.source} のダウンロード中にエラーが発生しました: {result.error}") + elif result.result: + print(f"{result.source} を {result.result} にダウンロードしました") +``` + +#### FileSystem.find_files \{#filesystemfind_files\} + +```python +@intercept_errors(message_prefix="ファイルの検索に失敗しました: ") def find_files(path: str, pattern: str) -> List[Match] ``` @@ -148,178 +184,166 @@ def find_files(path: str, pattern: str) -> List[Match] **引数**: -- `path` _str_ - 検索対象のファイルまたはディレクトリのパス。パスがディレクトリの場合、 - 検索は再帰的に実行されます。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `pattern` _str_ - ファイル内容に対して照合する検索パターン。 - +* `path` *str* - 検索対象のファイルまたはディレクトリへのパス。パスがディレクトリの場合は、 + 再帰的に検索が行われます。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `pattern` *str* - ファイル内容に対して照合する検索パターン。 -**戻り値**: +**返り値**: -- `List[Match]` - ファイル内で見つかった一致のリスト。各 Match オブジェクトには以下が含まれます: - - file: 一致が含まれるファイルのパス - - line: 一致が見つかった行番号 - - content: 一致した行の内容 - +* `List[Match]` - ファイル内で見つかった一致のリスト。各 Match オブジェクトには次が含まれます: + * file: 一致を含むファイルのパス + * line: 一致が見つかった行番号 + * content: 一致した行の内容 **例**: ```python -# Search for TODOs in Python files +# Pythonファイル内のTODOを検索 matches = sandbox.fs.find_files("workspace/src", "TODO:") for match in matches: print(f"{match.file}:{match.line}: {match.content.strip()}") ``` -#### FileSystem.get\_file\_info +#### FileSystem.get_file_info \{#filesystemget_file_info\} ```python -@intercept_errors(message_prefix="Failed to get file info: ") +@intercept_errors(message_prefix="ファイル情報の取得に失敗しました: ") def get_file_info(path: str) -> FileInfo ``` -ファイルまたはディレクトリの詳細情報を取得します。サイズ、パーミッション、タイムスタンプを含みます。 +ファイルまたはディレクトリの詳細情報(サイズ、権限、タイムスタンプなど)を取得します。 **引数**: -- `path` _str_ - ファイルまたはディレクトリのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 - +* `path` *str* - ファイルまたはディレクトリへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `FileInfo` - 次を含む詳細なファイル情報: - - name: ファイル名 - - is_dir: パスがディレクトリかどうか - - size: バイト単位のファイルサイズ - - mode: ファイルのパーミッション - - mod_time: 最終更新タイムスタンプ - - permissions: 8 進数表記のファイルパーミッション - - owner: ファイル所有者 - - group: ファイルグループ - +* `FileInfo` - 次を含む詳細なファイル情報: + * name: ファイル名 + * is_dir: パスがディレクトリかどうか + * size: バイト単位のファイルサイズ + * mode: ファイル権限 + * mod_time: 最終更新時刻 + * permissions: 8進数形式のファイル権限 + * owner: ファイルの所有者 + * group: ファイルのグループ **例**: ```python -# Get file metadata +# ファイルメタデータを取得 info = sandbox.fs.get_file_info("workspace/data/file.txt") -print(f"Size: {info.size} bytes") -print(f"Modified: {info.mod_time}") -print(f"Mode: {info.mode}") +print(f"サイズ: {info.size} バイト") +print(f"更新日時: {info.mod_time}") +print(f"モード: {info.mode}") -# Check if path is a directory +# パスがディレクトリかどうかを確認 info = sandbox.fs.get_file_info("workspace/data") if info.is_dir: - print("Path is a directory") + print("パスはディレクトリです") ``` -#### FileSystem.list\_files +#### FileSystem.list_files \{#filesystemlist_files\} ```python -@intercept_errors(message_prefix="Failed to list files: ") +@intercept_errors(message_prefix="ファイル一覧の取得に失敗しました: ") def list_files(path: str) -> List[FileInfo] ``` -指定したパス内のファイルとディレクトリを一覧表示し、その情報を返します。`ls -l` コマンドに似ています。 +指定したパス配下のファイルとディレクトリを一覧表示し、その情報を返します。ls -l コマンドに類似します。 **引数**: -- `path` _str_ - 内容を一覧表示するディレクトリのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 - +* `path` *str* - 内容を一覧表示するディレクトリのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `List[FileInfo]` - ファイルおよびディレクトリ情報のリスト。各 FileInfo - オブジェクトには get_file_info() と同じフィールドが含まれます。 - +* `List[FileInfo]` - ファイルおよびディレクトリ情報のリスト。各 FileInfo + オブジェクトは get_file_info() で説明されているフィールドと同一です。 **例**: ```python -# List directory contents +# ディレクトリの内容を一覧表示 files = sandbox.fs.list_files("workspace/data") -# Print files and their sizes +# ファイルとそのサイズを出力 for file in files: if not file.is_dir: - print(f"{file.name}: {file.size} bytes") + print(f"{file.name}: {file.size} バイト") -# List only directories +# ディレクトリのみを一覧表示 dirs = [f for f in files if f.is_dir] -print("Subdirectories:", ", ".join(d.name for d in dirs)) +print("サブディレクトリ:", ", ".join(d.name for d in dirs)) ``` -#### FileSystem.move\_files +#### FileSystem.move_files \{#filesystemmove_files\} ```python -@intercept_errors(message_prefix="Failed to move files: ") +@intercept_errors(message_prefix="ファイルの移動に失敗しました: ") def move_files(source: str, destination: str) -> None ``` -ファイルまたはディレクトリを移動またはリネームします。宛先の親ディレクトリは存在している必要があります。 +ファイルまたはディレクトリを移動またはリネームします。移動先の親ディレクトリは存在している必要があります。 **引数**: -- `source` _str_ - 移動元のファイルまたはディレクトリのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `destination` _str_ - 移動先のパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 - +* `source` *str* - 元のファイルまたはディレクトリへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `destination` *str* - 移動先のパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 **例**: ```python -# Rename a file +# ファイルの名前を変更 sandbox.fs.move_files( "workspace/data/old_name.txt", "workspace/data/new_name.txt" ) -# Move a file to a different directory +# ファイルを別のディレクトリに移動 sandbox.fs.move_files( "workspace/data/file.txt", "workspace/archive/file.txt" ) -# Move a directory +# ディレクトリを移動 sandbox.fs.move_files( "workspace/old_dir", "workspace/new_dir" ) ``` -#### FileSystem.replace\_in\_files +#### FileSystem.replace_in_files \{#filesystemreplace_in_files\} ```python -@intercept_errors(message_prefix="Failed to replace in files: ") +@intercept_errors(message_prefix="ファイル内の置換に失敗しました: ") def replace_in_files(files: List[str], pattern: str, new_value: str) -> List[ReplaceResult] ``` -複数ファイルに対して検索と置換を実行します。 +複数のファイルにわたって検索と置換を実行します。 **引数**: -- `files` _List[str]_ - 置換を実行するファイルパスのリスト。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `pattern` _str_ - 検索するパターン。 -- `new_value` _str_ - マッチした部分を置き換えるテキスト。 - +* `files` *List[str]* - 置換を行うファイルパスのリスト。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `pattern` *str* - 検索するパターン。 +* `new_value` *str* - 一致箇所を置換するテキスト。 **戻り値**: -- `List[ReplaceResult]` - 各ファイルで行われた置換を示す結果のリスト。各 ReplaceResult には次が含まれます: - - file: 変更されたファイルのパス - - success: 操作が成功したかどうか - - error: 操作が失敗した場合のエラーメッセージ - +* `List[ReplaceResult]` - 各ファイルで実施された置換内容を示す結果のリスト。 + 各 ReplaceResult には次が含まれます: + * file: 変更されたファイルのパス + * success: 操作が成功したかどうか + * error: 操作が失敗した場合のエラーメッセージ **例**: ```python -# 特定のファイルで置換を実行 +# 特定のファイルで置換 results = sandbox.fs.replace_in_files( files=["workspace/src/file1.py", "workspace/src/file2.py"], pattern="old_function", @@ -334,63 +358,59 @@ for result in results: print(f"{result.file}: {result.error}") ``` -#### FileSystem.search\_files +#### FileSystem.search_files \{#filesystemsearch_files\} ```python -@intercept_errors(message_prefix="Failed to search files: ") +@intercept_errors(message_prefix="ファイル検索に失敗しました: ") def search_files(path: str, pattern: str) -> SearchFilesResponse ``` -指定したパターンに一致する名前のファイルやディレクトリを検索します。パターンは単純な文字列またはグロブパターンを指定できます。 +指定したパターンに名前が一致するファイルとディレクトリを検索します。パターンはシンプルな文字列またはグロブパターンを指定できます。 **引数**: -- `path` _str_ - 検索を開始するルートディレクトリのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `pattern` _str_ - ファイル名にマッチさせるパターン。グロブ - パターン(例: Python ファイルなら "*.py")をサポートします。 - +* `path` *str* - 検索を開始するルートディレクトリへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `pattern` *str* - ファイル名に対して照合するパターン。グロブパターンをサポートします(例: "*.py" は Python ファイル)。 **戻り値**: -- `SearchFilesResponse` - 検索結果を含みます: - - files: 一致したファイルおよびディレクトリのパスのリスト - +* `SearchFilesResponse` - 次を含む検索結果: + * files: 一致したファイルおよびディレクトリパスの一覧 **例**: ```python -# すべての Python ファイルを検索 +# すべてのPythonファイルを検索 result = sandbox.fs.search_files("workspace", "*.py") for file in result.files: print(file) # 特定のプレフィックスを持つファイルを検索 result = sandbox.fs.search_files("workspace/data", "test_*") -print(f"Found {len(result.files)} test files") +print(f"{len(result.files)}個のテストファイルが見つかりました") ``` -#### FileSystem.set\_file\_permissions +#### FileSystem.set_file_permissions \{#filesystemset_file_permissions\} ```python -@intercept_errors(message_prefix="Failed to set file permissions: ") +@intercept_errors(message_prefix="ファイル権限の設定に失敗しました: ") def set_file_permissions(path: str, mode: str = None, owner: str = None, group: str = None) -> None ``` -ファイルまたはディレクトリのパーミッションと所有権を設定します。いずれのパラメータも None を指定すると、その属性は変更されません。 +ファイルまたはディレクトリの権限と所有権を設定します。いずれのパラメータも None の場合、 +その属性は変更されません。 **引数**: -- `path` _str_ - ファイルまたはディレクトリのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `mode` _Optional[str]_ - 8 進数形式のファイルモード/パーミッション - (例: "644" は rw-r--r--)。 -- `owner` _Optional[str]_ - ファイルの所有ユーザー。 -- `group` _Optional[str]_ - ファイルの所有グループ。 - +* `path` *str* - ファイルまたはディレクトリへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `mode` *Optional[str]* - 8進数形式のファイルモード/パーミッション + (例: "644" は rw-r--r--)。 +* `owner` *Optional[str]* - ファイルの所有ユーザー。 +* `group` *Optional[str]* - ファイルの所有グループ。 **例**: @@ -401,7 +421,7 @@ sandbox.fs.set_file_permissions( mode="755" # rwxr-xr-x ) -# ファイルの所有者を変更 +# ファイルの所有者を変更する sandbox.fs.set_file_permissions( path="workspace/data/file.txt", owner="daytona", @@ -409,22 +429,20 @@ sandbox.fs.set_file_permissions( ) ``` -#### FileSystem.upload\_file +#### FileSystem.upload_file \{#filesystemupload_file\} ```python @overload def upload_file(file: bytes, remote_path: str, timeout: int = 30 * 60) -> None ``` -サンドボックス内の指定したパスにファイルをアップロードします。宛先に同名のファイルが既に存在する場合は上書きされます。メモリに収まる小さなファイルをアップロードする場合に適しています。 +サンドボックス内の指定パスにファイルをアップロードします。宛先パスに既にファイルが存在する場合は上書きされます。このメソッドは、メモリに収まる小さなファイルをアップロードする際に有用です。 **引数**: -- `file` _bytes_ - バイト列オブジェクトとしてのファイル内容。 -- `remote_path` _str_ - 宛先ファイルのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `timeout` _int_ - アップロード処理のタイムアウト(秒)。0 はタイムアウトなし。デフォルトは 30 分。 - +* `file` *bytes* - バイト列としてのファイル内容。 +* `remote_path` *str* - 宛先ファイルへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `timeout` *int* - アップロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。既定値は30分です。 **例**: @@ -445,7 +463,7 @@ content = json.dumps(data).encode('utf-8') sandbox.fs.upload_file(content, "tmp/config.json") ``` -#### FileSystem.upload\_file +#### FileSystem.upload_file \{#filesystemupload_file\} ```python @overload @@ -455,17 +473,16 @@ def upload_file(local_path: str, ``` ローカルファイルシステムからサンドボックス内の指定パスにファイルをアップロードします。 -宛先パスにすでにファイルが存在する場合は上書きされます。このメソッドは -ストリーミングでファイルをアップロードするため、メモリに収まりきらない大きなファイルの -アップロードに適しています。 +宛先パスに既にファイルが存在する場合は上書きされます。このメソッドは +ストリーミングでアップロードを行うため、メモリに収まりきらない可能性のある +大きなファイルをアップロードする際に有用です。 **引数**: -- `local_path` _str_ - アップロードするローカルファイルのパス。 -- `remote_path` _str_ - サンドボックス内の宛先ファイルのパス。相対パスは - ユーザーのルートディレクトリを基準に解決されます。 -- `timeout` _int_ - アップロード処理のタイムアウト(秒)。0 はタイムアウトなし。既定は 30 分。 - +* `local_path` *str* - アップロードするローカルファイルのパス。 +* `remote_path` *str* - サンドボックス内のアップロード先ファイルのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `timeout` *int* - アップロード処理のタイムアウト(秒)。0 は無制限。既定は 30 分。 **例**: @@ -473,20 +490,19 @@ def upload_file(local_path: str, sandbox.fs.upload_file("local_file.txt", "tmp/large_file.txt") ``` -#### FileSystem.upload\_files +#### FileSystem.upload_files \{#filesystemupload_files\} ```python @intercept_errors(message_prefix="Failed to upload files: ") def upload_files(files: List[FileUpload], timeout: int = 30 * 60) -> None ``` -複数のファイルをサンドボックスにアップロードします。宛先パスにすでにファイルが存在する場合は -上書きされます。 +複数のファイルをサンドボックスにアップロードします。宛先パスに既にファイルが存在する場合は上書きされます。 **引数**: -- `files` _List[FileUpload]_ - アップロードするファイルのリスト。 -- `timeout` _int_ - アップロード処理のタイムアウト(秒)。0 はタイムアウトなし。既定は 30 分。 +* `files` *List[FileUpload]* - アップロードするファイルの一覧。 +* `timeout` *int* - アップロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。既定値は 30 分。 **例**: @@ -509,8 +525,7 @@ files = [ sandbox.fs.upload_files(files) ``` - -## FileUpload +## ファイルのアップロード \{#fileupload\} ```python @dataclass @@ -521,6 +536,38 @@ class FileUpload() **属性**: -- `source` _Union[bytes, str]_ - ファイル内容。バイト列オブジェクト、またはローカルファイルパスを指定できます。バイト列を指定する場合は、メモリに収まるサイズであることを確認してください。そうでない場合は、内容がサンドボックスへストリーミングされるローカルファイルパスを使用してください。 -- `destination` _str_ - サンドボックス内の保存先の絶対パス。相対パスはユーザーのルートディレクトリを基準に解決されます。 +* `source` *Union[bytes, str]* - ファイルの内容。bytes オブジェクトまたはローカルファイルパスを指定します。bytes オブジェクトを指定する場合は、メモリに収まることを確認してください。収まらない場合はローカルファイルパスを使用してください。ファイルの内容はサンドボックスへストリーミングされます。 +* `destination` *str* - サンドボックス内の保存先の絶対パス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 + +## FileDownloadRequest \{#filedownloadrequest\} + +```python +@dataclass +class FileDownloadRequest() +``` + +サンドボックスから単一のファイルをダウンロードするリクエストを表します。 + +**属性**: + +* `source` *str* - サンドボックス内のソースパス。相対パスはユーザーの + ルートディレクトリを基準に解決されます。 +* `destination` *Optional[str]* - ファイル内容をストリーミングするローカルファイルシステム上の出力先パス。 + 指定しない場合、ファイルはバイトバッファにダウンロードされます + (ファイルが大きい場合はメモリ使用量が増え、問題を引き起こす可能性があります)。 + +## FileDownloadResponse(ファイルダウンロード応答) \{#filedownloadresponse\} + +```python +@dataclass +class FileDownloadResponse() +``` + +単一のファイルダウンロード要求に対するレスポンスを表します。 + +**属性**: +* `source` *str* - ダウンロード対象として要求された元のソースパス。 +* `result` *Union[str, bytes, None]* - ダウンロード結果。要求に宛先が指定されている場合はファイルパス、 + 宛先がない場合はバイト列。失敗した場合、またはデータが受信されなかった場合は None。 +* `error` *Optional[str]* - ダウンロードが失敗した場合のエラーメッセージ。成功した場合は None。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/sync/git.mdx b/apps/docs/src/content/docs/ja/python-sdk/sync/git.mdx index e50efc3f3..9904bd4af 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/sync/git.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/sync/git.mdx @@ -3,76 +3,72 @@ title: "Git" hideTitleOnPage: true --- -## Git +## Git \{#git\} ```python class Git() ``` -サンドボックス内での Git 操作を提供します。 +サンドボックス内で Git 操作を提供します。 **例**: ```python -# リポジトリをクローン +# リポジトリをクローンする sandbox.git.clone( url="https://github.com/user/repo.git", path="workspace/repo" ) -# リポジトリのステータスを確認 +# リポジトリのステータスを確認する status = sandbox.git.status("workspace/repo") -print(f"Modified files: {status.modified}") +print(f"変更されたファイル: {status.modified}") -# 変更をステージしてコミット +# 変更をステージしてコミットする sandbox.git.add("workspace/repo", ["file.txt"]) sandbox.git.commit( path="workspace/repo", - message="Update file", + message="ファイルを更新", author="John Doe", email="john@example.com" ) ``` -#### Git.__init__ +#### Git.__init__ \{#git__init__\} ```python -def __init__(sandbox_id: str, toolbox_api: ToolboxApi, - get_root_dir: Callable[[], str]) +def __init__(api_client: GitApi) ``` 新しい Git ハンドラーのインスタンスを初期化します。 **引数**: -- `sandbox_id` _str_ - サンドボックス ID。 -- `toolbox_api` _ToolboxApi_ - サンドボックス操作用の API クライアント。 -- `get_root_dir` _Callable[[], str]_ - サンドボックスのデフォルトのルートディレクトリを取得する関数。 +* `api_client` *GitApi* - サンドボックスの Git 操作用 API クライアント。 -#### Git.add +#### Git.add \{#gitadd\} ```python -@intercept_errors(message_prefix="Failed to add files: ") +@intercept_errors(message_prefix="ファイルの追加に失敗しました: ") def add(path: str, files: List[str]) -> None ``` -指定したファイルを次回のコミットに向けてステージします。コマンドラインで -`git add` を実行するのと同様です。 +次回のコミットに指定したファイルをステージします。コマンドラインで +'git add' を実行するのと同様です。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `files` _List[str]_ - ステージするファイルまたはディレクトリのリスト。リポジトリルートからの相対パス。 - +* `path` *str* - Git リポジトリのルートへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `files` *List[str]* - リポジトリのルートからの相対パスで指定する、ステージ対象のファイルまたはディレクトリのパス一覧。 **例**: ```python -# 単一ファイルをステージ +# 単一ファイルをステージング sandbox.git.add("workspace/repo", ["file.txt"]) -# 複数ファイルをステージ +# 複数ファイルをステージング sandbox.git.add("workspace/repo", [ "src/main.py", "tests/test_main.py", @@ -80,37 +76,34 @@ sandbox.git.add("workspace/repo", [ ]) ``` -#### Git.branches +#### Git.branches \{#gitbranches\} ```python -@intercept_errors(message_prefix="Failed to list branches: ") +@intercept_errors(message_prefix="ブランチの一覧取得に失敗しました: ") def branches(path: str) -> ListBranchResponse ``` -リポジトリ内のブランチを一覧表示します。 +リポジトリ内のブランチを一覧します。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 - +* `path` *str* - Gitリポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `ListBranchResponse` - リポジトリ内のブランチ一覧。 - +* `ListBranchResponse` - リポジトリ内のブランチの一覧。 **例**: ```python response = sandbox.git.branches("workspace/repo") -print(f"Branches: {response.branches}") +print(f"ブランチ: {response.branches}") ``` -#### Git.clone +#### Git.clone \{#gitclone\} ```python -@intercept_errors(message_prefix="Failed to clone repository: ") +@intercept_errors(message_prefix="リポジトリのクローンに失敗しました: ") def clone(url: str, path: str, branch: Optional[str] = None, @@ -119,33 +112,27 @@ def clone(url: str, password: Optional[str] = None) -> None ``` -指定したパスに Git リポジトリをクローンします。特定のブランチやコミットの -クローンに対応し、認証情報が提供された場合はリモートリポジトリへの -認証も可能です。 +指定したパスに Git リポジトリをクローンします。特定のブランチやコミットのクローンに対応し、認証情報が提供された場合はリモートリポジトリへの認証も行えます。 **引数**: -- `url` _str_ - クローン元のリポジトリ URL。 -- `path` _str_ - リポジトリをクローンするパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `branch` _Optional[str]_ - クローンするブランチ。未指定の場合は - デフォルトブランチをクローンします。 -- `commit_id` _Optional[str]_ - チェックアウトする特定のコミット。指定した場合、 - リポジトリはこのコミットで detached HEAD 状態になります。 -- `username` _Optional[str]_ - 認証用の Git ユーザー名。 -- `password` _Optional[str]_ - 認証用の Git パスワードまたはトークン。 - +* `url` *str* - クローン元のリポジトリ URL。 +* `path` *str* - リポジトリをクローンするパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `branch` *Optional[str]* - クローンするブランチ。未指定の場合は既定のブランチをクローンします。 +* `commit_id` *Optional[str]* - チェックアウトするコミット。指定した場合、リポジトリはそのコミットで detached HEAD 状態になります。 +* `username` *Optional[str]* - 認証に使用する Git ユーザー名。 +* `password` *Optional[str]* - 認証に使用する Git パスワードまたはトークン。 **例**: ```python -# デフォルトブランチをクローン +# デフォルトブランチをクローンする sandbox.git.clone( url="https://github.com/user/repo.git", path="workspace/repo" ) -# 認証付きで特定のブランチをクローン +# 認証を使用して特定のブランチをクローンする sandbox.git.clone( url="https://github.com/user/private-repo.git", path="workspace/private", @@ -154,7 +141,7 @@ sandbox.git.clone( password="token" ) -# 特定のコミットをクローン +# 特定のコミットをクローンする sandbox.git.clone( url="https://github.com/user/repo.git", path="workspace/repo-old", @@ -162,10 +149,10 @@ sandbox.git.clone( ) ``` -#### Git.commit +#### Git.commit \{#gitcommit\} ```python -@intercept_errors(message_prefix="Failed to commit changes: ") +@intercept_errors(message_prefix="変更のコミットに失敗しました: ") def commit(path: str, message: str, author: str, @@ -173,58 +160,53 @@ def commit(path: str, allow_empty: bool = False) -> GitCommitResponse ``` -ステージ済みの変更で新しいコミットを作成します。コミットする前に必ず add() メソッドで +ステージ済みの変更で新しいコミットを作成します。コミットする前に、必ず add() メソッドで 変更をステージしてください。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `message` _str_ - 変更内容を説明するコミットメッセージ。 -- `author` _str_ - コミット作者の名前。 -- `email` _str_ - コミット作者のメールアドレス。 -- `allow_empty` _bool, optional_ - 変更がステージされていない場合でも空のコミットを作成できるようにします。デフォルトは False。 - +* `path` *str* - Gitリポジトリのルートへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `message` *str* - 変更内容を説明するコミットメッセージ。 +* `author` *str* - コミットの作成者名。 +* `email` *str* - コミット作成者のメールアドレス。 +* `allow_empty` *bool, optional* - 変更がステージされていなくても空のコミットを作成できるようにします。デフォルトは False。 **例**: ```python -# 変更をステージしてコミットする +# 変更をステージングしてコミット sandbox.git.add("workspace/repo", ["README.md"]) sandbox.git.commit( path="workspace/repo", - message="Update documentation", + message="ドキュメントを更新", author="John Doe", email="john@example.com", allow_empty=True ) ``` -#### Git.push +#### Git.push \{#gitpush\} ```python -@intercept_errors(message_prefix="Failed to push changes: ") +@intercept_errors(message_prefix="変更のプッシュに失敗しました: ") def push(path: str, username: Optional[str] = None, password: Optional[str] = None) -> None ``` -現在のブランチのすべてのローカルコミットをリモート -リポジトリにプッシュします。リモートリポジトリが認証を要求する場合は、 -username と password/token を指定してください。 +現在のブランチのすべてのローカルコミットをリモートリポジトリにプッシュします。リモートリポジトリで認証が必要な場合は、ユーザー名とパスワード/トークンを指定してください。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `username` _Optional[str]_ - 認証用の Git ユーザー名。 -- `password` _Optional[str]_ - 認証用の Git パスワードまたはトークン。 - +* `path` *str* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `username` *Optional[str]* - 認証用の Git ユーザー名。 +* `password` *Optional[str]* - 認証用の Git パスワードまたはトークン。 **例**: ```python -# 認証なしでプッシュ(公開リポジトリや SSH の場合) +# 認証なしでプッシュ(パブリックリポジトリまたはSSH用) sandbox.git.push("workspace/repo") # 認証ありでプッシュ @@ -235,25 +217,24 @@ sandbox.git.push( ) ``` -#### Git.pull +#### Git.pull \{#gitpull\} ```python -@intercept_errors(message_prefix="Failed to pull changes: ") +@intercept_errors(message_prefix="変更のプルに失敗しました: ") def pull(path: str, username: Optional[str] = None, password: Optional[str] = None) -> None ``` -リモートリポジトリから変更をプルします。リモートリポジトリが認証を要求する場合は、 -username と password/token を指定してください。 +リモートリポジトリから変更をプルします。リモートリポジトリで認証が必要な場合は、 +ユーザー名とパスワード/トークンを指定してください。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `username` _Optional[str]_ - 認証用の Git ユーザー名。 -- `password` _Optional[str]_ - 認証用の Git パスワードまたはトークン。 - +* `path` *str* - Git リポジトリのルートパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `username` *Optional[str]* - 認証用の Git ユーザー名。 +* `password` *Optional[str]* - 認証用の Git パスワードまたはトークン。 **例**: @@ -269,10 +250,10 @@ sandbox.git.pull( ) ``` -#### Git.status +#### Git.status \{#gitstatus\} ```python -@intercept_errors(message_prefix="Failed to get status: ") +@intercept_errors(message_prefix="ステータスの取得に失敗しました: ") def status(path: str) -> GitStatus ``` @@ -280,44 +261,41 @@ def status(path: str) -> GitStatus **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 - +* `path` *str* - Git リポジトリのルートへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `GitStatus` - リポジトリのステータス情報(以下を含む): - - current_branch: 現在のブランチ名 - - file_status: ファイルの状態のリスト - - ahead: リモートに未プッシュのローカルコミット数 - - behind: ローカルに未プルのリモートコミット数 - - branch_published: ブランチがリモートリポジトリに公開済みかどうか - +* `GitStatus` - リポジトリのステータス情報(以下を含む): + * current_branch: 現在のブランチ名 + * file_status: ファイルの状態一覧 + * ahead: リモートへ未プッシュのローカルコミット数 + * behind: ローカルで未取得のリモートコミット数 + * branch_published: ブランチがリモートリポジトリに公開済みかどうか **例**: ```python status = sandbox.git.status("workspace/repo") -print(f"On branch: {status.current_branch}") -print(f"Commits ahead: {status.ahead}") -print(f"Commits behind: {status.behind}") +print(f"ブランチ: {status.current_branch}") +print(f"先行コミット数: {status.ahead}") +print(f"遅れているコミット数: {status.behind}") ``` -#### Git.checkout\_branch +#### Git.checkout_branch \{#gitcheckout_branch\} ```python -@intercept_errors(message_prefix="Failed to checkout branch: ") +@intercept_errors(message_prefix="ブランチのチェックアウトに失敗しました: ") def checkout_branch(path: str, branch: str) -> None ``` -リポジトリでブランチをチェックアウトします。 +リポジトリ内のブランチをチェックアウトします。 **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `branch` _str_ - チェックアウトするブランチ名 - +* `path` *str* - Git リポジトリのルートへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 +* `branch` *str* - チェックアウトするブランチ名 **例**: @@ -326,10 +304,10 @@ def checkout_branch(path: str, branch: str) -> None sandbox.git.checkout_branch("workspace/repo", "feature-branch") ``` -#### Git.create\_branch +#### Git.create_branch \{#gitcreate_branch\} ```python -@intercept_errors(message_prefix="Failed to create branch: ") +@intercept_errors(message_prefix="ブランチの作成に失敗しました: ") def create_branch(path: str, name: str) -> None ``` @@ -337,10 +315,8 @@ def create_branch(path: str, name: str) -> None **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `name` _str_ - 作成する新しいブランチ名 - +* `path` *str* - Gitリポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `name` *str* - 作成する新しいブランチ名 **例**: @@ -349,10 +325,10 @@ def create_branch(path: str, name: str) -> None sandbox.git.create_branch("workspace/repo", "new-feature") ``` -#### Git.delete\_branch +#### Git.delete_branch \{#gitdelete_branch\} ```python -@intercept_errors(message_prefix="Failed to delete branch: ") +@intercept_errors(message_prefix="ブランチの削除に失敗しました: ") def delete_branch(path: str, name: str) -> None ``` @@ -360,28 +336,24 @@ def delete_branch(path: str, name: str) -> None **引数**: -- `path` _str_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `name` _str_ - 削除するブランチ名 - +* `path` *str* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `name` *str* - 削除するブランチ名 **例**: ```python -# ブランチを削除する +# ブランチを削除 sandbox.git.delete_branch("workspace/repo", "old-feature") ``` - -## GitCommitResponse +## GitCommitResponse \{#gitcommitresponse\} ```python class GitCommitResponse() ``` -Git の commit に対するレスポンス。 +git commit のレスポンス。 **属性**: -- `sha` _str_ - コミットの SHA - +* `sha` *str* - コミットのSHA diff --git a/apps/docs/src/content/docs/ja/python-sdk/sync/lsp-server.mdx b/apps/docs/src/content/docs/ja/python-sdk/sync/lsp-server.mdx index 7d3dd2ed9..cbdd9e80c 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/sync/lsp-server.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/sync/lsp-server.mdx @@ -3,118 +3,120 @@ title: "LSPサーバー" hideTitleOnPage: true --- -## LspServer +## LSPサーバー \{#lspserver\} ```python class LspServer() ``` -コードインテリジェンスのための Language Server Protocol 機能を提供し、コード補完やシンボル検索などの IDE 風の機能を実現します。 +コードインテリジェンスのために LSP(言語サーバープロトコル)機能を提供し、コード補完やシンボル検索などの IDE らしい機能を実現します。 -#### LspServer.__init__ +#### LspServer.**init** \{#lspserver__init__\} ```python def __init__(language_id: LspLanguageId, path_to_project: str, - toolbox_api: ToolboxApi, sandbox_id: str) + api_client: LspApi) ``` 新しい LSP サーバーインスタンスを初期化します。 **引数**: -- `language_id` _LspLanguageId_ - 言語サーバーの種類(例: LspLanguageId.TYPESCRIPT)。 -- `path_to_project` _str_ - プロジェクトのルートディレクトリへの絶対パス。 -- `toolbox_api` _ToolboxApi_ - サンドボックス操作用の API クライアント。 -- `instance` _SandboxInstance_ - このサーバーが属するサンドボックスインスタンス。 +* `language_id` *LspLanguageId* - 言語サーバーの種類(例:LspLanguageId.TYPESCRIPT)。 +* `path_to_project` *str* - プロジェクトのルートディレクトリへの絶対パス。 +* `api_client` *LspApi* - サンドボックス操作用の API クライアント。 +* `instance` *SandboxInstance* - このサーバーが属するサンドボックスインスタンス。 -#### LspServer.start +#### LspServer.start \{#lspserverstart\} ```python -@intercept_errors(message_prefix="Failed to start LSP server: ") +@intercept_errors(message_prefix="LSPサーバーの開始に失敗しました: ") def start() -> None ``` 言語サーバーを起動します。 -このメソッドは他の LSP 機能を使用する前に呼び出す必要があります。指定された言語とプロジェクトに対して言語サーバーを初期化します。 +このメソッドは、他のLSP機能を使用する前に必ず呼び出してください。 +指定した言語とプロジェクト用に言語サーバーを初期化します。 **例**: ```python lsp = sandbox.create_lsp_server("typescript", "workspace/project") -lsp.start() # Initialize the server -# Now ready for LSP operations +lsp.start() # サーバーを初期化 +# LSP操作の準備完了 ``` -#### LspServer.stop +#### LspServer.stop \{#lspserverstop\} ```python -@intercept_errors(message_prefix="Failed to stop LSP server: ") +@intercept_errors(message_prefix="LSPサーバーの停止に失敗しました: ") def stop() -> None ``` 言語サーバーを停止します。 -このメソッドは LSP サーバーが不要になったときに呼び出して、システムリソースを解放します。 +LSP サーバーが不要になったら、システムリソースを解放するためにこのメソッドを呼び出してください。 **例**: ```python -# When done with LSP features -lsp.stop() # Clean up resources +# LSP機能の使用が完了したら +lsp.stop() # リソースをクリーンアップ ``` -#### LspServer.did_open +#### LspServer.did_open \{#lspserverdid_open\} ```python -@intercept_errors(message_prefix="Failed to open file: ") +@intercept_errors(message_prefix="ファイルのオープンに失敗しました: ") def did_open(path: str) -> None ``` -ファイルが開かれたことを言語サーバーに通知します。 +言語サーバーにファイルのオープンを通知します。 -エディタでファイルを開いたときにこのメソッドを呼び出すと、そのファイルに対する診断や補完などの言語機能が有効になります。サーバーはファイル内容の追跡を開始し、言語機能を提供します。 +このメソッドは、エディタでファイルが開かれたときに呼び出し、そのファイルに対する +診断や補完などの言語機能を有効化します。サーバーはファイル内容の追跡を開始し、 +言語機能を提供します。 **引数**: -- `path` _str_ - 開いたファイルへのパス。相対パスは LSP サーバーのコンストラクタで設定されたプロジェクトパスに基づいて解決されます。 - +* `path` *str* - 開いたファイルへのパス。相対パスは、LSP サーバーのコンストラクタで + 設定されたプロジェクトパスに基づいて解決されます。 **例**: ```python -# When opening a file for editing +# ファイルを編集用に開く際 lsp.did_open("workspace/project/src/index.ts") -# Now can get completions, symbols, etc. for this file +# これで、このファイルに対して補完、シンボルなどを取得できます ``` -#### LspServer.did_close +#### LspServer.did_close \{#lspserverdid_close\} ```python -@intercept_errors(message_prefix="Failed to close file: ") +@intercept_errors(message_prefix="ファイルのクローズに失敗しました: ") def did_close(path: str) -> None ``` -ファイルが閉じられたことを言語サーバーに通知します。 +言語サーバーにファイルが閉じられたことを通知します。 -エディタでファイルを閉じたときにこのメソッドを呼び出すことで、そのファイルに関連するリソースを言語サーバーがクリーンアップできます。 +このメソッドは、エディターでファイルが閉じられたときに呼び出し、言語サーバーがそのファイルに関連するリソースを解放できるようにします。 **引数**: -- `path` _str_ - 閉じたファイルへのパス。相対パスは LSP サーバーのコンストラクタで設定されたプロジェクトパスに基づいて解決されます。 - +* `path` *str* - 閉じたファイルのパス。相対パスは、LSPサーバーのコンストラクターで設定したプロジェクトパスを基準に解決されます。 **例**: ```python -# When done editing a file +# ファイルの編集が完了したとき lsp.did_close("workspace/project/src/index.ts") ``` -#### LspServer.document_symbols +#### LspServer.document_symbols \{#lspserverdocument_symbols\} ```python -@intercept_errors(message_prefix="Failed to get symbols from document: ") +@intercept_errors(message_prefix="ドキュメントからシンボルの取得に失敗しました: ") def document_symbols(path: str) -> List[LspSymbol] ``` @@ -122,154 +124,146 @@ def document_symbols(path: str) -> List[LspSymbol] **引数**: -- `path` _str_ - シンボルを取得するファイルへのパス。相対パスは LSP サーバーのコンストラクタで設定されたプロジェクトパスに基づいて解決されます。 - +* `path` *str* - シンボルを取得する対象ファイルへのパス。相対パスは、LSP サーバーのコンストラクタで設定したプロジェクトパスを基準に解決されます。 **戻り値**: -- `List[LspSymbol]` - ドキュメント内のシンボル一覧。各シンボルには以下が含まれます: - - name: シンボル名 - - kind: シンボルの種類(function、class、variable など) - - location: ファイル内でのシンボルの位置 - +* `List[LspSymbol]` - ドキュメント内のシンボル一覧。各シンボルには以下が含まれます: + * name: シンボル名 + * kind: シンボルの種別(関数、クラス、変数など) + * location: ファイル内でのシンボルの位置 **例**: ```python -# Get all symbols in a file +# ファイル内のすべてのシンボルを取得 symbols = lsp.document_symbols("workspace/project/src/index.ts") for symbol in symbols: print(f"{symbol.kind} {symbol.name}: {symbol.location}") ``` -#### LspServer.workspace_symbols +#### LspServer.workspace_symbols \{#lspserverworkspace_symbols\} ```python @deprecated( reason= - "Method is deprecated. Use `sandbox_symbols` instead. This method will be removed in a future version." + "このメソッドは非推奨です。代わりに `sandbox_symbols` を使用してください。このメソッドは将来のバージョンで削除される予定です。" ) def workspace_symbols(query: str) -> List[LspSymbol] ``` -クエリ文字列に一致するシンボルをサンドボックス内の全ファイルから検索します。 +サンドボックス内の全ファイルを対象に、クエリ文字列に一致するシンボルを検索します。 **引数**: -- `query` _str_ - シンボル名に照合する検索クエリ。 - +* `query` *str* - シンボル名と照合する検索クエリ。 -**戻り値**: +**返り値**: -- `List[LspSymbol]` - すべてのファイルからの一致シンボルの一覧。 +* `List[LspSymbol]` - 全ファイルから一致したシンボルのリスト。 -#### LspServer.sandbox_symbols +#### LspServer.sandbox_symbols \{#lspserversandbox_symbols\} ```python -@intercept_errors(message_prefix="Failed to get symbols from sandbox: ") +@intercept_errors(message_prefix="サンドボックスからシンボルの取得に失敗しました: ") def sandbox_symbols(query: str) -> List[LspSymbol] ``` -クエリ文字列に一致するシンボルを、サンドボックス内のすべてのファイルから検索します。 +サンドボックス内のすべてのファイルを対象に、クエリ文字列に一致するシンボルを検索します。 **引数**: -- `query` _str_ - シンボル名に対して照合する検索クエリ。 - +* `query` *str* - シンボル名にマッチさせる検索クエリ。 -**返り値**: +**戻り値**: -- `List[LspSymbol]` - すべてのファイルから一致したシンボルの一覧。各シンボルには次が含まれます: - - name: シンボル名 - - kind: シンボルの種別(function、class、variable など) - - location: ファイル内でのシンボル位置 - +* `List[LspSymbol]` - すべてのファイルからマッチしたシンボルの一覧。各シンボルには次が含まれます: + * name: シンボル名 + * kind: シンボルの種別(function、class、variable など) + * location: ファイル内でのシンボルの位置 **例**: ```python -# 「User」を含むすべてのシンボルを検索 +# "User"を含むすべてのシンボルを検索 symbols = lsp.sandbox_symbols("User") for symbol in symbols: print(f"{symbol.name} in {symbol.location}") ``` -#### LspServer.completions +#### LspServer.completions \{#lspservercompletions\} ```python -@intercept_errors(message_prefix="Failed to get completions: ") -def completions(path: str, position: Position) -> CompletionList +@intercept_errors(message_prefix="補完の取得に失敗しました: ") +def completions(path: str, position: LspCompletionPosition) -> CompletionList ``` ファイル内の指定位置で補完候補を取得します。 **引数**: -- `path` _str_ - ファイルパス。相対パスは、LSP サーバーのコンストラクターで設定したプロジェクトパスを基準に解決されます。 -- `position` _Position_ - 補完を取得するカーソル位置。 - +* `path` *str* - ファイルパス。相対パスは、LSP サーバーのコンストラクタで設定されたプロジェクトパスを基準に解決されます。 +* `position` *LspCompletionPosition* - 補完候補を取得するカーソル位置。 -**返り値**: +**戻り値**: -- `CompletionList` - 補完候補の一覧。以下を含みます: - - isIncomplete: さらに項目が利用可能な可能性があるか - - items: 補完項目のリスト。各項目には次が含まれます: - - label: 挿入するテキスト - - kind: 補完の種別 - - detail: 項目に関する追加情報 - - documentation: 項目のドキュメント - - sortText: 一覧でのソートに使うテキスト - - filterText: フィルターに使うテキスト - - insertText: 実際に挿入するテキスト(label と異なる場合) - +* `CompletionList` - 補完候補のリスト。内容は次のとおりです: + * isIncomplete: さらに項目が利用可能である可能性 + * items: 補完項目のリスト。各項目には次が含まれます: + * label: 挿入するテキスト + * kind: 補完の種類 + * detail: 項目に関する追加情報 + * documentation: 項目のドキュメント + * sortText: リスト内での並べ替えに用いるテキスト + * filterText: フィルタリングに用いるテキスト + * insertText: 実際に挿入するテキスト(label と異なる場合) **例**: ```python -# 特定の位置で補完候補を取得 -pos = Position(line=10, character=15) +# 特定の位置で補完候補を取得する +pos = LspCompletionPosition(line=10, character=15) completions = lsp.completions("workspace/project/src/index.ts", pos) for item in completions.items: print(f"{item.label} ({item.kind}): {item.detail}") ``` - -## LspLanguageId +## LSP言語ID \{#lsplanguageid\} ```python class LspLanguageId(Enum) ``` -LSP(言語サーバープロトコル)で使用する言語ID。 +Language Server Protocol (LSP) の言語ID。 **列挙メンバー**: - - `PYTHON` ("python") - - `TYPESCRIPT` ("typescript") - - `JAVASCRIPT` ("javascript") -## Position +* `PYTHON` ("python") + * `TYPESCRIPT` ("typescript") + * `JAVASCRIPT` ("javascript") + +## LspCompletionPosition \{#lspcompletionposition\} ```python -class Position() +class LspCompletionPosition() ``` -テキストドキュメント内のゼロ基準の位置を表し、行番号と文字オフセットで指定します。 +テキストドキュメントにおけるゼロ基準の補完位置を表し、行番号と文字オフセットで指定します。 **属性**: -- `line` _int_ - ドキュメント内のゼロ基準の行番号。 -- `character` _int_ - 行内のゼロ基準の文字オフセット。 +* `line` *int* - ドキュメント内のゼロ基準の行番号。 +* `character` *int* - 行内のゼロ基準の文字オフセット。 -#### Position.\_\_init\_\_ +#### LspCompletionPosition.__init__ \{#lspcompletionposition__init__\} ```python def __init__(line: int, character: int) ``` -新しい Position インスタンスを初期化します。 +新しい LspCompletionPosition インスタンスを初期化します。 **引数**: -- `line` _int_ - ドキュメント内のゼロ基準の行番号。 -- `character` _int_ - 行内のゼロ基準の文字オフセット。 - +* `line` *int* - ドキュメント内のゼロ基準の行番号。 +* `character` *int* - 行内のゼロ基準の文字オフセット。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/sync/object-storage.mdx b/apps/docs/src/content/docs/ja/python-sdk/sync/object-storage.mdx index 19ff4852e..5efd6e6c3 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/sync/object-storage.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/sync/object-storage.mdx @@ -3,7 +3,7 @@ title: "オブジェクトストレージ" hideTitleOnPage: true --- -## ObjectStorage +## ObjectStorage \{#objectstorage\} ```python class ObjectStorage() @@ -13,13 +13,13 @@ class ObjectStorage() **属性**: -- `endpoint_url` _str_ - オブジェクトストレージサービスのエンドポイントURL。 -- `aws_access_key_id` _str_ - オブジェクトストレージサービスのアクセスキーID。 -- `aws_secret_access_key` _str_ - オブジェクトストレージサービスのシークレットアクセスキー。 -- `aws_session_token` _str_ - オブジェクトストレージサービスのセッショントークン。短期認証情報に使用。 -- `bucket_name` _str_ - 使用するバケット名。既定値は "daytona-volume-builds"。 +* `endpoint_url` *str* - オブジェクトストレージサービスのエンドポイントURL。 +* `aws_access_key_id` *str* - オブジェクトストレージサービスのアクセスキーID。 +* `aws_secret_access_key` *str* - オブジェクトストレージサービスのシークレットアクセスキー。 +* `aws_session_token` *str* - オブジェクトストレージサービスのセッショントークン。短期認証情報に使用。 +* `bucket_name` *str* - 使用するバケット名。既定値は "daytona-volume-builds"。 -#### ObjectStorage.upload +#### ObjectStorage.upload \{#objectstorageupload\} ```python def upload(path: str, @@ -31,13 +31,10 @@ def upload(path: str, **引数**: -- `path` _str_ - アップロードするファイルのパス。 -- `organization_id` _str_ - 使用する組織ID。 -- `archive_base_path` _str_ - アーカイブのベースパス。 - +* `path` *str* - アップロードするファイルのパス。 +* `organization_id` *str* - 使用する組織ID。 +* `archive_base_path` *str* - アーカイブのベースパス。 **戻り値**: -- `str` - アップロードしたファイルのハッシュ。 - - +* `str` - アップロードしたファイルのハッシュ。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/sync/process.mdx b/apps/docs/src/content/docs/ja/python-sdk/sync/process.mdx index 4c8bf7c3a..5bc8139c3 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/sync/process.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/sync/process.mdx @@ -3,34 +3,34 @@ title: "プロセス" hideTitleOnPage: true --- -## プロセス +## プロセス \{#process\} ```python class Process() ``` -サンドボックス内でのプロセスおよびコード実行を扱います。 +サンドボックス内のプロセスおよびコード実行を管理します。 -#### Process.\_\_init\_\_ +#### Process.**init** \{#process__init__\} ```python -def __init__(sandbox_id: str, code_toolbox: SandboxPythonCodeToolbox, - toolbox_api: ToolboxApi, get_root_dir: Callable[[], str]) +def __init__(code_toolbox: SandboxPythonCodeToolbox, api_client: ProcessApi, + ensure_toolbox_url: Callable[[], None]) ``` 新しい Process インスタンスを初期化します。 **引数**: -- `sandbox_id` _str_ - サンドボックスの ID。 -- `code_toolbox` _SandboxPythonCodeToolbox_ - 言語固有のコード実行ツールボックス。 -- `toolbox_api` _ToolboxApi_ - サンドボックス操作用の API クライアント。 -- `get_root_dir` _Callable[[], str]_ - サンドボックスの既定のルートディレクトリを取得する関数。 +* `code_toolbox` *SandboxPythonCodeToolbox* - 言語別のコード実行ツールボックス。 +* `api_client` *ProcessApi* - プロセス操作用の API クライアント。 +* `ensure_toolbox_url` *Callable[[], None]* - ツールボックスの API URL が初期化済みであることを保証します。 + API クライアントの非公開メソッドを呼び出す前に必ず実行してください。 -#### Process.exec +#### Process.exec \{#processexec\} ```python -@intercept_errors(message_prefix="Failed to execute command: ") +@intercept_errors(message_prefix="コマンドの実行に失敗しました: ") def exec(command: str, cwd: Optional[str] = None, env: Optional[Dict[str, str]] = None, @@ -41,19 +41,19 @@ def exec(command: str, **引数**: -- `command` _str_ - 実行するシェルコマンド。 -- `cwd` _Optional[str]_ - コマンド実行時の作業ディレクトリ。指定しない場合はサンドボックスのルートディレクトリを使用します。既定はユーザーのルートディレクトリです。 -- `env` _Optional[Dict[str, str]]_ - コマンドに設定する環境変数。 -- `timeout` _Optional[int]_ - コマンドの完了を待機する最大時間(秒)。0 は無期限待機を意味します。 - +* `command` *str* - 実行するシェルコマンド。 +* `cwd` *Optional[str]* - コマンド実行時の作業ディレクトリ。未指定の場合は + サンドボックスの作業ディレクトリを使用します。 +* `env` *Optional[Dict[str, str]]* - コマンドに設定する環境変数。 +* `timeout` *Optional[int]* - コマンドの完了を待機する最大時間(秒)。 + 0 は無期限に待機します。 **戻り値**: -- `ExecuteResponse` - コマンド実行結果を含みます: - - exit_code: コマンドの終了ステータス - - result: コマンドの標準出力 - - artifacts: `stdout`(result と同じ)および `charts`(matplotlib のチャートのメタデータ)を含む ExecutionArtifacts オブジェクト - +* `ExecuteResponse` - コマンド実行結果を含みます: + * exit_code: コマンドの終了ステータス + * result: コマンドの標準出力 + * artifacts: `stdout`(result と同一)および `charts`(matplotlib のチャートメタデータ)を含む ExecutionArtifacts オブジェクト **例**: @@ -65,11 +65,11 @@ print(response.artifacts.stdout) # 出力: Hello # 作業ディレクトリを指定したコマンド result = sandbox.process.exec("ls", cwd="workspace/src") -# タイムアウト付きのコマンド +# タイムアウトを指定したコマンド result = sandbox.process.exec("sleep 10", timeout=5) ``` -#### Process.code\_run +#### Process.code_run \{#processcode_run\} ```python def code_run(code: str, @@ -77,27 +77,25 @@ def code_run(code: str, timeout: Optional[int] = None) -> ExecuteResponse ``` -適切な言語ランタイムを用いてサンドボックスでコードを実行します。 +適切な言語ランタイムを使ってサンドボックス内でコードを実行します。 **引数**: -- `code` _str_ - 実行するコード。 -- `params` _Optional[CodeRunParams]_ - コード実行のパラメータ。 -- `timeout` _Optional[int]_ - コードの完了を待機する最大時間(秒)。0 は無期限待機を意味します。 - +* `code` *str* - 実行するコード。 +* `params` *Optional[CodeRunParams]* - コード実行のパラメータ。 +* `timeout` *Optional[int]* - コードの完了を待つ最大時間(秒)。0 は無期限に待機します。 **戻り値**: -- `ExecuteResponse` - コード実行結果を含みます: - - exit_code: 実行の終了ステータス - - result: コードの標準出力 - - artifacts: `stdout`(result と同じ)および `charts`(matplotlib のチャートのメタデータ)を含む ExecutionArtifacts オブジェクト - +* `ExecuteResponse` - コード実行結果。以下を含みます: + * exit_code: 実行の終了ステータス + * result: コードの標準出力 + * artifacts: `stdout`(result と同一)および `charts`(matplotlib のチャートメタデータ)を含む ExecutionArtifacts オブジェクト **例**: ```python -# Python コードを実行 +# Pythonコードを実行 response = sandbox.process.code_run(''' x = 10 y = 20 @@ -105,8 +103,10 @@ response = sandbox.process.code_run(''' ''') print(response.artifacts.stdout) # 出力: Sum: 30 ``` - - Matplotlib のチャートは自動検出され、`ExecutionArtifacts` オブジェクトの `charts` フィールドで返されます。 + +Matplotlib のチャートは自動検出され、`ExecutionArtifacts` オブジェクトの +`charts` フィールドで返されます。 + ```python code = ''' import matplotlib.pyplot as plt @@ -144,21 +144,20 @@ if chart.type == ChartType.LINE and isinstance(chart, LineChart): print(f"Points: {element.points}") ``` -#### Process.create\_session +#### Process.create_session \{#processcreate_session\} ```python @intercept_errors(message_prefix="Failed to create session: ") def create_session(session_id: str) -> None ``` -サンドボックスに新しい常駐型のバックグラウンドセッションを作成します。 +サンドボックス内に新しい長時間稼働のバックグラウンドセッションを作成します。 -セッションはバックグラウンドプロセスで、コマンド間の状態を維持します。関連する複数のコマンド実行や環境の恒常的なセットアップが必要なシナリオに最適です。長時間実行のコマンドを走らせ、プロセスの状態を監視できます。 +セッションはコマンド間で状態を保持するバックグラウンドプロセスであり、複数の関連コマンドの実行や永続的な環境のセットアップが必要なシナリオに最適です。長時間実行するコマンドを走らせ、そのプロセスの状態を監視できます。 **引数**: -- `session_id` _str_ - 新規セッションの一意な識別子。 - +* `session_id` *str* - 新規セッションの一意の識別子。 **例**: @@ -171,7 +170,7 @@ session = sandbox.process.get_session(session_id) sandbox.process.delete_session(session_id) ``` -#### Process.get\_session +#### Process.get_session \{#processget_session\} ```python @intercept_errors(message_prefix="Failed to get session: ") @@ -182,15 +181,13 @@ def get_session(session_id: str) -> Session **引数**: -- `session_id` _str_ - 取得するセッションの一意な識別子。 - +* `session_id` *str* - 取得対象のセッションの一意識別子。 **戻り値**: -- `Session` - 次の情報を含むセッション情報: - - session_id: セッションの一意な識別子 - - commands: セッションで実行されたコマンドの一覧 - +* `Session` - 次の情報を含むセッション情報: + * session_id: セッションの一意識別子 + * commands: セッション内で実行されたコマンドのリスト **例**: @@ -200,7 +197,7 @@ for cmd in session.commands: print(f"Command: {cmd.command}") ``` -#### Process.get\_session\_command +#### Process.get_session_command \{#processget_session_command\} ```python @intercept_errors(message_prefix="Failed to get session command: ") @@ -211,17 +208,15 @@ def get_session_command(session_id: str, command_id: str) -> Command **引数**: -- `session_id` _str_ - セッションの一意な識別子。 -- `command_id` _str_ - コマンドの一意な識別子。 - +* `session_id` *str* - セッションの一意の識別子。 +* `command_id` *str* - コマンドの一意の識別子。 **戻り値**: -- `Command` - 次の情報を含むコマンド情報: - - id: コマンドの一意な識別子 - - command: 実行されたコマンド文字列 - - exit_code: 終了ステータス(完了している場合) - +* `Command` - 次を含むコマンド情報: + * id: コマンドの一意の識別子 + * command: 実行されたコマンド文字列 + * exit_code: コマンドの終了ステータス(完了済みの場合) **例**: @@ -231,7 +226,7 @@ if cmd.exit_code == 0: print(f"Command {cmd.command} completed successfully") ``` -#### Process.execute\_session\_command +#### Process.execute_session_command \{#processexecute_session_command\} ```python @intercept_errors(message_prefix="Failed to execute session command: ") @@ -245,59 +240,62 @@ def execute_session_command( **引数**: -- `session_id` _str_ - 使用するセッションの一意な識別子。 -- `req` _SessionExecuteRequest_ - 次を含むコマンド実行リクエスト: - - command: 実行するコマンド - - run_async: 非同期で実行するかどうか - +* `session_id` *str* - 使用するセッションの一意の識別子。 +* `req` *SessionExecuteRequest* - 次を含むコマンド実行リクエスト: + * command: 実行するコマンド + * run_async: 非同期で実行するかどうか **戻り値**: -- `SessionExecuteResponse` - 次を含むコマンド実行結果: - - cmd_id: 実行されたコマンドの一意な識別子 - - output: コマンドの出力(同期実行の場合) - - exit_code: 終了ステータス(同期実行の場合) - +* `SessionExecuteResponse` - 次を含むコマンド実行結果: + * cmd_id: 実行されたコマンドの一意の識別子 + * output: 結合されたコマンド出力(stdout と stderr)(同期実行時) + * stdout: コマンドの標準出力 + * stderr: コマンドの標準エラー出力 + * exit_code: コマンドの終了ステータス(同期実行時) **例**: ```python -# Execute commands in sequence, maintaining state +# セッション状態を維持しつつ順にコマンドを実行 session_id = "my-session" -# Change directory +# ディレクトリを変更 req = SessionExecuteRequest(command="cd /workspace") sandbox.process.execute_session_command(session_id, req) -# Create a file +# ファイルを作成 req = SessionExecuteRequest(command="echo 'Hello' > test.txt") sandbox.process.execute_session_command(session_id, req) -# Read the file +# ファイルを読み取る req = SessionExecuteRequest(command="cat test.txt") result = sandbox.process.execute_session_command(session_id, req) -print(result.output) # Prints: Hello +print(f"Command stdout: {result.stdout}") +print(f"Command stderr: {result.stderr}") ``` -#### Process.get\_session\_command\_logs +#### Process.get_session_command_logs \{#processget_session_command_logs\} ```python @intercept_errors(message_prefix="Failed to get session command logs: ") -def get_session_command_logs(session_id: str, command_id: str) -> str +def get_session_command_logs(session_id: str, + command_id: str) -> SessionCommandLogsResponse ``` -セッションで実行したコマンドのログを取得します。セッション内で実行したコマンドの出力(stdout と stderr)を完全に取得します。 +セッション内で実行されたコマンドのログを取得します。 **引数**: -- `session_id` _str_ - セッションの一意な識別子。 -- `command_id` _str_ - コマンドの一意な識別子。 - +* `session_id` *str* - セッションの一意の識別子 +* `command_id` *str* - コマンドの一意の識別子 **戻り値**: -- `str` - stdout と stderr の両方を含む完全なコマンド出力。 - +* `SessionCommandLogsResponse` - コマンドログ。以下を含みます: + * output: コマンド出力の統合(stdout と stderr) + * stdout: コマンドの標準出力 + * stderr: コマンドの標準エラー出力 **例**: @@ -306,26 +304,27 @@ logs = sandbox.process.get_session_command_logs( "my-session", "cmd-123" ) -print(f"Command output: {logs}") +print(f"Command stdout: {logs.stdout}") +print(f"Command stderr: {logs.stderr}") ``` -#### Process.get\_session\_command\_logs\_async +#### Process.get_session_command_logs_async \{#processget_session_command_logs_async\} ```python @intercept_errors(message_prefix="Failed to get session command logs: ") async def get_session_command_logs_async( - session_id: str, command_id: str, on_logs: Callable[[str], - None]) -> None + session_id: str, command_id: str, on_stdout: Callable[[str], None], + on_stderr: Callable[[str], None]) -> None ``` -セッションで実行されたコマンドのログを、利用可能になり次第、非同期で取得して処理します。 +セッション内で実行されたコマンドのログを、利用可能になり次第、非同期で取得・処理します。 **引数**: -- `session_id` _str_ - セッションの一意の識別子。 -- `command_id` _str_ - コマンドの一意の識別子。 -- `on_logs` _Callable[[str], None]_ - 受信したログチャンクを処理するコールバック関数。 - +* `session_id` *str* - セッションの一意の識別子。 +* `command_id` *str* - コマンドの一意の識別子。 +* `on_stdout` *Callable[[str], None]* - 受信した標準出力のログチャンクを処理するコールバック関数。 +* `on_stderr` *Callable[[str], None]* - 受信した標準エラー出力のログチャンクを処理するコールバック関数。 **例**: @@ -333,23 +332,23 @@ async def get_session_command_logs_async( await sandbox.process.get_session_command_logs_async( "my-session", "cmd-123", - lambda chunk: print(f"Log chunk: {chunk}") + lambda log: print(f"[STDOUT]: {log}"), + lambda log: print(f"[STDERR]: {log}"), ) ``` -#### Process.list\_sessions +#### Process.list_sessions \{#processlist_sessions\} ```python @intercept_errors(message_prefix="Failed to list sessions: ") def list_sessions() -> List[Session] ``` -サンドボックス内のすべてのセッションを一覧表示します。 +サンドボックス内のすべてのセッションを一覧します。 **戻り値**: -- `List[Session]` - サンドボックス内のすべてのセッションのリスト。 - +* `List[Session]` - サンドボックス内のすべてのセッションのリスト。 **例**: @@ -360,7 +359,7 @@ for session in sessions: print(f" Commands: {len(session.commands)}") ``` -#### Process.delete\_session +#### Process.delete_session \{#processdelete_session\} ```python @intercept_errors(message_prefix="Failed to delete session: ") @@ -371,22 +370,209 @@ def delete_session(session_id: str) -> None **引数**: -- `session_id` _str_ - 削除するセッションの一意の識別子。 - +* `session_id` *str* - 削除対象のセッションの一意識別子。 **例**: ```python -# Create and use a session +# セッションを作成して使用 sandbox.process.create_session("temp-session") -# ... use the session ... +# ... セッションを使用 ... -# Clean up when done +# 作業完了後にクリーンアップ sandbox.process.delete_session("temp-session") ``` +#### Process.create_pty_session \{#processcreate_pty_session\} + +```python +@intercept_errors(message_prefix="PTYセッションの作成に失敗しました: ") +def create_pty_session(id: str, + cwd: Optional[str] = None, + envs: Optional[Dict[str, str]] = None, + pty_size: Optional[PtySize] = None) -> PtyHandle +``` + +サンドボックス内で新しい PTY(擬似ターミナル)セッションを作成します。 + +コマンドの実行やユーザー入力の処理が可能な対話型ターミナルセッションを作成します。 +PTY セッションは実際のターミナル同様に動作し、コマンド履歴などの機能をサポートします。 + +**引数**: + +* `id` - PTY セッションの一意の識別子。サンドボックス内で一意である必要があります。 +* `cwd` - PTY セッションの作業ディレクトリ。指定がない場合はサンドボックスの作業ディレクトリが使用されます。 +* `env` - PTY セッションで設定する環境変数。サンドボックスのデフォルト環境変数とマージされます。 +* `pty_size` - 端末サイズの設定。指定がない場合は 80x24 がデフォルトです。 + +**戻り値**: + +* `PtyHandle` - 作成された PTY セッションを管理するためのハンドル。これを使用して入力の送信、 + 出力の受信、端末のリサイズ、セッションのライフサイクル管理を行います。 + +**例外**: + +* `DaytonaError` - PTY セッションの作成に失敗した場合、またはセッション ID が既に使用されている場合に発生します。 + +#### Process.connect_pty_session \{#processconnect_pty_session\} + +```python +@intercept_errors(message_prefix="PTYセッションの接続に失敗しました: ") +def connect_pty_session(session_id: str) -> PtyHandle +``` + +サンドボックス内の既存の PTY セッションに接続します。 + +既存の PTY セッションへの WebSocket 接続を確立し、既に作成済みのターミナルセッションと +対話できるようにします。 + +**引数**: + +* `session_id` - 接続先の PTY セッションを一意に識別する ID。 + +**戻り値**: + +* `PtyHandle` - 接続した PTY セッションを管理するためのハンドル。 + +**例外**: + +* `DaytonaError` - PTY セッションが存在しない、または接続に失敗した場合に発生します。 + +#### Process.list_pty_sessions \{#processlist_pty_sessions\} + +```python +@intercept_errors(message_prefix="PTYセッションの一覧取得に失敗しました: ") +def list_pty_sessions() -> List[PtySessionInfo] +``` + +サンドボックス内のすべての PTY セッションを一覧表示します。 + +このサンドボックス内のすべての PTY セッションの情報を取得します。 + +**戻り値**: + +* `List[PtySessionInfo]` - 各セッションの状態、作成時刻、設定に関する詳細を含む PTY セッション情報オブジェクトのリスト。 + +**例**: + +```python +# すべてのPTYセッションを一覧表示 +sessions = sandbox.process.list_pty_sessions() + +for session in sessions: + print(f"セッションID: {session.id}") + print(f"アクティブ: {session.active}") + print(f"作成日時: {session.created_at}") +``` + +#### Process.get_pty_session_info \{#processget_pty_session_info\} + +```python +@intercept_errors(message_prefix="PTYセッション情報の取得に失敗しました: ") +def get_pty_session_info(session_id: str) -> PtySessionInfo +``` + +特定の PTY セッションに関する詳細情報を取得します。 + +PTY セッションの現在の状態、構成、メタデータを含む包括的な情報を取得します。 + +**引数**: + +* `session_id` - 情報を取得する対象の PTY セッションの一意の識別子。 + +**返り値**: + +* `PtySessionInfo` - ID、状態、作成時刻、作業ディレクトリ、環境変数などを含む、PTY セッションの詳細情報。 + +**例外**: + +* `DaytonaError` - PTY セッションが存在しない場合に発生。 + +**例**: + +```python +# 特定のPTYセッションの詳細を取得 +session_info = sandbox.process.get_pty_session_info("my-session") + +print(f"セッションID: {session_info.id}") +print(f"アクティブ: {session_info.active}") +print(f"作業ディレクトリ: {session_info.cwd}") +print(f"ターミナルサイズ: {session_info.cols}x{session_info.rows}") +``` + +#### Process.kill_pty_session \{#processkill_pty_session\} + +```python +@intercept_errors(message_prefix="PTYセッションの強制終了に失敗しました: ") +def kill_pty_session(session_id: str) -> None +``` + +PTY セッションを終了し、その関連プロセスを停止します。 + +PTY セッションを強制終了し、関連するすべてのリソースをクリーンアップします。 +これにより、すべてのアクティブな接続が閉じられ、基盤となるシェルプロセスが強制終了されます。 +この操作は取り消せません。ターミナルセッション内の未保存の作業は失われます。 + +**引数**: + +* `session_id` - 終了する PTY セッションの一意の識別子。 + +**送出**: + +* `DaytonaError` - PTY セッションが存在しない、または終了できない場合。 + +**例**: + +```python +# 特定のPTYセッションを終了する +sandbox.process.kill_pty_session("my-session") + +# セッションが存在しないことを確認する +pty_sessions = sandbox.process.list_pty_sessions() +for pty_session in pty_sessions: + print(f"PTY session: {pty_session.id}") +``` + +#### Process.resize_pty_session \{#processresize_pty_session\} -## CodeRunParams +```python +@intercept_errors(message_prefix="PTYセッションのリサイズに失敗しました: ") +def resize_pty_session(session_id: str, pty_size: PtySize) -> PtySessionInfo +``` + +PTY セッションのターミナルサイズを変更します。 + +アクティブな PTY セッションのターミナルサイズを変更します。クライアント側のターミナルがリサイズされた場合や、出力要件に合わせて表示を調整する必要がある場合に役立ちます。 + +**引数**: + +* `session_id` - リサイズ対象の PTY セッションの一意の識別子。 +* `pty_size` - 目的の列数と行数を含む新しいターミナルサイズ。 + +**戻り値**: + +* `PtySessionInfo` - 新しいターミナルサイズを反映した更新後のセッション情報。 + +**例外**: + +* `DaytonaError` - PTY セッションが存在しない、またはリサイズ操作に失敗した場合。 + +**例**: + +```python +from daytona.common.pty import PtySize + +# PTYセッションをより大きなターミナルサイズにリサイズする +new_size = PtySize(rows=40, cols=150) +updated_info = sandbox.process.resize_pty_session("my-session", new_size) + +print(f"ターミナルが {updated_info.cols}x{updated_info.rows} にリサイズされました") + +# PtyHandleのresizeメソッドを使用することも可能です +pty_handle.resize(new_size) +``` + +## CodeRunParams \{#coderunparams\} ```python @dataclass @@ -397,25 +583,25 @@ class CodeRunParams() **属性**: -- `argv` _Optional[List[str]]_ - コマンドライン引数 -- `env` _Optional[Dict[str, str]]_ - 環境変数 +* `argv` *Optional[List[str]]* - コマンドライン引数 +* `env` *Optional[Dict[str, str]]* - 環境変数 -## SessionExecuteRequest +## SessionExecuteRequest \{#sessionexecuterequest\} ```python class SessionExecuteRequest(ApiSessionExecuteRequest, AsyncApiSessionExecuteRequest) ``` -セッションでコマンドを実行するためのリクエストです。 +セッション内でコマンドを実行するためのリクエストです。 **属性**: -- `command` _str_ - 実行するコマンド。 -- `run_async` _Optional[bool]_ - コマンドを非同期で実行するかどうか。 -- `var_async` _Optional[bool]_ - 非推奨。代わりに `run_async` を使用してください。 +* `command` *str* - 実行するコマンド。 +* `run_async` *Optional[bool]* - コマンドを非同期で実行するかどうか。 +* `var_async` *Optional[bool]* - 非推奨。代わりに `run_async` を使用してください。 -## 実行成果物 +## 実行成果物 (ExecutionArtifacts) \{#executionartifacts\} ```python class ExecutionArtifacts() @@ -425,20 +611,78 @@ class ExecutionArtifacts() **属性**: -- `stdout` _str_ - コマンドの標準出力。`ExecuteResponse` の `result` と同一 -- `charts` _Optional[List[Chart]]_ - matplotlib のチャートメタデータのリスト +* `stdout` *str* - コマンドの標準出力。`ExecuteResponse` の `result` と同一 +* `charts` *Optional[List[Chart]]* - matplotlib のチャートメタデータのリスト + +## ExecuteResponse(実行応答) \{#executeresponse\} + +```python +class ExecuteResponse(BaseModel) +``` + +コマンド実行の結果。 + +**属性**: + +* `exit_code` *int* - コマンド実行の終了コード +* `result` *str* - コマンド実行の出力 +* `artifacts` *Optional[ExecutionArtifacts]* - コマンド実行で生成されたアーティファクト + +## SessionExecuteResponse \{#sessionexecuteresponse\} + +```python +class SessionExecuteResponse(ApiSessionExecuteResponse) +``` + +セッションでのコマンド実行のレスポンス。 + +**属性**: + +* `output` *str* - コマンド実行の出力 +* `exit_code` *int* - コマンド実行の終了コード -## ExecuteResponse +## SessionCommandLogsResponse \{#sessioncommandlogsresponse\} ```python -class ExecuteResponse(ClientExecuteResponse) +class SessionCommandLogsResponse() ``` -コマンド実行のレスポンス。 +コマンドログのレスポンス。 **属性**: -- `exit_code` _int_ - コマンド実行の終了コード -- `result` _str_ - コマンド実行の出力 -- `artifacts` _Optional[ExecutionArtifacts]_ - コマンド実行の実行成果物 +* `output` *str* - コマンドの出力を結合したもの +* `stdout` *str* - コマンドの標準出力 +* `stderr` *str* - コマンドの標準エラー出力 + +#### parse_session_command_logs \{#parse_session_command_logs\} + +```python +def parse_session_command_logs(data: bytes) -> SessionCommandLogsResponse +``` + +結合された stdout/stderr の出力を、それぞれのストリームに分離して解析します。 + +**引数**: + +* `data` - STDOUT_PREFIX と STDERR_PREFIX のマーカーを含む結合ログのバイト列 + +**戻り値**: + +stdout と stderr が分離された SessionCommandLogsResponse + +#### demux_log \{#demux_log\} + +```python +def demux_log(data: bytes) -> tuple[bytes, bytes] +``` + +結合された stdout/stderr のログデータをデマルチプレックスします。 + +**引数**: + +* `data` - STDOUT_PREFIX および STDERR_PREFIX のマーカーを含む結合ログのバイト列 + +**戻り値**: +(stdout_bytes, stderr_bytes) のタプル \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/python-sdk/sync/sandbox.mdx b/apps/docs/src/content/docs/ja/python-sdk/sync/sandbox.mdx index 44a9d780c..dcfc8ee66 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/sync/sandbox.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/sync/sandbox.mdx @@ -3,124 +3,143 @@ title: "サンドボックス" hideTitleOnPage: true --- -## サンドボックス +## サンドボックス \{#sandbox\} ```python class Sandbox(SandboxDto) ``` -Daytona のサンドボックスを表します。 +Daytona サンドボックスを表します。 **属性**: -- `fs` _FileSystem_ - ファイルシステム操作インターフェース。 -- `git` _Git_ - Git 操作インターフェース。 -- `process` _Process_ - プロセス実行インターフェース。 -- `computer_use` _ComputerUse_ - デスクトップ自動化のためのコンピューター使用インターフェース。 -- `id` _str_ - サンドボックスの一意の識別子。 -- `organization_id` _str_ - サンドボックスの組織 ID。 -- `snapshot` _str_ - サンドボックスの作成に使用された Daytona のスナップショット。 -- `user` _str_ - サンドボックス内で稼働する OS ユーザー。 -- `env` _Dict[str, str]_ - サンドボックスで設定される環境変数。 -- `labels` _Dict[str, str]_ - サンドボックスに付与されたカスタムラベル。 -- `public` _bool_ - サンドボックスが公開アクセス可能かどうか。 -- `target` _str_ - サンドボックスが実行されるランナーのターゲット(リージョン)。 -- `cpu` _int_ - サンドボックスに割り当てられた CPU 数。 -- `gpu` _int_ - サンドボックスに割り当てられた GPU 数。 -- `memory` _int_ - サンドボックスに割り当てられたメモリ量(GiB)。 -- `disk` _int_ - サンドボックスに割り当てられたディスク容量(GiB)。 -- `state` _SandboxState_ - サンドボックスの現在の状態(例: "started"、"stopped")。 -- `error_reason` _str_ - サンドボックスがエラー状態の場合のエラーメッセージ。 -- `backup_state` _SandboxBackupStateEnum_ - サンドボックスのバックアップの現在の状態。 -- `backup_created_at` _str_ - バックアップが作成された日時。 -- `auto_stop_interval` _int_ - 自動停止の間隔(分)。 -- `auto_archive_interval` _int_ - 自動アーカイブの間隔(分)。 -- `auto_delete_interval` _int_ - 自動削除の間隔(分)。 -- `runner_domain` _str_ - サンドボックスのランナーのドメイン名。 -- `volumes` _List[str]_ - サンドボックスに接続されたボリューム。 -- `build_info` _str_ - 動的ビルドから作成された場合のサンドボックスのビルド情報。 -- `created_at` _str_ - サンドボックスが作成された日時。 -- `updated_at` _str_ - サンドボックスが最後に更新された日時。 -- `network_block_all` _bool_ - サンドボックスのすべてのネットワークアクセスをブロックするかどうか。 -- `network_allow_list` _str_ - サンドボックスで許可される CIDR ネットワークアドレスのカンマ区切りリスト。 - -#### Sandbox.\_\_init\_\_ - -```python -def __init__(sandbox_dto: SandboxDto, sandbox_api: SandboxApi, - toolbox_api: ToolboxApi, code_toolbox: SandboxCodeToolbox) -``` - -新しいサンドボックスインスタンスを初期化します。 +* `fs` *FileSystem* - ファイルシステム操作用インターフェース。 +* `git` *Git* - Git 操作用インターフェース。 +* `process` *Process* - プロセス実行用インターフェース。 +* `computer_use` *ComputerUse* - デスクトップ自動化のためのコンピューター使用用インターフェース。 +* `id` *str* - サンドボックスの一意の識別子。 +* `name` *str* - サンドボックス名。 +* `organization_id` *str* - サンドボックスの組織 ID。 +* `snapshot` *str* - サンドボックスの作成に使用された Daytona のスナップショット。 +* `user` *str* - サンドボックス内で実行中の OS ユーザー。 +* `env` *Dict[str, str]* - サンドボックスで設定される環境変数。 +* `labels` *Dict[str, str]* - サンドボックスに付与されるカスタムラベル。 +* `public` *bool* - サンドボックスが公開アクセス可能かどうか。 +* `target` *str* - サンドボックスが実行されるランナーのターゲット位置。 +* `cpu` *int* - サンドボックスに割り当てられた CPU 数。 +* `gpu` *int* - サンドボックスに割り当てられた GPU 数。 +* `memory` *int* - サンドボックスに割り当てられたメモリ量(GiB)。 +* `disk` *int* - サンドボックスに割り当てられたディスク容量(GiB)。 +* `state` *SandboxState* - サンドボックスの現在の状態(例: "started", "stopped")。 +* `error_reason` *str* - サンドボックスがエラー状態の場合のエラーメッセージ。 +* `backup_state` *SandboxBackupStateEnum* - サンドボックスのバックアップの現在の状態。 +* `backup_created_at` *str* - バックアップの作成時刻。 +* `auto_stop_interval` *int* - 自動停止までの間隔(分)。 +* `auto_archive_interval` *int* - 自動アーカイブまでの間隔(分)。 +* `auto_delete_interval` *int* - 自動削除までの間隔(分)。 +* `volumes` *List[str]* - サンドボックスに接続されたボリューム。 +* `build_info` *str* - 動的ビルドから作成された場合のビルド情報。 +* `created_at` *str* - サンドボックスの作成時刻。 +* `updated_at` *str* - サンドボックスの最終更新時刻。 +* `network_block_all` *bool* - サンドボックスのすべてのネットワークアクセスをブロックするかどうか。 +* `network_allow_list` *str* - サンドボックスで許可される CIDR ネットワークアドレスのカンマ区切りリスト。 + +#### サンドボックス.**init** \{#sandbox__init__\} + +```python +def __init__(sandbox_dto: SandboxDto, toolbox_api: ApiClient, + sandbox_api: SandboxApi, code_toolbox: SandboxCodeToolbox, + get_toolbox_base_url: Callable[[], str]) +``` + +新しいサンドボックス インスタンスを初期化します。 **引数**: -- `id` _str_ - サンドボックスの一意の識別子。 -- `instance` _SandboxInstance_ - 基盤となるサンドボックスインスタンス。 -- `sandbox_api` _SandboxApi_ - サンドボックス操作用の API クライアント。 -- `toolbox_api` _ToolboxApi_ - ツールボックス操作用の API クライアント。 -- `code_toolbox` _SandboxCodeToolbox_ - 言語固有のツールボックス実装。 +* `sandbox_dto` *SandboxDto* - API から取得したサンドボックスのデータ。 +* `toolbox_api` *ApiClient* - ツールボックス操作用の API クライアント。 +* `sandbox_api` *SandboxApi* - サンドボックス操作用の API クライアント。 +* `code_toolbox` *SandboxCodeToolbox* - 言語別のツールボックス実装。 +* `get_toolbox_base_url` *Callable[[], str]* - ツールボックスのベース URL を取得する関数。 -#### Sandbox.refresh\_data +#### Sandbox.refresh_data \{#sandboxrefresh_data\} ```python +@intercept_errors(message_prefix="サンドボックスデータの更新に失敗しました: ") def refresh_data() -> None ``` -API からサンドボックスのデータをリフレッシュします。 +API からサンドボックスのデータを最新状態に更新します。 **例**: ```python sandbox.refresh_data() -print(f"Sandbox {sandbox.id}:") -print(f"State: {sandbox.state}") -print(f"Resources: {sandbox.cpu} CPU, {sandbox.memory} GiB RAM") +print(f"サンドボックス {sandbox.id}:") +print(f"状態: {sandbox.state}") +print(f"リソース: {sandbox.cpu} CPU、{sandbox.memory} GiB RAM") ``` -#### Sandbox.get\_user\_root\_dir +#### Sandbox.get_user_home_dir \{#sandboxget_user_home_dir\} ```python -@intercept_errors(message_prefix="Failed to get sandbox root directory: ") -def get_user_root_dir() -> str +@intercept_errors(message_prefix="ユーザーホームディレクトリの取得に失敗しました: ") +def get_user_home_dir() -> str ``` -サンドボックス内でログイン中のユーザーのルートディレクトリパスを取得します。 +サンドボックス内にあるユーザーのホームディレクトリのパスを取得します。 **戻り値**: -- `str` - ログイン中のユーザー用サンドボックスのルートディレクトリの絶対パス。 - +* `str` - サンドボックス内のユーザーのホームディレクトリの絶対パス。 **例**: ```python -root_dir = sandbox.get_user_root_dir() -print(f"Sandbox root: {root_dir}") +user_home_dir = sandbox.get_user_home_dir() +print(f"サンドボックスユーザーホーム: {user_home_dir}") +``` + +#### Sandbox.get_work_dir \{#sandboxget_work_dir\} + +```python +@intercept_errors(message_prefix="作業ディレクトリパスの取得に失敗しました: ") +def get_work_dir() -> str ``` -#### Sandbox.create\_lsp\_server +サンドボックス内の作業ディレクトリのパスを取得します。 + +**戻り値**: + +* `str` - サンドボックスの作業ディレクトリへの絶対パス。Dockerfile に WORKDIR が指定されていればそれを使用し、指定がなければユーザーのホームディレクトリを使用します。 + +**例**: + +```python +work_dir = sandbox.get_work_dir() +print(f"サンドボックス作業ディレクトリ: {work_dir}") +``` + +#### Sandbox.create_lsp_server \{#sandboxcreate_lsp_server\} ```python def create_lsp_server(language_id: LspLanguageId, path_to_project: str) -> LspServer ``` -新しい Language Server Protocol (LSP) サーバーインスタンスを作成します。 +新しい Language Server Protocol (LSP) サーバー インスタンスを作成します。 -LSP サーバーは、コード補完、診断などの言語固有の機能を提供します。 +LSP サーバーは、コード補完や診断などの言語固有の機能を提供します。 **引数**: -- `language_id` _LspLanguageId_ - 言語サーバーの種類(例: LspLanguageId.PYTHON)。 -- `path_to_project` _str_ - プロジェクトのルートディレクトリへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 - +* `language_id` *LspLanguageId* - 言語サーバーの種類(例: LspLanguageId.PYTHON)。 +* `path_to_project` *str* - プロジェクトのルートディレクトリへのパス。相対パスは + サンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `LspServer` - 指定した言語向けに構成された新しい LSP サーバーインスタンス。 - +* `LspServer` - 指定した言語向けに構成された新しい LSP サーバー インスタンス。 **例**: @@ -128,26 +147,24 @@ LSP サーバーは、コード補完、診断などの言語固有の機能を lsp = sandbox.create_lsp_server("python", "workspace/project") ``` -#### Sandbox.set\_labels +#### Sandbox.set_labels \{#sandboxset_labels\} ```python -@intercept_errors(message_prefix="Failed to set labels: ") +@intercept_errors(message_prefix="ラベルの設定に失敗しました: ") def set_labels(labels: Dict[str, str]) -> Dict[str, str] ``` -サンドボックスにラベルを設定します。 +サンドボックスのラベルを設定します。 -ラベルはサンドボックスを整理・識別するために使用できるキーと値のペアです。 +ラベルは、サンドボックスを整理・識別するためのキーと値のペアです。 **引数**: -- `labels` _Dict[str, str]_ - サンドボックスのラベルを表すキーと値のペアのディクショナリ。 - +* `labels` *Dict[str, str]* - サンドボックスのラベルを表すキーと値ペアの辞書。 **戻り値**: - Dict[str, str]: 更新後のサンドボックスのラベルを含むディクショナリ。 - +Dict[str, str]: 更新後のサンドボックスのラベルを含む辞書。 **例**: @@ -157,45 +174,43 @@ new_labels = sandbox.set_labels({ "environment": "development", "team": "backend" }) -print(f"Updated labels: {new_labels}") +print(f"更新されたラベル: {new_labels}") ``` -#### Sandbox.start +#### Sandbox.start \{#sandboxstart\} ```python -@intercept_errors(message_prefix="Failed to start sandbox: ") +@intercept_errors(message_prefix="サンドボックスの開始に失敗しました: ") @with_timeout(error_message=lambda self, timeout: ( - f"Sandbox {self.id} failed to start within the {timeout} seconds timeout period" + f"サンドボックス {self.id} は {timeout} 秒のタイムアウト期間内に開始できませんでした" )) def start(timeout: Optional[float] = 60) ``` -サンドボックスを起動し、準備完了になるまで待機します。 +サンドボックスを起動し、使用可能になるまで待機します。 **引数**: -- `timeout` _Optional[float]_ - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒。 - +* `timeout` *Optional[float]* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。既定値は 60 秒です。 -**送出**: +**例外**: -- `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの起動に失敗/タイムアウトした場合。 - +* `DaytonaError` - `timeout` が負の場合、またはサンドボックスの起動に失敗した場合やタイムアウトした場合。 **例**: ```python sandbox = daytona.get_current_sandbox("my-sandbox") -sandbox.start(timeout=40) # 最大 40 秒待機 -print("Sandbox started successfully") +sandbox.start(timeout=40) # 最大40秒待機 +print("サンドボックスが正常に開始されました") ``` -#### Sandbox.stop +#### Sandbox.stop \{#sandboxstop\} ```python -@intercept_errors(message_prefix="Failed to stop sandbox: ") +@intercept_errors(message_prefix="サンドボックスの停止に失敗しました: ") @with_timeout(error_message=lambda self, timeout: ( - f"Sandbox {self.id} failed to stop within the {timeout} seconds timeout period" + f"サンドボックス {self.id} は {timeout} 秒のタイムアウト期間内に停止できませんでした" )) def stop(timeout: Optional[float] = 60) ``` @@ -204,26 +219,24 @@ def stop(timeout: Optional[float] = 60) **引数**: -- `timeout` _Optional[float]_ - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒。 - +* `timeout` *Optional[float]* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒です。 -**送出**: +**例外**: -- `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの停止に失敗/タイムアウトした場合。 - +* `DaytonaError` - タイムアウトが負の値の場合、サンドボックスの停止に失敗した場合、またはタイムアウトした場合 **例**: ```python sandbox = daytona.get_current_sandbox("my-sandbox") sandbox.stop() -print("Sandbox stopped successfully") +print("サンドボックスが正常に停止されました") ``` -#### Sandbox.delete +#### Sandbox.delete \{#sandboxdelete\} ```python -@intercept_errors(message_prefix="Failed to remove sandbox: ") +@intercept_errors(message_prefix="サンドボックスの削除に失敗しました: ") def delete(timeout: Optional[float] = 60) -> None ``` @@ -231,78 +244,74 @@ def delete(timeout: Optional[float] = 60) -> None **引数**: -- `timeout` _Optional[float]_ - サンドボックス削除のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - デフォルトは 60 秒。 +* `timeout` *Optional[float]* - サンドボックス削除のタイムアウト(秒)。0 はタイムアウトなしを意味します。 + デフォルトは 60 秒です。 -#### Sandbox.wait\_for\_sandbox\_start +#### Sandbox.wait_for_sandbox_start \{#sandboxwait_for_sandbox_start\} ```python @intercept_errors( - message_prefix="Failure during waiting for sandbox to start: ") + message_prefix="サンドボックスの開始待機中に失敗: ") @with_timeout(error_message=lambda self, timeout: ( - f"Sandbox {self.id} failed to become ready within the {timeout} seconds timeout period" + f"サンドボックス {self.id} は {timeout} 秒のタイムアウト期間内に準備完了になりませんでした" )) def wait_for_sandbox_start(timeout: Optional[float] = 60) -> None ``` -サンドボックスが「started」状態になるまで待機します。サンドボックスのステータスをポーリングし、 -「started」状態に達するか、エラーが発生するか、タイムアウトするまで待機します。 +サンドボックスが「started」状態に到達するまで待機します。サンドボックスのステータスをポーリングし、「started」状態に達するか、エラーが発生するか、タイムアウトするまで続行します。 **引数**: -- `timeout` _Optional[float]_ - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒。 - +* `timeout` *Optional[float]* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒。 -**送出**: +**例外**: -- `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの起動に失敗/タイムアウトした場合。 +* `DaytonaError` - タイムアウトが負の値の場合、サンドボックスの起動に失敗した場合、またはタイムアウトした場合 -#### Sandbox.wait\_for\_sandbox\_stop +#### Sandbox.wait_for_sandbox_stop \{#sandboxwait_for_sandbox_stop\} ```python @intercept_errors( - message_prefix="Failure during waiting for sandbox to stop: ") + message_prefix="サンドボックスの停止待機中に失敗: ") @with_timeout(error_message=lambda self, timeout: ( - f"Sandbox {self.id} failed to become stopped within the {timeout} seconds timeout period" + f"サンドボックス {self.id} は {timeout} 秒のタイムアウト期間内に停止できませんでした" )) def wait_for_sandbox_stop(timeout: Optional[float] = 60) -> None ``` -サンドボックスが「stopped」状態になるまで待機します。サンドボックスのステータスをポーリングし、 -「stopped」状態に達するか、エラーが発生するか、タイムアウトするまで待機します。サンドボックスが停止するまで最長 60 秒待機します。 +サンドボックスが「stopped」状態に到達するまで待機します。サンドボックスのステータスをポーリングし、 +「stopped」状態になるか、エラーが発生するか、タイムアウトするまで継続します。サンドボックスが停止するまで最大60秒間待機します。 +停止後に自動的に削除される一時的なサンドボックスを考慮し、「destroyed」を「stopped」と同等として扱います。 **引数**: -- `timeout` _Optional[float]_ - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。デフォルトは 60 秒。 - +* `timeout` *Optional[float]* - 秒単位の最大待機時間。0 はタイムアウトなしを意味します。既定値は 60 秒。 -**送出**: +**例外**: -- `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの停止に失敗/タイムアウトした場合。 +* `DaytonaError` - timeout が負の場合、サンドボックスの停止に失敗した場合、またはタイムアウトした場合。 -#### Sandbox.set\_autostop\_interval +#### Sandbox.set_autostop_interval \{#sandboxset_autostop_interval\} ```python -@intercept_errors(message_prefix="Failed to set auto-stop interval: ") +@intercept_errors(message_prefix="自動停止間隔の設定に失敗しました: ") def set_autostop_interval(interval: int) -> None ``` サンドボックスの自動停止間隔を設定します。 -サンドボックスは、指定した間隔のあいだアイドル状態(新しいイベントなし)が続くと自動的に停止します。 -イベントには、SDK を介したサンドボックスとの状態変更や操作が含まれます。 +指定した間隔のあいだアイドル状態(新しいイベントなし)が続くと、サンドボックスは自動的に停止します。 +イベントには、SDK を介したサンドボックスの状態変更や操作が含まれます。 サンドボックスのプレビュー経由の操作は含まれません。 **引数**: -- `interval` _int_ - 自動停止までの非アクティブ時間(分)。 - 0 に設定すると自動停止を無効化します。デフォルトは 15。 - +* `interval` *int* - 自動停止までの非アクティブな時間(分)。 + 0 に設定すると自動停止を無効化します。既定値は 15。 **送出**: -- `DaytonaError` - interval が負の場合 - +* `DaytonaError` - interval が負の値の場合 **例**: @@ -313,27 +322,25 @@ sandbox.set_autostop_interval(60) sandbox.set_autostop_interval(0) ``` -#### Sandbox.set\_auto\_archive\_interval +#### Sandbox.set_auto_archive_interval \{#sandboxset_auto_archive_interval\} ```python -@intercept_errors(message_prefix="Failed to set auto-archive interval: ") +@intercept_errors(message_prefix="自動アーカイブ間隔の設定に失敗しました: ") def set_auto_archive_interval(interval: int) -> None ``` サンドボックスの自動アーカイブ間隔を設定します。 -サンドボックスは、指定した間隔のあいだ連続して停止状態が続くと自動的にアーカイブされます。 +指定した間隔のあいだ連続して停止状態が続くと、サンドボックスは自動的にアーカイブされます。 **引数**: -- `interval` _int_ - 連続して停止してから自動アーカイブされるまでの分数。 - 0 に設定すると最大間隔になります。デフォルトは 7 日。 - +* `interval` *int* - 連続して停止してから自動アーカイブされるまでの分(分単位)。 + 最大間隔にするには 0 を指定します。既定値は 7 日です。 **送出**: -- `DaytonaError` - interval が負の場合 - +* `DaytonaError` - interval が負の場合 **例**: @@ -344,80 +351,129 @@ sandbox.set_auto_archive_interval(60) sandbox.set_auto_archive_interval(0) ``` -#### Sandbox.set\_auto\_delete\_interval +#### Sandbox.set_auto_delete_interval \{#sandboxset_auto_delete_interval\} ```python -@intercept_errors(message_prefix="Failed to set auto-delete interval: ") +@intercept_errors(message_prefix="自動削除間隔の設定に失敗しました: ") def set_auto_delete_interval(interval: int) -> None ``` サンドボックスの自動削除間隔を設定します。 -サンドボックスは、指定した間隔のあいだ連続して停止状態が続くと自動的に削除されます。 +指定した間隔のあいだ連続して停止状態が続くと、サンドボックスは自動的に削除されます。 **引数**: -- `interval` _int_ - 連続して停止してから自動削除されるまでの分数。 - 負の値に設定すると自動削除を無効化します。0 に設定すると停止時に即時削除します。 +* `interval` *int* - 連続して停止してから自動削除されるまでの時間(分)。 + 自動削除を無効にするには負の値を設定します。停止と同時に即時削除するには 0 を設定します。 既定では自動削除は無効です。 - **例**: ```python # 1時間後に自動削除 sandbox.set_auto_delete_interval(60) -# または停止時に即時削除 +# または停止時に即座に削除 sandbox.set_auto_delete_interval(0) # または自動削除を無効化 sandbox.set_auto_delete_interval(-1) ``` -#### Sandbox.get\_preview\_link +#### Sandbox.get_preview_link \{#sandboxget_preview_link\} ```python -@intercept_errors(message_prefix="Failed to get preview link: ") +@intercept_errors(message_prefix="プレビューリンクの取得に失敗しました: ") def get_preview_link(port: int) -> PortPreviewUrl ``` -指定したポートのサンドボックスのプレビューリンクを取得します。ポートが閉じている場合は -自動的に開かれます。プライベートなサンドボックスでは、URL にアクセス権を与える -トークンが含まれます。 +指定したポートのサンドボックスに対するプレビューリンクを取得します。ポートが閉じている場合は自動的に開きます。プライベートなサンドボックスの場合は、URL へのアクセスを許可するトークンが含まれます。 **引数**: -- `port` _int_ - プレビューリンクを開くポート。 - +* `port` *int* - プレビューリンクを公開するポート。 -**返り値**: +**戻り値**: -- `PortPreviewUrl` - プレビューリンクのレスポンスオブジェクト。`url` - と(プライベートなサンドボックスにアクセスするための)`token` を含みます。 - +* `PortPreviewUrl` - プレビューリンクのレスポンスオブジェクト。`url` と + `token`(プライベートなサンドボックスにアクセスするため)を含みます。 **例**: ```python preview_link = sandbox.get_preview_link(3000) -print(f"Preview URL: {preview_link.url}") -print(f"Token: {preview_link.token}") +print(f"プレビューURL: {preview_link.url}") +print(f"トークン: {preview_link.token}") ``` -#### Sandbox.archive +#### Sandbox.archive \{#sandboxarchive\} ```python -@intercept_errors(message_prefix="Failed to archive sandbox: ") +@intercept_errors(message_prefix="サンドボックスのアーカイブに失敗しました: ") def archive() -> None ``` -サンドボックスをアーカイブし、非アクティブ化して状態を保持します。サンドボックスが -アーカイブされると、ファイルシステム全体の状態はコスト効率の高いオブジェクトストレージに移動され、 -長期間にわたりサンドボックスを利用可能な状態に保つことができます。アーカイブ状態と -停止状態のトレードオフは、アーカイブされたサンドボックスの起動には、そのサイズに応じて -より時間がかかる点です。アーカイブする前にサンドボックスは停止している必要があります。 +サンドボックスをアーカイブし、非アクティブ化して状態を保持します。サンドボックスを +アーカイブすると、ファイルシステム全体の状態がコスト効率の高いオブジェクトストレージに移され、 +長期間にわたりサンドボックスを利用可能な状態で保持できます。アーカイブ状態と停止状態のトレードオフは、 +サンドボックスのサイズに応じて、アーカイブされたサンドボックスの起動により時間がかかる点です。 +アーカイブする前にサンドボックスを停止する必要があります。 + +#### Sandbox.create_ssh_access \{#sandboxcreate_ssh_access\} + +```python +@intercept_errors(message_prefix="SSHアクセスの作成に失敗しました: ") +def create_ssh_access( + expires_in_minutes: Optional[int] = None) -> SshAccessDto +``` + +サンドボックスのSSHアクセストークンを作成します。 +**引数**: + +* `expires_in_minutes` *Optional[int]* - SSHアクセストークンの有効期間(分)。 + +#### Sandbox.revoke_ssh_access \{#sandboxrevoke_ssh_access\} + +```python +@intercept_errors(message_prefix="SSHアクセスの取り消しに失敗しました: ") +def revoke_ssh_access(token: str) -> None +``` + +サンドボックスのSSHアクセス・トークンを取り消します。 -## リソース +**引数**: + +* `token` *str* - 取り消すトークン。 + +#### Sandbox.validate_ssh_access \{#sandboxvalidate_ssh_access\} + +```python +@intercept_errors(message_prefix="SSHアクセスの検証に失敗しました: ") +def validate_ssh_access(token: str) -> SshAccessValidationDto +``` + +サンドボックスのSSHアクセス用トークンを検証します。 + +**引数**: + +* `token` *str* - 検証対象のトークン。 + +## ページネートされたサンドボックス \{#paginatedsandboxes\} + +```python +class PaginatedSandboxes(PaginatedSandboxesDto) +``` + +Daytona のサンドボックスに対するページネーション付きの一覧を表します。 + +**属性**: + +* `items` *List[Sandbox]* - 現在のページに含まれるサンドボックス インスタンスの一覧。 +* `total` *int* - 全ページ合計のサンドボックス数。 +* `page` *int* - 現在のページ番号。 +* `total_pages` *int* - 総ページ数。 + +## リソース \{#resources\} ```python @dataclass @@ -428,11 +484,10 @@ class Resources() **属性**: -- `cpu` _Optional[int]_ - 割り当てる CPU コア数。 -- `memory` _Optional[int]_ - 割り当てるメモリ容量(GiB)。 -- `disk` _Optional[int]_ - 割り当てるディスク容量(GiB)。 -- `gpu` _Optional[int]_ - 割り当てる GPU 数。 - +* `cpu` *Optional[int]* - 割り当てるCPUコア数。 +* `memory` *Optional[int]* - 割り当てるメモリ容量(GiB)。 +* `disk` *Optional[int]* - 割り当てるディスク容量(GiB)。 +* `gpu` *Optional[int]* - 割り当てるGPU数。 **例**: @@ -440,7 +495,7 @@ class Resources() resources = Resources( cpu=2, memory=4, # 4GiB RAM - disk=20, # 20GiB disk + disk=20, # 20GiB ディスク gpu=1 ) params = CreateSandboxFromImageParams( @@ -449,4 +504,3 @@ params = CreateSandboxFromImageParams( resources=resources ) ``` - diff --git a/apps/docs/src/content/docs/ja/python-sdk/sync/snapshot.mdx b/apps/docs/src/content/docs/ja/python-sdk/sync/snapshot.mdx index f22416dce..5ccc53a00 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/sync/snapshot.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/sync/snapshot.mdx @@ -3,108 +3,109 @@ title: "スナップショット" hideTitleOnPage: true --- -## スナップショット +## スナップショット \{#snapshot\} ```python class Snapshot(SnapshotDto) ``` -事前に構成されたサンドボックスである Daytona のスナップショットを表します。 +事前構成済みのサンドボックスである Daytona のスナップショットを表します。 **属性**: -- `id` _StrictStr_ - スナップショットの一意の識別子。 -- `organization_id` _Optional[StrictStr]_ - スナップショットの組織ID。 -- `general` _Optional[bool]_ - スナップショットが汎用かどうか。 -- `name` _StrictStr_ - スナップショット名。 -- `image_name` _StrictStr_ - スナップショットのイメージ名。 -- `state` _StrictStr_ - スナップショットの状態。 -- `size` _Optional[Union[StrictFloat, StrictInt]]_ - スナップショットのサイズ。 -- `entrypoint` _Optional[List[str]]_ - スナップショットのエントリポイント。 -- `cpu` _Union[StrictFloat, StrictInt]_ - スナップショットの CPU。 -- `gpu` _Union[StrictFloat, StrictInt]_ - スナップショットの GPU。 -- `mem` _Union[StrictFloat, StrictInt]_ - スナップショットのメモリ(GiB)。 -- `disk` _Union[StrictFloat, StrictInt]_ - スナップショットのディスク(GiB)。 -- `error_reason` _Optional[StrictStr]_ - スナップショットのエラー理由。 -- `created_at` _StrictStr_ - スナップショットの作成時刻。 -- `updated_at` _StrictStr_ - スナップショットの最終更新時刻。 -- `last_used_at` _StrictStr_ - スナップショットの最終使用時刻。 - - -## SnapshotService +* `id` *StrictStr* - スナップショットの一意の識別子。 +* `organization_id` *Optional[StrictStr]* - スナップショットの所属する組織 ID。 +* `general` *Optional[bool]* - スナップショットが汎用かどうか。 +* `name` *StrictStr* - スナップショット名。 +* `image_name` *StrictStr* - スナップショットのイメージ名。 +* `state` *StrictStr* - スナップショットの状態。 +* `size` *Optional[Union[StrictFloat, StrictInt]]* - スナップショットのサイズ。 +* `entrypoint` *Optional[List[str]]* - スナップショットのエントリポイント。 +* `cpu` *Union[StrictFloat, StrictInt]* - スナップショットの CPU 仕様。 +* `gpu` *Union[StrictFloat, StrictInt]* - スナップショットの GPU 仕様。 +* `mem` *Union[StrictFloat, StrictInt]* - スナップショットのメモリ(GiB)。 +* `disk` *Union[StrictFloat, StrictInt]* - スナップショットのディスク(GiB)。 +* `error_reason` *Optional[StrictStr]* - エラー理由。 +* `created_at` *StrictStr* - 作成時刻(タイムスタンプ)。 +* `updated_at` *StrictStr* - 最終更新時刻(タイムスタンプ)。 +* `last_used_at` *StrictStr* - 最終使用時刻(タイムスタンプ)。 + +## スナップショットサービス \{#snapshotservice\} ```python class SnapshotService() ``` -Daytonaのスナップショットを管理するサービス。スナップショットの一覧、取得、作成、削除に使用できます。 +Daytonaのスナップショットを管理するサービス。スナップショットの一覧表示、取得、作成、削除に利用できます。 -#### SnapshotService.list +#### SnapshotService.list \{#snapshotservicelist\} ```python -@intercept_errors(message_prefix="Failed to list snapshots: ") -def list() -> List[Snapshot] +@intercept_errors(message_prefix="スナップショットの一覧取得に失敗しました: ") +def list(page: Optional[int] = None, + limit: Optional[int] = None) -> PaginatedSnapshots ``` -すべてのスナップショットを一覧します。 +スナップショットのページ分割された一覧を返します。 -**Returns**: +**引数**: -- `List[Snapshot]` - すべてのスナップショットのリスト。 - +* `page` *Optional[int]* - ページ番号(1から開始)。 +* `limit` *Optional[int]* - 1ページあたりの最大件数。 -**Example**: +**戻り値**: + +* `PaginatedSnapshots` - ページ分割されたスナップショットの一覧。 + +**例**: ```python daytona = Daytona() -snapshots = daytona.snapshot.list() -for snapshot in snapshots: +result = daytona.snapshot.list(page=2, limit=10) +for snapshot in result.items: print(f"{snapshot.name} ({snapshot.image_name})") ``` -#### SnapshotService.delete +#### SnapshotService.delete \{#snapshotservicedelete\} ```python -@intercept_errors(message_prefix="Failed to delete snapshot: ") +@intercept_errors(message_prefix="スナップショットの削除に失敗しました: ") def delete(snapshot: Snapshot) -> None ``` スナップショットを削除します。 -**Arguments**: +**引数**: -- `snapshot` _Snapshot_ - 削除するスナップショット。 - +* `snapshot` *スナップショット* - 削除するスナップショット。 -**Example**: +**例**: ```python daytona = Daytona() snapshot = daytona.snapshot.get("test-snapshot") daytona.snapshot.delete(snapshot) -print("Snapshot deleted") +print("スナップショットが削除されました") ``` -#### SnapshotService.get +#### SnapshotService.get \{#snapshotserviceget\} ```python -@intercept_errors(message_prefix="Failed to get snapshot: ") +@intercept_errors(message_prefix="スナップショットの取得に失敗しました: ") def get(name: str) -> Snapshot ``` -名前でスナップショットを取得します。 +名前を指定してスナップショットを取得します。 -**Arguments**: +**引数**: -- `name` _str_ - 取得するスナップショットの名前。 - +* `name` *str* - 取得するスナップショットの名前。 -**Returns**: +**戻り値**: -- `Snapshot` - 取得したスナップショットオブジェクト。 - +* `Snapshot` - スナップショットのオブジェクト。 -**Example**: +**例**: ```python daytona = Daytona() @@ -112,27 +113,27 @@ snapshot = daytona.snapshot.get("test-snapshot-name") print(f"{snapshot.name} ({snapshot.image_name})") ``` -#### SnapshotService.create +#### SnapshotService.create \{#snapshotservicecreate\} ```python -@intercept_errors(message_prefix="Failed to create snapshot: ") +@intercept_errors(message_prefix="スナップショットの作成に失敗しました: ") @with_timeout(error_message=lambda self, timeout: ( - f"Failed to create snapshot within {timeout} seconds timeout period.")) + f"タイムアウト期間{timeout}秒以内にスナップショットを作成できませんでした。")) def create(params: CreateSnapshotParams, *, on_logs: Callable[[str], None] = None, timeout: Optional[float] = 0) -> Snapshot ``` -指定されたImage定義から新しいスナップショットを作成し、登録します。 +指定された Image 定義から新しいスナップショットを作成して登録します。 -**Arguments**: +**引数**: -- `params` _CreateSnapshotParams_ - スナップショット作成用のパラメータ。 -- `on_logs` _Callable[[str], None]_ - スナップショット作成時のログを処理するコールバック関数。 -- `timeout` _Optional[float]_ - 既定ではタイムアウトなし。タイムアウト秒数(0は無制限)。 +* `params` *CreateSnapshotParams* - スナップショット作成用のパラメータ。 +* `on_logs` *Callable[[str], None]* - スナップショット作成時のログを処理するコールバック関数。 +* `timeout` *Optional[float]* - 既定値はタイムアウトなし。秒で指定(0 はタイムアウトなし)。 -**Example**: +**例**: ```python image = Image.debianSlim('3.12').pipInstall('numpy') @@ -142,23 +143,23 @@ daytona.snapshot.create( ) ``` -#### SnapshotService.activate +#### SnapshotService.activate \{#snapshotserviceactivate\} ```python -def activate(snapshot: Snapshot) -> Snapshot +def activate(snapshot: スナップショット) -> スナップショット ``` -スナップショットをアクティブ化します。 +スナップショットを有効化します。 -**Arguments**: +**引数**: -- `snapshot` _Snapshot_ - 対象のスナップショットインスタンス。 +* `snapshot` *スナップショット* - スナップショットのインスタンス。 -**Returns**: +**戻り値**: -- `Snapshot` - アクティブ化されたスナップショットインスタンス。 +* `Snapshot` - 有効化されたスナップショットのインスタンス。 -#### SnapshotService.process\_image\_context +#### SnapshotService.process_image_context \{#snapshotserviceprocess_image_context\} ```python @staticmethod @@ -166,30 +167,44 @@ def process_image_context(object_storage_api: ObjectStorageApi, image: Image) -> List[str] ``` -イメージのコンテキストをオブジェクトストレージにアップロードして処理します。 +画像のコンテキストをオブジェクトストレージにアップロードして処理します。 -**Arguments**: +**引数**: -- `image` _Image_ - Imageインスタンス。 +* `image` *Image* - Image インスタンス。 -**Returns**: +**返り値**: -- `List[str]` - オブジェクトストレージに保存されたコンテキストハッシュのリスト。 +* `List[str]` - オブジェクトストレージに保存されたコンテキストハッシュのリスト。 -## CreateSnapshotParams +## ページ分割されたスナップショット \{#paginatedsnapshots\} + +```python +class PaginatedSnapshots(PaginatedSnapshotsDto) +``` + +Daytona のスナップショットのページネートされたリストを表します。 + +**属性**: + +* `items` *List[Snapshot]* - 現在のページに含まれるスナップショットインスタンスの一覧。 +* `total` *int* - すべてのページを通したスナップショットの総数。 +* `page` *int* - 現在のページ番号。 +* `total_pages` *int* - 利用可能なページ総数。 + +## CreateSnapshotParams \{#createsnapshotparams\} ```python class CreateSnapshotParams(BaseModel) ``` -新規スナップショット作成用のパラメータ。 +新しいスナップショットを作成するためのパラメータ。 **属性**: -- `name` _Optional[str]_ - スナップショット名。 -- `image` _Union[str, Image]_ - スナップショットのイメージ。文字列が指定された場合は、 +* `name` *Optional[str]* - スナップショット名。 +* `image` *Union[str, Image]* - スナップショットのイメージ。文字列が指定された場合は、 いずれかのレジストリで利用可能である必要があります。Image インスタンスが指定された場合は、 - Daytona で新しいイメージを作成するために使用されます。 -- `resources` _Optional[Resources]_ - スナップショットのリソース。 -- `entrypoint` _Optional[List[str]]_ - スナップショットのエントリポイント。 - + Daytona 上で新しいイメージを作成するために使用されます。 +* `resources` *Optional[Resources]* - スナップショットのリソース。 +* `entrypoint` *Optional[List[str]]* - スナップショットのエントリポイント。 diff --git a/apps/docs/src/content/docs/ja/python-sdk/sync/volume.mdx b/apps/docs/src/content/docs/ja/python-sdk/sync/volume.mdx index d494e1e28..48654bd03 100644 --- a/apps/docs/src/content/docs/ja/python-sdk/sync/volume.mdx +++ b/apps/docs/src/content/docs/ja/python-sdk/sync/volume.mdx @@ -3,7 +3,7 @@ title: "ボリューム" hideTitleOnPage: true --- -## ボリューム +## ボリューム \{#volume\} ```python class Volume(VolumeDto) @@ -13,16 +13,15 @@ Daytona のボリュームを表し、サンドボックス向けの共有スト **属性**: -- `id` _StrictStr_ - ボリュームの一意の識別子。 -- `name` _StrictStr_ - ボリューム名。 -- `organization_id` _StrictStr_ - ボリュームの組織ID。 -- `state` _StrictStr_ - ボリュームの状態。 -- `created_at` _StrictStr_ - ボリュームの作成日時。 -- `updated_at` _StrictStr_ - ボリュームの最終更新日時。 -- `last_used_at` _StrictStr_ - ボリュームの最終使用日時。 +* `id` *StrictStr* - ボリュームの一意の識別子。 +* `name` *StrictStr* - ボリューム名。 +* `organization_id` *StrictStr* - ボリュームの組織ID。 +* `state` *StrictStr* - ボリュームの状態。 +* `created_at` *StrictStr* - ボリュームの作成日時。 +* `updated_at` *StrictStr* - ボリュームの最終更新日時。 +* `last_used_at` *StrictStr* - ボリュームの最終使用日時。 - -## VolumeService +## VolumeService \{#volumeservice\} ```python class VolumeService() @@ -30,7 +29,7 @@ class VolumeService() Daytonaのボリュームを管理するサービス。ボリュームの一覧、取得、作成、削除に利用できます。 -#### VolumeService.list +#### VolumeService.list \{#volumeservicelist\} ```python def list() -> List[Volume] @@ -40,8 +39,7 @@ def list() -> List[Volume] **戻り値**: -- `List[Volume]` - すべてのボリュームのリスト。 - +* `List[Volume]` - すべてのボリュームのリスト。 **例**: @@ -52,7 +50,7 @@ for volume in volumes: print(f"{volume.name} ({volume.id})") ``` -#### VolumeService.get +#### VolumeService.get \{#volumeserviceget\} ```python def get(name: str, create: bool = False) -> Volume @@ -62,14 +60,12 @@ def get(name: str, create: bool = False) -> Volume **引数**: -- `name` _str_ - 取得するボリュームの名前。 -- `create` _bool_ - True の場合、存在しないときは新規に作成します。 - +* `name` *str* - 取得するボリュームの名前。 +* `create` *bool* - True の場合、存在しないときは新規に作成します。 **戻り値**: -- `Volume` - 取得したボリュームオブジェクト。 - +* `Volume` - 取得したボリュームオブジェクト。 **例**: @@ -79,7 +75,7 @@ volume = daytona.volume.get("test-volume-name", create=True) print(f"{volume.name} ({volume.id})") ``` -#### VolumeService.create +#### VolumeService.create \{#volumeservicecreate\} ```python def create(name: str) -> Volume @@ -89,13 +85,11 @@ def create(name: str) -> Volume **引数**: -- `name` _str_ - 作成するボリュームの名前。 - +* `name` *str* - 作成するボリュームの名前。 **戻り値**: -- `Volume` - 作成されたボリュームオブジェクト。 - +* `Volume` - 作成されたボリュームオブジェクト。 **例**: @@ -105,7 +99,7 @@ volume = daytona.volume.create("test-volume") print(f"{volume.name} ({volume.id}); state: {volume.state}") ``` -#### VolumeService.delete +#### VolumeService.delete \{#volumeservicedelete\} ```python def delete(volume: Volume) -> None @@ -115,8 +109,7 @@ def delete(volume: Volume) -> None **引数**: -- `volume` _Volume_ - 削除するボリューム。 - +* `volume` *Volume* - 削除するボリューム。 **例**: @@ -126,4 +119,3 @@ volume = daytona.volume.get("test-volume") daytona.volume.delete(volume) print("Volume deleted") ``` - diff --git a/apps/docs/src/content/docs/ja/rate-limits.mdx b/apps/docs/src/content/docs/ja/rate-limits.mdx new file mode 100644 index 000000000..b86f025b1 --- /dev/null +++ b/apps/docs/src/content/docs/ja/rate-limits.mdx @@ -0,0 +1,175 @@ +--- +title: レート制限 +--- + +Daytona は、すべてのユーザーに公平な利用機会を提供し、プラットフォームの安定性と最適なパフォーマンスを維持するために API レート制限を適用します。レート制限は、認証状況と実行する操作の種類に基づいて適用されます。 + +## 概要 \{#overview\} + +レート制限は、一定期間内に行える API リクエストの数を制御します。これらの制限を正しく理解することで、レート制限を適切に処理し、サービスの中断を防ぐ堅牢なアプリケーションを構築できます。 + +## レート制限の種類 \{#rate-limit-types\} + +Daytona には、互いに独立したカウンターで管理される 4 つのレート制限カテゴリがあります。 + +| 種類 | 上限 | 時間枠 | 対象 | +|------|-------|-------------|------------| +| **Anonymous Requests** | 300 リクエスト | 60 秒 | 未認証の API 呼び出し | +| **Authenticated Requests** | 40,000 リクエスト | 60 秒 | 一般的な認証済み API 呼び出し | +| **Sandbox Creation** | 300 リクエスト | 60 秒 | 新規サンドボックスの作成 | +| **Sandbox Lifecycle** | 40,000 リクエスト | 60 秒 | 開始、停止、削除、アーカイブなどの操作 | + +## 匿名リクエスト \{#anonymous-requests\} + +**60 秒あたり 300 リクエスト** + +このレート制限は、認証されていないすべての API リクエストに適用されます。匿名リクエストは IP アドレス単位で追跡され、次を含みます。 + +* API キーや認証トークンを使用しない公開エンドポイント +* Daytona API への認証されていないリクエスト + +*** + +## 認証済みリクエスト \{#authenticated-requests\} + +**60 秒あたり 40,000 リクエスト** + +これは、サンドボックスの作成やライフサイクル操作に該当しない認証済み API リクエストに対する、一般的なレート制限です。これには次のものが含まれます: + +* サンドボックスの一覧取得 +* サンドボックス詳細の取得 +* サンドボックスリージョンの取得 +* スナップショットの一覧取得 +* ボリュームの管理 +* 監査ログの閲覧 +* その他の読み取り・管理系の操作 + +認証済みリクエストのレート制限は、組織ごとに管理されています。 + +*** + +## サンドボックスの作成 \{#sandbox-creation\} + +**60 秒あたり 300 リクエスト(1 秒あたり 5 リクエスト)** + +このレート制限は、スナップショットからの作成、宣言的ビルド、`daytona.create()`(SDK)に渡されるその他のパラメーター、または `/api/sandbox`(API)への POST リクエストなど、すべてのサンドボックス作成方法に適用されます。 + +このサンドボックス作成専用の制限により、リソースの枯渇を防ぎつつ、既存のサンドボックスに対するライフサイクル操作は制限なく実行できます。 + +:::note +ご利用のユースケースで、より高いレートでサンドボックスを作成する必要がある場合は、カスタムレート制限についてご相談いただくために [support@daytona.io](mailto:support@daytona.io) までご連絡ください。 +::: + +*** + +## サンドボックスのライフサイクル操作 \{#sandbox-lifecycle-operations\} + +**60 秒あたり 40,000 リクエスト** + +このレート制限は、既存のサンドボックスに対するライフサイクルおよび状態管理の操作に適用されます: + +* サンドボックスの**開始**(`POST /api/sandbox/:id/start`) +* サンドボックスの**停止**(`POST /api/sandbox/:id/stop`) +* サンドボックスの**削除**(`DELETE /api/sandbox/:id`) +* サンドボックスの**アーカイブ**(`POST /api/sandbox/:id/archive`) + +および、これらに対応するすべての SDK メソッドにも適用されます。 + +これらの操作は、開発ワークフロー中に高い頻度で実行されることが多いため、上限が高めに設定されています。 + +*** + +## 制限に達したときの挙動 \{#what-happens-when-you-hit-the-limit\} + +レート制限を超過すると、以降のリクエストは次の内容で失敗します。 + +* **HTTP ステータス**: `429 Too Many Requests` +* **エラーレスポンス**: レート制限の詳細を含む JSON ボディ +* **Retry-After ヘッダー**: 再試行まで待機する時間(秒単位) + +### SDK の動作 \{#sdk-behavior\} + +公式の Daytona SDK を使用している場合: + +* **TypeScript SDK**: `RateLimitError` をスローします +* **Python SDK**: `RateLimitException` をスローします + +### エラーレスポンスの例 \{#example-error-response\} + +```json +{ + "statusCode": 429, + "message": "レート制限を超過しました", + "error": "リクエスト数が多すぎます" +} +``` + +*** + +## レート制限ヘッダー \{#rate-limit-headers\} + +Daytona は API レスポンスヘッダーにレート制限情報を含めています。 + +| ヘッダー名 | 説明 | +|--------|-------------| +| `X-RateLimit-Limit` | 指定された時間ウィンドウ内で許可される最大リクエスト数 | +| `X-RateLimit-Remaining` | 現在のウィンドウで残っているリクエスト数 | +| `X-RateLimit-Reset` | レート制限ウィンドウがリセットされるまでの秒数 | +| `Retry-After` | 再試行までに待機する秒数(制限を超過した場合に返されます) | + +## ベストプラクティス \{#best-practices\} + +レート制限の範囲内で効率的に動作させるために、`429` エラーが発生した場合は、必ず適切なリトライロジックで丁寧に処理してください。レート制限エラーを受け取ったら、指数バックオフを実装し、API に過度な負荷をかけないようにリトライの間隔を徐々に長くして待機します(1 秒、2 秒、4 秒、8 秒など)。以下はその例です。 + +```typescript +async function createSandboxWithRetry() { + let retries = 0 + const maxRetries = 5 + + while (retries < maxRetries) { + try { + return await daytona.create({ snapshot: 'my-snapshot' }) + } catch (error) { + if (error.statusCode === 429 && retries < maxRetries - 1) { + const delay = Math.pow(2, retries) * 1000 // 1秒、2秒、4秒、8秒、16秒の遅延 + await new Promise(resolve => setTimeout(resolve, delay)) + retries++ + } else { + throw error + } + } + } +} +``` + +**レート制限ヘッダー**(`X-RateLimit-Remaining`、`X-RateLimit-Reset`)を監視して利用状況を把握し、上限に達する前に事前のスロットリングを実装してください。 + +**頻繁に変化しない API レスポンスをキャッシュ**してください。たとえば、(比較的静的な)サンドボックス一覧、利用可能なリージョン、スナップショット情報などです。これにより不要な API 呼び出しが減り、レート制限の範囲内に余裕を持って収まるようになります。 + +**処理をバッチ化して最適化**し、逐次ではなく(レート制限の範囲内で)複数のサンドボックスを並列に作成します。可能な場合は、すべてのタスクごとに新しいサンドボックスを作成するのではなく、既存のサンドボックスを再利用することを検討してください。 + +**サンドボックスのライフサイクルを効率的に管理**して API 呼び出しを削減します。サンドボックスを削除して再作成するのではなくアーカイブしたり、未使用時には削除するのではなく停止したりし、[自動停止間隔](/docs/ja/sandbox-management#auto-stop)を活用して、手動操作なしで実行中のサンドボックスを自動的に管理してください。 + +**リクエストのキューイングを実装**して、上限を超えるバーストを防ぎ、状態変化の検出にはポーリングではなく [webhook](/docs/ja/webhooks) を使用して不要な API 呼び出しを避けてください。アプリケーションのログ内で `429` エラーを監視しアラートを設定して、ユーザーへの影響が出る前にレート制限の問題へプロアクティブに対処できるようにしてください。 + +*** + +## カスタムレート制限 \{#custom-rate-limits\} + +現在、レート制限はすべての組織ティアで共通です。ただし、ユースケースによってより高いレート制限が必要な場合は、以下のような用途向けにカスタムレート制限を提供しています。 + +* **高トラフィックアプリケーション**(1分あたり300件を超えるサンドボックス作成が必要な場合) +* **エンタープライズ環境**(特定のスループット要件がある場合) +* **カスタム連携**(固有のレート制限要件がある場合) + +要件に合わせたカスタムレート制限については、[support@daytona.io](mailto:support@daytona.io) までお問い合わせください。 + +*** + +## お困りですか? \{#need-help\} + +レート制限の問題が発生している場合やサポートが必要な場合は、次の手順をお試しください。 + +1. 現在の[API利用状況](https://app.daytona.io/dashboard)を確認する +2. 最適化のための戦略について、このドキュメントを確認する +3. サポートのご利用やカスタムレート制限のご相談は [support@daytona.io](mailto:support@daytona.io) までお問い合わせください \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/regions.mdx b/apps/docs/src/content/docs/ja/regions.mdx index 7bf695a09..c33b7ec98 100644 --- a/apps/docs/src/content/docs/ja/regions.mdx +++ b/apps/docs/src/content/docs/ja/regions.mdx @@ -4,27 +4,40 @@ title: リージョンの選択 import { TabItem, Tabs } from '@astrojs/starlight/components' -Daytona は現在、以下のリージョンで利用可能です。 - -- 米国(US) -- 欧州(EU) - -Daytona の[設定](/docs/ja/configuration)手順でリージョンを選択できます。 - -```python -from daytona import Daytona, DaytonaConfig - -config = DaytonaConfig( - target="us" -) - -daytona = Daytona(config) -``` - -```typescript -import { Daytona } from '@daytonaio/sdk'; - -const daytona: Daytona = new Daytona({ - target: "eu" -}); -``` +Daytona SDKは、複数の地理的リージョンで動作するように設定できます。現在利用可能なリージョンは次のとおりです。 + +| リージョン | ターゲット | +| ------------- | ---- | +| United States | `us` | +| Europe | `eu` | + +リージョンは初期化時に`target`パラメータを設定して指定します: + + + + ```python + from daytona import Daytona, DaytonaConfig + + # DaytonaをUSリージョンで使用するように設定 + config = DaytonaConfig( + target="us" + ) + + # 指定した設定でDaytonaクライアントを初期化 + daytona = Daytona(config) + ``` + + + + ```typescript + import { Daytona } from '@daytonaio/sdk'; + + // DaytonaをEUリージョンで使用するように設定 + const daytona: Daytona = new Daytona({ + target: "eu" + }); + ``` + + + +詳細は[Configuration](/docs/configuration)を参照してください。 diff --git a/apps/docs/src/content/docs/ja/sandbox-management.mdx b/apps/docs/src/content/docs/ja/sandbox-management.mdx index f0f747f09..27f30169e 100644 --- a/apps/docs/src/content/docs/ja/sandbox-management.mdx +++ b/apps/docs/src/content/docs/ja/sandbox-management.mdx @@ -6,29 +6,29 @@ import sandboxDiagram from '@assets/docs/sandbox-states.svg?raw' import { TabItem, Tabs } from '@astrojs/starlight/components' import Image from 'astro/components/Image.astro' -サンドボックス(Daytonaが管理する隔離された一時的な実行環境)は、Daytonaによって管理される開発用の隔離環境です。本ガイドでは、TS SDK/Python SDKを用いてサンドボックスを作成・管理・削除する方法を解説します。 -デフォルトでは、サンドボックスは非アクティブ状態が15分続くと自動停止し、**vCPU 1**、**RAM 1GB**、**ディスク 3GiB**を使用します。 +サンドボックスは、Daytona によって管理される分離された開発環境です。本ガイドでは、SDK を使用してサンドボックスを作成、管理、削除する方法を説明します。 +既定では、サンドボックスは非アクティブ状態が 15 分続くと自動停止し、**1 vCPU**、**1GB RAM**、**3GiB ディスク**を使用します。 -## サンドボックスのライフサイクル +## サンドボックスのライフサイクル \{#sandbox-lifecycle\} -ライフサイクル全体を通じて、Daytonaのサンドボックス(Daytonaが管理する隔離された一時的な実行環境)は複数の状態を取り得ます。以下の図は、それぞれの状態と遷移の可能性を示します。 +ライフサイクル全体を通して、Daytona のサンドボックスは複数の状態を取り得ます。下の図は、それらの状態と遷移の可能性を示しています。 -デフォルトでは、サンドボックスは非アクティブな状態が`15 minutes`続くと自動停止し、停止から`7 days`後に自動アーカイブされます。中断なく無期限に稼働させるには、作成時に自動停止の値を`0`に設定してください。 +デフォルトでは、サンドボックスは非アクティブな状態が`15 minutes`続くと自動停止し、停止後`7 days`で自動アーカイブされます。サンドボックスを中断なく無期限で稼働させるには、作成時に自動停止の値を`0`に設定してください。 -## サンドボックスの作成 +## サンドボックスの作成 \{#creating-sandboxes\} -Daytona SDK は、デフォルトまたはカスタム構成でサンドボックスを作成する機能を提供します。サンドボックスに対して、言語、[スナップショット](/docs/ja/snapshots)、リソース、環境変数、ボリュームを指定できます。 -稼働中のサンドボックスは CPU、メモリ、ディスクストレージを消費します。各リソースは使用秒単位で課金されます。 +Daytona SDK では、デフォルトまたはカスタムの構成でサンドボックスを作成できます。サンドボックスに対して、言語、[スナップショット](/docs/ja/snapshots)、リソース、環境変数、ボリュームを指定できます。 +稼働中のサンドボックスは CPU、メモリ、ディスクストレージを消費します。各リソースは使用した秒数に応じて課金されます。 :::tip -自動停止の間隔を延長したい場合は、サンドボックス作成時に[自動停止間隔パラメータを設定](/docs/ja/sandbox-management#auto-stop-interval)できます。 +自動停止の間隔を延長したい場合は、サンドボックス作成時に[自動停止間隔のパラメータを設定](/docs/ja/sandbox-management#auto-stop-interval)できます。 ::: -### 基本的なサンドボックスの作成 +### 基本的なサンドボックスの作成 \{#basic-sandbox-creation\} -Daytona SDK には、Python と TypeScript により、デフォルト構成、特定の言語、またはカスタムラベルでサンドボックスを作成するメソッドが用意されています。 +Daytona SDK は、Python および TypeScript で、デフォルト構成、特定の言語、カスタム名、またはカスタムラベルを指定してサンドボックスを作成するためのメソッドを提供します。 @@ -37,20 +37,20 @@ Daytona SDK には、Python と TypeScript により、デフォルト構成、 daytona = Daytona() - # Create a basic Sandbox - + # 基本的なサンドボックスを作成 sandbox = daytona.create() - # Create a Sandbox with specific language - + # 特定の言語でサンドボックスを作成 params = CreateSandboxFromSnapshotParams(language="python") sandbox = daytona.create(params) - # Create a Sandbox with custom labels + # カスタム名のサンドボックスを作成 + params = CreateSandboxFromSnapshotParams(name="my-sandbox") + sandbox = daytona.create(params) + # カスタムラベルのサンドボックスを作成 params = CreateSandboxFromSnapshotParams(labels={"SOME_LABEL": "my-label"}) sandbox = daytona.create(params) - ``` @@ -60,32 +60,43 @@ Daytona SDK には、Python と TypeScript により、デフォルト構成、 const daytona = new Daytona(); - // Create a basic Sandbox + // 基本的なサンドボックスを作成 const sandbox = await daytona.create(); - // Create a Sandbox with specific language + // 特定の言語でサンドボックスを作成 const sandbox = await daytona.create({ language: 'typescript' }); - // Create a Sandbox with custom labels + // カスタム名のサンドボックスを作成 + const sandbox = await daytona.create({ name: 'my-sandbox' }); + + // カスタムラベルのサンドボックスを作成 const sandbox = await daytona.create({ labels: { SOME_LABEL: 'my-label' } }); ``` -サンドボックスが積極的に使用されていない場合は、停止することを推奨します。これは、[stop コマンドの使用](/docs/ja/sandbox-management#stop-and-start-sandbox)による手動操作、または[自動停止間隔の設定](/docs/ja/sandbox-management#auto-stop-and-auto-archive)による自動化で行えます。 +:::note +**サンドボックス名**: `name` パラメータでサンドボックスにカスタム名を指定できます。未指定の場合はサンドボックス ID が名前として使用されます。サンドボックス名は再利用可能で、特定の名前のサンドボックスが破棄されると、その名前は再び使用できます。 +::: + +参照: [create (Python SDK)](/docs/ja/python-sdk/sync/daytona#daytonacreate), [create (TypeScript SDK)](/docs/ja/typescript-sdk/daytona#create) + +サンドボックスがアクティブに使用されていない場合は、停止することを推奨します。これは [stop コマンドの使用](/docs/ja/sandbox-management#stop-and-start-sandbox)により手動で、または[自動停止間隔の設定](/docs/ja/sandbox-management#auto-stop-and-auto-archive)により自動で実行できます。 :::note Daytona はデフォルトのスナップショットを用いたウォーム状態のサンドボックスプールを維持しています。\ -利用可能な場合はコールドブートせず、ミリ秒単位でサンドボックスが起動します。 +利用可能な場合、サンドボックスはコールドブートではなくミリ秒で起動します。 ::: -### サンドボックスのリソース +### サンドボックスのリソース \{#sandbox-resources\} + +Daytona のサンドボックスは、既定で **1 vCPU**、**1GB RAM**、**3GiB ディスク**が付与されます。 -Daytona のサンドボックスは、デフォルトで **1 vCPU**、**1GB RAM**、**3GiB ディスク**を備えています。 +必要なリソースを正確に指定するには `Resources` クラスを使用します。CPU、メモリ、ディスク容量はすべてカスタマイズ可能です。 -より高い性能が必要ですか?`Resources` クラスを使用して、必要な構成を正確に指定できます。CPU、メモリ、ディスク容量はすべてカスタマイズ可能です。 +組織には、サンドボックスのリソース上限として 4 vCPU、8GB RAM、10GB ディスクが設定されています。より高いリソースが必要な場合は、[support@daytona.io](mailto:support@daytona.io) までユースケースを添えてご連絡ください。 -[ダッシュボード](https://app.daytona.io/dashboard/limits)で利用可能なリソースと上限を確認してください。 +利用可能なリソースと上限は [ダッシュボード](https://app.daytona.io/dashboard/limits) で確認できます。 @@ -119,7 +130,7 @@ Daytona のサンドボックスは、デフォルトで **1 vCPU**、**1GB RAM* async function main() { const daytona = new Daytona(); - // Create a Sandbox with custom resources + # Create a Sandbox with custom resources const sandbox = await daytona.create({ image: Image.debianSlim("3.13"), resources: { @@ -136,15 +147,14 @@ Daytona のサンドボックスは、デフォルトで **1 vCPU**、**1GB RAM* :::note -すべてのリソースパラメータは任意です。指定しない場合、Daytona は選択した言語やユースケースに適したデフォルト値を使用します。 +すべてのリソースパラメータは任意です。指定しない場合、Daytona は選択した言語とユースケースに適した既定値を使用します。 ::: -### ネットワーク設定 +### エフェメラルサンドボックス \{#ephemeral-sandboxes\} -Daytona のサンドボックスは、セキュリティ強化と接続性管理のため、ネットワークアクセス制御を構成可能に提供します。デフォルトでは標準的なセキュリティポリシーに従いますが、サンドボックス作成時にネットワーク設定をカスタマイズできます。 +エフェメラルサンドボックスは、停止されると自動的に削除されるサンドボックスです。短時間の作業やテスト用途に便利です。 -- すべてのネットワークアクセスをブロックするには、`networkBlockAll` を `True` に設定します -- 特定のアドレスにアクセスを制限するには、`networkAllowList` に最大 5 つの CIDR ブロックをカンマ区切りで設定します +エフェメラルサンドボックスを作成するには、サンドボックス作成時に `ephemeral` を `True` に設定します: @@ -153,20 +163,13 @@ Daytona のサンドボックスは、セキュリティ強化と接続性管理 daytona = Daytona() - # すべてのネットワークアクセスをブロック - - params = CreateSandboxFromSnapshotParams( - network_block_all=True - ) - sandbox = daytona.create(params) - - # 許可するネットワークアドレスを明示的に指定 + # エフェメラルサンドボックスを作成 params = CreateSandboxFromSnapshotParams( - network_allow_list="192.168.1.0/16,10.0.0.0/24" + ephemeral=True, + auto_stop_interval=5 # 非アクティブな状態が5分続くと、このエフェメラルサンドボックスは削除されます ) sandbox = daytona.create(params) - ``` @@ -176,54 +179,53 @@ Daytona のサンドボックスは、セキュリティ強化と接続性管理 const daytona = new Daytona(); - // すべてのネットワークアクセスをブロック + // エフェメラルサンドボックスを作成 const sandbox = await daytona.create({ - networkBlockAll: true - }); - - // 許可するネットワークアドレスを明示的に指定 - const sandbox = await daytona.create({ - networkAllowList: '192.168.1.0/16,10.0.0.0/24' + ephemeral: true, + autoStopInterval: 5 // 非アクティブな状態が5分続くと、このエフェメラルサンドボックスは削除されます }); ``` -:::caution -信頼できないコードを実行する場合、無制限のネットワークアクセスを有効にするとセキュリティリスクが生じる可能性があります。 -代わりに、`networkAllowList` を使用して特定のネットワークアドレスを許可リストに追加するか、`networkBlockAll` を使用してすべてのネットワークアクセスをブロックすることを推奨します。 +:::note +["autoDeleteInterval: 0"](#auto-delete-interval) を設定すると、"ephemeral" を `true` に設定した場合と同じ効果になります。 ::: -## サンドボックス情報 +### ネットワーク設定(ファイアウォール) \{#network-settings-firewall\} -Daytona SDK は、Python と TypeScript で、ID、ルートディレクトリ、状態などサンドボックスに関する情報を取得するためのメソッドを提供します。 +Daytona のサンドボックスは、セキュリティ強化と接続性の管理のために、設定可能なネットワークファイアウォール機能を提供します。既定ではネットワークアクセスは標準的なセキュリティポリシーに従いますが、サンドボックス作成時にネットワーク設定をカスタマイズできます。 +ネットワーク制限の詳細は、[Network Limits](/docs/ja/network-limits) ドキュメントをご参照ください。 + +## サンドボックス情報 \{#sandbox-information\} + +Daytona SDK には、Python および TypeScript を用いて、ID・ルートディレクトリ・ステータスなどサンドボックスに関する情報を取得するためのメソッドが用意されています。 ```python - # サンドボックス ID を取得 + # サンドボックス ID の取得 sandbox_id = sandbox.id # サンドボックスユーザーのルートディレクトリを取得 root_dir = sandbox.get_user_root_dir() - # サンドボックスの ID・自動停止間隔・状態を取得 + # サンドボックスの ID、自動停止間隔、状態を取得 print(sandbox.id) print(sandbox.auto_stop_interval) print(sandbox.state) - ``` ```typescript - // サンドボックス ID を取得 + // サンドボックス ID の取得 const sandboxId = sandbox.id; // サンドボックスユーザーのルートディレクトリを取得 const rootDir = await sandbox.getUserRootDir(); - // サンドボックスの ID・自動停止間隔・状態を取得 + // サンドボックスの ID、自動停止間隔、状態を取得 console.log(sandbox.id) console.log(sandbox.autoStopInterval) console.log(sandbox.state) @@ -231,13 +233,13 @@ Daytona SDK は、Python と TypeScript で、ID、ルートディレクトリ -特定のポートのプレビュー URL を取得するには、[プレビューと認証](/docs/ja/preview-and-authentication)を参照してください。 +特定のポートのプレビュー URL を取得する方法については、[Preview & Authentication](/docs/ja/preview-and-authentication) を参照してください。 -## サンドボックスの停止と起動 +## サンドボックスの停止と開始 \{#stop-and-start-sandbox\} -Daytona SDK は、Python と TypeScript でサンドボックスを停止・起動するためのメソッドを提供します。 +Daytona SDK では、Python および TypeScript でサンドボックスを停止・開始するためのメソッドを提供しています。 -停止したサンドボックスは、メモリ状態がクリアされますが、ファイルシステムは保持されます。ディスク使用量のコストのみが発生し、必要に応じて再度起動できます。 +停止したサンドボックスはファイルシステムの内容は保持されますが、メモリ状態はクリアされます。ディスク使用分のコストのみが発生し、必要に応じて再度起動できます。 @@ -280,34 +282,38 @@ Daytona SDK は、Python と TypeScript でサンドボックスを停止・起 -近く再起動する見込みがある場合は、停止状態を利用してください。そうでない場合は、ディスク使用量のコストをなくすため、停止後にサンドボックスをアーカイブすることを推奨します。 +参照: [stop (Python SDK)](/docs/python-sdk/sync/sandbox#sandboxstop), [start (Python SDK)](/docs/python-sdk/sync/sandbox#sandboxstart), [find_one (Python SDK)](/docs/python-sdk/sync/daytona#daytonafind_one), [stop (TypeScript SDK)](/docs/typescript-sdk/sandbox#stop), [start (TypeScript SDK)](/docs/typescript-sdk/sandbox#start), [findOne (TypeScript SDK)](/docs/typescript-sdk/daytona#findone) + +サンドボックスを近く再起動する見込みがある場合は、停止状態を利用してください。そうでない場合は、停止後にアーカイブしてディスク使用コストを抑えることを推奨します。 -## サンドボックスのアーカイブ +## サンドボックスのアーカイブ \{#archive-sandbox\} -Daytona SDK は、Python と TypeScript からサンドボックスをアーカイブするためのメソッドを提供します。 +Daytona SDK は、Python と TypeScript でサンドボックスをアーカイブするためのメソッドを提供します。 -サンドボックスをアーカイブすると、ファイルシステム全体の状態がコスト効率の高いオブジェクトストレージに移され、サンドボックスを長期間利用可能な状態で保持できます。 -アーカイブされたサンドボックスの起動には、サイズに応じて、停止中のサンドボックスよりも時間がかかります。 +サンドボックスをアーカイブすると、ファイルシステムの状態全体が高いコスト効率のオブジェクトストレージへ移され、サンドボックスを長期間にわたり利用可能な状態で保持できます。 +アーカイブされたサンドボックスの起動には、そのサイズに応じて、停止中のサンドボックスを起動するよりも時間がかかります。 -サンドボックスはアーカイブ前に停止している必要があり、停止中のサンドボックスと同様の手順で再度起動できます。 +サンドボックスはアーカイブ前に停止している必要があり、停止中のサンドボックスと同様に再起動できます。 ```python - # Archive Sandbox + # サンドボックスをアーカイブ sandbox.archive() ``` ```typescript - // Archive Sandbox + // サンドボックスをアーカイブ await sandbox.archive(); ``` -## サンドボックスの削除 +参照: [archive (Python SDK)](/docs/python-sdk/sync/sandbox#sandboxarchive), [archive (TypeScript SDK)](/docs/typescript-sdk/sandbox#archive) + +## サンドボックスの削除 \{#delete-sandbox\} Daytona SDK には、Python と TypeScript でサンドボックスを削除するためのメソッドが用意されています。 @@ -327,23 +333,23 @@ Daytona SDK には、Python と TypeScript でサンドボックスを削除す +参照: [delete(Python SDK)](/docs/python-sdk/sync/sandbox#sandboxdelete), [delete(TypeScript SDK)](/docs/typescript-sdk/sandbox#delete) + :::tip -ターミナルからサンドボックスを管理したい場合は、[Daytona CLI](/docs/ja/getting-started#setting-up-the-daytona-cli)をご確認ください: +ターミナルでサンドボックスを管理したい場合は、[Daytona CLI](/docs/ja/getting-started#setting-up-the-daytona-cli)をご確認ください。 ```bash daytona sandbox list ``` ```text +サンドボックス 状態 リージョン 最終イベント +─────────────────────────────────────────────────────────────────────────── +ugliest_quokka STARTED us 1時間前 - Sandbox State Region Last Event - ──────────────────────────────────────────────────────────────────────────────────── - ugliest_quokka STARTED us 1 hour ago - - associated_yak STARTED us 14 hours ago - - developed_lemur STARTED us 17 hours ago +associated_yak STARTED us 14時間前 +developed_lemur STARTED us 17時間前 ``` ```bash @@ -351,34 +357,34 @@ daytona sandbox start|stop|remove --all ``` ```text -すべてのサンドボックスを削除しました +すべてのサンドボックスが削除されました ``` ::: -## 自動ライフサイクル管理 +## 自動ライフサイクル管理 \{#automated-lifecycle-management\} -Daytona のサンドボックスは、ユーザーが指定した間隔に基づいて自動で停止、アーカイブ、削除できます。 +Daytonaのサンドボックスは、ユーザーが指定した間隔に基づいて、自動的に停止、アーカイブ、削除できます。 -### 自動停止の間隔 +### 自動停止間隔 \{#auto-stop-interval\} -自動停止の間隔パラメータは、稼働中のサンドボックスを自動停止するまでの時間を設定します。 +自動停止間隔パラメータは、実行中のサンドボックスが自動的に停止されるまでの時間を設定します。 -パラメータは次のいずれかで設定できます: +SDK の API 呼び出しや [プレビュー URL](/docs/ja/preview-and-authentication) 経由のネットワークリクエストなど、サンドボックスでアクティビティが発生すると、自動停止タイマーはリセットされます。 -- 分単位の時間間隔 -- `0`(自動停止を無効にし、サンドボックスを無期限に稼働させる) +このパラメータには次のいずれかを設定できます: -パラメータが未設定の場合、デフォルトの `15` 分が使用されます。 +* 分単位の時間間隔 +* `0`(自動停止機能を無効にし、サンドボックスを無期限に実行可能にする) -::: +パラメータが未設定の場合、デフォルトの間隔は `15` 分です。 ```python sandbox = daytona.create(CreateSandboxFromSnapshotParams( snapshot="my-snapshot-name", - auto_stop_interval=0, # 自動停止を無効化 - デフォルトは 15 分 + auto_stop_interval=0, # 自動停止機能を無効化(デフォルトは15分) )) ``` @@ -387,29 +393,29 @@ Daytona のサンドボックスは、ユーザーが指定した間隔に基づ ```typescript const sandbox = await daytona.create({ snapshot: "my-snapshot-name", - autoStopInterval: 0, // 自動停止を無効化 - デフォルトは 15 分 + autoStopInterval: 0, // 自動停止機能を無効化(デフォルトは15分) }); ``` -### 自動アーカイブの間隔 +### 自動アーカイブ間隔 \{#auto-archive-interval\} -自動アーカイブの間隔パラメータは、停止状態が継続しているサンドボックスを自動アーカイブするまでの時間を設定します。 +自動アーカイブ間隔パラメータは、停止状態が継続しているサンドボックスを自動的にアーカイブするまでの時間を設定します。 -パラメータは次のいずれかで設定できます: +このパラメータには次のいずれかを設定できます: -- 分単位の時間間隔 -- `0`(最大間隔の `30 days` が適用される) +* 分単位の時間間隔 +* `0`(最大間隔である`30 days`が使用されます) -パラメータが未設定の場合、デフォルトの `7 days` が使用されます。 +パラメータを設定しない場合は、既定の`7 days`が使用されます。 ```python sandbox = daytona.create(CreateSandboxFromSnapshotParams( snapshot="my-snapshot-name", - auto_archive_interval=60 # 停止後 1 時間で自動アーカイブ + auto_archive_interval=60 # サンドボックスが1時間停止し続けた場合に自動アーカイブ )) ``` @@ -418,36 +424,38 @@ Daytona のサンドボックスは、ユーザーが指定した間隔に基づ ```typescript const sandbox = await daytona.create({ snapshot: "my-snapshot-name", - autoArchiveInterval: 60 // 停止後 1 時間で自動アーカイブ + autoArchiveInterval: 60 // サンドボックスが1時間停止し続けた場合に自動アーカイブ }); ``` -### 自動削除の間隔 +### 自動削除間隔 \{#auto-delete-interval\} -自動削除の間隔パラメータは、停止状態が継続しているサンドボックスを自動削除するまでの時間を設定します。デフォルトでは、サンドボックスは自動削除されません。 +自動削除間隔パラメータは、停止したままのサンドボックスが自動的に削除されるまでの時間を設定します。デフォルトでは、サンドボックスは自動的に削除されません。 -パラメータは次のいずれかで設定できます: +このパラメータには次のいずれかを設定できます: -- 分単位の時間間隔 -- `-1`(自動削除を無効化) -- `0`(停止直後に即時削除) +* 分単位の時間間隔 +* `-1`(自動削除機能を無効化) +* `0`(停止後に即時削除) -パラメータが未設定の場合、サンドボックスは自動削除されません。 +パラメータが未設定の場合、サンドボックスは自動的に削除されません。 ```python sandbox = daytona.create(CreateSandboxFromSnapshotParams( snapshot="my-snapshot-name", - auto_delete_interval=60, # 停止後 1 時間で自動削除 + auto_delete_interval=60, # サンドボックスが1時間停止し続けたら自動削除 )) - # 停止直後に即時削除する + # 停止後にサンドボックスを即時削除 + sandbox.set_auto_delete_interval(0) - # 自動削除を無効化する + # 自動削除を無効化 + sandbox.set_auto_delete_interval(-1) ``` @@ -457,28 +465,28 @@ Daytona のサンドボックスは、ユーザーが指定した間隔に基づ ```typescript const sandbox = await daytona.create({ snapshot: "my-snapshot-name", - autoDeleteInterval: 60, // 停止後 1 時間で自動削除 + autoDeleteInterval: 60, // サンドボックスが1時間停止し続けたら自動削除 }); - // 停止直後に即時削除する + // 停止後にサンドボックスを即時削除 await sandbox.setAutoDeleteInterval(0) - // 自動削除を無効化する + // 自動削除を無効化 await sandbox.setAutoDeleteInterval(-1) ``` -## 無期限で実行 +## 無期限で実行する \{#run-indefinitely\} -デフォルトでは、サンドボックスは15分間操作がないと自動停止します。中断なくサンドボックスを稼働させ続けるには、新しいサンドボックスを作成する際に自動停止間隔を`0`に設定してください。 +既定では、サンドボックスは非アクティブ状態が15分続くと自動停止します。中断なくサンドボックスを稼働させ続けるには、新しいサンドボックスを作成する際に自動停止間隔を `0` に設定します: ```python sandbox = daytona.create(CreateSandboxFromSnapshotParams( snapshot="my-snapshot-name", - auto_stop_interval=0, # 自動停止を無効化(デフォルトは15分) + auto_stop_interval=0, # 自動停止機能を無効化(既定は15分) )) ``` @@ -487,8 +495,8 @@ Daytona のサンドボックスは、ユーザーが指定した間隔に基づ ```typescript const sandbox = await daytona.create({ snapshot: "my-snapshot-name", - autoStopInterval: 0, // 自動停止を無効化(デフォルトは15分) + autoStopInterval: 0, // 自動停止機能を無効化(既定は15分) }); ``` - + \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/snapshots.mdx b/apps/docs/src/content/docs/ja/snapshots.mdx index fe5d61d75..b130a61e1 100644 --- a/apps/docs/src/content/docs/ja/snapshots.mdx +++ b/apps/docs/src/content/docs/ja/snapshots.mdx @@ -5,108 +5,103 @@ title: スナップショット import { TabItem, Tabs } from '@astrojs/starlight/components' import Label from '@components/Label.astro' -スナップショット(サンドボックス作成に使う再利用可能な事前設定イメージ/テンプレート)は、Daytona のサンドボックス(Daytona が管理する隔離された一時的な計算環境)に必要な依存関係、ツール、環境設定、リソース要件をすべて含む事前構成済みテンプレートです。Daytona は、標準的な [Docker](https://www.docker.com/) または [OCI](https://opencontainers.org/) 互換イメージからのスナップショット作成をサポートします。 +スナップショットは、[Docker](https://www.docker.com/) または [OCI](https://opencontainers.org/) 互換イメージから作成できるサンドボックスのテンプレートです。新しいサンドボックスは、必要な依存関係・設定・リソースがあらかじめ構成されたカスタムスナップショット、または[デフォルトのスナップショット](#default-snapshot)から作成できます。 -## スナップショットの作成 +## スナップショットの作成 \{#creating-snapshots\} -サンドボックスを起動する際、Daytona は `python`、`node`、`pip` ならびに一般的な pip パッケージなどの有用なユーティリティがプリインストールされたシンプルなイメージに基づくスナップショットを使用します。詳細は[以下](#default-snapshot)を参照してください。 +スナップショットは次の4つの方法で作成できます。[パブリックイメージから](#using-a-public-image)、[プライベートイメージから](#using-private-registries)、[ローカルイメージから](#using-a-local-image)、または[Declarative Builder の使用](#using-the-declarative-builder)。 -この挙動は上書き可能です。ダッシュボードにアクセスし、[Snapshots](https://app.daytona.io/dashboard/snapshots) をクリックしてから `Create Snapshot` を選択すると、カスタムスナップショットを作成できます。 +### 公開イメージの使用 \{#using-a-public-image\} -スナップショットのイメージには、Docker Hub の `alpine:3.21.3` や `debian:12.10` のような公開イメージの名前とタグ、または別の公開コンテナレジストリ(例: `my-public-registry.com/custom-alpine:3.21`)のイメージを指定できます。 +公開イメージからスナップショットを作成するには、次の手順に従ってください: -entrypoint フィールドは任意です。イメージに長時間稼働する entrypoint がない場合、Daytona は自動的に `sleep infinity` を実行して、作成直後にコンテナが即時終了しないようにします。 +1. Dashboard を開き、[Snapshots](https://app.daytona.io/dashboard/snapshots) をクリックします +2. **Create Snapshot** をクリックします +3. Docker Hub の一般公開イメージの名前とタグ(例: `alpine:3.21.3`)、または他の公開コンテナレジストリ(例: `my-public-registry.com/custom-alpine:3.21`)のものを入力します + +必要に応じて、entrypoint フィールドを設定します。イメージに常駐実行される entrypoint がない場合、Daytona はコンテナがすぐに終了しないよう自動的に `sleep infinity` を実行します。 :::note -`latest` タグのイメージは頻繁に更新されるため、特定のタグ(例: `0.1.0`)のみがサポートされます。同様に、`lts` や `stable` といったタグも避けることを推奨します。 +`latest` タグのイメージは頻繁に更新されるため、特定のタグ(例: `0.1.0`)のみがサポートされます。同様に、`lts` や `stable` などのタグも対象外のため、イメージを定義する際は使用を避けることを推奨します。 ::: -スナップショットがプルおよび検証され、`Active` 状態になれば使用可能です。使用するカスタムスナップショットを指定するために、`CreateSandboxFromSnapshotParams` オブジェクトを定義します: +スナップショットの取得と検証が完了し、状態が `Active` になると使用可能です。 - - - ```python - sandbox = daytona.create(CreateSandboxFromSnapshotParams( - snapshot="my-snapshot-name", - )) - ``` - +### プライベートレジストリのイメージ \{#images-from-private-registries\} - - ```typescript - const sandbox = await daytona.create({ - snapshot: "my-snapshot-name", - }) - ``` - - +プライベートコンテナレジストリで利用可能なイメージからスナップショットを作成するには: -完全な例: +1. ダッシュボードの [Registries](https://app.daytona.io/dashboard/registries) ページに移動します。 +2. **Add Registry** ボタンをクリックします。 +3. カスタム名、URL、ユーザー名、パスワード、プロジェクト(該当する場合)を入力してフォームを完成させます。 +4. コンテナレジストリを作成したら、[Snapshots](https://app.daytona.io/dashboard/snapshots) ページに戻ります。 +5. スナップショットを作成する際は、レジストリの場所とプロジェクト名を含むプライベートイメージの完全名(例: `my-private-registry.com//custom-alpine:3.21`)を必ず入力してください。 - - - ```python - from daytona import Daytona, CreateSandboxFromSnapshotParams +次の手順は同じです。`CreateSandboxFromSnapshotParams` フィールドにカスタムスナップショットを指定すれば、追加の認証は不要です。 - daytona = Daytona() +#### プライベートな Docker Hub イメージの使用 \{#using-a-private-docker-hub-image\} - sandbox = daytona.create(CreateSandboxFromSnapshotParams( - snapshot="my-snapshot-name", - )) +プライベートな Docker Hub イメージを使用するには、Docker Hub の認証情報で[コンテナレジストリを追加](/docs/ja/snapshots#images-from-private-registries)します。 - response = sandbox.process.code_run('print("Sum of 3 and 4 is " + str(3 + 4))') - if response.exit_code != 0: - print(f"Error running code: {response.exit_code} {response.result}") - else: - print(response.result) +* **Registry URL**: `docker.io` を指定 +* **Username**: Docker Hub のユーザー名(該当プライベートイメージへのアクセス権があるアカウント) +* **Password**: [Docker Hub のパーソナルアクセストークン](https://docs.docker.com/docker-hub/access-tokens/) を使用(アカウントのパスワードは使用しない) +* **スナップショットの作成**: レジストリを追加したら、イメージ名にフルパスを指定してスナップショットを作成します: `docker.io//:` - sandbox.delete() +### ローカルイメージの使用 \{#using-a-local-image\} - ``` - +プライベートコンテナレジストリを手動で用意してイメージをプッシュする手間を省くために、[Daytona CLI](/docs/ja/getting-started#setting-up-the-daytona-cli) を使うと、ローカルイメージやローカルの Dockerfile からスナップショットを作成し、サンドボックスで利用できます。 - - ```typescript - import { Daytona } from '@daytonaio/sdk' - - async function main() { - // Initialize the Daytona client - const daytona = new Daytona() - - try { - // Create the Sandbox instance - const sandbox = await daytona.create({ - snapshot: "my-snapshot-name", - }) - // Run the code securely inside the Sandbox - const response = await sandbox.process.codeRun( - 'print("Sum of 3 and 4 is " + str(3 + 4))', - ) - if (response.exitCode !== 0) { - console.error('Error running code:', response.exitCode, response.result) - } else { - console.log(response.result) - } - } catch (error) { - console.error('Sandbox flow error:', error) - } finally { - // Clean up the Sandbox - await sandbox.delete() - } - } - - main() - ``` - - +ローカルイメージからスナップショットを作成するには: + +1. 使用したいイメージとタグが存在することを確認するために、`docker images` を実行します +2. `daytona snapshot push ` を実行してスナップショットを作成し、Daytona にプッシュします。例: + +```bash +daytona snapshot push custom-alpine:3.21 --name alpine-minimal +``` + +:::tip +基盤となるサンドボックスに割り当てるリソースを指定するには、`--cpu`、`--memory`、`--disk` フラグを使用します。 + +たとえば、`daytona snapshot push custom-alpine:3.21 --name alpine-minimal --cpu 2 --memory 4 --disk 8` は、2 vCPU、4GiB のメモリ、8GiB のディスク容量を持つ Alpine サンドボックスを作成します。 +::: + +:::note +Daytona は、ローカルイメージが AMD64 アーキテクチャ向けにビルドされていることを前提としています。したがって、お使いのマシンが別のアーキテクチャで動作している場合は、Docker イメージのビルド時に `--platform=linux/amd64` フラグが必要です。 + +詳しくは、[CLI ドキュメント](/docs/ja/tools/cli#daytona-snapshot-push) を参照してください。 +::: + +別の方法として、CLI で実行する場合は、`create` サブコマンドで `--dockerfile` フラグを使用して利用したい Dockerfile へのパスを渡すと、Daytona がスナップショットをビルドします。COPY/ADD コマンドは自動的に解析され、コンテキストに追加されます。手動でファイルをコンテキストに追加するには、`--context` フラグを使用します。 + +```bash +daytona snapshot create data-analysis01 --dockerfile ./Dockerfile +``` + +```text +/Users/idagelic/docs/Dockerfileからイメージをビルド中 +Step 1/5 : FROM alpine:latest + +... + + ⡿ スナップショットの検証を待機中... + + ... + + ✓ このスナップショットを使用して新しいサンドボックスを作成するには、'harbor-transient.internal.daytona.app/daytona/trying-daytona:0.0.1'を使用してください + +``` -### スナップショットのリソース +### 宣言的ビルダーの使用 \{#using-the-declarative-builder\} -スナップショットには Daytona サンドボックスのリソース要件が含まれます。デフォルトでは、Daytona サンドボックスは **1 vCPU**、**1GB RAM**、**3GiB ディスク**を備えています。 +宣言的ビルダーを使うと、コードファーストのアプローチでスナップショットを定義できます。詳しくは [Declarative Builder](/docs/declarative-builder) を参照してください。 -より高いパフォーマンスが必要ですか?`Resources` クラスを使用して、必要な CPU、メモリ、ディスク容量を正確に指定できます。 +### リソースの指定 \{#specifying-resources\} -利用可能なリソースと上限は[ダッシュボード](https://app.daytona.io/dashboard/limits)で確認してください。 +スナップショットは、特定のリソース要件でカスタマイズできます。デフォルトでは、Daytona サンドボックスには **1 vCPU**、**1GB RAM**、**3GiB ディスク**が割り当てられます。 + +これらのリソースをカスタマイズするには、`Resources` クラスを使用して必要な内容を正確に定義します。 @@ -116,34 +111,24 @@ entrypoint フィールドは任意です。イメージに長時間稼働する CreateSnapshotParams, Image, Resources, - CreateSandboxFromSnapshotParams, ) daytona = Daytona() - # カスタムリソースを指定してスナップショットを作成 - + # Create a Snapshot with custom resources daytona.snapshot.create( - CreateSnapshotParams( - name="my-snapshot", - image=Image.debian_slim("3.12"), - resources=Resources( - cpu=2, - memory=4, - disk=8, - ), + CreateSnapshotParams( + name="my-snapshot", + image=Image.debian_slim("3.12"), + # All resource parameters are optional: + resources=Resources( + cpu=2, + memory=4, + disk=8, ), - on_logs=print, - ) - - # カスタムスナップショットからサンドボックスを作成 - - sandbox = daytona.create( - CreateSandboxFromSnapshotParams( - snapshot="my-snapshot", - ) + ), + on_logs=print, ) - ``` @@ -151,177 +136,130 @@ entrypoint フィールドは任意です。イメージに長時間稼働する ```typescript import { Daytona, Image } from "@daytonaio/sdk"; - async function main() { - const daytona = new Daytona(); - - // カスタムリソースを指定してスナップショットを作成 - await daytona.snapshot.create( - { - name: "my-snapshot", - image: Image.debianSlim("3.13"), - resources: { - cpu: 2, - memory: 4, - disk: 8, - }, + const daytona = new Daytona(); + + // Create a Snapshot with custom resources + await daytona.snapshot.create( + { + name: "my-snapshot", + image: Image.debianSlim("3.13"), + // All resource parameters are optional: + resources: { + cpu: 2, + memory: 4, + disk: 8, }, - { onLogs: console.log } - ); - - // カスタムスナップショットからサンドボックスを作成 - const sandbox = await daytona.create({ - snapshot: "my-snapshot", - }); - } - - main(); + }, + { onLogs: console.log } + ); ``` -:::note -すべてのリソースパラメータは任意です。指定しない場合、Daytonaはデフォルト値を使用します。 -::: - -### プライベートレジストリのイメージ - -一般公開されていないイメージからスナップショットを作成するには、まずそのイメージのプライベートコンテナレジストリを追加します。 - -1. ダッシュボードの[Registries](https://app.daytona.io/dashboard/registries)ページに移動 -2. `Add Registry`ボタンをクリック -3. 適切なカスタム名、URL、ユーザー名、パスワード、プロジェクト(該当する場合)を入力 -4. コンテナレジストリを作成したら、[Snapshots](https://app.daytona.io/dashboard/snapshots)ページに戻る -5. スナップショット作成時は、レジストリURLとプロジェクト名(該当する場合)を含むプライベートイメージ名全体を入力すること(例: `my-private-registry.com//custom-alpine:3.21`) - -この先の手順は同じです。`CreateSandboxFromSnapshotParams`のフィールドにそのカスタムスナップショットを指定すれば、追加の認証は不要です。 - -#### プライベートな Docker Hub イメージの使用 +利用可能なリソースと上限は [ダッシュボード](https://app.daytona.io/dashboard/limits) で確認できます。 -プライベートな Docker Hub イメージを使用するには、Docker Hub の認証情報で[コンテナレジストリを追加](/docs/ja/snapshots#images-from-private-registries)します。 - -- Registry URL: `docker.io` を指定 -- Username: Docker Hub のユーザー名(プライベートイメージにアクセスできるアカウント) -- Password: [Docker Hub Personal Access Token](https://docs.docker.com/docker-hub/access-tokens/)を使用(アカウントのパスワードではない) -- スナップショットの作成: レジストリを追加後、イメージ名としてフルイメージパスを指定してスナップショットを作成(例: `docker.io//:`) - -### ローカルイメージの使用 - -プライベートコンテナレジストリを手動で用意してイメージをプッシュする手間を避けるために、[Daytona CLI](/docs/ja/getting-started#setting-up-the-daytona-cli)を使ってローカルイメージやローカルの Dockerfile からスナップショットを作成し、サンドボックスで使用できます。 +## スナップショットの使用 \{#using-snapshots\} -`docker images` を実行して使用したいイメージとタグが存在することを確認したら、`daytona snapshot push ` コマンドでスナップショットを作成して Daytona にプッシュします。例: - -```bash -daytona snapshot push custom-alpine:3.21 --name alpine-minimal -``` +サンドボックスでスナップショットを利用するには、`CreateSandboxFromSnapshotParams` オブジェクトの `snapshot` フィールドを指定します。 -:::tip -`--cpu`、`--memory`、`--disk` フラグを使って、基盤となるサンドボックス(Sandbox)に割り当てるリソースを指定します。 - -たとえば `daytona snapshot push custom-alpine:3.21 --name alpine-minimal --cpu 2 --memory 4 --disk 8` は、2 vCPU、4GiB メモリ、8GiB ディスク容量の Alpine サンドボックスを作成します。 -::: - -:::note -Daytona はローカルイメージが AMD64 アーキテクチャ向けにビルドされていることを前提としています。したがって、お使いのマシンが別のアーキテクチャの場合は、Docker イメージをビルドする際に `--platform=linux/amd64` フラグが必要です。 - -詳しくは [CLI ドキュメント](/docs/ja/tools/cli#daytona-snapshot-push) を参照してください。 -::: - -まだ目的のイメージをビルドしておらず、Dockerfile が用意できている場合は、SDK の宣言的ビルダー(Declarative Builder)を利用できます。詳しくは[こちら](/docs/ja/getting-started#declarative-builder)をご覧ください。 - -また、CLI で実行する場合は、`create` で `--dockerfile` フラグに使用したい Dockerfile のパスを渡すと、Daytona がスナップショット(Snapshot)をビルドします: - -```bash -daytona snapshot create data-analysis01 --dockerfile ./Dockerfile --context ./requirements.txt -``` - -```text -Building image from /Users/idagelic/docs/Dockerfile -Step 1/5 : FROM alpine:latest - -... - - ⡿ Waiting for the Snapshot to be validated ... + + + ```python + sandbox = daytona.create(CreateSandboxFromSnapshotParams( + snapshot="my-snapshot-name", + )) + ``` + - ... + + ```typescript + const sandbox = await daytona.create({ + snapshot: "my-snapshot-name", + }) + ``` + + - ✓ Use 'harbor-transient.internal.daytona.app/daytona/trying-daytona:0.0.1' to create a new sandbox using this Snapshot +サンドボックス内でコードを実行する例は、[クイックスタート](/docs/ja/getting-started/#run-code-inside-a-sandbox)を参照してください。 -``` +## スナップショットの削除 \{#deleting-snapshots\} -## スナップショットの削除 +カスタム スナップショットを削除するには: -作成したカスタムスナップショットの削除は簡単です。[Snapshots](https://app.daytona.io/dashboard/snapshots) ページに移動し、削除したいスナップショットの行末にある三点アイコンをクリックして表示される `Delete` ボタンを選択してください。 +1. [Snapshots](https://app.daytona.io/dashboard/snapshots) ページに移動します +2. 削除したいスナップショットの行の末尾にある三点アイコンをクリックします +3. 表示される `Delete` ボタンをクリックします :::tip -削除せずに一時的に無効化したい場合は、`Disable` をクリックします。これにより、新しいサンドボックスではそのスナップショットが使用されなくなりますが、スナップショット自体は削除されません。 +スナップショットを一時的に無効化したい場合は、削除ではなく `Disable` をクリックします。これにより、新規のサンドボックスでそのスナップショットは使用できなくなりますが、削除はされません。 ::: -## サンドボックスでDockerを実行する +## サンドボックスで Docker を実行する \{#running-docker-in-a-sandbox\} -Daytonaのサンドボックスは内部でDockerコンテナを実行できます(Docker-in-Docker)。これにより、コンテナ化されたアプリケーションのビルド、テスト、デプロイが可能になります。特に、データベース、メッセージキュー、その他のマイクロサービスなど外部サービスに依存するプロジェクトで有用です。 +Daytona のサンドボックスでは内部で Docker コンテナを実行できます(**Docker-in-Docker**)。これにより、コンテナ化アプリケーションのビルド、テスト、デプロイが可能になります。特に、データベース、メッセージキュー、その他のマイクロサービスといった外部サービスに依存するプロジェクトで有用です。 -これらのサービスは同一のサンドボックス環境内で稼働するため、エージェントはシームレスに連携でき、外部サービス依存と比べて優れた分離性とセキュリティを提供します。 +これらのサービスが同一のサンドボックス環境内で動作するため、エージェントはシームレスに連携できます。これにより、外部サービスに依存する場合と比べて、より強固な分離性とセキュリティを確保できます。 -### DinDスナップショットの作成 +### DinDスナップショットの作成 \{#creating-a-dind-snapshot\} -事前構築されたDocker-in-Dockerイメージをベースにするか、カスタムイメージにDockerを手動でインストールすることで、Docker対応のスナップショットを作成できます。 +プリビルドの Docker-in-Docker イメージをベースにするか、カスタムイメージに Docker を手動でインストールすることで、Docker に対応したスナップショットを作成できます。 -#### 事前構築イメージの利用 +#### 事前構築済みイメージの利用 \{#using-pre-built-images\} -以下のベースイメージはDocker-in-Dockerスナップショットの作成に広く使われており、カスタムDockerfileのベースとしても利用できます: +以下のベースイメージは、Docker-in-Docker のスナップショット作成で広く利用されているほか、カスタム Dockerfile のベースとしても利用できます。 -- `docker:28.3.3-dind` - 公式のDocker-in-Dockerイメージ(Alpineベースで軽量) -- `docker:28.3.3-dind-rootless` - セキュリティを強化したRootless Docker-in-Docker -- `docker:28.3.2-dind-alpine3.22` - Alpine 3.22ベースのDocker-in-Dockerイメージ +* `docker:28.3.3-dind` - 公式 Docker-in-Docker イメージ(Alpine ベース、軽量) +* `docker:28.3.3-dind-rootless` - セキュリティ強化のための rootless Docker-in-Docker +* `docker:28.3.2-dind-alpine3.22` - Alpine 3.22 を用いた Docker-in-Docker イメージ -#### Dockerの手動インストール +#### Docker の手動インストール \{#manual-docker-installation\} -あるいは、カスタムDockerfileでDockerを手動インストールできます: +別の方法として、カスタム Dockerfile で Docker を手動インストールできます: ```dockerfile FROM ubuntu:22.04 -# 公式のインストールスクリプトを使用してDockerをインストールする +# 公式インストールスクリプトで Docker をインストール RUN curl -fsSL https://get.docker.com | VERSION=28.3.3 sh - ``` -### ユースケース +### ユースケース \{#use-cases\} -- データベース(PostgreSQL、Redis、MySQL)やその他のサービスの実行 -- コンテナ化アプリケーションのビルドとテスト -- マイクロサービスとその依存関係のデプロイ -- フル機能のコンテナオーケストレーションを備えた分離型開発環境の作成 +* データベース(PostgreSQL、Redis、MySQL)などのサービスを実行する +* コンテナ化アプリケーションのビルドとテストを行う +* マイクロサービスとその依存関係をデプロイする +* コンテナオーケストレーションをフルに活用した分離開発環境を作成する :::note -Docker-in-Dockerのサンドボックスは、Dockerデーモンのオーバーヘッドにより追加のリソースを必要とします。最適なパフォーマンスのために、少なくとも2 vCPUと4GiBのメモリを割り当てることを検討してください。 +Docker-in-Docker のサンドボックスは、Docker デーモンのオーバーヘッドにより追加のリソースを要します。最適な性能のため、少なくとも 2 vCPU と 4 GiB のメモリを割り当てることを検討してください。 ::: -## デフォルトのスナップショット - -Daytona が使用するデフォルトのスナップショットは、`python` と `node`、それぞれの LSP に加えて、以下の `pip` 事前インストール済みパッケージを含むイメージをベースにしています: - -- `beautifulsoup4` (v4.13.3) -- `django` (v5.1.7) -- `flask` (v3.1.0) -- `keras` (v3.9.0) -- `matplotlib` (v3.10.1) -- `numpy` (v2.2.3) -- `openai` (v1.65.4) -- `opencv-python` (v4.11.0.86) -- `pandas` (v2.2.3) -- `pillow` (v11.1.0) -- `pydantic-ai` (v0.0.35) -- `requests` (v2.32.3) -- `scikit-learn` (v1.6.1) -- `scipy` (v1.15.2) -- `seaborn` (v0.13.2) -- `SQLAlchemy` (v2.0.38) -- `transformers` (v4.49.0) -- `anthropic` (v0.49.0) -- `daytona_sdk` (v0.11.1) -- `huggingface` (v0.0.1) -- `instructor` (v1.7.3) -- `langchain` (v0.3.20) -- `llama-index` (v0.12.22) -- `ollama` (v0.4.7) \ No newline at end of file +## デフォルトのスナップショット \{#default-snapshot\} + +サンドボックス作成時にスナップショットを指定しない場合、Daytona はデフォルトのスナップショットを使用します。これには `python`、`node`、それぞれの言語サーバー、および一般的な pip パッケージが含まれます。 + +* `anthropic` (v0.49.0) +* `beautifulsoup4` (v4.13.3) +* `daytona_sdk` (v0.11.1) +* `django` (v5.1.7) +* `flask` (v3.1.0) +* `huggingface` (v0.0.1) +* `instructor` (v1.7.3) +* `keras` (v3.9.0) +* `langchain` (v0.3.20) +* `llama-index` (v0.12.22) +* `matplotlib` (v3.10.1) +* `numpy` (v2.2.3) +* `ollama` (v0.4.7) +* `openai` (v1.65.4) +* `opencv-python` (v4.11.0.86) +* `pandas` (v2.2.3) +* `pillow` (v11.1.0) +* `pydantic-ai` (v0.0.35) +* `requests` (v2.32.3) +* `scikit-learn` (v1.6.1) +* `scipy` (v1.15.2) +* `seaborn` (v0.13.2) +* `SQLAlchemy` (v2.0.38) +* `transformers` (v4.49.0) \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/ssh-access.mdx b/apps/docs/src/content/docs/ja/ssh-access.mdx new file mode 100644 index 000000000..2b2bae672 --- /dev/null +++ b/apps/docs/src/content/docs/ja/ssh-access.mdx @@ -0,0 +1,103 @@ +--- +title: SSH アクセス +--- + +import { TabItem, Tabs } from '@astrojs/starlight/components' + +トークンベースの認証を使用して、任意のサンドボックスに SSH で接続できます。 + +## SSH アクセストークンの作成 \{#creating-an-ssh-access-token\} + +サンドボックスに接続するには、まず SSH アクセストークンを作成する必要があります。このトークンにより、サンドボックスへ安全かつ期限付きでアクセスできます。 + +SSH アクセスは、ダッシュボードでサンドボックスのオプションメニューを開き、`Create SSH Access` を選択して初期化できます。 +また、以下のいずれかの SDK を使用してプログラムから初期化することもできます。 + + + + ```python + from daytona import Daytona + + daytona = Daytona() + sandbox = daytona.get("sandbox-abc123") + + # Create SSH access token + ssh_access = sandbox.create_ssh_access(expires_in_minutes=60) + print(f"SSH Token: {ssh_access.token}") + ``` + + + + ```typescript + import { Daytona } from '@daytonaio/sdk' + + const daytona = new Daytona() + const sandbox = await daytona.get('sandbox-abc123') + + // Create SSH access token + const sshAccess = await sandbox.createSshAccess(60) + console.log(`SSH Token: ${sshAccess.token}`) + ``` + + + +## 接続コマンド \{#connection-command\} + +トークンを取得したら、次のコマンドで接続します: + +```bash +ssh @ssh.app.daytona.io +``` + +## VS Code での接続 \{#connecting-with-vscode\} + +ローカルの VS Code をサンドボックスに接続するには、次の簡単な手順を実行します。 + +1. VS Code に [Remote Explorer 拡張機能](https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-explorer) がインストールされていることを確認します。 +2. 新しい SSH 接続を追加します。 +3. SSH 接続の URL を求められたら、上記の SSH コマンドを貼り付けます。 + +拡張機能の詳細は[こちら](https://code.visualstudio.com/docs/remote/ssh)をご覧ください。 + +## JetBrains IDE との接続 \{#connecting-with-jetbrains-ides\} + +ローカルの JetBrains IDE をサンドボックスに接続するには、次の簡単な手順に従います。 + +1. ローカルマシンに [JetBrains Gateway](https://www.jetbrains.com/remote-development/gateway/) アプリをダウンロードします。 +2. 新規接続を追加します。 +3. SSH 接続 URL の入力を求められたら、上記の SSH コマンドを貼り付けます。 +4. サンドボックスにインストールする IDE を選択します。 + +## SSH アクセスの管理 \{#managing-ssh-access\} + +### トークンの有効期限 \{#token-expiration\} + +セキュリティ保護のため、SSH アクセス トークンは自動的に失効します: + +* **既定**: 60分 + +### アクセスの取り消し \{#revoking-access\} + +SSH アクセストークンはいつでも無効化できます: + + + + ```python + # サンドボックスの SSH アクセスをすべて無効化 + sandbox.revoke_ssh_access() + + # サンドボックスの特定の SSH アクセスを無効化 + sandbox.revoke_ssh_access(token="specific-token") + ``` + + + + ```typescript + // サンドボックスの SSH アクセスをすべて無効化 + await sandbox.revokeSshAccess() + + // サンドボックスの特定の SSH アクセスを無効化 + await sandbox.revokeSshAccess('specific-token') + ``` + + \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/tools/api.mdx b/apps/docs/src/content/docs/ja/tools/api.mdx index 89a328329..1cb59bba3 100644 --- a/apps/docs/src/content/docs/ja/tools/api.mdx +++ b/apps/docs/src/content/docs/ja/tools/api.mdx @@ -1,1871 +1,2829 @@ --- title: API -description: Daytona APIで利用可能な操作のリファレンス。 +description: Daytona API で利用可能な操作のリファレンス。 --- import Label from '@components/Label.astro' -## POST /api-keys +## GET /config \{#get-config\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | +### レスポンス \{#responses\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`201`** | APIキーが正常に作成されました。 | +| ステータスコード | 説明 | +| :--------------- | :---------------------- | +| **`200`** | Daytona の設定 | -## GET /api-keys +## POST /api-keys \{#post-api-keys\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | +### パラメーター \{#parameters\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | APIキーが正常に取得されました。 | -| **`500`** | APIキーの取得中にエラーが発生しました。 | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +### レスポンス \{#responses\} -## GET /api-keys/current +| ステータスコード | 説明 | +| :--------------- | :---------------------- | +| **`201`** | API キーの作成に成功しました。 | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)の ID を指定します | +## GET /api-keys \{#get-api-keys\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | APIキーが正常に取得されました。 | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定する際に使用します | -## GET /api-keys/\{name\} +### レスポンス \{#responses\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | いいえ | undefined | JWT と併用して 組織(Organization)の ID を指定します | -| **`name`** | path | はい | undefined | undefined | +| ステータスコード | 説明 | +| :--------------- | :--------------------------- | +| **`200`** | API キーを正常に取得しました。 | +| **`500`** | API キーの取得中にエラーが発生しました。 | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | APIキーが正常に取得されました。 | +## GET /api-keys/current \{#get-api-keyscurrent\} -## DELETE /api-keys/\{name\} +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`name`** | path | true | undefined | undefined | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :--------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定する際に使用します | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`204`** | APIキーは正常に削除されました。 | +### レスポンス \{#responses\} +| Status Code | 説明 | +| :---------- | :------------------------ | +| **`200`** | API キーの取得に成功。 | -## GET /organizations/invitations +## GET /api-keys/{name} \{#get-api-keysname\} -### 応答 -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 組織の招待一覧 | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`name`** | path | true | undefined | undefined | -## GET /organizations/invitations/count +### レスポンス \{#responses\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 組織の招待数 | +| ステータスコード | 説明 | +| :---------- | :------------------------------ | +| **`200`** | API キーの取得に成功しました。 | +## DELETE /api-keys/{name} \{#delete-api-keysname\} -## POST /organizations/invitations/\{invitationId\}/accept +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`invitationId`** | path | true | undefined | 招待ID | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`name`** | path | true | undefined | undefined | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 組織(Organization)の招待を正常に承諾しました | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :-------------------------- | +| **`204`** | API キーが正常に削除されました。 | -## POST /organizations/invitations/\{invitationId\}/decline +## DELETE /api-keys/{userId}/{name} \{#delete-api-keysuseridname\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`invitationId`** | path | true | undefined | 招待ID | +### パラメーター \{#parameters\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 組織の招待を辞退しました | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :--------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`userId`** | path | true | undefined | undefined | +| **`name`** | path | true | undefined | undefined | +### レスポンス \{#responses\} -## POST /organizations +| ステータスコード | 説明 | +| :--------------- | :--------------------------- | +| **`204`** | API キーが正常に削除されました。 | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`201`** | 組織の作成に成功しました | +## GET /organizations/invitations \{#get-organizationsinvitations\} -## GET /organizations +### レスポンス \{#responses\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 組織のリスト | +| ステータスコード | 説明 | +| :--------------- | :----------------------- | +| **`200`** | 組織への招待の一覧 | +## GET /organizations/invitations/count \{#get-organizationsinvitationscount\} -## GET /organizations/\{organizationId\} +### レスポンス \{#responses\} -### パラメータ -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織ID | +| ステータスコード | 説明 | +| :---------- | :------------------------ | +| **`200`** | 組織への招待数 | -### レスポンス -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 組織の詳細 | +## POST /organizations/invitations/{invitationId}/accept \{#post-organizationsinvitationsinvitationidaccept\} -## DELETE /organizations/\{organizationId\} +### パラメータ \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織(Organization)ID | +| Name | Location | Required | Type | Description | +| :----------------- | :------- | :------- | :-------- | :------------ | +| **`invitationId`** | path | true | undefined | 招待 ID | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`204`** | 組織を正常に削除しました | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :---------- | :-------------------------------- | +| **`200`** | 組織への招待が正常に承諾されました | -## GET /organizations/\{organizationId\}/usage +## POST /organizations/invitations/{invitationId}/decline \{#post-organizationsinvitationsinvitationiddecline\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | パス | 必須 | undefined | 組織ID | +### パラメーター \{#parameters\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 現在の利用状況の概要 | +| 名前 | 位置 | 必須 | 型 | 説明 | +| :----------------- | :----- | :---- | :-------- | :------------- | +| **`invitationId`** | path | true | undefined | 招待 ID | +### レスポンス \{#responses\} -## PATCH /organizations/\{organizationId\}/quota +| ステータスコード | 説明 | +| :--------------- | :------------------------------------ | +| **`200`** | 組織への招待を正常に辞退しました | -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | パス | 必須 | undefined | 組織ID | +## POST /organizations \{#post-organizations\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 組織の詳細 | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :-------------------- | +| **`201`** | 組織が正常に作成されました | -## POST /organizations/\{organizationId\}/leave +## GET /organizations \{#get-organizations\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織(Organization)ID | +### レスポンス \{#responses\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`204`** | 組織から正常に退出しました | +| ステータスコード | 説明 | +| :---------- | :-------------------- | +| **`200`** | 組織のリスト | +## GET /organizations/{organizationId} \{#get-organizationsorganizationid\} -## POST /organizations/\{organizationId\}/suspend +### パラメーター \{#parameters\} -### パラメータ -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織(Organization)ID | +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | -### 応答 -| Status Code | Description | -| :-------- | :---------- | -| **`204`** | 組織の一時停止に成功 | +### レスポンス \{#responses\} +| Status Code | 説明 | +| :---------- | :------------- | +| **`200`** | 組織の詳細情報 | -## POST /organizations/\{organizationId\}/unsuspend +## DELETE /organizations/{organizationId} \{#delete-organizationsorganizationid\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織(Organization)ID | +### パラメーター \{#parameters\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`204`** | 組織(Organization)の一時停止を解除しました | +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | +### レスポンス \{#responses\} -## POST /organizations/\{organizationId\}/roles +| ステータスコード | 説明 | +| :---------- | :-------------------------------- | +| **`204`** | 組織が正常に削除されました | -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織ID | +## GET /organizations/{organizationId}/usage \{#get-organizationsorganizationidusage\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`201`** | 組織のロールを正常に作成しました | +### パラメータ \{#parameters\} -## GET /organizations/\{organizationId\}/roles +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織(Organization)ID | +### レスポンス \{#responses\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 組織のロール一覧 | +| ステータスコード | 説明 | +| :---------- | :--------------------- | +| **`200`** | 現在の利用状況の概要 | +## PATCH /organizations/{organizationId}/quota \{#patch-organizationsorganizationidquota\} -## PUT /organizations/\{organizationId\}/roles/\{roleId\} +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織ID | -| **`roleId`** | path | true | undefined | ロールID | +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :------------ | +| **`organizationId`** | path | true | undefined | 組織 ID | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ロールを正常に更新しました | +### レスポンス \{#responses\} -## DELETE /organizations/\{organizationId\}/roles/\{roleId\} +| ステータスコード | 説明 | +| :---------- | :------------------- | +| **`200`** | 組織の詳細 | -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織ID | -| **`roleId`** | path | true | undefined | ロールID | +## POST /organizations/{organizationId}/leave \{#post-organizationsorganizationidleave\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`204`** | 組織のロールを正常に削除しました | +### パラメータ \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | -## GET /organizations/\{organizationId\}/users +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織(Organization)ID | +| ステータスコード | 説明 | +| :---------- | :------------------------ | +| **`204`** | 組織から正常に退出しました | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 組織メンバーのリスト | +## POST /organizations/{organizationId}/suspend \{#post-organizationsorganizationidsuspend\} +### パラメータ \{#parameters\} -## POST /organizations/\{organizationId\}/users/\{userId\}/role +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | -### パラメーター -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織(Organization)ID | -| **`userId`** | path | true | undefined | ユーザーID | +### レスポンス \{#responses\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ロールを正常に更新しました | +| Status Code | 説明 | +| :---------- | :------------------------ | +| **`204`** | 組織が正常に停止されました | +## POST /organizations/{organizationId}/unsuspend \{#post-organizationsorganizationidunsuspend\} -## POST /organizations/\{organizationId\}/users/\{userId\}/assigned-roles +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織ID(Daytona内のリソースとユーザーのグループ化、ロールや請求など) | -| **`userId`** | path | true | undefined | ユーザーID | +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 割り当て/ロールを正常に更新しました | +### Responses \{#responses\} +| Status Code | Description | +| :---------- | :----------------------- | +| **`204`** | 組織の一時停止が正常に解除された | -## DELETE /organizations/\{organizationId\}/users/\{userId\} +## GET /organizations/by-sandbox-id/{sandboxId} \{#get-organizationsby-sandbox-idsandboxid\} -### パラメーター -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織ID | -| **`userId`** | path | true | undefined | ユーザーID | +### パラメーター \{#parameters\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`204`** | 組織からユーザーを正常に削除しました | +| 名前 | 位置 | 必須 | 型 | 説明 | +| :-------------- | :------- | :------- | :-------- | :---------- | +| **`sandboxId`** | path | true | undefined | サンドボックス ID | +### レスポンス \{#responses\} -## POST /organizations/\{organizationId\}/invitations +| ステータスコード | 説明 | +| :---------- | :----------- | +| **`200`** | Organization オブジェクト | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織(Organization)ID | +## POST /organizations/{organizationId}/sandbox-default-limited-network-egress \{#post-organizationsorganizationidsandbox-default-limited-network-egress\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`201`** | 組織への招待が正常に作成されました | +### パラメーター \{#parameters\} -## GET /organizations/\{organizationId\}/invitations +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織ID | +### レスポンス \{#responses\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 未処理の組織招待の一覧 | +| ステータスコード | 説明 | +| :--------------- | :---------------------------------------------------- | +| **`204`** | サンドボックスのデフォルトの制限付きネットワークエグレスが正常に更新されました | +## POST /organizations/{organizationId}/roles \{#post-organizationsorganizationidroles\} -## PUT /organizations/\{organizationId\}/invitations/\{invitationId\} +### パラメータ \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織ID | -| **`invitationId`** | path | true | undefined | 招待ID | +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :--------------- | +| **`organizationId`** | path | true | undefined | 組織 ID | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 組織の招待を正常に更新しました | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :---------- | :------------------------------------- | +| **`201`** | 組織ロールが正常に作成されました | -## POST /organizations/\{organizationId\}/invitations/\{invitationId\}/cancel +## GET /organizations/{organizationId}/roles \{#get-organizationsorganizationidroles\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`organizationId`** | path | true | undefined | 組織(Organization)ID | -| **`invitationId`** | path | true | undefined | 招待(Invitation)ID | +### パラメーター \{#parameters\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`204`** | 組織の招待を正常にキャンセルしました | +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | +### レスポンス \{#responses\} -## GET /users/me +| ステータスコード | 説明 | +| :--------------- | :---------------------- | +| **`200`** | 組織ロールのリスト | -### 応答 -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ユーザー詳細 | +## PUT /organizations/{organizationId}/roles/{roleId} \{#put-organizationsorganizationidrolesroleid\} +### パラメータ \{#parameters\} -## POST /users +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :-------------- | +| **`organizationId`** | path | true | undefined | 組織 ID | +| **`roleId`** | path | true | undefined | ロール ID | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`201`** | | +### レスポンス \{#responses\} -## GET /users +| ステータスコード | 説明 | +| :---------- | :------------------------ | +| **`200`** | ロールが正常に更新されました | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | | +## DELETE /organizations/{organizationId}/roles/{roleId} \{#delete-organizationsorganizationidrolesroleid\} +### パラメータ \{#parameters\} -## POST /users/\{id\}/regenerate-key-pair +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :----------------- | +| **`organizationId`** | path | true | undefined | 組織 ID | +| **`roleId`** | path | true | undefined | ロール ID | -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`id`** | パス | 必須 | 未定義 | 未定義 | +### レスポンス \{#responses\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`201`** | | +| ステータスコード | 説明 | +| :--------------- | :--------------------- | +| **`204`** | 組織ロールを正常に削除しました | + +## GET /organizations/{organizationId}/users \{#get-organizationsorganizationidusers\} + +### パラメータ \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :-------------- | +| **`organizationId`** | path | true | undefined | 組織 ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :--------------------------- | +| **`200`** | 組織メンバーのリスト | + +## POST /organizations/{organizationId}/users/{userId}/access \{#post-organizationsorganizationidusersuseridaccess\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | +| **`userId`** | path | true | undefined | ユーザー ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------------ | +| **`200`** | アクセスが正常に更新されました | +| ステータスコード | 説明 | +| :--------------- | :-------------------------- | +| **`200`** | 割り当てられたロールが正常に更新されました | -## GET /users/account-providers +## DELETE /organizations/{organizationId}/users/{userId} \{#delete-organizationsorganizationidusersuserid\} + +### パラメータ \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :--------------- | +| **`organizationId`** | path | true | undefined | 組織 ID | +| **`userId`** | path | true | undefined | ユーザー ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :-------------------------- | +| **`204`** | ユーザーが組織から正常に削除された | + +## POST /organizations/{organizationId}/invitations \{#post-organizationsorganizationidinvitations\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :---------------------- | +| **`201`** | 組織への招待を作成しました | + +## GET /organizations/{organizationId}/invitations \{#get-organizationsorganizationidinvitations\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`organizationId`** | path | true | undefined | 組織 ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :----------------------------------- | +| **`200`** | 保留中の組織への招待の一覧 | + +## PUT /organizations/{organizationId}/invitations/{invitationId} \{#put-organizationsorganizationidinvitationsinvitationid\} + +### パラメータ \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :-------------- | +| **`organizationId`** | path | true | undefined | 組織 ID | +| **`invitationId`** | path | true | undefined | 招待 ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :-------------------------------------- | +| **`200`** | 組織の招待が正常に更新されました | + +## POST /organizations/{organizationId}/invitations/{invitationId}/cancel \{#post-organizationsorganizationidinvitationsinvitationidcancel\} + +### パラメータ \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :-------------- | +| **`organizationId`** | path | true | undefined | 組織 ID | +| **`invitationId`** | path | true | undefined | 招待 ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :-------------------------------- | +| **`204`** | 組織への招待が正常にキャンセルされました | + +## GET /users/me \{#get-usersme\} + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :----------- | +| **`200`** | ユーザー情報 | + +## POST /users \{#post-users\} + +### レスポンス \{#responses\} -### レスポンス | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 利用可能なアカウントプロバイダー | +| :---------- | :---------- | +| **`201`** | | +## GET /users \{#get-users\} -## POST /users/linked-accounts +### レスポンス \{#responses\} -### レスポンス | ステータスコード | 説明 | -| :-------- | :---------- | -| **`204`** | アカウントのリンクが成功しました | +| :---------- | :---------- | +| **`200`** | | + +## POST /users/{id}/regenerate-key-pair \{#post-usersidregenerate-key-pair\} +### パラメータ \{#parameters\} -## DELETE /users/linked-accounts/\{provider\}/\{providerUserId\} +| Name | Location | Required | Type | Description | +| :------- | :------- | :------- | :-------- | :---------- | +| **`id`** | path | true | undefined | undefined | -### パラメーター -| 名称 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`provider`** | path | true | undefined | undefined | -| **`providerUserId`** | path | true | undefined | undefined | +### レスポンス \{#responses\} -### レスポンス | ステータスコード | 説明 | -| :-------- | :---------- | -| **`204`** | アカウントの連携を解除しました | +| :---------- | :---------- | +| **`201`** | | +## GET /users/account-providers \{#get-usersaccount-providers\} -## GET /users/\{id\} +### レスポンス \{#responses\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`id`** | パス | 必須 | 未定義 | 未定義 | +| ステータスコード | 説明 | +| :--------------- | :---------------------- | +| **`200`** | 利用可能なアカウントプロバイダ | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ユーザーの詳細 | +## POST /users/linked-accounts \{#post-userslinked-accounts\} +### レスポンス \{#responses\} -## GET /sandbox +| ステータスコード | 説明 | +| :--------------- | :----------------- | +| **`204`** | アカウントの連携に成功 | -### パラメータ -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定する | -| **`verbose`** | query | false | undefined | 詳細出力を含める | -| **`labels`** | query | false | undefined | フィルタ用の JSON エンコード済みラベル | +## DELETE /users/linked-accounts/{provider}/{providerUserId} \{#delete-userslinked-accountsproviderprovideruserid\} -### レスポンス -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | すべてのサンドボックス(Sandbox)の一覧 | +### パラメータ \{#parameters\} -## POST /sandbox +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :---------- | +| **`provider`** | path | true | undefined | undefined | +| **`providerUserId`** | path | true | undefined | undefined | -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定します | +### レスポンス \{#responses\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | サンドボックス(Sandbox)が正常に作成されました。 | +| ステータスコード | 説明 | +| :--------------- | :------------------------ | +| **`204`** | アカウントの連携解除に成功しました | +## POST /users/mfa/sms/enroll \{#post-usersmfasmsenroll\} -## GET /sandbox/\{sandboxId\} +### レスポンス \{#responses\} -### パラメータ -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定 | -| **`verbose`** | query | false | undefined | 詳細出力を含める | -| **`sandboxId`** | path | true | undefined | サンドボックス(Sandbox)の ID | +| ステータスコード | 説明 | +| :---------- | :---------------- | +| **`200`** | SMS MFA 登録用 URL | -### レスポンス -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | サンドボックスの詳細 | +## GET /users/{id} \{#get-usersid\} -## DELETE /sandbox/\{sandboxId\} +### パラメータ \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | サンドボックス(Sandbox)の ID | -| **`force`** | query | true | undefined | 強制削除を行うかどうか | +| Name | Location | Required | Type | Description | +| :------- | :------- | :------- | :-------- | :---------- | +| **`id`** | path | true | undefined | undefined | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | サンドボックスを削除しました | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :---------- | :----------- | +| **`200`** | ユーザー情報 | -## POST /sandbox/\{sandboxId\}/start +## GET /sandbox \{#get-sandbox\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | サンドボックス(Sandbox)の ID | +### パラメーター \{#parameters\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | サンドボックスを起動しました | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`verbose`** | query | false | undefined | 詳細な出力を有効にします | +| **`labels`** | query | false | undefined | フィルターに使用する JSON エンコード済みのラベルを指定します | +### レスポンス \{#responses\} -## POST /sandbox/\{sandboxId\}/stop +| ステータスコード | 説明 | +| :--------------- | :-------------------- | +| **`200`** | すべてのサンドボックスのリスト | -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | サンドボックス(Sandbox)の ID | +## GET /sandbox/paginated \{#get-sandboxpaginated\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | サンドボックスを停止しました | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | 組織 ID を指定するために JWT と併用します | +| **`page`** | query | false | undefined | 結果のページ番号 | +| **`limit`** | query | false | undefined | 1 ページあたりの結果数 | +| **`id`** | query | false | undefined | ID の部分一致によるフィルタリング | +| **`labels`** | query | false | undefined | フィルタリングに使用する JSON エンコードされたラベル | +| **`includeErroredDeleted`** | query | false | undefined | エラー状態および削除済みの desired state を持つ結果を含めます | +| **`states`** | query | false | undefined | フィルタリングに使用する state の一覧 | +| **`snapshots`** | query | false | undefined | フィルタリングに使用するスナップショット名の一覧 | +| **`regions`** | query | false | undefined | フィルタリングに使用するリージョンの一覧 | +| **`minCpu`** | query | false | undefined | 最小 CPU | +| **`maxCpu`** | query | false | undefined | 最大 CPU | +| **`minMemoryGiB`** | query | false | undefined | 最小メモリ (GiB) | +| **`maxMemoryGiB`** | query | false | undefined | 最大メモリ (GiB) | +| **`minDiskGiB`** | query | false | undefined | 最小ディスク容量 (GiB) | +| **`maxDiskGiB`** | query | false | undefined | 最大ディスク容量 (GiB) | +| **`lastEventAfter`** | query | false | undefined | 最後のイベントがこのタイムスタンプより後に発生した項目を含めます | +| **`lastEventBefore`** | query | false | undefined | 最後のイベントがこのタイムスタンプより前に発生した項目を含めます | +| **`sort`** | query | false | undefined | ソート対象のフィールド | +| **`order`** | query | false | undefined | ソート方向 | -## PUT /sandbox/\{sandboxId\}/labels +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)の ID を指定します | -| **`sandboxId`** | path | true | undefined | サンドボックス(Sandbox)の ID | +| ステータスコード | 説明 | +| :--------------- | :----------------------------- | +| **`200`** | すべてのサンドボックスのページネーションされた一覧 | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ラベルを正常に置換しました | +## POST /sandbox \{#post-sandbox\} +### パラメーター \{#parameters\} -## POST /sandbox/\{sandboxId\}/backup +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | -### パラメータ -| 名前 | ロケーション | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Daytona内のリソースとユーザーのグループ化、ロールや請求など)の ID を指定します | -| **`sandboxId`** | path | true | undefined | サンドボックス(隔離された一時的な実行環境)の ID | +### レスポンス \{#responses\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | サンドボックスのバックアップの開始を受け付けました | +| ステータスコード | 説明 | +| :--------------- | :------------------------------ | +| **`200`** | サンドボックスが正常に作成されました。 | +## GET /sandbox/regions \{#get-sandboxregions\} -## POST /sandbox/\{sandboxId\}/public/\{isPublic\} +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | サンドボックス(Sandbox)の ID | -| **`isPublic`** | path | true | undefined | 設定する公開状態 | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定する際に使用します | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`201`** | | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :---------- | :------------------------------------------------ | +| **`200`** | サンドボックスが作成されているリージョンのリスト | -## POST /sandbox/\{sandboxId\}/autostop/\{interval\} +## GET /sandbox/for-runner \{#get-sandboxfor-runner\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定 | -| **`sandboxId`** | path | true | undefined | サンドボックス(Sandbox)の ID | -| **`interval`** | path | true | undefined | 自動停止(Auto-stop)の間隔(分)。0 で無効化 | +### パラメーター \{#parameters\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 自動停止(Auto-stop)の間隔を設定しました | +| 名前 | 場所 | 必須 | 型 | 説明 | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`states`** | query | false | undefined | フィルタリング対象とするサンドボックス状態のカンマ区切りリスト | +| **`skipReconcilingSandboxes`** | query | false | undefined | 望ましい状態と異なる状態にあるサンドボックスをスキップします | +### レスポンス \{#responses\} -## POST /sandbox/\{sandboxId\}/autoarchive/\{interval\} +| ステータスコード | 説明 | +| :--------------- | :-------------------------------------------- | +| **`200`** | 認証済みランナーに紐づくサンドボックスの一覧 | -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | いいえ | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | はい | undefined | サンドボックス(Sandbox)の ID | -| **`interval`** | path | はい | undefined | 自動アーカイブ(Auto-archive)の間隔(分)。0 の場合は最大間隔が適用されます | +## GET /sandbox/{sandboxIdOrName} \{#get-sandboxsandboxidorname\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 自動アーカイブの間隔を設定しました | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | +| **`verbose`** | query | false | undefined | 詳細な出力を含めるかどうか | -## POST /sandbox/\{sandboxId\}/archive +### レスポンス \{#responses\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +| ステータスコード | 説明 | +| :--------------- | :--------------- | +| **`200`** | サンドボックスの詳細 | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | サンドボックス(Sandbox)をアーカイブしました | +## DELETE /sandbox/{sandboxIdOrName} \{#delete-sandboxsandboxidorname\} +### パラメータ \{#parameters\} -## GET /sandbox/\{sandboxId\}/ports/\{port\}/preview-url +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | 組織 ID を指定するために JWT と併用します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | サンドボックス(Sandbox)の ID | -| **`port`** | path | true | undefined | プレビューリンクの URL を取得するポート番号 | +### レスポンス \{#responses\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 指定したポートのプレビューリンクの URL | +| ステータスコード | 説明 | +| :---------- | :------------------------- | +| **`200`** | サンドボックスが削除されました | +## POST /sandbox/{sandboxIdOrName}/start \{#post-sandboxsandboxidornamestart\} -## GET /sandbox/\{sandboxId\}/build-logs +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | ヘッダー | いいえ | 未定義 | JWT と併用して 組織(Daytona内のリソースとユーザーのグループ化、ロールや請求など)の ID を指定 | -| **`sandboxId`** | パス | はい | 未定義 | サンドボックス(隔離された一時的な実行環境)の ID | -| **`follow`** | クエリ | いいえ | 未定義 | ログストリームをフォローするかどうか | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ビルドログのストリーム | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :---------------------------------------------------------- | +| **`200`** | サンドボックスが起動済み、またはアーカイブ状態から復元中である | -## POST /runners +| ステータスコード | 説明 | +| :--------------- | :------------------ | +| **`200`** | サンドボックスが起動済み | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`201`** | | +## POST /sandbox/{sandboxIdOrName}/stop \{#post-sandboxsandboxidornamestop\} -## GET /runners +### パラメーター \{#parameters\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | +### レスポンス \{#responses\} -## PATCH /runners/\{id\}/scheduling +| ステータスコード | 説明 | +| :---------- | :---------------------- | +| **`200`** | サンドボックスが停止済みです | -### パラメーター -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`id`** | パス | 必須 | 未定義 | 未定義 | +## PUT /sandbox/{sandboxIdOrName}/labels \{#put-sandboxsandboxidornamelabels\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | | +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定する際に使用します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :---------------------------------- | +| **`200`** | ラベルが正常に置換されました | + +## PUT /sandbox/{sandboxIdOrName}/state \{#put-sandboxsandboxidornamestate\} +### パラメーター \{#parameters\} -## GET /runners/by-sandbox/\{sandboxId\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織 ID を指定するために使用します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`sandboxId`** | path | true | undefined | undefined | +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :------------------------------------ | +| **`200`** | サンドボックスの状態が正常に更新されました | + +## POST /sandbox/{sandboxIdOrName}/backup \{#post-sandboxsandboxidornamebackup\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :--------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | サンドボックスの ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :-------------- | :----------------------------- | +| **`200`** | サンドボックスのバックアップを開始しました | + +## POST /sandbox/{sandboxIdOrName}/public/{isPublic} \{#post-sandboxsandboxidornamepublicispublic\} + +### パラメーター \{#parameters\} + +| 名前 | 位置 | 必須 | 型 | 説明 | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | 組織 ID を指定するために JWT と併用します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | +| **`isPublic`** | path | true | undefined | 設定する公開状態 | + +### レスポンス \{#responses\} -### レスポンス | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ランナー(サンドボックスがスケジュールおよび実行される基盤の計算ノード/ホスト)が見つかりました | +| :---------- | :---------- | +| **`201`** | | + +## POST /sandbox/{sandboxIdOrName}/autostop/{interval} \{#post-sandboxsandboxidornameautostopinterval\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | +| **`interval`** | path | true | undefined | 自動停止までの間隔(分単位、0 で無効化) | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------------------ | +| **`200`** | 自動停止間隔が設定されました | + +## POST /sandbox/{sandboxIdOrName}/autoarchive/{interval} \{#post-sandboxsandboxidornameautoarchiveinterval\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | +| **`interval`** | path | true | undefined | 自動アーカイブ間隔(分)。0 の場合は最大の間隔が使用されます | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :--------------------------------- | +| **`200`** | 自動アーカイブ間隔が設定されました | + +## POST /sandbox/{sandboxIdOrName}/autodelete/{interval} \{#post-sandboxsandboxidornameautodeleteinterval\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | +| **`interval`** | path | true | undefined | 自動削除までの間隔(分)。負の値は無効化、0 は停止と同時に即時削除することを意味します | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :-------------------------- | +| **`200`** | 自動削除間隔が正常に設定されました | + +## POST /sandbox/{sandboxIdOrName}/archive \{#post-sandboxsandboxidornamearchive\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------------ | +| **`200`** | サンドボックスがアーカイブ済み | + +## GET /sandbox/{sandboxIdOrName}/ports/{port}/preview-url \{#get-sandboxsandboxidornameportsportpreview-url\} + +### パラメータ \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | +| **`port`** | path | true | undefined | プレビュー URL を取得する対象のポート番号 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :-------------- | :--------------------------------- | +| **`200`** | 指定したポートのプレビュー URL | + +## GET /sandbox/{sandboxIdOrName}/build-logs \{#get-sandboxsandboxidornamebuild-logs\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :--------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用 | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | +| **`follow`** | query | false | undefined | ログストリームをフォローするかどうか | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------------- | +| **`200`** | ビルドログストリーム | + +## POST /sandbox/{sandboxIdOrName}/ssh-access \{#post-sandboxsandboxidornamessh-access\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | +| **`expiresInMinutes`** | query | false | undefined | 有効期限(分単位、既定値: 60) | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :-------------------- | +| **`200`** | SSH アクセスが作成された | +## DELETE /sandbox/{sandboxIdOrName}/ssh-access \{#delete-sandboxsandboxidornamessh-access\} -## GET /runners/by-snapshot +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`ref`** | query | true | undefined | スナップショットの内部名 | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織 ID を指定します | +| **`sandboxIdOrName`** | path | true | undefined | サンドボックスの ID または名前 | +| **`token`** | query | false | undefined | 失効させる SSH アクセストークン。指定しない場合、そのサンドボックスに対するすべての SSH アクセスが失効します。 | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | スナップショットに対して見つかったランナー(サンドボックスがスケジュールおよび実行される基盤の計算ノード/ホスト) | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :---------------------- | +| **`200`** | SSH アクセスが取り消されました | -## GET /toolbox/\{sandboxId\}/toolbox/project-dir +## GET /sandbox/ssh-access/validate \{#get-sandboxssh-accessvalidate\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して、組織(Organization)IDを指定します | -| **`sandboxId`** | path | true | undefined | undefined | +### パラメーター \{#parameters\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | プロジェクトディレクトリを正常に取得しました | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`token`** | query | true | undefined | 検証対象の SSH アクセストークン | +### レスポンス \{#responses\} -## GET /toolbox/\{sandboxId\}/toolbox/files +| ステータスコード | 説明 | +| :---------- | :------------------- | +| **`200`** | SSH アクセス検証の結果 | -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | いいえ | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | はい | undefined | なし | -| **`path`** | query | いいえ | undefined | なし | +## POST /runners \{#post-runners\} + +### レスポンス \{#responses\} -### レスポンス | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ファイル一覧の取得に成功 | +| :---------- | :---------- | +| **`201`** | | -## DELETE /toolbox/\{sandboxId\}/toolbox/files -サンドボックス内のファイルを削除 +## GET /runners \{#get-runners\} -### Parameters -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | なし | -| **`path`** | query | true | undefined | なし | +### レスポンス \{#responses\} -### Responses | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ファイルを正常に削除しました | +| :---------- | :---------- | +| **`200`** | | + +## PATCH /runners/{id}/scheduling \{#patch-runnersidscheduling\} +### パラメータ \{#parameters\} -## GET /toolbox/\{sandboxId\}/toolbox/files/download -サンドボックスからファイルをダウンロード +| Name | Location | Required | Type | Description | +| :------- | :------- | :------- | :-------- | :---------- | +| **`id`** | path | true | undefined | undefined | -### Parameters -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織(Organization)IDを指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`path`** | query | true | undefined | undefined | +### レスポンス \{#responses\} -### Responses | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ファイルを正常にダウンロードしました | +| :---------- | :---------- | +| **`200`** | | +## GET /runners/by-sandbox/{sandboxId} \{#get-runnersby-sandboxsandboxid\} -## GET /toolbox/\{sandboxId\}/toolbox/files/find -サンドボックス内のファイルでテキスト/パターンを検索 +### パラメータ \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織(Organization)IDを指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`path`** | query | true | undefined | undefined | -| **`pattern`** | query | true | undefined | undefined | +| Name | Location | Required | Type | Description | +| :-------------- | :------- | :------- | :-------- | :---------- | +| **`sandboxId`** | path | true | undefined | undefined | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 検索が正常に完了しました | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :---------- | +| **`200`** | Runner が見つかりました | -## POST /toolbox/\{sandboxId\}/toolbox/files/folder -サンドボックス内にフォルダを作成 +## GET /runners/by-snapshot-ref \{#get-runnersby-snapshot-ref\} -### Parameters -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | 未定義 | -| **`path`** | query | true | undefined | 未定義 | -| **`mode`** | query | true | undefined | 未定義 | +### パラメーター \{#parameters\} -### Responses -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | フォルダを作成しました | +| Name | Location | Required | Type | Description | +| :-------- | :------- | :------- | :-------- | :-------------------- | +| **`ref`** | query | true | undefined | スナップショット参照 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :--------------------------- | +| **`200`** | スナップショットに使用可能なランナーが見つかりました | + +## GET /toolbox/{sandboxId}/toolbox/project-dir \{#get-toolboxsandboxidtoolboxproject-dir\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :-------------- | :--------------------------- | +| **`200`** | プロジェクトディレクトリを正常に取得しました | + +## GET /toolbox/{sandboxId}/toolbox/user-home-dir \{#get-toolboxsandboxidtoolboxuser-home-dir\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | 未定義 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :---------------------------------- | +| **`200`** | ユーザーのホームディレクトリを正常に取得できました | + +## GET /toolbox/{sandboxId}/toolbox/work-dir \{#get-toolboxsandboxidtoolboxwork-dir\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | 未定義 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :----------------------- | +| **`200`** | Work-dir の取得に成功しました | + +## GET /toolbox/{sandboxId}/toolbox/files \{#get-toolboxsandboxidtoolboxfiles\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | false | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :------------------------ | +| **`200`** | ファイルの一覧を正常に取得しました | + +## DELETE /toolbox/{sandboxId}/toolbox/files \{#delete-toolboxsandboxidtoolboxfiles\} + +サンドボックス内のファイルを削除する + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`recursive`** | query | false | undefined | undefined | +| **`path`** | query | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :---------------- | +| **`200`** | ファイルを正常に削除しました | + +## GET /toolbox/{sandboxId}/toolbox/files/download \{#get-toolboxsandboxidtoolboxfilesdownload\} + +サンドボックスからファイルをダウンロードします + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :----------------- | +| **`200`** | ファイルを正常にダウンロード | + +## POST /toolbox/{sandboxId}/toolbox/files/bulk-download \{#post-toolboxsandboxidtoolboxfilesbulk-download\} + +指定されたパスを含む multipart/form-data のバンドルをストリーミングで返します + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :-------------- | :-------------------------------------------------------- | +| **`200`** | 各ファイルがパートとして含まれる multipart/form-data レスポンス | + +## GET /toolbox/{sandboxId}/toolbox/files/find \{#get-toolboxsandboxidtoolboxfilesfind\} + +サンドボックス内のファイルでテキストやパターンを検索する + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | true | undefined | undefined | +| **`pattern`** | query | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------------ | +| **`200`** | 検索が正常に終了しました | + +## POST /toolbox/{sandboxId}/toolbox/files/folder \{#post-toolboxsandboxidtoolboxfilesfolder\} + +サンドボックス内にフォルダを作成します + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | true | undefined | undefined | +| **`mode`** | query | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :-------------------------- | +| **`200`** | フォルダーが正常に作成されました | + +## GET /toolbox/{sandboxId}/toolbox/files/info \{#get-toolboxsandboxidtoolboxfilesinfo\} + +サンドボックス内のファイル情報を取得します + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :-------------------------- | +| **`200`** | ファイル情報の取得に成功 | + +## POST /toolbox/{sandboxId}/toolbox/files/move \{#post-toolboxsandboxidtoolboxfilesmove\} +サンドボックス内のファイルを移動する -## GET /toolbox/\{sandboxId\}/toolbox/files/info -サンドボックス内のファイル情報を取得 +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`path`** | query | true | undefined | undefined | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`source`** | query | true | undefined | undefined | +| **`destination`** | query | true | undefined | undefined | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ファイル情報の取得に成功 | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :---------- | :---------------- | +| **`200`** | ファイルは正常に移動されました | -## POST /toolbox/\{sandboxId\}/toolbox/files/move -サンドボックス内のファイルを移動 +## POST /toolbox/{sandboxId}/toolbox/files/permissions \{#post-toolboxsandboxidtoolboxfilespermissions\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Daytona内のリソースとユーザーのグループ化、ロールや請求など)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`source`** | query | true | undefined | undefined | -| **`destination`** | query | true | undefined | undefined | +サンドボックス内のファイルの所有者・グループ・権限を設定します -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ファイルを正常に移動しました | +### パラメーター \{#parameters\} +| 名前 | 位置 | 必須 | 型 | 説明 | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | true | undefined | undefined | +| **`owner`** | query | false | undefined | undefined | +| **`group`** | query | false | undefined | undefined | +| **`mode`** | query | false | undefined | undefined | -## POST /toolbox/\{sandboxId\}/toolbox/files/permissions -サンドボックス内のファイルの所有者/グループ/権限を設定 +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`path`** | query | true | undefined | undefined | -| **`owner`** | query | false | undefined | undefined | -| **`group`** | query | false | undefined | undefined | -| **`mode`** | query | false | undefined | undefined | +| ステータスコード | 説明 | +| :---------- | :------------------------------------ | +| **`200`** | ファイルのパーミッションが正常に更新されました | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ファイルの権限を正常に更新しました | +## POST /toolbox/{sandboxId}/toolbox/files/replace \{#post-toolboxsandboxidtoolboxfilesreplace\} +サンドボックス内の複数ファイルでテキスト/パターンを一括置換 -## POST /toolbox/\{sandboxId\}/toolbox/files/replace -サンドボックス(隔離された一時的な実行環境)内の複数ファイルでテキスト/パターンを一括置換する +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定する | -| **`sandboxId`** | path | true | undefined | undefined | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | テキストを正常に置換しました | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :----------------- | +| **`200`** | テキストを正常に置換しました | -## GET /toolbox/\{sandboxId\}/toolbox/files/search -サンドボックス(隔離された一時的な実行環境)内のファイルを検索 +## GET /toolbox/{sandboxId}/toolbox/files/search \{#get-toolboxsandboxidtoolboxfilessearch\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織(組織)IDを指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`path`** | query | true | undefined | undefined | -| **`pattern`** | query | true | undefined | undefined | +サンドボックス内のファイルを検索する -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 検索が正常に完了しました | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | true | undefined | undefined | +| **`pattern`** | query | true | undefined | undefined | -## POST /toolbox/\{sandboxId\}/toolbox/files/upload -サンドボックス内にファイルをアップロード +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Daytona内のリソースとユーザーのグループ化、ロールや請求など)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`path`** | query | true | undefined | undefined | +| ステータスコード | 説明 | +| :--------------- | :---------------------- | +| **`200`** | 検索が正常に完了しました | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ファイルのアップロードに成功しました | +## POST /toolbox/{sandboxId}/toolbox/files/upload \{#post-toolboxsandboxidtoolboxfilesupload\} +サンドボックス内にファイルをアップロードします -## POST /toolbox/\{sandboxId\}/toolbox/files/bulk-upload -サンドボックス内に複数ファイルをアップロード +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | true | undefined | undefined | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ファイルを正常にアップロードしました | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :---------------------- | +| **`200`** | ファイルのアップロードに成功しました | + +## POST /toolbox/{sandboxId}/toolbox/files/bulk-upload \{#post-toolboxsandboxidtoolboxfilesbulk-upload\} + +サンドボックス内に複数のファイルをアップロードします + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | 未定義 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :-------------------------- | +| **`200`** | ファイルが正常にアップロードされました | + +## POST /toolbox/{sandboxId}/toolbox/git/add \{#post-toolboxsandboxidtoolboxgitadd\} -## POST /toolbox/\{sandboxId\}/toolbox/git/add ファイルを Git のコミットに追加します -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :------------------------------ | +| **`200`** | ファイルが Git に正常に追加されました | + +## GET /toolbox/{sandboxId}/toolbox/git/branches \{#get-toolboxsandboxidtoolboxgitbranches\} + +Git リポジトリのブランチ一覧を取得します + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :----------------------- | +| **`200`** | ブランチ一覧を正常に取得しました | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ファイルを Git に正常に追加しました | +## POST /toolbox/{sandboxId}/toolbox/git/branches \{#post-toolboxsandboxidtoolboxgitbranches\} +Git リポジトリにブランチを作成する -## GET /toolbox/\{sandboxId\}/toolbox/git/branches -Git リポジトリからブランチ一覧を取得 +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Daytona内のリソースとユーザーのグループ化、ロールや請求など)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`path`** | query | true | undefined | undefined | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ブランチ一覧の取得に成功しました | +### レスポンス \{#responses\} -## POST /toolbox/\{sandboxId\}/toolbox/git/branches -Git リポジトリにブランチを作成 +| ステータスコード | 説明 | +| :---------- | :-------------------------- | +| **`200`** | ブランチが正常に作成されました | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定 | -| **`sandboxId`** | path | true | undefined | undefined | +## DELETE /toolbox/{sandboxId}/toolbox/git/branches \{#delete-toolboxsandboxidtoolboxgitbranches\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ブランチの作成に成功しました | +Git リポジトリのブランチを削除します -## DELETE /toolbox/\{sandboxId\}/toolbox/git/branches -Git リポジトリのブランチを削除 +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | 組織 ID を指定するために JWT と併用します | +| **`sandboxId`** | path | true | undefined | undefined | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ブランチを正常に削除しました | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :------------- | +| **`200`** | ブランチが正常に削除されました | -## POST /toolbox/\{sandboxId\}/toolbox/git/clone -Gitリポジトリをクローンする +## POST /toolbox/{sandboxId}/toolbox/git/clone \{#post-toolboxsandboxidtoolboxgitclone\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織(Organization)IDを指定します | -| **`sandboxId`** | path | true | undefined | undefined | +Git リポジトリをクローン -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | リポジトリを正常にクローンしました | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :----------------------- | +| **`200`** | リポジトリのクローンに成功 | + +## POST /toolbox/{sandboxId}/toolbox/git/commit \{#post-toolboxsandboxidtoolboxgitcommit\} -## POST /toolbox/\{sandboxId\}/toolbox/git/commit Git リポジトリに変更をコミットします -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織 ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +### パラメーター \{#parameters\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 変更のコミットに成功しました | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | 組織 ID を指定するために JWT と併用します | +| **`sandboxId`** | path | true | undefined | undefined | +### レスポンス \{#responses\} -## GET /toolbox/\{sandboxId\}/toolbox/git/history -Git リポジトリのコミット履歴を取得 +| ステータスコード | 説明 | +| :--------------- | :----------------------- | +| **`200`** | 変更が正常に確定されました | -### Parameters -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Daytona内のリソースとユーザーのグループ化、ロールや請求など)ID を指定する | -| **`sandboxId`** | path | true | undefined | undefined | -| **`path`** | query | true | undefined | undefined | +## GET /toolbox/{sandboxId}/toolbox/git/history \{#get-toolboxsandboxidtoolboxgithistory\} -### Responses -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | コミット履歴を正常に取得しました | +Git リポジトリのコミット履歴を取得します +### パラメーター \{#parameters\} -## POST /toolbox/\{sandboxId\}/toolbox/git/pull -リモートから変更を取得する(pull) +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :--------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | true | undefined | undefined | -### Parameters -| 名称 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定する | -| **`sandboxId`** | path | true | undefined | undefined | +### レスポンス \{#responses\} -### Responses -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 変更を正常に取得しました | +| ステータスコード | 説明 | +| :---------- | :------------------------------------ | +| **`200`** | コミット履歴の取得に成功 | + +## POST /toolbox/{sandboxId}/toolbox/git/pull \{#post-toolboxsandboxidtoolboxgitpull\} + +リモートの変更を取得する + +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :-------------------- | +| **`200`** | 変更が正常に取得されました | + +## POST /toolbox/{sandboxId}/toolbox/git/push \{#post-toolboxsandboxidtoolboxgitpush\} -## POST /toolbox/\{sandboxId\}/toolbox/git/push 変更をリモートにプッシュする -### Parameters -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)IDを指定する | -| **`sandboxId`** | path | true | undefined | undefined | +### パラメーター \{#parameters\} -### Responses -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 変更のプッシュに成功 | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :-------------------------- | +| **`200`** | 変更が正常にプッシュされました | + +## POST /toolbox/{sandboxId}/toolbox/git/checkout \{#post-toolboxsandboxidtoolboxgitcheckout\} +Git リポジトリ内のブランチまたはコミットをチェックアウトします -## POST /toolbox/\{sandboxId\}/toolbox/git/checkout -git リポジトリでブランチまたはコミットをチェックアウトする +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定する | -| **`sandboxId`** | path | true | undefined | undefined | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :--------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID(Organization ID)を指定します | +| **`sandboxId`** | path | true | undefined | undefined | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ブランチを正常にチェックアウトしました | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :------------------------ | +| **`200`** | ブランチのチェックアウトに成功しました | -## GET /toolbox/\{sandboxId\}/toolbox/git/status -Git リポジトリのステータスを取得 +## GET /toolbox/{sandboxId}/toolbox/git/status \{#get-toolboxsandboxidtoolboxgitstatus\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`path`** | query | true | undefined | undefined | +Git リポジトリのステータスを取得します -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | Git ステータスを正常に取得しました | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`path`** | query | true | undefined | undefined | -## POST /toolbox/\{sandboxId\}/toolbox/process/execute -サンドボックス(隔離された一時的な実行環境)内でコマンドを同期的に実行します +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Daytona内のリソースとユーザーのグループ化、ロールや請求など)の ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +| ステータスコード | 説明 | +| :--------------- | :------------------------ | +| **`200`** | Git ステータスの取得に成功しました | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | コマンドが正常に実行されました | +## POST /toolbox/{sandboxId}/toolbox/process/execute \{#post-toolboxsandboxidtoolboxprocessexecute\} +サンドボックス内でコマンドを同期実行します -## GET /toolbox/\{sandboxId\}/toolbox/process/session -サンドボックス内のすべてのアクティブなセッションを一覧表示します +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織(Organization)IDを指定します | -| **`sandboxId`** | path | true | undefined | undefined | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | 未定義 | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | セッションを正常に取得しました | +### レスポンス \{#responses\} -## POST /toolbox/\{sandboxId\}/toolbox/process/session -サンドボックス(隔離された一時的な実行環境)内で新しいセッションを作成する +| ステータスコード | 説明 | +| :--------------- | :-------------------------- | +| **`200`** | コマンドが正常に実行されました | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織(Organization)IDを指定する | -| **`sandboxId`** | path | true | undefined | undefined | +## GET /toolbox/{sandboxId}/toolbox/process/session \{#get-toolboxsandboxidtoolboxprocesssession\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | | +サンドボックス内のアクティブなセッションをすべて一覧表示します +### パラメーター \{#parameters\} -## GET /toolbox/\{sandboxId\}/toolbox/process/session/\{sessionId\} -IDでセッションを取得する +| 名前 | 位置 | 必須 | 型 | 説明 | +| :------------------------------ | :--- | :--- | :-------- | :---------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | -### Parameters -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | いいえ | undefined | JWTと併用して組織(Organization)IDを指定します | -| **`sandboxId`** | path | はい | undefined | undefined | -| **`sessionId`** | path | はい | undefined | undefined | +### レスポンス \{#responses\} + +| Status Code | 説明 | +| :---------- | :----------------------- | +| **`200`** | セッションが正常に取得されました | + +## POST /toolbox/{sandboxId}/toolbox/process/session \{#post-toolboxsandboxidtoolboxprocesssession\} + +サンドボックス内に新しいセッションを作成します + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} -### Responses | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | セッションの取得に成功しました | +| :---------- | :---------- | +| **`200`** | | + +## GET /toolbox/{sandboxId}/toolbox/process/session/{sessionId} \{#get-toolboxsandboxidtoolboxprocesssessionsessionid\} + +IDでセッションを取得 + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`sessionId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :----------------------------- | +| **`200`** | セッションの取得に成功 | + +## DELETE /toolbox/{sandboxId}/toolbox/process/session/{sessionId} \{#delete-toolboxsandboxidtoolboxprocesssessionsessionid\} -## DELETE /toolbox/\{sandboxId\}/toolbox/process/session/\{sessionId\} 特定のセッションを削除します -### Parameters -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`sessionId`** | path | true | undefined | undefined | +### パラメーター \{#parameters\} -### Responses -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | セッションを正常に削除しました | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`sessionId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :------------------ | +| **`200`** | セッションを削除しました | + +## POST /toolbox/{sandboxId}/toolbox/process/session/{sessionId}/exec \{#post-toolboxsandboxidtoolboxprocesssessionsessionidexec\} -## POST /toolbox/\{sandboxId\}/toolbox/process/session/\{sessionId\}/exec 特定のセッションでコマンドを実行する -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織(Organization)IDを指定する | -| **`sandboxId`** | path | true | undefined | undefined | -| **`sessionId`** | path | true | undefined | undefined | +### パラメーター \{#parameters\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | コマンドが正常に実行された | -| **`202`** | コマンドを受け付け、処理中 | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`sessionId`** | path | true | undefined | undefined | +### レスポンス \{#responses\} -## GET /toolbox/\{sandboxId\}/toolbox/process/session/\{sessionId\}/command/\{commandId\} -IDでセッションコマンドを取得 +| ステータスコード | 説明 | +| :---------- | :-------------------------------------- | +| **`200`** | コマンドが正常に実行されました | +| **`202`** | コマンドが受理され、処理中です | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織IDを指定 | -| **`sandboxId`** | path | true | undefined | undefined | -| **`sessionId`** | path | true | undefined | undefined | -| **`commandId`** | path | true | undefined | undefined | +## GET /toolbox/{sandboxId}/toolbox/process/session/{sessionId}/command/{commandId} \{#get-toolboxsandboxidtoolboxprocesssessionsessionidcommandcommandid\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | セッションコマンドを正常に取得 | +ID によるセッションコマンドの取得 +### パラメーター \{#parameters\} -## GET /toolbox/\{sandboxId\}/toolbox/process/session/\{sessionId\}/command/\{commandId\}/logs -セッション内の特定のコマンドのログを取得します +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`sessionId`** | path | true | undefined | undefined | +| **`commandId`** | path | true | undefined | undefined | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`sessionId`** | path | true | undefined | undefined | -| **`commandId`** | path | true | undefined | undefined | -| **`follow`** | query | false | undefined | undefined | +### レスポンス \{#responses\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | コマンドのログストリーム | +| ステータスコード | 説明 | +| :---------- | :-------------------------------- | +| **`200`** | セッションコマンドを正常に取得しました | +## GET /toolbox/{sandboxId}/toolbox/process/session/{sessionId}/command/{commandId}/logs \{#get-toolboxsandboxidtoolboxprocesssessionsessionidcommandcommandidlogs\} + +セッション内の特定のコマンドのログを取得します -## POST /toolbox/\{sandboxId\}/toolbox/lsp/completions -Completion リクエストは、指定したカーソル位置の補完候補を算出するために、クライアントからサーバーへ送信されます。 +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`sessionId`** | path | true | undefined | undefined | +| **`commandId`** | path | true | undefined | undefined | +| **`follow`** | query | false | undefined | ログをストリーミングするかどうか | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | OK | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :------------------------------------------------- | +| **`200`** | stdout と stderr のプレフィックスで区別されたコマンドログストリーム | -## POST /toolbox/\{sandboxId\}/toolbox/lsp/did-close -ドキュメントがクライアント側で閉じられた際に、クライアントからサーバーへ送信されるドキュメントクローズ通知です。 +| ステータスコード | 説明 | +| :--------------- | :---------------- | +| **`200`** | コマンドログストリーム | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +## POST /toolbox/{sandboxId}/toolbox/lsp/completions \{#post-toolboxsandboxidtoolboxlspcompletions\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | OK | +Completion リクエストは、指定されたカーソル位置での補完候補を算出するため、クライアントからサーバーに送信されます。 +### パラメーター \{#parameters\} -## POST /toolbox/\{sandboxId\}/toolbox/lsp/did-open -ドキュメントのオープン通知は、新規に開いたテキストドキュメントを知らせるため、クライアントからサーバーへ送信されます。 +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | 未定義 | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +### レスポンス \{#responses\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | OK | +| ステータスコード | 説明 | +| :---------- | :---------- | +| **`200`** | 正常 | +## POST /toolbox/{sandboxId}/toolbox/lsp/did-close \{#post-toolboxsandboxidtoolboxlspdid-close\} -## GET /toolbox/\{sandboxId\}/toolbox/lsp/document-symbols -ドキュメントシンボルのリクエストはクライアントからサーバーに送信されます。 +ドキュメントがクライアント側で閉じられた際、ドキュメントクローズ通知がクライアントからサーバーに送信されます。 -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`languageId`** | query | true | undefined | undefined | -| **`pathToProject`** | query | true | undefined | undefined | -| **`uri`** | query | true | undefined | undefined | +### パラメーター \{#parameters\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | OK | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :--------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | 未定義 | +### レスポンス \{#responses\} -## POST /toolbox/\{sandboxId\}/toolbox/lsp/start -サンドボックスのプロジェクト内で LSP(言語サーバープロトコル)サーバープロセスを開始します +| ステータスコード | 説明 | +| :---------- | :---------- | +| **`200`** | 成功 | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +## POST /toolbox/{sandboxId}/toolbox/lsp/did-open \{#post-toolboxsandboxidtoolboxlspdid-open\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 正常 | +ドキュメントのオープン通知は、新たに開かれたテキストドキュメントを知らせるためにクライアントからサーバーへ送信されます。 +### パラメーター \{#parameters\} -## POST /toolbox/\{sandboxId\}/toolbox/lsp/stop -サンドボックス内のプロジェクトで動作する LSP(言語サーバープロトコル)サーバープロセスを停止します +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | -### Parameters -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`sandboxId`** | path | true | undefined | undefined | +### レスポンス \{#responses\} -### Responses | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | OK | +| :---------- | :---------- | +| **`200`** | 正常終了 | +## GET /toolbox/{sandboxId}/toolbox/lsp/document-symbols \{#get-toolboxsandboxidtoolboxlspdocument-symbols\} -## GET /toolbox/\{sandboxId\}/toolbox/lsp/workspace-symbols -ワークスペースシンボルリクエストは、クライアントからサーバーに送られ、クエリ文字列に合致するプロジェクト全体のシンボルを一覧します。 +ドキュメントシンボルのリクエストはクライアントからサーバーに送信されます。 -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織(Organization)IDを指定します | -| **`sandboxId`** | path | true | undefined | undefined | -| **`languageId`** | query | true | undefined | undefined | -| **`pathToProject`** | query | true | undefined | undefined | -| **`query`** | query | true | undefined | undefined | +### パラメーター \{#parameters\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | OK | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`languageId`** | query | true | undefined | undefined | +| **`pathToProject`** | query | true | undefined | undefined | +| **`uri`** | query | true | undefined | undefined | +### レスポンス \{#responses\} -## POST /snapshots +| ステータスコード | 説明 | +| :---------- | :---------- | +| **`200`** | 正常 | + +## POST /toolbox/{sandboxId}/toolbox/lsp/start \{#post-toolboxsandboxidtoolboxlspstart\} + +サンドボックスのプロジェクト内で LSP サーバー・プロセスを開始します + +### パラメーター \{#parameters\} -### Parameters -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | いいえ | undefined | JWT と併用して 組織(Organization)ID を指定します | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | 組織 ID を指定するために JWT と併用します | +| **`sandboxId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} -### Responses | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | スナップショットが正常に作成されました。 | -| **`400`** | 不正なリクエスト - タグ「:latest」のスナップショットは許可されていません | +| :---------- | :---------- | +| **`200`** | 正常 | + +## POST /toolbox/{sandboxId}/toolbox/lsp/stop \{#post-toolboxsandboxidtoolboxlspstop\} + +サンドボックスのプロジェクト内で LSP サーバー プロセスを停止します -## GET /snapshots +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)のIDを指定 | -| **`limit`** | query | false | undefined | 1ページあたりの件数 | -| **`page`** | query | false | undefined | ページ番号 | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定する際に使用します | +| **`sandboxId`** | path | true | undefined | 未定義 | + +### レスポンス \{#responses\} -### レスポンス | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ページネーション対応のスナップショット(Snapshot)一覧 | +| :---------- | :---------- | +| **`200`** | 正常 | + +## GET /toolbox/{sandboxId}/toolbox/lsp/workspace-symbols \{#get-toolboxsandboxidtoolboxlspworkspace-symbols\} +Workspace Symbol リクエストは、クエリ文字列に一致するプロジェクト全体のシンボルを列挙するために、クライアントからサーバーへ送信されます。 -## GET /snapshots/\{id\} +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織(Organization)IDを指定 | -| **`id`** | path | true | undefined | スナップショット(Snapshot)のIDまたは名前 | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`languageId`** | query | true | undefined | undefined | +| **`pathToProject`** | query | true | undefined | undefined | +| **`query`** | query | true | undefined | undefined | + +### レスポンス \{#responses\} -### レスポンス | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | スナップショット | -| **`404`** | スナップショットが見つかりません | +| :---------- | :---------- | +| **`200`** | 正常 | -## DELETE /snapshots/\{id\} +## POST /toolbox/{sandboxId}/toolbox/computeruse/start \{#post-toolboxsandboxidtoolboxcomputerusestart\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`id`** | path | true | undefined | スナップショット(Snapshot)ID | +VNC デスクトップ関連のすべてのプロセス(Xvfb、xfce4、x11vnc、noVNC)を起動します -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | スナップショットを削除しました | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | 未定義 | -## PATCH /snapshots/\{id\}/toggle +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)のIDを指定します | -| **`id`** | path | true | undefined | スナップショット(Snapshot)のID | +| ステータスコード | 説明 | +| :--------------- | :-------------------------------- | +| **`200`** | Computer use プロセスの開始に成功 | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | スナップショットの状態を切り替えました | +## POST /toolbox/{sandboxId}/toolbox/computeruse/stop \{#post-toolboxsandboxidtoolboxcomputerusestop\} +VNC デスクトップ関連の全プロセス(Xvfb、xfce4、x11vnc、noVNC)を停止します -## PATCH /snapshots/\{id\}/general +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`id`** | path | true | undefined | スナップショット(Snapshot)ID | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | 組織 ID を指定するために JWT と併用します | +| **`sandboxId`** | path | true | undefined | undefined | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | スナップショットの general ステータスが設定されました | +### レスポンス \{#responses\} +| Status Code | 説明 | +| :---------- | :-------------------------------- | +| **`200`** | Computer use プロセスが正常に停止しました | -## GET /snapshots/\{id\}/build-logs +## GET /toolbox/{sandboxId}/toolbox/computeruse/status \{#get-toolboxsandboxidtoolboxcomputerusestatus\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定 | -| **`id`** | path | true | undefined | スナップショット(Snapshot)ID | -| **`follow`** | query | false | undefined | ログストリームをフォローするかどうか | +すべての VNC デスクトップ・プロセスのステータスを取得します -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織 ID(Organization ID)を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | -## POST /snapshots/\{id\}/activate +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定します | -| **`id`** | path | true | undefined | スナップショット(Snapshot)ID | +| Status Code | 説明 | +| :---------- | :----------------------------- | +| **`200`** | コンピュータ使用状況を取得しました | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | スナップショットを正常に有効化しました。 | -| **`400`** | 不正なリクエスト - スナップショットがすでに有効、非アクティブ状態ではない、または関連するランナー(サンドボックスがスケジュールおよび実行される基盤の計算ノード/ホスト)があります | -| **`404`** | スナップショットが見つかりません | +## GET /toolbox/{sandboxId}/toolbox/computeruse/process/{processName}/status \{#get-toolboxsandboxidtoolboxcomputeruseprocessprocessnamestatus\} +特定のVNCプロセスのステータスを取得します -## GET /workspace +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定する | -| **`verbose`** | query | false | undefined | 詳細出力を含める | -| **`labels`** | query | false | undefined | フィルタに使用する JSON エンコード済みラベル | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`processName`** | path | true | undefined | undefined | +| **`sandboxId`** | path | true | undefined | undefined | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | すべてのワークスペースの一覧 | +### レスポンス \{#responses\} -## POST /workspace +| ステータスコード | 説明 | +| :--------------- | :------------------------------ | +| **`200`** | プロセスステータスを正常に取得しました | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織IDを指定します | +## POST /toolbox/{sandboxId}/toolbox/computeruse/process/{processName}/restart \{#post-toolboxsandboxidtoolboxcomputeruseprocessprocessnamerestart\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ワークスペースの作成に成功しました。 | +特定の VNC プロセスを再起動します +### パラメーター \{#parameters\} -## GET /workspace/\{workspaceId\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`processName`** | path | true | undefined | undefined | +| **`sandboxId`** | path | true | undefined | undefined | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)の ID を指定 | -| **`verbose`** | query | false | undefined | 冗長な出力を含める | -| **`workspaceId`** | path | true | undefined | ワークスペースの ID | +### レスポンス \{#responses\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ワークスペースの詳細 | +| Status Code | 説明 | +| :---------- | :--------------------- | +| **`200`** | プロセスが正常に再起動されました | -## DELETE /workspace/\{workspaceId\} +## GET /toolbox/{sandboxId}/toolbox/computeruse/process/{processName}/logs \{#get-toolboxsandboxidtoolboxcomputeruseprocessprocessnamelogs\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定 | -| **`workspaceId`** | path | true | undefined | ワークスペースの ID | -| **`force`** | query | true | undefined | 未定義 | +特定の VNC プロセスのログを取得します -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ワークスペースを削除しました | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`processName`** | path | true | undefined | undefined | +| **`sandboxId`** | path | true | undefined | undefined | -## POST /workspace/\{workspaceId\}/start +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`workspaceId`** | path | true | undefined | ワークスペースの ID | +| ステータスコード | 説明 | +| :--------------- | :---------------------------- | +| **`200`** | プロセスログの取得に成功しました | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ワークスペースを起動しました | +## GET /toolbox/{sandboxId}/toolbox/computeruse/process/{processName}/errors \{#get-toolboxsandboxidtoolboxcomputeruseprocessprocessnameerrors\} +特定のVNCプロセスのエラーログを取得します -## POST /workspace/\{workspaceId\}/stop +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`workspaceId`** | path | true | undefined | ワークスペースのID | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`processName`** | path | true | undefined | undefined | +| **`sandboxId`** | path | true | undefined | undefined | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ワークスペースを停止しました | +### レスポンス \{#responses\} +| Status Code | 説明 | +| :---------- | :---------------------------- | +| **`200`** | プロセスエラーを正常に取得しました | -## PUT /workspace/\{workspaceId\}/labels +## GET /toolbox/{sandboxId}/toolbox/computeruse/mouse/position \{#get-toolboxsandboxidtoolboxcomputerusemouseposition\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`workspaceId`** | path | true | undefined | ワークスペース ID | +現在のマウスカーソルの位置を取得 -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ラベルを正常に置換しました | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | 未定義 | -## POST /workspace/\{workspaceId\}/backup +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)のIDを指定します | -| **`workspaceId`** | path | true | undefined | ワークスペースのID | +| Status Code | 説明 | +| :---------- | :---------------------------- | +| **`200`** | マウス位置の取得に成功しました | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ワークスペースのバックアップの開始を受け付けました | +## POST /toolbox/{sandboxId}/toolbox/computeruse/mouse/move \{#post-toolboxsandboxidtoolboxcomputerusemousemove\} +マウスカーソルを指定した座標に移動します。 -## POST /workspace/\{workspaceId\}/public/\{isPublic\} +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)の ID を指定します | -| **`workspaceId`** | path | true | undefined | ワークスペースの ID | -| **`isPublic`** | path | true | undefined | 設定する公開ステータス | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`201`** | | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :---------------- | +| **`200`** | マウスの移動に成功しました | -## POST /workspace/\{workspaceId\}/autostop/\{interval\} +## POST /toolbox/{sandboxId}/toolbox/computeruse/mouse/click \{#post-toolboxsandboxidtoolboxcomputerusemouseclick\} -### パラメータ -| 名前 | ロケーション | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Daytona内のリソースとユーザーのグループ化、ロールや請求など)ID を指定します | -| **`workspaceId`** | path | true | undefined | ワークスペースのID | -| **`interval`** | path | true | undefined | 自動停止(サンドボックスのライフサイクルを制御する自動タイマー)の間隔(分)。0 で無効化 | +指定した座標でマウスをクリックします -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 自動停止(サンドボックスのライフサイクルを制御する自動タイマー)の間隔を設定しました | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :--------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定する際に使用します | +| **`sandboxId`** | path | true | undefined | undefined | -## POST /workspace/\{workspaceId\}/autoarchive/\{interval\} +### レスポンス \{#responses\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Daytona内のリソースとユーザーのグループ化、ロールや請求など)のIDを指定します | -| **`workspaceId`** | path | true | undefined | ワークスペースのID | -| **`interval`** | path | true | undefined | 自動アーカイブ間隔(分)。0 を指定すると最大間隔が使用されます | +| ステータスコード | 説明 | +| :--------------- | :----------------- | +| **`200`** | マウスクリックに成功しました | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 自動アーカイブ間隔を設定しました | +## POST /toolbox/{sandboxId}/toolbox/computeruse/mouse/drag \{#post-toolboxsandboxidtoolboxcomputerusemousedrag\} +マウスを開始座標から終了座標までドラッグします -## POST /sandbox/\{sandboxId\}/autodelete/\{interval\} +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定 | -| **`sandboxId`** | path | true | undefined | サンドボックス(Sandbox)の ID | -| **`interval`** | path | true | undefined | 自動削除の間隔(分)。負の値で無効、0 で停止時に即時削除 | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | 自動削除の間隔を設定しました | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :---------- | :------------------------- | +| **`200`** | マウスのドラッグに成功 | -## POST /workspace/\{workspaceId\}/archive +## POST /toolbox/{sandboxId}/toolbox/computeruse/mouse/scroll \{#post-toolboxsandboxidtoolboxcomputerusemousescroll\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | ヘッダー | いいえ | 未定義 | JWT と併用して組織(Organization)IDを指定します | -| **`workspaceId`** | パス | はい | 未定義 | 未定義 | +指定した座標でマウスをスクロールします -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ワークスペースをアーカイブしました | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | -## GET /workspace/\{workspaceId\}/ports/\{port\}/preview-url +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定 | -| **`workspaceId`** | path | true | undefined | ワークスペース ID | -| **`port`** | path | true | undefined | プレビューリンクを取得するポート番号 | +| ステータスコード | 説明 | +| :--------------- | :------------------------ | +| **`200`** | マウススクロールに成功しました | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 指定したポートのプレビューリンク | +## POST /toolbox/{sandboxId}/toolbox/computeruse/keyboard/type \{#post-toolboxsandboxidtoolboxcomputerusekeyboardtype\} +キーボードでテキストを入力する -## GET /workspace/\{workspaceId\}/build-logs +### パラメーター \{#parameters\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWTと併用して組織(Organization)のIDを指定します | -| **`workspaceId`** | path | true | undefined | ワークスペースID | -| **`follow`** | query | false | undefined | ログストリームをフォローするかどうか | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ビルドログのストリーム | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :---------- | :---------------- | +| **`200`** | テキストの入力に成功 | -## GET /preview/\{sandboxId\}/public +## POST /toolbox/{sandboxId}/toolbox/computeruse/keyboard/key \{#post-toolboxsandboxidtoolboxcomputerusekeyboardkey\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`sandboxId`** | path | true | undefined | サンドボックス(隔離された一時的な実行環境)のID | +必要に応じて修飾キーを指定してキー入力を実行します -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | サンドボックスの公開状態 | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :--------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | -## GET /preview/\{sandboxId\}/validate/\{authToken\} +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`sandboxId`** | path | true | undefined | サンドボックスのID | -| **`authToken`** | path | true | undefined | サンドボックスの認証トークン | +| ステータスコード | 説明 | +| :---------- | :----------------------- | +| **`200`** | キーが正常に押下されました | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | サンドボックス認証トークンの検証結果 | +## POST /toolbox/{sandboxId}/toolbox/computeruse/keyboard/hotkey \{#post-toolboxsandboxidtoolboxcomputerusekeyboardhotkey\} +ホットキーの組み合わせを押す -## GET /preview/\{sandboxId\}/access +### パラメーター \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`sandboxId`** | パス | 必須 | undefined | undefined | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | | +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :---------------- | +| **`200`** | ホットキーが正常に押されました | -## GET /volumes +## GET /toolbox/{sandboxId}/toolbox/computeruse/screenshot \{#get-toolboxsandboxidtoolboxcomputerusescreenshot\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して 組織(Organization)ID を指定します | -| **`includeDeleted`** | query | false | undefined | レスポンスに削除済みのボリューム(Volume)を含めます | +画面全体のスクリーンショットを取得します -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | すべてのボリューム(Volume)の一覧 | +### パラメーター \{#parameters\} -## POST /volumes +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`show_cursor`** | query | false | undefined | undefined | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Daytona内のリソースとユーザーのグループ化、ロールや請求など)の ID を指定します | +### レスポンス \{#responses\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | ボリューム(S3互換オブジェクトストレージをバックエンドに持つFUSEベースの共有ストレージ)が正常に作成されました。 | +| ステータスコード | 説明 | +| :---------- | :---------------------------- | +| **`200`** | スクリーンショットの取得に成功 | +## GET /toolbox/{sandboxId}/toolbox/computeruse/screenshot/region \{#get-toolboxsandboxidtoolboxcomputerusescreenshotregion\} -## GET /volumes/\{volumeId\} +特定領域のスクリーンショットを取得します -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)のIDを指定します | -| **`volumeId`** | path | true | undefined | ボリューム(Volume)のID | +### パラメータ \{#parameters\} -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ボリュームの詳細 | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して Organization ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`show_cursor`** | query | false | undefined | undefined | +| **`height`** | query | true | undefined | undefined | +| **`width`** | query | true | undefined | undefined | +| **`y`** | query | true | undefined | undefined | +| **`x`** | query | true | undefined | undefined | -## DELETE /volumes/\{volumeId\} +### レスポンス \{#responses\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Daytona 内のリソースとユーザーのグループ化、ロールや請求など)の ID を指定します | -| **`volumeId`** | path | true | undefined | ボリューム(S3互換オブジェクトストレージをバックエンドに持つFUSEベースの共有ストレージ)の ID | +| ステータスコード | 説明 | +| :--------------- | :---------------------------------- | +| **`200`** | リージョンのスクリーンショットを正常に取得しました | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ボリュームは削除対象としてマークされました | +## GET /toolbox/{sandboxId}/toolbox/computeruse/screenshot/compressed \{#get-toolboxsandboxidtoolboxcomputerusescreenshotcompressed\} +フォーマット、品質、スケールを指定して圧縮スクリーンショットを取得します -## GET /volumes/by-name/\{name\} +### パラメータ \{#parameters\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`name`** | path | true | undefined | ボリューム(S3互換オブジェクトストレージをバックエンドに持つFUSEベースの共有ストレージ)の名前 | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して organization ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`scale`** | query | false | undefined | undefined | +| **`quality`** | query | false | undefined | undefined | +| **`format`** | query | false | undefined | undefined | +| **`show_cursor`** | query | false | undefined | undefined | -### レスポンス -| ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | ボリュームの詳細 | +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :-------------------------------- | +| **`200`** | 圧縮スクリーンショットの取得に成功 | + +## GET /toolbox/{sandboxId}/toolbox/computeruse/screenshot/region/compressed \{#get-toolboxsandboxidtoolboxcomputerusescreenshotregioncompressed\} + +特定の領域の圧縮済みスクリーンショットを取得します + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`sandboxId`** | path | true | undefined | undefined | +| **`scale`** | query | false | undefined | undefined | +| **`quality`** | query | false | undefined | undefined | +| **`format`** | query |false | undefined | undefined | +| **`show_cursor`** | query | false | undefined | undefined | +| **`height`** | query | true | undefined | undefined | +| **`width`** | query | true | undefined | undefined | +| **`y`** | query | true | undefined | undefined | +| **`x`** | query | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :----------------------------- | +| **`200`** | 圧縮領域のスクリーンショットを正常に取得しました | + +## GET /toolbox/{sandboxId}/toolbox/computeruse/display/info \{#get-toolboxsandboxidtoolboxcomputerusedisplayinfo\} + +ディスプレイ情報を取得する + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | 未定義 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :--------------------------- | +| **`200`** | Display 情報を正常に取得しました | + +## GET /toolbox/{sandboxId}/toolbox/computeruse/display/windows \{#get-toolboxsandboxidtoolboxcomputerusedisplaywindows\} + +開いているウィンドウのリストを取得します + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`sandboxId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :---------------------- | +| **`200`** | Windows の一覧を正常に取得しました | + +## POST /snapshots \{#post-snapshots\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :---------------------------------------------------------- | +| **`200`** | スナップショットが正常に作成されました。 | +| **`400`** | 不正なリクエスト - タグ「:latest」が付いたスナップショットは許可されていません | + +## GET /snapshots \{#get-snapshots\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`page`** | query | false | undefined | 結果のページ番号 | +| **`limit`** | query | false | undefined | 1 ページあたりの結果数 | +| **`name`** | query | false | undefined | 名前の部分一致でフィルタリングします | +| **`sort`** | query | false | undefined | ソート対象のフィールド | +| **`order`** | query | false | undefined | ソート方向 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :------------------------------ | +| **`200`** | すべてのスナップショットのページネーションされた一覧 | + +## GET /snapshots/can-cleanup-image \{#get-snapshotscan-cleanup-image\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :--------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定する際に使用します | +| **`imageName`** | query | true | undefined | 確認対象のタグ付きイメージ名 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :----------------------------------------- | +| **`200`** | 画像をクリーンアップ可能かどうかを示すブール値 | + +| ステータスコード | 説明 | +| :--------------- | :----------------------------------- | +| **`200`** | ページネーション付きのスナップショット一覧 | + +## GET /snapshots/{id} \{#get-snapshotsid\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定する際に使用します | +| **`id`** | path | true | undefined | スナップショットの ID または名前 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :-------------- | :---------------------- | +| **`200`** | スナップショット情報を返します | +| **`404`** | スナップショットが見つかりません | + +## DELETE /snapshots/{id} \{#delete-snapshotsid\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`id`** | path | true | undefined | スナップショット ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :---------------------- | +| **`200`** | スナップショットが削除されました | + +## PATCH /snapshots/{id}/general \{#patch-snapshotsidgeneral\} +### パラメーター \{#parameters\} -## POST /docker-registry +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`id`** | path | true | undefined | スナップショット ID | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織(Organization)のIDを指定します | +### レスポンス \{#responses\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`201`** | Dockerレジストリが正常に作成されました。 | +| ステータスコード | 説明 | +| :-------------- | :----------------------------- | +| **`200`** | スナップショットの全体ステータスが設定されました | -## GET /docker-registry +## GET /snapshots/{id}/build-logs \{#get-snapshotsidbuild-logs\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | いいえ | undefined | JWT と併用して組織(Organization)ID を指定する | +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`id`** | path | true | undefined | スナップショット ID | +| **`follow`** | query | false | undefined | ログストリームをフォローするかどうか | + +### レスポンス \{#responses\} -### レスポンス | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | すべての Docker レジストリの一覧 | +| :---------- | :---------- | +| **`200`** | | + +## POST /snapshots/{id}/activate \{#post-snapshotsidactivate\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`id`** | path | true | undefined | スナップショット ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :--------------------------------------------------------------------------------------------------------- | +| **`200`** | スナップショットが正常にアクティブ化されました。 | +| **`400`** | 不正なリクエスト - スナップショットがすでにアクティブである、非アクティブ状態ではない、または関連するスナップショットランナーが存在します | +| **`404`** | スナップショットが見つかりません | + +## POST /snapshots/{id}/deactivate \{#post-snapshotsiddeactivate\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織 ID を指定するために使用します | +| **`id`** | path | true | undefined | スナップショット ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :--------------------------- | +| **`204`** | スナップショットは正常に無効化されました。 | + +## GET /workspace \{#get-workspace\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | 組織 ID を指定するために JWT と併用して使用します | +| **`verbose`** | query | false | undefined | 詳細な出力を含めます | +| **`labels`** | query | false | undefined | フィルタリングに使用する JSON エンコード済みラベル | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :---------------------- | +| **`200`** | すべてのワークスペース一覧 | + +## POST /workspace \{#post-workspace\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :-------------------------------------- | +| **`200`** | ワークスペースが正常に作成されました。 | + +## GET /workspace/{workspaceId} \{#get-workspaceworkspaceid\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定する | +| **`workspaceId`** | path | true | undefined | ワークスペースの ID | +| **`verbose`** | query | false | undefined | 詳細な出力を含めるかどうか | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :--------------- | +| **`200`** | ワークスペースの詳細 | + +## DELETE /workspace/{workspaceId} \{#delete-workspaceworkspaceid\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して organization ID を指定します | +| **`workspaceId`** | path | true | undefined | ワークスペース ID | +| **`force`** | query | false | undefined | 未定義 | + +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :--------------- | :---------------- | +| **`200`** | ワークスペースは削除されました | -## GET /docker-registry/registry-push-access +## POST /workspace/{workspaceId}/start \{#post-workspaceworkspaceidstart\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織(Organization)ID を指定します | +### パラメーター \{#parameters\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 一時的なレジストリへのアクセス権が発行されました | +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`workspaceId`** | path | true | undefined | ワークスペースの ID | +### レスポンス \{#responses\} -## GET /docker-registry/\{id\} +| ステータスコード | 説明 | +| :---------- | :----------------------- | +| **`200`** | ワークスペースが起動しました | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)の ID を指定します | -| **`id`** | path | true | undefined | Docker レジストリの ID | +## POST /workspace/{workspaceId}/stop \{#post-workspaceworkspaceidstop\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | Docker レジストリ | +### パラメーター \{#parameters\} -## PATCH /docker-registry/\{id\} +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`workspaceId`** | path | true | undefined | ワークスペースの ID | -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | -| **`id`** | path | true | undefined | Docker レジストリの ID | +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :---------------- | +| **`200`** | Workspace が停止しました | + +## PUT /workspace/{workspaceId}/labels \{#put-workspaceworkspaceidlabels\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`workspaceId`** | path | true | undefined | ワークスペースの ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :----------------------------- | +| **`200`** | ラベルが正常に置換されました | + +## POST /workspaces/{workspaceId}/backup \{#post-workspaceworkspaceidbackup\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`workspaceId`** | path | true | undefined | ワークスペースの ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :---------------------------------- | +| **`200`** | ワークスペースのバックアップが開始されました | + +## POST /workspace/{workspaceId}/public/{isPublic} \{#post-workspaceworkspaceidpublicispublic\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`workspaceId`** | path | true | undefined | ワークスペース ID | +| **`isPublic`** | path | true | undefined | 設定する公開ステータス | + +### レスポンス \{#responses\} -### レスポンス | ステータスコード | 説明 | -| :-------- | :---------- | -| **`200`** | Docker レジストリを正常に更新しました。 | +| :---------- | :---------- | +| **`201`** | | + +## POST /workspace/{workspaceId}/autostop/{interval} \{#post-workspaceworkspaceidautostopinterval\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`workspaceId`** | path | true | undefined | ワークスペース ID | +| **`interval`** | path | true | undefined | 自動停止までの間隔(分単位、0 を指定すると無効) | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :-------------------------- | +| **`200`** | 自動停止間隔が設定されました | + +## POST /workspace/{workspaceId}/autoarchive/{interval} \{#post-workspaceworkspaceidautoarchiveinterval\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`workspaceId`** | path | true | undefined | ワークスペースの ID | +| **`interval`** | path | true | undefined | 自動アーカイブ間隔(分単位)(0 の場合、利用可能な最大間隔が使用されます) | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :---------------------------------- | +| **`200`** | 自動アーカイブ間隔が正常に設定されました | + +## POST /workspace/{workspaceId}/archive \{#post-workspaceworkspaceidarchive\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`workspaceId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :-------------------- | +| **`200`** | ワークスペースがアーカイブ済み | -## DELETE /docker-registry/\{id\} +## GET /workspace/{workspaceId}/ports/{port}/preview-url \{#get-workspaceworkspaceidportsportpreview-url\} -### パラメータ -| 名前 | 位置 | 必須 | 型 | 説明 | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`id`** | path | true | undefined | Docker レジストリの ID | +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`workspaceId`** | path | true | undefined | ワークスペース ID | +| **`port`** | path | true | undefined | プレビュー URL を取得する対象のポート番号 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :---------------------------- | +| **`200`** | 指定したポートのプレビュー URL | + +## GET /workspace/{workspaceId}/build-logs \{#get-workspaceworkspaceidbuild-logs\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`workspaceId`** | path | true | undefined | ワークスペース ID | +| **`follow`** | query | false | undefined | ログストリームを追従するかどうか | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :---------------- | +| **`200`** | ビルドログのストリーム | + +## GET /preview/{sandboxId}/public \{#get-previewsandboxidpublic\} + +### パラメータ \{#parameters\} + +| Name | Location | Required | Type | Description | +| :-------------- | :------- | :------- | :-------- | :--------------- | +| **`sandboxId`** | path | true | undefined | サンドボックスの ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :--------------------------- | +| **`200`** | サンドボックスの公開ステータス | + +## GET /preview/{sandboxId}/validate/{authToken} \{#get-previewsandboxidvalidateauthtoken\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :-------------- | :------- | :------- | :-------- | :----------------------------- | +| **`sandboxId`** | path | true | undefined | サンドボックスのID | +| **`authToken`** | path | true | undefined | サンドボックスの認証トークン | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------------------------- | +| **`200`** | サンドボックス認証トークンの検証ステータス | + +## GET /preview/{sandboxId}/access \{#get-previewsandboxidaccess\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :-------------- | :------- | :------- | :-------- | :---------- | +| **`sandboxId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} -### レスポンス | ステータスコード | 説明 | -| :-------- | :---------- | -| **`204`** | Docker レジストリが正常に削除されました。 | +| :---------- | :---------- | +| **`200`** | | + +## GET /volumes \{#get-volumes\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`includeDeleted`** | query | false | undefined | レスポンスに削除済みボリュームを含めるかどうかを指定します | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :------------------ | +| **`200`** | すべてのボリュームの一覧 | + +## POST /volumes \{#post-volumes\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :--------------------------- | +| **`200`** | ボリュームが正常に作成されました。 | + +## GET /volumes/{volumeId} \{#get-volumesvolumeid\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`volumeId`** | path | true | undefined | ボリュームの ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------ | +| **`200`** | ボリュームの詳細情報 | + +## DELETE /volumes/{volumeId} \{#delete-volumesvolumeid\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`volumeId`** | path | true | undefined | ボリュームの ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :---------------------------------- | +| **`200`** | ボリュームが削除対象としてマークされました | + +## GET /volumes/by-name/{name} \{#get-volumesby-namename\} + +### パラメーター \{#parameters\} + +| 名前 | 位置 | 必須 | 型 | 説明 | +| :------------------------------ | :------ | :--- | :-------- | :-------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用 | +| **`name`** | path | true | undefined | ボリューム名 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :--------- | +| **`200`** | ボリュームの詳細 | + +## POST /docker-registry \{#post-docker-registry\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------------------------------------- | +| **`201`** | Docker レジストリが正常に作成されました。 | + +## GET /docker-registry \{#get-docker-registry\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID(organization ID)を指定します | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :---------------------------- | +| **`200`** | すべての Docker レジストリのリスト | + +## GET /docker-registry/registry-push-access \{#get-docker-registryregistry-push-access\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------ | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定する際に使用します | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :------------------------------------------- | +| **`200`** | 一時的なレジストリアクセスが発行されました | + +## GET /docker-registry/{id} \{#get-docker-registryid\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`id`** | path | true | undefined | Docker レジストリの ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :------------------ | +| **`200`** | Docker レジストリ情報 | + +## PATCH /docker-registry/{id} \{#patch-docker-registryid\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`id`** | path | true | undefined | Docker レジストリの ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :----------------------------------------- | +| **`200`** | Docker レジストリが正常に更新されました。 | + +## DELETE /docker-registry/{id} \{#delete-docker-registryid\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`id`** | path | true | undefined | Docker レジストリの ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :-------------------------------------- | +| **`204`** | Docker レジストリが正常に削除されました。 | + +## POST /docker-registry/{id}/set-default \{#post-docker-registryidset-default\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`id`** | path | true | undefined | Docker レジストリの ID | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :--------------------------------------- | +| **`200`** | Docker レジストリがデフォルトとして設定されました。 | + +## POST /webhooks/organizations/{organizationId}/app-portal-access \{#post-webhooksorganizationsorganizationidapp-portal-access\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`organizationId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| Status Code | 説明 | +| :---------- | :-------------------------------- | +| **`200`** | App Portal へのアクセスが正常に生成されました | + +## POST /webhooks/organizations/{organizationId}/send \{#post-webhooksorganizationsorganizationidsend\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`organizationId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------------------------ | +| **`200`** | Webhook メッセージが正常に送信されました | + +## GET /webhooks/organizations/{organizationId}/messages/{messageId}/attempts \{#get-webhooksorganizationsorganizationidmessagesmessageidattempts\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :-------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | +| **`organizationId`** | path | true | undefined | undefined | +| **`messageId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :------------------------ | +| **`200`** | 配信試行のリスト | + +## GET /webhooks/status \{#get-webhooksstatus\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定します | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :---------------- | +| **`200`** | Webhook サービスの状態 | + +## GET /webhooks/organizations/{organizationId}/initialization-status \{#get-webhooksorganizationsorganizationidinitialization-status\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :------------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`organizationId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :-------------------------------------- | +| **`200`** | Webhook 初期化ステータス | +| **`404`** | Webhook 初期化ステータスが見つかりません | + +## POST /webhooks/organizations/{organizationId}/initialize \{#post-webhooksorganizationsorganizationidinitialize\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :---------------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織 ID を指定するために使用します | +| **`organizationId`** | path | true | undefined | undefined | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------------------------------ | +| **`201`** | Webhook が正常に初期化されました | +| **`403`** | ユーザーはこの組織へのアクセス権がありません | +| **`404`** | 組織が見つかりません | + +## GET /object-storage/push-access \{#get-object-storagepush-access\} + +### パラメータ \{#parameters\} + +| Name | Location | Required | Type | Description | +| :------------------------------ | :------- | :------- | :-------- | :----------------------------------------------- | +| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して、組織 ID を指定するために使用します | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :---------- | :-------------------------------------- | +| **`200`** | 一時ストレージへのアクセスが生成されました | + +## GET /audit \{#get-audit\} + +### パラメーター \{#parameters\} + +| Name | Location | Required | Type | Description | +| :---------- | :------- | :------- | :-------- | :----------------------------- | +| **`page`** | query | false | undefined | 結果のページ番号 | +| **`limit`** | query | false | undefined | 1 ページあたりの結果数 | + +### レスポンス \{#responses\} + +| ステータスコード | 説明 | +| :--------------- | :------------------------------ | +| **`200`** | すべての監査ログのページネーションされた一覧 | + +## POST /audit \{#post-audit\} +### レスポンス \{#responses\} -## POST /docker-registry/\{id\}/set-default +| ステータスコード | 説明 | +| :--------------- | :------------------------------- | +| **`201`** | 監査ログエントリが正常に作成されました | -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | -| **`id`** | path | true | undefined | Docker レジストリの ID | +## GET /audit/organizations/{organizationId} \{#get-auditorganizationsorganizationid\} -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | Docker レジストリをデフォルトに設定しました。 | +### パラメーター \{#parameters\} +| Name | Location | Required | Type | Description | +| :------------------- | :------- | :------- | :-------- | :------------------------- | +| **`organizationId`** | path | true | undefined | 組織 ID | +| **`page`** | query | false | undefined | 結果のページ番号 | +| **`limit`** | query | false | undefined | 1 ページあたりの結果数 | -## GET /object-storage/push-access +### レスポンス \{#responses\} -### Parameters -| Name | Location | Required | Type | Description | -| :--- | :------- | :------- | :--- | :---------- | -| **`X-Daytona-Organization-ID`** | header | false | undefined | JWT と併用して組織(Organization)ID を指定します | +| ステータスコード | 説明 | +| :--------------- | :-------------------------------------- | +| **`200`** | 組織の監査ログのページネーションされた一覧 | -### Responses -| Status Code | Description | -| :-------- | :---------- | -| **`200`** | 一時的なストレージアクセスが生成されます | +## GET /health \{#get-health\} +### レスポンス \{#responses\} +| ステータスコード | 説明 | +| :---------- | :------------------------- | +| **`200`** | ヘルスチェックに成功しました | +| **`503`** | ヘルスチェックに失敗しました | +| ステータスコード | 説明 | +| :---------- | :--------------------------------------- | +| **`200`** | 一時ストレージへのアクセスが発行されました | \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/tools/cli.mdx b/apps/docs/src/content/docs/ja/tools/cli.mdx index 47f468a90..48f652c72 100644 --- a/apps/docs/src/content/docs/ja/tools/cli.mdx +++ b/apps/docs/src/content/docs/ja/tools/cli.mdx @@ -1,53 +1,54 @@ --- title: CLI -description: Daytona(デイトナ)CLI で利用可能な操作のリファレンス。 +description: Daytona CLI で利用可能な操作のリファレンス。 sidebar: label: Daytona CLI リファレンス --- -import Aside from '@components/Aside.astro' -import Label from '@components/Label.astro' +import Aside from "@components/Aside.astro"; +import Label from "@components/Label.astro"; -`daytona` コマンドラインツールは、Daytona(デイトナ)のコア機能へのアクセスを提供し、スナップショットの管理や Daytona サンドボックスのライフサイクル管理を行えます。インストール手順は[こちら](/docs/ja/getting-started#setting-up-the-daytona-cli)をご覧ください。 +`daytona` コマンドラインツールは、スナップショットの管理や Daytona サンドボックスのライフサイクル管理など、Daytona の中核機能にアクセスするための手段を提供します。インストール手順は[こちら](/docs/ja/getting-started#setting-up-the-daytona-cli)をご覧ください。 -本リファレンスでは、`daytona` コマンドラインツールでサポートされているすべてのコマンドを、その動作の説明および対応フラグとともに一覧しています。`daytona` 実行時に `--help` または `-h` フラグを付けることで、各コマンドごとのドキュメントを参照できます。 +本リファレンスでは、`daytona` コマンドラインツールでサポートされているすべてのコマンドを、その挙動の説明や対応フラグとともに一覧しています。 +`daytona` 実行時に `--help` / `-h` フラグを付与すると、各コマンドのドキュメントを参照できます。 -## daytona +## daytona \{#daytona\} -Daytona CLI +Daytona CLI(コマンドラインインターフェイス) ```shell -daytona [flags] +daytona [フラグ] ``` **フラグ** | ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示します | +| `--help` | | Daytona のヘルプを表示します | | `--version` | `-v` | Daytona のバージョンを表示します | -## daytona autocomplete +## daytona autocomplete \{#daytona-autocomplete\} シェル環境に補完スクリプトを追加します ```shell -daytona autocomplete [bash|zsh|fish|powershell] [flags] +daytona autocomplete [bash|zsh|fish|powershell] [フラグ] ``` **フラグ** -| Long | Short | 説明 | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプ | -## daytona docs +## daytona docs \{#daytona-docs\} -既定のブラウザでDaytona(デイトナ)のドキュメントを開きます。 +既定のブラウザーで Daytona のドキュメントを開きます。 ```shell daytona docs [flags] @@ -56,25 +57,25 @@ daytona docs [flags] **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona login +## daytona login \{#daytona-login\} -Daytona(デイトナ)にログイン +Daytona にログイン ```shell daytona login [flags] ``` **フラグ** -| Long | Short | 説明 | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--api-key` | | 認証に使用するAPIキー | -| `--help` | | daytonaのヘルプ | +| `--api-key` | | 認証に使用するAPIキー | +| `--help` | | Daytonaのヘルプ | -## daytona logout +## daytona logout \{#daytona-logout\} -Daytona(デイトナ)からログアウトします +Daytona からログアウトします ```shell daytona logout [flags] @@ -83,11 +84,11 @@ daytona logout [flags] **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | daytona のヘルプを表示 | -## daytona mcp +## daytona mcp \{#daytona-mcp\} -Daytona MCPサーバー(Model Context Protocol)を管理する +Daytona MCP サーバーの管理 ```shell daytona mcp [flags] @@ -96,24 +97,24 @@ daytona mcp [flags] **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona mcp config +## daytona mcp config \{#daytona-mcp-config\} -Daytona MCPサーバー用のJSON設定を出力します +Daytona MCP Server の JSON 設定を出力します ```shell daytona mcp config [AGENT_NAME] [flags] ``` **フラグ** -| Long | Short | 説明 | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona mcp init +## daytona mcp init \{#daytona-mcp-init\} -エージェントを指定して Daytona MCPサーバー を初期化します(現在サポート: claude、windsurf、cursor) +エージェントとともに Daytona MCP Server を初期化します(現在の対応エージェント: Claude、Windsurf、Cursor) ```shell daytona mcp init [AGENT_NAME] [flags] @@ -122,50 +123,50 @@ daytona mcp init [AGENT_NAME] [flags] **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona mcp start +## daytona mcp start \{#daytona-mcp-start\} -Daytona MCPサーバーを起動します +Daytona MCP サーバーを起動する ```shell -daytona mcp start [flags] +daytona mcp start [フラグ] ``` **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona organization +## daytona organization \{#daytona-organization\} -Daytona(デイトナ)の組織を管理する +Daytona の組織を管理する ```shell -daytona organization [flags] +daytona 組織 [flags] ``` **フラグ** -| ロング | ショート | 説明 | +| Long | Short | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプ | -## daytona organization create +## daytona organization create \{#daytona-organization-create\} -新しい組織を作成し、アクティブとして設定します +新しい組織を作成し、アクティブ組織として設定します ```shell -daytona organization create [ORGANIZATION_NAME] [flags] +daytona organization create [組織名] [フラグ] ``` **フラグ** -| ロング | ショート | 説明 | +| Long | Short | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプ | -## daytona organization delete +## daytona organization delete \{#daytona-organization-delete\} -組織を削除する +組織を削除します ```shell daytona organization delete [ORGANIZATION] [flags] @@ -174,156 +175,155 @@ daytona organization delete [ORGANIZATION] [flags] **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona organization list +## daytona organization list \{#daytona-organization-list\} -すべての組織を一覧表示します +すべての組織を一覧表示する ```shell -daytona organization list [flags] +daytona 組織 list [flags] ``` **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | | `--format` | `-f` | 出力形式。yaml または json のいずれか | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプ | -## daytona organization use +## daytona organization use \{#daytona-organization-use\} -アクティブな組織を設定する +アクティブな組織を設定します ```shell daytona organization use [ORGANIZATION] [flags] ``` **フラグ** -| Long | Short | 説明 | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプ | -## daytona sandbox +## daytona sandbox \{#daytona-sandbox\} -Daytona(デイトナ)のサンドボックスを管理します +Daytona のサンドボックスを管理する ```shell -daytona sandbox [flags] +daytona サンドボックス [flags] ``` **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona sandbox create +## daytona sandbox create \{#daytona-sandbox-create\} -新しいサンドボックスを作成 +新規サンドボックスを作成する ```shell -daytona sandbox create [flags] +daytona サンドボックス create [flags] ``` **フラグ** -| Long | Short | 説明 | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--auto-archive` | | 自動アーカイブの間隔(分)(0 は最大の間隔が使用されます) | -| `--auto-delete` | | 自動削除の間隔(分)(負の値で無効、0 は停止後に即時削除) | -| `--auto-stop` | | 自動停止の間隔(分)(0 は無効) | -| `--class` | | サンドボックスのクラス種別(small、medium、large) | -| `--context` | `-c` | ビルドコンテキストに含めるファイルまたはディレクトリ(複数回指定可) | -| `--cpu` | | サンドボックスに割り当てる CPU コア数 | -| `--disk` | | サンドボックスに割り当てるディスク容量(GB) | -| `--dockerfile` | `-f` | サンドボックスのスナップショット用 Dockerfile のパス | +| `--name` | | サンドボックス名 | +| `--auto-archive` | | 自動アーカイブ間隔(分)。0 は最大間隔を使用 | +| `--auto-delete` | | 自動削除間隔(分)。負の値は無効、0 は停止時に即時削除 | +| `--auto-stop` | | 自動停止間隔(分)。0 は無効 | +| `--class` | | サンドボックスのクラス(small、medium、large) | +| `--context` | `-c` | ビルドコンテキストに含めるファイルまたはディレクトリ(複数指定可) | +| `--cpu` | | サンドボックスに割り当てる CPU コア数 | +| `--disk` | | サンドボックスに割り当てるディスク容量(GB) | +| `--dockerfile` | `-f` | サンドボックス用スナップショットの Dockerfile パス | | `--env` | `-e` | 環境変数(形式: KEY=VALUE) | -| `--gpu` | | サンドボックスに割り当てる GPU ユニット | +| `--gpu` | | サンドボックスに割り当てる GPU ユニット数 | | `--label` | `-l` | ラベル(形式: KEY=VALUE) | -| `--memory` | | サンドボックスに割り当てるメモリ(MB) | -| `--public` | | サンドボックスを公開アクセス可能にする | -| `--snapshot` | | サンドボックスに使用するスナップショット | -| `--target` | | ターゲット(リージョン)(eu, us) | -| `--user` | | サンドボックスに関連付けるユーザー | -| `--volume` | `-v` | マウントするボリューム(形式: VOLUME\_NAME:MOUNT\_PATH) | -| `--help` | | daytona のヘルプ | +| `--memory` | | サンドボックスに割り当てるメモリ(MB) | +| `--name` | | サンドボックス名 | +| `--network-allow-list` | | サンドボックスで許可する CIDR ネットワークアドレスのカンマ区切りリスト | +| `--network-block-all` | | サンドボックスの全ネットワークアクセスをブロックするか | +| `--public` | | サンドボックスを公開アクセス可能にする | +| `--snapshot` | | サンドボックスで使用するスナップショット | +| `--target` | | ターゲットリージョン(eu、us) | +| `--user` | | サンドボックスに関連付けるユーザー | +| `--volume` | `-v` | マウントするボリューム(形式: VOLUME_NAME:MOUNT_PATH) | +| `--help` | | Daytona のヘルプ | -## daytona sandbox delete +## daytona sandbox delete \{#daytona-sandbox-delete\} -サンドボックスを削除 +サンドボックスを削除します ```shell -daytona sandbox delete [SANDBOX_ID] [flags] +daytona sandbox delete [SANDBOX_ID] | [SANDBOX_NAME] [flags] ``` **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--all` | `-a` | すべてのサンドボックスを削除 | -| `--force` | `-f` | 強制的に削除 | -| `--help` | | daytona のヘルプを表示 | +| `--all` | `-a` | すべてのサンドボックスを削除する | +| `--help` | | Daytona のヘルプを表示 | -## daytona sandbox info +## daytona sandbox info \{#daytona-sandbox-info\} -サンドボックス情報を取得する +サンドボックスの情報を取得する ```shell -daytona sandbox info [SANDBOX_ID] [flags] +daytona sandbox info [SANDBOX_ID] | [SANDBOX_NAME] [flags] ``` **フラグ** -| Long | Short | 説明 | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--format` | `-f` | 出力形式。yaml または json のいずれかを指定します | -| `--verbose` | `-v` | 詳細な出力を含める | -| `--help` | | daytona のヘルプを表示 | +| `--format` | `-f` | 出力形式。yaml または json のいずれか | +| `--help` | | Daytona のヘルプ | -## daytona sandbox list +## daytona sandbox list \{#daytona-sandbox-list\} -サンドボックスを一覧表示します +サンドボックスを一覧表示 ```shell -daytona sandbox list [flags] +daytona サンドボックス list [flags] ``` **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--format` | `-f` | 出力形式。yaml または json のいずれか | +| `--format` | `-f` | 出力形式。yaml か json のいずれか | | `--limit` | `-l` | 1ページあたりの最大件数 | -| `--page` | `-p` | ページ番号(1から開始) | -| `--verbose` | `-v` | 冗長な出力を含める | -| `--help` | | daytona のヘルプを表示 | +| `--page` | `-p` | ページ番号(1から) | +| `--help` | | Daytona のヘルプ | -## daytona sandbox start +## daytona sandbox start \{#daytona-sandbox-start\} -サンドボックスを起動する +サンドボックスを開始する ```shell -daytona sandbox start [SANDBOX_ID] [flags] +daytona sandbox start [SANDBOX_ID] | [SANDBOX_NAME] [flags] ``` **フラグ** -| Long | Short | 説明 | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--all` | `-a` | すべてのサンドボックスを起動する | -| `--help` | | daytona のヘルプ | +| `--help` | | Daytona のヘルプを表示 | -## daytona sandbox stop +## daytona sandbox stop \{#daytona-sandbox-stop\} -サンドボックスを停止する +サンドボックスを停止します ```shell -daytona sandbox stop [SANDBOX_ID] [flags] +daytona sandbox stop [SANDBOX_ID] | [SANDBOX_NAME] [flags] ``` **フラグ** -| Long | Short | 説明 | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--all` | `-a` | すべてのサンドボックスを停止 | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona snapshot +## daytona snapshot \{#daytona-snapshot\} -Daytona(デイトナ)のスナップショットを管理する +Daytona のスナップショットを管理する ```shell daytona snapshot [flags] @@ -332,11 +332,11 @@ daytona snapshot [flags] **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプ | -## daytona snapshot create +## daytona snapshot create \{#daytona-snapshot-create\} -スナップショットを作成 +スナップショットを作成します ```shell daytona snapshot create [SNAPSHOT] [flags] @@ -345,16 +345,16 @@ daytona snapshot create [SNAPSHOT] [flags] **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--context` | `-c` | ビルドコンテキストに含めるファイルまたはディレクトリ(複数回指定可) | -| `--cpu` | | サンドボックスに割り当てる CPU コア数(既定: 1) | -| `--disk` | | サンドボックスに割り当てるディスク容量(GB)(既定: 3) | -| `--dockerfile` | `-f` | ビルド対象の Dockerfile のパス | +| `--context` | `-c` | ビルドコンテキストに含めるファイルまたはディレクトリ(複数回指定可)。指定しない場合は、Dockerfile の COPY/ADD コマンドから自動検出されます | +| `--cpu` | | サンドボックスに割り当てる CPU コア数(デフォルト: 1) | +| `--disk` | | サンドボックスに割り当てるディスク容量(GB)(デフォルト: 3) | +| `--dockerfile` | `-f` | ビルドする Dockerfile のパス | | `--entrypoint` | `-e` | スナップショットのエントリーポイントコマンド | | `--image` | `-i` | スナップショットのイメージ名 | -| `--memory` | | サンドボックスに割り当てるメモリ容量(GB)(既定: 1) | -| `--help` | | daytona のヘルプ | +| `--memory` | | サンドボックスに割り当てるメモリ(GB)(デフォルト: 1) | +| `--help` | | Daytona のヘルプ | -## daytona snapshot delete +## daytona snapshot delete \{#daytona-snapshot-delete\} スナップショットを削除します @@ -363,28 +363,28 @@ daytona snapshot delete [SNAPSHOT_ID] [flags] ``` **フラグ** -| ロング | ショート | 説明 | +| Long | Short | 説明 | | :--- | :---- | :---------- | | `--all` | `-a` | すべてのスナップショットを削除します | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示します | -## daytona snapshot list +## daytona snapshot list \{#daytona-snapshot-list\} -すべてのスナップショットを一覧表示します +すべてのスナップショットを一覧表示する ```shell -daytona snapshot list [flags] +daytona スナップショット list [flags] ``` **フラグ** -| Long | Short | 説明 | +| Long | Short | Description | | :--- | :---- | :---------- | -| `--format` | `-f` | 出力形式。yaml または json のいずれか | +| `--format` | `-f` | 出力形式。次のいずれかを指定します (yaml, json) | | `--limit` | `-l` | 1ページあたりの最大件数 | -| `--page` | `-p` | ページネーション用のページ番号(1から) | -| `--help` | | daytona のヘルプ | +| `--page` | `-p` | ページ番号(1から) | +| `--help` | | Daytona のヘルプ | -## daytona snapshot push +## daytona snapshot push \{#daytona-snapshot-push\} ローカルのスナップショットをプッシュします @@ -393,16 +393,16 @@ daytona snapshot push [SNAPSHOT] [flags] ``` **フラグ** -| Long | Short | 説明 | +| Long | Short | Description | | :--- | :---- | :---------- | -| `--cpu` | | サンドボックスに割り当てるCPUコア数(デフォルト: 1) | -| `--disk` | | サンドボックスに割り当てるディスク容量(GB、デフォルト: 3) | -| `--entrypoint` | `-e` | イメージのエントリポイントコマンド | -| `--memory` | | サンドボックスに割り当てるメモリ容量(GB、デフォルト: 1) | +| `--cpu` | | サンドボックスに割り当てるCPUコア数(既定値: 1) | +| `--disk` | | サンドボックスに割り当てるディスク容量(GB、既定値: 3) | +| `--entrypoint` | `-e` | イメージのエントリーポイントコマンド | +| `--memory` | | サンドボックスに割り当てるメモリ(GB、既定値: 1) | | `--name` | `-n` | スナップショット名を指定 | -| `--help` | | daytonaのヘルプ | +| `--help` | | Daytona のヘルプ | -## daytona version +## daytona version \{#daytona-version\} バージョン番号を表示します @@ -413,22 +413,22 @@ daytona version [flags] **フラグ** | ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona volume +## daytona volume \{#daytona-volume\} -Daytona(デイトナ)のボリュームを管理します +Daytona のボリュームを管理する ```shell daytona volume [flags] ``` **フラグ** -| Long | Short | 説明 | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona volume create +## daytona volume create \{#daytona-volume-create\} ボリュームを作成します @@ -437,12 +437,12 @@ daytona volume create [NAME] [flags] ``` **フラグ** -| ロング | ショート | 説明 | +| Long | Short | 説明 | | :--- | :---- | :---------- | | `--size` | `-s` | ボリュームのサイズ(GB) | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプ | -## daytona volume delete +## daytona volume delete \{#daytona-volume-delete\} ボリュームを削除します @@ -451,11 +451,11 @@ daytona volume delete [VOLUME_ID] [flags] ``` **フラグ** -| Long | Short | Description | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプを表示 | -## daytona volume get +## daytona volume get \{#daytona-volume-get\} ボリュームの詳細を取得する @@ -464,12 +464,12 @@ daytona volume get [VOLUME_ID] [flags] ``` **フラグ** -| Long | Short | 説明 | +| ロング | ショート | 説明 | | :--- | :---- | :---------- | | `--format` | `-f` | 出力形式。yaml または json のいずれか | -| `--help` | | daytona のヘルプを表示 | +| `--help` | | Daytona のヘルプ | -## daytona volume list +## daytona volume list \{#daytona-volume-list\} すべてのボリュームを一覧表示します @@ -480,5 +480,5 @@ daytona volume list [flags] **フラグ** | Long | Short | 説明 | | :--- | :---- | :---------- | -| `--format` | `-f` | 出力形式。yaml または json のいずれか | -| `--help` | | daytona のヘルプを表示 | \ No newline at end of file +| `--format` | `-f` | 出力形式。yaml または json のいずれかを指定 | +| `--help` | | Daytona のヘルプ | diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/charts.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/charts.mdx index 8719ee266..03f44f91a 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/charts.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/charts.mdx @@ -3,20 +3,19 @@ title: "チャート" hideTitleOnPage: true --- - -## ChartType +## ChartType \{#charttype\} チャートの種類 **列挙メンバー**: -- `BAR`("bar") -- `LINE`("line") -- `PIE`("pie") -- `SCATTER`("scatter") -- `UNKNOWN`("unknown") +* `BAR`("bar") +* `LINE`("line") +* `PIE`("pie") +* `SCATTER`("scatter") +* `UNKNOWN`("unknown") -## parseChart() +## parseChart() \{#parsechart\} ```ts function parseChart(data: any): Chart @@ -24,17 +23,15 @@ function parseChart(data: any): Chart **パラメータ**: -- `data` _any_ - +* `data` *any* **戻り値**: -- `Chart` +* `Chart` *** - -## BarChart +## BarChart \{#barchart\} ```ts type BarChart = Chart2D & { @@ -47,12 +44,10 @@ type BarChart = Chart2D & { **型定義**: -- `elements` _BarData\[\]_ - 棒グラフの要素 -- `type` _BAR_ - グラフの種類 - - +* `elements` *BarData[]* - 棒グラフの要素 +* `type` *BAR* - グラフの種類 -## BarData +## BarData \{#bardata\} ```ts type BarData = { @@ -66,13 +61,11 @@ type BarData = { **型定義**: -- `group` _string_ - バーの属するグループ -- `label` _string_ - バーのラベル -- `value` _string_ - バーの値 - +* `group` *string* - バーの属するグループ +* `label` *string* - バーのラベル +* `value` *string* - バーの値 - -## BoxAndWhiskerChart +## BoxAndWhiskerChart \{#boxandwhiskerchart\} ```ts type BoxAndWhiskerChart = Chart2D & { @@ -85,12 +78,10 @@ type BoxAndWhiskerChart = Chart2D & { **型定義**: -- `elements` _BoxAndWhiskerData\[\]_ - 図の箱ひげ要素 -- `type` _BOX\_AND\_WHISKER_ - 図の種類 - - +* `elements` *BoxAndWhiskerData[]* - 図の箱ひげ要素 +* `type` *BOX_AND_WHISKER* - 図の種類 -## BoxAndWhiskerData +## BoxAndWhiskerData \{#boxandwhiskerdata\} ```ts type BoxAndWhiskerData = { @@ -107,15 +98,14 @@ type BoxAndWhiskerData = { **型定義**: -- `first_quartile` _number_ - 箱ひげの第1四分位数 -- `label` _string_ - 箱ひげのラベル -- `max` _number_ - 箱ひげの第3四分位数 -- `median` _number_ - 箱ひげの中央値 -- `min` _number_ - 箱ひげの最小値 -- `outliers` _number[]_ +* `first_quartile` *number* - 箱ひげの第1四分位数 +* `label` *string* - 箱ひげのラベル +* `max` *number* - 箱ひげの第3四分位数 +* `median` *number* - 箱ひげの中央値 +* `min` *number* - 箱ひげの最小値 +* `outliers` *number[]* - -## チャート +## チャート \{#chart\} ```ts type Chart = { @@ -130,14 +120,12 @@ matplotlib のメタデータを含むチャートを表します。 **型定義**: -- `elements` _any\[\]_ - チャートの要素 -- `png?` _string_ - base64 でエンコードされたチャートの PNG 表現 -- `title` _string_ - チャートのタイトル -- `type` _ChartType_ - チャートのタイプ - - +* `elements` *any[]* - チャートの要素 +* `png?` *string* - base64 でエンコードされたチャートの PNG 表現 +* `title` *string* - チャートのタイトル +* `type` *ChartType* - チャートのタイプ -## Chart2D +## Chart2D \{#chart2d\} ```ts type Chart2D = Chart & { @@ -150,12 +138,10 @@ type Chart2D = Chart & { **型宣言**: -- `x\_label?` _string_ - x軸のラベル -- `y\_label?` _string_ - y軸のラベル - +* `x\_label?` *string* - x軸のラベル +* `y\_label?` *string* - y軸のラベル - -## CompositeChart +## CompositeChart \{#compositechart\} ```ts type CompositeChart = Chart & { @@ -168,12 +154,10 @@ type CompositeChart = Chart & { **型宣言**: -- `elements` _Chart\[\]_ - 合成チャートを構成するチャート群 -- `type` _COMPOSITE\_CHART_ - チャートのタイプ - - +* `elements` *Chart[]* - 合成チャートを構成するチャート群 +* `type` *COMPOSITE_CHART* - チャートのタイプ -## LineChart +## LineChart \{#linechart\} ```ts type LineChart = PointChart & { @@ -185,11 +169,9 @@ type LineChart = PointChart & { **型定義**: -- `type` _LINE_ - チャートのタイプ - +* `type` *LINE* - チャートのタイプ - -## PieChart +## PieChart \{#piechart\} ```ts type PieChart = Chart & { @@ -202,12 +184,10 @@ type PieChart = Chart & { **型定義**: -- `elements` _PieData\[\]_ - グラフの各扇形(スライス) -- `type` _PIE_ - グラフのタイプ - - +* `elements` *PieData[]* - グラフの各扇形(スライス) +* `type` *PIE* - グラフのタイプ -## PieData +## PieData \{#piedata\} ```ts type PieData = { @@ -221,13 +201,11 @@ type PieData = { **型定義**: -- `angle` _number_ - スライスの角度 -- `label` _string_ - スライスのラベル -- `radius` _number_ - スライスの半径 - +* `angle` *number* - スライスの角度 +* `label` *string* - スライスのラベル +* `radius` *number* - スライスの半径 - -## PointChart +## PointChart \{#pointchart\} ```ts type PointChart = Chart2D & { @@ -245,17 +223,15 @@ type PointChart = Chart2D & { **型定義**: -- `elements` _PointData\[\]_ - グラフの点 -- `x\_scale` _string_ - x軸のスケール -- `x\_tick\_labels` _string\[\]_ - x軸の目盛ラベル -- `x\_ticks` _\(number \| string\)\[\]_ - x軸の目盛 -- `y\_scale` _string_ - y軸のスケール -- `y\_tick\_labels` _string\[\]_ - y軸の目盛ラベル -- `y\_ticks` _\(number \| string\)\[\]_ - y軸の目盛 - - +* `elements` *PointData[]* - グラフの点 +* `x\_scale` *string* - x軸のスケール +* `x\_tick\_labels` *string[]* - x軸の目盛ラベル +* `x\_ticks` *(number | string)[]* - x軸の目盛 +* `y\_scale` *string* - y軸のスケール +* `y\_tick\_labels` *string[]* - y軸の目盛ラベル +* `y\_ticks` *(number | string)[]* - y軸の目盛 -## PointData +## PointData \{#pointdata\} ```ts type PointData = { @@ -268,12 +244,10 @@ type PointData = { **型宣言**: -- `label` _string_ - 点のラベル -- `points` _\[number \| string, number \| string\]\[\]_ - チャートの座標点一覧 - +* `label` *string* - 点のラベル +* `points` *[number | string, number | string][]* - チャートの座標点一覧 - -## ScatterChart +## ScatterChart \{#scatterchart\} ```ts type ScatterChart = PointChart & { @@ -285,5 +259,4 @@ type ScatterChart = PointChart & { **型宣言**: -- `type` _SCATTER_ - チャートの種類 - +* `type` *SCATTER* - チャートの種類 diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/computer-use.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/computer-use.mdx index 5da2b5967..c0288e630 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/computer-use.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/computer-use.mdx @@ -1,114 +1,104 @@ --- -title: "Computer Use" +title: "ComputerUse" hideTitleOnPage: true --- +## コンピューター使用 \{#computeruse\} -## ComputerUse - -デスクトップ環境と対話するためのコンピュータ操作機能。 +デスクトップ環境とやり取りするためのコンピューター使用機能。 **プロパティ**: -- `display` _Display_ - ディスプレイ操作インターフェース -- `keyboard` _Keyboard_ - キーボード操作インターフェース -- `mouse` _Mouse_ - マウス操作インターフェース -- `screenshot` _Screenshot_ - スクリーンショット操作インターフェース - - - - +* `display` *Display* - ディスプレイ操作インターフェース +* `keyboard` *Keyboard* - キーボード操作インターフェース +* `mouse` *Mouse* - マウス操作インターフェース +* `screenshot` *Screenshot* - スクリーンショット操作インターフェース -サンドボックス(Daytonaで管理される隔離された一時的な計算環境)内でのデスクトップ操作を自動化するために、マウス、キーボード、スクリーンショット、ディスプレイの各操作にアクセスできます。 +サンドボックス内でのデスクトップ操作を自動化するために、マウス、キーボード、スクリーンショット、ディスプレイの各操作にアクセスできます。 -### コンストラクタ +### コンストラクタ \{#constructors\} -#### new ComputerUse() +#### new ComputerUse() \{#new-computeruse\} ```ts -new ComputerUse(sandboxId: string, toolboxApi: ToolboxApi): ComputerUse +new ComputerUse(apiClient: ComputerUseApi): ComputerUse ``` **パラメータ**: -- `sandboxId` _string_ -- `toolboxApi` _ToolboxApi_ - +* `apiClient` *ComputerUseApi* **戻り値**: -- `ComputerUse` +* `ComputerUse` -### メソッド +### メソッド \{#methods\} -#### getProcessErrors() +#### getProcessErrors() \{#getprocesserrors\} ```ts getProcessErrors(processName: string): Promise ``` -特定のVNCプロセスのエラーログを取得します +特定の VNC プロセスのエラーログを取得します **パラメータ**: -- `processName` _string_ - エラーログを取得するプロセス名 - +* `processName` *string* - エラーログを取得する対象のプロセス名 **戻り値**: -- `Promise` - プロセスのエラーログ +* `Promise` - プロセスのエラーログ **例:** ```typescript const errorsResp = await sandbox.computerUse.getProcessErrors('x11vnc'); -console.log('X11VNC errors:', errorsResp.errors); +console.log('X11VNCエラー:', errorsResp.errors); ``` *** -#### getProcessLogs() +#### getProcessLogs() \{#getprocesslogs\} ```ts getProcessLogs(processName: string): Promise ``` -特定のVNCプロセスのログを取得します +特定の VNC プロセスのログを取得します **パラメータ**: -- `processName` _string_ - ログを取得するプロセス名 - +* `processName` *string* - ログを取得する対象のプロセス名 **戻り値**: -- `Promise` - プロセスのログ +* `Promise` - プロセスのログ **例:** ```typescript const logsResp = await sandbox.computerUse.getProcessLogs('novnc'); -console.log('NoVNC logs:', logsResp.logs); +console.log('NoVNC ログ:', logsResp.logs); ``` *** -#### getProcessStatus() +#### getProcessStatus() \{#getprocessstatus\} ```ts getProcessStatus(processName: string): Promise ``` -特定のVNCプロセスのステータスを取得します +特定の VNC プロセスのステータスを取得します **パラメータ**: -- `processName` _string_ - 確認するプロセス名 +* `processName` *string* - 確認対象のプロセス名 +**返り値**: -**戻り値**: - -- `Promise` - 特定のプロセスに関するステータス情報 +* `Promise` - 指定したプロセスのステータス情報 **例:** @@ -119,142 +109,140 @@ const noVncStatus = await sandbox.computerUse.getProcessStatus('novnc'); *** -#### getStatus() +#### getStatus() \{#getstatus\} ```ts getStatus(): Promise ``` -すべてのコンピュータ操作プロセスのステータスを取得します +すべてのコンピューター使用プロセスのステータスを取得します **戻り値**: -- `Promise` - すべてのVNCデスクトッププロセスに関するステータス情報 +* `Promise` - すべての VNC デスクトッププロセスのステータス情報 **例:** ```typescript const status = await sandbox.computerUse.getStatus(); -console.log('Computer use status:', status.status); +console.log('コンピューター使用のステータス:', status.status); ``` *** -#### restartProcess() +#### restartProcess() \{#restartprocess\} ```ts restartProcess(processName: string): Promise ``` -特定のVNCプロセスを再起動します +特定の VNC プロセスを再起動します **パラメータ**: -- `processName` _string_ - 再起動するプロセス名 - +* `processName` *string* - 再起動するプロセス名 **戻り値**: -- `Promise` - プロセス再起動のレスポンス +* `Promise` - プロセス再起動の応答 **例:** ```typescript const result = await sandbox.computerUse.restartProcess('xfce4'); -console.log('XFCE4 process restarted:', result.message); +console.log('XFCE4プロセスを再起動しました:', result.message); ``` *** -#### start() +#### start() \{#start\} ```ts start(): Promise ``` -すべてのコンピュータ操作プロセス(Xvfb、xfce4、x11vnc、novnc)を開始します +すべてのコンピューター使用プロセス(Xvfb、xfce4、x11vnc、novnc)を起動します -**戻り値**: +**返り値**: -- `Promise` - コンピュータ操作の開始レスポンス +* `Promise` - コンピューター使用の起動レスポンス **例:** ```typescript const result = await sandbox.computerUse.start(); -console.log('Computer use processes started:', result.message); +console.log('コンピューター使用プロセスが開始されました:', result.message); ``` *** -#### stop() +#### stop() \{#stop\} ```ts stop(): Promise ``` -すべてのコンピュータ操作プロセスを停止します +すべてのコンピューター使用プロセスを停止します **戻り値**: -- `Promise` - コンピュータ操作の停止レスポンス +* `Promise` - コンピューター使用の停止応答 **例:** ```typescript const result = await sandbox.computerUse.stop(); -console.log('Computer use processes stopped:', result.message); +console.log('コンピューター使用プロセスを停止しました:', result.message); ``` -## Display -コンピュータ操作機能のためのディスプレイ操作 +## ディスプレイ \{#display\} + +コンピューター使用機能のディスプレイ操作 -### コンストラクタ +### コンストラクタ \{#constructors\} -#### new Display() +#### new Display() \{#new-display\} ```ts -new Display(sandboxId: string, toolboxApi: ToolboxApi): Display +new Display(apiClient: ComputerUseApi): Display ``` **パラメータ**: -- `sandboxId` _string_ -- `toolboxApi` _ToolboxApi_ - +* `apiClient` *ComputerUseApi* **戻り値**: -- `Display` +* `Display` -### メソッド +### メソッド \{#methods\} -#### getInfo() +#### getInfo() \{#getinfo\} ```ts getInfo(): Promise ``` -ディスプレイに関する情報を取得します +ディスプレイ情報を取得します -**戻り値**: +**返り値**: -- `Promise` - プライマリディスプレイおよび利用可能なすべてのディスプレイを含むディスプレイ情報 +* `Promise` - 既定ディスプレイ(プライマリ)および利用可能なすべてのディスプレイを含む情報 **例:** ```typescript const info = await sandbox.computerUse.display.getInfo(); -console.log(`Primary display: ${info.primary_display.width}x${info.primary_display.height}`); -console.log(`Total displays: ${info.total_displays}`); +console.log(`プライマリディスプレイ: ${info.primary_display.width}x${info.primary_display.height}`); +console.log(`ディスプレイ総数: ${info.total_displays}`); info.displays.forEach((display, index) => { - console.log(`Display ${index}: ${display.width}x${display.height} at ${display.x},${display.y}`); + console.log(`ディスプレイ ${index}: ${display.width}x${display.height} (位置: ${display.x},${display.y})`); }); ``` *** -#### getWindows() +#### getWindows() \{#getwindows\} ```ts getWindows(): Promise @@ -264,13 +252,13 @@ getWindows(): Promise **戻り値**: -- `Promise` - IDとタイトルを含む開いているウィンドウの一覧 +* `Promise` - ID とタイトルを含む開いているウィンドウの一覧 **例:** ```typescript const windows = await sandbox.computerUse.display.getWindows(); -console.log(`Found ${windows.count} open windows:`); +console.log(`${windows.count}個の開いているウィンドウが見つかりました:`); windows.windows.forEach(window => { console.log(`- ${window.title} (ID: ${window.id})`); }); @@ -278,203 +266,194 @@ windows.windows.forEach(window => { *** +## キーボード \{#keyboard\} -## キーボード - -コンピュータ操作機能のためのキーボード操作 +コンピューター使用機能向けのキーボード操作 -### コンストラクター +### コンストラクタ \{#constructors\} -#### new Keyboard() +#### new Keyboard() \{#new-keyboard\} ```ts -new Keyboard(sandboxId: string, toolboxApi: ToolboxApi): Keyboard +new Keyboard(apiClient: ComputerUseApi): Keyboard ``` **パラメータ**: -- `sandboxId` _string_ -- `toolboxApi` _ToolboxApi_ - +* `apiClient` *ComputerUseApi* **戻り値**: -- `Keyboard` +* `Keyboard` -### メソッド +### メソッド \{#methods\} -#### hotkey() +#### hotkey() \{#hotkey\} ```ts hotkey(keys: string): Promise ``` -ホットキーの組み合わせを送信します +ホットキーの組み合わせを押下します **パラメータ**: -- `keys` _string_ - ホットキーの組み合わせ(例: 'ctrl+c', 'alt+tab', 'cmd+shift+t') - +* `keys` *string* - ホットキーの組み合わせ(例: 'ctrl+c', 'alt+tab', 'cmd+shift+t') **戻り値**: -- `Promise` +* `Promise` **スロー**: ホットキー操作に失敗した場合 -**例:** +**使用例:** ```typescript -// Copy +// コピー try { await sandbox.computerUse.keyboard.hotkey('ctrl+c'); - console.log('Operation success'); + console.log('操作成功'); } catch (e) { - console.log('Operation failed:', e); + console.log('操作失敗:', e); } -// Paste +// 貼り付け try { await sandbox.computerUse.keyboard.hotkey('ctrl+v'); - console.log('Operation success'); + console.log('操作成功'); } catch (e) { - console.log('Operation failed:', e); + console.log('操作失敗:', e); } // Alt+Tab try { await sandbox.computerUse.keyboard.hotkey('alt+tab'); - console.log('Operation success'); + console.log('操作成功'); } catch (e) { - console.log('Operation failed:', e); + console.log('操作失敗:', e); } ``` *** -#### press() +#### press() \{#press\} ```ts press(key: string, modifiers?: string[]): Promise ``` -必要に応じて修飾キーと併せてキーを押下します +オプションの修飾キーとともにキーを押下します **パラメータ**: -- `key` _string_ - 押下するキー(例: 'Enter', 'Escape', 'Tab', 'a', 'A') -- `modifiers?` _string\[\] = \[\]_ - 修飾キー('ctrl', 'alt', 'meta', 'shift') - +* `key` *string* - 押すキー(例: 'Enter', 'Escape', 'Tab', 'a', 'A') +* `modifiers?` *string[] = []* - 修飾キー('ctrl', 'alt', 'meta', 'shift') -**戻り値**: +**返り値**: -- `Promise` +* `Promise` **スロー**: -キー押下操作に失敗した場合 +押下に失敗した場合 **例:** ```typescript -// Press Enter +// Enterキーを押す try { await sandbox.computerUse.keyboard.press('Return'); - console.log('Operation success'); + console.log('操作成功'); } catch (e) { - console.log('Operation failed:', e); + console.log('操作失敗:', e); } -// Press Ctrl+C +// Ctrl+Cを押す try { await sandbox.computerUse.keyboard.press('c', ['ctrl']); - console.log('Operation success'); + console.log('操作成功'); } catch (e) { - console.log('Operation failed:', e); + console.log('操作失敗:', e); } -// Press Ctrl+Shift+T +// Ctrl+Shift+Tを押す try { await sandbox.computerUse.keyboard.press('t', ['ctrl', 'shift']); - console.log('Operation success'); + console.log('操作成功'); } catch (e) { - console.log('Operation failed:', e); + console.log('操作失敗:', e); } ``` *** -#### type() +#### type() \{#type\} ```ts type(text: string, delay?: number): Promise ``` -指定したテキストを入力します +指定したテキストをタイプします **パラメータ**: -- `text` _string_ - 入力するテキスト -- `delay?` _number_ - 文字間の遅延(ミリ秒) - +* `text` *string* - タイプするテキスト +* `delay?` *number* - 文字ごとの遅延(ミリ秒) **戻り値**: -- `Promise` +* `Promise` **スロー**: -入力操作に失敗した場合 +タイプ処理が失敗した場合 **例:** ```typescript try { await sandbox.computerUse.keyboard.type('Hello, World!'); - console.log('Operation success'); + console.log('操作成功'); } catch (e) { - console.log('Operation failed:', e); + console.log('操作失敗:', e); } -// With delay between characters +// 文字間に遅延を設定 try { - await sandbox.computerUse.keyboard.type('Slow typing', 100); - console.log('Operation success'); + await sandbox.computerUse.keyboard.type('ゆっくり入力', 100); + console.log('操作成功'); } catch (e) { - console.log('Operation failed:', e); + console.log('操作失敗:', e); } ``` *** +## マウス \{#mouse\} -## Mouse - -コンピュータ操作(Computer Use)機能におけるマウス操作 +コンピューター使用機能におけるマウス操作 -### Constructors +### コンストラクタ \{#constructors\} -#### new Mouse() +#### new Mouse() \{#new-mouse\} ```ts -new Mouse(sandboxId: string, toolboxApi: ToolboxApi): Mouse +new Mouse(apiClient: ComputerUseApi): Mouse ``` -**Parameters**: - -- `sandboxId` _string_ -- `toolboxApi` _ToolboxApi_ +**パラメータ**: +* `apiClient` *ComputerUseApi* -**Returns**: +**戻り値**: -- `Mouse` +* `Mouse` -### Methods +### メソッド \{#methods\} -#### click() +#### click() \{#click\} ```ts click( @@ -486,34 +465,33 @@ double?: boolean): Promise 指定した座標でマウスクリックを実行します -**Parameters**: - -- `x` _number_ - クリック先のx座標 -- `y` _number_ - クリック先のy座標 -- `button?` _string = 'left'_ - 使用するマウスボタン('left'、'right'、'middle') -- `double?` _boolean = false_ - ダブルクリックを行うかどうか +**パラメータ**: +* `x` *number* - クリックするX座標 +* `y` *number* - クリックするY座標 +* `button?` *string = 'left'* - 使用するマウスボタン('left'、'right'、'middle') +* `double?` *boolean = false* - ダブルクリックを行うか -**Returns**: +**戻り値**: -- `Promise` - クリック操作の結果 +* `Promise` - クリック操作の結果 -**Example:** +**例:** ```typescript -// Single left click +// 左シングルクリック const result = await sandbox.computerUse.mouse.click(100, 200); -// Double click +// ダブルクリック const doubleClick = await sandbox.computerUse.mouse.click(100, 200, 'left', true); -// Right click +// 右クリック const rightClick = await sandbox.computerUse.mouse.click(100, 200, 'right'); ``` *** -#### drag() +#### drag() \{#drag\} ```ts drag( @@ -524,79 +502,77 @@ drag( button?: string): Promise ``` -開始座標から終了座標までドラッグします - -**Parameters**: +開始座標から終了座標までマウスをドラッグします -- `startX` _number_ - 開始x座標 -- `startY` _number_ - 開始y座標 -- `endX` _number_ - 終了x座標 -- `endY` _number_ - 終了y座標 -- `button?` _string = 'left'_ - ドラッグに使用するマウスボタン +**パラメータ**: +* `startX` *number* - 開始時のx座標 +* `startY` *number* - 開始時のy座標 +* `endX` *number* - 終了時のx座標 +* `endY` *number* - 終了時のy座標 +* `button?` *string = 'left'* - ドラッグに使用するマウスボタン -**Returns**: +**戻り値**: -- `Promise` - ドラッグ操作の結果 +* `Promise` - ドラッグ操作の結果 -**Example:** +**例:** ```typescript const result = await sandbox.computerUse.mouse.drag(50, 50, 150, 150); -console.log(`Dragged from ${result.from.x},${result.from.y} to ${result.to.x},${result.to.y}`); +console.log(`${result.from.x},${result.from.y} から ${result.to.x},${result.to.y} へドラッグしました`); ``` *** -#### getPosition() +#### getPosition() \{#getposition\} ```ts -getPosition(): Promise +getPosition(): Promise ``` -現在のマウスカーソル位置を取得します +現在のマウスカーソルの位置を取得します -**Returns**: +**戻り値**: -- `Promise` - x座標とy座標を含む現在のマウス位置 +* `Promise` - x および y の座標を含む現在のマウス位置 -**Example:** +**例:** ```typescript const position = await sandbox.computerUse.mouse.getPosition(); -console.log(`Mouse is at: ${position.x}, ${position.y}`); +console.log(`マウスの位置: ${position.x}, ${position.y}`); ``` *** -#### move() +#### move() \{#move\} ```ts -move(x: number, y: number): Promise +move(x: number, y: number): Promise ``` -指定した座標にマウスカーソルを移動します - -**Parameters**: +マウスカーソルを指定した座標に移動します -- `x` _number_ - 移動先のx座標 -- `y` _number_ - 移動先のy座標 +**パラメータ**: +* `x` *number* - 移動先のX座標 +* `y` *number* - 移動先のY座標 -**Returns**: +**戻り値**: -- `Promise` - 移動操作の結果 +* `Promise` - 移動後の座標 -**Example:** +**例:** ```typescript const result = await sandbox.computerUse.mouse.move(100, 200); -console.log(`Mouse moved to: ${result.x}, ${result.y}`); +console.log(`マウスを移動しました: ${result.x}, ${result.y}`); ``` *** -#### scroll() +#### scroll() \{#scroll\} ```ts scroll( @@ -608,86 +584,81 @@ amount?: number): Promise 指定した座標でマウスホイールをスクロールします -**Parameters**: - -- `x` _number_ - スクロール先のx座標 -- `y` _number_ - スクロール先のy座標 -- `direction` _スクロール方向_ - `"up"` | `"down"` -- `amount?` _number = 1_ - スクロール量 +**パラメータ**: +* `x` *number* - スクロールするX座標 +* `y` *number* - スクロールするY座標 +* `direction` *スクロール方向* - `"up"` | `"down"` +* `amount?` *number = 1* - スクロール量 -**Returns**: +**戻り値**: -- `Promise` - スクロール操作が成功したかどうか +* `Promise` - スクロールが成功したかどうか -**Example:** +**例:** ```typescript -// Scroll up +// 上方向にスクロール const scrollUp = await sandbox.computerUse.mouse.scroll(100, 200, 'up', 3); -// Scroll down +// 下方向にスクロール const scrollDown = await sandbox.computerUse.mouse.scroll(100, 200, 'down', 5); ``` *** +## スクリーンショット \{#screenshot\} -## スクリーンショット - -コンピュータ操作機能におけるスクリーンショット操作 +コンピューター使用機能向けのスクリーンショット操作 -### コンストラクタ +### コンストラクタ \{#constructors\} -#### new Screenshot() +#### new Screenshot() \{#new-screenshot\} ```ts -new Screenshot(sandboxId: string, toolboxApi: ToolboxApi): Screenshot +new Screenshot(apiClient: ComputerUseApi): Screenshot ``` **パラメータ**: -- `sandboxId` _string_ -- `toolboxApi` _ToolboxApi_ - +* `apiClient` *ComputerUseApi* **戻り値**: -- `Screenshot` +* `Screenshot` -### メソッド +### メソッド \{#methods\} -#### takeCompressed() +#### takeCompressed() \{#takecompressed\} ```ts -takeCompressed(options?: ScreenshotOptions): Promise +takeCompressed(options?: ScreenshotOptions): Promise ``` 画面全体の圧縮スクリーンショットを取得します **パラメータ**: -- `options?` _ScreenshotOptions = {}_ - 圧縮および表示のオプション - +* `options?` *ScreenshotOptions = {}* - 圧縮および表示に関するオプション **戻り値**: -- `Promise` - 圧縮スクリーンショットのデータ +* `Promise` - 圧縮済みスクリーンショットデータ **例:** ```typescript -// 既定の圧縮 +// デフォルトの圧縮 const screenshot = await sandbox.computerUse.screenshot.takeCompressed(); -// 高品質 JPEG +// 高品質のJPEG const jpeg = await sandbox.computerUse.screenshot.takeCompressed({ format: 'jpeg', quality: 95, showCursor: true }); -// 縮小した PNG +// 縮小されたPNG const scaled = await sandbox.computerUse.screenshot.takeCompressed({ format: 'png', scale: 0.5 @@ -696,23 +667,22 @@ const scaled = await sandbox.computerUse.screenshot.takeCompressed({ *** -#### takeCompressedRegion() +#### takeCompressedRegion() \{#takecompressedregion\} ```ts -takeCompressedRegion(region: ScreenshotRegion, options?: ScreenshotOptions): Promise +takeCompressedRegion(region: ScreenshotRegion, options?: ScreenshotOptions): Promise ``` 特定の領域の圧縮スクリーンショットを取得します **パラメータ**: -- `region` _ScreenshotRegion_ - 取得対象の領域 -- `options?` _ScreenshotOptions = {}_ - 圧縮および表示のオプション - +* `region` *ScreenshotRegion* - 取得する領域 +* `options?` *ScreenshotOptions = {}* - 圧縮および表示のオプション **戻り値**: -- `Promise` - 圧縮スクリーンショットのデータ +* `Promise` - 圧縮されたスクリーンショットのデータ **例:** @@ -728,7 +698,7 @@ console.log(`Compressed size: ${screenshot.size_bytes} bytes`); *** -#### takeFullScreen() +#### takeFullScreen() \{#takefullscreen\} ```ts takeFullScreen(showCursor?: boolean): Promise @@ -738,12 +708,11 @@ takeFullScreen(showCursor?: boolean): Promise **パラメータ**: -- `showCursor?` _boolean = false_ - スクリーンショットにカーソルを表示するかどうか - +* `showCursor?` *boolean = false* - スクリーンショットにカーソルを表示するか **戻り値**: -- `Promise` - 画像を base64 でエンコードしたスクリーンショットデータ +* `Promise` - 画像を base64 エンコードしたスクリーンショットデータ **例:** @@ -751,58 +720,57 @@ takeFullScreen(showCursor?: boolean): Promise const screenshot = await sandbox.computerUse.screenshot.takeFullScreen(); console.log(`Screenshot size: ${screenshot.width}x${screenshot.height}`); -// カーソルを表示する場合 +// カーソルを表示 const withCursor = await sandbox.computerUse.screenshot.takeFullScreen(true); ``` *** -#### takeRegion() +#### takeRegion() \{#takeregion\} ```ts -takeRegion(region: ScreenshotRegion, showCursor?: boolean): Promise +takeRegion(region: ScreenshotRegion, showCursor?: boolean): Promise ``` 特定の領域のスクリーンショットを取得します **パラメータ**: -- `region` _ScreenshotRegion_ - 取得対象の領域 -- `showCursor?` _boolean = false_ - スクリーンショットにカーソルを表示するかどうか - +* `region` *ScreenshotRegion* - キャプチャする領域 +* `showCursor?` *boolean = false* - スクリーンショットにカーソルを表示するかどうか **戻り値**: -- `Promise` - 画像を base64 でエンコードしたスクリーンショットデータ +* `Promise` - 画像を base64 エンコードしたスクリーンショットデータ **例:** ```typescript const region = { x: 100, y: 100, width: 300, height: 200 }; const screenshot = await sandbox.computerUse.screenshot.takeRegion(region); -console.log(`Captured region: ${screenshot.region.width}x${screenshot.region.height}`); +console.log(`キャプチャした領域: ${screenshot.region.width}x${screenshot.region.height}`); ``` *** +## ScreenshotOptions \{#screenshotoptions\} -## ScreenshotOptions - -スクリーンショット圧縮オプション用のインターフェース +スクリーンショット圧縮オプションのインターフェース **プロパティ**: -- `format?` _string_ -- `quality?` _number_ -- `scale?` _number_ -- `showCursor?` _boolean_ -## ScreenshotRegion +* `format?` *string* +* `quality?` *number* +* `scale?` *number* +* `showCursor?` *boolean* + +## ScreenshotRegion \{#screenshotregion\} スクリーンショット操作で使用される領域座標のインターフェース **プロパティ**: -- `height` _number_ -- `width` _number_ -- `x` _number_ -- `y` _number_ \ No newline at end of file +* `height` *number* +* `width` *number* +* `x` *number* +* `y` *number* \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/daytona.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/daytona.mdx index 426cc3570..f328b6516 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/daytona.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/daytona.mdx @@ -3,33 +3,28 @@ title: "Daytona" hideTitleOnPage: true --- +## Daytona \{#daytona\} -## Daytona - -Daytona API と対話するためのメインクラス。 -Daytona サンドボックスの作成、管理、操作のためのメソッドを提供します。 -明示的な設定または環境変数を使用して初期化できます。 +Daytona API とやり取りするためのメインクラス。 +Daytona のサンドボックスを作成・管理・操作するためのメソッドを提供します。 +明示的な設定または環境変数を用いて初期化できます。 **プロパティ**: -- `snapshot` _SnapshotService_ - Daytona スナップショットを管理するサービス -- `volume` _VolumeService_ - Daytona ボリュームを管理するサービス - - - - +* `snapshot` *SnapshotService* - Daytona のスナップショットを管理するサービス +* `volume` *VolumeService* - Daytona のボリュームを管理するサービス **例:** ```ts -// Using environment variables -// Uses DAYTONA_API_KEY, DAYTONA_API_URL, DAYTONA_TARGET +// 環境変数を使用 +// DAYTONA_API_KEY、DAYTONA_API_URL、DAYTONA_TARGETを使用 const daytona = new Daytona(); const sandbox = await daytona.create(); ``` ```ts -// Using explicit configuration +// 明示的な設定を使用 const config: DaytonaConfig = { apiKey: "your-api-key", apiUrl: "https://your-api.com", @@ -40,34 +35,33 @@ const daytona = new Daytona(config); @class ``` -### コンストラクター +### コンストラクタ \{#constructors\} -#### new Daytona() +#### new Daytona() \{#new-daytona\} ```ts new Daytona(config?: DaytonaConfig): Daytona ``` -新しい Daytona クライアントインスタンスを作成します。 +新しい Daytona クライアント インスタンスを作成します。 **パラメータ**: -- `config?` _DaytonaConfig_ - 設定オプション - +* `config?` *DaytonaConfig* - 設定オプション **戻り値**: -- `Daytona` +* `Daytona` -**スロー**: +**例外**: -- `DaytonaError` - API キーが指定されていない場合 +* `DaytonaError` - API キーが指定されていない場合 -### メソッド +### メソッド \{#methods\} -#### create() +#### create() \{#create\} -##### 呼び出しシグネチャ +##### 呼び出しシグネチャ \{#call-signature\} ```ts create(params?: CreateSandboxFromSnapshotParams, options?: { @@ -75,17 +69,17 @@ create(params?: CreateSandboxFromSnapshotParams, options?: { }): Promise ``` -指定済みまたはデフォルトのスナップショットからサンドボックスを作成します。言語、イメージ、環境変数、ボリュームなど、さまざまなパラメータを指定できます。 +指定またはデフォルトのスナップショットからサンドボックスを作成します。言語、イメージ、環境変数、ボリュームなど、さまざまなパラメータを指定できます。 **パラメータ**: -- `params?` _CreateSandboxFromSnapshotParams_ - スナップショットからサンドボックスを作成するためのパラメータ -- `options?` _作成処理のオプション_ -- `timeout?` _number_ - タイムアウト(秒)(0 はタイムアウトなし、デフォルトは 60) +* `params?` *CreateSandboxFromSnapshotParams* - スナップショットからサンドボックスを作成するためのパラメータ +* `options?` *Options for the create operation* +* `timeout?` *number* - タイムアウト(秒)。0 はタイムアウトなし、デフォルトは 60 **戻り値**: -- `Promise` - 作成されたサンドボックスインスタンス +* `Promise` - 作成されたサンドボックスのインスタンス **例:** @@ -94,7 +88,7 @@ const sandbox = await daytona.create(); ``` ```ts -// Create a custom sandbox +// カスタムサンドボックスを作成 const params: CreateSandboxFromSnapshotParams = { language: 'typescript', snapshot: 'my-snapshot-id', @@ -109,7 +103,7 @@ const params: CreateSandboxFromSnapshotParams = { const sandbox = await daytona.create(params, { timeout: 100 }); ``` -##### 呼び出しシグネチャ +##### 呼び出しシグネチャ \{#call-signature\} ```ts create(params?: CreateSandboxFromImageParams, options?: { @@ -118,18 +112,18 @@ create(params?: CreateSandboxFromImageParams, options?: { }): Promise ``` -レジストリで利用可能な指定イメージ、または宣言的 Daytona イメージからサンドボックスを作成します。リソース、言語、イメージ、環境変数、ボリュームなど、さまざまなパラメータを指定できます。Daytona は提供されたイメージからスナップショットを作成し、それを用いてサンドボックスを作成します。 +指定したレジストリで利用可能なイメージ、または宣言的な Daytona Image からサンドボックスを作成します。リソース、言語、イメージ、環境変数、ボリュームなど、さまざまなパラメータを指定できます。Daytona は提供されたイメージからスナップショットを作成し、それを用いてサンドボックスを作成します。 **パラメータ**: -- `params?` _CreateSandboxFromImageParams_ - イメージからサンドボックスを作成するためのパラメータ -- `options?` _作成処理のオプション_ -- `onSnapshotCreateLogs?` _\(chunk: string\) =\> void_ - スナップショット作成ログを処理するコールバック関数 -- `timeout?` _number_ - タイムアウト(秒)(0 はタイムアウトなし、デフォルトは 60) +* `params?` *CreateSandboxFromImageParams* - イメージからサンドボックスを作成するためのパラメータ +* `options?` *作成操作のオプション* +* `onSnapshotCreateLogs?` *(chunk: string) => void* - スナップショット作成ログを処理するコールバック関数 +* `timeout?` *number* - タイムアウト(秒)(0 は無制限、既定は 60) **戻り値**: -- `Promise` - 作成されたサンドボックスインスタンス +* `Promise` - 作成されたサンドボックス インスタンス **例:** @@ -138,7 +132,7 @@ const sandbox = await daytona.create({ image: 'debian:12.9' }, { timeout: 90, on ``` ```ts -// Create a custom sandbox +// カスタムサンドボックスを作成 const image = Image.base('alpine:3.18').pipInstall('numpy'); const params: CreateSandboxFromImageParams = { language: 'typescript', @@ -160,7 +154,7 @@ const sandbox = await daytona.create(params, { timeout: 100, onSnapshotCreateLog *** -#### delete() +#### delete() \{#delete\} ```ts delete(sandbox: Sandbox, timeout: number): Promise @@ -170,13 +164,12 @@ delete(sandbox: Sandbox, timeout: number): Promise **パラメータ**: -- `sandbox` _Sandbox_ - 削除するサンドボックス -- `timeout` _number = 60_ - タイムアウト(秒)(0 はタイムアウトなし、デフォルトは 60) - +* `sandbox` *Sandbox* - 削除対象のサンドボックス +* `timeout` *number = 60* - タイムアウト(秒)。0は無制限、既定値は60 **戻り値**: -- `Promise` +* `Promise` **例:** @@ -187,115 +180,128 @@ await daytona.delete(sandbox); *** -#### findOne() +#### findOne() \{#findone\} ```ts findOne(filter: SandboxFilter): Promise ``` -ID またはラベルでサンドボックスを検索します。 +ID、名前、またはラベルでサンドボックスを特定します。 **パラメータ**: -- `filter` _SandboxFilter_ - サンドボックスのフィルター - +* `filter` *SandboxFilter* - サンドボックスのフィルター **戻り値**: -- `Promise` - ID またはラベルに一致する最初のサンドボックス。 +* `Promise` - ID、名前、またはラベルに一致する最初のサンドボックス。 **例:** ```ts const sandbox = await daytona.findOne({ labels: { 'my-label': 'my-value' } }); -console.log(`Sandbox ID: ${sandbox.id}, State: ${sandbox.state}`); +console.log(`サンドボックスID: ${sandbox.id}, 状態: ${sandbox.state}`); ``` *** -#### get() +#### get() \{#get\} ```ts -get(sandboxId: string): Promise +get(sandboxIdOrName: string): Promise ``` -ID でサンドボックスを取得します。 +ID または名前を指定してサンドボックスを取得します。 **パラメータ**: -- `sandboxId` _string_ - 取得するサンドボックスの ID - +* `sandboxIdOrName` *string* - 取得対象のサンドボックスのIDまたは名前 **戻り値**: -- `Promise` - 対象のサンドボックス +* `Promise` - 取得したサンドボックス **例:** ```ts -const sandbox = await daytona.get('my-sandbox-id'); -console.log(`Sandbox state: ${sandbox.state}`); +const sandbox = await daytona.get('my-sandbox-id-or-name'); +console.log(`サンドボックスの状態: ${sandbox.state}`); ``` *** -#### list() +#### getProxyToolboxUrl() \{#getproxytoolboxurl\} ```ts -list(labels?: Record): Promise +getProxyToolboxUrl(): Promise ``` -ラベルでフィルタしたサンドボックスを一覧表示します。 +**戻り値**: -**パラメータ**: +* `Promise` + +*** + +#### list() \{#list\} -- `labels?` _Record\_ - サンドボックスを絞り込むラベル +```ts +list( + labels?: Record, + page?: number, +limit?: number): Promise +``` +ラベルでフィルタリングされたサンドボックスのページ分割リストを返します。 + +**パラメータ**: + +* `labels?` *Record<string, string>* - サンドボックスをフィルタリングするラベル +* `page?` *number* - ページ番号(1から開始) +* `limit?` *number* - 1ページあたりの最大件数 **戻り値**: -- `Promise` - ラベルに一致するサンドボックスの配列。 +* `Promise` - ラベルに一致するサンドボックスのページ分割リスト。 **例:** ```ts -const sandboxes = await daytona.list({ 'my-label': 'my-value' }); -for (const sandbox of sandboxes) { +const result = await daytona.list({ 'my-label': 'my-value' }, 2, 10); +for (const sandbox of result.items) { console.log(`${sandbox.id}: ${sandbox.state}`); } ``` *** -#### start() +#### start() \{#start\} ```ts start(sandbox: Sandbox, timeout?: number): Promise ``` -サンドボックスを起動し、準備完了になるまで待機します。 +サンドボックスを起動し、準備完了まで待機します。 **パラメータ**: -- `sandbox` _Sandbox_ - 起動するサンドボックス -- `timeout?` _number_ - 任意のタイムアウト(秒)(0 はタイムアウトなし) - +* `sandbox` *Sandbox* - 起動するサンドボックス +* `timeout?` *number* - 省略可能なタイムアウト(秒)。0 はタイムアウトなしを意味します **戻り値**: -- `Promise` +* `Promise` **例:** ```ts const sandbox = await daytona.get('my-sandbox-id'); -// サンドボックスの起動を最大 60 秒待機 +// サンドボックスの開始を最大60秒間待機 await daytona.start(sandbox, 60); ``` *** -#### stop() +#### stop() \{#stop\} ```ts stop(sandbox: Sandbox): Promise @@ -305,12 +311,11 @@ stop(sandbox: Sandbox): Promise **パラメータ**: -- `sandbox` _Sandbox_ - 停止するサンドボックス - +* `sandbox` *Sandbox* - 停止対象のサンドボックス **戻り値**: -- `Promise` +* `Promise` **例:** @@ -318,87 +323,95 @@ stop(sandbox: Sandbox): Promise const sandbox = await daytona.get('my-sandbox-id'); await daytona.stop(sandbox); ``` -## CodeLanguage + +## CodeLanguage \{#codelanguage\} コード実行でサポートされているプログラミング言語 -**列挙メンバー**: +**列挙値**: -- `JAVASCRIPT` ("javascript") -- `PYTHON` ("python") -- `TYPESCRIPT` ("typescript") +* `JAVASCRIPT` ("javascript") +* `PYTHON` ("python") +* `TYPESCRIPT` ("typescript") -## CreateSandboxBaseParams +## CreateSandboxBaseParams \{#createsandboxbaseparams\} 新しいサンドボックスを作成するための基本パラメータ。 **プロパティ**: -- `autoArchiveInterval?` _number_ - 自動アーカイブの間隔(分)。0 は最大間隔を使用することを意味します。デフォルトは 7 日。 -- `autoDeleteInterval?` _number_ - 自動削除の間隔(分)。負の値は無効、0 は停止時に即時削除を意味します。デフォルトでは自動削除は無効です。 -- `autoStopInterval?` _number_ - 自動停止の間隔(分)。0 は無効を意味します。デフォルトは 15 分。 -- `envVars?` _Record\_ - サンドボックスに設定する任意の環境変数 -- `labels?` _Record\_ - サンドボックスのラベル -- `language?` _string_ - 直接コード実行用のプログラミング言語 -- `networkAllowList?` _string_ - サンドボックスで許可する CIDR ネットワークアドレスのカンマ区切りリスト -- `networkBlockAll?` _boolean_ - サンドボックスのネットワークアクセスをすべてブロックするかどうか -- `public?` _boolean_ - サンドボックスのポートプレビューを公開するかどうか -- `user?` _string_ - サンドボックスで使用する任意の OS ユーザー -- `volumes?` _VolumeMount\[\]_ - サンドボックスにマウントする任意のボリューム配列 -## CreateSandboxFromImageParams +* `autoArchiveInterval?` *number* - 自動アーカイブの間隔(分)。0 は最大間隔を使用することを意味します。デフォルトは 7 日です。 +* `autoDeleteInterval?` *number* - 自動削除の間隔(分)。負の値は無効、0 は停止時に即時削除を意味します。既定では自動削除は無効です。 +* `autoStopInterval?` *number* - 自動停止の間隔(分)。0 は無効を意味します。デフォルトは 15 分です。 +* `envVars?` *Record<string, string>* - サンドボックスに設定する任意の環境変数 +* `ephemeral?` *boolean* - サンドボックスをエフェメラル(短命)にするかどうか。true の場合、autoDeleteInterval は 0 に設定されます。 +* `labels?` *Record<string, string>* - サンドボックスのラベル +* `language?` *string* - 直接コード実行用のプログラミング言語 +* `name?` *string* +* `networkAllowList?` *string* - サンドボックスで許可する CIDR ネットワークアドレスのカンマ区切りリスト +* `networkBlockAll?` *boolean* - サンドボックスのすべてのネットワークアクセスをブロックするかどうか +* `public?` *boolean* - サンドボックスのポートプレビューを公開するかどうか +* `user?` *string* - サンドボックスで使用する任意の OS ユーザー +* `volumes?` *VolumeMount[]* - サンドボックスにマウントする任意のボリューム配列 + +## CreateSandboxFromImageParams \{#createsandboxfromimageparams\} 新しいサンドボックスを作成するためのパラメータ。 **プロパティ**: -- `autoArchiveInterval?` _number_ -- `autoDeleteInterval?` _number_ -- `autoStopInterval?` _number_ -- `envVars?` _Record\_ -- `image` _string \| Image_ - サンドボックスに使用するカスタム Docker イメージ。Image オブジェクトが指定された場合は、 - イメージが動的にビルドされます。 -- `labels?` _Record\_ -- `language?` _string_ -- `networkAllowList?` _string_ -- `networkBlockAll?` _boolean_ -- `public?` _boolean_ -- `resources?` _Resources_ - サンドボックスのリソース割り当て。指定しない場合、サンドボックスは - 既定のリソースを使用します。 -- `user?` _string_ -- `volumes?` _VolumeMount\[\]_ -## CreateSandboxFromSnapshotParams - -スナップショットから新しいサンドボックスを作成するためのパラメータ。 +* `autoArchiveInterval?` *number* +* `autoDeleteInterval?` *number* +* `autoStopInterval?` *number* +* `envVars?` *Record<string, string>* +* `ephemeral?` *boolean* +* `image` *string | Image* - サンドボックスに使用するカスタム Docker イメージ。Image オブジェクトが指定された場合は、 + イメージが動的にビルドされます。 +* `labels?` *Record<string, string>* +* `language?` *string* +* `name?` *string* +* `networkAllowList?` *string* +* `networkBlockAll?` *boolean* +* `public?` *boolean* +* `resources?` *Resources* - サンドボックスのリソース割り当て。指定しない場合、サンドボックスには + 既定のリソースが割り当てられます。 +* `user?` *string* +* `volumes?` *VolumeMount[]* + +## CreateSandboxFromSnapshotParams \{#createsandboxfromsnapshotparams\} + +スナップショットから新規にサンドボックスを作成するためのパラメータ。 **プロパティ**: -- `autoArchiveInterval?` _number_ -- `autoDeleteInterval?` _number_ -- `autoStopInterval?` _number_ -- `envVars?` _Record\_ -- `labels?` _Record\_ -- `language?` _string_ -- `networkAllowList?` _string_ -- `networkBlockAll?` _boolean_ -- `public?` _boolean_ -- `snapshot?` _string_ - サンドボックスに使用するスナップショット名。 -- `user?` _string_ -- `volumes?` _VolumeMount\[\]_ -## DaytonaConfig +* `autoArchiveInterval?` *number* +* `autoDeleteInterval?` *number* +* `autoStopInterval?` *number* +* `envVars?` *Record<string, string>* +* `ephemeral?` *boolean* +* `labels?` *Record<string, string>* +* `language?` *string* +* `name?` *string* +* `networkAllowList?` *string* +* `networkBlockAll?` *boolean* +* `public?` *boolean* +* `snapshot?` *string* - サンドボックスに使用するスナップショット名。 +* `user?` *string* +* `volumes?` *VolumeMount[]* + +## DaytonaConfig \{#daytonaconfig\} Daytona クライアントを初期化するための設定オプション。 **プロパティ**: -- `apiKey?` _string_ - Daytona API で認証するための API キー -- `apiUrl?` _string_ - Daytona API の URL。ここで未設定で、かつ環境変数 DAYTONA_API_URL でも未設定の場合は、既定で 'https://app.daytona.io/api' が使用されます。 -- `jwtToken?` _string_ - Daytona API で認証するための JWT トークン。未設定の場合は、 - 環境変数 `DAYTONA_JWT_TOKEN` で指定するか、代わりに API キーを指定する必要があります。 -- `organizationId?` _string_ - JWT ベース認証で使用される組織 ID。JWT トークンが指定されている場合に必須で、ここで設定するか、環境変数 `DAYTONA_ORGANIZATION_ID` で設定する必要があります。 -- ~~`serverUrl?`~~ _string_ - **_非推奨_** - 代わりに `apiUrl` を使用してください。このプロパティは今後のバージョンで削除されます。 -- `target?` _string_ - サンドボックスのターゲット(ロケーション) - - +* `apiKey?` *string* - Daytona API への認証に使用する API キー +* `apiUrl?` *string* - Daytona API の URL。ここで未設定で、環境変数 DAYTONA_API_URL にも設定がない場合、デフォルトで 'https://app.daytona.io/api' が使用されます。 +* `jwtToken?` *string* - Daytona API への認証に使用する JWT トークン。未設定の場合は、 + 環境変数 `DAYTONA_JWT_TOKEN` で指定するか、代わりに API キーを指定する必要があります。 +* `organizationId?` *string* - JWT ベース認証で使用する組織 ID。JWT トークンが提供される場合は必須で、ここで設定するか、環境変数 `DAYTONA_ORGANIZATION_ID` に設定する必要があります。 +* ~~`serverUrl?`~~ *string* - ***非推奨*** - 代わりに `apiUrl` を使用してください。このプロパティは将来のバージョンで削除されます。 +* `target?` *string* - サンドボックスのターゲットロケーション **例:** @@ -410,18 +423,17 @@ const config: DaytonaConfig = { }; const daytona = new Daytona(config); ``` -## Resources + +## リソース \{#resources\} サンドボックスのリソース割り当て。 **プロパティ**: -- `cpu?` _number_ - サンドボックスの CPU 割り当て(コア数) -- `disk?` _number_ - サンドボックスのディスク割り当て(GiB) -- `gpu?` _number_ - サンドボックスの GPU 割り当て(ユニット) -- `memory?` _number_ - サンドボックスのメモリ割り当て(GiB) - - +* `cpu?` *number* - サンドボックスの CPU 割り当て(コア数) +* `disk?` *number* - サンドボックスのディスク容量の割り当て(GiB) +* `gpu?` *number* - サンドボックスの GPU 割り当て(ユニット) +* `memory?` *number* - サンドボックスのメモリ割り当て(GiB) **例:** @@ -429,30 +441,29 @@ const daytona = new Daytona(config); const resources: SandboxResources = { cpu: 2, memory: 4, // 4GiB RAM - disk: 20 // 20GiB disk + disk: 20 // 20GiB ディスク }; ``` -## SandboxFilter -サンドボックスのフィルター。 +## SandboxFilter \{#sandboxfilter\} + +サンドボックスを絞り込むためのフィルター。 **プロパティ**: -- `id?` _string_ - 取得するサンドボックスの ID -- `labels?` _Record\_ - サンドボックスを絞り込むためのラベル -## VolumeMount +* `idOrName?` *string* - 取得するサンドボックスの ID または名前 +* `labels?` *Record<string, string>* - サンドボックスをフィルターするためのラベル -サンドボックスのボリュームマウントを表します。 +## VolumeMount \{#volumemount\} -**プロパティ**: +サンドボックスにおけるボリュームのマウントを表します。 -- `mountPath` _string_ - サンドボックス上でボリュームをマウントするパス - -- `volumeId` _string_ - マウントするボリュームのID - +**プロパティ**: +* `mountPath` *string* - サンドボックス内でボリュームをマウントするパス +* `volumeId` *string* - マウントするボリュームのID **継承:** -- `SandboxVolume` \ No newline at end of file +* `SandboxVolume` \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/errors.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/errors.mdx index c5f386fad..03418faf3 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/errors.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/errors.mdx @@ -3,24 +3,23 @@ title: "エラー" hideTitleOnPage: true --- - -## DaytonaError +## DaytonaError \{#daytonaerror\} Daytona SDKの基底エラー。 **継承:** -- `Error` +* `Error` -### 派生クラス +### 派生クラス \{#extended-by\} -- `DaytonaNotFoundError` +* `DaytonaNotFoundError` -### コンストラクタ +### コンストラクタ \{#constructors\} -#### new DaytonaError() +#### new DaytonaError() \{#new-daytonaerror\} -_継承元_: `Error.constructor` +*継承元*: `Error.constructor` ```ts new DaytonaError(message?: string): DaytonaError @@ -28,16 +27,15 @@ new DaytonaError(message?: string): DaytonaError **パラメータ**: -- `message?` _string_ - +* `message?` *string* **戻り値**: -- `DaytonaError` +* `DaytonaError` -#### new DaytonaError() +#### new DaytonaError() \{#new-daytonaerror\} -_継承元_: `Error.constructor` +*継承元*: `Error.constructor` ```ts new DaytonaError(message?: string, options?: ErrorOptions): DaytonaError @@ -45,30 +43,28 @@ new DaytonaError(message?: string, options?: ErrorOptions): DaytonaError **パラメータ**: -- `message?` _string_ -- `options?` _ErrorOptions_ - +* `message?` *string* +* `options?` *ErrorOptions* **戻り値**: -- `DaytonaError` +* `DaytonaError` *** - -## DaytonaNotFoundError +## DaytonaNotFoundError \{#daytonanotfounderror\} Daytona SDK の基本となるエラー。 **継承:** -- `DaytonaError` +* `DaytonaError` -### コンストラクタ +### コンストラクタ \{#constructors\} -#### new DaytonaNotFoundError() +#### new DaytonaNotFoundError() \{#new-daytonanotfounderror\} -_継承元_: `DaytonaError.constructor` +*継承元*: `DaytonaError.constructor` ```ts new DaytonaNotFoundError(message?: string): DaytonaNotFoundError @@ -76,16 +72,15 @@ new DaytonaNotFoundError(message?: string): DaytonaNotFoundError **パラメータ**: -- `message?` _string_ - +* `message?` *string* **戻り値**: -- `DaytonaNotFoundError` +* `DaytonaNotFoundError` -#### new DaytonaNotFoundError() +#### new DaytonaNotFoundError() \{#new-daytonanotfounderror\} -_継承元_: `DaytonaError.constructor` +*継承元*: `DaytonaError.constructor` ```ts new DaytonaNotFoundError(message?: string, options?: ErrorOptions): DaytonaNotFoundError @@ -93,11 +88,9 @@ new DaytonaNotFoundError(message?: string, options?: ErrorOptions): DaytonaNotFo **パラメータ**: -- `message?` _string_ -- `options?` _ErrorOptions_ - +* `message?` *string* +* `options?` *ErrorOptions* **戻り値**: -- `DaytonaNotFoundError` - +* `DaytonaNotFoundError` diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/execute-response.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/execute-response.mdx index f0e0809eb..2bdb6aeb6 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/execute-response.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/execute-response.mdx @@ -3,25 +3,21 @@ title: "ExecuteResponse" hideTitleOnPage: true --- - -## ExecuteResponse +## ExecuteResponse \{#executeresponse\} コマンド実行のレスポンス。 **プロパティ**: -- `artifacts?` _ExecutionArtifacts_ - コマンド実行で生成された実行アーティファクト -- `exitCode` _number_ - コマンド実行の終了コード -- `result` _string_ - コマンド実行の出力 - -**継承:** +* `artifacts?` *ExecutionArtifacts* - コマンド実行で生成されたアーティファクト +* `exitCode` *number* - コマンド実行の終了コード +* `result` *string* - コマンド実行の出力 -- `ExecuteResponse` -## ExecutionArtifacts +## ExecutionArtifacts \{#executionartifacts\} コマンド実行で生成されたアーティファクト。 **プロパティ**: -- `charts?` _Chart\[\]_ - matplotlib 由来のチャートメタデータのリスト -- `stdout` _string_ - コマンドの標準出力。`ExecuteResponse` の `result` と同一 \ No newline at end of file +* `charts?` *Chart[]* - matplotlib 由来のチャートメタデータのリスト +* `stdout` *string* - コマンドの標準出力。`ExecuteResponse` の `result` と同一 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/file-system.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/file-system.mdx index 02c6ac084..bbb822144 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/file-system.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/file-system.mdx @@ -3,84 +3,77 @@ title: "ファイルシステム" hideTitleOnPage: true --- +## FileSystem \{#filesystem\} -## FileSystem +サンドボックス内のファイルシステム操作を提供します。 -サンドボックス内でのファイルシステム操作を提供します。 +### コンストラクタ \{#constructors\} -### Constructors - -#### new FileSystem() +#### new FileSystem() \{#new-filesystem\} ```ts new FileSystem( - sandboxId: string, clientConfig: Configuration, - toolboxApi: ToolboxApi, - getRootDir: () => Promise): FileSystem + apiClient: FileSystemApi, + ensureToolboxUrl: () => Promise): FileSystem ``` -**Parameters**: - -- `sandboxId` _string_ -- `clientConfig` _Configuration_ -- `toolboxApi` _ToolboxApi_ -- `getRootDir` _\(\) =\> Promise\_ +**パラメータ**: +* `clientConfig` *Configuration* +* `apiClient` *FileSystemApi* +* `ensureToolboxUrl` *() => Promise<void>* -**Returns**: +**戻り値**: -- `FileSystem` +* `FileSystem` -### Methods +### メソッド \{#methods\} -#### createFolder() +#### createFolder() \{#createfolder\} ```ts createFolder(path: string, mode: string): Promise ``` -指定した権限でサンドボックス内に新しいディレクトリを作成します。 - -**Parameters**: +指定したパーミッションでサンドボックス内に新しいディレクトリを作成します。 -- `path` _string_ - ディレクトリを作成するパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `mode` _string_ - 8 進数形式のディレクトリ権限(例: "755") +**パラメータ**: +* `path` *string* - ディレクトリを作成するパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `mode` *string* - 8進数表記のディレクトリのパーミッション(例: "755") -**Returns**: +**返り値**: -- `Promise` +* `Promise` -**Example:** +**例:** ```ts -// 標準的な権限でディレクトリを作成 +// 標準権限でディレクトリを作成 await fs.createFolder('app/data', '755'); ``` *** -#### deleteFile() +#### deleteFile() \{#deletefile\} ```ts -deleteFile(path: string): Promise +deleteFile(path: string, recursive?: boolean): Promise ``` サンドボックスからファイルまたはディレクトリを削除します。 -**Parameters**: +**パラメーター**: -- `path` _string_ - 削除するファイルまたはディレクトリのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 +* `path` *string* - 削除対象のファイルまたはディレクトリへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `recursive?` *boolean* - 対象がディレクトリの場合、削除するには true に設定する必要があります。 +**戻り値**: -**Returns**: - -- `Promise` +* `Promise` -**Example:** +**例:** ```ts // ファイルを削除 @@ -89,37 +82,35 @@ await fs.deleteFile('app/temp.log'); *** -#### downloadFile() +#### downloadFile() \{#downloadfile\} -##### Call Signature +##### 呼び出しシグネチャ \{#call-signature\} ```ts downloadFile(remotePath: string, timeout?: number): Promise> ``` -サンドボックスからファイルをダウンロードします。このメソッドはファイル全体をメモリに読み込むため、 -大きなファイルのダウンロードには推奨されません。 +サンドボックスからファイルをダウンロードします。このメソッドはファイル全体をメモリに読み込むため、大きなファイルのダウンロードには推奨しません。 -**Parameters**: +**パラメーター**: -- `remotePath` _string_ - ダウンロードするファイルのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `timeout?` _number_ - ダウンロード操作のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - 既定は 30 分です。 +* `remotePath` *string* - ダウンロードするファイルのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `timeout?` *number* - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。 + 既定値は30分です。 -**Returns**: +**戻り値**: -- `Promise>` - ファイル内容を表す Buffer。 +* `Promise>` - ファイル内容を表す Buffer。 -**Example:** +**例:** ```ts -// ファイルをダウンロードして処理 +// ファイルをダウンロードして処理する const fileBuffer = await fs.downloadFile('tmp/data.json'); -console.log('File content:', fileBuffer.toString()); +console.log('ファイル内容:', fileBuffer.toString()); ``` -##### Call Signature +##### 呼び出しシグネチャ \{#call-signature\} ```ts downloadFile( @@ -128,22 +119,20 @@ downloadFile( timeout?: number): Promise ``` -サンドボックスからファイルをダウンロードしてローカルファイルに保存します。このメソッドはストリーミングを使用して -ファイルをダウンロードするため、より大きなファイルのダウンロードに適しています。 +サンドボックスからファイルをダウンロードしてローカルファイルに保存します。このメソッドはストリーミングでダウンロードを行うため、大きなファイルの取得に適しています。 -**Parameters**: +**パラメーター**: -- `remotePath` _string_ - サンドボックス内でダウンロードするファイルのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `localPath` _string_ - ダウンロードしたファイルの保存先パス。 -- `timeout?` _number_ - ダウンロード操作のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - 既定は 30 分です。 +* `remotePath` *string* - サンドボックス内でダウンロードするファイルのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `localPath` *string* - ダウンロードしたファイルの保存先パス。 +* `timeout?` *number* - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。 + 既定値は 30 分です。 -**Returns**: +**戻り値**: -- `Promise` +* `Promise` -**Example:** +**例:** ```ts // ファイルをダウンロードして保存 @@ -152,29 +141,69 @@ await fs.downloadFile('tmp/data.json', 'local_file.json'); *** -#### findFiles() +#### downloadFiles() \{#downloadfiles\} ```ts -findFiles(path: string, pattern: string): Promise +downloadFiles(files: FileDownloadRequest[], timeoutSec?: number): Promise ``` -サンドボックス内のファイルでテキストパターンを検索します。 +サンドボックスから複数のファイルをダウンロードします。対象のファイルがローカルに既に存在する場合は上書きされます。 -**Parameters**: +**パラメータ**: -- `path` _string_ - 検索対象のディレクトリ。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `pattern` _string_ - 検索パターン +* `files` *FileDownloadRequest[]* - ファイルダウンロード要求の配列。 +* `timeoutSec?` *number = ...* - ダウンロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。 + 既定値は30分です。 +**戻り値**: -**Returns**: +* `Promise` - ダウンロード結果の配列。 -- `Promise` - ファイルおよび行情報を含む一致結果の配列 +**スロー**: -**Example:** +リクエスト自体が失敗した場合(ネットワーク障害、不正なリクエスト/レスポンスなど)。個々の +ファイルのダウンロードエラーは `FileDownloadResponse.error` フィールドで返されます。 + +**例:** + +```ts +// 複数のファイルをダウンロード +const results = await fs.downloadFiles([ + { source: 'tmp/data.json' }, + { source: 'tmp/config.json', destination: 'local_config.json' } +]); +results.forEach(result => { + if (result.error) { + console.error(`${result.source}のダウンロード中にエラーが発生しました: ${result.error}`); + } else if (result.result) { + console.log(`${result.source}を${result.result}にダウンロードしました`); + } +}); +``` + +*** + +#### findFiles() \{#findfiles\} ```ts -// TypeScript ファイル内の TODO コメントをすべて検索 +findFiles(path: string, pattern: string): Promise +``` + +サンドボックス内のファイルからテキストパターンを検索します。 + +**パラメータ**: + +* `path` *string* - 検索対象のディレクトリ。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `pattern` *string* - 検索パターン + +**戻り値**: + +* `Promise` - ファイル名と行情報を含む一致結果の配列 + +**例:** + +```ts +// TypeScriptファイル内のすべてのTODOコメントを検索 const matches = await fs.findFiles('app/src', 'TODO:'); matches.forEach(match => { console.log(`${match.file}:${match.line}: ${match.content}`); @@ -183,7 +212,7 @@ matches.forEach(match => { *** -#### getFileDetails() +#### getFileDetails() \{#getfiledetails\} ```ts getFileDetails(path: string): Promise @@ -191,48 +220,44 @@ getFileDetails(path: string): Promise ファイルまたはディレクトリの詳細情報を取得します。 -**Parameters**: +**パラメーター**: -- `path` _string_ - ファイルまたはディレクトリのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 +* `path` *string* - ファイルまたはディレクトリのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +**戻り値**: -**Returns**: - -- `Promise` - サイズ、権限、更新時刻などの詳細情報 +* `Promise` - サイズ、権限、更新時刻などを含む詳細なファイル情報 -**Example:** +**例:** ```ts // ファイルの詳細を取得 const info = await fs.getFileDetails('app/config.json'); -console.log(`Size: ${info.size}, Modified: ${info.modTime}`); +console.log(`サイズ: ${info.size}, 更新日時: ${info.modTime}`); ``` *** -#### listFiles() +#### listFiles() \{#listfiles\} ```ts listFiles(path: string): Promise ``` -サンドボックス内のディレクトリの内容を一覧表示します。 +サンドボックス内のディレクトリ内容を一覧表示します。 -**パラメータ**: - -- `path` _string_ - 一覧表示するディレクトリのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 +**パラメーター**: +* `path` *string* - 一覧表示するディレクトリのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `Promise` - ファイルおよびディレクトリ情報の配列 +* `Promise` - ファイルおよびディレクトリの情報配列 **例:** ```ts -// List directory contents +// ディレクトリの内容を一覧表示 const files = await fs.listFiles('app/src'); files.forEach(file => { console.log(`${file.name} (${file.size} bytes)`); @@ -241,36 +266,33 @@ files.forEach(file => { *** -#### moveFiles() +#### moveFiles() \{#movefiles\} ```ts moveFiles(source: string, destination: string): Promise ``` -ファイルまたはディレクトリを移動または名前変更します。 - -**パラメータ**: +ファイルまたはディレクトリを移動または名称変更します。 -- `source` _string_ - 移動元のパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `destination` _string_ - 移動先のパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 +**パラメーター**: +* `source` *string* - ソースパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `destination` *string* - 宛先パス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `Promise` +* `Promise` **例:** ```ts -// Move a file to a new location +// ファイルを新しい場所に移動 await fs.moveFiles('app/temp/data.json', 'app/data/data.json'); ``` *** -#### replaceInFiles() +#### replaceInFiles() \{#replaceinfiles\} ```ts replaceInFiles( @@ -279,23 +301,22 @@ replaceInFiles( newValue: string): Promise ``` -複数のファイル内のテキストを置換します。 - -**パラメータ**: +複数ファイルのテキスト内容を一括置換します。 -- `files` _string\[\]_ - 処理するファイルパスの配列。相対パスはユーザーの -- `pattern` _string_ - 置換対象のパターン -- `newValue` _string_ - 置換後のテキスト +**パラメーター**: +* `files` *string[]* - 処理するファイルパスの配列。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `pattern` *string* - 置換対象のパターン +* `newValue` *string* - 置換するテキスト **戻り値**: -- `Promise` - 各ファイルに対する置換結果 +* `Promise` - 各ファイルに対する置換処理の結果 **例:** ```ts -// Update version number across multiple files +// 複数のファイルでバージョン番号を更新 const results = await fs.replaceInFiles( ['app/package.json', 'app/version.ts'], '"version": "1.0.0"', @@ -305,69 +326,66 @@ const results = await fs.replaceInFiles( *** -#### searchFiles() +#### searchFiles() \{#searchfiles\} ```ts searchFiles(path: string, pattern: string): Promise ``` -サンドボックス内で、名前パターンに一致するファイルやディレクトリを検索します。 - -**パラメータ**: +サンドボックス内で、名前パターンに基づいてファイルやディレクトリを検索します。 -- `path` _string_ - 検索対象のディレクトリ。相対パスはユーザーの -- `pattern` _string_ - ファイル名のパターン(グロブ対応) +**パラメーター**: +* `path` *string* - 検索対象のディレクトリ。相対パスはサンドボックスのワーキングディレクトリを基準に解決されます。 +* `pattern` *string* - ファイル名のパターン(グロブをサポート) **戻り値**: -- `Promise` - 一致したファイルを含む検索結果 +* `Promise` - 一致したファイルを含む検索結果 **例:** ```ts -// Find all TypeScript files +// すべてのTypeScriptファイルを検索 const result = await fs.searchFiles('app', '*.ts'); result.files.forEach(file => console.log(file)); ``` *** -#### setFilePermissions() +#### setFilePermissions() \{#setfilepermissions\} ```ts setFilePermissions(path: string, permissions: FilePermissionsParams): Promise ``` -ファイルまたはディレクトリの権限と所有権を設定します。 +ファイルまたはディレクトリのパーミッションと所有権を設定します。 **パラメータ**: -- `path` _string_ - ファイルまたはディレクトリのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `permissions` _FilePermissionsParams_ - 権限設定 - +* `path` *string* - ファイルまたはディレクトリへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `permissions` *FilePermissionsParams* - パーミッション設定 **戻り値**: -- `Promise` +* `Promise` **例:** ```ts -// Set file permissions and ownership +// ファイルの権限と所有者を設定 await fs.setFilePermissions('app/script.sh', { owner: 'daytona', group: 'users', - mode: '755' // シェルスクリプトに実行権限を付与 + mode: '755' // シェルスクリプトの実行権限 }); ``` *** -#### uploadFile() +#### uploadFile() \{#uploadfile\} -##### 呼び出しシグネチャ +##### 呼び出しシグネチャ \{#call-signature\} ```ts uploadFile( @@ -376,28 +394,27 @@ uploadFile( timeout?: number): Promise ``` -サンドボックスにファイルをアップロードします。このメソッドはファイル全体をメモリに読み込むため、大きなファイルのアップロードには推奨されません。 +サンドボックスにファイルをアップロードします。このメソッドはファイル全体をメモリに読み込むため、大容量ファイルのアップロードには推奨されません。 **パラメータ**: -- `file` _Buffer_ - アップロードするファイルのバッファ。 -- `remotePath` _string_ - サンドボックス内のアップロード先パス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `timeout?` _number_ - アップロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - 既定値は30分です。 +* `file` *Buffer* - アップロードするファイルのバッファ。 +* `remotePath` *string* - サンドボックス内のアップロード先パス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `timeout?` *number* - アップロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。 + 既定値は30分です。 **戻り値**: -- `Promise` +* `Promise` **例:** ```ts -// Upload a configuration file +// 設定ファイルをアップロード await fs.uploadFile(Buffer.from('{"setting": "value"}'), 'tmp/config.json'); ``` -##### 呼び出しシグネチャ +##### 呼び出しシグネチャ \{#call-signature\} ```ts uploadFile( @@ -406,18 +423,18 @@ uploadFile( timeout?: number): Promise ``` -ローカルファイルシステムからサンドボックスへファイルをアップロードします。このメソッドはストリーミングでアップロードを行うため、大きなファイルのアップロードに適しています。 +ローカルのファイルシステムからサンドボックスにファイルをアップロードします。このメソッドはストリーミングでアップロードを行うため、大きなファイルのアップロードに推奨されます。 -**パラメータ**: +**パラメーター**: -- `localPath` _string_ - アップロードするローカルファイルのパス。 -- `remotePath` _string_ - サンドボックス内の保存先パス。相対パスはユーザーのルートディレクトリを基準に解決されます。 -- `timeout?` _number_ - アップロード操作のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - 既定値は 30 分です。 +* `localPath` *string* - アップロードするローカルファイルのパス。 +* `remotePath` *string* - サンドボックス内の保存先パス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `timeout?` *number* - アップロード処理のタイムアウト(秒)。0 はタイムアウトなしを意味します。 + デフォルトは 30 分です。 **戻り値**: -- `Promise` +* `Promise` **例:** @@ -428,24 +445,23 @@ await fs.uploadFile('local_file.txt', 'tmp/file.txt'); *** -#### uploadFiles() +#### uploadFiles() \{#uploadfiles\} ```ts uploadFiles(files: FileUpload[], timeout?: number): Promise ``` -複数のファイルをサンドボックスにアップロードします。保存先パスに既にファイルが存在する場合は上書きされます。 - -**パラメータ**: +複数のファイルをサンドボックスにアップロードします。宛先パスに既にファイルが存在する場合は上書きされます。 -- `files` _FileUpload\[\]_ - アップロードするファイルの配列。 -- `timeout?` _number = ..._ - アップロード操作のタイムアウト(秒)。0 はタイムアウトなしを意味します。 - 既定値は 30 分です。 +**パラメーター**: +* `files` *FileUpload[]* - アップロードするファイルの配列。 +* `timeout?` *number = ...* - アップロードのタイムアウト(秒)。0 はタイムアウトなしを意味します。 + 既定値は 30 分です。 **戻り値**: -- `Promise` +* `Promise` **例:** @@ -470,20 +486,45 @@ await fs.uploadFiles(files); *** +## DownloadMetadata \{#downloadmetadata\} -## FilePermissionsParams +ファイルのダウンロード処理に関するメタデータを表します。 -サンドボックス内のファイル権限を設定するためのパラメータ。 +**プロパティ**: + +* `destination?` *string* - ファイル内容がストリーミングされるローカルファイルシステム上の保存先パス。 +* `error?` *string* - ダウンロードに失敗した場合のエラーメッセージ。成功時は undefined。 +* `result?` *string | Uint8Array<ArrayBufferLike> | Buffer<ArrayBufferLike>* - ダウンロード結果。リクエストで保存先が指定されている場合はファイルパス、 + 指定がない場合はバイト列。失敗した場合やデータ未受信の場合は undefined。 + +## FileDownloadRequest \{#filedownloadrequest\} + +サンドボックスから単一のファイルをダウンロードするリクエストを表します。 **プロパティ**: -- `group?` _string_ - ファイルのグループ所有者 -- `mode?` _string_ - 8進数形式のファイルモード/権限(例: "644") -- `owner?` _string_ - ファイルのユーザー所有者 - +* `destination?` *string* - ファイル内容をストリーミングするローカルファイルシステム上の保存先パス。指定しない場合、ファイルはバイトバッファにダウンロードされます(ファイルが大きい場合はメモリ問題を引き起こす可能性があります)。 +* `source` *string* - サンドボックス内のソースパス。相対パスはユーザーのルートディレクトリを基準に解決されます。 +## FileDownloadResponse \{#filedownloadresponse\} +単一のファイルダウンロード要求に対するレスポンスを表します。 +**プロパティ**: + +* `error?` *string* - ダウンロードが失敗した場合のエラーメッセージ。成功した場合は未定義。 +* `result?` *string | Buffer<ArrayBufferLike>* - ダウンロード結果。リクエストで保存先が指定されている場合はファイルパス、指定されていない場合はバイト列の内容。失敗した場合、またはデータを受信しなかった場合は未定義。 +* `source` *string* - ダウンロード対象としてリクエストされた元のソースパス。 + +## FilePermissionsParams \{#filepermissionsparams\} + +サンドボックス内のファイル権限を設定するためのパラメータ。 + +**プロパティ**: + +* `group?` *string* - ファイルのグループ所有者 +* `mode?` *string* - 8進数形式のファイルモード/パーミッション(例: "644") +* `owner?` *string* - ファイルのユーザー所有者 **例:** @@ -494,13 +535,13 @@ const permissions: FilePermissionsParams = { group: 'users' }; ``` -## FileUpload + +## FileUpload \{#fileupload\} サンドボックスにアップロードするファイルを表します。 **プロパティ**: -- `destination` _string_ - サンドボックス内の絶対パス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `source` _string \| Buffer\_ - アップロード対象のファイル。Buffer の場合、ファイル内容として解釈され、メモリに読み込まれます。 - メモリに収まることを確認してください。収まらない場合はローカルファイルパスを使用すると、その内容がサンドボックスへストリーミングされます。 \ No newline at end of file +* `destination` *string* - サンドボックス内の絶対パス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `source` *string | Buffer<ArrayBufferLike>* - アップロードするファイル。Buffer の場合、ファイル内容として解釈され、メモリに読み込まれます。 + メモリに収まることを確認してください。収まらない場合は、内容がサンドボックスへストリーミングされるローカルファイルのパスを使用してください。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/git.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/git.mdx index f7cd69815..ada14e6ed 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/git.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/git.mdx @@ -3,56 +3,47 @@ title: "Git" hideTitleOnPage: true --- +## Git \{#git\} -## Git +サンドボックス内でのGit操作を提供します。 -サンドボックス内での Git 操作を提供します。 +### コンストラクタ \{#constructors\} -### Constructors - -#### new Git() +#### new Git() \{#new-git\} ```ts -new Git( - sandboxId: string, - toolboxApi: ToolboxApi, - getRootDir: () => Promise): Git +new Git(apiClient: GitApi): Git ``` -**Parameters**: - -- `sandboxId` _string_ -- `toolboxApi` _ToolboxApi_ -- `getRootDir` _\(\) =\> Promise\_ +**パラメータ:** +* `apiClient` *GitApi* -**Returns**: +**戻り値:** -- `Git` +* `Git` -### Methods +### メソッド \{#methods\} -#### add() +#### add() \{#add\} ```ts add(path: string, files: string[]): Promise ``` -指定したファイルを次回のコミットに向けてステージします。コマンドラインで +次回のコミットに向けて指定したファイルをステージします。コマンドラインで 「git add」を実行するのと同様です。 -**Parameters**: +**パラメータ**: -- `path` _string_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `files` _string\[\]_ - リポジトリルートからの相対パスで指定する、ステージ対象のファイルまたはディレクトリの一覧 +* `path` *string* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `files` *string[]* - リポジトリのルートからの相対パスで指定する、ステージ対象のファイルまたはディレクトリの一覧 +**戻り値**: -**Returns**: +* `Promise` -- `Promise` - -**Examples:** +**例:** ```ts // 単一ファイルをステージ @@ -60,13 +51,13 @@ await git.add('workspace/repo', ['file.txt']); ``` ```ts -// リポジトリ全体をステージ +// リポジトリ全体をステージング await git.add('workspace/repo', ['.']); ``` *** -#### branches() +#### branches() \{#branches\} ```ts branches(path: string): Promise @@ -74,45 +65,41 @@ branches(path: string): Promise リポジトリ内のブランチを一覧表示します。 -**Parameters**: - -- `path` _string_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 +**パラメーター**: +* `path` *string* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 -**Returns**: +**戻り値**: -- `Promise` - リポジトリ内のブランチ一覧 +* `Promise` - リポジトリ内のブランチ一覧 -**Example:** +**例:** ```ts const response = await git.branches('workspace/repo'); -console.log(`Branches: ${response.branches}`); +console.log(`ブランチ: ${response.branches}`); ``` *** -#### checkoutBranch() +#### checkoutBranch() \{#checkoutbranch\} ```ts checkoutBranch(path: string, branch: string): Promise ``` -リポジトリでブランチをチェックアウトします。 +リポジトリのブランチをチェックアウトします。 -**Parameters**: +**パラメーター**: -- `path` _string_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `branch` _string_ - チェックアウトするブランチ名 +* `path` *string* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `branch` *string* - チェックアウトするブランチ名 +**戻り値**: -**Returns**: +* `Promise` -- `Promise` - -**Example:** +**例:** ```ts await git.checkoutBranch('workspace/repo', 'new-feature'); @@ -120,7 +107,7 @@ await git.checkoutBranch('workspace/repo', 'new-feature'); *** -#### clone() +#### clone() \{#clone\} ```ts clone( @@ -132,29 +119,25 @@ clone( password?: string): Promise ``` -指定したパスに Git リポジトリをクローンします。 -特定のブランチまたはコミットのクローンに対応し、認証情報が提供されている場合は -リモートリポジトリへの認証も行います。 - -**Parameters**: +指定したパスに Git リポジトリをクローンします。特定のブランチまたはコミットのクローンに対応し、認証情報が提供されている場合はリモートリポジトリへの認証も行えます。 -- `url` _string_ - クローン元のリポジトリ URL -- `path` _string_ - リポジトリをクローンするパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `branch?` _string_ - クローンするブランチ。未指定の場合はデフォルトブランチをクローン -- `commitId?` _string_ - クローンするコミット。指定された場合、リポジトリはそのコミットの分離 HEAD 状態になります -- `username?` _string_ - 認証に用いる Git ユーザー名 -- `password?` _string_ - 認証に用いる Git パスワードまたはトークン +**パラメーター**: +* `url` *string* - クローン元のリポジトリ URL +* `path` *string* - リポジトリをクローンするパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `branch?` *string* - クローンするブランチ。未指定の場合はデフォルトブランチをクローンします +* `commitId?` *string* - クローンするコミット。指定した場合、リポジトリはこのコミットで detached HEAD 状態になります +* `username?` *string* - 認証用の Git ユーザー名 +* `password?` *string* - 認証用の Git パスワードまたはトークン -**Returns**: +**戻り値**: -- `Promise` +* `Promise` -**Examples:** +**使用例:** ```ts -// デフォルトブランチをクローン +// デフォルトブランチをクローンする await git.clone( 'https://github.com/user/repo.git', 'workspace/repo' @@ -162,7 +145,7 @@ await git.clone( ``` ```ts -// 認証付きで特定ブランチをクローン +// 認証を使用して特定のブランチをクローンする await git.clone( 'https://github.com/user/private-repo.git', 'workspace/private', @@ -173,7 +156,7 @@ await git.clone( ``` ```ts -// 特定のコミットをクローン +// 特定のコミットをクローンする await git.clone( 'https://github.com/user/repo.git', 'workspace/repo-old', @@ -183,7 +166,7 @@ await git.clone( *** -#### commit() +#### commit() \{#commit\} ```ts commit( @@ -196,24 +179,22 @@ allowEmpty?: boolean): Promise ステージ済みの変更をコミットします。 -**Parameters**: - -- `path` _string_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `message` _string_ - 変更内容を説明するコミットメッセージ -- `author` _string_ - コミットの作成者名 -- `email` _string_ - コミット作成者のメールアドレス -- `allowEmpty?` _boolean_ - 変更がステージされていない場合でも空のコミットの作成を許可 +**パラメータ**: +* `path` *string* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `message` *string* - 変更内容を説明するコミットメッセージ +* `author` *string* - コミット作者の名前 +* `email` *string* - コミット作者のメールアドレス +* `allowEmpty?` *boolean* - ステージされた変更がない場合でも空のコミットの作成を許可する -**Returns**: +**戻り値**: -- `Promise` +* `Promise` -**Example:** +**例:** ```ts -// 変更をステージしてコミットする +// 変更をステージングしてコミット await git.add('workspace/repo', ['README.md']); await git.commit( 'workspace/repo', @@ -226,26 +207,24 @@ await git.commit( *** -#### createBranch() +#### createBranch() \{#createbranch\} ```ts createBranch(path: string, name: string): Promise ``` -リポジトリでブランチを作成します。 +リポジトリにブランチを作成します。 -**Parameters**: +**パラメーター**: -- `path` _string_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `name` _string_ - 作成する新しいブランチ名 +* `path` *string* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `name` *string* - 作成する新しいブランチ名 +**返り値**: -**Returns**: +* `Promise` -- `Promise` - -**Example:** +**例:** ```ts await git.createBranch('workspace/repo', 'new-feature'); @@ -253,26 +232,24 @@ await git.createBranch('workspace/repo', 'new-feature'); *** -#### deleteBranch() +#### deleteBranch() \{#deletebranch\} ```ts deleteBranch(path: string, name: string): Promise ``` -リポジトリでブランチを削除します。 - -**Parameters**: +リポジトリ内のブランチを削除します。 -- `path` _string_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `name` _string_ - 削除するブランチ名 +**パラメーター**: +* `path` *string* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `name` *string* - 削除するブランチ名 -**Returns**: +**戻り値**: -- `Promise` +* `Promise` -**Example:** +**例:** ```ts await git.deleteBranch('workspace/repo', 'new-feature'); @@ -280,7 +257,7 @@ await git.deleteBranch('workspace/repo', 'new-feature'); *** -#### pull() +#### pull() \{#pull\} ```ts pull( @@ -289,29 +266,27 @@ pull( password?: string): Promise ``` -リモートリポジトリから変更を取得します。 - -**Parameters**: +リモートリポジトリから変更をプルします。 -- `path` _string_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `username?` _string_ - 認証用の Git ユーザー名 -- `password?` _string_ - 認証用の Git パスワードまたはトークン +**パラメーター**: +* `path` *string* - Git リポジトリのルートへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `username?` *string* - 認証用の Git ユーザー名 +* `password?` *string* - 認証用の Git パスワードまたはトークン -**Returns**: +**戻り値**: -- `Promise` +* `Promise` -**Examples:** +**例:** ```ts -// 公開リポジトリから pull する +// パブリックリポジトリからプル await git.pull('workspace/repo'); ``` ```ts -// 非公開リポジトリから pull する +// プライベートリポジトリからプル await git.pull( 'workspace/repo', 'user', @@ -321,7 +296,7 @@ await git.pull( *** -#### push() +#### push() \{#push\} ```ts push( @@ -330,29 +305,27 @@ push( password?: string): Promise ``` -ローカルの変更をリモートリポジトリへ push します。 +ローカルの変更をリモートリポジトリにプッシュします。 -**Parameters**: +**パラメータ**: -- `path` _string_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 -- `username?` _string_ - 認証用の Git ユーザー名 -- `password?` _string_ - 認証用の Git パスワードまたはトークン +* `path` *string* - Gitリポジトリのルートパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +* `username?` *string* - 認証用のGitユーザー名 +* `password?` *string* - 認証用のGitパスワードまたはトークン +**返り値**: -**Returns**: +* `Promise` -- `Promise` - -**Examples:** +**例:** ```ts -// 公開リポジトリへ push する +// パブリックリポジトリにプッシュ await git.push('workspace/repo'); ``` ```ts -// 非公開リポジトリへ push する +// プライベートリポジトリにプッシュ await git.push( 'workspace/repo', 'user', @@ -362,45 +335,42 @@ await git.push( *** -#### status() +#### status() \{#status\} ```ts status(path: string): Promise ``` -Git リポジトリの現在のステータスを取得します。 - -**Parameters**: +Git リポジトリの現在の状態を取得します。 -- `path` _string_ - Git リポジトリのルートへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 +**パラメーター**: +* `path` *string* - Git リポジトリのルートパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 -**Returns**: +**戻り値**: -- `Promise` - 現在のリポジトリのステータス(以下を含む): - - currentBranch: 現在のブランチ名 - - ahead: リモートブランチより先行しているコミット数 - - behind: リモートブランチより遅れているコミット数 - - branchPublished: ブランチがリモートリポジトリに公開済みかどうか - - fileStatus: ファイルのステータス一覧 +* `Promise` - 現在のリポジトリの状態。以下を含みます: + * currentBranch: 現在のブランチ名 + * ahead: リモートブランチより先行しているコミット数 + * behind: リモートブランチより遅れているコミット数 + * branchPublished: ブランチがリモートリポジトリに公開済みかどうか + * fileStatus: ファイルの状態一覧 -**Example:** +**例:** ```ts const status = await sandbox.git.status('workspace/repo'); -console.log(`Current branch: ${status.currentBranch}`); -console.log(`Commits ahead: ${status.ahead}`); -console.log(`Commits behind: ${status.behind}`); +console.log(`現在のブランチ: ${status.currentBranch}`); +console.log(`先行コミット数: ${status.ahead}`); +console.log(`遅れコミット数: ${status.behind}`); ``` *** - -## GitCommitResponse +## GitCommitResponse \{#gitcommitresponse\} git commit のレスポンス。 **プロパティ**: -- `sha` _string_ - コミットのSHA \ No newline at end of file +* `sha` *string* - コミットのSHA \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/image.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/image.mdx index 22b76dc8b..67eb91508 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/image.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/image.mdx @@ -3,23 +3,22 @@ title: "イメージ" hideTitleOnPage: true --- - -## Image +## Image \{#image\} Daytona のサンドボックス用イメージ定義を表します。 このクラスを直接インスタンス化しないでください。代わりに `Image.base()`、`Image.debianSlim()`、`Image.fromDockerfile()` などの静的ファクトリメソッドを使用してください。 -### Accessors +### Accessors \{#accessors\} -#### contextList +#### contextList \{#contextlist\} -##### Get Signature +##### Get Signature \{#get-signature\} ```ts get contextList(): Context[] ``` -###### Returns +###### Returns \{#returns\} `Context`[] @@ -27,9 +26,9 @@ get contextList(): Context[] *** -#### dockerfile +#### dockerfile \{#dockerfile\} -##### Get Signature +##### Get Signature \{#get-signature\} ```ts get dockerfile(): string @@ -37,11 +36,11 @@ get dockerfile(): string **Returns**: -- `string` - Dockerfile の内容。 +* `string` - Dockerfile の内容。 -### Methods +### Methods \{#methods\} -#### base() +#### base() \{#base\} ```ts static base(image: string): Image @@ -51,12 +50,11 @@ static base(image: string): Image **Parameters**: -- `image` _string_ - 使用するベースイメージ。 - +* `image` *string* - 使用するベースイメージ。 **Returns**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **Example:** @@ -66,7 +64,7 @@ const image = Image.base('python:3.12-slim-bookworm') *** -#### debianSlim() +#### debianSlim() \{#debianslim\} ```ts static debianSlim(pythonVersion?: "3.9" | "3.10" | "3.11" | "3.12" | "3.13"): Image @@ -76,12 +74,11 @@ static debianSlim(pythonVersion?: "3.9" | "3.10" | "3.11" | "3.12" | "3.13"): Im **Parameters**: -- `pythonVersion?` _使用する Python のバージョン。_ - `"3.9"` | `"3.10"` | `"3.11"` | `"3.12"` | `"3.13"` - +* `pythonVersion?` *使用する Python のバージョン。* - `"3.9"` | `"3.10"` | `"3.11"` | `"3.12"` | `"3.13"` **Returns**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **Example:** @@ -91,7 +88,7 @@ const image = Image.debianSlim('3.12') *** -#### fromDockerfile() +#### fromDockerfile() \{#fromdockerfile\} ```ts static fromDockerfile(path: string): Image @@ -101,12 +98,11 @@ static fromDockerfile(path: string): Image **Parameters**: -- `path` _string_ - Dockerfile へのパス。 - +* `path` *string* - Dockerfile へのパス。 **Returns**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **Example:** @@ -116,7 +112,7 @@ const image = Image.fromDockerfile('Dockerfile') *** -#### addLocalDir() +#### addLocalDir() \{#addlocaldir\} ```ts addLocalDir(localPath: string, remotePath: string): Image @@ -126,13 +122,12 @@ addLocalDir(localPath: string, remotePath: string): Image **Parameters**: -- `localPath` _string_ - ローカルディレクトリのパス。 -- `remotePath` _string_ - イメージ内のディレクトリのパス。 - +* `localPath` *string* - ローカルディレクトリのパス。 +* `remotePath` *string* - イメージ内のディレクトリのパス。 **Returns**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **Example:** @@ -144,7 +139,7 @@ const image = Image *** -#### addLocalFile() +#### addLocalFile() \{#addlocalfile\} ```ts addLocalFile(localPath: string, remotePath: string): Image @@ -154,13 +149,12 @@ addLocalFile(localPath: string, remotePath: string): Image **Parameters**: -- `localPath` _string_ - ローカルファイルのパス。 -- `remotePath` _string_ - イメージ内のファイルのパス。 - +* `localPath` *string* - ローカルファイルのパス。 +* `remotePath` *string* - イメージ内のファイルのパス。 **Returns**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **Example:** @@ -172,7 +166,7 @@ const image = Image *** -#### cmd() +#### cmd() \{#cmd\} ```ts cmd(cmd: string[]): Image @@ -182,12 +176,11 @@ cmd(cmd: string[]): Image **Parameters**: -- `cmd` _string\[\]_ - デフォルトとして設定するコマンド。 - +* `cmd` *string[]* - デフォルトとして設定するコマンド。 **Returns**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **Example:** @@ -199,7 +192,7 @@ const image = Image *** -#### dockerfileCommands() +#### dockerfileCommands() \{#dockerfilecommands\} ```ts dockerfileCommands(dockerfileCommands: string[], contextDir?: string): Image @@ -209,13 +202,12 @@ dockerfileCommands(dockerfileCommands: string[], contextDir?: string): Image **Parameters**: -- `dockerfileCommands` _string\[\]_ - Dockerfile に追加するコマンド。 -- `contextDir?` _string_ - コンテキストディレクトリのパス。 - +* `dockerfileCommands` *string[]* - Dockerfile に追加するコマンド。 +* `contextDir?` *string* - コンテキストディレクトリのパス。 **Returns**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **Example:** @@ -227,7 +219,7 @@ const image = Image *** -#### entrypoint() +#### entrypoint() \{#entrypoint\} ```ts entrypoint(entrypointCommands: string[]): Image @@ -237,12 +229,11 @@ entrypoint(entrypointCommands: string[]): Image **Parameters**: -- `entrypointCommands` _string\[\]_ - エントリーポイントとして設定するコマンド。 - +* `entrypointCommands` *string[]* - エントリーポイントとして設定するコマンド。 **Returns**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **Example:** @@ -254,7 +245,7 @@ const image = Image *** -#### env() +#### env() \{#env\} ```ts env(envVars: Record): Image @@ -264,11 +255,11 @@ env(envVars: Record): Image **パラメーター**: -- `envVars` _Record\_ - 設定する環境変数。 +* `envVars` *Record<string, string>* - 設定する環境変数。 **戻り値**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **例:** @@ -280,7 +271,7 @@ const image = Image *** -#### pipInstall() +#### pipInstall() \{#pipinstall\} ```ts pipInstall(packages: string | string[], options?: PipInstallOptions): Image @@ -290,12 +281,12 @@ pip を使用してパッケージをインストールするコマンドを追 **パラメーター**: -- `packages` _インストールするパッケージ_ - `string` | `string`[] -- `options?` _PipInstallOptions_ - pip インストールコマンドのオプション。 +* `packages` *インストールするパッケージ* - `string` | `string`[] +* `options?` *PipInstallOptions* - pip インストールコマンドのオプション。 **戻り値**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **例:** @@ -305,7 +296,7 @@ const image = Image.debianSlim('3.12').pipInstall('numpy', { findLinks: ['https: *** -#### pipInstallFromPyproject() +#### pipInstallFromPyproject() \{#pipinstallfrompyproject\} ```ts pipInstallFromPyproject(pyprojectToml: string, options?: PyprojectOptions): Image @@ -315,12 +306,12 @@ pyproject.toml ファイルから依存関係をインストールします。 **パラメーター**: -- `pyprojectToml` _string_ - pyproject.toml ファイルのパス。 -- `options?` _PyprojectOptions_ - pip インストールコマンドのオプション。 +* `pyprojectToml` *string* - pyproject.toml ファイルのパス。 +* `options?` *PyprojectOptions* - pip インストールコマンドのオプション。 **戻り値**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **例:** @@ -331,7 +322,7 @@ image.pipInstallFromPyproject('pyproject.toml', { optionalDependencies: ['dev'] *** -#### pipInstallFromRequirements() +#### pipInstallFromRequirements() \{#pipinstallfromrequirements\} ```ts pipInstallFromRequirements(requirementsTxt: string, options?: PipInstallOptions): Image @@ -341,12 +332,12 @@ requirements.txt ファイルから依存関係をインストールします。 **パラメーター**: -- `requirementsTxt` _string_ - requirements.txt ファイルのパス。 -- `options?` _PipInstallOptions_ - pip インストールコマンドのオプション。 +* `requirementsTxt` *string* - requirements.txt ファイルのパス。 +* `options?` *PipInstallOptions* - pip インストールコマンドのオプション。 **戻り値**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **例:** @@ -357,7 +348,7 @@ image.pipInstallFromRequirements('requirements.txt', { findLinks: ['https://pypi *** -#### runCommands() +#### runCommands() \{#runcommands\} ```ts runCommands(...commands: (string | string[])[]): Image @@ -367,11 +358,11 @@ runCommands(...commands: (string | string[])[]): Image **パラメーター**: -- `commands` _...\(string \| string\[\]\)\[\]_ - 実行するコマンド。 +* `commands` *...(string | string[])[]* - 実行するコマンド。 **戻り値**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **例:** @@ -386,7 +377,7 @@ const image = Image *** -#### workdir() +#### workdir() \{#workdir\} ```ts workdir(dirPath: string): Image @@ -396,11 +387,11 @@ workdir(dirPath: string): Image **パラメーター**: -- `dirPath` _string_ - 作業ディレクトリのパス。 +* `dirPath` *string* - 作業ディレクトリのパス。 **戻り値**: -- `Image` - Image インスタンス。 +* `Image` - Image インスタンス。 **例:** @@ -412,54 +403,49 @@ const image = Image *** - -## コンテキスト +## コンテキスト \{#context\} イメージに追加するコンテキストファイルを表します。 **プロパティ**: -- `archivePath` _string_ - オブジェクトストレージ内のアーカイブの内部パス。 -- `sourcePath` _string_ - ソースファイルまたはディレクトリへのパス。 -## PipInstallOptions +* `archivePath` *string* - オブジェクトストレージ内のアーカイブの内部パス。 +* `sourcePath` *string* - ソースファイルまたはディレクトリへのパス。 + +## PipInstallOptions \{#pipinstalloptions\} pip install コマンド用のオプション。 **プロパティ**: -- `extraIndexUrls?` _string\[\]_ - pip install コマンドで使用する追加のインデックス URL。 -- `extraOptions?` _string_ - pip install コマンドで使用する追加オプション。指定した文字列がそのまま pip install コマンドに渡されます。 -- `findLinks?` _string\[\]_ - pip install コマンドで使用する find-links。 -- `indexUrl?` _string_ - pip install コマンドで使用するインデックス URL。 -- `pre?` _boolean_ - プレリリース版をインストールするかどうか。 - - - +* `extraIndexUrls?` *string[]* - pip install コマンドで使用する追加のインデックス URL。 +* `extraOptions?` *string* - pip install コマンドで使用する追加オプション。指定した文字列がそのまま pip install コマンドに渡されます。 +* `findLinks?` *string[]* - pip install コマンドで使用する find-links。 +* `indexUrl?` *string* - pip install コマンドで使用するインデックス URL。 +* `pre?` *boolean* - プレリリース版をインストールするかどうか。 +### により拡張 \{#extended-by\} -### により拡張 +* `PyprojectOptions` -- `PyprojectOptions` -## PyprojectOptions +## PyprojectOptions \{#pyprojectoptions\} pyproject.toml からの pip install コマンド用オプション。 **プロパティ**: -- `extraIndexUrls?` _string\[\]_ - pip install コマンドで使用する追加のインデックス URL。 - - _継承元_: `PipInstallOptions.extraIndexUrls` -- `extraOptions?` _string_ - pip install コマンドに渡す追加オプション。指定した文字列がそのまま pip install コマンドに渡されます。 - - _継承元_: `PipInstallOptions.extraOptions` -- `findLinks?` _string\[\]_ - pip install コマンドで使用する find-links。 - - _継承元_: `PipInstallOptions.findLinks` -- `indexUrl?` _string_ - pip install コマンドで使用するインデックス URL。 - - _継承元_: `PipInstallOptions.indexUrl` -- `optionalDependencies?` _string\[\]_ - 任意でインストールする依存関係。 -- `pre?` _boolean_ - プレリリース版をインストールするかどうか。 - - _継承元_: `PipInstallOptions.pre` - - - -**継承:** - -- `PipInstallOptions` \ No newline at end of file +* `extraIndexUrls?` *string[]* - pip install コマンドで使用する追加のインデックス URL。 + * *継承元*: `PipInstallOptions.extraIndexUrls` +* `extraOptions?` *string* - pip install コマンドに渡す追加オプション。指定した文字列がそのまま pip install コマンドに渡されます。 + * *継承元*: `PipInstallOptions.extraOptions` +* `findLinks?` *string[]* - pip install コマンドで使用する find-links。 + * *継承元*: `PipInstallOptions.findLinks` +* `indexUrl?` *string* - pip install コマンドで使用するインデックス URL。 + * *継承元*: `PipInstallOptions.indexUrl` +* `optionalDependencies?` *string[]* - 任意でインストールする依存関係。 +* `pre?` *boolean* - プレリリース版をインストールするかどうか。 + * *継承元*: `PipInstallOptions.pre` + +**継承:** + +* `PipInstallOptions` \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/index.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/index.mdx index 34a4dfe0b..48dd4a2ac 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/index.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/index.mdx @@ -1,12 +1,12 @@ --- title: TypeScript SDK リファレンス -description: TypeScript SDK を使用して Daytona のサンドボックスを操作する +description: TypeScript SDK を使って Daytona のサンドボックスを操作する next: /docs/typescript-sdk/daytona --- -Daytona の TypeScript SDK は、Daytona のサンドボックスをプログラムから操作するための強力なインターフェースを提供します。 +Daytona TypeScript SDK は、Daytona のサンドボックスをプログラムから操作するための強力なインターフェースを提供します。 -## インストール +## インストール \{#installation\} npm を使用して Daytona の TypeScript SDK をインストールします: @@ -14,21 +14,21 @@ npm を使用して Daytona の TypeScript SDK をインストールします: npm install @daytonaio/sdk ``` -または yarn を使用します: +または yarn を使用する場合は: ```bash yarn add @daytonaio/sdk ``` -## はじめに +## はじめに \{#getting-started\} -Daytona の TypeScript SDK を使い始めるための簡単な例を紹介します: +Daytona TypeScript SDK を使い始めるための簡単な例を以下に示します。 ```typescript import { Daytona } from '@daytonaio/sdk' async function main() { - // SDK を初期化(デフォルトで環境変数を使用) + // SDKを初期化(デフォルトで環境変数を使用) const daytona = new Daytona() // 新しいサンドボックスを作成 @@ -45,9 +45,9 @@ async function main() { main().catch(console.error) ``` -## 設定 +## 設定 \{#configuration\} -SDK は環境変数を使うか、コンストラクターにオプションを渡して設定できます: +SDK は、環境変数を使用するか、コンストラクターにオプションを渡すことで設定できます。 ```typescript import { Daytona } from '@daytonaio/sdk'; @@ -55,10 +55,71 @@ import { Daytona } from '@daytonaio/sdk'; // 環境変数を使用 (DAYTONA_API_KEY, DAYTONA_API_URL, DAYTONA_TARGET) const daytona = new Daytona(); -// 明示的な設定を指定 +// 明示的な設定を使用 const daytona = new Daytona({ apiKey: 'your-api-key', apiUrl: 'https://app.daytona.io/api', target: 'us' }); ``` + +## 複数ランタイム対応 \{#multiple-runtime-support\} + +Daytona の TypeScript SDK は、Node.js、Deno、Bun、ブラウザー、サーバーレスプラットフォーム(Cloudflare Workers、AWS Lambda、Azure Functions など)を含む複数の JavaScript ランタイムで動作します。 + +:::note[ブラウザーおよびフレームワークの設定] +ブラウザー環境や Vite、Next.js などのフレームワークで SDK を使用する場合は、Node のポリフィルを設定する必要があります。セットアップ手順は以下のセクションを参照してください。 +::: + +### Vite プロジェクトにおける Daytona \{#daytona-in-vite-projects\} + +Vite ベースのプロジェクトで Daytona SDK を使用する場合は、互換性を確保するために Node のポリフィルを設定する必要があります。`vite.config.ts` の plugins 配列に次の設定を追加してください: + +```typescript +import { nodePolyfills } from 'vite-plugin-node-polyfills' + +export default defineConfig({ + plugins: [ + // ... その他のプラグイン + nodePolyfills({ + globals: { global: true, process: true, Buffer: true }, + overrides: { + path: 'path-browserify-win32', + }, + }), + ], + // ... 設定の残りの部分 +}) +``` + +### Next.js プジェクトでの Daytona \{#daytona-in-nextjs-projects\} + +Next.js プロジェクトで Daytona SDK を使用する場合は、利用しているバンドラーに応じて Webpack および Turbopack との互換性を確保するため、Node のポリフィルを設定する必要があります。次の設定を `next.config.ts` ファイルに追加してください。 + +```typescript +import type { NextConfig } from 'next' +import NodePolyfillPlugin from 'node-polyfill-webpack-plugin' +import { env, nodeless } from 'unenv' + +const { alias: turbopackAlias } = env(nodeless, {}) + +const nextConfig: NextConfig = { + // Turbopack + experimental: { + turbo: { + resolveAlias: { + ...turbopackAlias, + }, + }, + }, + // Webpack + webpack: (config, { isServer }) => { + if (!isServer) { + config.plugins.push(new NodePolyfillPlugin()) + } + return config + }, +} + +export default nextConfig +``` diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/lsp-server.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/lsp-server.mdx index af9e4dac3..6b8fa9517 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/lsp-server.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/lsp-server.mdx @@ -1,70 +1,66 @@ --- -title: "LspServer" +title: "LSPサーバー" hideTitleOnPage: true --- +## LspServer \{#lspserver\} -## LspServer +コードインテリジェンスのために LSP (言語サーバープロトコル) の機能を提供し、 +コード補完やシンボル検索など、IDE さながらの機能を利用できるようにします。 -コードインテリジェンスのための Language Server Protocol 機能を提供し、コード補完やシンボル検索など、IDEに近い機能を実現します。 +### コンストラクタ \{#constructors\} -### Constructors - -#### new LspServer() +#### new LspServer() \{#new-lspserver\} ```ts new LspServer( languageId: LspLanguageId, pathToProject: string, - toolboxApi: ToolboxApi, - sandboxId: string): LspServer + apiClient: LspApi): LspServer ``` -**Parameters**: - -- `languageId` _LspLanguageId_ -- `pathToProject` _string_ -- `toolboxApi` _ToolboxApi_ -- `sandboxId` _string_ +**引数**: +* `languageId` *LspLanguageId* +* `pathToProject` *string* +* `apiClient` *LspApi* -**Returns**: +**戻り値**: -- `LspServer` +* `LspServer` -### Methods +### メソッド \{#methods\} -#### completions() +#### completions() \{#completions\} ```ts completions(path: string, position: Position): Promise ``` -ファイル内の指定位置での補完候補を取得します。 +ファイル内の特定位置で補完候補を取得します。 -**Parameters**: +**パラメーター**: -- `path` _string_ - ファイルパス。相対パスはLSPサーバーのコンストラクタで設定されたプロジェクトパスを基準に解決されます。 -- `position` _Position_ - 補完を要求したファイル内の位置 +* `path` *string* - ファイルパス。相対パスは、LSP サーバーのコンストラクタで設定されたプロジェクトパスを基準に解決されます。 +* `position` *Position* - 補完を要求したファイル内の位置 +**戻り値**: -**Returns**: - -- `Promise` - 補完候補のリスト。次を含みます: - - isIncomplete: さらに候補が存在する可能性があるかどうか - - items: 補完アイテムのリスト。各アイテムには以下が含まれます: - - label: 挿入するテキスト - - kind: 補完の種類 - - detail: アイテムに関する追加情報 - - documentation: アイテムのドキュメント - - sortText: リスト内でのソートに用いるテキスト - - filterText: フィルタに用いるテキスト - - insertText: 実際に挿入するテキスト(label と異なる場合) +* `Promise` - 補完候補のリスト。リストには次が含まれます: + * isIncomplete: さらに項目が取得可能な可能性があるかどうか + * items: 補完項目のリスト(各項目には以下を含む): + * label: 挿入するテキスト + * kind: 補完の種類 + * detail: 項目に関する追加情報 + * documentation: 項目のドキュメント + * sortText: リスト内で項目をソートするためのテキスト + * filterText: 項目をフィルタリングするためのテキスト + * insertText: 実際に挿入されるテキスト(label と異なる場合) -**Example:** +**例:** ```ts -// Get completions at a specific position +// 特定の位置での補完を取得 const completions = await lsp.completions('workspace/project/src/index.ts', { line: 10, character: 15 @@ -76,61 +72,58 @@ completions.items.forEach(item => { *** -#### didClose() +#### didClose() \{#didclose\} ```ts didClose(path: string): Promise ``` -エディタでファイルが閉じられたことを言語サーバーに通知します。これにより、当該ファイルに関連するリソースをクリーンアップできます。 +エディタでファイルを閉じた際に呼び出し、言語サーバーにファイルが閉じられたことを通知して、そのファイルに関連するリソースのクリーンアップを行えるようにします。 -**Parameters**: +**パラメーター**: -- `path` _string_ - 閉じられたファイルのパス。相対パスはLSPサーバーのコンストラクタで設定されたプロジェクトパスを基準に解決されます。 +* `path` *string* - 閉じたファイルへのパス。相対パスは、LSP サーバーのコンストラクタで設定されたプロジェクトパスを基準に解決されます。 +**戻り値**: -**Returns**: - -- `Promise` +* `Promise` -**Example:** +**例:** ```ts -// When done editing a file +// ファイルの編集が完了したとき await lsp.didClose('workspace/project/src/index.ts'); ``` *** -#### didOpen() +#### didOpen() \{#didopen\} ```ts didOpen(path: string): Promise ``` -ファイルが開かれたことを言語サーバーに通知し、そのファイルに対する診断や補完などの言語機能を有効化します。サーバーはファイル内容の追跡を開始し、言語機能を提供します。 +言語サーバーにファイルのオープンを通知し、そのファイルに対する診断や補完などの言語機能を有効化します。サーバーは当該ファイルの内容を追跡し、言語機能の提供を開始します。 -**Parameters**: +**パラメーター**: -- `path` _string_ - 開いたファイルのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 +* `path` *string* - 開いたファイルのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 +**戻り値**: -**Returns**: - -- `Promise` +* `Promise` -**Example:** +**例:** ```ts -// When opening a file for editing +// ファイルを編集用に開く際 await lsp.didOpen('workspace/project/src/index.ts'); -// Now can get completions, symbols, etc. for this file +// これで、このファイルに対して補完、シンボルなどを取得できます ``` *** -#### documentSymbols() +#### documentSymbols() \{#documentsymbols\} ```ts documentSymbols(path: string): Promise @@ -138,22 +131,21 @@ documentSymbols(path: string): Promise ドキュメントからシンボル情報(関数、クラス、変数など)を取得します。 -**Parameters**: - -- `path` _string_ - シンボルを取得するファイルのパス。相対パスはLSPサーバーのコンストラクタで設定されたプロジェクトパスを基準に解決されます。 +**パラメータ**: +* `path` *string* - シンボルを取得する対象ファイルへのパス。相対パスは、LSPサーバーのコンストラクターで設定したプロジェクトパスを基準に解決されます。 -**Returns**: +**戻り値**: -- `Promise` - ドキュメント内のシンボルのリスト。各シンボルには以下が含まれます: - - name: シンボル名 - - kind: シンボルの種類(関数、クラス、変数など) - - location: ファイル内のシンボル位置 +* `Promise` - ドキュメント内のシンボル一覧。各シンボルには以下が含まれます: + * name: シンボル名 + * kind: シンボルの種別(関数、クラス、変数など) + * location: ファイル内での位置 -**Example:** +**例:** ```ts -// Get all symbols in a file +// ファイル内のすべてのシンボルを取得 const symbols = await lsp.documentSymbols('workspace/project/src/index.ts'); symbols.forEach(symbol => { console.log(`${symbol.kind} ${symbol.name}: ${symbol.location}`); @@ -162,30 +154,29 @@ symbols.forEach(symbol => { *** -#### sandboxSymbols() +#### sandboxSymbols() \{#sandboxsymbols\} ```ts sandboxSymbols(query: string): Promise ``` -クエリ文字列に一致するシンボルをサンドボックス(Daytonaが管理する隔離された一時的な実行環境)全体から検索します。 +クエリ文字列に一致するシンボルをサンドボックス全体で検索します。 **パラメータ**: -- `query` _string_ - シンボル名に対して照合する検索クエリ - +* `query` *string* - シンボル名に照合する検索クエリ **戻り値**: -- `Promise` - すべてのファイルから一致したシンボルの一覧。各シンボルには以下が含まれます: - - name: シンボル名 - - kind: シンボルの種類(function、class、variable など) - - location: ファイル内でのシンボルの位置 +* `Promise` - すべてのファイルから一致したシンボルのリスト。各シンボルには次が含まれます: + * name: シンボル名 + * kind: シンボルの種類(function、class、variable など) + * location: ファイル内での位置 **例:** ```ts -// "User" を含むすべてのシンボルを検索 +// "User"を含むすべてのシンボルを検索 const symbols = await lsp.sandboxSymbols('User'); symbols.forEach(symbol => { console.log(`${symbol.name} (${symbol.kind}) in ${symbol.location}`); @@ -194,105 +185,101 @@ symbols.forEach(symbol => { *** -#### start() +#### start() \{#start\} ```ts start(): Promise ``` -Language Server を起動します。ほかの LSP 機能を使う前に呼び出す必要があります。 -指定した言語とプロジェクトのために Language Server を初期化します。 +言語サーバーを起動します。他の LSP 機能を使用する前に必ず呼び出してください。 +指定した言語とプロジェクトの言語サーバーを初期化します。 **戻り値**: -- `Promise` +* `Promise` **例:** ```ts const lsp = await sandbox.createLspServer('typescript', 'workspace/project'); await lsp.start(); // サーバーを初期化 -// これで LSP 操作の準備ができました +// LSP操作の準備完了 ``` *** -#### stop() +#### stop() \{#stop\} ```ts stop(): Promise ``` -Language Server を停止します。不要になったら呼び出して、 -システムリソースを解放してください。 +言語サーバーを停止します。LSPサーバーが不要になった際に呼び出して、 +システムリソースを解放します。 **戻り値**: -- `Promise` +* `Promise` **例:** ```ts -// LSP 機能の利用が終わったら +// LSP機能の使用が完了したとき await lsp.stop(); // リソースをクリーンアップ ``` *** -#### ~~workspaceSymbols()~~ +#### ~~workspaceSymbols()~~ \{#workspacesymbols\} ```ts workspaceSymbols(query: string): Promise ``` -クエリ文字列に一致するシンボルをサンドボックス(Daytonaが管理する隔離された一時的な実行環境)全体から検索します。 +クエリ文字列に一致するシンボルをサンドボックス全体から検索します。 -**パラメータ**: - -- `query` _string_ - シンボル名に対して照合する検索クエリ +**パラメーター**: +* `query` *string* - シンボル名に対して照合する検索クエリ **戻り値**: -- `Promise` - すべてのファイルから一致したシンボルの一覧。各シンボルには以下が含まれます: - - name: シンボル名 - - kind: シンボルの種類(function、class、variable など) - - location: ファイル内でのシンボルの位置 +* `Promise` - すべてのファイルから一致したシンボルの一覧。各シンボルには以下が含まれます: + * name: シンボル名 + * kind: シンボルの種別(function、class、variable など) + * location: ファイル内での位置 -##### 非推奨 +##### 非推奨 \{#deprecated\} 代わりに `sandboxSymbols` を使用してください。このメソッドは今後のバージョンで削除されます。 *** +## LspLanguageId \{#lsplanguageid\} -## LspLanguageId - -サポート対象の言語サーバータイプ。 +サポートされる言語サーバーの種類。 **列挙メンバー**: -- `JAVASCRIPT` ("javascript") -- `PYTHON` ("python") -- `TYPESCRIPT` ("typescript") +* `JAVASCRIPT` ("javascript") +* `PYTHON` ("python") +* `TYPESCRIPT` ("typescript") -## Position +## 位置 \{#position\} -テキストドキュメント内のゼロ基準の位置を表し、 +テキストドキュメント内の0始まりの位置を表し、 行番号と文字オフセットで指定します。 **プロパティ**: -- `character` _number_ - 行内のゼロ基準の文字オフセット -- `line` _number_ - ドキュメント内のゼロ基準の行番号 - - +* `character` *number* - 行内の0始まりの文字オフセット +* `line` *number* - ドキュメント内の0始まりの行番号 **例:** ```ts const position: Position = { - line: 10, // 11 行目(ゼロ基準) - character: 15 // 行内の 16 文字目(ゼロ基準) + line: 10, // 11行目 (0ベース) + character: 15 // 行の16文字目 (0ベース) }; -``` \ No newline at end of file +``` diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/object-storage.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/object-storage.mdx index 03482ffe4..22f8e799e 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/object-storage.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/object-storage.mdx @@ -3,18 +3,17 @@ title: "ObjectStorage" hideTitleOnPage: true --- - -## ObjectStorage +## ObjectStorage \{#objectstorage\} オブジェクトストレージサービスとやり取りするための ObjectStorage クラス。 -### Param +### Param \{#param\} オブジェクトストレージサービスの構成。 -### Constructors +### Constructors \{#constructors\} -#### new ObjectStorage() +#### new ObjectStorage() \{#new-objectstorage\} ```ts new ObjectStorage(config: ObjectStorageConfig): ObjectStorage @@ -22,16 +21,15 @@ new ObjectStorage(config: ObjectStorageConfig): ObjectStorage **Parameters**: -- `config` _ObjectStorageConfig_ - +* `config` *ObjectStorageConfig* **Returns**: -- `ObjectStorage` +* `ObjectStorage` -### Methods +### Methods \{#methods\} -#### upload() +#### upload() \{#upload\} ```ts upload( @@ -44,25 +42,24 @@ archiveBasePath: string): Promise **Parameters**: -- `path` _string_ - アップロード対象のファイルまたはディレクトリのパス。 -- `organizationId` _string_ - アップロードに使用する組織ID。 -- `archiveBasePath` _string_ - アーカイブで使用するベースパス。 - +* `path` *string* - アップロード対象のファイルまたはディレクトリのパス。 +* `organizationId` *string* - アップロードに使用する組織ID。 +* `archiveBasePath` *string* - アーカイブで使用するベースパス。 **Returns**: -- `Promise` - アップロードされたファイルまたはディレクトリのハッシュ値。 -*** +* `Promise` - アップロードされたファイルまたはディレクトリのハッシュ値。 +*** -## ObjectStorageConfig +## ObjectStorageConfig \{#objectstorageconfig\} ObjectStorage クラスの設定。 **プロパティ**: -- `accessKeyId` _string_ - オブジェクトストレージサービスのアクセスキー ID。 -- `bucketName?` _string_ - 使用するバケット名。 -- `endpointUrl` _string_ - オブジェクトストレージサービスのエンドポイント URL。 -- `secretAccessKey` _string_ - オブジェクトストレージサービスのシークレットアクセスキー。 -- `sessionToken?` _string_ - オブジェクトストレージサービスのセッショントークン(一時的な認証情報で使用)。 \ No newline at end of file +* `accessKeyId` *string* - オブジェクトストレージサービスのアクセスキー ID。 +* `bucketName?` *string* - 使用するバケット名。 +* `endpointUrl` *string* - オブジェクトストレージサービスのエンドポイント URL。 +* `secretAccessKey` *string* - オブジェクトストレージサービスのシークレットアクセスキー。 +* `sessionToken?` *string* - オブジェクトストレージサービスのセッショントークン(一時的な認証情報で使用)。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/process.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/process.mdx index d4f6513c8..a0a1df252 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/process.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/process.mdx @@ -3,23 +3,18 @@ title: "プロセス" hideTitleOnPage: true --- - -## CodeRunParams +## CodeRunParams \{#coderunparams\} コード実行用のパラメータ。 **プロパティ**: -- `argv?` _string\[\]_ - コマンドライン引数 -- `env?` _Record\_ - 環境変数 - - - - +* `argv?` *string[]* - コマンドライン引数 +* `env?` *Record<string, string>* - 環境変数 -### コンストラクタ +### コンストラクタ \{#constructors\} -#### new CodeRunParams() +#### new CodeRunParams() \{#new-coderunparams\} ```ts new CodeRunParams(): CodeRunParams @@ -27,40 +22,40 @@ new CodeRunParams(): CodeRunParams **戻り値**: -- `CodeRunParams` -## プロセス +* `CodeRunParams` -サンドボックス内でのプロセスおよびコード実行を扱います。 +## プロセス \{#process\} -### コンストラクタ +サンドボックス内のプロセスおよびコード実行を扱います。 -#### new Process() +### コンストラクタ \{#constructors\} + +#### new Process() \{#new-process\} ```ts new Process( - sandboxId: string, clientConfig: Configuration, codeToolbox: SandboxCodeToolbox, - toolboxApi: ToolboxApi, - getRootDir: () => Promise): Process + apiClient: ProcessApi, + getPreviewToken: () => Promise, + ensureToolboxUrl: () => Promise): Process ``` **パラメータ**: -- `sandboxId` _string_ -- `clientConfig` _Configuration_ -- `codeToolbox` _SandboxCodeToolbox_ -- `toolboxApi` _ToolboxApi_ -- `getRootDir` _\(\) =\> Promise\_ - +* `clientConfig` *Configuration* +* `codeToolbox` *SandboxCodeToolbox* +* `apiClient` *ProcessApi* +* `getPreviewToken` *() => Promise<string>* +* `ensureToolboxUrl` *() => Promise<void>* **戻り値**: -- `Process` +* `Process` -### メソッド +### メソッド \{#methods\} -#### codeRun() +#### codeRun() \{#coderun\} ```ts codeRun( @@ -73,22 +68,21 @@ timeout?: number): Promise **パラメータ**: -- `code` _string_ - 実行するコード -- `params?` _CodeRunParams_ - コード実行用のパラメータ -- `timeout?` _number_ - 実行完了を待機する最大時間(秒) - +* `code` *string* - 実行するコード +* `params?` *CodeRunParams* - コード実行用パラメータ +* `timeout?` *number* - 実行完了を待つ最大時間(秒) **戻り値**: -- `Promise` - 以下を含むコード実行結果: - - exitCode: 実行の終了ステータス - - result: コードの標準出力 - - artifacts: `stdout`(result と同じ)および `charts`(matplotlib のチャートメタデータ)を含む ExecutionArtifacts オブジェクト +* `Promise` - 次を含むコード実行結果: + * exitCode: 実行の終了ステータス + * result: コードの標準出力 + * artifacts: `stdout`(result と同じ)および `charts`(matplotlib のチャートメタデータ)を含む ExecutionArtifacts オブジェクト **例:** ```ts -// TypeScript コードを実行 +// TypeScript のコードを実行 const response = await process.codeRun(` const x = 10; const y = 20; @@ -98,7 +92,7 @@ console.log(response.artifacts.stdout); // 出力: Sum: 30 ``` ```ts -// matplotlib を用いた Python コードを実行 +// matplotlib を使用して Python のコードを実行 const response = await process.codeRun(` import matplotlib.pyplot as plt import numpy as np @@ -138,24 +132,126 @@ if (response.artifacts?.charts) { *** -#### createSession() +#### connectPty() \{#connectpty\} ```ts -createSession(sessionId: string): Promise +connectPty(sessionId: string, options?: PtyConnectOptions): Promise ``` -サンドボックス内に新しい長時間実行のバックグラウンドセッションを作成します。 +サンドボックス内の既存の PTY セッションに接続します。 + +既存の PTY セッションへの WebSocket 接続を確立し、既に作成済みのターミナルセッションと対話できるようにします。 + +**パラメーター**: + +* `sessionId` *string* - 接続する PTY セッションの ID +* `options?` *PtyConnectOptions* - データハンドラーを含む接続オプション + +**戻り値**: + +* `Promise` - セッション管理用の PTY ハンドル + +**例:** + +```ts +// 既存のPTYセッションに接続 +const handle = await process.connectPty('my-session', { + onData: (data) => { + // ターミナル出力を処理 + const text = new TextDecoder().decode(data); + process.stdout.write(text); + }, +}); + +// 接続が確立されるまで待機 +await handle.waitForConnection(); + +// 既存のセッションにコマンドを送信 +await handle.sendInput('pwd\n'); +await handle.sendInput('ls -la\n'); +await handle.sendInput('exit\n'); + +// 完了を待機 +const result = await handle.wait(); +console.log(`セッションが終了しました。終了コード: ${result.exitCode}`); + +// クリーンアップ +await handle.disconnect(); +``` + +*** -セッションはコマンド間で状態を保持するバックグラウンドプロセスであり、関連する複数のコマンドや永続的な環境設定が必要なシナリオに最適です。長時間実行のコマンドを実行し、プロセスの状態を監視できます。 +#### createPty() \{#createpty\} + +```ts +createPty(options?: PtyCreateOptions & PtyConnectOptions): Promise +``` + +サンドボックス内で新しい PTY(擬似端末)セッションを作成します。 + +コマンドの実行やユーザー入力の処理が可能な対話型ターミナルセッションを作成します。 +この PTY セッションは実際のターミナルと同様に動作し、コマンド履歴などの機能をサポートします。 **パラメータ**: -- `sessionId` _string_ - 新しいセッションの一意の識別子 +* `options?` *PtyCreateOptions & PtyConnectOptions* - 作成および接続オプションを含む PTY セッションの構成 + +**戻り値**: + +* `Promise` - セッション管理用の PTY ハンドル + +**例:** + +```ts +// カスタム設定でPTYセッションを作成 +const ptyHandle = await process.createPty({ + id: 'my-interactive-session', + cwd: '/workspace', + envs: { TERM: 'xterm-256color', LANG: 'en_US.UTF-8' }, + cols: 120, + rows: 30, + onData: (data) => { + // ターミナル出力を処理 + const text = new TextDecoder().decode(data); + process.stdout.write(text); + }, +}); + +// 接続が確立されるまで待機 +await ptyHandle.waitForConnection(); + +// ターミナルにコマンドを送信 +await ptyHandle.sendInput('ls -la\n'); +await ptyHandle.sendInput('echo "Hello, PTY!"\n'); +await ptyHandle.sendInput('exit\n'); + +// 完了を待機して結果を取得 +const result = await ptyHandle.wait(); +console.log(`PTYセッションが終了コード ${result.exitCode} で完了しました`); + +// クリーンアップ +await ptyHandle.disconnect(); +``` + +*** + +#### createSession() \{#createsession\} + +```ts +createSession(sessionId: string): Promise +``` + +サンドボックス内に新しい長時間稼働のバックグラウンドセッションを作成します。 +セッションはコマンド間で状態を維持するバックグラウンドプロセスで、複数の関連コマンドの実行や恒常的な環境セットアップが必要なシナリオに最適です。長時間実行のコマンドを動かし、プロセスの状態を監視できます。 + +**パラメーター**: + +* `sessionId` *string* - 新規セッションの一意の識別子 **戻り値**: -- `Promise` +* `Promise` **例:** @@ -170,22 +266,21 @@ await process.deleteSession(sessionId); *** -#### deleteSession() +#### deleteSession() \{#deletesession\} ```ts deleteSession(sessionId: string): Promise ``` -サンドボックスからセッションを削除します。 +サンドボックスのセッションを削除します。 -**パラメータ**: - -- `sessionId` _string_ - 削除するセッションの一意の識別子 +**パラメーター**: +* `sessionId` *string* - 削除するセッションの一意の識別子 **戻り値**: -- `Promise` +* `Promise` **例:** @@ -196,7 +291,7 @@ await process.deleteSession('my-session'); *** -#### executeCommand() +#### executeCommand() \{#executecommand\} ```ts executeCommand( @@ -206,45 +301,43 @@ executeCommand( timeout?: number): Promise ``` -サンドボックスでシェルコマンドを実行します。 +サンドボックス内でシェルコマンドを実行します。 -**Parameters**: - -- `command` _string_ - 実行するシェルコマンド -- `cwd?` _string_ - コマンド実行時の作業ディレクトリ。未指定の場合はサンドボックスのルートディレクトリを使用します。 - 既定値はユーザーのルートディレクトリです。 -- `env?` _Record\_ - コマンドに設定する環境変数 -- `timeout?` _number_ - コマンドの完了を待機する最大時間(秒)。0 は無期限に待機します。 +**パラメーター**: +* `command` *string* - 実行するシェルコマンド +* `cwd?` *string* - コマンド実行時の作業ディレクトリ。未指定の場合はサンドボックスの作業ディレクトリを使用します。 +* `env?` *Record<string, string>* - コマンドに設定する環境変数 +* `timeout?` *number* - コマンドの完了を待機する最大時間(秒)。0 は無期限に待機します。 -**Returns**: +**戻り値**: -- `Promise` - コマンド実行結果。以下を含む: - - exitCode: コマンドの終了ステータス - - result: コマンドの標準出力 - - artifacts: ExecutionArtifacts オブジェクト(`stdout`(result と同じ)と `charts`(matplotlib のチャートメタデータ)を含む) +* `Promise` - コマンド実行結果を返します。内容: + * exitCode: コマンドの終了ステータス + * result: コマンドの標準出力 + * artifacts: `stdout`(result と同じ)および `charts`(matplotlib のチャートメタデータ)を含む ExecutionArtifacts オブジェクト -**Examples:** +**例:** ```ts -// Simple command +// シンプルなコマンド const response = await process.executeCommand('echo "Hello"'); -console.log(response.artifacts.stdout); // Prints: Hello +console.log(response.artifacts.stdout); // 出力: Hello ``` ```ts -// Command with working directory +// 作業ディレクトリを指定したコマンド const result = await process.executeCommand('ls', 'workspace/src'); ``` ```ts -// Command with timeout +// タイムアウト付きコマンド const result = await process.executeCommand('sleep 10', undefined, 5); ``` *** -#### executeSessionCommand() +#### executeSessionCommand() \{#executesessioncommand\} ```ts executeSessionCommand( @@ -253,45 +346,87 @@ executeSessionCommand( timeout?: number): Promise ``` -既存のセッションでコマンドを実行します。 - -**Parameters**: +既存のセッション内でコマンドを実行します。 -- `sessionId` _string_ - 使用するセッションの一意の識別子 -- `req` _SessionExecuteRequest_ - コマンド実行リクエスト。以下を含む: - - command: 実行するコマンド - - runAsync: 非同期で実行するかどうか -- `timeout?` _number_ - タイムアウト(秒) +**パラメーター**: +* `sessionId` *string* - 使用するセッションの一意の識別子 +* `req` *SessionExecuteRequest* - 次を含むコマンド実行リクエスト: + * command: 実行するコマンド + * runAsync: 非同期で実行するかどうか +* `timeout?` *number* - タイムアウト(秒) -**Returns**: +**戻り値**: -- `Promise` - コマンド実行結果。以下を含む: - - cmdId: 実行されたコマンドの一意の識別子 - - output: コマンド出力(同期実行の場合) - - exitCode: コマンドの終了ステータス(同期実行の場合) +* `Promise` - 次を含むコマンド実行結果: + * cmdId: 実行されたコマンドの一意の識別子 + * output: 結合されたコマンド出力(stdout と stderr)(同期実行時) + * stdout: コマンドの標準出力 + * stderr: コマンドの標準エラー出力 + * exitCode: コマンドの終了コード(同期実行時) -**Example:** +**例:** ```ts -// Execute commands in sequence, maintaining state +// 状態を維持しながらコマンドを順に実行 const sessionId = 'my-session'; -// Change directory +// ディレクトリを変更 await process.executeSessionCommand(sessionId, { command: 'cd /home/daytona' }); -// Run command in new directory +// 新しいディレクトリでコマンドを実行 const result = await process.executeSessionCommand(sessionId, { command: 'pwd' }); -console.log(result.output); // Prints: /home/daytona +console.log('[STDOUT]:', result.stdout); +console.log('[STDERR]:', result.stderr); +``` + +*** + +#### getPtySessionInfo() \{#getptysessioninfo\} + +```ts +getPtySessionInfo(sessionId: string): Promise +``` + +特定の PTY セッションに関する詳細情報を取得します。 + +PTY セッションの現在の状態、設定、メタデータを含む網羅的な情報を取得します。 + +**パラメータ**: + +* `sessionId` *string* - 情報を取得する PTY セッションの ID + +**戻り値**: + +* `Promise` - PTY セッション情報 + +**スロー**: + +PTY セッションが存在しない場合 + +**例:** + +```ts +// 特定のPTYセッションの詳細を取得 +const session = await process.getPtySessionInfo('my-session'); + +console.log(`セッションID: ${session.id}`); +console.log(`アクティブ: ${session.active}`); +console.log(`作業ディレクトリ: ${session.cwd}`); +console.log(`ターミナルサイズ: ${session.cols}x${session.rows}`); + +if (session.processId) { + console.log(`プロセスID: ${session.processId}`); +} ``` *** -#### getSession() +#### getSession() \{#getsession\} ```ts getSession(sessionId: string): Promise @@ -299,18 +434,17 @@ getSession(sessionId: string): Promise サンドボックス内のセッションを取得します。 -**Parameters**: - -- `sessionId` _string_ - 取得するセッションの一意の識別子 +**パラメーター**: +* `sessionId` *string* - 取得するセッションの一意の識別子 -**Returns**: +**戻り値**: -- `Promise` - セッション情報。以下を含む: - - sessionId: セッションの一意の識別子 - - commands: セッション内で実行されたコマンドの一覧 +* `Promise` - 次の情報を含むセッション情報: + * sessionId: セッションの一意の識別子 + * commands: セッションで実行されたコマンドの一覧 -**Example:** +**例:** ```ts const session = await process.getSession('my-session'); @@ -321,28 +455,27 @@ session.commands.forEach(cmd => { *** -#### getSessionCommand() +#### getSessionCommand() \{#getsessioncommand\} ```ts getSessionCommand(sessionId: string, commandId: string): Promise ``` -セッションで実行された特定のコマンドに関する情報を取得します。 - -**Parameters**: +セッション内で実行された特定のコマンドの情報を取得します。 -- `sessionId` _string_ - セッションの一意の識別子 -- `commandId` _string_ - コマンドの一意の識別子 +**パラメーター**: +* `sessionId` *string* - セッションの一意の識別子 +* `commandId` *string* - コマンドの一意の識別子 -**Returns**: +**戻り値**: -- `Promise` - コマンド情報。以下を含む: - - id: コマンドの一意の識別子 - - command: 実行されたコマンド文字列 - - exitCode: コマンドの終了ステータス(完了している場合) +* `Promise` - 次を含むコマンド情報: + * id: コマンドの一意の識別子 + * command: 実行されたコマンド文字列 + * exitCode: コマンドの終了コード(完了している場合) -**Example:** +**例:** ```ts const cmd = await process.getSessionCommand('my-session', 'cmd-123'); @@ -353,74 +486,154 @@ if (cmd.exitCode === 0) { *** -#### getSessionCommandLogs() +#### getSessionCommandLogs() \{#getsessioncommandlogs\} -##### Call Signature +##### 呼び出しシグネチャ \{#call-signature\} ```ts -getSessionCommandLogs(sessionId: string, commandId: string): Promise +getSessionCommandLogs(sessionId: string, commandId: string): Promise ``` -セッションで実行されたコマンドのログを取得します。 +セッション内で実行されたコマンドのログを取得します。 -**Parameters**: +**パラメータ**: -- `sessionId` _string_ - セッションの一意の識別子 -- `commandId` _string_ - コマンドの一意の識別子 +* `sessionId` *string* - セッションの一意の識別子 +* `commandId` *string* - コマンドの一意の識別子 -**Returns**: +**戻り値**: -- `Promise` - コマンドのログ +* `Promise` - コマンドのログ。output(stdout と stderr の合成)、stdout、stderr を含みます -**Example:** +**例:** ```ts const logs = await process.getSessionCommandLogs('my-session', 'cmd-123'); -console.log('Command output:', logs); +console.log('[STDOUT]:', logs.stdout); +console.log('[STDERR]:', logs.stderr); ``` -##### Call Signature +##### 呼び出しシグネチャ \{#call-signature\} ```ts getSessionCommandLogs( sessionId: string, commandId: string, -onLogs: (chunk: string) => void): Promise + onStdout: (chunk: string) => void, +onStderr: (chunk: string) => void): Promise ``` -セッションで実行されたコマンドのログを、利用可能になり次第、非同期で取得・処理します。 +セッション内で実行されたコマンドのログを、利用可能になり次第、非同期で取得・処理します。 **パラメーター**: -- `sessionId` _string_ - セッションの一意の識別子 -- `commandId` _string_ - コマンドの一意の識別子 -- `onLogs` _\(chunk: string\) =\> void_ - 各ログチャンクを処理するコールバック関数 +* `sessionId` *string* - セッションの一意の識別子 +* `commandId` *string* - コマンドの一意の識別子 +* `onStdout` *(chunk: string) => void* - stdoutのログチャンクを処理するコールバック関数 +* `onStderr` *(chunk: string) => void* - stderrのログチャンクを処理するコールバック関数 **戻り値**: -- `Promise` +* `Promise` **例:** ```ts const logs = await process.getSessionCommandLogs('my-session', 'cmd-123', (chunk) => { - console.log('Log chunk:', chunk); + console.log('[STDOUT]:', chunk); +}, (chunk) => { + console.log('[STDERR]:', chunk); }); ``` *** -#### listSessions() +#### killPtySession() \{#killptysession\} + +```ts +killPtySession(sessionId: string): Promise +``` + +PTY セッションを終了し、関連するプロセスを停止します。 + +PTY セッションを強制的に終了し、関連するすべてのリソースをクリーンアップします。 +これにより、すべてのアクティブな接続が閉じられ、基盤となるシェルプロセスが強制終了されます。 + +**パラメーター**: + +* `sessionId` *string* - 強制終了する PTY セッションの ID + +**返り値**: + +* `Promise` + +**スロー**: + +PTY セッションが存在しない、または強制終了できない場合 + +##### 注意 \{#note\} + +この操作は取り消せません。ターミナルセッション内で保存していない作業は失われます。 + +**例:** + +```ts +// 特定のPTYセッションを終了 +await process.killPtySession('my-session'); + +// セッションがもはやアクティブでないことを確認 +try { + const info = await process.getPtySessionInfo('my-session'); + console.log(`セッションは存在していますがアクティブ状態: ${info.active}`); +} catch (error) { + console.log('セッションは完全に削除されました'); +} +``` + +*** + +#### listPtySessions() \{#listptysessions\} + +```ts +listPtySessions(): Promise +``` + +サンドボックス内のすべての PTY セッションを一覧表示します。 + +このサンドボックスで作成された、アクティブ・非アクティブを含むすべての PTY セッションの情報を取得します。 + +**戻り値**: + +* `Promise` - PTY セッション情報の配列 + +**例:** + +```ts +// すべてのPTYセッションを一覧表示 +const sessions = await process.listPtySessions(); + +for (const session of sessions) { + console.log(`セッションID: ${session.id}`); + console.log(`アクティブ: ${session.active}`); + console.log(`作成日時: ${session.createdAt}`); + } + console.log('---'); +} +``` + +*** + +#### listSessions() \{#listsessions\} ```ts listSessions(): Promise ``` -サンドボックス内のすべてのアクティブなセッションを一覧表示します。 +サンドボックス内のアクティブなセッションをすべて一覧します。 **戻り値**: -- `Promise` - アクティブなセッションの配列 +* `Promise` - アクティブなセッションの配列 **例:** @@ -433,3 +646,101 @@ sessions.forEach(session => { }); }); ``` + +*** + +#### resizePtySession() \{#resizeptysession\} + +```ts +resizePtySession( + sessionId: string, + cols: number, +rows: number): Promise +``` + +PTY セッションのターミナルサイズを変更します。 + +アクティブな PTY セッションのターミナルサイズを変更します。これは、クライアントのターミナルがリサイズされた場合や、出力要件に応じて表示を調整する必要がある場合に便利です。 + +**Parameters**: + +* `sessionId` *string* - 変更する PTY セッションの ID +* `cols` *number* - 新しいターミナルの列数 +* `rows` *number* - 新しいターミナルの行数 + +**Returns**: + +* `Promise` - 新しいターミナルサイズを反映した更新後のセッション情報 + +**Throws**: + +PTY セッションが存在しない、またはリサイズに失敗した場合 + +##### 注意 \{#note\} + +リサイズ操作はシェルプロセスに SIGWINCH シグナルを送信し、 +ターミナルアプリケーションが新しいサイズに適応できるようにします。 + +**例:** + +```ts +// PTYセッションをより大きなターミナルにリサイズする +const updatedInfo = await process.resizePtySession('my-session', 150, 40); +console.log(`ターミナルが ${updatedInfo.cols}x${updatedInfo.rows} にリサイズされました`); + +// PtyHandleのresizeメソッドも使用できます +await ptyHandle.resize(150, 40); // cols, rows +``` + +*** + +## SessionCommandLogsResponse \{#sessioncommandlogsresponse\} + +**プロパティ**: + +* `output?` *string* +* `stderr?` *string* +* `stdout?` *string* + +## SessionExecuteResponse \{#sessionexecuteresponse\} + +**拡張:** + +**プロパティ**: + +* `cmdId?` *string* + * *継承元*: `SessionExecuteResponse.cmdId` + +* `exitCode?` *number* + * *継承元*: `SessionExecuteResponse.exitCode` + +* `output?` *string* + * *継承元*: `SessionExecuteResponse.output` + +* `stderr?` *string* + +* `stdout?` *string* + +* `SessionExecuteResponse` + +## MAX_PREFIX_LEN \{#max_prefix_len\} + +```ts +const MAX_PREFIX_LEN: number; +``` + +*** + +## STDERR_PREFIX_BYTES \{#stderr_prefix_bytes\} + +```ts +const STDERR_PREFIX_BYTES: Uint8Array; +``` + +*** + +## STDOUT_PREFIX_BYTES \{#stdout_prefix_bytes\} + +```ts +const STDOUT_PREFIX_BYTES: Uint8Array; +``` \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/pty-handle.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/pty-handle.mdx new file mode 100644 index 000000000..b62942289 --- /dev/null +++ b/apps/docs/src/content/docs/ja/typescript-sdk/pty-handle.mdx @@ -0,0 +1,287 @@ +--- +title: "PtyHandle" +hideTitleOnPage: true +--- + +## PtyHandle \{#ptyhandle\} + +単一の PTY セッションを管理するためのハンドル。 + +**プロパティ**: + +* `sessionId` *string* + +入力の送信、ターミナルのリサイズ、完了までの待機、 +および PTY セッションへの WebSocket 接続の管理を行うメソッドを提供します。 + +**例:** + +```typescript +// PTYセッションを作成 +const ptyHandle = await process.createPty({ + id: 'my-session', + cols: 120, + rows: 30, + onData: (data) => { + const text = new TextDecoder().decode(data); + process.stdout.write(text); + }, +}); + +// コマンドを送信 +await ptyHandle.sendInput('ls -la\n'); +await ptyHandle.sendInput('exit\n'); + +// 完了を待機 +const result = await ptyHandle.wait(); +console.log(`PTY exited with code: ${result.exitCode}`); + +// クリーンアップ +await ptyHandle.disconnect(); +``` + +### アクセッサ \{#accessors\} + +#### エラー \{#error\} + +##### 署名を取得 \{#get-signature\} + +```ts +get error(): string +``` + +PTY の失敗時に返されるエラーメッセージ + +**戻り値**: + +* `string` + +*** + +#### exitCode \{#exitcode\} + +##### 署名の取得 \{#get-signature\} + +```ts +get exitCode(): number +``` + +PTY プロセスの終了コード(終了した場合) + +**戻り値**: + +* `number` + +### コンストラクタ \{#constructors\} + +#### new PtyHandle() \{#new-ptyhandle\} + +```ts +new PtyHandle( + ws: WebSocket, + handleResize: (cols: number, rows: number) => Promise, + handleKill: () => Promise, + onPty: (data: Uint8Array) => void | Promise, + sessionId: string): PtyHandle +``` + +**パラメータ**: + +* `ws` *WebSocket* +* `handleResize` *(cols: number, rows: number) => Promise<PtySessionInfo>* +* `handleKill` *() => Promise<void>* +* `onPty` *(data: Uint8Array) => void | Promise<void>* +* `sessionId` *string* + +**返り値**: + +* `PtyHandle` + +### メソッド \{#methods\} + +#### disconnect() \{#disconnect\} + +```ts +disconnect(): Promise +``` + +PTY セッションから切断し、リソースをクリーンアップします。 + +WebSocket 接続を閉じ、関連するリソースを解放します。 +PTY セッションの利用が完了したら呼び出してください。 + +**Returns**: + +* `Promise` + +**Example:** + +```ts +// 完了時は必ずクリーンアップを行う +try { + // ... PTYセッションを使用 +} finally { + await ptyHandle.disconnect(); +} +``` + +*** + +#### isConnected() \{#isconnected\} + +```ts +isConnected(): boolean +``` + +PTY セッションに接続されているかを確認します + +**戻り値**: + +* `boolean` + +*** + +#### kill() \{#kill\} + +```ts +kill(): Promise +``` + +PTY プロセスをキルし、セッションを終了します。 + +PTY セッションとその関連プロセスを強制終了します。 +この操作は取り消せず、PTY は即座に終了します。 + +**Returns**: + +* `Promise` + +**Throws**: + +キル操作に失敗した場合 + +**Example:** + +```ts +// 長時間実行中のプロセスを強制終了 +await ptyHandle.kill(); + +// 終了確認を待機 +const result = await ptyHandle.wait(); +console.log(`プロセスが終了コード: ${result.exitCode} で終了しました`); +``` + +*** + +#### resize() \{#resize\} + +```ts +resize(cols: number, rows: number): Promise +``` + +PTY ターミナルのサイズを変更します。 + +ターミナルのサイズを変更し、SIGWINCH シグナルで新しいサイズをターミナルアプリケーションに通知します。 + +**パラメータ**: + +* `cols` *number* - 新しい列数 +* `rows` *number* - 新しい行数 + +**戻り値**: + +* `Promise` + +**例:** + +```ts +// 120x30にリサイズ +await ptyHandle.resize(120, 30); +``` + +*** + +#### sendInput() \{#sendinput\} + +```ts +sendInput(data: string | Uint8Array): Promise +``` + +PTY セッションに入力データを送信します。 + +キーボード入力やコマンドをターミナルセッションへ送ります。データはターミナルに手入力したのと同様に処理されます。 + +**Parameters**: + +* `data` *送信する入力データ(コマンド、キーストロークなど)* - `string` | `Uint8Array`<`ArrayBufferLike`> + +**Returns**: + +* `Promise` + +**Throws**: + +PTY が未接続である、または送信に失敗した場合 + +**Example:** + +```ts +// コマンドを送信 +await ptyHandle.sendInput('ls -la\n'); + +// 生バイトを送信 +await ptyHandle.sendInput(new Uint8Array([3])); // Ctrl+C +``` + +*** + +#### wait() \{#wait\} + +```ts +wait(): Promise +``` + +PTY プロセスが終了するまで待機し、結果を返します。 + +このメソッドは PTY プロセスが終了するまでブロックし、終了時の情報を返します。 + +**戻り値**: + +* `Promise` - 終了コードとエラー情報を含む結果 + +**例:** + +```ts +// プロセスの完了を待機 +const result = await ptyHandle.wait(); + +if (result.exitCode === 0) { + console.log('プロセスが正常に完了しました'); +} else { + console.log(`プロセスがコード ${result.exitCode} で失敗しました`); + if (result.error) { + console.log(`エラー: ${result.error}`); + } +} +``` + +*** + +#### waitForConnection() \{#waitforconnection\} + +```ts +waitForConnection(): Promise +``` + +WebSocket 接続が確立されるまで待機します。 + +このメソッドは、PTY セッションが入力を受け取り出力を送信できる状態であることを保証します。 +サーバーが接続の確立を確認するまで待機します。 + +**戻り値**: + +* `Promise` + +**例外**: + +接続がタイムアウト(10 秒)する、または接続に失敗した場合 diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/pty.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/pty.mdx new file mode 100644 index 000000000..d416215c5 --- /dev/null +++ b/apps/docs/src/content/docs/ja/typescript-sdk/pty.mdx @@ -0,0 +1,41 @@ +--- +title: "Pty" +hideTitleOnPage: true +--- + +## PtyConnectOptions \{#ptyconnectoptions\} + +PTY セッションへの接続オプション + +**プロパティ**: + +* `onData()` *(data: Uint8Array) => void | Promise<void>* - PTY の出力データを処理するコールバック + + **パラメータ**: + + * `data` *Uint8Array* + + ##### 戻り値 \{#returns\} + + `void` | `Promise` + +## PtyCreateOptions \{#ptycreateoptions\} + +PTY セッションを作成するためのオプション + +**プロパティ**: + +* `cols?` *number* - 端末の列数 +* `cwd?` *string* - PTY セッションの開始ディレクトリ。既定はサンドボックスの作業ディレクトリ +* `envs?` *Record<string, string>* - PTY セッションの環境変数 +* `id` *string* - PTY セッションの一意の識別子 +* `rows?` *number* - 端末の行数 + +## PtyResult \{#ptyresult\} + +終了時の PTY セッションの結果 + +**プロパティ**: + +* `error?` *string* - PTY が失敗した場合のエラーメッセージ +* `exitCode?` *number* - PTY プロセス終了時の終了コード \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/sandbox.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/sandbox.mdx index 56dc27308..07f4c07f1 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/sandbox.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/sandbox.mdx @@ -3,275 +3,268 @@ title: "サンドボックス" hideTitleOnPage: true --- - -## サンドボックス +## サンドボックス \{#sandbox\} Daytona のサンドボックスを表します。 **プロパティ**: -- `autoArchiveInterval?` _number_ - 自動アーカイブの間隔(分) - - ##### 実装 - - ```ts - SandboxDto.autoArchiveInterval - ``` -- `autoDeleteInterval?` _number_ - 自動削除の間隔(分) - - ##### 実装 - - ```ts - SandboxDto.autoDeleteInterval - ``` -- `autoStopInterval?` _number_ - 自動停止の間隔(分) - - ##### 実装 - - ```ts - SandboxDto.autoStopInterval - ``` -- `backupCreatedAt?` _string_ - バックアップの作成時刻 - - ##### 実装 - - ```ts - SandboxDto.backupCreatedAt - ``` -- `backupState?` _SandboxBackupStateEnum_ - サンドボックスのバックアップの現在の状態 - - ##### 実装 - - ```ts - SandboxDto.backupState - ``` -- `buildInfo?` _BuildInfo_ - 動的ビルドから作成された場合のサンドボックスのビルド情報 - - ##### 実装 - - ```ts - SandboxDto.buildInfo - ``` -- `computerUse` _ComputerUse_ - デスクトップ自動化のためのコンピューター使用操作インターフェース -- `cpu` _number_ - サンドボックスに割り当てられた CPU 数 - - ##### 実装 - - ```ts - SandboxDto.cpu - ``` -- `createdAt?` _string_ - サンドボックスの作成時刻 - - ##### 実装 - - ```ts - SandboxDto.createdAt - ``` -- `disk` _number_ - サンドボックスに割り当てられたディスク容量(GiB) - - ##### 実装 - - ```ts - SandboxDto.disk - ``` -- `env` _Record\_ - サンドボックスで設定される環境変数 - - ##### 実装 - - ```ts - SandboxDto.env - ``` -- `errorReason?` _string_ - サンドボックスがエラー状態の場合のエラーメッセージ - - ##### 実装 - - ```ts - SandboxDto.errorReason - ``` -- `fs` _FileSystem_ - ファイルシステム操作インターフェース -- `git` _Git_ - Git 操作インターフェース -- `gpu` _number_ - サンドボックスに割り当てられた GPU 数 - - ##### 実装 - - ```ts - SandboxDto.gpu - ``` -- `id` _string_ - サンドボックスの一意の識別子 - - ##### 実装 - - ```ts - SandboxDto.id - ``` -- `labels` _Record\_ - サンドボックスに付与されたカスタムラベル - - ##### 実装 - - ```ts - SandboxDto.labels - ``` -- `memory` _number_ - サンドボックスに割り当てられたメモリ容量(GiB) - - ##### 実装 - - ```ts - SandboxDto.memory - ``` -- `networkAllowList?` _string_ - サンドボックスで許可される CIDR ネットワークアドレスのカンマ区切りリスト - - ##### 実装 - - ```ts - SandboxDto.networkAllowList - ``` -- `networkBlockAll` _boolean_ - サンドボックスのネットワークアクセスをすべてブロックするかどうか - - ##### 実装 - - ```ts - SandboxDto.networkBlockAll - ``` -- `organizationId` _string_ - サンドボックスの組織 ID - - ##### 実装 - - ```ts - SandboxDto.organizationId - ``` -- `process` _Process_ - プロセス実行インターフェース -- `public` _boolean_ - サンドボックスが公開アクセス可能かどうか - - ##### 実装 - - ```ts - SandboxDto.public - ``` -- `runnerDomain?` _string_ - サンドボックスのランナーのドメイン名 - - ##### 実装 - - ```ts - SandboxDto.runnerDomain - ``` -- `snapshot?` _string_ - サンドボックスの作成に使用された Daytona のスナップショット - - ##### 実装 - - ```ts - SandboxDto.snapshot - ``` -- `state?` _SandboxState_ - サンドボックスの現在の状態(例: "started", "stopped") - - ##### 実装 - - ```ts - SandboxDto.state - ``` -- `target` _string_ - サンドボックスが実行されるランナーのターゲット(リージョン) - - ##### 実装 - - ```ts - SandboxDto.target - ``` -- `updatedAt?` _string_ - サンドボックスの最終更新時刻 - - ##### 実装 - - ```ts - SandboxDto.updatedAt - ``` -- `user` _string_ - サンドボックスで実行中の OS ユーザー - - ##### 実装 - - ```ts - SandboxDto.user - ``` -- `volumes?` _SandboxVolume\[\]_ - サンドボックスに接続されたボリューム - - ##### 実装 - - ```ts - SandboxDto.volumes - ``` - - - - - -### 実装 - -- `Sandbox` - -### コンストラクター - -#### new Sandbox() +* `autoArchiveInterval?` *number* - 自動アーカイブ間隔(分) + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.autoArchiveInterval + ``` +* `autoDeleteInterval?` *number* - 自動削除間隔(分) + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.autoDeleteInterval + ``` +* `autoStopInterval?` *number* - 自動停止間隔(分) + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.autoStopInterval + ``` +* `backupCreatedAt?` *string* - バックアップの作成時刻 + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.backupCreatedAt + ``` +* `backupState?` *SandboxBackupStateEnum* - サンドボックスのバックアップの現在の状態 + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.backupState + ``` +* `buildInfo?` *BuildInfo* - 動的ビルドから作成された場合のサンドボックスのビルド情報 + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.buildInfo + ``` +* `computerUse` *ComputerUse* - デスクトップ自動化のためのコンピューター使用操作インターフェース +* `cpu` *number* - サンドボックスに割り当てられた CPU 数 + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.cpu + ``` +* `createdAt?` *string* - サンドボックスの作成時刻 + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.createdAt + ``` +* `disk` *number* - サンドボックスに割り当てられたディスク容量(GiB) + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.disk + ``` +* `env` `_Record<string, string>_` - サンドボックスに設定された環境変数 + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.env + ``` +* `errorReason?` *string* - サンドボックスがエラー状態のときのエラーメッセージ + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.errorReason + ``` +* `fs` *FileSystem* - ファイルシステム操作インターフェース +* `git` *Git* - Git 操作インターフェース +* `gpu` *number* - サンドボックスに割り当てられた GPU 数 + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.gpu + ``` +* `id` *string* - サンドボックスの一意の識別子 + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.id + ``` +* `labels` `_Record<string, string>_` - サンドボックスに付与されたカスタムラベル + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.labels + ``` +* `memory` *number* - サンドボックスに割り当てられたメモリ容量(GiB) + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.memory + ``` +* `name` *string* - サンドボックスの名前 + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.name + ``` +* `networkAllowList?` *string* - サンドボックスで許可される CIDR ネットワークアドレスのカンマ区切りリスト + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.networkAllowList + ``` +* `networkBlockAll` *boolean* - サンドボックスのすべてのネットワークアクセスをブロックするかどうか + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.networkBlockAll + ``` +* `organizationId` *string* - サンドボックスの組織 ID + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.organizationId + ``` +* `process` *Process* - プロセス実行インターフェース +* `public` *boolean* - サンドボックスが公開アクセス可能かどうか + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.public + ``` +* `snapshot?` *string* - サンドボックスの作成に使用された Daytona のスナップショット + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.snapshot + ``` +* `state?` *SandboxState* - サンドボックスの現在の状態(例: "started", "stopped") + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.state + ``` +* `target` *string* - サンドボックスを実行するランナーのターゲット + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.target + ``` +* `updatedAt?` *string* - サンドボックスの最終更新時刻 + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.updatedAt + ``` +* `user` *string* - サンドボックス内で稼働する OS ユーザー + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.user + ``` +* `volumes?` `_SandboxVolume[]_` - サンドボックスにアタッチされたボリューム + + ##### 実装 \{#implementation-of\} + + ```ts + SandboxDto.volumes + ``` + +### 実装 \{#implements\} + +* `Sandbox` + +### コンストラクタ \{#constructors\} + +#### new Sandbox() \{#new-sandbox\} ```ts new Sandbox( sandboxDto: Sandbox, clientConfig: Configuration, + axiosInstance: AxiosInstance, sandboxApi: SandboxApi, - toolboxApi: ToolboxApi, - codeToolbox: SandboxCodeToolbox): Sandbox + codeToolbox: SandboxCodeToolbox, + getToolboxBaseUrl: () => Promise): Sandbox ``` -新しい Sandbox インスタンスを作成します。 +新しいサンドボックスのインスタンスを作成します -**パラメーター**: - -- `sandboxDto` _Sandbox_ - API の Sandbox インスタンス -- `clientConfig` _Configuration_ -- `sandboxApi` _SandboxApi_ - サンドボックス操作用の API クライアント -- `toolboxApi` _ToolboxApi_ - ツールボックス操作用の API クライアント -- `codeToolbox` _SandboxCodeToolbox_ - 言語別ツールボックス実装 +**パラメータ**: +* `sandboxDto` *Sandbox* - API のサンドボックスインスタンス +* `clientConfig` *Configuration* +* `axiosInstance` *AxiosInstance* +* `sandboxApi` *SandboxApi* - サンドボックス操作用の API クライアント +* `codeToolbox` *SandboxCodeToolbox* - 言語固有のツールボックス実装 +* `getToolboxBaseUrl` *() => Promise<string>* **戻り値**: -- `Sandbox` +* `Sandbox` -### メソッド +### メソッド \{#methods\} -#### archive() +#### archive() \{#archive\} ```ts archive(): Promise ``` -サンドボックスをアーカイブし、非アクティブ化して状態を保持します。サンドボックスをアーカイブすると、 -ファイルシステム全体の状態はコスト効率の高いオブジェクトストレージに移され、長期間利用可能な状態を維持できます。 -アーカイブ状態と停止状態の違いは、サイズに応じてアーカイブ済みサンドボックスの起動により時間がかかる点です。 -アーカイブ前にサンドボックスは停止している必要があります。 +サンドボックスをアーカイブし、非アクティブ化して状態を保持します。サンドボックスをアーカイブすると、ファイルシステム全体の状態がコスト効率の高いオブジェクトストレージに移動され、長期間にわたりサンドボックスを利用可能な状態で保持できます。 +アーカイブ状態と停止状態の違いとして、アーカイブされたサンドボックスの起動には、サイズに応じてより時間がかかります。 +アーカイブする前にサンドボックスを停止する必要があります。 -**戻り値**: +**返り値**: -- `Promise` +* `Promise` *** -#### createLspServer() +#### createLspServer() \{#createlspserver\} ```ts createLspServer(languageId: string, pathToProject: string): Promise ``` -新しい Language Server Protocol (LSP) サーバーインスタンスを作成します。 +新しい Language Server Protocol (LSP) サーバー インスタンスを作成します。 -LSP サーバーはコード補完、診断などの言語機能を提供します。 +LSP サーバーは、コード補完や診断などの言語固有の機能を提供します。 **パラメーター**: -- `languageId` _string_ - 言語サーバーの種類(例: "typescript") -- `pathToProject` _string_ - プロジェクトのルートディレクトリへのパス。相対パスはユーザーの - ルートディレクトリを基準に解決されます。 - +* `languageId` *string* - 言語サーバーの種類(例: "typescript") +* `pathToProject` *string* - プロジェクトのルートディレクトリへのパス。相対パスはサンドボックスの作業ディレクトリを基準に解決されます。 **戻り値**: -- `Promise` - 指定言語向けに構成された新規 LSP サーバーインスタンス +* `Promise` - 指定した言語向けに構成された新しい LSP サーバー インスタンス **例:** @@ -281,7 +274,25 @@ const lsp = await sandbox.createLspServer('typescript', 'workspace/project'); *** -#### delete() +#### createSshAccess() \{#createsshaccess\} + +```ts +createSshAccess(expiresInMinutes?: number): Promise +``` + +サンドボックスの SSH アクセストークンを作成します。 + +**パラメータ**: + +* `expiresInMinutes?` *number* - SSH アクセストークンの有効期間(分)。 + +**戻り値**: + +* `Promise` - SSH アクセストークン。 + +*** + +#### delete() \{#delete\} ```ts delete(timeout: number): Promise @@ -289,91 +300,145 @@ delete(timeout: number): Promise サンドボックスを削除します。 -**パラメーター**: - -- `timeout` _number = 60_ +**パラメータ**: +* `timeout` *number = 60* **戻り値**: -- `Promise` +* `Promise` *** -#### getPreviewLink() +#### getPreviewLink() \{#getpreviewlink\} ```ts getPreviewLink(port: number): Promise ``` -指定したポートのプレビューリンクを取得します。ポートが閉じている場合は自動的に開きます。 -プライベートなサンドボックスでは、URL へのアクセスを許可するトークンが含まれます。 +指定したポートのサンドボックスに対するプレビューリンクを取得します。ポートが閉じている場合は、 +自動的に開放されます。プライベートなサンドボックスでは、URL へのアクセスを許可する +トークンが含まれます。 **パラメーター**: -- `port` _number_ - プレビューリンクを開くポート - +* `port` *number* - プレビューリンクを公開するポート。 **戻り値**: -- `Promise` - プレビューリンクのレスポンスオブジェクト。`url` - と `token`(プライベートサンドボックスにアクセスするため)を含みます。 +* `Promise` - プレビューリンクのレスポンスオブジェクト。`url` と + `token`(プライベートなサンドボックスへアクセスするため)を含みます。 **例:** ```ts const previewLink = await sandbox.getPreviewLink(3000); -console.log(`Preview URL: ${previewLink.url}`); -console.log(`Token: ${previewLink.token}`); +console.log(`プレビューURL: ${previewLink.url}`); +console.log(`トークン: ${previewLink.token}`); ``` *** -#### getUserRootDir() +#### getUserHomeDir() \{#getuserhomedir\} ```ts -getUserRootDir(): Promise +getUserHomeDir(): Promise ``` -サンドボックス内の、ログイン中ユーザーのルートディレクトリパスを取得します。 +サンドボックス内で、ログイン中のユーザーのホームディレクトリのパスを取得します。 **戻り値**: -- `Promise` - ログイン中ユーザーのサンドボックスのルートディレクトリへの絶対パス +* `Promise` - ログイン中のサンドボックスユーザーのホームディレクトリへの絶対パス **例:** ```ts -const rootDir = await sandbox.getUserRootDir(); -console.log(`Sandbox root: ${rootDir}`); +const userHomeDir = await sandbox.getUserHomeDir(); +console.log(`サンドボックスユーザーホーム: ${userHomeDir}`); ``` *** -#### refreshData() +#### ~~getUserRootDir()~~ \{#getuserrootdir\} + +```ts +getUserRootDir(): Promise +``` + +**戻り値**: + +* `Promise` + +##### 非推奨 \{#deprecated\} + +代わりに `getUserHomeDir` を使用してください。このメソッドは今後のバージョンで削除されます。 + +*** + +#### getWorkDir() \{#getworkdir\} + +```ts +getWorkDir(): Promise +``` + +サンドボックス内の作業ディレクトリのパスを取得します。 + +**返り値**: + +* `Promise` - サンドボックスの作業ディレクトリへの絶対パス。Dockerfile に WORKDIR が指定されていればそれを使用し、指定がない場合はユーザーのホームディレクトリを使用します。 + +**例:** + +```ts +const workDir = await sandbox.getWorkDir(); +console.log(`サンドボックス作業ディレクトリ: ${workDir}`); +``` + +*** + +#### refreshData() \{#refreshdata\} ```ts refreshData(): Promise ``` -API からサンドボックスのデータを再取得して更新します。 +API からサンドボックスのデータを最新状態に更新します。 **戻り値**: -- `Promise` +* `Promise` **例:** ```ts await sandbox.refreshData(); -console.log(`Sandbox ${sandbox.id}:`); -console.log(`State: ${sandbox.state}`); -console.log(`Resources: ${sandbox.cpu} CPU, ${sandbox.memory} GiB RAM`); +console.log(`サンドボックス ${sandbox.id}:`); +console.log(`状態: ${sandbox.state}`); +console.log(`リソース: ${sandbox.cpu} CPU, ${sandbox.memory} GiB RAM`); +``` + +*** + +#### revokeSshAccess() \{#revokesshaccess\} + +```ts +revokeSshAccess(token: string): Promise ``` +サンドボックスの SSH アクセストークンを取り消します。 + +**パラメータ**: + +* `token` *string* - 取り消すトークン。 + +**戻り値**: + +* `Promise` + *** -#### setAutoArchiveInterval() +#### setAutoArchiveInterval() \{#setautoarchiveinterval\} ```ts setAutoArchiveInterval(interval: number): Promise @@ -381,68 +446,66 @@ setAutoArchiveInterval(interval: number): Promise サンドボックスの自動アーカイブ間隔を設定します。 -指定した時間連続して停止状態が続いた場合、自動的にアーカイブされます。 +指定した間隔のあいだ連続して停止状態が続くと、サンドボックスは自動的にアーカイブされます。 **パラメーター**: -- `interval` _number_ - 連続停止から自動アーカイブまでの分数。 - 最大間隔にするには 0 を指定します。デフォルトは 7 日です。 - +* `interval` *number* - 連続して停止してから自動アーカイブされるまでの分数。 + 最大間隔にするには 0 を設定します。デフォルトは 7 日です。 **戻り値**: -- `Promise` +* `Promise` **スロー**: -- `DaytonaError` - interval が非負の整数でない場合 +* `DaytonaError` - interval が非負の整数でない場合 **例:** ```ts -// 1 時間後に自動アーカイブ +// 1時間後に自動アーカイブ await sandbox.setAutoArchiveInterval(60); -// 最大間隔を使用 +// または最大間隔を使用 await sandbox.setAutoArchiveInterval(0); ``` *** -#### setAutoDeleteInterval() +#### setAutoDeleteInterval() \{#setautodeleteinterval\} ```ts setAutoDeleteInterval(interval: number): Promise ``` -サンドボックス(Daytonaが管理する隔離された一時的なコンピュート環境)の自動削除間隔を設定します。 +サンドボックスの自動削除間隔を設定します。 -指定した間隔のあいだ連続して停止状態が続くと、サンドボックスは自動的に削除されます。 +指定した間隔のあいだ連続して停止している場合、サンドボックスは自動的に削除されます。 -**パラメータ**: - -- `interval` _number_ - 連続停止後に自動削除されるまでの分数。 - 自動削除を無効化するには負の値を設定します。停止と同時に即時削除するには 0 を設定します。 - 既定では自動削除は無効です。 +**パラメーター**: +* `interval` *number* - サンドボックスが連続して停止してから自動削除されるまでの分数。 + 自動削除を無効にするには負の値を設定します。停止と同時に削除するには 0 を設定します。 + 既定では自動削除は無効です。 **戻り値**: -- `Promise` +* `Promise` **例:** ```ts // 1時間後に自動削除 await sandbox.setAutoDeleteInterval(60); -// 停止と同時に即時削除 +// または停止と同時に即座に削除 await sandbox.setAutoDeleteInterval(0); -// 自動削除を無効化 +// または自動削除を無効にする await sandbox.setAutoDeleteInterval(-1); ``` *** -#### setAutostopInterval() +#### setAutostopInterval() \{#setautostopinterval\} ```ts setAutostopInterval(interval: number): Promise @@ -450,58 +513,56 @@ setAutostopInterval(interval: number): Promise サンドボックスの自動停止間隔を設定します。 -指定した間隔のあいだアイドル(新しいイベントなし)が続くと、サンドボックスは自動的に停止します。 -イベントには、SDK を通じたサンドボックスへの状態変更や各種インタラクションが含まれます。 -Sandbox Previews を用いたインタラクションは含まれません。 +指定した間隔のあいだアイドル状態(新しいイベントなし)が続くと、サンドボックスは自動的に停止します。 +イベントには、SDK を通じたサンドボックスの状態変更や操作が含まれます。 +サンドボックスのプレビューを使った操作は含まれません。 **パラメータ**: -- `interval` _number_ - 自動停止までの非アクティブ時間(分)。 - 自動停止を無効化するには 0 を設定します。既定は 15 分です。 - +* `interval` *number* - 自動停止までの非アクティブ時間(分)。 + 0 に設定すると自動停止を無効化します。既定は 15 分です。 **戻り値**: -- `Promise` +* `Promise` **スロー**: -- `DaytonaError` - interval が非負の整数でない場合 +* `DaytonaError` - interval が非負の整数でない場合 **例:** ```ts // 1時間後に自動停止 await sandbox.setAutostopInterval(60); -// 自動停止を無効化 +// または自動停止を無効化 await sandbox.setAutostopInterval(0); ``` *** -#### setLabels() +#### setLabels() \{#setlabels\} ```ts setLabels(labels: Record): Promise> ``` -サンドボックスにラベルを設定します。 - -ラベルは、サンドボックスの整理や識別に使用できるキーと値のペアです。 +サンドボックスのラベルを設定します。 -**パラメータ**: +ラベルは、サンドボックスを整理・識別するために使用できるキーと値のペアです。 -- `labels` _Record\_ - サンドボックスのラベルを表すキーと値のペアの辞書 +**パラメーター**: +* `labels` *Record<string, string>* - サンドボックスのラベルを表すキーと値ペアのディクショナリ **戻り値**: -- `Promise>` +* `Promise>` **例:** ```ts -// サンドボックスのラベルを設定 +// サンドボックスラベルを設定 await sandbox.setLabels({ project: 'my-project', environment: 'development', @@ -511,41 +572,40 @@ await sandbox.setLabels({ *** -#### start() +#### start() \{#start\} ```ts start(timeout?: number): Promise ``` -サンドボックスを起動します。 +サンドボックスを開始します。 -このメソッドはサンドボックスを起動し、準備完了になるまで待機します。 +このメソッドはサンドボックスを開始し、準備が整うまで待機します。 **パラメータ**: -- `timeout?` _number = 60_ - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。 - 既定は 60 秒のタイムアウトです。 - +* `timeout?` *number = 60* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。 + 既定では 60 秒のタイムアウトです。 **戻り値**: -- `Promise` +* `Promise` **スロー**: -- `DaytonaError` - サンドボックスの起動に失敗した場合、またはタイムアウトした場合 +* `DaytonaError` - サンドボックスの開始に失敗した場合、またはタイムアウトした場合 **例:** ```ts const sandbox = await daytona.getCurrentSandbox('my-sandbox'); -await sandbox.start(40); // 最大 40 秒待機 -console.log('Sandbox started successfully'); +await sandbox.start(40); // 最大40秒待機 +console.log('サンドボックスが正常に開始されました'); ``` *** -#### stop() +#### stop() \{#stop\} ```ts stop(timeout?: number): Promise @@ -557,96 +617,129 @@ stop(timeout?: number): Promise **パラメータ**: -- `timeout?` _number = 60_ - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。 - 既定は 60 秒のタイムアウトです。 - +* `timeout?` *number = 60* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。 + 既定では 60 秒のタイムアウトです。 **戻り値**: -- `Promise` +* `Promise` **例:** ```ts const sandbox = await daytona.getCurrentSandbox('my-sandbox'); await sandbox.stop(); -console.log('Sandbox stopped successfully'); +console.log('サンドボックスが正常に停止されました'); ``` *** -#### waitUntilStarted() +#### validateSshAccess() \{#validatesshaccess\} ```ts -waitUntilStarted(timeout?: number): Promise +validateSshAccess(token: string): Promise ``` -サンドボックスが 'started' 状態に到達するまで待機します。 +サンドボックスのSSHアクセス用トークンを検証します。 -このメソッドは、サンドボックスが 'started' 状態に到達するか -エラーが発生するまでステータスをポーリングします。 +**パラメーター**: -**パラメータ**: +* `token` *string* - 検証対象のトークン。 + +**戻り値**: -- `timeout?` _number = 60_ - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。 - 既定は 60 秒です。 +* `Promise` - SSHアクセス検証結果。 +*** -**戻り値**: +#### waitUntilStarted() \{#waituntilstarted\} + +```ts +waitUntilStarted(timeout?: number): Promise +``` + +サンドボックスが「started」状態に到達するまで待機します。 + +このメソッドは、サンドボックスのステータスが「started」状態に到達するか +エラーが発生するまでポーリングします。 + +**パラメーター**: + +* `timeout?` *number = 60* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。 + 既定値は 60 秒です。 + +**返り値**: -- `Promise` +* `Promise` **スロー**: -- `DaytonaError` - サンドボックスがエラー状態になった場合、またはタイムアウト内に起動できなかった場合 +* `DaytonaError` - サンドボックスがエラー状態になった場合、またはタイムアウト内に起動できなかった場合。 *** -#### waitUntilStopped() +#### waitUntilStopped() \{#waituntilstopped\} ```ts waitUntilStopped(timeout?: number): Promise ``` -サンドボックスが 'stopped' 状態に到達するまで待機します。 +サンドボックスが「stopped」状態になるまで待機します。 -このメソッドは、サンドボックスが 'stopped' 状態に到達するか -エラーが発生するまでステータスをポーリングします。 - -**パラメータ**: +このメソッドは、サンドボックスのステータスが「stopped」状態に到達するまで、 +またはエラーが発生するまでポーリングします。 -- `timeout?` _number = 60_ - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。 - 既定は 60 秒です。 +**パラメーター**: +* `timeout?` *number = 60* - 待機する最大時間(秒)。0 はタイムアウトなしを意味します。 + 既定は 60 秒です。 **戻り値**: -- `Promise` +* `Promise` **スロー**: -- `DaytonaError` - サンドボックスがタイムアウト内に停止できなかった場合 -## SandboxCodeToolbox +* `DaytonaError` - タイムアウト内にサンドボックスが停止しなかった場合に送出されます。 + +## PaginatedSandboxes \{#paginatedsandboxes\} + +**拡張:** + +**プロパティ**: + +* `items` *Sandbox[]* + +* `page` *number* + * *継承元*: `PaginatedSandboxes.page` + +* `total` *number* + * *継承元*: `PaginatedSandboxes.total` + +* `totalPages` *number* + * *継承元*: `PaginatedSandboxes.totalPages` + +* `Omit`<`PaginatedSandboxesDto`, `"items"`> + +## SandboxCodeToolbox \{#sandboxcodetoolbox\} コードツールボックスが実装すべきメソッドを定義するインターフェース -### Methods +### メソッド \{#methods\} -#### getRunCommand() +#### getRunCommand() \{#getruncommand\} ```ts getRunCommand(code: string, params?: CodeRunParams): string ``` -与えられたコードを実行するためのコマンドを生成します - -**Parameters**: - -- `code` _string_ -- `params?` _CodeRunParams_ +指定されたコードを実行するコマンドを生成します +**パラメーター**: -**Returns**: +* `code` *string* +* `params?` *CodeRunParams* -- `string` +**戻り値**: +* `string` diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/snapshot.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/snapshot.mdx index c34444cc8..adf48e824 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/snapshot.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/snapshot.mdx @@ -3,14 +3,13 @@ title: "スナップショット" hideTitleOnPage: true --- +## SnapshotService \{#snapshotservice\} -## SnapshotService +Daytona のスナップショットを管理するサービス。スナップショットの一覧表示、取得、作成、削除に使用できます。 -Daytona スナップショットを管理するためのサービス。スナップショットの一覧表示、取得、作成、削除に利用できます。 +### コンストラクタ \{#constructors\} -### Constructors - -#### new SnapshotService() +#### new SnapshotService() \{#new-snapshotservice\} ```ts new SnapshotService( @@ -19,39 +18,37 @@ new SnapshotService( objectStorageApi: ObjectStorageApi): SnapshotService ``` -**Parameters**: - -- `clientConfig` _Configuration_ -- `snapshotsApi` _SnapshotsApi_ -- `objectStorageApi` _ObjectStorageApi_ +**パラメータ**: +* `clientConfig` *Configuration* +* `snapshotsApi` *SnapshotsApi* +* `objectStorageApi` *ObjectStorageApi* -**Returns**: +**戻り値**: -- `SnapshotService` +* `SnapshotService` -### Methods +### メソッド \{#methods\} -#### activate() +#### activate() \{#activate\} ```ts -activate(snapshot: Snapshot): Promise +activate(snapshot: スナップショット): Promise<スナップショット> ``` スナップショットを有効化します。 -**Parameters**: - -- `snapshot` _Snapshot_ - 有効化するスナップショット +**パラメータ**: +* `snapshot` *スナップショット* - 有効化するスナップショット -**Returns**: +**戻り値**: -- `Promise` - 有効化された Snapshot インスタンス +* `Promise` - 有効化されたスナップショットのインスタンス *** -#### create() +#### create() \{#create\} ```ts create(params: CreateSnapshotParams, options: { @@ -64,15 +61,14 @@ create(params: CreateSnapshotParams, options: { **Parameters**: -- `params` _CreateSnapshotParams_ - スナップショット作成用のパラメータ。 -- `options` _作成処理のオプション。_ -- `onLogs?` _\(chunk: string\) =\> void_ - スナップショット作成時のログを処理するコールバック関数。 -- `timeout?` _number_ - 既定ではタイムアウトなし。秒単位(0 はタイムアウトなし)。 - +* `params` *CreateSnapshotParams* - スナップショット作成用のパラメータ。 +* `options` *作成操作のオプション。* +* `onLogs?` *(chunk: string) => void* - スナップショット作成時のログを処理するコールバック関数。 +* `timeout?` *number* - 既定値はタイムアウトなし。秒単位のタイムアウト(0 は無制限)。 **Returns**: -- `Promise` +* `Promise` **Example:** @@ -83,7 +79,7 @@ await daytona.snapshot.create({ name: 'my-snapshot', image: image }, { onLogs: c *** -#### delete() +#### delete() \{#delete\} ```ts delete(snapshot: Snapshot): Promise @@ -91,86 +87,107 @@ delete(snapshot: Snapshot): Promise スナップショットを削除します。 -**Parameters**: - -- `snapshot` _Snapshot_ - 削除するスナップショット +**パラメーター**: +* `snapshot` *Snapshot* - 削除するスナップショット -**Returns**: +**戻り値**: -- `Promise` +* `Promise` -**Throws**: +**スロー**: -スナップショットが存在しない、または削除できない場合 +スナップショットが存在しない、または削除できない場合に送出されます -**Example:** +**例:** ```ts const daytona = new Daytona(); const snapshot = await daytona.snapshot.get("snapshot-name"); await daytona.snapshot.delete(snapshot); -console.log("Snapshot deleted successfully"); +console.log("スナップショットが正常に削除されました"); ``` *** -#### get() +#### get() \{#get\} ```ts get(name: string): Promise ``` -名前を指定してスナップショットを取得します。 +名前でスナップショットを取得します。 -**Parameters**: - -- `name` _string_ - 取得するスナップショットの名前 +**パラメーター**: +* `name` *string* - 取得するスナップショットの名前 -**Returns**: +**返り値**: -- `Promise` - 要求されたスナップショット +* `Promise` - 要求されたスナップショット -**Throws**: +**スロー**: スナップショットが存在しない、またはアクセスできない場合 -**Example:** +**例:** ```ts const daytona = new Daytona(); const snapshot = await daytona.snapshot.get("snapshot-name"); -console.log(`Snapshot ${snapshot.name} is in state ${snapshot.state}`); +console.log(`スナップショット ${snapshot.name} の状態は ${snapshot.state} です`); ``` *** -#### list() +#### list() \{#list\} ```ts -list(): Promise +list(page?: number, limit?: number): Promise ``` -すべてのスナップショットを一覧表示します。 +スナップショットのページ分割一覧を取得します。 -**Returns**: +**パラメータ**: -- `Promise` - ユーザーがアクセス可能なすべてのスナップショットの一覧 +* `page?` *number* - ページ番号(1から) +* `limit?` *number* - 1ページあたりの最大件数 -**Example:** +**返り値**: + +* `Promise` - スナップショットのページ分割一覧 + +**例:** ```ts const daytona = new Daytona(); -const snapshots = await daytona.snapshot.list(); -console.log(`Found ${snapshots.length} snapshots`); -snapshots.forEach(snapshot => console.log(`${snapshot.name} (${snapshot.imageName})`)); +const result = await daytona.snapshot.list(2, 10); +console.log(`${result.total}個のスナップショットが見つかりました`); +result.items.forEach(snapshot => console.log(`${snapshot.name} (${snapshot.imageName})`)); ``` *** +## PaginatedSnapshots \{#paginatedsnapshots\} + +Daytona のスナップショットのページネーション対応リストを表します。 + +**プロパティ**: + +* `items` *Snapshot[]* - 現在のページに含まれるスナップショットの一覧。 +* `page` *number* - 現在のページ番号。 + * *継承元*: `Omit.page` +* `total` *number* - 全ページ合計のスナップショット数。 + * *継承元*: `Omit.total` +* `totalPages` *number* - 利用可能なページの総数。 + + * *継承元*: `Omit.totalPages` -## CreateSnapshotParams +**継承:** + +* `Omit`<`PaginatedSnapshotsDto`, `"items"`> + +## CreateSnapshotParams \{#createsnapshotparams\} ```ts type CreateSnapshotParams = { @@ -181,17 +198,16 @@ type CreateSnapshotParams = { }; ``` -新規スナップショットを作成するためのパラメータ。 - -**型宣言**: +新規スナップショット作成時のパラメータ。 -- `entrypoint?` _string\[\]_ -- `image` _string \| Image_ -- `name` _string_ -- `resources?` _Resources_ +**型定義**: +* `entrypoint?` *string[]* +* `image` *string | Image* +* `name` *string* +* `resources?` *Resources* -## スナップショット +## スナップショット \{#snapshot\} ```ts type Snapshot = SnapshotDto & { @@ -199,9 +215,8 @@ type Snapshot = SnapshotDto & { }; ``` -あらかじめ構成されたサンドボックスである Daytona のスナップショットを表します。 - -**型定義**: +事前に構成されたサンドボックスである Daytona のスナップショットを表します。 -- `\_\_brand` _"Snapshot"_ +**型宣言**: +* `\_\_brand` *"Snapshot"* diff --git a/apps/docs/src/content/docs/ja/typescript-sdk/volume.mdx b/apps/docs/src/content/docs/ja/typescript-sdk/volume.mdx index 24a0583fd..050e3345d 100644 --- a/apps/docs/src/content/docs/ja/typescript-sdk/volume.mdx +++ b/apps/docs/src/content/docs/ja/typescript-sdk/volume.mdx @@ -3,16 +3,15 @@ title: "ボリューム" hideTitleOnPage: true --- - -## VolumeService +## VolumeService \{#volumeservice\} Daytonaのボリューム(S3互換オブジェクトストレージをバックエンドとするFUSEベースの共有ストレージマウント)を管理するサービス。 このサービスは、ボリュームの一覧取得、参照、作成、削除の各メソッドを提供します。 -### Constructors +### Constructors \{#constructors\} -#### new VolumeService() +#### new VolumeService() \{#new-volumeservice\} ```ts new VolumeService(volumesApi: VolumesApi): VolumeService @@ -20,16 +19,15 @@ new VolumeService(volumesApi: VolumesApi): VolumeService **Parameters**: -- `volumesApi` _VolumesApi_ - +* `volumesApi` *VolumesApi* **Returns**: -- `VolumeService` +* `VolumeService` -### Methods +### Methods \{#methods\} -#### create() +#### create() \{#create\} ```ts create(name: string): Promise @@ -39,12 +37,11 @@ create(name: string): Promise **Parameters**: -- `name` _string_ - 新規ボリュームの名前 - +* `name` *string* - 新規ボリュームの名前 **Returns**: -- `Promise` - 作成されたボリューム +* `Promise` - 作成されたボリューム **Throws**: @@ -60,7 +57,7 @@ console.log(`Created volume ${volume.name} with ID ${volume.id}`); *** -#### delete() +#### delete() \{#delete\} ```ts delete(volume: Volume): Promise @@ -70,12 +67,11 @@ delete(volume: Volume): Promise **Parameters**: -- `volume` _Volume_ - 削除するボリューム - +* `volume` *Volume* - 削除するボリューム **Returns**: -- `Promise` +* `Promise` **Throws**: @@ -92,7 +88,7 @@ console.log("Volume deleted successfully"); *** -#### get() +#### get() \{#get\} ```ts get(name: string, create: boolean): Promise @@ -102,13 +98,12 @@ get(name: string, create: boolean): Promise **Parameters**: -- `name` _string_ - 取得するボリューム名 -- `create` _boolean = false_ - 存在しない場合に作成するかどうか - +* `name` *string* - 取得するボリューム名 +* `create` *boolean = false* - 存在しない場合に作成するかどうか **Returns**: -- `Promise` - 取得されたボリューム +* `Promise` - 取得されたボリューム **Throws**: @@ -124,7 +119,7 @@ console.log(`Volume ${volume.name} is in state ${volume.state}`); *** -#### list() +#### list() \{#list\} ```ts list(): Promise @@ -134,7 +129,7 @@ list(): Promise **Returns**: -- `Promise` - ユーザーがアクセス可能なすべてのボリュームの一覧 +* `Promise` - ユーザーがアクセス可能なすべてのボリュームの一覧 **Example:** @@ -147,8 +142,7 @@ volumes.forEach(vol => console.log(`${vol.name} (${vol.id})`)); *** - -## ボリューム(Volume) +## ボリューム(Volume) \{#volume\} ```ts type Volume = VolumeDto & { @@ -160,5 +154,4 @@ Daytona(サンドボックスを作成・管理するプラットフォーム **型定義**: -- `\_\_brand` _"Volume"_ - +* `\_\_brand` *"Volume"* diff --git a/apps/docs/src/content/docs/ja/volumes.mdx b/apps/docs/src/content/docs/ja/volumes.mdx index 165bf68ce..e27f1a853 100644 --- a/apps/docs/src/content/docs/ja/volumes.mdx +++ b/apps/docs/src/content/docs/ja/volumes.mdx @@ -5,114 +5,139 @@ title: ボリューム import Label from '@components/Label.astro' import { Tabs, TabItem } from '@astrojs/starlight/components'; -ボリュームは、サンドボックス間でファイルを共有してアクセスできる、FUSE ベースのマウントです。これにより、サンドボックスは大容量ファイルを即座に読み取れ、各サンドボックスへ手動でアップロードする必要がありません。ボリュームのデータは S3 互換のオブジェクトストレージに保存されます。 +ボリュームは、サンドボックス間でファイルを共有できる FUSE ベースのマウントです。これにより、サンドボックスは大容量ファイルを即座に読み取れ、各サンドボックスへ手動でアップロードする必要がありません。ボリュームのデータは S3 互換のオブジェクトストレージに保存されます。 -- 複数のボリュームを 1 つのサンドボックスにマウント可能 -- 1 つのボリュームを複数のサンドボックスにマウント可能 +* 複数のボリュームを 1 つのサンドボックスにマウントできます +* 1 つのボリュームを複数のサンドボックスにマウントできます -## ボリュームの作成 +## ボリュームの作成 \{#creating-volumes\} サンドボックスにボリュームをマウントする前に、先に作成しておく必要があります。 - -```bash -volume = daytona.volume.get("my-volume", create=True) -``` - - -```bash -const volume = await daytona.volume.get('my-volume', true) -``` - + + ```bash + volume = daytona.volume.get("my-volume", create=True) + ``` + + + + ```bash + const volume = await daytona.volume.get('my-volume', true) + ``` + -## ボリュームのマウント +参照: [volume.get(Python SDK)](/docs/python-sdk/sync/volume/#volumeserviceget)、[volume.get(TypeScript SDK)](/docs/typescript-sdk/volume/#get) -ボリュームを作成したら、`CreateSandboxFromSnapshotParams` オブジェクトで指定してサンドボックスにマウントできます: +## ボリュームのマウント \{#mounting-volumes\} - - -```python -import os -from daytona import CreateSandboxFromSnapshotParams, Daytona, VolumeMount - -daytona = Daytona() - -# 新しいボリュームを作成するか、既存のボリュームを取得する -volume = daytona.volume.get("my-volume", create=True) - -# ボリュームをサンドボックスにマウントする -mount_dir_1 = "/home/daytona/volume" - -params = CreateSandboxFromSnapshotParams( - language="python", - volumes=[VolumeMount(volumeId=volume.id, mountPath=mount_dir_1)], -) -sandbox = daytona.create(params) - -# サンドボックスの利用が終わったら、削除できます -# サンドボックスを削除しても、ボリュームは保持されます -sandbox.delete() - -``` +ボリュームを作成したら、`CreateSandboxFromSnapshotParams` オブジェクトで指定することでサンドボックスにマウントできます。ボリュームのマウントパスは次の要件を満たす必要があります: - - -```typescript -import { Daytona } from '@daytonaio/sdk' -import path from 'path' +* **絶対パスであること**: マウントパスは `/` で始まる必要があります(例:`/home/daytona/volume`) +* **ルートディレクトリは不可**: `/` や `//` にはマウントできません +* **相対パス要素を含まないこと**: `/../`、`/./` を含んだり、`/..` または `/.` で終わってはいけません +* **連続するスラッシュを使用しないこと**: 先頭を除き、`//` のような連続するスラッシュを含められません +* **システムディレクトリへのマウント禁止**: 次のシステムディレクトリは使用できません: + * `/proc`, `/sys`, `/dev`, `/boot`, `/etc`, `/bin`, `/sbin`, `/lib`, `/lib64` -async function main() { - const daytona = new Daytona() - - // 新しいボリュームを作成するか、既存のボリュームを取得する - const volume = await daytona.volume.get('my-volume', true) - - // ボリュームをサンドボックスにマウントする - const mountDir1 = '/home/daytona/volume' + + + ```python + import os + from daytona import CreateSandboxFromSnapshotParams, Daytona, VolumeMount + + daytona = Daytona() + + # Create a new volume or get an existing one + volume = daytona.volume.get("my-volume", create=True) + + # Mount the volume to the sandbox + mount_dir_1 = "/home/daytona/volume" + + params = CreateSandboxFromSnapshotParams( + language="python", + volumes=[VolumeMount(volumeId=volume.id, mountPath=mount_dir_1)], + ) + sandbox = daytona.create(params) + ``` + + + + ```typescript + import { Daytona } from '@daytonaio/sdk' + import path from 'path' + + const daytona = new Daytona() + + // Create a new volume or get an existing one + const volume = await daytona.volume.get('my-volume', true) + + // Mount the volume to the sandbox + const mountDir1 = '/home/daytona/volume' + + const sandbox1 = await daytona.create({ + language: 'typescript', + volumes: [{ volumeId: volume.id, mountPath: mountDir1 }], + }) + ``` + + - const sandbox1 = await daytona.create({ - language: 'typescript', - volumes: [{ volumeId: volume.id, mountPath: mountDir1 }], - }) - - // サンドボックスの利用が終わったら、削除できます - // サンドボックスを削除しても、ボリュームは保持されます - await sandbox1.delete() -} +参照: [CreateSandboxFromSnapshotParams(Python SDK)](/docs/python-sdk/sync/daytona#createSandboxBaseParams)、[CreateSandboxFromSnapshotParams(TypeScript SDK)](/docs/typescript-sdk/daytona#createSandboxBaseParams) -main() +## ボリュームの取り扱い \{#working-with-volumes\} -``` +ボリュームをマウントすると、サンドボックスのファイルシステム内の他のディレクトリと同様に読み書きできます。ボリュームに書き込まれたファイルは、個々のサンドボックスのライフサイクルを超えて保持されます。 - + + + ```python + # マウントしたボリューム内のファイルに書き込む + with open("/home/daytona/volume/example.txt", "w") as f: + f.write("Hello from Daytona volume!") + + # 作業が終わったらサンドボックスを削除できます + # サンドボックスを削除してもボリュームは保持されます + sandbox.delete() + ``` + + + + ```typescript + import fs from 'fs/promises' + + // マウントしたボリューム内のファイルに書き込む + await fs.writeFile('/home/daytona/volume/example.txt', 'Hello from Daytona volume!') + + // 作業が終わったらサンドボックスを削除できます + // サンドボックスを削除してもボリュームは保持されます + await daytona.delete(sandbox1) + ``` + -## ボリュームの削除 +## ボリュームの削除 \{#deleting-volumes\} -ボリュームが不要になった場合は削除できます。 +ボリュームが不要になったら、削除できます。 - -```python -volume = daytona.volume.get("my-volume", create=True) -daytona.volume.delete(volume) -``` - - -```typescript -const volume = await daytona.volume.get('my-volume', true) -await daytona.volume.delete(volume) -``` - + + ```python + volume = daytona.volume.get("my-volume", create=True) + daytona.volume.delete(volume) + ``` + + + + ```typescript + const volume = await daytona.volume.get('my-volume', true) + await daytona.volume.delete(volume) + ``` + -## ボリュームの操作 - -マウントされると、サンドボックスのファイルシステム内の他のディレクトリと同様に、そのボリュームへの読み書きが行えます。ボリュームに書き込まれたファイルは、個々のサンドボックスのライフサイクルを超えて保持されます。 - -## 制限事項 +## 制限事項 \{#limitations\} ボリュームはFUSEベースのマウントであるため、ブロックストレージへのアクセスを必要とするアプリケーション(データベースのテーブルなど)では使用できません。 ボリュームは、ローカルのサンドボックスのファイルシステムと比べて、読み取り・書き込みの両方の操作が一般的に遅くなります。 \ No newline at end of file diff --git a/apps/docs/src/content/docs/ja/webhooks.mdx b/apps/docs/src/content/docs/ja/webhooks.mdx index 3c8b70ae4..fa4ce146e 100644 --- a/apps/docs/src/content/docs/ja/webhooks.mdx +++ b/apps/docs/src/content/docs/ja/webhooks.mdx @@ -8,21 +8,21 @@ import { TabItem, Tabs } from '@astrojs/starlight/components' Webhooksは、特定のイベントが発生した際に、Daytonaが指定したエンドポイントへ送信するHTTPコールバックです。 いわば「逆方向のAPIコール」です。アプリケーション側がDaytonaに更新を問い合わせるのではなく、重要なイベントが発生するとDaytonaが能動的にアプリケーションへ通知します。 -## ユースケース +## ユースケース \{#use-cases\} Webhooks により、強力な自動化と統合が可能になります。 -- **リアルタイム通知**: サンドボックスの作成・起動・停止時に即時にアラートを受け取る -- **自動化ワークフロー**: スナップショット作成時にデプロイメントパイプラインを起動する -- **監視と分析**: 組織全体の利用傾向やリソース消費を追跡する -- **統合**: Daytona を Slack、Discord、カスタムアプリケーションなどの既存ツールと連携する -- **監査とコンプライアンス**: 重要な変更の詳細なログを保持する +* **リアルタイム通知**: サンドボックスの作成・起動・停止時に即時にアラートを受け取る +* **自動化ワークフロー**: スナップショット作成時にデプロイメントパイプラインを起動する +* **監視と分析**: 組織全体の利用傾向やリソース消費を追跡する +* **統合**: Daytona を Slack、Discord、カスタムアプリケーションなどの既存ツールと連携する +* **監査とコンプライアンス**: 重要な変更の詳細なログを保持する ---- +*** -## はじめに +## はじめに \{#getting-started\} -### Webhooks へのアクセス +### Webhooks へのアクセス \{#accessing-webhooks\} ダッシュボードのサイドバーに **Webhooks** が表示されていない場合は、[support@daytona.io](mailto:support@daytona.io) までご連絡のうえ、組織向けに Webhooks の有効化をリクエストしてください。アクセス申請の際は、組織設定で確認できる組織 ID を併せてご提供ください。 @@ -36,22 +36,22 @@ Webhooks により、強力な自動化と統合が可能になります。 Webhooks は、組織の管理者および適切な権限を持つメンバーが利用できます。 ::: ---- +*** -## Webhookエンドポイントの管理 +## Webhookエンドポイントの管理 \{#managing-webhook-endpoints\} -### エンドポイントの作成 +### エンドポイントの作成 \{#creating-endpoints\} Webhookイベントの受信を開始するには: 1. Webhookダッシュボードの**Endpoints**タブに移動します 2. **Add Endpoint**をクリックします 3. エンドポイントを設定します: - - **Endpoint URL**: イベントを受信するHTTPSエンドポイント - - **Description**: このエンドポイントの説明 - - **Subscribe to events**: 受信するイベントを選択 + * **Endpoint URL**: イベントを受信するHTTPSエンドポイント + * **Description**: このエンドポイントの説明 + * **Subscribe to events**: 受信するイベントを選択 -### エンドポイントのテスト +### エンドポイントのテスト \{#testing-endpoints\} 運用開始前に、Webhookエンドポイントをテストします: @@ -61,21 +61,21 @@ Webhookイベントの受信を開始するには: 4. エンドポイントがテストペイロードを正しく受信していることを確認します 5. アプリケーションがWebhookの形式を正しく処理できることを確認します ---- +*** -## 利用可能なイベント +## 利用可能なイベント \{#available-events\} Daytona は、インフラストラクチャ リソース全体のライフサイクルイベントについて Webhook を送信します。特定のイベントタイプに購読することも、すべてのイベントを受け取ってアプリケーション内でフィルタリングすることもできます。 -##### イベントカテゴリ +##### イベントカテゴリ \{#event-categories\} -- サンドボックスのライフサイクルイベント -- スナップショットのライフサイクルイベント -- ボリュームのライフサイクルイベント +* サンドボックスのライフサイクルイベント +* スナップショットのライフサイクルイベント +* ボリュームのライフサイクルイベント ---- +*** -## Webhook ペイロード形式 +## Webhook ペイロード形式 \{#webhook-payload-format\} すべての Webhook イベントは一貫した構造に従います。 @@ -91,18 +91,18 @@ Daytona は、インフラストラクチャ リソース全体のライフサ **共通フィールド:** -- `event`: イベントの種類(例: "sandbox.created") -- `timestamp`: イベント発生時刻(ISO 8601) -- `data`: 関連情報を含むイベント固有のペイロード +* `event`: イベントの種類(例: "sandbox.created") +* `timestamp`: イベント発生時刻(ISO 8601) +* `data`: 関連情報を含むイベント固有のペイロード ---- +*** -## 監視とアクティビティ +## 監視とアクティビティ \{#monitoring-and-activity\} -### アクティビティ +### アクティビティ \{#activity\} **アクティビティ** タブでは、配信統計、イベント量の推移、パフォーマンス指標など、Webhook のアクティビティを可視化して確認でき、Webhook 連携の健全性の監視に役立ちます。 -### イベントログ +### イベントログ \{#event-logs\} **ログ** タブには、トラブルシューティングおよび監視のために、イベント履歴、配信ステータス、再試行情報など、Webhook 配信に関する詳細が表示されます。 diff --git a/apps/docs/src/content/i18n/ja.json b/apps/docs/src/content/i18n/ja.json index d7451f56a..3772ccaac 100644 --- a/apps/docs/src/content/i18n/ja.json +++ b/apps/docs/src/content/i18n/ja.json @@ -1,4 +1,6 @@ { + "header.copyForLlms": "LLM 用のコピー", + "header.viewAsMarkdown": "Markdownで表示", "footer.needHelp": "お困りですか?", "footer.reachSupport": "サポートに連絡", "footer.latestUpdates": "最新のプロジェクト更新はありますか?", @@ -40,7 +42,7 @@ "sidebarconfig.snapshotsDescription": "Daytona SDK を使用してスナップショット(サンドボックス作成に使用する事前設定済みの再利用可能なイメージ/テンプレート)の作成、管理、削除方法を学びます。", "sidebarconfig.declarativeBuilder": "宣言的ビルダー", "sidebarconfig.declarativeBuilderDescription": "Daytona SDK を使用して、Docker/OCI 互換イメージからスナップショット(サンドボックス作成に使用する事前設定済みの再利用可能なイメージ/テンプレート)を動的に構築する方法を学びます。", - "sidebarconfig.volumes": "ボリューム(S3互換オブジェクトストレージをバックエンドとするFUSEベースの共有ストレージ)", + "sidebarconfig.volumes": "ボリューム", "sidebarconfig.volumesDescription": "Daytonaのサンドボックス(Daytonaが管理する隔離された一時的な実行環境)でボリューム(S3互換オブジェクトストレージをバックエンドとするFUSEベースの共有ストレージ)を管理する方法を学びましょう。", "sidebarconfig.accountManagement": "アカウント管理", "sidebarconfig.apiKeys": "APIキー", @@ -49,6 +51,8 @@ "sidebarconfig.organizationsDescription": "Daytona SDK を使用して、組織(Organization)の作成、管理、削除方法を学びましょう。", "sidebarconfig.limits": "制限", "sidebarconfig.limitsDescription": "組織に割り当てられた制限とティア。", + "sidebarconfig.rateLimits": "レート制限", + "sidebarconfig.rateLimitsDescription": "認証済みおよび匿名リクエストに対する API レート制限。", "sidebarconfig.billing": "請求", "sidebarconfig.billingDescription": "組織の請求管理。", "sidebarconfig.linkedAccounts": "リンク済みアカウント", @@ -66,20 +70,22 @@ "sidebarconfig.logStreamingDescription": "DaytonaのTS SDK / Python SDKを使用して、サンドボックス(Daytonaが管理する隔離された一時的な実行環境)からログをストリーミングする方法を学びましょう。", "sidebarconfig.computerUse": "コンピューター使用", "sidebarconfig.computerUseLinux": "Linux", - "sidebarconfig.computerUseLinuxDescription": "Linux環境でのコンピューター使用機能と自動化。", + "sidebarconfig.computerUseLinuxDescription": "Linux環境向けのコンピューター使用機能と自動化。", "sidebarconfig.computerUseWindows": "Windows", - "sidebarconfig.computerUseWindowsDescription": "Windows環境でのコンピューター使用機能と自動化。", + "sidebarconfig.computerUseWindowsDescription": "Windows 環境向けのコンピューター使用機能と自動化。", "sidebarconfig.computerUseMacOS": "macOS", - "sidebarconfig.computerUseMacOSDescription": "macOS環境でのコンピューター使用機能と自動化。", + "sidebarconfig.computerUseMacOSDescription": "macOS環境向けのコンピューター使用機能と自動化。", "sidebarconfig.other": "その他", "sidebarconfig.webTerminal": "Webターミナル", "sidebarconfig.webTerminalDescription": "Daytona サンドボックス(Daytonaが管理する隔離された一時的な実行環境)へのWebターミナルアクセス。", - "sidebarconfig.sshAccess": "SSHアクセス", - "sidebarconfig.sshAccessDescription": "Daytona サンドボックス(Daytonaが管理する隔離された一時的な実行環境)へのSSHアクセス。", + "sidebarconfig.networkLimits": "ネットワーク制限", + "sidebarconfig.networkLimitsDescription": "Daytona サンドボックスのネットワーク送信(egress)制限。", + "sidebarconfig.sshAccess": "SSH アクセス", + "sidebarconfig.sshAccessDescription": "Daytona のサンドボックスへの SSH アクセス。", "sidebarconfig.previewAuthentication": "プレビューと認証", "sidebarconfig.previewAuthenticationDescription": "プレビューURLと認証トークン。", - "sidebarconfig.customDomainAuthentication": "カスタムプレビュープロキシ", - "sidebarconfig.customDomainAuthenticationDescription": "プレビュー用プロキシを独自のドメインとロジックでカスタマイズします。", + "sidebarconfig.customDomainAuthentication": "カスタムドメイン認証", + "sidebarconfig.customDomainAuthenticationDescription": "\nプレビュー用プロキシを独自のドメインとロジックでカスタマイズします。\n", "sidebarconfig.auditLogs": "監査ログ", "sidebarconfig.auditLogsDescription": "Daytona の組織(組織全体)でのアクティビティを監視・追跡します。", "sidebarconfig.webhooks": "Webhook", @@ -95,6 +101,10 @@ "sidebarconfig.asyncDaytona": "AsyncDaytona", "sidebarconfig.asyncSandbox": "AsyncSandbox", "sidebarconfig.dataAnalysis": "AIによるデータ分析", - "sidebarconfig.pty": "擬似ターミナル (PTY)", - "sidebarconfig.ptyDescription": "DaytonaのTS SDK / Python SDKを使用して、サンドボックス(Daytonaが管理する隔離された一時的な実行環境)でPTYセッションを管理する方法を学びます。" -} + "sidebarconfig.ossDeployment": "オープンソース", + "sidebarconfig.deployments": "デプロイ", + "sidebarconfig.integrations": "インテグレーション", + "sidebarconfig.langchainIntegrations": "LangChain", + "sidebarconfig.pty": "擬似端末(PTY)", + "sidebarconfig.ptyDescription": "Daytona SDK を使用して、サンドボックス内の PTY セッションを管理する方法を学びましょう。" +} \ No newline at end of file diff --git a/apps/docs/src/data/i18n/ja.json b/apps/docs/src/data/i18n/ja.json index 20f96a4f1..5e1b4b2f1 100644 --- a/apps/docs/src/data/i18n/ja.json +++ b/apps/docs/src/data/i18n/ja.json @@ -1,9 +1,12 @@ { - "2e675b4cced33496.t": "div", - "2e675b4cced33496.i": 1, - "2e675b4cced33496.c.t": "a", - "2e675b4cced33496.c.i": 2, + "115c69de3202f664": "開く", + "28b93171152b0f3f": "daytona.io を検索", "2e675b4cced33496.c.c": "デモを申し込む", + "2e675b4cced33496.c.i": 2, + "2e675b4cced33496.c.t": "a", + "2e675b4cced33496.i": 1, + "2e675b4cced33496.t": "div", "43b449db9b205d7e": "スター", - "28b93171152b0f3f": "daytona.io を検索" + "baa1c84e5bb50ada": "Claudeで開く", + "c22d10be28202021": "ChatGPTで開く" } \ No newline at end of file diff --git a/gt-lock.json b/gt-lock.json new file mode 100644 index 000000000..c23d770e9 --- /dev/null +++ b/gt-lock.json @@ -0,0 +1,560 @@ +{ + "version": 1, + "entries": { + "2d7f8386cd5058546933b1d1e4650545": { + "04dd719a09ae4ac3fd22dbad16a8da5a3d68a665e827c027767e4e8e737adc2a": { + "29d3a6506204bc18279023b650dbc7ab53fd4a64da957f22f2499eba133ebea2": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.026Z" + } + } + }, + "0950917dd51b2457dacddc6b610e926609882aade09d9f76d984ae4b56933585": { + "fa89cf3945a7e48a8874e9db737e2b1fd6f951a0a9223569a65f0d7f93eddc6e": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.027Z" + } + } + }, + "1050309fb6fcafe1197c6e78edd4863f5a4b51efbc65c4734148a8557dc896ab": { + "6855f82bff2d1378b81dd83c9fd5e85e848e521c5cdc4786e244f8e8a0f98c8b": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.027Z" + } + } + }, + "1059984ab378a9081eff14787a89debc0e0b01f250eac2eae02a08c1eeeb5417": { + "65dc379b398271c8158207ebc85369f2af07d0688fe63e0d71bf4cde7bc345ed": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.027Z" + } + } + }, + "12c09797e9efffcf4dd5028089aa67f6c231eff6fc03bb4a0afcee81d52bbb06": { + "9b5875f0a23c1afb4df41f1cefdbb93d7ee9b3b30e7d806b76b7b3ed8fd42866": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.028Z" + } + } + }, + "1494bd71b788649341a89db89992a6b6e64f4762c05ee0967a99ebfd03151ec6": { + "ecde0e6f5daf2c11c9887bf53c793c7ae9e1cab63e61fe31a1dec83e7813eebc": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.028Z" + } + } + }, + "14cd971555cf23e125226817b5a533c138b2c0a08b85dac9239fa401ccbf72ac": { + "4545d0475c8a2ca30110557134f9638d97137523890e5ae5d821220f1b8ad544": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.028Z" + } + } + }, + "1bcca7ec28c828e5d925b17433261a21a42e4cf817317106e73397bab0d1c442": { + "93b8aaa530a59cf3a07c9166539f4ef76e5cfe73ee015edd0f0892bfbb5ea40d": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.028Z" + } + } + }, + "1bd3ffd43dacd9df2b8b6eff6cec6a788eb1c425f661913af396254f39328b4c": { + "b21a83767a13ffe36fa07258826f5d8adb265a7c3a9e3619bb3dde87e1d8c321": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.028Z" + } + } + }, + "1c359dd143567a07392c541dc92478aab5ad89a8a9e3e3ae531ac94f232b818a": { + "2389f03c168f79f8b8537be7abfe3a1efff039f378a2d35100431808ff414629": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.029Z" + } + } + }, + "1d56b3d97dc5e2e9601950a2b2133486ef510a9bc63214fc5d9691d950effbfb": { + "706500caa6a039fe898a7093f655a4033df46b7679799709f871c8bc651155a8": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.029Z" + } + } + }, + "230410ef935087b81ab60796f9619fb77a6bbd7406e376659ce51a65dd64150c": { + "507df9b3e1beea824fa5afb114af71d00929663edd7987c831c1ca6899c3f2aa": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.029Z" + } + } + }, + "242a888a7bb7b5de138a0f9de5c975cd3fe6b723baf876f41dab2d41b1fed196": { + "221f19a12104359b308d411bdd74e0aa4cc8e2b49161d901cf4f543bd7a36a5a": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.030Z" + } + } + }, + "269582762247137f4b2fdcdb70469a262f366d7bc63f6474dc51099a59cbe839": { + "44fe6f21c8887cf24c6faf1ba02e6beaf2868a9060818946582a01bf3bc5517a": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.030Z" + } + } + }, + "26da782456797d40dbfb3d48ca40c3e2254befa6dc8007f50ca82b299b756b91": { + "5dc6fb1a01e5ac5eb8daa01d494b1bfc90b0ecd38b418d13420e5e815077c196": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.030Z" + } + } + }, + "2844e0cc95da0931692f797c6af28fd78dec9e5fa51b3e92c57b52e008f66664": { + "853375e6505b16cb2dab41fdaa51b6e5ed39bc0b74ecadb7b947a72f531dc5fa": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.030Z" + } + } + }, + "2e53ab0c4707f005a55fa9a755b23a81b279d47e879db5756ade7d631d60fe03": { + "e108c5f8a30c93ba0a78f72d242c2cec4d4b8bf2867c6578d206884be0cdc72e": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.031Z" + } + } + }, + "33d137eaaa8ed81d18d0fc00cbfe57ad1c307232aaed7c8d76bd483271c497e8": { + "f9a588ebbb15e79910c6b0e3f86cce81f5e89aeb0c85c451b75d8ffd89bff900": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.031Z" + } + } + }, + "38f72339f4c890a5008cba111141949955c402e30b2265288007591ba5f81889": { + "c50cc98f023c01b6d921ea332e8d8788ae7a1fe82edb14644b613f26165c2736": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.031Z" + } + } + }, + "3a794e25f7d1a2ff3e9926ef2b124b871a2cdec5d8b7e677562195ce8b2103d6": { + "45db1037aa6362c50be2af67ca5284b362dbbe192f2dbe785d66947178961ea9": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.031Z" + } + } + }, + "3b291ea8e0be1c9d2de726aaa6ecdb43ceddbaaeb0e9743b2188d4550dd2d480": { + "7b667209e6bd682cc4dd3c79837b2435ee21b8576503ac564721fcfeac3edc82": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.031Z" + } + } + }, + "48fcf80c856a71c9b27fe93792bc98454c689b09bd807a03a1587c6e0bc898ae": { + "0296da69a19ccf71c69516c4517c7a3379356d6d7c570360c5ca7709a0acb202": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.032Z" + } + } + }, + "49d396d1c3b8ae5fe9ded5a0c7842c7b38df86d563f80a449d62c384bef063df": { + "7fe83c1d3f7df8c3c2d1acec4307d906b5f969f266032710dfe77bfb36cd3fc3": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.032Z" + } + } + }, + "4fc02427f5fe078cde1751c7a13b027c37921e037ad4be4458e1f2625d3fbc51": { + "1e4715378c7b55b2c73e58a457186458a2eb1b07a016534e7fba29ae20a43cbb": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.032Z" + } + } + }, + "526676bdf990dc66c2780614cd7322078b50805aa9da1d7594c0e3e61877ec91": { + "269d82ae519e7adefb55305e31eaeefffae464b4c23d5b792952698cbc06a258": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.032Z" + } + } + }, + "618a86dd5da9f2721e314bd935edbfccbd27ccba54713d760dedbcb0e8dac9f6": { + "9468e50192b904794b7578dfe313e8b53668171a580d30b242f774c43d9bcea1": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.033Z" + } + } + }, + "703a65cf7585e8338e016d44acb8bd519df857c14073c27de5190c39d0104476": { + "24169a892f58769c76c5e34afaca291b65d43d694fac9a4c3df68326a05d9ab5": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.033Z" + } + } + }, + "721fc9f0235d08ead593310138ffbf86fea0e59920bc4f79a69916dbb49f0ca7": { + "6040eff697583254eecbf285ab0ca736096a738e84427edf7abed587d1e48818": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.033Z" + } + } + }, + "726be7577ea51870e6255972eddb9fe6e7fbebf6e43ad2f514f1b74398a50d8f": { + "14fed009ca4b7fc82848f0d70a0e470eacd3520f5557483c480078ecfa3e08a7": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.033Z" + } + } + }, + "750e428d3cb1cd95aed2dd4fb603dcd46fcd96a97d1cd347a1f896ce69955540": { + "4b57309412e1f28797242bfca5eb746c3a9b2cdff434636c6edc2f5efe48de3d": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.034Z" + } + } + }, + "7f2139c85b29f65f3f537711594c49280c6f041228eead1bb8a7d61ed5b88e7d": { + "afd464b6c50c5cbcb2c8543d774d1c14dbdc74ecd193254cf3696b64d09a0538": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.034Z" + } + } + }, + "92fe86d3de7788474125bc827c35898951a969793b3cd0069e26e7cf6c7d3647": { + "1e118a4be9aa204553e5fbb86131eb74f940dc7a6109b3c836daa7fe008fa6a4": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.034Z" + } + } + }, + "9e07f085c9c62d50e5b1d37ad63c49c71fd441cc8429a0ba2854543cf65c16cd": { + "35a6dddbfa95af41d7a945e5b4469e87607938c3d6ad9909b2b8fdd2f34331fd": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.034Z" + } + } + }, + "a04f63eeaed6da7cf75e39c005bca3fe0502da4ac113f33140f93f59a645aca4": { + "3f0d3fa930fbd024fb48b28c1226577899e67c58340378348aa8abed65165d62": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.035Z" + } + } + }, + "a07d3fb588477cf4f9d2f615c22b99999d59807a51fe91ae0d1541f05d9010dc": { + "78770506a38841e17829c8cb22e95b905d7b7c8551c2473c5dae0fe3cd5d843a": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.035Z" + } + } + }, + "a192907af43df4b7c73acca29e5a0657391f6aa095d26f764269eb585551bae9": { + "6c692289032523c6799367bac2c0c2a0b6e1e8e661d5500fe91bb8453f60a81d": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.035Z" + } + } + }, + "a3c7f22428634c640edc7e98556a9005a68092440bd07ca2637ed621446cb6e5": { + "ea4fd1e69459f2f91010ccfdbcc02810334785d1d1dcf55ffb9de4d86f43b73c": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.035Z" + } + } + }, + "b055cc5337399df5938c0b07bd046361045fd26398e340c1e779c883056e4b87": { + "f61ecf794f94797084ef078046cb4a2fe36bc0d56de606444f6b087c35397481": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.035Z" + } + } + }, + "b08697c09984ada3e213784998bfeba3c9581addcae311ff5e41c883eb26fe02": { + "f8454a05f45ae9eaa5b9c46b8a3b8cbcbeb82acc9556237355c3307e325f86df": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.036Z" + } + } + }, + "b9c9bfa049ddf1501ef9f7d74013d31287d020dcceb34da4f94b8eef45046bf5": { + "301f2add9675d14b86ce03192ac892435a74714e8d72e2909c93ae49f522ea72": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.036Z" + } + } + }, + "ba5e0358dc8a84c4eb815843b21ccc73ab7e72614846a5ba96afce905d68abc1": { + "c69244b918a7c3d14f2b978ae249bce92f6287598cbc4a373b64528abda9597a": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.036Z" + } + } + }, + "c1ad390f68ad61d06e0e2a6b51007ac14536e4f5a8f2b7f17351227a9987a872": { + "3f4fab5dd637a24f61808d90a33fd17fbfe37eb4d1805b57f74e56da94fcfc64": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.036Z" + } + } + }, + "c66dc3619b5578bd8314a0cedec3e12f3854565039068a4cd8ffb089eaa24dfe": { + "5efce78642879dfdc288f3f9ae9c786aa7d2e2fc59c7a882cc60acaad442f7de": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.036Z" + } + } + }, + "c84c6b6c2c7fd21ee9640edd2eb17fc879be3df6b29ee5082bcf6c9c505b5ed4": { + "e4b33867f6a4c3ccf7513789683d41ee20fa2fd49e1184bb7a794cbc2509cc3f": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.037Z" + } + } + }, + "d0e7fbbdad9d32e9328517e0e9e897505e97c3ae3b59acd5dc840d0e9ac491ec": { + "60de870430c725bc01c4f949901c3e5880360635f6856d39e23bfe9d42f0d7ac": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.037Z" + } + } + }, + "d1e208acb3745c587e57a3ef47eb936d3237fa301fc55b1ad347ebc36e501d40": { + "a23cde456ba357b6dc685e18f511087e76af4cd106019470811b254027d92860": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.037Z" + } + } + }, + "d4ef3d1617a8f964a1ffc7e998e2139ac7314ab50a04f05eb014efc02354ae0f": { + "b293e2e97dbe5eebc17002678d748ab7e06d4bed7aa84366a374b99744ebbc8a": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.037Z" + } + } + }, + "d786cfa83dbef5a6885062376cdf8dbde8fa4a8d9910dd3eb854f64358069b23": { + "7dfec02b548f8f753f4dcd01fc818e3a84a93b68612aeb13dd24ee2ddc59072d": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.037Z" + } + } + }, + "da6cd8d16042262fe1d5856b6c99115f5fddc3fc77407d3aaf38c5a4808c980c": { + "bffaee32b21bb312f9a0ad8e3753225623480669ba124f3a5dcaac5d8810b7e5": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.038Z" + } + } + }, + "ddd646dab2ab2be13d5493c5c8a0e0a0b96de59312e20c6df64e8177645ea3e6": { + "494e3f7aed556db6290452aa04632940be61adc89d3473101967aa66e756dbee": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.038Z" + } + } + }, + "ddf0ef96b4de91f689117bafb6cfb94cfb00a09e841af5d10095fe7c24cbb877": { + "c9947cbac60ddb753aaa743e73f28d7e71a2866c809f2b1663dbd1da2011ac63": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.038Z" + } + } + }, + "e332e8764051cbcf04d2027d6a4ff0eb02eaceb5c29ae45b504db3fee71a1eef": { + "f862520e15ee50ae0875d8ba4dc5f10088ce4e75cb4e23e15318addc20d5dbf2": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.038Z" + } + } + }, + "e5fe638ef9d1f03434c52348f95b58d4a076b64afb59727eb60e796e0518b3f0": { + "866f8da18c59b791517498c3b1b9a021d685d5cd67f26dca5f2d5bc604ac70c3": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.039Z" + } + } + }, + "e6f654265f07c25320bb68775d3b5c3fdd6df07aea378d5ae70cc18df1119b35": { + "3455b0f812a6b253c3433ad494e749590e06248103555b5195d3fdc0f8964b9a": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.039Z" + } + } + }, + "e948ef548611d36fda97672870c2694d9c91fc2e8df7af8f07ee67d4be7988d6": { + "7750bc042f08ebd4546e8849052bd7cd65b38b22ea671b3ca935c1d3545b17a2": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.039Z" + } + } + }, + "ea201fab7093e7d06eeb780a0012b8ef5826842c5b75e37b6cc18185d99b92db": { + "e49406f558a7c415e6b978c03e5e87909d400832c8a071e98d033fa99030531b": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.039Z" + } + } + }, + "edb562d28c0e0a3f8a4ac30a26de71acba6b68512fba34d53edeeb6e2884efdf": { + "ea6734bddecc0275a6d097be4fb7df44d4c82d915743aff4dce8d68673153a87": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.039Z" + } + } + }, + "ee528e15a752873317f03001bafe1dfbc9a36be21835aa7d8d6e1ffc1bc83ba4": { + "7ff1e138942b7c1fc8395bf2efffe99e6db591403b9e6d0f3e0e33ac295a87ba": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.040Z" + } + } + }, + "eedb05552f79736b78a852ff49f0b4de981740bb29b08884a36d5b87aa3d820c": { + "f0bd98011dfa3573131941780684c6432a9a13524b8cc0fbee94c44c44846e50": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.040Z" + } + } + }, + "f453f2e78778f8ef4ab3966a4c2998e6159727f33ae2d6cd1b93cb4a1cabcc44": { + "6be5c3035140848a8b712b19d464470d895f69a174e22474fe1c4d7b639f9ae0": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.040Z" + } + } + }, + "f4b73b1fc016027701c2e402744aab135bda572d8d230af8adcb638e709b3ab3": { + "5d4e1051c5f9a80a40a34db290f6a2fb576003c89570f45546f3e591e1c530d4": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.040Z" + } + } + }, + "fbc7cf9c3bcc330db2e3aa2c1e332539e982093c460a2355688537b640eb19d0": { + "a08c2c93d8b89d2c6edd635299fc72c0d9a4a2de8e6b8e7e8e95ee9acdbd92cd": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.040Z" + } + } + }, + "fc122709891cf470c45f6aff332d0e1e6a8b222ca830f870307e90163023dd27": { + "4823d0e624e406103acb96f09d09fa241312f2e27a28a0de48a1c9a70c6dbbc6": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.041Z" + } + } + }, + "feb9d005ad4cbcbd404a03ff60dff79dae20ed8bda528e7d2e39fec75a663720": { + "d277de640ed0542d1bb5f4ac27dd2df76517d9a17c9dc879866c8190ebe5a7a1": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.041Z" + } + } + }, + "4dc49b86c8dd4f3ca3250001a9b339fd507a343c190de139f671533384bfaa15": { + "3ccdc0c1d0dc6db6d0cd42415f377807c51fc5a2f9e176042d8ad9b4dc8109f5": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.041Z" + } + } + }, + "5b8a39c1ba26c4d87badc2f4a0c6ee37ee9851e15b7fef7b7953c4a1e714bf8b": { + "a2764729a1f90bbee0d048027bb7a8c97212e1e9c9ca0a50646a79bf441cfb76": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.041Z" + } + } + }, + "5f779969be7e8a1b7b87acf3dbfcdefe1f8a14523547497086dfa0e1778dd722": { + "e4f8ec716c7230e4caf6523ee1d94c39716dd1f0992ee1e01225dd95571c0caa": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.041Z" + } + } + }, + "7c6219bb21f91a7d36726033fb9ba1c9c5161b40264fc2255dcb955146d5e292": { + "03cab14fade784a63d1abcabe6941fa860c011f8c2b174e6033858999e432c26": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.042Z" + } + } + }, + "879f3a5f954ee8b75bf1e91f4ea9916b41c933e5beba7eb6362647a637c9c66d": { + "3c6469d4d7d6305a67125117e78d21b37ec3aed70d76495a582a69dbed985f78": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.042Z" + } + } + }, + "897dea4d79635400e8ceb68bb542973f6738c11ac7222d2dacf612dbb36835e6": { + "58717cb7c295ad5c52fbea7d07bed13545ab3cb4f5763ea2edc8c57b92c276c6": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.042Z" + } + } + }, + "94598858a846f3a11f0efc10dede3f3c080f9ef63fe68d9c87cf0431e6881a1e": { + "65056cd443786ca6dbc114b782c1820f6ed958ebadf6732b5eba5de80461666f": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.042Z" + } + } + }, + "c1d134820ad3b8cd2175f3edc9d05028b81ec3297207143e240a0d80f7e03985": { + "44dd90824b89ea53200676658bd2c332002aeef4fd73d0769137c9529d1c98b2": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.043Z" + } + } + }, + "c7055252a08f201157fae29027720470cd5f8c1eabb2840a375a1a6ee01e4ec7": { + "cf2c76053e6084b9c5b64cd24b5110114117d30651bd524bbc7f8836f5178084": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.043Z" + } + } + }, + "db9432eb2f873240098603aecb246f0820967da59179ecfdb517b88a98582543": { + "5cdb78a1b1861020007275488426745e9660fcb9fda70e56edbfe36926289574": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.043Z" + } + } + }, + "e29c5663d68b5ab077effe87bd64d985da3bbd39b3fe25b2974dea51150809f7": { + "eb796afdbb01d51f6e0757944b1c152726f102e01a2716e58f48d884c70fd8c0": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.043Z" + } + } + }, + "e9920b9abceebb7f66cc415e76f4b57b464a3f00d472557ee010cb4087f486a1": { + "201393528d66c83398d4d135ef2c21bfd2125238b5ff06fd8a6f5a66eb92984e": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.043Z" + } + } + }, + "eb2b411b078ef61ec2c2658c01eef9c54ca1b3c03195ecae42da93cf2fab0118": { + "28347822abaf5512526bdb13a3e0b1533984c9278438953a4759b6d2ae0d94c9": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.044Z" + } + } + }, + "eca78e321979d7ad22ab00a99154c77016052e1560613c5e824ca4a9aec33afe": { + "6e88df3ea6d7c0aa37be78203de869d802db7bf2472fd370eedd9160256bd1b2": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.044Z" + } + } + }, + "f9f48c80750f8a4dbbfd8b8a75db772e91bfbe46df83a2da733aba4107f3e49b": { + "21bea9c868ed8f1c301ef347b61160af11ef34b1eb235b3d5e7146eaa3ce1b17": { + "ja": { + "updatedAt": "2025-11-21T15:24:58.044Z" + } + } + } + } + } +} \ No newline at end of file