@minimalcorp/tsunagi 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
- package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
- package/.next/standalone/apps/web/.next/prerender-manifest.json +3 -3
- package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/_05n88to._.js +3 -0
- package/.next/standalone/apps/web/.next/server/chunks/ssr/_0g.cd6a._.js +2 -2
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{_0kflgfj._.js → _0pw3_r_._.js} +3 -3
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{_0g79jqo._.js → _0rb6-mo._.js} +3 -3
- package/.next/standalone/apps/web/.next/server/chunks/ssr/_0ts4rpp._.js +3 -0
- package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_src_app_settings_page_tsx_0i6itlb._.js +2 -2
- package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_src_app_tasks_[id]_page_tsx_0jshsm2._.js +3 -3
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_04pfam-._.js → node_modules_03-rvdo._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0cv326~._.js → node_modules_06jdmu~._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0a57phw._.js → node_modules_0925te2._.js} +2 -2
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0_huoqd._.js → node_modules_0e8uni7._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0tod6y8._.js → node_modules_0h4h_aw._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0h.vgyn._.js → node_modules_0nzbb9~._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0oip5a1._.js → node_modules_0q8yuvq._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_11-z65a._.js → node_modules_0r6t2tu._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_09d2oqj._.js → node_modules_0t6ysh_._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0krwgny._.js → node_modules_0vj~e_v._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0sn0lqb._.js → node_modules_0vq~hzy._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0l23gkf._.js → node_modules_0xzmx-x._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0npujym._.js → node_modules_0yb2sh9._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0q_5qo~._.js → node_modules_0yc~s8p._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0q_xfyl._.js → node_modules_0zi-gfw._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0ak_3rk._.js → node_modules_0zzdoud._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0xp9nhx._.js → node_modules_0~aiu12._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
- package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
- package/.next/standalone/apps/web/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/apps/web/.next/static/chunks/09b_3duxnyfto.js +7 -0
- package/.next/standalone/apps/web/.next/static/chunks/{0z60ewb40i2ce.js → 0gxhy80~c0gvp.js} +1 -1
- package/.next/standalone/apps/web/.next/static/chunks/0i9h-39w91ybd.js +6 -0
- package/.next/standalone/apps/web/.next/static/chunks/{0b90ys7wq-p.4.css → 0pm0knaijueoc.css} +1 -1
- package/.next/standalone/apps/web/.next/static/chunks/{16cbfrtkn0.kw.js → 0smdykrt42e.5.js} +10 -10
- package/.next/standalone/apps/web/.next/static/chunks/{149sia28cskw9.js → 0yp~t_.pozr-d.js} +6 -6
- package/.next/standalone/apps/web/.next/static/chunks/{0o6ggm7jrim25.js → 14zh2vf8ljbxo.js} +1 -1
- package/.next/standalone/apps/web/.next/static/chunks/{06yhoqamnoyq-.js → 1624992q-gpj2.js} +10 -10
- package/.next/standalone/apps/web/package.json +1 -0
- package/README.md +1 -1
- package/dist/app.js +3 -3
- package/dist/plugin-lifecycle.d.ts +5 -3
- package/dist/plugin-lifecycle.js +40 -16
- package/dist/prisma/migrations/20261011000000_add_codex_support/migration.sql +20 -0
- package/dist/prisma/schema.prisma +9 -5
- package/dist/server/generated/prisma/browser.d.ts +2 -2
- package/dist/server/generated/prisma/client.d.ts +2 -2
- package/dist/server/generated/prisma/internal/class.d.ts +4 -4
- package/dist/server/generated/prisma/internal/class.js +4 -4
- package/dist/server/generated/prisma/internal/prismaNamespace.d.ts +41 -39
- package/dist/server/generated/prisma/internal/prismaNamespace.js +4 -2
- package/dist/server/generated/prisma/internal/prismaNamespaceBrowser.d.ts +5 -3
- package/dist/server/generated/prisma/internal/prismaNamespaceBrowser.js +4 -2
- package/dist/server/generated/prisma/models/AgentProfile.d.ts +972 -0
- package/dist/server/generated/prisma/models/Tab.d.ts +36 -1
- package/dist/server/generated/prisma/models.d.ts +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/lib/agent-profiles.d.ts +43 -0
- package/dist/server/lib/agent-profiles.js +127 -0
- package/dist/server/lib/agents/claude.d.ts +2 -0
- package/dist/server/lib/agents/claude.js +130 -0
- package/dist/server/lib/agents/cli.d.ts +14 -0
- package/dist/server/lib/agents/cli.js +57 -0
- package/dist/server/lib/agents/codex.d.ts +2 -0
- package/dist/server/lib/agents/codex.js +285 -0
- package/dist/server/lib/agents/index.d.ts +11 -0
- package/dist/server/lib/agents/index.js +19 -0
- package/dist/server/lib/agents/login-callback.d.ts +11 -0
- package/dist/server/lib/agents/login-callback.js +47 -0
- package/dist/server/lib/agents/types.d.ts +77 -0
- package/dist/server/lib/agents/types.js +8 -0
- package/dist/server/lib/pty-env-sync.js +1 -1
- package/dist/server/lib/pty-launch.d.ts +8 -10
- package/dist/server/lib/pty-launch.js +20 -58
- package/dist/server/lib/repositories/task.js +1 -0
- package/dist/server/lib/tab-todos.d.ts +5 -0
- package/dist/server/lib/tab-todos.js +13 -0
- package/dist/server/pty-manager.d.ts +19 -2
- package/dist/server/pty-manager.js +38 -0
- package/dist/server/routes/agent-profiles.d.ts +2 -0
- package/dist/server/routes/agent-profiles.js +193 -0
- package/dist/server/routes/env.js +2 -2
- package/dist/server/routes/hooks.d.ts +4 -19
- package/dist/server/routes/hooks.js +83 -73
- package/dist/server/routes/mcp.js +2 -2
- package/dist/server/routes/onboarding.js +19 -10
- package/dist/server/routes/tasks.js +4 -4
- package/dist/server/routes/terminal.js +84 -37
- package/dist/with-plugin.js +3 -3
- package/npm-shrinkwrap.json +31 -31
- package/package.json +1 -1
- package/tsunagi-marketplace/codex/tsunagi-task.md +120 -0
- package/.next/standalone/apps/web/.next/server/chunks/ssr/_0hnxatt._.js +0 -3
- package/.next/standalone/apps/web/.next/server/chunks/ssr/_10gk93.._.js +0 -3
- package/.next/standalone/apps/web/.next/static/chunks/0crn03y2tj0lu.js +0 -6
- package/.next/standalone/apps/web/.next/static/chunks/0lvl3ec93cab_.js +0 -7
- package/dist/server/generated/prisma/models/ClaudeProfile.d.ts +0 -939
- package/dist/server/lib/claude-profiles.d.ts +0 -49
- package/dist/server/lib/claude-profiles.js +0 -168
- package/dist/server/routes/claude-profiles.d.ts +0 -2
- package/dist/server/routes/claude-profiles.js +0 -138
- /package/.next/standalone/apps/web/.next/static/{kCD_Mhp9UYT63vnxJPuK4 → ZcOuTrikuO_ZLaERk7FsW}/_buildManifest.js +0 -0
- /package/.next/standalone/apps/web/.next/static/{kCD_Mhp9UYT63vnxJPuK4 → ZcOuTrikuO_ZLaERk7FsW}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/apps/web/.next/static/{kCD_Mhp9UYT63vnxJPuK4 → ZcOuTrikuO_ZLaERk7FsW}/_ssgManifest.js +0 -0
- /package/dist/server/generated/prisma/models/{ClaudeProfile.js → AgentProfile.js} +0 -0
package/package.json
CHANGED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# tsunagi タスク管理
|
|
2
|
+
|
|
3
|
+
このセッションは tsunagi(タスク管理ツール)のタスクに紐づいている。タスクの検索・詳細取得・作成・更新・削除、現在担当タスクの特定、実装計画の description への記録には tsunagi MCP の `tsunagi_*` ツールを使う。計画の対話を開始した時、実装を開始した時、実装・検証が完了した時、PR がマージされた時に、必ずこの手順でステータスを更新すること。
|
|
4
|
+
|
|
5
|
+
## ステータスの自動更新(必須)
|
|
6
|
+
|
|
7
|
+
作業フェーズが変わったら、**即座に** `tsunagi_update_task` でステータスを更新する。
|
|
8
|
+
|
|
9
|
+
| ステータス | 遷移タイミング |
|
|
10
|
+
| ----------- | ---------------------------------------------- |
|
|
11
|
+
| `backlog` | タスク作成時のデフォルト |
|
|
12
|
+
| `planning` | ユーザーと計画の対話を開始した時点 |
|
|
13
|
+
| `coding` | ユーザーが実装を指示、または実装を開始した時点 |
|
|
14
|
+
| `reviewing` | 全ての実装・検証が完了した時点 |
|
|
15
|
+
| `done` | PRがマージされた時点 |
|
|
16
|
+
|
|
17
|
+
遷移は必ず順方向: backlog → planning → coding → reviewing → done
|
|
18
|
+
|
|
19
|
+
## 実装開始時の計画作成(必須)
|
|
20
|
+
|
|
21
|
+
`coding` に遷移したら、**即座に** 組み込みの `update_plan` ツールで実装ステップを登録する。これにより tsunagi UI にプログレスバーが表示される。
|
|
22
|
+
|
|
23
|
+
### 手順
|
|
24
|
+
|
|
25
|
+
1. `tsunagi_update_task(status: "coding")` の直後に、`update_plan` で全ステップを登録する(各ステップの `status` は `pending`)
|
|
26
|
+
2. 各ステップは完了判断が明確な作業単位にする
|
|
27
|
+
- 例: 「○○ファイルを修正」「マイグレーション作成・適用」「lint/type-check を通す」「動作確認」
|
|
28
|
+
3. 着手時・完了時に `update_plan` で該当ステップの status を `in_progress` → `completed` に更新する(`update_plan` は毎回計画全体を渡す)
|
|
29
|
+
4. 作業中に追加ステップが判明した場合は計画に追加し、不要になったステップは計画から外す
|
|
30
|
+
|
|
31
|
+
### 語彙の使い分け(混同注意)
|
|
32
|
+
|
|
33
|
+
| 対象 | 使うツール | status 語彙 |
|
|
34
|
+
| -------------- | ------------------------ | -------------------------------------- |
|
|
35
|
+
| tsunagi タスク | `tsunagi_update_task` | backlog/planning/coding/reviewing/done |
|
|
36
|
+
| 計画 (進捗) | `update_plan` (組み込み) | pending/in_progress/completed |
|
|
37
|
+
|
|
38
|
+
tsunagi タスクの status に `in_progress` を渡してはいけない(「よくある間違い」表参照)。逆に計画の進捗管理は組み込み `update_plan` で行う。
|
|
39
|
+
|
|
40
|
+
## 現在のタスクを特定する
|
|
41
|
+
|
|
42
|
+
タスク操作には `id`, `session_id`, `cwd` のいずれかでタスクを指定する。
|
|
43
|
+
優先順位: id > session_id > cwd
|
|
44
|
+
|
|
45
|
+
- **推奨**: 環境変数 `TSUNAGI_SESSION_ID`(シェルで `echo $TSUNAGI_SESSION_ID`)を `session_id` パラメータとして渡す
|
|
46
|
+
- **フォールバック**: `TSUNAGI_SESSION_ID` が未設定の場合、CWDを `cwd` パラメータとして渡す
|
|
47
|
+
|
|
48
|
+
## タスク操作
|
|
49
|
+
|
|
50
|
+
| 操作 | ツール | タスク指定 | その他パラメータ |
|
|
51
|
+
| -------- | ------------------- | ----------------------- | ---------------------------------------------------------------------------- |
|
|
52
|
+
| 一覧取得 | tsunagi_list_tasks | 不要 | owner?, repo?, status?(string \| string[]) |
|
|
53
|
+
| 詳細取得 | tsunagi_get_task | id or session_id or cwd | - |
|
|
54
|
+
| 作成 | tsunagi_create_task | 不要 | owner, repo, title, branch?, description?, effort?, order?, status? |
|
|
55
|
+
| 更新 | tsunagi_update_task | id or session_id or cwd | title?, description?, status?, effort?, order?, baseBranch?, pullRequestUrl? |
|
|
56
|
+
| 削除 | tsunagi_delete_task | id or session_id or cwd | - |
|
|
57
|
+
|
|
58
|
+
## タスク一覧取得のガイドライン
|
|
59
|
+
|
|
60
|
+
`tsunagi_list_tasks` の `status` は単一値または配列で指定可能。ユースケースに応じて適切なステータスセットを指定すること。
|
|
61
|
+
|
|
62
|
+
### 並び替え・棚卸しは `tsunagi-task-curator` subagent に委譲する
|
|
63
|
+
|
|
64
|
+
ユーザーから以下のような依頼があった場合、**メインセッションで直接 `tsunagi_list_tasks` を呼ばず**、`spawn_agent` で `agent_type: "tsunagi-task-curator"` の subagent を起動すること:
|
|
65
|
+
|
|
66
|
+
- 「優先度を並び替えて」「順序を見直して」「priorityを変更して」
|
|
67
|
+
- 「棚卸しして」「backlogを整理して」「不要なタスクを削除して」「重複を確認して」
|
|
68
|
+
|
|
69
|
+
重いdescription(PRD)読み込みはsubagent内に閉じ込められ、メインセッションには圧縮された判断結果(提案 + 根拠1行 + confidence)のみが返却される。
|
|
70
|
+
|
|
71
|
+
subagentの返却を受けた後、メインセッションの役割:
|
|
72
|
+
|
|
73
|
+
1. `confidence: "high"` の提案は **自動的に実行**(`tsunagi_update_task` で order 更新、`tsunagi_delete_task` で削除 等)
|
|
74
|
+
2. `needs_user_input` に含まれる項目のみユーザーに確認
|
|
75
|
+
3. 実行結果をユーザーに簡潔に報告
|
|
76
|
+
|
|
77
|
+
### subagent を使わず直接 `tsunagi_list_tasks` を呼んでよいケース
|
|
78
|
+
|
|
79
|
+
以下のような軽い参照用途では直接呼び出してよい:
|
|
80
|
+
|
|
81
|
+
- 特定ステータスの件数確認(例: 現在 coding 中のタスクを確認)
|
|
82
|
+
- 特定リポジトリのタスク一覧表示(`owner` + `repo` 指定)
|
|
83
|
+
- ユーザーが明示的に全件リストを要求した場合
|
|
84
|
+
|
|
85
|
+
これらのケースでも、必要なければ `status` を指定して対象を絞ること。
|
|
86
|
+
|
|
87
|
+
## ブランチ命名規則
|
|
88
|
+
|
|
89
|
+
`branch`を省略するとtitleから自動生成されるが、短縮された意味不明な名前になりがちなため、**必ず`branch`を明示的に指定する**。
|
|
90
|
+
|
|
91
|
+
- タスク内容が一目でわかる具体的な名前にする
|
|
92
|
+
- `feat/`、`fix/`等のprefixを使用する
|
|
93
|
+
- 例: `feat/task-update-socket-notification`、`fix/duplicate-toast-on-create`
|
|
94
|
+
|
|
95
|
+
## 実装計画の管理
|
|
96
|
+
|
|
97
|
+
実装計画はタスクの `description` にPRD(Product Requirements Document)形式のmarkdownで記載・管理する。
|
|
98
|
+
ファイルシステム上に計画ファイルを作成しない。
|
|
99
|
+
`planning` 完了時点で `description` は完成していること。`coding` 中に計画変更があれば随時更新する。
|
|
100
|
+
|
|
101
|
+
## よくある間違い
|
|
102
|
+
|
|
103
|
+
| ❌ 誤り | ✅ 正しい | 備考 |
|
|
104
|
+
| ----------------------------------------- | ------------------------------------------------------- | ------------------------------------------- |
|
|
105
|
+
| `taskId: "..."` | `id: "..."` | パラメータ名は `id`(camelCase ではない) |
|
|
106
|
+
| `sessionId: "..."` | `session_id: "..."` | snake_case |
|
|
107
|
+
| `status: "in_progress"` | `status: "coding"` | 組み込み update_plan とは別語彙 |
|
|
108
|
+
| `status: "completed"` | `status: "done"` | |
|
|
109
|
+
| `status: "todo"` | `status: "backlog"` | |
|
|
110
|
+
| 識別子なしで update / get / delete を呼ぶ | `id` / `session_id` / `cwd` のいずれか1つ以上を必ず指定 | 全て省略すると `Identifier required` エラー |
|
|
111
|
+
|
|
112
|
+
### ステータス語彙の混同に注意
|
|
113
|
+
|
|
114
|
+
組み込みの `update_plan` ツール(`pending` / `in_progress` / `completed`)と、tsunagi の `tsunagi_update_task`(`backlog` / `planning` / `coding` / `reviewing` / `done`)は**完全に別物**。
|
|
115
|
+
|
|
116
|
+
## 注意事項
|
|
117
|
+
|
|
118
|
+
- `id`, `session_id`, `cwd` は優先順位に従い最初にマッチしたものでタスクを解決する
|
|
119
|
+
- 削除は論理削除(UIから復元する手段は提供されていない)
|
|
120
|
+
- `tsunagi_create_task` が失敗した場合、エラー内容をユーザーに報告するだけでよい(原因の深掘り不要)
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[68177,a=>{"use strict";var b=a.i(84991),c=a.i(2840),d=a.i(187),e=a.i(760);let f=(0,d.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-2.5!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border bg-input/20 text-foreground dark:bg-input/30 [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});a.s(["Badge",0,function({className:a,variant:d="default",render:g,...h}){var i;return i={defaultTagName:"span",props:(0,b.mergeProps)({className:(0,e.cn)(f({variant:d}),a)},h),render:g,state:{slot:"badge",variant:d}},(0,c.useRenderElement)(i.defaultTagName??"div",i,i)}],68177)},63588,a=>{"use strict";let b=(0,a.i(60137).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);a.s(["MessageSquare",0,b],63588)},62722,a=>{"use strict";let b=(0,a.i(60137).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);a.s(["XCircle",0,b],62722)},88381,a=>{"use strict";var b=a.i(72131),c=a.i(83915),d=a.i(91399);a.s(["useTaskEvents",0,function(a){let e=(0,b.useRef)(null),f=(0,b.useRef)(a);(0,b.useLayoutEffect)(()=>{f.current=a}),(0,b.useEffect)(()=>{let a=(0,c.io)((0,d.getServerUrl)(),{transports:["polling","websocket"]});return e.current=a,a.on("task:created",({task:a,warnings:b})=>{f.current.onTaskCreated(a,b??[])}),a.on("task:updated",({task:a})=>{f.current.onTaskUpdated(a)}),a.on("task:deleted",({taskId:a})=>{f.current.onTaskDeleted(a)}),a.on("task:tabs-changed",({task:a})=>{f.current.onTaskTabsChanged?.(a)}),()=>{a.disconnect(),e.current=null}},[])}])},13425,a=>{"use strict";var b=a.i(72131),c=a.i(83915),d=a.i(91399);a.s(["useTabStatusEvents",0,function(a,e){let f=(0,b.useRef)(null),g=(0,b.useRef)(new Set),h=(0,b.useRef)(e);(0,b.useEffect)(()=>{h.current=e});let i=(0,b.useCallback)(()=>{if(!f.current){let a=(0,c.io)((0,d.getServerUrl)(),{transports:["polling","websocket"]});f.current=a,a.on("status-changed",({sessionId:a,status:b})=>{let c=function(a){switch(a){case"running":return"running";case"waiting":return"waiting";case"success":return"success";case"failure":case"error":return"error";case"idle":return"idle";default:return null}}(b);null!==c&&h.current(a,c)}),a.on("connect",()=>{for(let b of g.current)a.emit("join",{room:b,mode:"subscribe"})})}return f.current},[]);(0,b.useEffect)(()=>{if(0===a.length)return;let b=i();for(let c of a){let a=`tab:${c}`;g.current.has(a)||(b.emit("join",{room:a,mode:"subscribe"}),g.current.add(a))}let c=new Set(a);for(let a of g.current){let d=a.replace("tab:","");c.has(d)||(b.emit("leave",{room:a}),g.current.delete(a))}},[a,i]),(0,b.useEffect)(()=>{let a=g.current;return()=>{f.current?.disconnect(),f.current=null,a.clear()}},[])}])},11081,93886,a=>{"use strict";function b(a){return"success"===a||"error"===a||"running"!==a&&"idle"!==a&&void 0}function c(a){let b=a.tabs??[];if(0===b.length||b.some(a=>"running"===a.status))return null;if(b.some(a=>"waiting"===a.status))return"waiting";let c=b.filter(a=>a.unread);return c.some(a=>"error"===a.status)?"error":c.some(a=>"success"===a.status)?"success":null}a.s(["activityKind",0,function(a){return(a.tabs??[]).some(a=>"running"===a.status)?"running":c(a)},"hasUnreadResult",0,function(a){return null!==c(a)},"unreadForStatus",0,b,"unreadKind",0,c],11081);var d=a.i(72131),e=a.i(91399),f=a.i(88381),g=a.i(13425);a.s(["useLiveTasks",0,function(a={}){let[c,h]=(0,d.useState)([]),[i,j]=(0,d.useState)(!0),k=(0,d.useRef)(a),l=(0,d.useRef)(c);(0,d.useEffect)(()=>{k.current=a,l.current=c});let m=(0,d.useCallback)(async()=>{j(!0);try{let a=await fetch((0,e.apiUrl)("/api/tasks"));if(!a.ok)throw Error("Failed to fetch tasks");let b=await a.json();h(b.data.tasks)}catch(a){console.error("Failed to load tasks:",a)}finally{j(!1)}},[]);(0,d.useEffect)(()=>{m()},[m]);let n=(0,d.useMemo)(()=>c.flatMap(a=>(a.tabs??[]).map(a=>a.tab_id)),[c]);return(0,g.useTabStatusEvents)(n,(a,c)=>{let d=b(c);h(b=>b.map(b=>({...b,tabs:(b.tabs??[]).map(b=>b.tab_id===a?{...b,status:c,...void 0!==d&&{unread:d}}:b)})))}),(0,f.useTaskEvents)({onTaskCreated:(a,b)=>{h(b=>b.some(b=>b.id===a.id)?b:[...b,a]),k.current.onTaskCreated?.(a,b)},onTaskUpdated:a=>{h(b=>b.map(b=>b.id===a.id?a:b)),k.current.onTaskUpdated?.(a)},onTaskDeleted:a=>{let b=l.current.find(b=>b.id===a);h(b=>b.filter(b=>b.id!==a)),k.current.onTaskDeleted?.(a,b)},onTaskTabsChanged:a=>{h(b=>b.map(b=>b.id===a.id?a:b))}}),{tasks:c,setTasks:h,isLoading:i,reload:m}}],93886)},27006,a=>{"use strict";var b=a.i(87924),c=a.i(50944),d=a.i(72131),e=a.i(67453),f=a.i(96221),g=a.i(63588),h=a.i(62722),i=a.i(11081),j=a.i(93886),k=a.i(68177),l=a.i(760);let m={waiting:{order:0,icon:g.MessageSquare,className:"text-warning",label:"Waiting for your input"},error:{order:1,icon:h.XCircle,className:"text-destructive",label:"Failed, not opened yet"},success:{order:2,icon:e.CheckCircle2,className:"text-success",label:"Finished, not opened yet"},running:{order:3,icon:f.Loader2,className:"text-primary animate-spin",label:"Running"}};function n({currentTaskId:a}){let e=(0,c.useRouter)(),{tasks:f}=(0,j.useLiveTasks)(),g=(0,d.useMemo)(()=>{let b=[];for(let c of f){let d=(0,i.activityKind)(c);d&&(c.id!==a||"success"!==d&&"error"!==d)&&b.push({task:c,kind:d})}return b.sort((a,b)=>m[a.kind].order-m[b.kind].order||a.task.order-b.task.order||a.task.createdAt.localeCompare(b.task.createdAt))},[f,a]);return(0,b.jsxs)("aside",{className:"hidden md:flex w-64 shrink-0 flex-col border-r border-border bg-card",children:[(0,b.jsxs)("div",{className:"flex h-8 shrink-0 box-content items-center gap-2 border-b border-border p-4",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Active"}),(0,b.jsx)(k.Badge,{variant:"secondary",children:g.length})]}),0===g.length?(0,b.jsx)("p",{className:"p-4 text-center text-xs text-muted-foreground",children:"No active tasks"}):(0,b.jsx)("ul",{className:"flex-1 space-y-0.5 overflow-y-auto p-2",children:g.map(({task:c,kind:d})=>{let{icon:f,className:g,label:h}=m[d],i=c.id===a;return(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",onClick:()=>e.replace(`/tasks/${c.id}`),"aria-current":i?"page":void 0,className:(0,l.cn)("flex w-full items-start gap-2 rounded-md px-2 py-1.5 text-left transition-colors hover:bg-accent",i&&"bg-accent"),children:[(0,b.jsx)("span",{role:"img","aria-label":h,title:h,className:"mt-0.5 shrink-0",children:(0,b.jsx)(f,{className:(0,l.cn)("size-3.5",g)})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,b.jsx)("span",{className:"block truncate text-sm text-foreground",title:c.title,children:c.title}),(0,b.jsxs)("span",{className:"block truncate text-xs text-muted-foreground",children:[c.owner,"/",c.repo]})]})]})},c.id)})})]})}a.s(["default",0,function({children:a}){let{id:d}=(0,c.useParams)();return(0,b.jsxs)("div",{className:"h-screen flex bg-background",children:[(0,b.jsx)(n,{currentTaskId:d}),(0,b.jsx)("div",{className:"flex-1 min-w-0",children:a})]})}],27006)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0hnxatt._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[84454,65486,80056,43715,a=>{"use strict";var b=a.i(30685),c=(0,a.i(17508).default)(Object.keys,Object),d=Object.prototype.hasOwnProperty;let e=function(a){if(!(0,b.default)(a))return c(a);var e=[];for(var f in Object(a))d.call(a,f)&&"constructor"!=f&&e.push(f);return e};a.s(["default",0,e],65486);var f=a.i(37991),g=a.i(11253),h=(0,f.default)(g.default,"DataView"),i=a.i(38141),j=(0,f.default)(g.default,"Promise"),k=(0,f.default)(g.default,"Set");a.s(["default",0,k],80056);var l=(0,f.default)(g.default,"WeakMap"),m=a.i(35102),n=a.i(12098),o="[object Map]",p="[object Promise]",q="[object Set]",r="[object WeakMap]",s="[object DataView]",t=(0,n.default)(h),u=(0,n.default)(i.default),v=(0,n.default)(j),w=(0,n.default)(k),x=(0,n.default)(l),y=m.default;(h&&y(new h(new ArrayBuffer(1)))!=s||i.default&&y(new i.default)!=o||j&&y(j.resolve())!=p||k&&y(new k)!=q||l&&y(new l)!=r)&&(y=function(a){var b=(0,m.default)(a),c="[object Object]"==b?a.constructor:void 0,d=c?(0,n.default)(c):"";if(d)switch(d){case t:return s;case u:return o;case v:return p;case w:return q;case x:return r}return b});let z=y;a.s(["default",0,z],43715);var A=a.i(62244),B=a.i(66723),C=a.i(68378),D=a.i(12999),E=a.i(56814),F=Object.prototype.hasOwnProperty;a.s(["default",0,function(a){if(null==a)return!0;if((0,C.default)(a)&&((0,B.default)(a)||"string"==typeof a||"function"==typeof a.splice||(0,D.default)(a)||(0,E.default)(a)||(0,A.default)(a)))return!a.length;var c=z(a);if("[object Map]"==c||"[object Set]"==c)return!a.size;if((0,b.default)(a))return!e(a).length;for(var d in a)if(F.call(a,d))return!1;return!0}],84454)},73160,a=>{"use strict";var b=a.i(14562),c=a.i(34603);a.i(75930);var d=a.i(71731),e=(0,c.__name)(a=>{let{securityLevel:c}=(0,b.getConfig2)(),e=(0,d.select)("body");if("sandbox"===c){let b=(0,d.select)(`#i${a}`),c=b.node()?.contentDocument??document;e=(0,d.select)(c.body)}return e.select(`#${a}`)},"selectSvgElement");a.s(["selectSvgElement",0,e])},50160,a=>{a.v("/_next/static/media/icon.0fkix7.hkmsz4.png"+(globalThis.NEXT_CLIENT_ASSET_SUFFIX||""))},33354,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},15618,49594,a=>{"use strict";let b=(0,a.i(60137).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],15618);let c=[{bg:"bg-blue-100 dark:bg-blue-900/30",text:"text-blue-700 dark:text-blue-300"},{bg:"bg-emerald-100 dark:bg-emerald-900/30",text:"text-emerald-700 dark:text-emerald-300"},{bg:"bg-violet-100 dark:bg-violet-900/30",text:"text-violet-700 dark:text-violet-300"},{bg:"bg-amber-100 dark:bg-amber-900/30",text:"text-amber-700 dark:text-amber-300"},{bg:"bg-rose-100 dark:bg-rose-900/30",text:"text-rose-700 dark:text-rose-300"},{bg:"bg-cyan-100 dark:bg-cyan-900/30",text:"text-cyan-700 dark:text-cyan-300"},{bg:"bg-orange-100 dark:bg-orange-900/30",text:"text-orange-700 dark:text-orange-300"},{bg:"bg-teal-100 dark:bg-teal-900/30",text:"text-teal-700 dark:text-teal-300"},{bg:"bg-indigo-100 dark:bg-indigo-900/30",text:"text-indigo-700 dark:text-indigo-300"},{bg:"bg-pink-100 dark:bg-pink-900/30",text:"text-pink-700 dark:text-pink-300"},{bg:"bg-lime-100 dark:bg-lime-900/30",text:"text-lime-700 dark:text-lime-300"},{bg:"bg-fuchsia-100 dark:bg-fuchsia-900/30",text:"text-fuchsia-700 dark:text-fuchsia-300"}];a.s(["getRepoColor",0,function(a,b){let d=function(a){let b=5381;for(let c=0;c<a.length;c++)b=33*b^a.charCodeAt(c);return b>>>0}(`${a}/${b}`)%c.length;return c[d]}],49594)},10948,a=>{"use strict";let b=(0,a.i(60137).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);a.s(["GitBranch",0,b],10948)},63588,a=>{"use strict";let b=(0,a.i(60137).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);a.s(["MessageSquare",0,b],63588)},62722,a=>{"use strict";let b=(0,a.i(60137).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);a.s(["XCircle",0,b],62722)},88381,a=>{"use strict";var b=a.i(72131),c=a.i(83915),d=a.i(91399);a.s(["useTaskEvents",0,function(a){let e=(0,b.useRef)(null),f=(0,b.useRef)(a);(0,b.useLayoutEffect)(()=>{f.current=a}),(0,b.useEffect)(()=>{let a=(0,c.io)((0,d.getServerUrl)(),{transports:["polling","websocket"]});return e.current=a,a.on("task:created",({task:a,warnings:b})=>{f.current.onTaskCreated(a,b??[])}),a.on("task:updated",({task:a})=>{f.current.onTaskUpdated(a)}),a.on("task:deleted",({taskId:a})=>{f.current.onTaskDeleted(a)}),a.on("task:tabs-changed",({task:a})=>{f.current.onTaskTabsChanged?.(a)}),()=>{a.disconnect(),e.current=null}},[])}])},13425,a=>{"use strict";var b=a.i(72131),c=a.i(83915),d=a.i(91399);a.s(["useTabStatusEvents",0,function(a,e){let f=(0,b.useRef)(null),g=(0,b.useRef)(new Set),h=(0,b.useRef)(e);(0,b.useEffect)(()=>{h.current=e});let i=(0,b.useCallback)(()=>{if(!f.current){let a=(0,c.io)((0,d.getServerUrl)(),{transports:["polling","websocket"]});f.current=a,a.on("status-changed",({sessionId:a,status:b})=>{let c=function(a){switch(a){case"running":return"running";case"waiting":return"waiting";case"success":return"success";case"failure":case"error":return"error";case"idle":return"idle";default:return null}}(b);null!==c&&h.current(a,c)}),a.on("connect",()=>{for(let b of g.current)a.emit("join",{room:b,mode:"subscribe"})})}return f.current},[]);(0,b.useEffect)(()=>{if(0===a.length)return;let b=i();for(let c of a){let a=`tab:${c}`;g.current.has(a)||(b.emit("join",{room:a,mode:"subscribe"}),g.current.add(a))}let c=new Set(a);for(let a of g.current){let d=a.replace("tab:","");c.has(d)||(b.emit("leave",{room:a}),g.current.delete(a))}},[a,i]),(0,b.useEffect)(()=>{let a=g.current;return()=>{f.current?.disconnect(),f.current=null,a.clear()}},[])}])},11081,93886,a=>{"use strict";function b(a){return"success"===a||"error"===a||"running"!==a&&"idle"!==a&&void 0}function c(a){let b=a.tabs??[];if(0===b.length||b.some(a=>"running"===a.status))return null;if(b.some(a=>"waiting"===a.status))return"waiting";let c=b.filter(a=>a.unread);return c.some(a=>"error"===a.status)?"error":c.some(a=>"success"===a.status)?"success":null}a.s(["activityKind",0,function(a){return(a.tabs??[]).some(a=>"running"===a.status)?"running":c(a)},"hasUnreadResult",0,function(a){return null!==c(a)},"unreadForStatus",0,b,"unreadKind",0,c],11081);var d=a.i(72131),e=a.i(91399),f=a.i(88381),g=a.i(13425);a.s(["useLiveTasks",0,function(a={}){let[c,h]=(0,d.useState)([]),[i,j]=(0,d.useState)(!0),k=(0,d.useRef)(a),l=(0,d.useRef)(c);(0,d.useEffect)(()=>{k.current=a,l.current=c});let m=(0,d.useCallback)(async()=>{j(!0);try{let a=await fetch((0,e.apiUrl)("/api/tasks"));if(!a.ok)throw Error("Failed to fetch tasks");let b=await a.json();h(b.data.tasks)}catch(a){console.error("Failed to load tasks:",a)}finally{j(!1)}},[]);(0,d.useEffect)(()=>{m()},[m]);let n=(0,d.useMemo)(()=>c.flatMap(a=>(a.tabs??[]).map(a=>a.tab_id)),[c]);return(0,g.useTabStatusEvents)(n,(a,c)=>{let d=b(c);h(b=>b.map(b=>({...b,tabs:(b.tabs??[]).map(b=>b.tab_id===a?{...b,status:c,...void 0!==d&&{unread:d}}:b)})))}),(0,f.useTaskEvents)({onTaskCreated:(a,b)=>{h(b=>b.some(b=>b.id===a.id)?b:[...b,a]),k.current.onTaskCreated?.(a,b)},onTaskUpdated:a=>{h(b=>b.map(b=>b.id===a.id?a:b)),k.current.onTaskUpdated?.(a)},onTaskDeleted:a=>{let b=l.current.find(b=>b.id===a);h(b=>b.filter(b=>b.id!==a)),k.current.onTaskDeleted?.(a,b)},onTaskTabsChanged:a=>{h(b=>b.map(b=>b.id===a.id?a:b))}}),{tasks:c,setTasks:h,isLoading:i,reload:m}}],93886)},92025,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_katex_dist_katex_mjs_0zuygmo._.js"].map(b=>a.l(b))).then(()=>b(48986)))},69e3,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_lodash-es_0yap81y._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_dagre-KV5264BT_mjs_0aqvo3i._.js","server/chunks/ssr/node_modules_lodash-es_091xgk5._.js","server/chunks/ssr/node_modules_dagre-d3-es_src_dagre_index_097t5l0.js","server/chunks/ssr/node_modules_103v9xp._.js"].map(b=>a.l(b))).then(()=>b(55868)))},71331,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0hsalo_._.js","server/chunks/ssr/node_modules_cytoscape_dist_cytoscape_esm_mjs_0642y5z._.js"].map(b=>a.l(b))).then(()=>b(3671)))},99987,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-YZCP3GAM_mjs_04sswi2._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_c4Diagram-AHTNJAMY_mjs_0mw4ioe._.js"].map(b=>a.l(b))).then(()=>b(42357)))},48308,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_08av5m5._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_flowDiagram-DWJPFMVM_mjs_11yfm2v._.js"].map(b=>a.l(b))).then(()=>b(26594)))},74667,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_07xyphe._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_erDiagram-SMLLAGMA_mjs_0ti8x~s._.js"].map(b=>a.l(b))).then(()=>b(35543)))},15498,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0_huoqd._.js","server/chunks/ssr/[root-of-the-server]__0qtqq5d._.js","server/chunks/ssr/node_modules_0gvdioh._.js","server/chunks/ssr/node_modules_lodash-es_01jun1r._.js","server/chunks/ssr/0_lp_modules_mermaid_dist_chunks_mermaid_core_gitGraphDiagram-UUTBAWPF_mjs_0dvv8~.._.js"].map(b=>a.l(b))).then(()=>b(2421)))},24500,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0q8gl61._.js","server/chunks/ssr/node_modules_0t03q3z._.js"].map(b=>a.l(b))).then(()=>b(37521)))},78102,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0tod6y8._.js","server/chunks/ssr/[root-of-the-server]__0ff1foz._.js","server/chunks/ssr/node_modules_lodash-es_01jun1r._.js","server/chunks/ssr/node_modules_0gvdioh._.js"].map(b=>a.l(b))).then(()=>b(86618)))},94433,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0xp9nhx._.js","server/chunks/ssr/[root-of-the-server]__0n2qong._.js","server/chunks/ssr/node_modules_lodash-es_01jun1r._.js","server/chunks/ssr/node_modules_0gvdioh._.js"].map(b=>a.l(b))).then(()=>b(28018)))},65122,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0m8d9.a._.js","server/chunks/ssr/0_lp_modules_mermaid_dist_chunks_mermaid_core_quadrantDiagram-34T5L4WZ_mjs_05wge~v._.js"].map(b=>a.l(b))).then(()=>b(40628)))},6687,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0j1i92p._.js","server/chunks/ssr/0_lp_modules_mermaid_dist_chunks_mermaid_core_xychartDiagram-5P7HB3ND_mjs_0wwuvw2._.js"].map(b=>a.l(b))).then(()=>b(7451)))},18402,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_04x.vut._.js","server/chunks/ssr/0t6k_mermaid_dist_chunks_mermaid_core_requirementDiagram-MS252O5E_mjs_048lezu._.js"].map(b=>a.l(b))).then(()=>b(90431)))},92739,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_0w_54yy._.js","server/chunks/ssr/0_lp_modules_mermaid_dist_chunks_mermaid_core_sequenceDiagram-FGHM5R23_mjs_12c7k-5._.js"].map(b=>a.l(b))).then(()=>b(67397)))},32256,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_0o900rn._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-4TB4RGXK_mjs_0ie15wz._.js"].map(b=>a.l(b))).then(()=>b(55252)))},51050,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_03f~che._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-4TB4RGXK_mjs_0ie15wz._.js"].map(b=>a.l(b))).then(()=>b(12084)))},33430,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0mwl~df._.js","server/chunks/ssr/node_modules_lodash-es_091xgk5._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_stateDiagram-FHFEXIEX_mjs_0mg2~ri._.js","server/chunks/ssr/node_modules_dagre-d3-es_src_dagre_index_097t5l0.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-OYMX7WX6_mjs_087i3.l._.js","server/chunks/ssr/node_modules_103v9xp._.js"].map(b=>a.l(b))).then(()=>b(55905)))},43021,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_0cje6no._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-OYMX7WX6_mjs_087i3.l._.js"].map(b=>a.l(b))).then(()=>b(79891)))},21261,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0_09.d-._.js","server/chunks/ssr/0_lp_modules_mermaid_dist_chunks_mermaid_core_journeyDiagram-VCZTEJTY_mjs_0q7b_tk._.js"].map(b=>a.l(b))).then(()=>b(47598)))},50244,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_d3-shape_src_arc_135n374.js","server/chunks/ssr/0t6k_mermaid_dist_chunks_mermaid_core_timeline-definition-GMOUNBTQ_mjs_0y7flug._.js"].map(b=>a.l(b))).then(()=>b(98138)))},54532,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_04x.vut._.js","server/chunks/ssr/0t6k_mermaid_dist_chunks_mermaid_core_mindmap-definition-QFDTVHPH_mjs_0ie03qp._.js"].map(b=>a.l(b))).then(()=>b(73348)))},42598,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-FMBD7UC4_mjs_0dox0y0._.js","server/chunks/ssr/0_lp_modules_mermaid_dist_chunks_mermaid_core_kanban-definition-6JOO6SKY_mjs_0b8_92c._.js"].map(b=>a.l(b))).then(()=>b(78776)))},18652,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_d3-scale_src_0~kn3a6._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_sankeyDiagram-XADWPNL6_mjs_0akor_o._.js"].map(b=>a.l(b))).then(()=>b(88909)))},9099,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0l23gkf._.js","server/chunks/ssr/[root-of-the-server]__0hhfi7s._.js","server/chunks/ssr/node_modules_lodash-es_01jun1r._.js","server/chunks/ssr/node_modules_0gvdioh._.js"].map(b=>a.l(b))).then(()=>b(20145)))},35140,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_04pfam-._.js","server/chunks/ssr/[root-of-the-server]__0hhfi7s._.js","server/chunks/ssr/node_modules_lodash-es_01jun1r._.js","server/chunks/ssr/node_modules_0gvdioh._.js"].map(b=>a.l(b))).then(()=>b(42910)))},56125,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0omx0o-._.js","server/chunks/ssr/node_modules_0heie6p._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_blockDiagram-DXYQGD6D_mjs_13mbtfc._.js","server/chunks/ssr/node_modules_lodash-es_0egjqeu._.js"].map(b=>a.l(b))).then(()=>b(68669)))},54269,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0q_xfyl._.js","server/chunks/ssr/[root-of-the-server]__0cl-0al._.js","server/chunks/ssr/node_modules_lodash-es_01jun1r._.js","server/chunks/ssr/node_modules_0gvdioh._.js"].map(b=>a.l(b))).then(()=>b(58204)))},97375,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0krwgny._.js","server/chunks/ssr/node_modules_lodash-es_01jun1r._.js","server/chunks/ssr/[root-of-the-server]__0e2_bho._.js","server/chunks/ssr/node_modules_0gvdioh._.js","server/chunks/ssr/node_modules_0sqcrg2._.js","server/chunks/ssr/node_modules_cytoscape_dist_cytoscape_esm_mjs_0642y5z._.js"].map(b=>a.l(b))).then(()=>b(29821)))},70868,a=>{a.v(b=>Promise.all(["server/chunks/ssr/0_lp_modules_mermaid_dist_chunks_mermaid_core_ishikawaDiagram-UXIWVN3A_mjs_0gpauwj._.js"].map(b=>a.l(b))).then(()=>b(5822)))},5494,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_vennDiagram-DHZGUBPP_mjs_013wte~._.js"].map(b=>a.l(b))).then(()=>b(65580)))},41872,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0oip5a1._.js","server/chunks/ssr/[root-of-the-server]__0sha5xx._.js","server/chunks/ssr/node_modules_lodash-es_01jun1r._.js","server/chunks/ssr/node_modules_0gvdioh._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_diagram-G4DWMVQ6_mjs_108p.po._.js"].map(b=>a.l(b))).then(()=>b(52172)))},40744,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_0krwgny._.js","server/chunks/ssr/[root-of-the-server]__0e2_bho._.js","server/chunks/ssr/node_modules_0gvdioh._.js","server/chunks/ssr/node_modules_lodash-es_01jun1r._.js","server/chunks/ssr/0_lp_modules_mermaid_dist_chunks_mermaid_core_wardleyDiagram-NUSXRM2D_mjs_0579rrr._.js"].map(b=>a.l(b))).then(()=>b(2410)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_10gk93.._.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,97099,e=>{"use strict";var t,n,r,a=e.i(18050),s=e.i(71645),o=e.i(18566),i=e.i(471),l=e.i(75254);let u=(0,l.default)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]),c=(0,l.default)("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]),d=(0,l.default)("folder-x",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}],["path",{d:"m9.5 10.5 5 5",key:"ra9qjz"}],["path",{d:"m14.5 10.5-5 5",key:"l2rkpq"}]]);var f=e.i(88699);let p=(0,l.default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);var m=e.i(27612),g=e.i(70935),h=e.i(10483),v=e.i(37870),x=e.i(76165),b=e.i(51846),y=e.i(2576),S=e.i(37727),E=e.i(31278);let R=(0,l.default)("circle-pause",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]]);var k=e.i(63209);let C=(0,l.default)("wifi-off",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);var w=e.i(95468),T=e.i(73884),I=e.i(86311),O=e.i(68995),N=e.i(85902),M=e.i(87951);function j({store:e}){let t=(0,s.useSyncExternalStore)(e.subscribe,e.getSnapshot,()=>0);return(0,a.jsx)("div",{"aria-hidden":!0,className:"h-1.5 w-16 overflow-hidden rounded-full bg-background/60",children:(0,a.jsx)("div",{className:"h-full rounded-full bg-destructive",style:{width:`${Math.round(100*t)}%`}})})}function A({voiceInput:e}){let{enabled:t,serverReady:n,status:r,levelStore:s,toggle:o}=e;if(!t)return null;let i="listening"===r;return(0,a.jsxs)("div",{className:i?"inline-flex items-center gap-2 rounded-md bg-destructive/10 p-1":"inline-flex",children:[(0,a.jsx)(N.Button,{size:"icon",variant:i?"destructive":"default",onClick:o,disabled:"starting"===r||"off"===r&&!n,title:i?"音声入力を停止":n?"音声入力を開始(話した部分が自動で入力されます)":"音声認識サーバーが起動していません(Settingsから起動してください)",children:"starting"===r?(0,a.jsx)(E.Loader2,{className:"w-4 h-4 animate-spin"}):(0,a.jsx)(M.Mic,{className:"w-4 h-4"})}),i&&(0,a.jsx)(j,{store:s})]})}var P=e.i(93355),L=e.i(64691);function D({entry:e}){if(!e||"idle"===e.terminal)return(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,a.jsx)(R,{className:"w-3 h-3"}),(0,a.jsx)("span",{children:"idle"})]});if("connecting"===e.terminal)return(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,a.jsx)(E.Loader2,{className:"w-3 h-3 animate-spin"}),(0,a.jsx)("span",{children:"connecting"})]});if("error"===e.terminal)return(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-destructive",children:[(0,a.jsx)(k.AlertCircle,{className:"w-3 h-3"}),(0,a.jsx)("span",{children:"error"})]});if("exited"===e.terminal||"paused"===e.terminal)return(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,a.jsx)(C,{className:"w-3 h-3"}),(0,a.jsx)("span",{children:e.terminal})]});switch(e.claude){case"running":return(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-primary",children:[(0,a.jsx)(E.Loader2,{className:"w-3 h-3 animate-spin"}),(0,a.jsx)("span",{children:"running"})]});case"waiting":return(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-warning",children:[(0,a.jsx)(I.MessageSquare,{className:"w-3 h-3"}),(0,a.jsx)("span",{children:"waiting"})]});case"success":return(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-success",children:[(0,a.jsx)(w.CheckCircle2,{className:"w-3 h-3"}),(0,a.jsx)("span",{children:"success"})]});case"failure":case"error":return(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-destructive",children:[(0,a.jsx)(T.XCircle,{className:"w-3 h-3"}),(0,a.jsx)("span",{children:"failure"===e.claude?"failure":"error"})]});default:return(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,a.jsx)(R,{className:"w-3 h-3"}),(0,a.jsx)("span",{children:"idle"})]})}}function F({tabs:e,activeTabId:t,onTabChange:n,onTabCreateTerminal:r,onTabCreateClaude:o,localLlmOption:i,onTabCreateLocalLlm:l,onTabDelete:u,tabStatusMap:c,voiceInput:d}){let f=(0,s.useRef)([]),[m,g]=(0,s.useState)({left:0,width:0}),[h,v]=(0,s.useState)(null);(0,s.useEffect)(()=>{let n=e.findIndex(e=>e.tab_id===t);if(-1!==n&&f.current[n]){let e=f.current[n];e&&g({left:e.offsetLeft,width:e.offsetWidth})}},[t,e]);let x=new Map,b=0;for(let t of e)"terminal"===t.mode&&(b+=1,x.set(t.tab_id,b));return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(O.ConfirmDialog,{open:null!==h,onOpenChange:e=>{e.open||v(null)},title:"Delete Tab",message:h?.isRunning?"This tab is running. Are you sure you want to delete it?":"Delete this tab?",confirmLabel:"Delete",cancelLabel:"Cancel",onConfirm:()=>{h&&u(h.tabId)},variant:"danger"}),(0,a.jsxs)("div",{className:"relative flex items-center gap-2 overflow-x-auto border-b border-border pb-1",children:[e.map((e,r)=>{let s=t===e.tab_id,o=c?.get(e.tab_id),l=(o?.claude==="running"||o?.claude==="waiting")&&(o?.terminal==="connected"||o?.terminal===null);return(0,a.jsxs)("div",{ref:e=>{f.current[r]=e},onClick:()=>n(e.tab_id),className:`
|
|
2
|
-
flex items-center gap-2 px-4 pt-1 pb-2 h-10 flex-shrink-0 transition-colors cursor-pointer
|
|
3
|
-
${s?"text-primary":l?"text-primary-light":"text-muted-foreground hover:text-foreground"}
|
|
4
|
-
`,children:[(0,a.jsx)("div",{className:"font-medium flex items-center gap-2",children:"terminal"===e.mode?(0,a.jsxs)("span",{className:"text-xs",children:["terminal ",x.get(e.tab_id)]}):(0,a.jsxs)(a.Fragment,{children:[("local"===e.mode||"ollama"===e.mode||"lmstudio"===e.mode)&&(0,a.jsx)("span",{title:(0,L.localLlmTabLabel)(i?.provider??null),children:(0,a.jsx)(P.LocalLlmTabIcon,{provider:i?.provider??null,className:"w-3 h-3"})}),(0,a.jsx)(D,{entry:o})]})}),(0,a.jsx)(N.Button,{variant:"ghost",size:"icon-xs",onClick:t=>{t.stopPropagation(),v({tabId:e.tab_id,isRunning:l})},children:(0,a.jsx)(S.X,{className:"w-4 h-4"})})]},e.tab_id)}),(0,a.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0 ml-auto",children:[d&&(0,a.jsx)(A,{voiceInput:d}),(0,a.jsx)("div",{className:"w-px self-stretch bg-theme"}),r&&(0,a.jsx)(N.Button,{size:"icon",onClick:r,title:"Open terminal",children:(0,a.jsx)(p,{className:"w-4 h-4"})}),(0,a.jsx)(N.Button,{size:"icon",onClick:o,title:"Claude Code",children:(0,a.jsx)(P.ClaudeIcon,{className:"w-4 h-4"})}),i&&(0,a.jsx)("span",{title:i.model?`${(0,L.localLlmTabLabel)(i.provider)}: ${i.model}`:"ローカルLLMのモデルが未設定です(Settings で設定)",children:(0,a.jsx)(N.Button,{size:"icon",onClick:l,disabled:!i.model,children:(0,a.jsx)(P.LocalLlmTabIcon,{provider:i.provider,className:"w-4 h-4"})})})]}),(0,a.jsx)("div",{className:"absolute bottom-0 h-0.5 bg-primary transition-[left,width]",style:{left:`${m.left}px`,width:`${m.width}px`}})]})]})}let _=(0,l.default)("audio-lines",[["path",{d:"M2 10v3",key:"1fnikh"}],["path",{d:"M6 6v11",key:"11sgs0"}],["path",{d:"M10 3v18",key:"yhl04a"}],["path",{d:"M14 8v7",key:"3a1oy3"}],["path",{d:"M18 5v13",key:"123xd1"}],["path",{d:"M22 10v3",key:"154ddg"}]]);function U({utterances:e}){return 0===e.length?null:(0,a.jsx)("div",{className:"pointer-events-none absolute inset-x-4 bottom-8 z-10 flex justify-center",children:(0,a.jsx)("div",{className:"w-full max-w-2xl space-y-1 rounded-md border bg-card/95 p-3 text-sm text-card-foreground shadow-md",children:e.map(e=>(0,a.jsxs)("div",{className:"flex items-start gap-2",children:["speaking"===e.phase?(0,a.jsx)(_,{className:"mt-0.5 size-4 shrink-0 animate-pulse text-destructive"}):"finalizing"===e.phase?(0,a.jsx)(E.Loader2,{className:"mt-0.5 size-4 shrink-0 animate-spin text-muted-foreground"}):(0,a.jsx)(w.CheckCircle2,{className:"mt-0.5 size-4 shrink-0 text-success"}),(0,a.jsx)("p",{className:"speaking"===e.phase?"text-muted-foreground":void 0,children:e.text||"…"})]},e.id))})})}var B=e.i(57024),z=e.i(19728);let H=["running","running_external"];function W(){let e=0,t=new Set;return{subscribe:e=>(t.add(e),()=>t.delete(e)),getSnapshot:()=>e,set:n=>{n!==e&&(e=n,t.forEach(e=>e()))}}}var V=e.i(71698),G=e.i(67211),$=e.i(38078);let K=(0,s.forwardRef)(function({task:t,tabs:n,activeTabId:r,onTabChange:o,onTabCreate:i,onTabDelete:l,onTodosUpdated:u,onClaudeStatusChange:c},d){let[f,m]=(0,s.useState)(()=>new Set(r?[r]:[]));(0,s.useEffect)(()=>{r&&m(e=>{if(e.has(r))return e;let t=new Set(e);return t.add(r),t})},[r]);let[h,v]=(0,s.useState)(()=>new Map(n.map(e=>[e.tab_id,{terminal:null,claude:e.status}])));(0,s.useEffect)(()=>{v(e=>{let t=!1,r=new Map(e);for(let e of n)r.has(e.tab_id)||(r.set(e.tab_id,{terminal:null,claude:e.status}),t=!0);return t?r:e})},[n]);let x=(0,s.useRef)(f);(0,s.useEffect)(()=>{x.current=f},[f]);let b=(0,s.useMemo)(()=>n.map(e=>e.tab_id),[n]);(0,V.useTabStatusEvents)(b,(e,t)=>{x.current.has(e)||(v(n=>{let r=n.get(e);if(!r||null!==r.terminal||r.claude===t)return n;let a=new Map(n);return a.set(e,{terminal:null,claude:t}),a}),c?.(e,t))});let y=(0,s.useRef)(new Map);(0,s.useEffect)(()=>{r&&y.current.get(r)?.focus()},[r]);let S=(0,s.useCallback)((e,t,n)=>{v(r=>{let a=new Map(r);return a.set(e,{terminal:t,claude:n}),a}),c?.(e,n)},[c]);(0,s.useImperativeHandle)(d,()=>({sendInput:(e,t)=>{let n=y.current.get(e);n?.sendInput(t)}}));let E=(0,s.useCallback)(e=>{m(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n}),o(e)},[o]),R=(0,s.useCallback)(async e=>{let t=await i(e);t&&m(e=>{let n=new Set(e);return n.add(t),n})},[i]),k=(0,s.useCallback)(()=>R("terminal"),[R]),C=(0,s.useCallback)(()=>R("claude"),[R]),w=(0,s.useCallback)(()=>R("local"),[R]),{settings:T}=(0,$.useOllamaSettings)(),{settings:I}=(0,$.useLmStudioSettings)(),{settings:O}=(0,$.useLocalLlmSettings)(),M=T?.enabled||I?.enabled?{provider:O?.active?.provider??null,model:O?.active?.model??""}:void 0,j=function({onFinal:t}){let[n,r]=(0,s.useState)(!1),[a,o]=(0,s.useState)(null),[i,l]=(0,s.useState)("off"),[u,c]=(0,s.useState)([]),[d]=(0,s.useState)(W),f=(0,s.useRef)(null),p=(0,s.useRef)(0),m=(0,s.useRef)(null),h=(0,s.useRef)([]),v=(0,s.useRef)([]),x=(0,s.useRef)(!1),b=(0,s.useRef)(0),y=(0,s.useRef)(Promise.resolve()),S=(0,s.useRef)(t),E=(0,s.useRef)(!1);(0,s.useEffect)(()=>{S.current=t},[t]),(0,s.useEffect)(()=>{r("true"===localStorage.getItem(z.VOICE_INPUT_ENABLED_STORAGE_KEY))},[]),(0,s.useEffect)(()=>{if(!n)return;let e=!1,t=async()=>{try{let t=await fetch((0,g.apiUrl)("/api/whisper/server/status")),n=await t.json();e||o(n.step)}catch{e||o("not_running")}};t();let r=setInterval(t,5e3);return()=>{e=!0,clearInterval(r)}},[n]);let R=(0,s.useCallback)(e=>{c(t=>t.filter(t=>t.id!==e))},[]),k=(0,s.useCallback)((e,t)=>{c(n=>n.map(n=>n.id===e?{id:e,text:t,phase:"final"}:n)),setTimeout(()=>R(e),750)},[R]),C=(0,s.useCallback)(async(t,n)=>{let{utils:r}=await e.A(61531),a=r.encodeWAV(t,1,16e3,1,16),s=new FormData,o=localStorage.getItem(z.WHISPER_PROMPT_STORAGE_KEY);o&&s.append("prompt",o),s.append("interim",String(n)),s.append("file",new Blob([a],{type:"audio/wav"}),"speech.wav");let i=await fetch((0,g.apiUrl)("/api/whisper/transcribe"),{method:"POST",body:s});if(!i.ok){let e=await i.json().catch(()=>null);throw Error(e?.error||`HTTPエラー: ${i.status}`)}return await i.json()},[]),w=(0,s.useCallback)(e=>{x.current=!0,b.current=h.current.length,C(function(e){let t=new Float32Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}(h.current),!0).then(({text:t})=>{c(n=>n.map(n=>n.id===e&&"speaking"===n.phase?{...n,text:t}:n))}).catch(()=>{}).finally(()=>{x.current=!1})},[C]),T=(0,s.useCallback)((e,t)=>{let n=C(t.subarray(0,Math.max(0,t.length-16e3)),!1);y.current=y.current.then(async()=>{try{let{text:t}=await n;t?(S.current(t),k(e,t)):R(e)}catch(t){R(e),B.toaster.create({type:"error",title:"文字起こしに失敗しました",description:t instanceof Error?t.message:String(t)})}})},[C,R,k]),I=(0,s.useCallback)(async()=>{let e=f.current;f.current=null,m.current=null,h.current=[],v.current=[],d.set(0),c(e=>e.filter(e=>"speaking"!==e.phase)),l("off"),await e?.destroy().catch(()=>{})},[d]),O=(0,s.useCallback)(async()=>{l("starting");try{let{MicVAD:t}=await e.A(61531),n=Math.ceil(9.375)+1,r=await t.new({model:"v5",baseAssetPath:"/vad/",onnxWASMBasePath:"/vad/",positiveSpeechThreshold:.5,negativeSpeechThreshold:.35,redemptionMs:1300,preSpeechPadMs:300,minSpeechMs:300,ortConfig:e=>{e.env.logLevel="error",e.env.wasm.numThreads=1},onFrameProcessed:(e,t)=>{d.set(function(e){let t=0;for(let n=0;n<e.length;n++)t+=e[n]*e[n];let n=Math.sqrt(t/e.length);return Math.min(1,Math.max(0,((n>0?20*Math.log10(n):-60)- -60)/50))}(t));let r=m.current;if(null===r){let e=v.current;e.push(t),e.length>n&&e.shift();return}h.current.push(t);let a=h.current.length-b.current;!x.current&&32*a>=800&&w(r)},onSpeechStart:()=>{let e=++p.current;m.current=e,h.current=v.current,v.current=[],b.current=0,c(t=>[...t,{id:e,text:"",phase:"speaking"}])},onVADMisfire:()=>{let e=m.current;m.current=null,h.current=[],null!==e&&R(e)},onSpeechEnd:e=>{let t=m.current;m.current=null,h.current=[],null!==t&&(c(e=>e.map(e=>e.id===t?{...e,phase:"finalizing"}:e)),T(t,e))}});if(E.current)return void await r.destroy();f.current=r,l("listening")}catch(e){l("off"),B.toaster.create({type:"error",title:"音声入力を開始できませんでした",description:e instanceof Error?e.message:String(e)})}},[T,d,R,w]),N=(0,s.useCallback)(()=>{"listening"===i?I():"off"===i&&O()},[i,O,I]);return(0,s.useEffect)(()=>(E.current=!1,()=>{E.current=!0,f.current?.destroy().catch(()=>{}),f.current=null}),[]),{enabled:n,serverReady:null!==a&&H.includes(a),status:i,utterances:u,levelStore:d,toggle:N}}({onFinal:(0,s.useCallback)(e=>{if(!r)return;let t=y.current.get(r);t?.sendInput(e),t?.focus()},[r])}),A=(0,s.useCallback)(e=>{m(t=>{let n=new Set(t);return n.delete(e),n}),v(t=>{let n=new Map(t);return n.delete(e),n}),y.current.delete(e),l(e)},[l]);return(0,a.jsxs)("div",{className:"flex flex-col flex-1 min-h-0",children:[(0,a.jsx)("div",{className:"px-4 pt-4 flex-shrink-0",children:(0,a.jsx)(F,{tabs:n,activeTabId:r,onTabChange:E,onTabCreateTerminal:k,onTabCreateClaude:C,localLlmOption:M,onTabCreateLocalLlm:w,onTabDelete:A,tabStatusMap:h,voiceInput:n.length>0||"off"!==j.status?j:void 0})}),(0,a.jsxs)("div",{className:"flex-1 min-h-0 relative",children:[n.map(e=>{let n=f.has(e.tab_id),s=e.tab_id===r;return n?(0,a.jsx)("div",{className:"absolute inset-0 flex flex-col px-4 pb-4 pt-2",style:{visibility:s?"visible":"hidden",pointerEvents:s?"auto":"none"},children:(0,a.jsx)(G.TerminalView,{ref:t=>{t?y.current.set(e.tab_id,t):y.current.delete(e.tab_id)},tabId:e.tab_id,isActive:s,cwd:t.worktreePath,launchClaude:"terminal"!==e.mode,className:"h-full",initialTodos:e.todos,initialClaudeStatus:e.status,onTodosUpdated:u,onStatusChange:S})},e.tab_id):null}),0===n.length&&(0,a.jsxs)("div",{className:"h-full flex flex-col items-center justify-center gap-4 px-4",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"起動するタブを選んでください"}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center justify-center gap-2",children:[(0,a.jsxs)(N.Button,{onClick:C,children:[(0,a.jsx)(P.ClaudeIcon,{className:"w-4 h-4"}),"Claude Code"]}),M&&(0,a.jsx)("span",{title:M.model?`${(0,L.localLlmTabLabel)(M.provider)}: ${M.model}`:"ローカルLLMのモデルが未設定です(Settings で設定)",children:(0,a.jsxs)(N.Button,{variant:"outline",onClick:()=>void w(),disabled:!M.model,children:[(0,a.jsx)(P.LocalLlmTabIcon,{provider:M.provider,className:"w-4 h-4"}),(0,L.localLlmTabLabel)(M.provider)]})}),(0,a.jsxs)(N.Button,{variant:"outline",onClick:k,children:[(0,a.jsx)(p,{className:"w-4 h-4"}),"Terminal"]})]})]}),(0,a.jsx)(U,{utterances:j.utterances}),n.length>0&&!r&&(0,a.jsx)("div",{className:"h-full flex items-center justify-center text-muted-foreground text-sm",children:"Select a tab to view terminal"})]})]})});var Y=e.i(99059);e.s([],38727),e.i(38727),e.i(47167);var q=e.i(67805);let J=s.createContext(void 0);function X(e){let t=s.useContext(J);if(void 0===t&&!e)throw Error((0,q.default)(33));return t}let Z=s.createContext(void 0);function Q(e){let t=s.useContext(Z);if(void 0===t&&!e)throw Error((0,q.default)(36));return t}var ee=e.i(27601),et=e.i(83590);let en=s.forwardRef(function(e,t){let{className:n,render:r,...a}=e,{store:s}=Q(),{arrowRef:o,side:i,align:l,arrowUncentered:u,arrowStyles:c}=X(),d=s.useState("open");return(0,ee.useRenderElement)("div",e,{ref:[o,t],stateAttributesMapping:et.popupStateMapping,state:{open:d,side:i,align:l,uncentered:u},props:{style:c,"aria-hidden":!0,...a}})});var er=e.i(84759);let ea=s.createContext(void 0);function es(e=!0){let t=s.useContext(ea);if(void 0===t&&!e)throw Error((0,q.default)(25));return t}var eo=e.i(3404);let ei={...et.popupStateMapping,...er.transitionStatusMapping},el=s.forwardRef(function(e,t){let{className:n,render:r,...a}=e,{store:s}=Q(),o=s.useState("open"),i=s.useState("mounted"),l=s.useState("transitionStatus"),u=s.useState("lastOpenChangeReason"),c=es();return(0,ee.useRenderElement)("div",e,{ref:c?.backdropRef?[t,c.backdropRef]:t,state:{open:o,transitionStatus:l},stateAttributesMapping:ei,props:[{role:"presentation",hidden:!i,style:{pointerEvents:u===eo.REASONS.triggerHover?"none":void 0,userSelect:"none",WebkitUserSelect:"none"}},a]})});var eu=e.i(76477),ec=e.i(94349);let ed=s.createContext(void 0);var ef=e.i(26292),ep=e.i(91730),em=e.i(19805),eg=e.i(57666);function eh(e){let{closeOnClick:t,highlighted:n,id:r,nodeId:a,store:o,typingRef:i,itemRef:l,itemMetadata:u}=e,{events:c}=o.useState("floatingTreeRoot"),d=es(!0),f=void 0!==d;return s.useMemo(()=>({id:r,role:"menuitem",tabIndex:n?0:-1,onKeyDown(e){" "===e.key&&i?.current&&e.preventDefault()},onMouseMove(e){a&&c.emit("itemhover",{nodeId:a,target:e.currentTarget})},onClick(e){t&&c.emit("close",{domEvent:e,reason:eo.REASONS.itemPress})},onMouseUp(e){if(d){let t=d.initialCursorPointRef.current;if(d.initialCursorPointRef.current=null,f&&t&&1>=Math.abs(e.clientX-t.x)&&1>=Math.abs(e.clientY-t.y)||f&&!eg.isMac&&2===e.button)return}l.current&&o.context.allowMouseUpTriggerRef.current&&(!f||2===e.button)&&(!u||"regular-item"===u.type)&&l.current.click()}}),[t,n,r,c,a,o,i,l,d,f,u])}let ev={type:"regular-item"};function ex(e){let{closeOnClick:t,disabled:n=!1,highlighted:r,id:a,store:o,typingRef:i=o.context.typingRef,nativeButton:l,itemMetadata:u,nodeId:c}=e,d=s.useRef(null),{getButtonProps:f,buttonRef:p}=(0,ep.useButton)({disabled:n,focusableWhenDisabled:!0,native:l,composite:!0}),m=eh({closeOnClick:t,highlighted:r,id:a,nodeId:c,store:o,typingRef:i,itemRef:d,itemMetadata:u}),g=s.useCallback(e=>(0,em.mergeProps)(m,{onMouseEnter(){"submenu-trigger"===u.type&&u.setActive()}},e,f),[m,f,u]),h=(0,ef.useMergedRefs)(d,p);return s.useMemo(()=>({getItemProps:g,itemRef:h}),[g,h])}var eb=e.i(977);let ey=s.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},elementsRef:{current:[]},nextIndexRef:{current:0}}),eS=((t={})[t.None=0]="None",t[t.GuessFromOrder=1]="GuessFromOrder",t);function eE(e={}){let{label:t,metadata:n,textRef:r,indexGuessBehavior:a,index:o}=e,{register:i,unregister:l,subscribeMapChange:u,elementsRef:c,labelsRef:d,nextIndexRef:f}=s.useContext(ey),p=s.useRef(-1),[m,g]=s.useState(o??(a===eS.GuessFromOrder?()=>{if(-1===p.current){let e=f.current;f.current+=1,p.current=e}return p.current}:-1)),h=s.useRef(null),v=s.useCallback(e=>{if(h.current=e,-1!==m&&null!==e&&(c.current[m]=e,d)){let n=void 0!==t;d.current[m]=n?t:r?.current?.textContent??e.textContent}},[m,c,d,t,r]);return(0,eb.useIsoLayoutEffect)(()=>{if(null!=o)return;let e=h.current;if(e)return i(e,n),()=>{l(e)}},[o,i,l,n]),(0,eb.useIsoLayoutEffect)(()=>{if(null==o)return u(e=>{let t=h.current?e.get(h.current)?.index:null;null!=t&&g(t)})},[o,u,g]),s.useMemo(()=>({ref:v,index:m}),[m,v])}var eR=e.i(89879);let ek=((n={}).checked="data-checked",n.unchecked="data-unchecked",n.disabled="data-disabled",n.highlighted="data-highlighted",n),eC={checked:e=>e?{[ek.checked]:""}:{[ek.unchecked]:""},...er.transitionStatusMapping};var ew=e.i(5963);let eT=s.forwardRef(function(e,t){let{render:n,className:r,id:o,label:i,nativeButton:l=!1,disabled:u=!1,closeOnClick:c=!1,checked:d,defaultChecked:f,onCheckedChange:p,...m}=e,g=eE({label:i}),h=X(!0),v=(0,eR.useBaseUiId)(o),{store:x}=Q(),b=x.useState("isActive",g.index),y=x.useState("itemProps"),[S,E]=(0,ec.useControlled)({controlled:d,default:f??!1,name:"MenuCheckboxItem",state:"checked"}),{getItemProps:R,itemRef:k}=ex({closeOnClick:c,disabled:u,highlighted:b,id:v,store:x,nativeButton:l,nodeId:h?.nodeId,itemMetadata:ev}),C=s.useMemo(()=>({disabled:u,highlighted:b,checked:S}),[u,b,S]),w=(0,eu.useStableCallback)(e=>{let t={...(0,ew.createChangeEventDetails)(eo.REASONS.itemPress,e.nativeEvent),preventUnmountOnClose:()=>{}};p?.(!S,t),t.isCanceled||E(e=>!e)}),T=(0,ee.useRenderElement)("div",e,{state:C,stateAttributesMapping:eC,props:[y,{role:"menuitemcheckbox","aria-checked":S,onClick:w},m,R],ref:[k,t,g.ref]});return(0,a.jsx)(ed.Provider,{value:C,children:T})});var eI=e.i(88841),eO=e.i(89269);let eN=s.forwardRef(function(e,t){let{render:n,className:r,keepMounted:a=!1,...o}=e,i=function(){let e=s.useContext(ed);if(void 0===e)throw Error((0,q.default)(30));return e}(),l=s.useRef(null),{transitionStatus:u,setMounted:c}=(0,eI.useTransitionStatus)(i.checked);(0,eO.useOpenChangeComplete)({open:i.checked,ref:l,onComplete(){i.checked||c(!1)}});let d={checked:i.checked,disabled:i.disabled,highlighted:i.highlighted,transitionStatus:u};return(0,ee.useRenderElement)("span",e,{state:d,ref:[t,l],stateAttributesMapping:eC,props:{"aria-hidden":!0,...o},enabled:a||i.checked})}),eM=s.createContext(void 0),ej=s.forwardRef(function(e,t){let{render:n,className:r,...o}=e,[i,l]=s.useState(void 0),u=s.useMemo(()=>({setLabelId:l}),[l]),c=(0,ee.useRenderElement)("div",e,{ref:t,props:{role:"group","aria-labelledby":i,...o}});return(0,a.jsx)(eM.Provider,{value:u,children:c})}),eA=s.forwardRef(function(e,t){let{className:n,render:r,id:a,...o}=e,i=(0,eR.useBaseUiId)(a),{setLabelId:l}=function(){let e=s.useContext(eM);if(void 0===e)throw Error((0,q.default)(31));return e}();return(0,eb.useIsoLayoutEffect)(()=>(l(i),()=>{l(void 0)}),[l,i]),(0,ee.useRenderElement)("div",e,{ref:t,props:{id:i,role:"presentation",...o}})}),eP=s.forwardRef(function(e,t){let{render:n,className:r,id:a,label:s,nativeButton:o=!1,disabled:i=!1,closeOnClick:l=!0,...u}=e,c=eE({label:s}),d=X(!0),f=(0,eR.useBaseUiId)(a),{store:p}=Q(),m=p.useState("isActive",c.index),g=p.useState("itemProps"),{getItemProps:h,itemRef:v}=ex({closeOnClick:l,disabled:i,highlighted:m,id:f,store:p,nativeButton:o,nodeId:d?.nodeId,itemMetadata:ev});return(0,ee.useRenderElement)("div",e,{state:{disabled:i,highlighted:m},props:[g,u,h],ref:[v,t,c.ref]})}),eL=s.forwardRef(function(e,t){let{render:n,className:r,id:a,label:o,closeOnClick:i=!1,...l}=e,u=s.useRef(null),c=eE({label:o}),d=X(!0),f=d?.nodeId,p=(0,eR.useBaseUiId)(a),{store:m}=Q(),g=m.useState("isActive",c.index),h=m.useState("itemProps"),v=m.context.typingRef,{getButtonProps:x,buttonRef:b}=(0,ep.useButton)({native:!1,composite:!0}),y=eh({closeOnClick:i,highlighted:g,id:p,nodeId:f,store:m,typingRef:v,itemRef:u}),S=s.useMemo(()=>({highlighted:g}),[g]);return(0,ee.useRenderElement)("a",e,{state:S,props:[h,l,function(e){return(0,em.mergeProps)(y,e,x)}],ref:[u,b,t,c.ref]})});var eD=e.i(88306),eF=e.i(61896),e_=e.i(60752),eU=e.i(92238),eB=e.i(18847);let ez={...et.popupStateMapping,...er.transitionStatusMapping},eH=s.forwardRef(function(e,t){let{render:n,className:r,finalFocus:o,...i}=e,{store:l}=Q(),{side:u,align:c}=X(),d=null!=(0,e_.useToolbarRootContext)(!0),f=l.useState("open"),p=l.useState("transitionStatus"),m=l.useState("popupProps"),g=l.useState("mounted"),h=l.useState("instantType"),v=l.useState("activeTriggerElement"),x=l.useState("parent"),b=l.useState("lastOpenChangeReason"),y=l.useState("rootId"),S=l.useState("floatingRootContext"),E=l.useState("floatingTreeRoot"),R=l.useState("closeDelay"),k=l.useState("activeTriggerElement"),C="context-menu"===x.type;(0,eO.useOpenChangeComplete)({open:f,ref:l.context.popupRef,onComplete(){f&&l.context.onOpenChangeComplete?.(!0)}}),s.useEffect(()=>{function e(e){l.setOpen(!1,(0,ew.createChangeEventDetails)(e.reason,e.domEvent))}return E.events.on("close",e),()=>{E.events.off("close",e)}},[E.events,l]);let w=l.useState("hoverEnabled"),T=l.useState("disabled");(0,eF.useHoverFloatingInteraction)(S,{enabled:w&&!T&&!C&&"menubar"!==x.type,closeDelay:R});let I={transitionStatus:p,side:u,align:c,open:f,nested:"menu"===x.type,instant:h},O=s.useCallback(e=>{l.set("popupElement",e)},[l]),N=(0,ee.useRenderElement)("div",e,{state:I,ref:[t,l.context.popupRef,O],stateAttributesMapping:ez,props:[m,{onKeyDown(e){d&&eU.COMPOSITE_KEYS.has(e.key)&&e.stopPropagation()}},(0,eB.getDisabledMountTransitionStyles)(p),i,{"data-rootownerid":y}]}),M=void 0===x.type||C;return(v||"menubar"===x.type&&b!==eo.REASONS.outsidePress)&&(M=!0),(0,a.jsx)(eD.FloatingFocusManager,{context:S,modal:C,disabled:!g,returnFocus:void 0===o?M:o,initialFocus:"menu"!==x.type,restoreFocus:!0,externalTree:"menubar"!==x.type?E:void 0,previousFocusableElement:k,nextFocusableElement:void 0===x.type?l.context.triggerFocusTargetRef:void 0,beforeContentFocusGuardRef:void 0===x.type?l.context.beforeContentFocusGuardRef:void 0,children:N})});var eW=e.i(37692);let eV=s.createContext(void 0),eG=s.forwardRef(function(e,t){let{keepMounted:n=!1,...r}=e,{store:s}=Q();return s.useState("mounted")||n?(0,a.jsx)(eV.Provider,{value:n,children:(0,a.jsx)(eW.FloatingPortal,{ref:t,...r})}):null});var e$=e.i(58130),eK=e.i(66745),eY=e.i(51665),eq=e.i(56590),eJ=e.i(30628);function eX(e){let{children:t,elementsRef:n,labelsRef:r,onMapChange:o}=e,i=(0,eu.useStableCallback)(o),l=s.useRef(0),u=(0,eJ.useRefWithInit)(eQ).current,c=(0,eJ.useRefWithInit)(eZ).current,[d,f]=s.useState(0),p=s.useRef(d),m=(0,eu.useStableCallback)((e,t)=>{c.set(e,t??null),p.current+=1,f(p.current)}),g=(0,eu.useStableCallback)(e=>{c.delete(e),p.current+=1,f(p.current)}),h=s.useMemo(()=>{let e=new Map;return Array.from(c.keys()).filter(e=>e.isConnected).sort(e0).forEach((t,n)=>{let r=c.get(t)??{};e.set(t,{...r,index:n})}),e},[c,d]);(0,eb.useIsoLayoutEffect)(()=>{if("function"!=typeof MutationObserver||0===h.size)return;let e=new MutationObserver(e=>{let t=new Set,n=e=>t.has(e)?t.delete(e):t.add(e);e.forEach(e=>{e.removedNodes.forEach(n),e.addedNodes.forEach(n)}),0===t.size&&(p.current+=1,f(p.current))});return h.forEach((t,n)=>{n.parentElement&&e.observe(n.parentElement,{childList:!0})}),()=>{e.disconnect()}},[h]),(0,eb.useIsoLayoutEffect)(()=>{p.current===d&&(n.current.length!==h.size&&(n.current.length=h.size),r&&r.current.length!==h.size&&(r.current.length=h.size),l.current=h.size),i(h)},[i,h,n,r,d]),(0,eb.useIsoLayoutEffect)(()=>()=>{n.current=[]},[n]),(0,eb.useIsoLayoutEffect)(()=>()=>{r&&(r.current=[])},[r]);let v=(0,eu.useStableCallback)(e=>(u.add(e),()=>{u.delete(e)}));(0,eb.useIsoLayoutEffect)(()=>{u.forEach(e=>e(h))},[u,h]);let x=s.useMemo(()=>({register:m,unregister:g,subscribeMapChange:v,elementsRef:n,labelsRef:r,nextIndexRef:l}),[m,g,v,n,r,l]);return(0,a.jsx)(ey.Provider,{value:x,children:t})}function eZ(){return new Map}function eQ(){return new Set}function e0(e,t){let n=e.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_FOLLOWING||n&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:n&Node.DOCUMENT_POSITION_PRECEDING||n&Node.DOCUMENT_POSITION_CONTAINS?1:0}var e1=e.i(36893),e2=e.i(7335),e5=e.i(67569),e3=e.i(77817);let e4=s.forwardRef(function(e,t){let{anchor:n,positionMethod:r="absolute",className:o,render:i,side:l,align:u,sideOffset:c=0,alignOffset:d=0,collisionBoundary:f="clipping-ancestors",collisionPadding:p=5,arrowPadding:m=5,sticky:g=!1,disableAnchorTracking:h=!1,collisionAvoidance:v=e2.DROPDOWN_COLLISION_AVOIDANCE,...x}=e,{store:b}=Q(),y=function(){let e=s.useContext(eV);if(void 0===e)throw Error((0,q.default)(32));return e}(),S=es(!0),E=b.useState("parent"),R=b.useState("floatingRootContext"),k=b.useState("floatingTreeRoot"),C=b.useState("mounted"),w=b.useState("open"),T=b.useState("modal"),I=b.useState("activeTriggerElement"),O=b.useState("transitionStatus"),N=b.useState("positionerElement"),M=b.useState("instantType"),j=b.useState("hasViewport"),A=b.useState("lastOpenChangeReason"),P=b.useState("floatingNodeId"),L=b.useState("floatingParentNodeId"),D=R.useState("domReferenceElement"),F=s.useRef(null),_=(0,e3.useAnimationsFinished)(N,!1,!1),U=n,B=c,z=d,H=u,W=v;"context-menu"===E.type&&(U=n??E.context?.anchor,H=H??"start",l||"center"===H||(z=e.alignOffset??2,B=e.sideOffset??-5));let V=l,G=H;"menu"===E.type?(V=V??"inline-end",G=G??"start",W=e.collisionAvoidance??e2.POPUP_COLLISION_AVOIDANCE):"menubar"===E.type&&(V=V??"bottom",G=G??"start");let $="context-menu"===E.type,K=(0,eq.useAnchorPositioning)({anchor:U,floatingRootContext:R,positionMethod:S?"fixed":r,mounted:C,side:V,sideOffset:B,align:G,alignOffset:z,arrowPadding:$?0:m,collisionBoundary:f,collisionPadding:p,sticky:g,nodeId:P,keepMounted:y,disableAnchorTracking:h,collisionAvoidance:W,shiftCrossAxis:$&&!("side"in W&&"flip"===W.side),externalTree:k,adaptiveOrigin:j?e5.adaptiveOrigin:void 0}),Y=s.useMemo(()=>{let e={};return w||(e.pointerEvents="none"),{role:"presentation",hidden:!C,style:{...K.positionerStyles,...e}}},[w,C,K.positionerStyles]);s.useEffect(()=>{function e(e){e.open&&(e.parentNodeId===P&&b.set("hoverEnabled",!1),e.nodeId!==P&&e.parentNodeId===b.select("floatingParentNodeId")&&b.setOpen(!1,(0,ew.createChangeEventDetails)(eo.REASONS.siblingOpen)))}return k.events.on("menuopenchange",e),()=>{k.events.off("menuopenchange",e)}},[b,k.events,P]),s.useEffect(()=>{if(null!=b.select("floatingParentNodeId"))return k.events.on("menuopenchange",e),()=>{k.events.off("menuopenchange",e)};function e(e){if(e.open||e.nodeId!==b.select("floatingParentNodeId"))return;let t=e.reason??eo.REASONS.siblingOpen;b.setOpen(!1,(0,ew.createChangeEventDetails)(t))}},[k.events,b]);let X=(0,eK.useTimeout)();s.useEffect(()=>{w||X.clear()},[w,X]),s.useEffect(()=>{function e(e){if(w&&e.nodeId===b.select("floatingParentNodeId"))if(e.target&&I&&I!==e.target){let e=b.select("closeDelay");e>0?X.isStarted()||X.start(e,()=>{b.setOpen(!1,(0,ew.createChangeEventDetails)(eo.REASONS.siblingOpen))}):b.setOpen(!1,(0,ew.createChangeEventDetails)(eo.REASONS.siblingOpen))}else X.clear()}return k.events.on("itemhover",e),()=>{k.events.off("itemhover",e)}},[k.events,w,I,b,X]),s.useEffect(()=>{let e={open:w,nodeId:P,parentNodeId:L,reason:b.select("lastOpenChangeReason")};k.events.emit("menuopenchange",e)},[k.events,w,b,P,L]),(0,eb.useIsoLayoutEffect)(()=>{let e=F.current;if(D&&(F.current=D),e&&D&&D!==e){b.set("instantType",void 0);let e=new AbortController;return _(()=>{b.set("instantType","trigger-change")},e.signal),()=>{e.abort()}}},[D,_,b]);let Z={open:w,side:K.side,align:K.align,anchorHidden:K.anchorHidden,nested:"menu"===E.type,instant:M},en=s.useMemo(()=>({side:K.side,align:K.align,arrowRef:K.arrowRef,arrowUncentered:K.arrowUncentered,arrowStyles:K.arrowStyles,nodeId:K.context.nodeId}),[K.side,K.align,K.arrowRef,K.arrowUncentered,K.arrowStyles,K.context.nodeId]),er=(0,ee.useRenderElement)("div",e,{state:Z,stateAttributesMapping:et.popupStateMapping,ref:[t,b.useStateSetter("positionerElement")],props:[Y,(0,eB.getDisabledMountTransitionStyles)(O),x]}),ea=C&&"menu"!==E.type&&("menubar"!==E.type&&T&&A!==eo.REASONS.triggerHover||"menubar"===E.type&&E.context.modal),ei=null;return"menubar"===E.type?ei=E.context.contentElement:void 0===E.type&&(ei=I),(0,a.jsxs)(J.Provider,{value:en,children:[ea&&(0,a.jsx)(e1.InternalBackdrop,{ref:"context-menu"===E.type||"nested-context-menu"===E.type?E.context.internalBackdropRef:null,inert:(0,e$.inertValue)(!w),cutout:ei}),(0,a.jsx)(eY.FloatingNode,{id:P,children:(0,a.jsx)(eX,{elementsRef:b.context.itemDomElements,labelsRef:b.context.itemLabels,children:er})})]})}),e6=s.createContext(void 0),e9=s.memo(s.forwardRef(function(e,t){let{render:n,className:r,value:o,defaultValue:i,onValueChange:l,disabled:u=!1,...c}=e,[d,f]=(0,ec.useControlled)({controlled:o,default:i,name:"MenuRadioGroup"}),p=(0,eu.useStableCallback)(l),m=(0,eu.useStableCallback)((e,t)=>{p?.(e,t),t.isCanceled||f(e)}),g=(0,ee.useRenderElement)("div",e,{state:{disabled:u},ref:t,props:{role:"group","aria-disabled":u||void 0,...c}}),h=s.useMemo(()=>({value:d,setValue:m,disabled:u}),[d,m,u]);return(0,a.jsx)(e6.Provider,{value:h,children:g})})),e8=s.createContext(void 0),e7=s.forwardRef(function(e,t){let{render:n,className:r,id:o,label:i,nativeButton:l=!1,disabled:u=!1,closeOnClick:c=!1,value:d,...f}=e,p=eE({label:i}),m=X(!0),g=(0,eR.useBaseUiId)(o),{store:h}=Q(),v=h.useState("isActive",p.index),x=h.useState("itemProps"),{value:b,setValue:y,disabled:S}=function(){let e=s.useContext(e6);if(void 0===e)throw Error((0,q.default)(34));return e}(),E=S||u,R=b===d,{getItemProps:k,itemRef:C}=ex({closeOnClick:c,disabled:E,highlighted:v,id:g,store:h,nativeButton:l,nodeId:m?.nodeId,itemMetadata:ev}),w=s.useMemo(()=>({disabled:E,highlighted:v,checked:R}),[E,v,R]),T=(0,eu.useStableCallback)(e=>{y(d,{...(0,ew.createChangeEventDetails)(eo.REASONS.itemPress,e.nativeEvent),preventUnmountOnClose:()=>{}})}),I=(0,ee.useRenderElement)("div",e,{state:w,stateAttributesMapping:eC,props:[x,{role:"menuitemradio","aria-checked":R,onClick:T},f,k],ref:[C,t,p.ref]});return(0,a.jsx)(e8.Provider,{value:w,children:I})}),te=s.forwardRef(function(e,t){let{render:n,className:r,keepMounted:a=!1,...o}=e,i=function(){let e=s.useContext(e8);if(void 0===e)throw Error((0,q.default)(35));return e}(),l=s.useRef(null),{transitionStatus:u,setMounted:c}=(0,eI.useTransitionStatus)(i.checked);(0,eO.useOpenChangeComplete)({open:i.checked,ref:l,onComplete(){i.checked||c(!1)}});let d={checked:i.checked,disabled:i.disabled,highlighted:i.highlighted,transitionStatus:u};return(0,ee.useRenderElement)("span",e,{state:d,stateAttributesMapping:eC,ref:[t,l],props:{"aria-hidden":!0,...o},enabled:a||i.checked})});var tt=e.i(83799),tn=e.i(58509),tr=e.i(66196),ta=e.i(17514),ts=e.i(3851),to=e.i(33605),ti=e.i(89633),tl=e.i(29315),tu=e.i(231),tc=e.i(90219),td=e.i(47857),tf=e.i(82033),tp=e.i(43801),tm=e.i(98442),tg=e.i(494);function th(e,t,n){switch(e){case"vertical":return t;case"horizontal":return n;default:return t||n}}function tv(e,t){return th(t,e===tg.ARROW_UP||e===tg.ARROW_DOWN,e===tg.ARROW_LEFT||e===tg.ARROW_RIGHT)}function tx(e,t,n){return th(t,e===tg.ARROW_DOWN,n?e===tg.ARROW_LEFT:e===tg.ARROW_RIGHT)||"Enter"===e||" "===e||""===e}var tb=e.i(26665),ty=e.i(6157);let tS=s.createContext(null);function tE(e){let t=s.useContext(tS);if(null===t&&!e)throw Error((0,q.default)(5));return t}var tR=e.i(79144),tk=e.i(50091),tC=e.i(83921),tw=e.i(98263),tT=e.i(89429),tI=e.i(628),tO=e.i(69375);let tN={...tI.popupStoreSelectors,disabled:(0,tC.createSelector)(e=>"menubar"===e.parent.type&&e.parent.context.disabled||e.disabled),modal:(0,tC.createSelector)(e=>(void 0===e.parent.type||"context-menu"===e.parent.type)&&(e.modal??!0)),allowMouseEnter:(0,tC.createSelector)(e=>e.allowMouseEnter),stickIfOpen:(0,tC.createSelector)(e=>e.stickIfOpen),parent:(0,tC.createSelector)(e=>e.parent),rootId:(0,tC.createSelector)(e=>"menu"===e.parent.type?e.parent.store.select("rootId"):void 0!==e.parent.type?e.parent.context.rootId:e.rootId),activeIndex:(0,tC.createSelector)(e=>e.activeIndex),isActive:(0,tC.createSelector)((e,t)=>e.activeIndex===t),hoverEnabled:(0,tC.createSelector)(e=>e.hoverEnabled),instantType:(0,tC.createSelector)(e=>e.instantType),lastOpenChangeReason:(0,tC.createSelector)(e=>e.openChangeReason),floatingTreeRoot:(0,tC.createSelector)(e=>"menu"===e.parent.type?e.parent.store.select("floatingTreeRoot"):e.floatingTreeRoot),floatingNodeId:(0,tC.createSelector)(e=>e.floatingNodeId),floatingParentNodeId:(0,tC.createSelector)(e=>e.floatingParentNodeId),itemProps:(0,tC.createSelector)(e=>e.itemProps),closeDelay:(0,tC.createSelector)(e=>e.closeDelay),hasViewport:(0,tC.createSelector)(e=>e.hasViewport),keyboardEventRelay:(0,tC.createSelector)(e=>e.keyboardEventRelay?e.keyboardEventRelay:"menu"===e.parent.type?e.parent.store.select("keyboardEventRelay"):void 0)};class tM extends tw.ReactStore{constructor(e){super({...{...(0,tI.createInitialPopupStoreState)(),disabled:!1,modal:!0,allowMouseEnter:!1,stickIfOpen:!0,parent:{type:void 0},rootId:void 0,activeIndex:null,hoverEnabled:!0,instantType:void 0,openChangeReason:null,floatingTreeRoot:new tT.FloatingTreeStore,floatingNodeId:void 0,floatingParentNodeId:null,itemProps:ta.EMPTY_OBJECT,keyboardEventRelay:void 0,closeDelay:0,hasViewport:!1},...e},{positionerRef:s.createRef(),popupRef:s.createRef(),typingRef:{current:!1},itemDomElements:{current:[]},itemLabels:{current:[]},allowMouseUpTriggerRef:{current:!1},triggerFocusTargetRef:s.createRef(),beforeContentFocusGuardRef:s.createRef(),onOpenChangeComplete:void 0,triggerElements:new tO.PopupTriggerMap},tN),this.unsubscribeParentListener=this.observe("parent",e=>{if(this.unsubscribeParentListener?.(),"menu"===e.type){let t=e.store.select("rootId"),n=e.store.select("floatingTreeRoot"),r=e.store.select("keyboardEventRelay");this.unsubscribeParentListener=e.store.subscribe(()=>{let a=e.store.select("rootId"),s=e.store.select("floatingTreeRoot"),o=e.store.select("keyboardEventRelay");(t!==a||n!==s||r!==o)&&(t=a,n=s,r=o,this.notifyAll())}),this.context.allowMouseUpTriggerRef=e.store.context.allowMouseUpTriggerRef;return}void 0!==e.type&&(this.context.allowMouseUpTriggerRef=e.context.allowMouseUpTriggerRef),this.unsubscribeParentListener=null})}setOpen(e,t){this.state.floatingRootContext.context.events.emit("setOpen",{open:e,eventDetails:t})}static useStore(e,t){let n=(0,eJ.useRefWithInit)(()=>new tM(t)).current;return e??n}unsubscribeParentListener=null}var tj=e.i(58642);let tA=s.createContext(void 0);function tP(){return s.useContext(tA)}let tL=(0,ts.fastComponent)(function(e){let t,n,{children:r,open:o,onOpenChange:i,onOpenChangeComplete:l,defaultOpen:u=!1,disabled:c=!1,modal:d,loopFocus:f=!0,orientation:p="vertical",actionsRef:m,closeParentOnEsc:g=!1,handle:h,triggerId:v,defaultTriggerId:x=null,highlightItemOnHover:b=!0}=e,y=es(!0),S=Q(!0),E=tE(!0),R=tP(),k=s.useMemo(()=>R&&S?{type:"menu",store:S.store}:E?{type:"menubar",context:E}:y&&!S?{type:"context-menu",context:y}:{type:void 0},[y,S,E,R]),C=tM.useStore(h?.store,{open:u,openProp:o,activeTriggerId:x,triggerIdProp:v,parent:k});(0,tn.useOnFirstRender)(()=>{void 0===o&&!1===C.state.open&&!0===u&&C.update({open:!0,activeTriggerId:x})}),C.useControlledProp("openProp",o),C.useControlledProp("triggerIdProp",v),C.useContextCallback("onOpenChangeComplete",l);let w=C.useState("floatingTreeRoot"),T=(0,eY.useFloatingNodeId)(w),I=(0,eY.useFloatingParentNodeId)();(0,eb.useIsoLayoutEffect)(()=>{y&&!S?C.update({parent:{type:"context-menu",context:y},floatingNodeId:T,floatingParentNodeId:I}):S&&C.update({floatingNodeId:T,floatingParentNodeId:I})},[y,S,T,I,C]);let O=C.useState("open"),N=C.useState("activeTriggerElement"),M=C.useState("positionerElement"),j=C.useState("hoverEnabled"),A=C.useState("modal"),P=C.useState("disabled"),L=C.useState("lastOpenChangeReason"),D=C.useState("parent"),F=C.useState("activeIndex"),_=C.useState("payload"),U=C.useState("floatingParentNodeId"),B=s.useRef(null),z=null!=U;C.useSyncedValues({disabled:c,modal:void 0===D.type?d:void 0,rootId:(0,tt.useId)()});let{openMethod:H,triggerProps:W}=(0,tk.useOpenInteractionType)(O);(0,tj.useImplicitActiveTrigger)(C);let{forceUnmount:V}=(0,tj.useOpenStateTransitions)(O,C,()=>{C.update({allowMouseEnter:!1,stickIfOpen:!0})}),G=s.useRef("context-menu"!==D.type),$=(0,eK.useTimeout)();s.useEffect(()=>{if(O||(B.current=null),"context-menu"===D.type){if(!O){$.clear(),G.current=!1;return}$.start(500,()=>{G.current=!0})}},[$,O,D.type]),(0,tr.useScrollLock)(O&&A&&L!==eo.REASONS.triggerHover&&"touch"!==H,M),(0,eb.useIsoLayoutEffect)(()=>{O||j||C.set("hoverEnabled",!0)},[O,j,C]);let K=s.useRef(!0),Y=(0,eK.useTimeout)(),q=(0,eu.useStableCallback)((e,n)=>{let r=n.reason;if(O===e&&n.trigger===N&&L===r||(n.preventUnmountOnClose=()=>{C.set("preventUnmountingOnClose",!0)},e||null!=n.trigger||(n.trigger=N??void 0),i?.(e,n),n.isCanceled))return;let a={open:e,nativeEvent:n.event,reason:n.reason,nested:z};t?.emit("openchange",a);let s=n.event;if(!1===e&&s?.type==="click"&&"touch"===s.pointerType&&!K.current)return;if(!e&&null!==F){let e=C.context.itemDomElements.current[F];queueMicrotask(()=>{e?.setAttribute("tabindex","-1")})}e&&r===eo.REASONS.triggerFocus?(K.current=!1,Y.start(300,()=>{K.current=!0})):(K.current=!0,Y.clear());let o=(r===eo.REASONS.triggerPress||r===eo.REASONS.itemPress)&&0===s.detail&&s?.isTrusted,l=!e&&(r===eo.REASONS.escapeKey||null==r),u={open:e,openChangeReason:r};B.current=n.event??null;let c=n.trigger?.id??null;(c||e)&&(u.activeTriggerId=c,u.activeTriggerElement=n.trigger??null),C.update(u),"menubar"===D.type&&(r===eo.REASONS.triggerFocus||r===eo.REASONS.focusOut||r===eo.REASONS.triggerHover||r===eo.REASONS.listNavigation||r===eo.REASONS.siblingOpen)?C.set("instantType","group"):o||l?C.set("instantType",o?"click":"dismiss"):C.set("instantType",void 0)}),J=s.useCallback(e=>{let t=(0,ew.createChangeEventDetails)(e);return t.preventUnmountOnClose=()=>{C.set("preventUnmountingOnClose",!0)},t},[C]),X=s.useCallback(()=>{C.setOpen(!1,J(eo.REASONS.imperativeAction))},[C,J]);s.useImperativeHandle(m,()=>({unmount:V,close:X}),[V,X]),"context-menu"===D.type&&(n=D.context),s.useImperativeHandle(n?.positionerRef,()=>M,[M]),s.useImperativeHandle(n?.actionsRef,()=>({setOpen:q}),[q]);let ee=(0,ty.useSyncedFloatingRootContext)({popupStore:C,onOpenChange:q});t=ee.context.events,s.useEffect(()=>{let e=({open:e,eventDetails:t})=>q(e,t);return t.on("setOpen",e),()=>{t?.off("setOpen",e)}},[t,q]);let et=(0,to.useDismiss)(ee,{enabled:!P,bubbles:{escapeKey:g&&"menu"===D.type},outsidePress:()=>"context-menu"!==D.type||B.current?.type==="contextmenu"||G.current,externalTree:z?w:void 0}),en=(0,tb.useRole)(ee,{role:"menu"}),er=(0,tR.useDirection)(),ea=s.useCallback(e=>{C.select("activeIndex")!==e&&C.set("activeIndex",e)},[C]),ei=function(e,t){let n="rootStore"in e?e.rootStore:e,r=n.useState("open"),a=n.useState("floatingElement"),o=n.useState("domReferenceElement"),i=n.context.dataRef,{listRef:l,activeIndex:u,onNavigate:c=()=>{},enabled:d=!0,selectedIndex:f=null,allowEscape:p=!1,loopFocus:m=!1,nested:g=!1,rtl:h=!1,virtual:v=!1,focusItemOnOpen:x="auto",focusItemOnHover:b=!0,openOnArrowKeyDown:y=!0,disabledIndices:S,orientation:E="vertical",parentOrientation:R,cols:k=1,id:C,resetOnPointerLeave:w=!0,externalTree:T}=t,I=(0,td.getFloatingFocusElement)(a),O=(0,tu.useValueAsRef)(I),N=(0,eY.useFloatingParentNodeId)(),M=(0,eY.useFloatingTree)(T);(0,eb.useIsoLayoutEffect)(()=>{i.current.orientation=E},[i,E]);let j=(0,td.isTypeableCombobox)(o),A=s.useRef(x),P=s.useRef(f??-1),L=s.useRef(null),D=s.useRef(!0),F=(0,eu.useStableCallback)(e=>{c(-1===P.current?null:P.current,e)}),_=s.useRef(F),U=s.useRef(!!a),B=s.useRef(r),z=s.useRef(!1),H=s.useRef(!1),W=(0,tu.useValueAsRef)(S),V=(0,tu.useValueAsRef)(r),G=(0,tu.useValueAsRef)(f),$=(0,tu.useValueAsRef)(w),K=(0,eu.useStableCallback)(()=>{function e(e){v?M?.events.emit("virtualfocus",e):(0,tm.enqueueFocus)(e,{sync:z.current,preventScroll:!0})}let t=l.current[P.current],n=H.current;t&&e(t),(z.current?e=>e():requestAnimationFrame)(()=>{let r=l.current[P.current]||t;!r||(t||e(r),q&&(n||!D.current)&&r.scrollIntoView?.({block:"nearest",inline:"nearest"}))})});(0,eb.useIsoLayoutEffect)(()=>{d&&(r&&a?(P.current=f??-1,A.current&&null!=f&&(H.current=!0,F())):U.current&&(P.current=-1,_.current()))},[d,r,a,f,F]),(0,eb.useIsoLayoutEffect)(()=>{if(d){if(!r){z.current=!1;return}if(a)if(null==u){if(z.current=!1,null!=G.current)return;if(U.current&&(P.current=-1,K()),(!B.current||!U.current)&&A.current&&(null!=L.current||!0===A.current&&null==L.current)){let e=0,t=()=>{null==l.current[0]?(e<2&&(e?requestAnimationFrame:queueMicrotask)(t),e+=1):(P.current=null==L.current||tx(L.current,E,h)||g?(0,tp.getMinListIndex)(l):(0,tp.getMaxListIndex)(l),L.current=null,F())};t()}}else(0,tp.isIndexOutOfListBounds)(l,u)||(P.current=u,K(),H.current=!1)}},[d,r,a,u,G,g,l,E,h,F,K,W]),(0,eb.useIsoLayoutEffect)(()=>{if(!d||a||!M||v||!U.current)return;let e=M.nodesRef.current,t=e.find(e=>e.id===N)?.context?.elements.floating,n=(0,td.activeElement)((0,tc.ownerDocument)(a)),r=e.some(e=>e.context&&(0,td.contains)(e.context.elements.floating,n));t&&!r&&D.current&&t.focus({preventScroll:!0})},[d,a,M,N,v]),(0,eb.useIsoLayoutEffect)(()=>{_.current=F,B.current=r,U.current=!!a}),(0,eb.useIsoLayoutEffect)(()=>{r||(L.current=null,A.current=x)},[r,x]);let Y=null!=u,q=s.useMemo(()=>{function e(e){if(!V.current)return;let t=l.current.indexOf(e.currentTarget);-1!==t&&P.current!==t&&(P.current=t,F(e))}return{onFocus(t){z.current=!0,e(t)},onClick:({currentTarget:e})=>e.focus({preventScroll:!0}),onMouseMove(t){z.current=!0,H.current=!1,b&&e(t)},onPointerLeave(e){if(!V.current||!D.current||"touch"===e.pointerType)return;z.current=!0;let t=e.relatedTarget;if(!(!b||l.current.includes(t))&&$.current&&((0,tm.enqueueFocus)(null,{sync:!0}),P.current=-1,F(e),!v)){let e=O.current,t=(0,td.activeElement)((0,tc.ownerDocument)(e));e&&(0,td.contains)(e,t)&&e.focus({preventScroll:!0})}}}},[V,O,b,l,F,$,v]),J=s.useCallback(()=>R??M?.nodesRef.current.find(e=>e.id===N)?.context?.dataRef?.current.orientation,[N,M,R]),X=(0,eu.useStableCallback)(e=>{var t;let a,s;if(D.current=!1,z.current=!0,229===e.which||!V.current&&e.currentTarget===O.current)return;if(g&&(t=e.key,a=h?t===tg.ARROW_RIGHT:t===tg.ARROW_LEFT,s=t===tg.ARROW_UP,"both"===E||"horizontal"===E&&k&&k>1?"Escape"===t:th(E,a,s))){tv(e.key,J())||(0,tf.stopEvent)(e),n.setOpen(!1,(0,ew.createChangeEventDetails)(eo.REASONS.listNavigation,e.nativeEvent)),(0,tl.isHTMLElement)(o)&&(v?M?.events.emit("virtualfocus",o):o.focus());return}let i=P.current,u=(0,tp.getMinListIndex)(l,S),c=(0,tp.getMaxListIndex)(l,S);if(j||("Home"===e.key&&((0,tf.stopEvent)(e),P.current=u,F(e)),"End"===e.key&&((0,tf.stopEvent)(e),P.current=c,F(e))),k>1){let t=Array.from({length:l.current.length},()=>({width:1,height:1})),n=(0,tp.createGridCellMap)(t,k,!1),r=n.findIndex(e=>null!=e&&!(0,tp.isListIndexDisabled)(l,e,S)),a=n.reduce((e,t,n)=>null==t||(0,tp.isListIndexDisabled)(l,t,S)?e:n,-1),s=n[(0,tp.getGridNavigatedIndex)({current:n.map(e=>null!=e?l.current[e]:null)},{event:e,orientation:E,loopFocus:m,rtl:h,cols:k,disabledIndices:(0,tp.getGridCellIndices)([...("function"!=typeof S?S:null)||l.current.map((e,t)=>(0,tp.isListIndexDisabled)(l,t,S)?t:void 0),void 0],n),minIndex:r,maxIndex:a,prevIndex:(0,tp.getGridCellIndexOfCorner)(P.current>c?u:P.current,t,n,k,e.key===tg.ARROW_DOWN?"bl":e.key===(h?tg.ARROW_LEFT:tg.ARROW_RIGHT)?"tr":"tl"),stopEvent:!0})];if(null!=s&&(P.current=s,F(e)),"both"===E)return}if(tv(e.key,E)){if((0,tf.stopEvent)(e),r&&!v&&(0,td.activeElement)(e.currentTarget.ownerDocument)===e.currentTarget){P.current=tx(e.key,E,h)?u:c,F(e);return}tx(e.key,E,h)?m?i>=c?p&&i!==l.current.length?P.current=-1:(z.current=!1,P.current=u):P.current=(0,tp.findNonDisabledListIndex)(l,{startingIndex:i,disabledIndices:S}):P.current=Math.min(c,(0,tp.findNonDisabledListIndex)(l,{startingIndex:i,disabledIndices:S})):m?i<=u?p&&-1!==i?P.current=l.current.length:(z.current=!1,P.current=c):P.current=(0,tp.findNonDisabledListIndex)(l,{startingIndex:i,decrement:!0,disabledIndices:S}):P.current=Math.max(u,(0,tp.findNonDisabledListIndex)(l,{startingIndex:i,decrement:!0,disabledIndices:S})),(0,tp.isIndexOutOfListBounds)(l,P.current)&&(P.current=-1),F(e)}}),Z=s.useMemo(()=>v&&r&&Y&&{"aria-activedescendant":`${C}-${u}`},[v,r,Y,C,u]),Q=s.useMemo(()=>({"aria-orientation":"both"===E?void 0:E,...!j?Z:{},onKeyDown(e){if("Tab"===e.key&&e.shiftKey&&r&&!v){let t=(0,td.getTarget)(e.nativeEvent);if(t&&!(0,td.contains)(O.current,t))return;(0,tf.stopEvent)(e),n.setOpen(!1,(0,ew.createChangeEventDetails)(eo.REASONS.focusOut,e.nativeEvent)),(0,tl.isHTMLElement)(o)&&o.focus();return}X(e)},onPointerMove(){D.current=!0}}),[Z,X,O,E,j,n,r,v,o]),ee=s.useMemo(()=>{function e(e){"auto"===x&&(0,tf.isVirtualClick)(e.nativeEvent)&&(A.current=!v)}function t(e){A.current=x,"auto"===x&&(0,tf.isVirtualPointerEvent)(e.nativeEvent)&&(A.current=!0)}return{onKeyDown(e){var t,r;let a=n.select("open");D.current=!1;let s=e.key.startsWith("Arrow"),o=(t=e.key,r=J(),th(r,h?t===tg.ARROW_LEFT:t===tg.ARROW_RIGHT,t===tg.ARROW_DOWN)),i=tv(e.key,E),u=(g?o:i)||"Enter"===e.key||""===e.key.trim();if(v&&a)return X(e);if(a||y||!s){if(u){let t=tv(e.key,J());L.current=g&&t?null:e.key}if(g){o&&((0,tf.stopEvent)(e),a?(P.current=(0,tp.getMinListIndex)(l,W.current),F(e)):n.setOpen(!0,(0,ew.createChangeEventDetails)(eo.REASONS.listNavigation,e.nativeEvent,e.currentTarget)));return}i&&(null!=G.current&&(P.current=G.current),(0,tf.stopEvent)(e),!a&&y?n.setOpen(!0,(0,ew.createChangeEventDetails)(eo.REASONS.listNavigation,e.nativeEvent,e.currentTarget)):X(e),a&&F(e))}},onFocus(e){n.select("open")&&!v&&(P.current=-1,F(e))},onPointerDown:t,onPointerEnter:t,onMouseDown:e,onClick:e}},[X,W,x,l,g,F,n,y,E,J,h,G,v]),et=s.useMemo(()=>({...Z,...ee}),[Z,ee]);return s.useMemo(()=>d?{reference:et,floating:Q,item:q,trigger:ee}:{},[d,et,Q,ee,q])}(ee,{enabled:!P,listRef:C.context.itemDomElements,activeIndex:F,nested:void 0!==D.type,loopFocus:f,orientation:p,parentOrientation:"menubar"===D.type?D.context.orientation:void 0,rtl:"rtl"===er,disabledIndices:ta.EMPTY_ARRAY,onNavigate:ea,openOnArrowKeyDown:"context-menu"!==D.type,externalTree:z?w:void 0,focusItemOnHover:b}),el=s.useCallback(e=>{C.context.typingRef.current=e},[C]),ec=function(e,t){let n="rootStore"in e?e.rootStore:e,r=n.context.dataRef,a=n.useState("open"),{listRef:o,elementsRef:i,activeIndex:l,onMatch:u,onTypingChange:c,enabled:d=!0,resetMs:f=750,selectedIndex:p=null}=t,m=(0,eK.useTimeout)(),g=s.useRef(""),h=s.useRef(p??l??-1),v=s.useRef(null);(0,eb.useIsoLayoutEffect)(()=>{(a||null===p)&&(m.clear(),v.current=null,""!==g.current&&(g.current=""))},[a,p,m]),(0,eb.useIsoLayoutEffect)(()=>{a&&""===g.current&&(h.current=p??l??-1)},[a,p,l]);let x=(0,eu.useStableCallback)(e=>{e?r.current.typing||(r.current.typing=e,c?.(e)):r.current.typing&&(r.current.typing=e,c?.(e))}),b=(0,eu.useStableCallback)(e=>{function t(e,n,r=0){if(0===e.length)return -1;let a=(r%e.length+e.length)%e.length,s=n.toLocaleLowerCase();for(let t=0;t<e.length;t+=1){let n=(a+t)%e.length,r=e[n];if(r?.toLocaleLowerCase().startsWith(s)&&function(e){let t=i?.current[e];return!t||(0,tp.isElementVisible)(t)}(n))return n}return -1}let n=o.current;if(g.current.length>0&&" "===e.key&&((0,tf.stopEvent)(e),x(!0)),g.current.length>0&&" "!==g.current[0]&&-1===t(n,g.current)&&" "!==e.key&&x(!1),null==n||1!==e.key.length||e.ctrlKey||e.metaKey||e.altKey)return;a&&" "!==e.key&&((0,tf.stopEvent)(e),x(!0));let r=""===g.current;r&&(h.current=p??l??-1),n.every(e=>!e||e[0]?.toLocaleLowerCase()!==e[1]?.toLocaleLowerCase())&&g.current===e.key&&(g.current="",h.current=v.current),g.current+=e.key,m.start(f,()=>{g.current="",h.current=v.current,x(!1)});let s=r?p??l??-1:h.current,c=t(n,g.current,(s??0)+1);-1!==c?(u?.(c),v.current=c):" "!==e.key&&(g.current="",x(!1))}),y=(0,eu.useStableCallback)(e=>{let t=e.relatedTarget,r=n.select("domReferenceElement"),a=n.select("floatingElement"),s=(0,td.contains)(r,t),o=(0,td.contains)(a,t);s||o||(m.clear(),g.current="",h.current=v.current,x(!1))}),S=s.useMemo(()=>({onKeyDown:b,onBlur:y}),[b,y]),E=s.useMemo(()=>({onKeyDown:b,onBlur:y}),[b,y]);return s.useMemo(()=>d?{reference:S,floating:E}:{},[d,S,E])}(ee,{listRef:C.context.itemLabels,elementsRef:C.context.itemDomElements,activeIndex:F,resetMs:e2.TYPEAHEAD_RESET_MS,onMatch:e=>{O&&e!==F&&C.set("activeIndex",e)},onTypingChange:el}),{getReferenceProps:ed,getFloatingProps:ef,getItemProps:ep,getTriggerProps:eg}=(0,ti.useInteractions)([et,en,ei,ec]),eh=s.useMemo(()=>{let e=(0,em.mergeProps)(ed(),{onMouseMove(){C.set("allowMouseEnter",!0)}},W);return delete e.role,e},[ed,C,W]),ev=s.useMemo(()=>{let e=eg();if(!e)return e;let t=(0,em.mergeProps)(e,W);return delete t.role,delete t["aria-controls"],t},[eg,W]),ex=s.useMemo(()=>ef({onMouseMove(){C.set("allowMouseEnter",!0),"menu"===D.type&&C.set("hoverEnabled",!1)},onClick(){C.select("hoverEnabled")&&C.set("hoverEnabled",!1)},onKeyDown(e){let t=C.select("keyboardEventRelay");t&&!e.isPropagationStopped()&&t(e)}}),[ef,D.type,C]),ey=s.useMemo(()=>ep(),[ep]);C.useSyncedValues({floatingRootContext:ee,activeTriggerProps:eh,inactiveTriggerProps:ev,popupProps:ex,itemProps:ey});let eS=s.useMemo(()=>({store:C,parent:k}),[C,k]),eE=(0,a.jsx)(Z.Provider,{value:eS,children:"function"==typeof r?r({payload:_}):r});return void 0===D.type||"context-menu"===D.type?(0,a.jsx)(eY.FloatingTree,{externalTree:w,children:eE}):eE});var tD=e.i(74080),tF=e.i(37287),t_=e.i(4012),tU=e.i(32652);let tB=eg.isMac&&eg.isSafari;var tz=e.i(97254),tH=e.i(59266),tW=e.i(54694);function tV(e){let{render:t,className:n,state:r=ta.EMPTY_OBJECT,props:a=ta.EMPTY_ARRAY,refs:o=ta.EMPTY_ARRAY,metadata:i,stateAttributesMapping:l,tag:u="div",...c}=e,{compositeProps:d,compositeRef:f}=function(e={}){let{highlightItemOnHover:t,highlightedIndex:n,onHighlightedIndexChange:r}=(0,tW.useCompositeRootContext)(),{ref:a,index:o}=eE(e),i=n===o,l=s.useRef(null),u=(0,ef.useMergedRefs)(a,l);return{compositeProps:s.useMemo(()=>({tabIndex:i?0:-1,onFocus(){r(o)},onMouseMove(){let e=l.current;if(!t||!e)return;let n=e.hasAttribute("disabled")||"true"===e.ariaDisabled;i||n||e.focus()}}),[i,r,o,t]),compositeRef:u,index:o}}({metadata:i});return(0,ee.useRenderElement)(u,e,{state:r,ref:[...o,f],props:[d,...a,c],stateAttributesMapping:l})}var tG=e.i(72408);let t$=(0,ts.fastComponentRef)(function(e,t){let n,r,o,{render:i,className:l,disabled:u=!1,nativeButton:c=!0,id:d,openOnHover:f,delay:p=100,closeDelay:m=0,handle:g,payload:h,...v}=e,x=Q(!0),b=g?.store??x?.store;if(!b)throw Error((0,q.default)(85));let y=(0,eR.useBaseUiId)(d),S=b.useState("isTriggerActive",y),E=b.useState("floatingRootContext"),R=b.useState("isOpenedByTrigger",y),k=s.useRef(null),C=(n=es(!0),r=Q(!0),o=tE(!0),s.useMemo(()=>o?{type:"menubar",context:o}:n&&!r?{type:"context-menu",context:n}:{type:void 0},[n,r,o])),w=(0,tW.useCompositeRootContext)(!0),T=(0,eY.useFloatingTree)(),I=s.useMemo(()=>T??new tT.FloatingTreeStore,[T]),O=(0,eY.useFloatingNodeId)(I),N=(0,eY.useFloatingParentNodeId)(),{registerTrigger:M,isMountedByThisTrigger:j}=(0,tj.useTriggerDataForwarding)(y,k,b,{payload:h,closeDelay:m,parent:C,floatingTreeRoot:I,floatingNodeId:O,floatingParentNodeId:N,keyboardEventRelay:w?.relayKeyboardEvent}),A="menubar"===C.type,P=b.useState("disabled"),L=u||P||A&&C.context.disabled,{getButtonProps:D,buttonRef:F}=(0,ep.useButton)({disabled:L,native:c});s.useEffect(()=>{R||void 0!==C.type||(b.context.allowMouseUpTriggerRef.current=!1)},[b,R,C.type]);let _=s.useRef(null),U=(0,eK.useTimeout)(),B=(0,eu.useStableCallback)(e=>{if(!_.current)return;U.clear(),b.context.allowMouseUpTriggerRef.current=!1;let t=e.target;if((0,td.contains)(_.current,t)||(0,td.contains)(b.select("positionerElement"),t)||t===_.current||null!=t&&function e(t){return(0,tl.isHTMLElement)(t)&&t.hasAttribute("data-rootownerid")?t.getAttribute("data-rootownerid")??void 0:(0,tl.isLastTraversableNode)(t)?void 0:e((0,tl.getParentNode)(t))}(t)===b.select("rootId"))return;let n=function(e){let t=e.getBoundingClientRect(),n=window.getComputedStyle(e,"::before"),r=window.getComputedStyle(e,"::after");if("none"===n.content&&"none"===r.content)return t;let a=parseFloat(n.width)||0,s=parseFloat(n.height)||0,o=parseFloat(r.width)||0,i=parseFloat(r.height)||0,l=Math.max(t.width,a,o),u=Math.max(t.height,s,i),c=l-t.width,d=u-t.height;return{left:t.left-c/2,right:t.right+c/2,top:t.top-d/2,bottom:t.bottom+d/2}}(_.current);e.clientX>=n.left-2&&e.clientX<=n.right+2&&e.clientY>=n.top-2&&e.clientY<=n.bottom+2||I.events.emit("close",{domEvent:e,reason:eo.REASONS.cancelOpen})});s.useEffect(()=>{R&&b.select("lastOpenChangeReason")===eo.REASONS.triggerHover&&(0,tc.ownerDocument)(_.current).addEventListener("mouseup",B,{once:!0})},[R,B,b]);let z=A&&C.context.hasSubmenuOpen,H=f??z,W=(0,tz.useHoverReferenceInteraction)(E,{enabled:H&&!L&&"context-menu"!==C.type&&(!A||z&&!j),handleClose:(0,tF.safePolygon)({blockPointerEvents:!A}),mouseOnly:!0,move:!1,restMs:void 0===C.type?p:void 0,delay:{close:m},triggerElementRef:k,externalTree:I,isActiveTrigger:S}),V=function(e,t){let n=(0,eK.useTimeout)(),[r,a]=s.useState(!1);return(0,eb.useIsoLayoutEffect)(()=>{e&&"trigger-hover"===t?(a(!0),n.start(e2.PATIENT_CLICK_THRESHOLD,()=>{a(!1)})):e||(n.clear(),a(!1))},[e,t,n]),r}(R,b.select("lastOpenChangeReason")),G=(0,t_.useClick)(E,{enabled:!L&&"context-menu"!==C.type,event:R&&A?"click":"mousedown",toggle:!0,ignoreMouse:!1,stickIfOpen:void 0===C.type&&V}),$=function(e,t={}){let n="rootStore"in e?e.rootStore:e,{events:r,dataRef:a}=n.context,{enabled:o=!0,delay:i}=t,l=s.useRef(!1),u=s.useRef(null),c=(0,eK.useTimeout)(),d=s.useRef(!0);s.useEffect(()=>{let e=n.select("domReferenceElement");if(!o)return;let t=(0,tl.getWindow)(e);function r(){let e=n.select("domReferenceElement");!n.select("open")&&(0,tl.isHTMLElement)(e)&&e===(0,td.activeElement)((0,tc.ownerDocument)(e))&&(l.current=!0)}function a(){d.current=!0}function s(){d.current=!1}return t.addEventListener("blur",r),tB&&(t.addEventListener("keydown",a,!0),t.addEventListener("pointerdown",s,!0)),()=>{t.removeEventListener("blur",r),tB&&(t.removeEventListener("keydown",a,!0),t.removeEventListener("pointerdown",s,!0))}},[n,o]),s.useEffect(()=>{if(o)return r.on("openchange",e),()=>{r.off("openchange",e)};function e(e){if(e.reason===eo.REASONS.triggerPress||e.reason===eo.REASONS.escapeKey){let e=n.select("domReferenceElement");(0,tl.isElement)(e)&&(u.current=e,l.current=!0)}}},[r,o,n]);let f=s.useMemo(()=>({onMouseLeave(){l.current=!1,u.current=null},onFocus(e){let t=e.currentTarget;if(l.current){if(u.current===t)return;l.current=!1,u.current=null}let r=(0,td.getTarget)(e.nativeEvent);if((0,tl.isElement)(r)){if(tB&&!e.relatedTarget){if(!d.current&&!(0,td.isTypeableElement)(r))return}else if(!(0,td.matchesFocusVisible)(r))return}let a=(0,td.isTargetInsideEnabledTrigger)(e.relatedTarget,n.context.triggerElements),{nativeEvent:s,currentTarget:o}=e,f="function"==typeof i?i():i;n.select("open")&&a||0===f||void 0===f?n.setOpen(!0,(0,ew.createChangeEventDetails)(eo.REASONS.triggerFocus,s,o)):c.start(f,()=>{l.current||n.setOpen(!0,(0,ew.createChangeEventDetails)(eo.REASONS.triggerFocus,s,o))})},onBlur(e){l.current=!1,u.current=null;let t=e.relatedTarget,r=e.nativeEvent,s=(0,tl.isElement)(t)&&t.hasAttribute((0,tU.createAttribute)("focus-guard"))&&"outside"===t.getAttribute("data-type");c.start(0,()=>{let e=n.select("domReferenceElement"),o=(0,td.activeElement)(e?e.ownerDocument:document);if(!t&&o===e||(0,td.contains)(a.current.floatingContext?.refs.floating.current,o)||(0,td.contains)(e,o)||s)return;let i=t??o;(0,td.isTargetInsideEnabledTrigger)(i,n.context.triggerElements)||n.setOpen(!1,(0,ew.createChangeEventDetails)(eo.REASONS.triggerFocus,r))})}}),[a,n,c,i]);return s.useMemo(()=>o?{reference:f,trigger:f}:{},[o,f])}(E,{enabled:!L&&z}),K=function(e){let{enabled:t=!0,mouseDownAction:n,open:r}=e,a=s.useRef(!1);return s.useMemo(()=>t?{onMouseDown:e=>{("open"===n&&!r||"close"===n&&r)&&(a.current=!0,(0,tc.ownerDocument)(e.currentTarget).addEventListener("click",()=>{a.current=!1},{once:!0}))},onClick:e=>{a.current&&(a.current=!1,e.preventBaseUIHandler())}}:ta.EMPTY_OBJECT,[t,n,r])}({open:R,enabled:A,mouseDownAction:"open"}),Y=(0,ti.useInteractions)([G,$]),J={disabled:L,open:R},X=b.useState("triggerProps",j),Z=[_,t,F,M,k],en=[Y.getReferenceProps(),W??ta.EMPTY_OBJECT,X,{"aria-haspopup":"menu",id:y,onMouseDown:e=>{b.select("open")||(U.start(200,()=>{b.context.allowMouseUpTriggerRef.current=!0}),(0,tc.ownerDocument)(e.currentTarget).addEventListener("mouseup",B,{once:!0}))}},A?{role:"menuitem"}:{},K,v,D],er=s.useRef(null),ea=(0,eu.useStableCallback)(e=>{tD.flushSync(()=>{b.setOpen(!1,(0,ew.createChangeEventDetails)(eo.REASONS.focusOut,e.nativeEvent,e.currentTarget))});let t=(0,tH.getTabbableBeforeElement)(er.current);t?.focus()}),ei=(0,eu.useStableCallback)(e=>{let t=b.select("positionerElement");if(t&&(0,tH.isOutsideEvent)(e,t))b.context.beforeContentFocusGuardRef.current?.focus();else{tD.flushSync(()=>{b.setOpen(!1,(0,ew.createChangeEventDetails)(eo.REASONS.focusOut,e.nativeEvent,e.currentTarget))});let n=(0,tH.getTabbableAfterElement)(b.context.triggerFocusTargetRef.current||k.current);for(;null!==n&&(0,td.contains)(t,n);){let e=n;if((n=(0,tH.getNextTabbable)(n))===e)break}n?.focus()}}),el=(0,ee.useRenderElement)("button",e,{enabled:!A,stateAttributesMapping:et.pressableTriggerOpenStateMapping,state:J,ref:Z,props:en});return A?(0,a.jsx)(tV,{tag:"button",render:i,className:l,state:J,refs:Z,props:en,stateAttributesMapping:et.pressableTriggerOpenStateMapping}):R?(0,a.jsxs)(s.Fragment,{children:[(0,a.jsx)(tG.FocusGuard,{ref:er,onFocus:ea},`${y}-pre-focus-guard`),(0,a.jsx)(s.Fragment,{children:el},y),(0,a.jsx)(tG.FocusGuard,{ref:b.context.triggerFocusTargetRef,onFocus:ei},`${y}-post-focus-guard`)]}):(0,a.jsx)(s.Fragment,{children:el},y)});var tK=e.i(12666);let tY=((r={}).popupWidth="--popup-width",r.popupHeight="--popup-height",r),tq={activationDirection:e=>e?{"data-activation-direction":e}:null},tJ=s.forwardRef(function(e,t){let{render:n,className:r,children:a,...s}=e,{store:o}=Q(),{side:i}=X(),l=o.useState("instantType"),{children:u,state:c}=(0,tK.usePopupViewport)({store:o,side:i,cssVars:tY,children:a}),d={activationDirection:c.activationDirection,transitioning:c.transitioning,instant:l};return(0,ee.useRenderElement)("div",e,{state:d,ref:t,props:[s,{children:u}],stateAttributesMapping:tq})}),tX=s.forwardRef(function(e,t){let{className:n,render:r,orientation:a="horizontal",...s}=e;return(0,ee.useRenderElement)("div",e,{state:{orientation:a},ref:t,props:[{role:"separator","aria-orientation":a},s]})}),tZ=s.forwardRef(function(e,t){let{render:n,className:r,label:a,id:o,nativeButton:i=!1,openOnHover:l=!0,delay:u=100,closeDelay:c=0,disabled:d=!1,...f}=e,p=eE(),m=X(),{store:g}=Q(),h=(0,eR.useBaseUiId)(o),v=g.useState("open"),x=g.useState("floatingRootContext"),b=g.useState("floatingTreeRoot"),y=(0,tj.useTriggerRegistration)(h,g),S=s.useCallback(e=>{let t=y(e);return null!==e&&g.select("open")&&null==g.select("activeTriggerId")&&g.update({activeTriggerId:h,activeTriggerElement:e,closeDelay:c}),t},[y,c,g,h]),E=s.useRef(null),R=s.useCallback(e=>{E.current=e,g.set("activeTriggerElement",e)},[g]),k=tP();if(!k?.parentMenu)throw Error((0,q.default)(37));g.useSyncedValue("closeDelay",c);let C=k.parentMenu,w=C.useState("itemProps"),T=C.useState("isActive",p.index),I=s.useMemo(()=>({type:"submenu-trigger",setActive(){C.set("activeIndex",p.index)}}),[C,p.index]),O=g.useState("disabled"),N=d||O,{getItemProps:M,itemRef:j}=ex({closeOnClick:!1,disabled:N,highlighted:T,id:h,store:g,typingRef:C.context.typingRef,nativeButton:i,itemMetadata:I,nodeId:m?.nodeId}),A=g.useState("hoverEnabled"),P=C.useState("allowMouseEnter"),L=(0,tz.useHoverReferenceInteraction)(x,{enabled:A&&l&&!N,handleClose:(0,tF.safePolygon)({blockPointerEvents:!0}),mouseOnly:!0,move:!0,restMs:u,delay:P?{open:u,close:c}:0,triggerElementRef:E,externalTree:b}),D=(0,t_.useClick)(x,{enabled:!N,event:"mousedown",toggle:!l,ignoreMouse:l,stickIfOpen:!1}),F=(0,ti.useInteractions)([D]),_=g.useState("triggerProps",!0);return delete _.id,(0,ee.useRenderElement)("div",e,{state:{disabled:N,highlighted:T,open:v},stateAttributesMapping:et.triggerOpenStateMapping,props:[F.getReferenceProps(),L,_,w,{tabIndex:v||T?0:-1,onBlur(){T&&C.set("activeIndex",null)}},f,M],ref:[t,p.ref,j,S,R]})});class tQ{constructor(){this.store=new tM}open(e){let t=e?this.store.context.triggerElements.getById(e):void 0;if(e&&!t)throw Error((0,q.default)(83,e));this.store.setOpen(!0,(0,ew.createChangeEventDetails)("imperative-action",void 0,t))}close(){this.store.setOpen(!1,(0,ew.createChangeEventDetails)("imperative-action",void 0,void 0))}get isOpen(){return this.store.state.open}}e.s(["Arrow",0,en,"Backdrop",0,el,"CheckboxItem",0,eT,"CheckboxItemIndicator",0,eN,"Group",0,ej,"GroupLabel",0,eA,"Handle",0,tQ,"Item",0,eP,"LinkItem",0,eL,"Popup",0,eH,"Portal",0,eG,"Positioner",0,e4,"RadioGroup",0,e9,"RadioItem",0,e7,"RadioItemIndicator",0,te,"Root",0,tL,"Separator",0,tX,"SubmenuRoot",0,function(e){let t=Q().store,n=s.useMemo(()=>({parentMenu:t}),[t]);return(0,a.jsx)(tA.Provider,{value:n,children:(0,a.jsx)(tL,{...e})})},"SubmenuTrigger",0,tZ,"Trigger",0,t$,"Viewport",0,tJ,"createHandle",0,function(){return new tQ}],30250);var t0=e.i(30250),t0=t0,t1=e.i(52088);function t2({...e}){return(0,a.jsx)(t0.Root,{"data-slot":"dropdown-menu",...e})}function t5({...e}){return(0,a.jsx)(t0.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function t3({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:r=4,className:s,...o}){return(0,a.jsx)(t0.Portal,{children:(0,a.jsx)(t0.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:r,children:(0,a.jsx)(t0.Popup,{"data-slot":"dropdown-menu-content",className:(0,t1.cn)("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",s),...o})})})}function t4({className:e,inset:t,variant:n="default",...r}){return(0,a.jsx)(t0.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:(0,t1.cn)("group/dropdown-menu-item relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 data-[variant=destructive]:*:[svg]:text-destructive",e),...r})}function t6({className:e,...t}){return(0,a.jsx)(t0.Separator,{"data-slot":"dropdown-menu-separator",className:(0,t1.cn)("-mx-1 my-1 h-px bg-border/50",e),...t})}e.i(46349),e.i(78784),e.s(["default",0,function({params:e}){let{id:t}=(0,s.use)(e),n=(0,o.useRouter)(),r=(0,x.useToast)(),[l,S]=(0,s.useState)(null),[E,R]=(0,s.useState)(!0),[k,C]=(0,s.useState)([]),[w,T]=(0,s.useState)(),[I,M]=(0,s.useState)(!0),[j,A]=(0,s.useState)(!1),[P,L]=(0,s.useState)(!1),[D,F]=(0,s.useState)(!0),_=(0,s.useRef)(null);(0,b.useDocumentTitle)(l?.title),(0,y.useTaskEvents)({onTaskCreated:()=>{},onTaskUpdated:e=>{e.id===t&&S(e)},onTaskDeleted:e=>{e===t&&(r.info("Task deleted",l?.title??void 0),n.push("/"))}});let U=(0,s.useCallback)(()=>{fetch((0,g.apiUrl)(`/api/tasks/${t}/read`),{method:"POST"}).catch(()=>{})},[t]),B=(0,s.useCallback)((e,t)=>{("success"===t||"failure"===t||"error"===t)&&U()},[U]),z=(0,s.useRef)(null),H=(0,s.useCallback)(async()=>{if(null!==z.current&&z.current!==t&&F(!0),z.current=t,D){M(!0);try{let e=await fetch((0,g.apiUrl)(`/api/tasks/${t}`));if(!e.ok)throw Error("Failed to fetch task");let n=await e.json(),r=n.data.task,a=r.tabs||[];S(r),R(n.data.worktreeExists),C(a),a.length>0&&T(a[0].tab_id),U()}catch(e){console.error("Failed to load data:",e)}finally{M(!1),F(!1)}}},[t,D,U]);(0,s.useEffect)(()=>{H()},[t,H]);let W=async(e,t)=>{let n=r.loading("Updating task...");try{let a=await fetch((0,g.apiUrl)(`/api/tasks/${e}`),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok)throw Error("Failed to update task");let s=await a.json();return S(s.data.task),r.success(n,"Successfully updated task"),{success:!0}}catch(t){console.error("Failed to update task:",t);let e=t instanceof Error?t.message:"Failed to update task";return r.error(n,"Failed to update task",e),{success:!1,errors:[{field:"global",message:"Failed to update task"}]}}},V=async(e="claude")=>{try{let n=await fetch((0,g.apiUrl)(`/api/tasks/${t}/tabs`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:e})});if(!n.ok)throw Error("Failed to create tab");let r=(await n.json()).data.tab;return C(e=>e.some(e=>e.tab_id===r.tab_id)?e:[...e,r]),T(r.tab_id),r.tab_id}catch(e){console.error("Failed to create tab:",e);return}},G=async e=>{try{if(!(await fetch((0,g.apiUrl)(`/api/tasks/${t}/tabs/${e}`),{method:"DELETE"})).ok)throw Error("Failed to delete tab");if(C(t=>t.filter(t=>t.tab_id!==e)),w===e){let t=k.filter(t=>t.tab_id!==e);T(t[0]?.tab_id)}}catch(e){console.error("Failed to delete tab:",e)}},$=async()=>{if(!l)return;let e=r.loading("Opening terminal...",l.worktreePath);try{if(!(await fetch((0,g.apiUrl)("/api/commands/open"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({commandType:"terminal",owner:l.owner,repo:l.repo,branch:l.branch})})).ok)throw Error("Command execution failed");r.success(e,"Successfully opened terminal",l.worktreePath)}catch(n){let t=n instanceof Error?n.message:"Unknown error";r.error(e,"Failed to open terminal",t)}},q=async()=>{if(!l)return;let e=r.loading("Opening VS Code...",l.worktreePath);try{if(!(await fetch((0,g.apiUrl)("/api/commands/open"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({commandType:"vscode",owner:l.owner,repo:l.repo,branch:l.branch})})).ok)throw Error("Command execution failed");r.success(e,"Successfully opened VS Code",l.worktreePath)}catch(n){let t=n instanceof Error?n.message:"Unknown error";r.error(e,"Failed to open VS Code",t)}};return I&&!l?(0,a.jsx)("div",{className:"h-screen flex items-center justify-center bg-background",children:(0,a.jsx)(v.LoadingSpinner,{size:"lg",message:"Loading task..."})}):l?(0,a.jsxs)("div",{className:"h-screen flex flex-col bg-background",children:[(0,a.jsx)("div",{className:"sticky top-0 z-50 p-4 border-b border-border bg-card",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)(N.Button,{variant:"ghost",onClick:()=>n.push("/"),className:"text-primary font-medium hover:bg-primary/10 hover:text-foreground",children:[(0,a.jsx)(i.ArrowLeft,{className:"w-4 h-4"}),"Back to Board"]}),(0,a.jsx)("h1",{className:"text-base font-semibold text-foreground absolute left-1/2 -translate-x-1/2 max-w-[50vw] truncate",children:l.title}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(Y.UpdateIndicator,{}),(0,a.jsxs)(t2,{children:[(0,a.jsx)(t5,{render:(0,a.jsx)(N.Button,{variant:"ghost",size:"icon-lg",className:"text-primary hover:bg-primary/10 hover:text-foreground",title:"Task menu"}),children:(0,a.jsx)(c,{className:"w-5 h-5"})}),(0,a.jsxs)(t3,{align:"end",children:[(0,a.jsxs)(t4,{onClick:()=>A(!0),children:[(0,a.jsx)(f.Pencil,{className:"w-4 h-4"}),"Detail / Edit"]}),E&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t6,{}),(0,a.jsxs)(t4,{onClick:$,children:[(0,a.jsx)(p,{className:"w-4 h-4"}),"Open Terminal"]}),(0,a.jsxs)(t4,{onClick:q,children:[(0,a.jsx)(u,{className:"w-4 h-4"}),"Open VS Code"]})]}),(0,a.jsx)(t6,{}),(0,a.jsxs)(t4,{className:"text-destructive focus:text-destructive",onClick:()=>L(!0),children:[(0,a.jsx)(m.Trash2,{className:"w-4 h-4"}),"Delete"]})]})]})]})]})}),(0,a.jsx)("div",{className:"flex-1 flex flex-col min-h-0",children:(0,a.jsx)("div",{className:"bg-card flex flex-col flex-1 min-h-0",children:E?(0,a.jsx)(K,{ref:_,task:l,tabs:k,activeTabId:w,onTabChange:T,onTabCreate:V,onTabDelete:G,onClaudeStatusChange:B}):(0,a.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center gap-4 p-6 text-center",children:[(0,a.jsx)(d,{className:"size-10 text-muted-foreground"}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("p",{className:"font-medium text-foreground",children:"Worktree not found"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground break-all",children:l.worktreePath})]}),(0,a.jsxs)(N.Button,{variant:"destructive",onClick:()=>L(!0),children:[(0,a.jsx)(m.Trash2,{className:"w-4 h-4"}),"Delete Task"]})]})})}),(0,a.jsx)(h.TaskDialog,{mode:"edit",isOpen:j,onClose:()=>A(!1),task:l,onUpdate:W}),(0,a.jsx)(O.ConfirmDialog,{open:P,onOpenChange:e=>L(e.open),title:"Delete Task",message:`Delete task "${l.title}"?
|
|
5
|
-
|
|
6
|
-
This will also delete the worktree and branch.`,confirmLabel:"Delete",cancelLabel:"Cancel",onConfirm:()=>{if(!l)return;let e=r.loading("Deleting task...",l.title);fetch((0,g.apiUrl)(`/api/tasks/${l.id}`),{method:"DELETE"}).then(()=>{r.success(e,"Successfully deleted task",l.title)}).catch(t=>{let n=t instanceof Error?t.message:"Unknown error";r.error(e,"Failed to delete task",n)}),n.push("/")},variant:"danger"})]}):(0,a.jsx)("div",{className:"h-screen flex items-center justify-center bg-background",children:(0,a.jsx)("div",{className:"text-center text-foreground",children:"Task not found"})})}],97099)}]);
|