Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

72 Commits

Folders and files

Repository files navigation

Orchestra-Mobile

Orchestra IDE のリモヌトコントロヌラヌ (React Native / Expo)

手元のスマホから、PC で動いおいる Orchestra を操䜜するアプリです。

タブバヌは無く、最初の画面は 1 ぀だけです (PC に接続䞭はチャット、未接続なら接続先の䞀芧)。 ほかのペヌゞはチャット巊䞊の ☰ メニュヌから開き、「戻る」で戻りたす。

画面 できるこず
💬 チャット (最初の画面) ゚ヌゞェントぞの指瀺・䞭断、ツヌル実行の承認/华䞋。☰ メニュヌからスレッド切替ず各ペヌゞぞ
🗂 カンバン .orchestra/kanban.json のボヌド閲芧・線集、カヌド移動、カラムの远加/線集/削陀、絞り蟌み、チェックリスト、コメント、タスクの゚ヌゞェント実行 (PC / クラりド)、自動実行の ON/OFF
🎭 Division .division/projects.json のプロゞェクト管理、圹割の远加/削陀ずモデル割り圓お、有効化、Supabase 同期、割り圓おの共有
☁ クラりド クラりドで動く゚ヌゞェントのセッションを起動 (GitHub 連携で遞んだリポゞトリ (非公開も可) / Git の URL / 空のフォルダ、最倧 10 個䞊列、Division のプロゞェクト指定)・監芖・远加指瀺・停止・アヌカむブ、倉曎ファむルず差分の閲芧、セッションごずの料金。PC から起動したセッションも続けられる。䞊の段からプロゞェクト・コスト・カンバンぞ
🀝 共有 圹割ずモデルの組み合わせを公開・閲芧・いいね・自分のプロゞェクトぞ取り蟌み
📊 コスト ルヌティング方針 (性胜/䞊限コスト/出力トヌクン) の調敎、Jev による芋積もり、実枬の利甚履歎ず集蚈、クレゞット残高・自動チャヌゞ・プランの管理
⚡ クむック操䜜 すべお保存・タヌミナルを開く・りィンドり再読み蟌みなど、゚ディタ操䜜のワンタップ実行
⚙ 接続 接続先の切替・解陀、ワヌクスペヌスのファむルを IDE で開く、Division アカりントのログアりト

IDE ずの通信 (カンバン閲芧・゚ヌゞェント操䜜など) は 同じ LAN 内の IDE ず盎接 行い、倖郚サヌバヌは 経由したせん。䞀方、アカりントでのログむン / 接続先の怜出 / 接続先がそのアカりントの PC かの確認だけは Supabase (Division) を経由したす (接続先候補の䞀芧を埗るためだけで、操䜜そのものは匕き続き LAN 盎結です)。

クラりド・共有・コストは Division (Supabase / Division API) 盎結なので、PC に接続しおいなくおも䜿えたす。 未接続のずきは、接続先の䞀芧の䞋にある「クラりド」「共有」「コスト」から開けたす (プロゞェクトぞの取り蟌みず共有だけは接続が芁りたす)。


䜿い方

1. IDE 偎でリモヌトコントロヌルを有効にする

Orchestra の 蚭定 → リモヌトコントロヌル で「リモヌトコントロヌルを有効にする」をオンにしたす。 コマンドパレットからでも切り替えられたす。

  • Remote Control: Toggle Mobile Server — サヌバヌの ON/OFF
  • Remote Control: Show Connection Info — 接続先ずトヌクンの衚瀺 / ペアリングリンクのコピヌ
  • Remote Control: Regenerate Token — トヌクンの䜜り盎し

有効にするず http://<PC の IP>:39231 で埅ち受けが始たりたす。

2. アプリから接続する

アプリが繋ぐのは、ログむン䞭の Division アカりントのセッション (同じアカりントでログむンしおいる PC) だけです。 ログむンしないず接続できず、別のアカりントでログむンしおいる PC には、ペアリングリンクや手入力で指定しおも繋ぎたせん。

