ドキュメント
地域発展
API プロセス、データ ディレクトリ、およびクライアント モードを明示的に選択します。
英語から自動翻訳されています。 英語の原文を見る
開発プロセス
完全なデスクトップ開発セッションでは、Rust シェル、Bun サイドカー、および Vite が実行されます。シェルはネイティブ機能を提供し、サイドカーを監視します。 Vite は Webview アセットとホット リロードを提供します。 bun run desktop:dev これらのプロセスを開始する前に、バイナリ リソースと移行リソースを準備します。
画面の作業を高速化するには、デスクトップを実行します dev 脚本だけ。 App.tsx tauri の外部でのみ、かつ次の場合にのみ、インメモリ プレビュー API を選択します。 VITE_SIDECAR_URL は不在です。サポートされていない API コレクションのプレビューが失敗すると、501 が返されることが予想されます。永続化、認可、ストリーミング AI、サーバー サービスにはライブ サイドカーを使用します。
CADCAMFUN_TOKEN=local-development-token CADCAMFUN_DATA_DIR=/tmp/cadcamfun-development CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle" bun --no-env-file apps/sidecar/src/main.ts 上記のトークンは、分離されたローカル開発プロセスの例です。独自の値を選択してください。 Keep stdin open: closing it stops the sidecar. The server prints one JSON ready イベント後の一時的なポート /api/health 応答します。ログは標準エラー出力に保存されます。
VITE_SIDECAR_URL=http://127.0.0.1:43111 VITE_SIDECAR_TOKEN=local-development-token bun run --filter @cadcamfun/desktop dev ポート 43111 をイベント準備完了ポートに置き換え、実行前にそのサイドカーに提供されたトークンを使用します。 Vite uses port 1420 with strict port selection, matching the Tauri development URL.サイドカーにより、HTTP ローカルホスト/ループバック上のブラウザ CORS オリジンとサポートされている Tauri オリジンが許可されます。保護されたルートに対しては適切な許可が必要です。
データ ディレクトリと移行
サイドカーが開きます <CADCAMFUN_DATA_DIR>/cadcamfun.db。 Tauri は独自のアプリケーション データ ディレクトリを選択し、それを子に渡します。手動プロセスでは、指定したディレクトリが使用されます。これらのデータベースは、ファイル名が同じであっても独立しています。
CLI 移行スクリプトは次のようになります。 DATABASE_URL その他の用途 ./data/cadcamfun.db 作業ディレクトリからの相対パス。根 db:migrate 中で走る packages/db。意図的な CLI 操作には絶対ファイル URL を選択してください。ログに表示される相対ファイル名からターゲットを推測しないでください。
DATABASE_URL=file:/tmp/cadcamfun-cli/cadcamfun.db bun run db:migrate スキーマ変更の原因は次のとおりです packages/db/src/schema.ts。走る bun run db:generate、生成された移行を確認し、まずそれを分離されたデータベースに適用します。サイドカーが使用するのは、 CADCAMFUN_MIGRATIONS_DIR 提供された場合。パッケージ化されたビルドは、生成されたディレクトリをリソースとしてステージングします。
データベース層では、WAL と外部キーが有効になります。既存のファイルの移行が必要な場合、アップグレード パスはそのファイルの横にバックアップを作成します。 backups/ 最新の 5 つの一致する自動バックアップが保持されます。最初の作成、変更されていないスキーマ、およびインメモリ データベースでは、アップグレード バックアップは作成されません。手動リカバリ操作の前に、データを個別に保存します。
対象を絞ったチェック
bun run --filter @cadcamfun/core typecheck
bun test packages/core
bun run --filter @cadcamfun/desktop typecheck
bun test apps/desktop/src/viewport
bun run --cwd packages/web check
bun run --cwd packages/web build 変更された境界でチェックを選択します。純粋なジオメトリの変更にはジオメトリ アサーションが必要です。 API コントラクトの変更には、生成されたクライアントのチェックと影響を受けるハンドラーが必要です。永続性の変更にはリポジトリと移行のテストが必要です。 UI インタラクションの変更には、関連するコンポーネントとランタイム フローが必要です。根 test スクリプトに含まれるもの packages, apps、 そして scripts.
ネイティブ シェル チェックは次から実行されます。 apps/desktop/src-tauri と cargo clippy --all-targets -- -D warnings そして cargo test。 Tauri のビルド コンテキストにはこれらのリソースが含まれているため、最初にターゲットのサイドカーと移行をステージングします。オペレーティング システムの統合テストには、ネイティブ デスクトップとキーチェーンが必要になる場合があります。
ランタイム構成
apps/sidecar/src/config.ts サイドカー構成レイヤーを所有します。必須入力は次のとおりです CADCAMFUN_TOKEN そして CADCAMFUN_DATA_DIR. CADCAMFUN_MIGRATIONS_DIR 移行リソースを選択します。デフォルトの AI ホストは次のとおりです。 nikcli; CADCAMFUN_AI_HOST=direct 直接通話を選択し、 CADCAMFUN_AI_OFFLINE オフライン/テスト操作をサポートします。
オプションの構成には、アプリケーション URL と開発認証リンク、Stripe 資格情報と価格識別子、管理者/cron 設定、および OTEL_EXPORTER_OTLP_ENDPOINT。関連するプロバイダー構成がなければ、課金は利用できません。テレメトリのエクスポートは、コレクター エンドポイントなしではオフになっています。フローに必要な入力のみを指定します。
ブラウザのエンドポイント変数は Vite 設定であり、サイドカー設定ではありません。コンパニオン ペアリングには、異なるトークンと HTTPS アドレスが含まれます。スタンドアロンのアクションブリッジ トークンには、独自の有効範囲と有効期間があります。これらの資格情報を相互に置き換えないでください。
明示的なプロセス構成またはアプリケーション設定を使用します。サンプルのサイドカー コマンドは、Bun の環境ファイルのロードを無効にします。実際のトークン、モデル キー、ペアリング リンク、またはログやドキュメントの例の署名資料を決して印刷しないでください。
効果とリソースの所有権
リポジトリは効果をピン留めします 4.0.0-rc.112。サービスの利用 Context.Service、実装はレイヤーを通じて提供され、操作は型指定されたエフェクトを返します。インストールされたものを使用します effect/ai-docs/src この API (不安定な HTTP モジュールを含む) を変更する場合は、ドキュメントを参照してください。
外部入力を境界でデコードします。外部例外を型付きエラーにマッピングし、安定したエラー タグを保持し、スコープ レイヤーにデータベース ハンドル、ワーカー、ストリーム、およびサーバー リソースを所有させます。サイドカーのシャットダウン フローは、親シャットダウン イベント、stdin クロージャ、およびランタイム中断を処理します。ログとプロトコルの標準出力は異なる宛先を持ちます。
コア CAD/CAM 計算は、計算ホット パス内の単純な機能のままです。境界でのラッピング検証では、すべてのジオメトリ操作をエフェクト内に入れる必要はありません。コアのジオメトリ単位規則を使用して、適切なエッジで表示/エクスポート変換を実行します。描画角度にはラジアンが使用されます。一部のフィーチャー パラメーターと CAM 回転軸の値では、明示的に度が使用されます。
起動時のトラブルシューティング
- 占領されたバイト港: ポート 1420 を解放するか、既存の開発サーバーを停止します。厳密なポート モードは、別のポートをサイレントに選択しません。
- ブートは再試行を繰り返します: サイドカーの準備完了/エラー出力と移行パスを検査します。アプリは接続バジェットが残っている間にエンドポイントを再解決します。
- サーバーはただちに終了します。 必要な構成と、起動プロセスが標準入力を閉じたかどうかを確認してください。
- 不足しているプロジェクト: データ ディレクトリ、API エンドポイント、アプリが偽のクライアントを使用しているかどうかを確認します。
- 401 の応答: クライアントが以前の起動ではなく現在のプロセスのトークンを使用していることを確認します。
- ブラウザ プレビューの 501: その API コレクションには実際のサイドカーを使用します。
- ネイティブ コンテキストのビルドが失敗します: サイドカー バイナリと移行リソースを正しいターゲットにステージングします。
ドキュメントとコンパニオンの開発
bun run --cwd packages/web start アストロを一人で運営している。 bun run --cwd packages/web dev astro とローカル Studio API を開始します。ドキュメント チェックでは、ルート インデックスが検証されます。ビルドでは、Astro のコンパイルとプリレンダリングが検証されます。
iOSの場合、 bun run --cwd apps/mobile start カスタム開発クライアントの Metro を開始します。 bun run --cwd apps/mobile ios ネイティブ アプリを構築/実行します。 build javaScript のみをエクスポートします。ネイティブピンニングにはローカルの Swift モジュールが必要であり、Expo Go では実行できません。
bun scripts/build.ts --help に、リリース パイプラインのオプションを示します。 --only=resources 再構築せずに移行を再実行します。 --dry-run 何も書かずに計画を印刷します。
プロセス構成リファレンス
| 変数 | Default/requirement | 使用 |
|---|---|---|
CADCAMFUN_TOKEN | 必須 | シェルまたは開発ランチャーによって提供されるベアラー トークン。 |
CADCAMFUN_DATA_DIR | 必須 | サイドカー データベースとアプリケーション サービスの状態。 |
CADCAMFUN_MIGRATIONS_DIR | オプション | 生成された移行のフォルダー。フォルダーが指定されていない場合、データベース層は移行をスキップします。 |
CADCAMFUN_AI_HOST | nikcli | nikcli 組み込みホストまたは direct AI が呼び出します。 |
CADCAMFUN_AI_OFFLINE | 間違い | オフライン/テスト AI 動作;現地代替モデルではありません。 |
CADCAMFUN_AI_MINIMAX_BASE_URL | 設定を解除する | オプションの組み込みホスト MiniMax エンドポイント オーバーライド。 |
CADCAMFUN_APP_URL | 設定を解除する | 認証リンクで使用されるアプリケーションの起点。 |
CADCAMFUN_DEBUG_LINKS | 間違い | 開発認証応答はリセット/マジック リンクを公開する可能性があります。 |
OTEL_EXPORTER_OTLP_ENDPOINT | 設定を解除する | 構成時にテレメトリのエクスポートを有効にします。 |
VITE_SIDECAR_URL, VITE_SIDECAR_TOKEN | 設定を解除する | ブラウザの WebView 接続。実際のサイドカーには両方が必要です。 |
DATABASE_URL | CLI 固有のデフォルト | サイドカー構成とは独立したデータベース移行/生成ツールのターゲット。 |
ブール入力は、任意の文字列の真実性ではなく、エフェクト設定によってデコードされます。明示的な true/false 値を使用します。不明な AI ホスト リテラルはデコードに失敗します。プロセスを作成する前に構成を指定します。親端末変数を変更しても、すでに実行中のサイドカーは更新されません。
明示的なデータベースに対して Studio を使用する
ローカル Studio API はループバック ポート 4396 をリッスンします。そのパスの優先順位は、 CADCAMFUN_DB、 それから DATABASE_URL と file: プレフィックスを削除してからリポジトリルートを削除 data/cadcamfun.db。これは、データベース パッケージのデフォルトの CLI 作業ディレクトリ パスとは異なります。既存のデータベースを開くだけであり、自動的にデータベースを作成/移行することはありません。
DATABASE_URL=file:/tmp/cadcamfun-studio/cadcamfun.db bun run db:migrate
CADCAMFUN_DB=/tmp/cadcamfun-studio/cadcamfun.db bun run --cwd packages/web dev 最初のコマンドはファイルを初期化します。 2 つ目は、そのパスに対して Studio と Astro を起動します。新しく移行されたスキーマには、単に存在するという理由だけでユーザー/パスワード セッションが含まれるわけではありません。 Studio のサインインには適切なアカウントが必要です。認証されたリクエストは Studio セッション Cookie を使用し、有効なセッションなしで 401 を返します。
ファイルが見つからない場合、Studio API は選択されたパスを含む 503 を返します。 Astro がコンパニオン Studio プロセスなしで実行される場合、プロキシ /studio/api リクエストはポート 4396 に到達できません。ドキュメント ページ自体は次の方法で開発できます。 packages/web start studio を起動せずに。
実装アンカー: packages/web/script/dev.ts, script/studio-server.ts, astro.config.mjs, packages/db/src/migrate.ts、 そして apps/sidecar/src/config.ts.
反復可能な開発ループ
- 使い捨てのサイドカー データ ディレクトリと明示的な移行フォルダーを選択します。
- インタラクティブ ターミナルでサイドカーを開始し、ready イベントからポートを記録します。
- 一致する URL/トークンを使用して別のターミナルで Vite を起動するか、監視対象サイドカーを使用してネイティブ アプリを開きます。
- 1 つのアクションを再現し、その応答と永続的な状態を検査します。
- バックエンドを変更するには、サイドカーを再起動し、ポートが変更された場合はブラウザー エンドポイントを更新し、アクションを繰り返します。
- 通常の割り込みまたは親シャットダウン パスを使用してプロセスを停止し、リソースをファイナライズします。
サイドカーは、HTTP スコープを短時間ドレインし、WAL にチェックポイントを設定し、通常のスコープ付きシャットダウン時に SQLite を閉じます。そのパスを使用せずにプロセスを強制終了すると、実行中の作業が中断される可能性があります。ソース編集は、すでに Tauri によって監視されているコンパイル済みバイナリを置き換えるものではありません。コンパイルされた動作をテストするときにサイドカーを再構築します。
コンパイル済みランタイム検証の場合、 scripts/smoke-sidecar.ts 選択したバイナリを、分離されたホーム/データ ディレクトリとオフライン AI で実行できます。準備/状態/アクションの動作を測定し、カーネル ジョブを実行します。それなし --binary 最初に一時的な実行可能ファイルをコンパイルするため、ビルド コストを計画します。その結果はソースレベルのテストとは別のものです。
どのプロセスがどこで実行されるか
| 指示 | 始まります | データディレクトリ | データベース |
|---|---|---|---|
bun run desktop:dev | コンパイルされたサイドカー + Tauri 開発ウィンドウ | Tauri が選択したアプリケーション データ ディレクトリ | <dataDir>/cadcamfun.db |
手動サイドカー (bun apps/sidecar/src/main.ts) | サイドカーのみ、エフェメラル ループバック ポート上 | CADCAMFUN_DATA_DIR | <dataDir>/cadcamfun.db |
bun run db:migrate | 移行スクリプト | — | DATABASE_URL または packages/db/data/cadcamfun.db |
bun run --filter @cadcamfun/web studio | ローカルスタジオ | — | CADCAMFUN_DB, DATABASE_URL または data/cadcamfun.db |
bun run --filter @cadcamfun/web dev | ドキュメントサイト | — | — |
4 つの異なるデータベースのデフォルト
これらのエントリ ポイントはデフォルトのパスを共有しません。同じファイルを調べるために 2 つのツールが必要な場合は、パスを明示的に設定します。
変更タイプによる内部ループ
| あなたは変わりました | 走る |
|---|---|
カーネルコード packages/core | bun test packages/core |
での契約 packages/api | bun run generate, bun run generate:check、サイドカー テスト、次にドキュメント generate:api-reference |
| サイドカー ハンドラーまたはサービス | bun test apps/sidecar |
| スキーマ | bun run db:generate、新しい移行フォルダーをコミットし、 bun scripts/build.ts --only=resources |
錆びる src-tauri | cargo clippy そして cargo test で apps/desktop/src-tauri |
| ドキュメントページ | bun run typecheck そして bun run build で packages/web |