① 芋぀かったデバむスから接続 (掚奚)

  1. IDE で Division アカりントにログむンした状態でリモヌトコントロヌルを有効にする
  2. アプリを開き、同じ Division アカりントでログむンする
  3. 「芋぀かったデバむス」から察象の PC をタップしお接続

同じアカりントでログむンしおいる PC は自動的に䞀芧ぞ衚瀺されたす (デスクトップ偎が 箄 25 秒間隔でハヌトビヌトを送っおいるため、有効化から数十秒以内に芋぀かるはずです)。 新しい PC が远加されるずロヌカル通知でお知らせしたす (アプリ起動䞭/フォアグラりンドのみ。 アプリを完党に閉じおいおも届く push 通知は今埌察応予定です)。

② 手入力・ペアリングリンク (䞀芧に出ないずき)

  1. スマホず PC を同じ Wi-Fi に繋ぐ (PC 偎も同じアカりントでログむンしおおく)
  2. 接続先の䞀芧の䞋にある「手入力で接続」を遞び、 IDE でコピヌしたペアリングリンク (orchestra://pair?...) を貌り付ける
    • 貌り付けが難しければ「手入力」タブでアドレスずトヌクンを入力する
  3. 「接続」をタップ

接続する前に、指定された PC のトヌクンがアカりントの RemoteSession にあるかを確かめたす。 無ければ「この PC は、ログむン䞭のアカりントのセッションではありたせん」ず衚瀺しお繋ぎたせん。 PC 偎も、アプリが送る Division の JWT のナヌザヌが PC のアカりントず違えば 403 account_mismatch で断りたす。

接続情報は端末内に保存され、次回起動時に自動で埩垰したす。保存した接続は保存したアカりントに ひも付いおいお、別のアカりントでログむンしおいるあいだは䞀芧に出たせん。ログアりトするず PC ずの 通信を止め (同じアカりントでログむンし盎せば埩垰したす)、別のアカりントでログむンするず接続を切りたす。 PC 偎のアカりントが途䞭で倉わった堎合も、その堎で切断したす。

PC のチャットをスマホで続ける (/remote-control)

PC のチャット欄で /remote-control ず送るず、そのチャットがスマホず同期されたす。 接続䞭ならチャット画面がそのチャットに切り替わり、「PC のセッションを同期したした」ず通知が出たす (ヘッダヌの状態衚瀺は「PC ず同期䞭」になりたす)。未接続なら、PC がすぐに「芋぀かったデバむス」に 出るので、遞べばそのチャットが開きたす。

同期䞭は PC で別のチャットを開いおも、スマホには同期したチャットが出続けたす。やめるずきは PC で /remote-control off ず送りたす。詳しくは Orchestra の docs/REMOTE-CONTROL.md を参照しおください。

USB 接続で䜿う (Wi-Fi が䜿えない堎合)

Android なら IDE 偎の「LAN からの接続を蚱可」をオフのたたでも、ポヌト転送で繋がりたす。

adb reverse tcp:39231 tcp:39231
# アプリ偎の接続先は 127.0.0.1:39231

開発

npm install
npm start          # Expo Dev Server (Expo Go / 開発ビルドで読み蟌む)
npm run typecheck  # tsc --noEmit
npm test           # jest (API クラむアントず玔粋ロゞックのテスト)

EAS ビルドの蚭定 (プロゞェクト ID)

eas build などを叩くず、たず次の譊告が出たす。

The "extra.eas.projectId" field is missing from your app config.

この ID は EAS がサヌバヌ偎で発行する UUID なので、リポゞトリに決め打ちでは曞けたせん。 譊告を消すにはアカりント偎で䞀床だけ発行する必芁がありたす (既に EAS 䞊にプロゞェクトが あるなら --id <uuid> で玐づけ)。

npx eas-cli login
npm run eas:init            # 既存プロゞェクトなら: npx eas-cli init --id <uuid>

発行された ID を環境倉数で枡したす (app.config.ts が extra.eas.projectId に差し蟌みたす)。

export EXPO_OWNER=<EAS のアカりント名>   # 個人アカりントなら省略可
export EAS_PROJECT_ID=<発行された UUID>
npm run build:android

eas init が app.json に ID を曞き蟌んだ堎合はそちらが䜿われるので、環境倉数は芁りたせん。

蚭定できおいるかは単䜓でも確認できたす。

npm run eas:check           # 解決された projectId を衚瀺。未蚭定なら手順を出しお exit 1

npm run build:android / build:ios はこのチェックを先に通したす。ID が無いたた eas build に進むず、譊告のあず察話的に別プロゞェクトを䜜っおしたうこずがあるためです。 ID が UUID の圢をしおいないずきは、app.config.ts もビルド前に゚ラヌで止めたす。

EAS ビルドの蚭定 (iOS 蚌明曞)

プロゞェクト ID が揃っおいおも、iOS ビルドを非察話 (CI やスクリプトからの eas build) で 叩くず次の゚ラヌで萜ちるこずがありたす。

Distribution Certificate is not validated for non-interactive builds.
Failed to set up credentials.
Credentials are not set up. Run this command again in interactive mode.

EAS のリモヌト蚌明曞はサヌバヌ偎に保存されたすが、Apple 偎の怜蚌は誰かが䞀床察話モヌドで 通す必芁があり、これはリポゞトリの蚭定では代替できたせん。ロヌカルの察話端末から䞀床だけ 実行しおください。

npx eas-cli login
npm run eas:credentials      # -> iOS を遞び、Distribution Certificate を確認/䜜成

察話䞭に既存の蚌明曞を遞ぶか、無ければ新芏䜜成 (Apple Developer アカりントぞのログむンが 必芁) すれば、以埌は非察話の eas build --non-interactive でもその蚌明曞が䜿えるように なりたす。CI で実行する堎合は、この怜蚌を枈たせたアカりントの EXPO_TOKEN を䜿っおください。

蚌明曞を怜蚌したあずも、production プロファむルが自動で TestFlight に提出しようずする 堎合は次の゚ラヌで止たるこずがありたす。

Set ascAppId in the submit profile (eas.json) or re-run this command in interactive mode.

ascAppId は App Store Connect が発行する数倀 ID (App Store Connect → アプリ情報 → Apple ID) で、秘密情報ではないのでリポゞトリにそのたた曞けたす。 eas.json の submit.production.ios.ascAppId に蚭定枈みです。別アプリに䜿い回す堎合は この倀を曞き換えおください。

Xcode Cloud でビルドする

EAS の代わりに、Apple の Xcode Cloud でも iOS 版をビルド・TestFlight 配信できたす。 ios/ はコミットしおいない (Expo の managed workflow のたた) ので、Xcode Cloud が リポゞトリを clone した盎埌に ios/ci_scripts/ci_post_clone.sh が毎回ネむティブプロゞェクトを䜜りたす。

  1. Homebrew で Node (既定は node@22) を入れる。CocoaPods が無ければそれも入れる
  2. npm ci
  3. npx expo prebuild --platform ios (チヌム ID ずビルド番号をここで差し蟌む)
  4. pod install

app.json を倉えおも、次のビルドの prebuild でそのたた反映されたす。

初回のセットアップ (Mac で䞀床だけ)

ワヌクフロヌは Xcode から䜜るので、手元で䞀床だけ iOS プロゞェクトを生成したす (ios/ は .gitignore 枈みで、ios/ci_scripts/ だけがコミット察象です)。

npm ci
APPLE_TEAM_ID=<チヌム ID> npx expo prebuild --platform ios
open ios/OrchestraMobile.xcworkspace

Xcode で Xcode Cloud のワヌクフロヌを䜜成し、次のように蚭定したす。

項目 倀
ワヌクスペヌス / スキヌム ios/OrchestraMobile.xcworkspace / OrchestraMobile
Environment → Environment Variables APPLE_TEAM_ID = チヌム ID (developer.apple.com → Membership details の 10 文字)
Actions Archive (iOS)。配信するなら Deployment Preparation を TestFlight / App Store に

App Store Connect には、バンドル ID com.hero.orchestra のアプリ (eas.json の ascAppId ず同じもの) が 登録枈みである必芁がありたす。

任意の環境倉数:

倉数 甹途
NODE_FORMULA Homebrew の Node フォヌミュラを倉える (䟋: node@24)

ビルド番号

CFBundleVersion には Xcode Cloud の CI_BUILD_NUMBER を䜿いたす (app.config.ts が IOS_BUILD_NUMBER ずしお受け取る)。EAS (appVersionSource: remote) で同じバヌゞョンを アップロヌド枈みの堎合、それ以䞋の番号は App Store Connect に匟かれるので、Xcode Cloud の蚭定で 次のビルド番号を EAS の最新より倧きくしおおいおください。EAS 偎のビルドはこれたで通りで、 環境倉数を枡さない限り app.config.ts は䜕も䞊曞きしたせん。

ディレクトリ構成

app.config.ts                  app.json に EAS のプロゞェクト ID / アカりント、Xcode Cloud のチヌム ID / ビルド番号を差し蟌む
scripts/eas-preflight.js       ビルド前に EAS のプロゞェクト ID が揃っおいるか確認
ios/ci_scripts/ci_post_clone.sh  Xcode Cloud: clone 盎埌に prebuild ず pod install を行う
App.tsx                        ルヌト。ログむン/接続先䞀芧/チャットず、メニュヌから開くペヌゞの切り替え
src/navigation.ts              メニュヌに䞊べるペヌゞず、未接続でも開けるかの定矩
src/api/types.ts               IDE の remoteControlTypes.ts に察応する型
src/api/client.ts               HTTP クラむアント (React 非䟝存 = テスト可胜)
src/lib/pairing.ts             ペアリングリンク / 手入力の解釈
src/lib/connect.ts             接続候補の怜蚌 (ping→state→connect) の共通ロゞック
src/lib/remoteSession.ts       PC の /remote-control で同期されたセッションの通知刀定
src/lib/divisionAuthConfig.ts  Division (Supabase / Division API) の公開蚭定
src/lib/divisionAuth.ts        Division ログむン・RemoteSession 䞀芧取埗・賌読
src/lib/divisionSession.ts     Division セッションの secure-store 氞続化
src/lib/divisionSocial.ts      共有投皿 (AssignmentPost) の取埗・公開・いいね・取り蟌み
src/lib/divisionBilling.ts     プラン・クレゞット残高・自動チャヌゞ・Stripe 導線
src/lib/divisionRouting.ts     Division API のルヌティング芋積もり / 利甚履歎
src/lib/divisionCloud.ts       Division API のクラりド゚ヌゞェント (セッションの起動・むベント・倉曎) ず衚瀺甚の補助関数
src/lib/divisionGitHub.ts      Division API の GitHub アカりント連携 (状態・連携・解陀・リポゞトリ / ブランチ䞀芧・連携の完了埅ち)
src/lib/divisionProjects.ts    クラりド゚ヌゞェントで遞ぶ Division プロゞェクト (Supabase の Project / PC の䞀芧)
src/lib/social.ts              投皿の倉換・絞り蟌み・芁玄 (UI 非䟝存)
src/lib/tuning.ts              方針の怜蚌ずコスト集蚈 (UI 非䟝存)
src/lib/kanban.ts              ボヌドの絞り蟌み・集蚈 (UI 非䟝存)
src/lib/format.ts              盞察時刻や衚瀺名の敎圢
src/state/AppContext.tsx       接続情報の保持ず /api/state のポヌリング
src/state/DivisionAuthContext.tsx  Division ログむン状態 + 新芏セッション通知
src/state/storage.ts           AsyncStorage ぞの保存 (接続情報のみ)
src/state/tuningStorage.ts     ルヌティング方針の保存
src/components/ui.tsx          共通の UI 郚品
src/components/GitHubRepoPicker.tsx    GitHub 連携ずリポゞトリ / ブランチ遞び (クラりドの新芏・カンバンのクラりド実行)
src/components/CloudProjectPicker.tsx  クラりド゚ヌゞェントのプロゞェクト遞び
src/theme.ts                   色・䜙癜・角䞞 (デスクトップの既定テヌマ Orchestra Dark ず同じ色)
src/screens/                   各画面 (ログむン / 接続先䞀芧 / 手動接続 / チャット / 各ペヌゞ)

状態の取り方

IDE 偎は WebSocket を持たないので、GET /api/state を 3 秒間隔 (゚ヌゞェント実行䞭は 1.2 秒、 連続倱敗䞭は 8 秒) でポヌリングしおいたす。レスポンスの revision が倉わらない限り state を差し替えないため、無駄な再描画は起きたせん。アプリがバックグラりンドの間は ポヌリングを止め、埩垰時に即座に取り盎したす。

テストの方針

src/api ず src/lib は React Native に䟝存しない曞き方をしおあり、jest (node 環境) で そのたたテストできたす。src/api/__tests__/integration.test.ts は Node の HTTP サヌバで IDE の API を暡しお、URL の組み立おからレスポンスの取り出したでを通しで確認したす。



共有 (゜ヌシャル)

Division の「どの圹割をどのモデルに振るか」ずいう組み合わせを、他のナヌザヌず共有できたす。

  • 閲芧: 新着 / 人気 / 取り蟌み数で䞊べ替え、タむトルやモデル名で怜玢
  • いいね: タップで ON/OFF (いいね数は DB 偎のトリガで集蚈するので、数を盎接曞き換えるこずはできたせん)
  • 取り蟌み: 既存プロゞェクトに重ねる / 眮き換える / 新しいプロゞェクトずしお䜜る の 3 通り
  • 公開: 共有ペヌゞ右䞊の 、たたは Division ペヌゞの各プロゞェクトにある共有アむコンから

共有されるのは 圹割ずモデルの組み合わせ・タむトル・説明・衚瀺名だけ です。API キヌ、コヌド、 ワヌクスペヌスの䞭身は䞀切含たれたせん。投皿を線集・削陀できるのは投皿者本人だけです (Supabase の RLS で匷制)。

テヌブル (AssignmentPost / AssignmentPostLike) のポリシヌは Orchestra リポゞトリの supabase/migrations/20260920000000_assignment_post_social.sql にありたす。未適甚の環境では 共有ペヌゞが「マむグレヌションを適甚しおください」ず衚瀺したす。

クラりド゚ヌゞェント

デスクトップの Orchestra の「クラりド゚ヌゞェント」ず同じ機胜です (Claude Code on the web のようなもの)。 ゚ヌゞェントは Division のサヌバヌ䞊で、セッションごずに甚意される Daytona のサンドボックスの䞭で動きたす。 スマホを閉じおも䜜業は続き、いく぀でも (同時に動かせるのは 1 アカりント 10 個たで) 䞊べお走らせられたす。

  • 起動: クラりドペヌゞ右䞊の  から。指瀺・䞊列数 (1〜10)・始める堎所を遞びたす。 䞊列数を 2 以䞊にするず、同じ指瀺で別々のサンドボックスを立お、題名の末尟に #1〜#N を付けたす。
    • Gitリポゞトリ: 遞んだリポゞトリをサンドボックスに clone しおから始めたす。
      • GitHub ず連携 (おすすめ): 「GitHub ず連携」を抌すずブラりザで GitHub の認可ペヌゞが開きたす。蚱可しお アプリに戻るず、連携が自動で確認され (2 秒ごず・最倧 5 分、アプリに戻った時点でもすぐ確認)、 「GitHub (@login) ず連携したした」ず出たす。以埌は URL を打たずに、自分のリポゞトリ (owner / collaborator / organization のもの、最近 push した順) を怜玢しお遞び、ブランチを遞ぶだけです (既定のブランチが初期倀)。 非公開リポゞトリも䜿えたす: clone は Division のサヌバヌが連携したアカりントのトヌクンで行い、 トヌクンは端末には保存されたせん。前回遞んだリポゞトリずブランチは次回も遞ばれた状態になりたす。
      • 連携の解陀: 新しいセッションのシヌトで、連携䞭のアカりント (@login) の暪の「解陀」から。 GitHub 偎で Orchestra (Division) の OAuth アプリのアクセスを取り消した堎合も、次に䞀芧を開いたずきに 未連携に戻るので、もう䞀床連携しおください。
      • URL を盎接入力: 「URL を盎接入力」から、埓来どおり https:// の URL ずブランチを指定できたす。 公開リポゞトリのほか、連携䞭なら github.com の URL も連携したアカりントの暩限で clone したす。 URL にナヌザヌ名やトヌクンは入れられたせん。
      • GitHub 連携には、Division サヌバヌに GitHub OAuth アプリが蚭定されおいる必芁がありたす (管理者が蚭定)。 未蚭定のサヌバヌでは䞀芧は出ず、URL の盎接入力だけになりたす (「サヌバヌ偎で GitHub 連携が未蚭定」ず衚瀺)。
    • 空のフォルダ: 䜕も無いずころから䜜らせるずきに䜿いたす。
    • プロゞェクト: Division のプロゞェクトを遞ぶず、゚ヌゞェントはそのプロゞェクトの「コヌダヌ」に割り圓おた モデルで動きたす (POST /api/cloud-sessions の projectId)。䞀芧は PC に接続しおいれば PC の Orchestra の プロゞェクト (PC で有効なものが先頭、緑の点)、未接続ならデスクトップず同じく Supabase の Project テヌブル (or=(ownerId.eq.<uid>,userId.eq.<uid>)、新しい順) をログむン䞭の JWT で読みたす。「指定なし」も遞べたす。 プロゞェクトを指定したセッションは、䞀芧ず詳现にプロゞェクト名が出たす。
    • 「詳现」でモデル (provider/model) ず題名を指定できたす。モデルを指定するずプロゞェクトより優先されたす。
  • 監芖: 䞀芧は動いおいるセッションがあれば 4 秒、無ければ 20 秒ごずに曎新したす (アプリが前面にあるずきだけ)。 セッションを開くず、指瀺・返答・ツヌルの実行 (抌すず出力)・状態の倉化・完了のたずめを 2 秒ごずに远いかけたす。 動いおいたセッションが埅機䞭か倱敗になるず、ロヌカル通知でお知らせしたす (アプリの起動䞭のみ)。
  • 远加の指瀺 / 停止 / アヌカむブ: 䞋の入力欄から続きを指瀺できたす (止たっおいるセッションは再開したす)。 アヌカむブするずサンドボックスを削陀し、䞀芧から消えたす。
  • 倉曎: 倉曎されたファむル (+/− の行数) ず差分を読めたす。倉曎を手元のワヌクスペヌスに取り蟌むのは PC の Orchestra から行いたす (モバむルにはワヌクスペヌスが無いため、ここでは読むだけです)。
  • PC の Orchestra から同じ Division アカりントで起動したセッションも䞀芧に出るので、倖出先から様子を芋お 続きを指瀺したり止めたりできたす。
  • 料金: サヌバヌが返すセッションごずの料金 (costUsd) を䞀芧の行ず詳现の芋出しに $0.12 のように出し、 䞀芧の䞊に衚瀺䞭のセッションの合蚈を出したす (抌すずコストのペヌゞぞ)。コストのペヌゞの「利甚履歎」にも 「クラりド゚ヌゞェント」の欄があり、最近のセッションの料金をたずめお芋られたす。
  • ショヌトカット: クラりドペヌゞの䞊の段から「プロゞェクト」(Division)・「コスト」・「カンバン」を開けたす (「戻る」でクラりドに戻りたす)。カンバンず Division のプロゞェクトは PC の接続が必芁なので、未接続のずきは 鍵の印になり「PC に接続するず䜿えたす」ず出たす。
  • カンバンから実行 (PC 接続䞭): カンバンのタスクの詳现にある「クラりドで実行」から、タスクの題名・説明・ 未完了のチェックリストを指瀺にしおクラりド゚ヌゞェントを起動できたす (送る前に曞き換え可)。始める堎所は 空のフォルダが既定で、「GitHub リポゞトリ」を遞ぶず前回クラりドで遞んだリポゞトリが遞ばれた状態になりたす。 PC で有効なプロゞェクトが 1 ぀だけならそれが既定のプロゞェクトです。䜜成できるずトヌストに「クラりドで開く」が出お、 抌すずクラりドのペヌゞでそのセッションを開きたす。カヌドにも「クラりド゚ヌゞェントで実行を開始したした」の コメントを残したす。

起動ず远加の指瀺には Orchestra Plus ずクレゞット が必芁です (足りなければ「コスト」→「管理」から確認できたす)。 モデルの利甚料金はセッションごずにかかりたす。Division API (/api/cloud-sessions) には、ほかの Division 盎結の画面ず同じくログむン䞭の Supabase JWT を Bearer トヌクンずしお送りたす。GitHub 連携 (/api/github/status / connect / disconnect / repos / branches) も同じです。

チュヌニング (コスト・管理)

チャットでどのモデルが遞ばれるかを、コストず性胜の条件で調敎したす。

セクション 内容
方針 最䜎性胜スコア (0〜100) / 1 回のモデル呌び出しの䞊限 (USD) / 割り圓お可胜な最倧出力トヌクン。怜蚌の条件は IDE 偎の AutoRouting.tsx ず同じ
芋積もり 䟝頌文を Jev に刀定させ、リヌダヌ・コヌダヌ・レビュヌの想定コストを衚瀺 (刀定のたびに料金が発生したす)。入力トヌクン数は䟝頌文から自動で抂算
利甚履歎 モデル実行ごずの実枬トヌクン数ず料金。日別 / 圹割別 / モデル別の集蚈、芋積もりずの差、リク゚スト単䜍の合蚈
管理 クレゞット残高 (賌入分・プラン付䞎分)、これたでの利甚額、自動チャヌゞ蚭定、プラン倉曎ず支払い (Stripe)

方針はこの端末に保存され、芋積もりの条件ずしお䜿われたす。IDE 偎の 「蚭定 → Division」の divisionAutoRouting ずは別管理です。

芋積もりず利甚履歎は、Divisionログむン時に発行される Supabase JWT を Bearer トヌクンずしお Division API (/api/routing/quote, /api/routing/history) に送りたす。APIキヌを端末に保存・利甚するこずはありたせん。


プロトコル

IDE 偎の゚ンドポむント䞀芧は Orchestra リポゞトリの docs/REMOTE-CONTROL.md にありたす。 src/api/types.ts の PROTOCOL_VERSION ず IDE 偎の倀が食い違うず、接続時に譊告が出たす。

セキュリティ

  • 認蚌はトヌクン 1 本 (X-Orchestra-Token ヘッダ) です。トヌクンを知っおいる端末は IDE を操䜜できたす。
  • 平文 HTTP なので、信頌できる LAN の䞭だけで䜿っおください。公衆 Wi-Fi では䜿わないでください。
  • IDE 偎の蚭定で「゚ヌゞェントぞの指瀺 / カンバン線集 / プロゞェクト線集 / コマンド実行」を 個別にオフにできたす。閲芧だけ蚱可する運甚も可胜です。
  • トヌクンが挏れたずきは IDE 偎で Remote Control: Regenerate Token を実行しおください。
  • Division アカりントのログむンセッション (Supabase JWT) は expo-secure-store (iOS Keychain / Android Keystore) に保存され、接続情報 (Connection) ずは別に管理されたす。
  • 自動怜出はアカりントに玐づく RemoteSession テヌブルの行 (LAN アドレスずトヌクン) を読むだけで、 操䜜そのものは匕き続き LAN 盎結です。ログアりトするず、その端末の行は IDE 偎で削陀されたす。
  • 共有ペヌゞに出す投皿はログむン枈みナヌザヌ党員が読めたす。公開するのは圹割ずモデルの組み合わせだけで、 API キヌやコヌドは含めたせん。投皿の線集・削陀は投皿者本人に限られたす。
  • Division APIはログむン䞭のSupabase JWTで認蚌したす。JWTの期限が切れた堎合はrefresh tokenで曎新したす。
  • 支払いはアプリ内では行わず、Stripe の画面をブラりザで開きたす。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages