@opengsd/gsd-pi 1.2.0-dev.fbdca60b → 1.3.0-dev.65546769

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.
Files changed (835) hide show
  1. package/README.md +13 -7
  2. package/dist/cli.js +28 -1
  3. package/dist/headless-context.js +0 -1
  4. package/dist/headless-events.d.ts +16 -1
  5. package/dist/headless-events.js +19 -2
  6. package/dist/headless.js +8 -1
  7. package/dist/help-text.js +29 -0
  8. package/dist/hermes-integration-install.d.ts +17 -0
  9. package/dist/hermes-integration-install.js +199 -0
  10. package/dist/jiti-workspace-aliases.d.ts +11 -2
  11. package/dist/jiti-workspace-aliases.js +19 -3
  12. package/dist/onboarding.js +9 -4
  13. package/dist/provider-migrations.d.ts +23 -0
  14. package/dist/provider-migrations.js +41 -0
  15. package/dist/read-cli.d.ts +23 -0
  16. package/dist/read-cli.js +90 -0
  17. package/dist/resource-loader.d.ts +3 -3
  18. package/dist/resource-loader.js +4 -13
  19. package/dist/resources/.managed-resources-content-hash +1 -1
  20. package/dist/resources/GSD-WORKFLOW.md +22 -22
  21. package/dist/resources/extensions/claude-code-cli/index.js +7 -1
  22. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +73 -20
  23. package/dist/resources/extensions/google-cli/stream-adapter.js +16 -1
  24. package/dist/resources/extensions/gsd/auto/dispatch-history.js +6 -1
  25. package/dist/resources/extensions/gsd/auto/loop.js +67 -2
  26. package/dist/resources/extensions/gsd/auto/orchestrator.js +50 -10
  27. package/dist/resources/extensions/gsd/auto/pre-dispatch.js +8 -0
  28. package/dist/resources/extensions/gsd/auto/workflow-kernel.js +15 -1
  29. package/dist/resources/extensions/gsd/auto-artifact-paths.js +81 -19
  30. package/dist/resources/extensions/gsd/auto-closeout-messaging.js +90 -0
  31. package/dist/resources/extensions/gsd/auto-dashboard.js +255 -431
  32. package/dist/resources/extensions/gsd/auto-direct-dispatch.js +15 -3
  33. package/dist/resources/extensions/gsd/auto-dispatch.js +47 -8
  34. package/dist/resources/extensions/gsd/auto-model-selection.js +14 -8
  35. package/dist/resources/extensions/gsd/auto-post-unit.js +39 -29
  36. package/dist/resources/extensions/gsd/auto-prompts.js +44 -30
  37. package/dist/resources/extensions/gsd/auto-recovery.js +118 -40
  38. package/dist/resources/extensions/gsd/auto-runtime-state.js +13 -0
  39. package/dist/resources/extensions/gsd/auto-start.js +58 -31
  40. package/dist/resources/extensions/gsd/auto-verification.js +5 -2
  41. package/dist/resources/extensions/gsd/auto-worktree.js +149 -91
  42. package/dist/resources/extensions/gsd/auto.js +97 -31
  43. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +42 -54
  44. package/dist/resources/extensions/gsd/bootstrap/fallback-continuation.js +25 -0
  45. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +24 -2
  46. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +108 -9
  47. package/dist/resources/extensions/gsd/bootstrap/system-context.js +164 -44
  48. package/dist/resources/extensions/gsd/bootstrap/tool-search-shim.js +22 -3
  49. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +113 -27
  50. package/dist/resources/extensions/gsd/closeout-consistency-gate.js +92 -4
  51. package/dist/resources/extensions/gsd/closeout-wizard.js +8 -3
  52. package/dist/resources/extensions/gsd/codebase-generator.js +5 -8
  53. package/dist/resources/extensions/gsd/commands/catalog.js +6 -0
  54. package/dist/resources/extensions/gsd/commands/dispatcher.js +3 -0
  55. package/dist/resources/extensions/gsd/commands/gsd-core-aliases-handler.js +39 -0
  56. package/dist/resources/extensions/gsd/commands/gsd-core-aliases.js +44 -0
  57. package/dist/resources/extensions/gsd/commands/handlers/core.js +52 -8
  58. package/dist/resources/extensions/gsd/commands/handlers/ops.js +227 -3
  59. package/dist/resources/extensions/gsd/commands-cmux.js +3 -1
  60. package/dist/resources/extensions/gsd/commands-gsd-core.js +868 -0
  61. package/dist/resources/extensions/gsd/commands-handlers.js +67 -1
  62. package/dist/resources/extensions/gsd/commands-maintenance.js +79 -2
  63. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +14 -1
  64. package/dist/resources/extensions/gsd/commands-verdict.js +17 -11
  65. package/dist/resources/extensions/gsd/compat/compat-marker.js +172 -0
  66. package/dist/resources/extensions/gsd/compat/index.js +3 -0
  67. package/dist/resources/extensions/gsd/compat/planning-compat.js +142 -0
  68. package/dist/resources/extensions/gsd/config-overlay.js +11 -8
  69. package/dist/resources/extensions/gsd/consent-question.js +12 -0
  70. package/dist/resources/extensions/gsd/consent-verdict.js +10 -0
  71. package/dist/resources/extensions/gsd/dashboard-overlay.js +39 -3
  72. package/dist/resources/extensions/gsd/db/engine.js +27 -0
  73. package/dist/resources/extensions/gsd/db/queries.js +54 -0
  74. package/dist/resources/extensions/gsd/db/unit-dispatches.js +22 -1
  75. package/dist/resources/extensions/gsd/db/writers/reconcile.js +19 -1
  76. package/dist/resources/extensions/gsd/db-workspace.js +13 -1
  77. package/dist/resources/extensions/gsd/discussion-handoff.js +9 -5
  78. package/dist/resources/extensions/gsd/doctor-git-checks.js +30 -4
  79. package/dist/resources/extensions/gsd/doctor-providers.js +1 -1
  80. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +13 -24
  81. package/dist/resources/extensions/gsd/doctor.js +28 -7
  82. package/dist/resources/extensions/gsd/error-classifier.js +13 -1
  83. package/dist/resources/extensions/gsd/escalation.js +11 -4
  84. package/dist/resources/extensions/gsd/export-html.js +10 -3
  85. package/dist/resources/extensions/gsd/export.js +73 -0
  86. package/dist/resources/extensions/gsd/file-lock.js +1 -1
  87. package/dist/resources/extensions/gsd/flat-phase-migration.js +176 -0
  88. package/dist/resources/extensions/gsd/forensics.js +2 -1
  89. package/dist/resources/extensions/gsd/git-service.js +7 -4
  90. package/dist/resources/extensions/gsd/gitignore.js +6 -2
  91. package/dist/resources/extensions/gsd/guidance.js +7 -7
  92. package/dist/resources/extensions/gsd/guided-flow.js +11 -6
  93. package/dist/resources/extensions/gsd/layout-policy.js +75 -0
  94. package/dist/resources/extensions/gsd/markdown-renderer.js +391 -116
  95. package/dist/resources/extensions/gsd/mcp-filter.js +44 -10
  96. package/dist/resources/extensions/gsd/md-importer.js +153 -51
  97. package/dist/resources/extensions/gsd/metrics.js +19 -11
  98. package/dist/resources/extensions/gsd/migrate/layout-detect.js +32 -0
  99. package/dist/resources/extensions/gsd/migrate/planning-writer.js +203 -0
  100. package/dist/resources/extensions/gsd/migrate-external.js +51 -6
  101. package/dist/resources/extensions/gsd/migration-auto-check.js +5 -14
  102. package/dist/resources/extensions/gsd/milestone-actions.js +5 -3
  103. package/dist/resources/extensions/gsd/milestone-closeout.js +12 -2
  104. package/dist/resources/extensions/gsd/milestone-ids.js +50 -19
  105. package/dist/resources/extensions/gsd/milestone-planning-persistence.js +8 -0
  106. package/dist/resources/extensions/gsd/milestone-validation-verdict.js +7 -4
  107. package/dist/resources/extensions/gsd/model-router.js +79 -20
  108. package/dist/resources/extensions/gsd/notification-store.js +22 -29
  109. package/dist/resources/extensions/gsd/notifications.js +36 -7
  110. package/dist/resources/extensions/gsd/observability-validator.js +12 -4
  111. package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +133 -35
  112. package/dist/resources/extensions/gsd/parsers-legacy.js +40 -14
  113. package/dist/resources/extensions/gsd/paths.js +356 -44
  114. package/dist/resources/extensions/gsd/planning-depth.js +2 -1
  115. package/dist/resources/extensions/gsd/post-execution-checks.js +26 -3
  116. package/dist/resources/extensions/gsd/preferences-models.js +34 -14
  117. package/dist/resources/extensions/gsd/preferences.js +148 -13
  118. package/dist/resources/extensions/gsd/prompts/ai-integration-phase.md +28 -0
  119. package/dist/resources/extensions/gsd/prompts/audit-fix.md +39 -0
  120. package/dist/resources/extensions/gsd/prompts/audit-milestone.md +26 -0
  121. package/dist/resources/extensions/gsd/prompts/audit-uat.md +24 -0
  122. package/dist/resources/extensions/gsd/prompts/autonomous.md +31 -0
  123. package/dist/resources/extensions/gsd/prompts/code-review.md +37 -0
  124. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +8 -2
  125. package/dist/resources/extensions/gsd/prompts/complete-slice.md +24 -15
  126. package/dist/resources/extensions/gsd/prompts/discuss-phase.md +31 -0
  127. package/dist/resources/extensions/gsd/prompts/docs-update.md +13 -0
  128. package/dist/resources/extensions/gsd/prompts/execute-phase.md +33 -0
  129. package/dist/resources/extensions/gsd/prompts/execute-task.md +5 -1
  130. package/dist/resources/extensions/gsd/prompts/explore.md +58 -0
  131. package/dist/resources/extensions/gsd/prompts/graphify.md +27 -0
  132. package/dist/resources/extensions/gsd/prompts/health.md +37 -0
  133. package/dist/resources/extensions/gsd/prompts/import.md +30 -0
  134. package/dist/resources/extensions/gsd/prompts/inbox.md +27 -0
  135. package/dist/resources/extensions/gsd/prompts/ingest-docs.md +30 -0
  136. package/dist/resources/extensions/gsd/prompts/manager.md +21 -0
  137. package/dist/resources/extensions/gsd/prompts/map-codebase.md +42 -0
  138. package/dist/resources/extensions/gsd/prompts/milestone-summary.md +27 -0
  139. package/dist/resources/extensions/gsd/prompts/mvp-phase.md +23 -0
  140. package/dist/resources/extensions/gsd/prompts/pause-work.md +24 -0
  141. package/dist/resources/extensions/gsd/prompts/phase.md +22 -0
  142. package/dist/resources/extensions/gsd/prompts/plan-phase.md +34 -0
  143. package/dist/resources/extensions/gsd/prompts/plan-review-convergence.md +34 -0
  144. package/dist/resources/extensions/gsd/prompts/profile-user.md +28 -0
  145. package/dist/resources/extensions/gsd/prompts/progress.md +30 -0
  146. package/dist/resources/extensions/gsd/prompts/quick-task.md +1 -1
  147. package/dist/resources/extensions/gsd/prompts/reactive-execute.md +2 -2
  148. package/dist/resources/extensions/gsd/prompts/resume-work.md +20 -0
  149. package/dist/resources/extensions/gsd/prompts/review-backlog.md +21 -0
  150. package/dist/resources/extensions/gsd/prompts/review.md +27 -0
  151. package/dist/resources/extensions/gsd/prompts/run-uat.md +5 -1
  152. package/dist/resources/extensions/gsd/prompts/secure-phase.md +24 -0
  153. package/dist/resources/extensions/gsd/prompts/settings.md +24 -0
  154. package/dist/resources/extensions/gsd/prompts/sketch.md +59 -0
  155. package/dist/resources/extensions/gsd/prompts/spec-phase.md +29 -0
  156. package/dist/resources/extensions/gsd/prompts/spike.md +59 -0
  157. package/dist/resources/extensions/gsd/prompts/stats.md +43 -0
  158. package/dist/resources/extensions/gsd/prompts/surface.md +25 -0
  159. package/dist/resources/extensions/gsd/prompts/thread.md +24 -0
  160. package/dist/resources/extensions/gsd/prompts/triage-captures.md +1 -1
  161. package/dist/resources/extensions/gsd/prompts/ui-phase.md +29 -0
  162. package/dist/resources/extensions/gsd/prompts/ui-review.md +29 -0
  163. package/dist/resources/extensions/gsd/prompts/ultraplan-phase.md +24 -0
  164. package/dist/resources/extensions/gsd/prompts/validate-phase.md +26 -0
  165. package/dist/resources/extensions/gsd/prompts/verify-work.md +24 -0
  166. package/dist/resources/extensions/gsd/prompts/workspace.md +22 -0
  167. package/dist/resources/extensions/gsd/prompts/workstreams.md +24 -0
  168. package/dist/resources/extensions/gsd/provider-error-guidance.js +24 -0
  169. package/dist/resources/extensions/gsd/queue-order.js +3 -2
  170. package/dist/resources/extensions/gsd/recovery-classification.js +8 -0
  171. package/dist/resources/extensions/gsd/roadmap-slices.js +1 -1
  172. package/dist/resources/extensions/gsd/safety/content-validator.js +2 -1
  173. package/dist/resources/extensions/gsd/safety/evidence-cross-ref.js +43 -1
  174. package/dist/resources/extensions/gsd/service-tier.js +2 -1
  175. package/dist/resources/extensions/gsd/session-lock.js +11 -9
  176. package/dist/resources/extensions/gsd/skills/gsd-headless/SKILL.md +3 -0
  177. package/dist/resources/extensions/gsd/skills/gsd-headless/references/commands.md +51 -0
  178. package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +51 -10
  179. package/dist/resources/extensions/gsd/state-reconciliation/drift/completion.js +24 -3
  180. package/dist/resources/extensions/gsd/state-reconciliation/drift/external-markdown-edit.js +82 -0
  181. package/dist/resources/extensions/gsd/state-reconciliation/drift/external-planning-edit.js +142 -0
  182. package/dist/resources/extensions/gsd/state-reconciliation/drift/project-md.js +19 -6
  183. package/dist/resources/extensions/gsd/state-reconciliation/drift/roadmap.js +2 -2
  184. package/dist/resources/extensions/gsd/state-reconciliation/drift/stale-render.js +95 -19
  185. package/dist/resources/extensions/gsd/state-reconciliation/index.js +36 -3
  186. package/dist/resources/extensions/gsd/state-reconciliation/registry.js +12 -0
  187. package/dist/resources/extensions/gsd/state.js +48 -17
  188. package/dist/resources/extensions/gsd/sync-lock.js +11 -18
  189. package/dist/resources/extensions/gsd/tool-surface-readiness.js +205 -16
  190. package/dist/resources/extensions/gsd/tools/complete-milestone.js +4 -2
  191. package/dist/resources/extensions/gsd/tools/complete-slice.js +12 -2
  192. package/dist/resources/extensions/gsd/tools/complete-task.js +15 -1
  193. package/dist/resources/extensions/gsd/tools/exec-tool.js +2 -109
  194. package/dist/resources/extensions/gsd/tools/plan-slice.js +1 -3
  195. package/dist/resources/extensions/gsd/tools/plan-task.js +16 -1
  196. package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +9 -3
  197. package/dist/resources/extensions/gsd/tools/validate-milestone.js +8 -3
  198. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +44 -5
  199. package/dist/resources/extensions/gsd/triage-resolution.js +14 -7
  200. package/dist/resources/extensions/gsd/tui/render-kit.js +38 -13
  201. package/dist/resources/extensions/gsd/undo.js +8 -9
  202. package/dist/resources/extensions/gsd/unit-registry.js +27 -3
  203. package/dist/resources/extensions/gsd/unmerged-milestone-guard.js +58 -2
  204. package/dist/resources/extensions/gsd/validation-block-guard.js +45 -0
  205. package/dist/resources/extensions/gsd/visualizer-data.js +35 -0
  206. package/dist/resources/extensions/gsd/visualizer-views.js +21 -2
  207. package/dist/resources/extensions/gsd/workflow-logger.js +4 -0
  208. package/dist/resources/extensions/gsd/workflow-mcp.js +9 -1
  209. package/dist/resources/extensions/gsd/workflow-projections.js +25 -4
  210. package/dist/resources/extensions/gsd/worktree-command.js +6 -6
  211. package/dist/resources/extensions/gsd/worktree-health.js +6 -3
  212. package/dist/resources/extensions/gsd/worktree-manager.js +109 -16
  213. package/dist/resources/extensions/gsd/worktree-safety.js +20 -11
  214. package/dist/resources/extensions/gsd/worktree-shell-guard.js +113 -0
  215. package/dist/resources/extensions/mcp-client/manager.js +3 -3
  216. package/dist/resources/extensions/search-the-web/index.js +41 -9
  217. package/dist/resources/extensions/search-the-web/native-search.js +18 -4
  218. package/dist/resources/extensions/shared/gsd-browser-cli.js +40 -2
  219. package/dist/resources/extensions/subagent/index.js +20 -15
  220. package/dist/resources/extensions/subagent/worktree-cwd.js +31 -0
  221. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  222. package/dist/update-check.js +15 -4
  223. package/dist/web/standalone/.next/BUILD_ID +1 -1
  224. package/dist/web/standalone/.next/app-path-routes-manifest.json +8 -8
  225. package/dist/web/standalone/.next/build-manifest.json +3 -3
  226. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  227. package/dist/web/standalone/.next/react-loadable-manifest.json +3 -3
  228. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  229. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  230. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  231. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  232. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  233. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  234. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  235. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  236. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  237. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  238. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  239. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  240. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  241. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  242. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  243. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  244. package/dist/web/standalone/.next/server/app/index.html +1 -1
  245. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  246. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  247. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  248. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  249. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  250. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  251. package/dist/web/standalone/.next/server/app-paths-manifest.json +8 -8
  252. package/dist/web/standalone/.next/server/chunks/1128.js +1 -1
  253. package/dist/web/standalone/.next/server/chunks/5124.js +1 -1
  254. package/dist/web/standalone/.next/server/chunks/8357.js +1 -1
  255. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  256. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  257. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  258. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  259. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  260. package/dist/web/standalone/.next/static/chunks/{4283.e4873b058df143a1.js → 4283.8e446784528ed9dc.js} +2 -2
  261. package/dist/web/standalone/.next/static/chunks/8785.481aa5869991b760.js +1 -0
  262. package/dist/web/standalone/.next/static/chunks/{webpack-f0285ce91d4ec9ef.js → webpack-f46ea08200a0227e.js} +1 -1
  263. package/dist/web/standalone/node_modules/@gsd/native/package.json +1 -1
  264. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  265. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  266. package/dist/web-mode.d.ts +3 -1
  267. package/dist/web-mode.js +7 -5
  268. package/integrations/hermes/README.md +48 -0
  269. package/integrations/hermes/docs/setup.md +272 -0
  270. package/integrations/hermes/docs/upstream-hermes-pr.md +40 -0
  271. package/integrations/hermes/open_gsd_hermes/__init__.py +105 -0
  272. package/integrations/hermes/open_gsd_hermes/binding.py +107 -0
  273. package/integrations/hermes/open_gsd_hermes/commands.py +186 -0
  274. package/integrations/hermes/open_gsd_hermes/config.py +59 -0
  275. package/integrations/hermes/open_gsd_hermes/credentials.py +51 -0
  276. package/integrations/hermes/open_gsd_hermes/cron.py +85 -0
  277. package/integrations/hermes/open_gsd_hermes/formatting.py +13 -0
  278. package/integrations/hermes/open_gsd_hermes/gsd_client.py +269 -0
  279. package/integrations/hermes/open_gsd_hermes/inject.py +31 -0
  280. package/integrations/hermes/open_gsd_hermes/memory.py +66 -0
  281. package/integrations/hermes/open_gsd_hermes/notifications.py +71 -0
  282. package/integrations/hermes/open_gsd_hermes/snapshot.py +42 -0
  283. package/integrations/hermes/open_gsd_hermes/supervisor.py +180 -0
  284. package/integrations/hermes/open_gsd_hermes/types.py +100 -0
  285. package/integrations/hermes/plugin.yaml +38 -0
  286. package/integrations/hermes/pyproject.toml +32 -0
  287. package/integrations/hermes/scripts/preflight.sh +92 -0
  288. package/integrations/hermes/tests/fixtures/minimal-project/.gsd/STATE.md +17 -0
  289. package/integrations/hermes/tests/golden/memory_prefetch.txt +5 -0
  290. package/integrations/hermes/tests/golden/snapshot.txt +8 -0
  291. package/integrations/hermes/tests/test_binding.py +103 -0
  292. package/integrations/hermes/tests/test_config.py +36 -0
  293. package/integrations/hermes/tests/test_cron.py +34 -0
  294. package/integrations/hermes/tests/test_gsd_client_cache.py +120 -0
  295. package/integrations/hermes/tests/test_memory.py +59 -0
  296. package/integrations/hermes/tests/test_read_cli_contract.py +50 -0
  297. package/integrations/hermes/tests/test_register.py +56 -0
  298. package/integrations/hermes/tests/test_snapshot.py +53 -0
  299. package/integrations/hermes/tests/test_supervisor_fsm.py +581 -0
  300. package/package.json +8 -7
  301. package/packages/cloud-mcp-gateway/dist/runtime-registry.d.ts +8 -0
  302. package/packages/cloud-mcp-gateway/dist/runtime-registry.d.ts.map +1 -1
  303. package/packages/cloud-mcp-gateway/dist/runtime-registry.js +19 -2
  304. package/packages/cloud-mcp-gateway/dist/runtime-registry.js.map +1 -1
  305. package/packages/cloud-mcp-gateway/dist/runtime-registry.test.js +71 -2
  306. package/packages/cloud-mcp-gateway/dist/runtime-registry.test.js.map +1 -1
  307. package/packages/cloud-mcp-gateway/package.json +2 -2
  308. package/packages/contracts/package.json +1 -1
  309. package/packages/daemon/package.json +4 -4
  310. package/packages/gsd-agent-core/dist/sdk.d.ts.map +1 -1
  311. package/packages/gsd-agent-core/dist/sdk.js +6 -2
  312. package/packages/gsd-agent-core/dist/sdk.js.map +1 -1
  313. package/packages/gsd-agent-core/package.json +5 -5
  314. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts +5 -5
  315. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  316. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js +12 -24
  317. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js.map +1 -1
  318. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js +5 -5
  319. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js.map +1 -1
  320. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts +3 -3
  321. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  322. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js +20 -11
  323. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  324. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.d.ts +4 -3
  325. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.d.ts.map +1 -1
  326. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.js +5 -54
  327. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.js.map +1 -1
  328. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts +2 -4
  329. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  330. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js +2 -4
  331. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  332. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts +2 -0
  333. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  334. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js +4 -0
  335. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js.map +1 -1
  336. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts +9 -12
  337. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts.map +1 -1
  338. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js +100 -166
  339. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js.map +1 -1
  340. package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.d.ts +2 -0
  341. package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.d.ts.map +1 -0
  342. package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.js +4 -0
  343. package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.js.map +1 -0
  344. package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.d.ts +23 -0
  345. package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.d.ts.map +1 -0
  346. package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.js +178 -0
  347. package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.js.map +1 -0
  348. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +8 -0
  349. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  350. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +21 -9
  351. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +1 -1
  352. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -3
  353. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  354. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js +2 -3
  355. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  356. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +3 -0
  357. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  358. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +37 -15
  359. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
  360. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.d.ts +69 -3
  361. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.d.ts.map +1 -1
  362. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js +223 -32
  363. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js.map +1 -1
  364. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts +3 -3
  365. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  366. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js +19 -19
  367. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js.map +1 -1
  368. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +3 -0
  369. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  370. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +26 -10
  371. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  372. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +1 -1
  373. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js +12 -1
  374. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js.map +1 -1
  375. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -1
  376. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +5 -0
  377. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +1 -1
  378. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -1
  379. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-autocomplete.js +3 -1
  380. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  381. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.d.ts.map +1 -1
  382. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.js +3 -5
  383. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.js.map +1 -1
  384. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js +2 -2
  385. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  386. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.d.ts +1 -0
  387. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -1
  388. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js +25 -0
  389. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  390. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-key-handlers.d.ts.map +1 -1
  391. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-key-handlers.js +1 -0
  392. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-key-handlers.js.map +1 -1
  393. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.d.ts +1 -0
  394. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.d.ts.map +1 -1
  395. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.js +20 -49
  396. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.js.map +1 -1
  397. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +4 -0
  398. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
  399. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +1 -1
  400. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +9 -2
  401. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  402. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +31 -6
  403. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
  404. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-ui-messaging.d.ts.map +1 -1
  405. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-ui-messaging.js +0 -1
  406. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-ui-messaging.js.map +1 -1
  407. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  408. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +3 -0
  409. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +1 -1
  410. package/packages/gsd-agent-modes/package.json +7 -7
  411. package/packages/mcp-server/README.md +10 -0
  412. package/packages/mcp-server/dist/cli-errors.d.ts +11 -0
  413. package/packages/mcp-server/dist/cli-errors.d.ts.map +1 -1
  414. package/packages/mcp-server/dist/cli-errors.js +12 -0
  415. package/packages/mcp-server/dist/cli-errors.js.map +1 -1
  416. package/packages/mcp-server/dist/cli-runner.d.ts.map +1 -1
  417. package/packages/mcp-server/dist/cli-runner.js +33 -0
  418. package/packages/mcp-server/dist/cli-runner.js.map +1 -1
  419. package/packages/mcp-server/dist/cli.d.ts +1 -0
  420. package/packages/mcp-server/dist/cli.d.ts.map +1 -1
  421. package/packages/mcp-server/dist/cli.js +1 -0
  422. package/packages/mcp-server/dist/cli.js.map +1 -1
  423. package/packages/mcp-server/dist/server.d.ts +29 -0
  424. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  425. package/packages/mcp-server/dist/server.js +82 -3
  426. package/packages/mcp-server/dist/server.js.map +1 -1
  427. package/packages/mcp-server/package.json +21 -5
  428. package/packages/native/package.json +1 -1
  429. package/packages/pi-agent-core/dist/agent-loop.js +9 -0
  430. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  431. package/packages/pi-agent-core/package.json +1 -1
  432. package/packages/pi-ai/package.json +1 -1
  433. package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.d.ts +28 -2
  434. package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.d.ts.map +1 -1
  435. package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.js.map +1 -1
  436. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  437. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  438. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  439. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +5 -1
  440. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  441. package/packages/pi-coding-agent/dist/core/extensions/runner.js +3 -1
  442. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  443. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  444. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  445. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  446. package/packages/pi-coding-agent/package.json +8 -8
  447. package/packages/pi-tui/dist/autocomplete.d.ts.map +1 -1
  448. package/packages/pi-tui/dist/autocomplete.js +6 -1
  449. package/packages/pi-tui/dist/autocomplete.js.map +1 -1
  450. package/packages/pi-tui/dist/components/input.js +1 -1
  451. package/packages/pi-tui/dist/components/input.js.map +1 -1
  452. package/packages/pi-tui/dist/components/loader.d.ts.map +1 -1
  453. package/packages/pi-tui/dist/components/loader.js +1 -0
  454. package/packages/pi-tui/dist/components/loader.js.map +1 -1
  455. package/packages/pi-tui/dist/components/select-list.d.ts.map +1 -1
  456. package/packages/pi-tui/dist/components/select-list.js +8 -2
  457. package/packages/pi-tui/dist/components/select-list.js.map +1 -1
  458. package/packages/pi-tui/package.json +2 -2
  459. package/packages/rpc-client/package.json +2 -2
  460. package/pkg/package.json +1 -1
  461. package/src/resources/GSD-WORKFLOW.md +22 -22
  462. package/src/resources/extensions/browser-tools/tests/gsd-browser-launch-config.test.mjs +80 -0
  463. package/src/resources/extensions/claude-code-cli/index.ts +8 -1
  464. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +83 -20
  465. package/src/resources/extensions/claude-code-cli/tests/index.test.ts +47 -0
  466. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +182 -10
  467. package/src/resources/extensions/google-cli/stream-adapter.ts +22 -1
  468. package/src/resources/extensions/gsd/auto/dispatch-history.ts +19 -1
  469. package/src/resources/extensions/gsd/auto/loop.ts +69 -2
  470. package/src/resources/extensions/gsd/auto/orchestrator.ts +63 -10
  471. package/src/resources/extensions/gsd/auto/pre-dispatch.ts +13 -1
  472. package/src/resources/extensions/gsd/auto/workflow-kernel.ts +25 -3
  473. package/src/resources/extensions/gsd/auto-artifact-paths.ts +83 -20
  474. package/src/resources/extensions/gsd/auto-closeout-messaging.ts +90 -0
  475. package/src/resources/extensions/gsd/auto-dashboard.ts +310 -454
  476. package/src/resources/extensions/gsd/auto-direct-dispatch.ts +15 -2
  477. package/src/resources/extensions/gsd/auto-dispatch.ts +57 -12
  478. package/src/resources/extensions/gsd/auto-model-selection.ts +27 -5
  479. package/src/resources/extensions/gsd/auto-post-unit.ts +52 -31
  480. package/src/resources/extensions/gsd/auto-prompts.ts +45 -30
  481. package/src/resources/extensions/gsd/auto-recovery.ts +126 -37
  482. package/src/resources/extensions/gsd/auto-runtime-state.ts +13 -0
  483. package/src/resources/extensions/gsd/auto-start.ts +82 -36
  484. package/src/resources/extensions/gsd/auto-verification.ts +5 -7
  485. package/src/resources/extensions/gsd/auto-worktree.ts +83 -15
  486. package/src/resources/extensions/gsd/auto.ts +133 -32
  487. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +45 -61
  488. package/src/resources/extensions/gsd/bootstrap/fallback-continuation.ts +31 -0
  489. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +23 -2
  490. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +123 -9
  491. package/src/resources/extensions/gsd/bootstrap/system-context.ts +185 -46
  492. package/src/resources/extensions/gsd/bootstrap/tool-search-shim.ts +21 -3
  493. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +138 -29
  494. package/src/resources/extensions/gsd/closeout-consistency-gate.ts +107 -3
  495. package/src/resources/extensions/gsd/closeout-wizard.ts +11 -2
  496. package/src/resources/extensions/gsd/codebase-generator.ts +6 -9
  497. package/src/resources/extensions/gsd/commands/catalog.ts +6 -0
  498. package/src/resources/extensions/gsd/commands/dispatcher.ts +3 -0
  499. package/src/resources/extensions/gsd/commands/gsd-core-aliases-handler.ts +48 -0
  500. package/src/resources/extensions/gsd/commands/gsd-core-aliases.ts +63 -0
  501. package/src/resources/extensions/gsd/commands/handlers/core.ts +58 -8
  502. package/src/resources/extensions/gsd/commands/handlers/ops.ts +230 -3
  503. package/src/resources/extensions/gsd/commands-cmux.ts +3 -0
  504. package/src/resources/extensions/gsd/commands-gsd-core.ts +1142 -0
  505. package/src/resources/extensions/gsd/commands-handlers.ts +76 -1
  506. package/src/resources/extensions/gsd/commands-maintenance.ts +98 -2
  507. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +13 -0
  508. package/src/resources/extensions/gsd/commands-verdict.ts +16 -15
  509. package/src/resources/extensions/gsd/compat/compat-marker.ts +210 -0
  510. package/src/resources/extensions/gsd/compat/index.ts +12 -0
  511. package/src/resources/extensions/gsd/compat/planning-compat.ts +168 -0
  512. package/src/resources/extensions/gsd/config-overlay.ts +24 -9
  513. package/src/resources/extensions/gsd/consent-question.ts +11 -1
  514. package/src/resources/extensions/gsd/consent-verdict.ts +30 -1
  515. package/src/resources/extensions/gsd/dashboard-overlay.ts +41 -4
  516. package/src/resources/extensions/gsd/db/engine.ts +26 -0
  517. package/src/resources/extensions/gsd/db/queries.ts +78 -0
  518. package/src/resources/extensions/gsd/db/unit-dispatches.ts +24 -0
  519. package/src/resources/extensions/gsd/db/writers/reconcile.ts +24 -1
  520. package/src/resources/extensions/gsd/db-workspace.ts +15 -0
  521. package/src/resources/extensions/gsd/discussion-handoff.ts +9 -5
  522. package/src/resources/extensions/gsd/doctor-git-checks.ts +28 -3
  523. package/src/resources/extensions/gsd/doctor-providers.ts +1 -1
  524. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +12 -25
  525. package/src/resources/extensions/gsd/doctor-types.ts +1 -0
  526. package/src/resources/extensions/gsd/doctor.ts +30 -7
  527. package/src/resources/extensions/gsd/error-classifier.ts +14 -1
  528. package/src/resources/extensions/gsd/escalation.ts +9 -4
  529. package/src/resources/extensions/gsd/export-html.ts +11 -4
  530. package/src/resources/extensions/gsd/export.ts +88 -1
  531. package/src/resources/extensions/gsd/file-lock.ts +1 -1
  532. package/src/resources/extensions/gsd/flat-phase-migration.ts +205 -0
  533. package/src/resources/extensions/gsd/forensics.ts +2 -1
  534. package/src/resources/extensions/gsd/git-constants.ts +1 -1
  535. package/src/resources/extensions/gsd/git-service.ts +7 -2
  536. package/src/resources/extensions/gsd/gitignore.ts +7 -3
  537. package/src/resources/extensions/gsd/guidance.ts +7 -7
  538. package/src/resources/extensions/gsd/guided-flow.ts +11 -6
  539. package/src/resources/extensions/gsd/layout-policy.ts +85 -0
  540. package/src/resources/extensions/gsd/markdown-renderer.ts +404 -104
  541. package/src/resources/extensions/gsd/mcp-filter.ts +59 -10
  542. package/src/resources/extensions/gsd/md-importer.ts +215 -65
  543. package/src/resources/extensions/gsd/metrics.ts +23 -10
  544. package/src/resources/extensions/gsd/migrate/layout-detect.ts +38 -0
  545. package/src/resources/extensions/gsd/migrate/planning-writer.ts +259 -0
  546. package/src/resources/extensions/gsd/migrate-external.ts +49 -6
  547. package/src/resources/extensions/gsd/migration-auto-check.ts +4 -13
  548. package/src/resources/extensions/gsd/milestone-actions.ts +5 -2
  549. package/src/resources/extensions/gsd/milestone-closeout.ts +13 -2
  550. package/src/resources/extensions/gsd/milestone-ids.ts +49 -19
  551. package/src/resources/extensions/gsd/milestone-planning-persistence.ts +8 -0
  552. package/src/resources/extensions/gsd/milestone-validation-verdict.ts +7 -9
  553. package/src/resources/extensions/gsd/model-router.ts +98 -18
  554. package/src/resources/extensions/gsd/notification-store.ts +17 -28
  555. package/src/resources/extensions/gsd/notifications.ts +37 -6
  556. package/src/resources/extensions/gsd/observability-validator.ts +12 -4
  557. package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +151 -31
  558. package/src/resources/extensions/gsd/parsers-legacy.ts +42 -15
  559. package/src/resources/extensions/gsd/paths.ts +348 -39
  560. package/src/resources/extensions/gsd/planning-depth.ts +2 -1
  561. package/src/resources/extensions/gsd/post-execution-checks.ts +43 -3
  562. package/src/resources/extensions/gsd/preferences-models.ts +47 -13
  563. package/src/resources/extensions/gsd/preferences.ts +188 -14
  564. package/src/resources/extensions/gsd/prompts/ai-integration-phase.md +28 -0
  565. package/src/resources/extensions/gsd/prompts/audit-fix.md +39 -0
  566. package/src/resources/extensions/gsd/prompts/audit-milestone.md +26 -0
  567. package/src/resources/extensions/gsd/prompts/audit-uat.md +24 -0
  568. package/src/resources/extensions/gsd/prompts/autonomous.md +31 -0
  569. package/src/resources/extensions/gsd/prompts/code-review.md +37 -0
  570. package/src/resources/extensions/gsd/prompts/complete-milestone.md +8 -2
  571. package/src/resources/extensions/gsd/prompts/complete-slice.md +24 -15
  572. package/src/resources/extensions/gsd/prompts/discuss-phase.md +31 -0
  573. package/src/resources/extensions/gsd/prompts/docs-update.md +13 -0
  574. package/src/resources/extensions/gsd/prompts/execute-phase.md +33 -0
  575. package/src/resources/extensions/gsd/prompts/execute-task.md +5 -1
  576. package/src/resources/extensions/gsd/prompts/explore.md +58 -0
  577. package/src/resources/extensions/gsd/prompts/graphify.md +27 -0
  578. package/src/resources/extensions/gsd/prompts/health.md +37 -0
  579. package/src/resources/extensions/gsd/prompts/import.md +30 -0
  580. package/src/resources/extensions/gsd/prompts/inbox.md +27 -0
  581. package/src/resources/extensions/gsd/prompts/ingest-docs.md +30 -0
  582. package/src/resources/extensions/gsd/prompts/manager.md +21 -0
  583. package/src/resources/extensions/gsd/prompts/map-codebase.md +42 -0
  584. package/src/resources/extensions/gsd/prompts/milestone-summary.md +27 -0
  585. package/src/resources/extensions/gsd/prompts/mvp-phase.md +23 -0
  586. package/src/resources/extensions/gsd/prompts/pause-work.md +24 -0
  587. package/src/resources/extensions/gsd/prompts/phase.md +22 -0
  588. package/src/resources/extensions/gsd/prompts/plan-phase.md +34 -0
  589. package/src/resources/extensions/gsd/prompts/plan-review-convergence.md +34 -0
  590. package/src/resources/extensions/gsd/prompts/profile-user.md +28 -0
  591. package/src/resources/extensions/gsd/prompts/progress.md +30 -0
  592. package/src/resources/extensions/gsd/prompts/quick-task.md +1 -1
  593. package/src/resources/extensions/gsd/prompts/reactive-execute.md +2 -2
  594. package/src/resources/extensions/gsd/prompts/resume-work.md +20 -0
  595. package/src/resources/extensions/gsd/prompts/review-backlog.md +21 -0
  596. package/src/resources/extensions/gsd/prompts/review.md +27 -0
  597. package/src/resources/extensions/gsd/prompts/run-uat.md +5 -1
  598. package/src/resources/extensions/gsd/prompts/secure-phase.md +24 -0
  599. package/src/resources/extensions/gsd/prompts/settings.md +24 -0
  600. package/src/resources/extensions/gsd/prompts/sketch.md +59 -0
  601. package/src/resources/extensions/gsd/prompts/spec-phase.md +29 -0
  602. package/src/resources/extensions/gsd/prompts/spike.md +59 -0
  603. package/src/resources/extensions/gsd/prompts/stats.md +43 -0
  604. package/src/resources/extensions/gsd/prompts/surface.md +25 -0
  605. package/src/resources/extensions/gsd/prompts/thread.md +24 -0
  606. package/src/resources/extensions/gsd/prompts/triage-captures.md +1 -1
  607. package/src/resources/extensions/gsd/prompts/ui-phase.md +29 -0
  608. package/src/resources/extensions/gsd/prompts/ui-review.md +29 -0
  609. package/src/resources/extensions/gsd/prompts/ultraplan-phase.md +24 -0
  610. package/src/resources/extensions/gsd/prompts/validate-phase.md +26 -0
  611. package/src/resources/extensions/gsd/prompts/verify-work.md +24 -0
  612. package/src/resources/extensions/gsd/prompts/workspace.md +22 -0
  613. package/src/resources/extensions/gsd/prompts/workstreams.md +24 -0
  614. package/src/resources/extensions/gsd/provider-error-guidance.ts +32 -0
  615. package/src/resources/extensions/gsd/queue-order.ts +3 -2
  616. package/src/resources/extensions/gsd/recovery-classification.ts +7 -0
  617. package/src/resources/extensions/gsd/roadmap-slices.ts +1 -1
  618. package/src/resources/extensions/gsd/safety/content-validator.ts +2 -1
  619. package/src/resources/extensions/gsd/safety/evidence-cross-ref.ts +45 -1
  620. package/src/resources/extensions/gsd/service-tier.ts +2 -0
  621. package/src/resources/extensions/gsd/session-lock.ts +15 -13
  622. package/src/resources/extensions/gsd/skills/gsd-headless/SKILL.md +3 -0
  623. package/src/resources/extensions/gsd/skills/gsd-headless/references/commands.md +51 -0
  624. package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +58 -14
  625. package/src/resources/extensions/gsd/state-reconciliation/drift/completion.ts +22 -2
  626. package/src/resources/extensions/gsd/state-reconciliation/drift/external-markdown-edit.ts +105 -0
  627. package/src/resources/extensions/gsd/state-reconciliation/drift/external-planning-edit.ts +180 -0
  628. package/src/resources/extensions/gsd/state-reconciliation/drift/project-md.ts +19 -6
  629. package/src/resources/extensions/gsd/state-reconciliation/drift/roadmap.ts +2 -2
  630. package/src/resources/extensions/gsd/state-reconciliation/drift/stale-render.ts +98 -26
  631. package/src/resources/extensions/gsd/state-reconciliation/index.ts +36 -3
  632. package/src/resources/extensions/gsd/state-reconciliation/registry.ts +12 -0
  633. package/src/resources/extensions/gsd/state-reconciliation/types.ts +19 -0
  634. package/src/resources/extensions/gsd/state.ts +57 -15
  635. package/src/resources/extensions/gsd/sync-lock.ts +11 -20
  636. package/src/resources/extensions/gsd/tests/__fixtures__/flat-phase/.gsd/phases/01-foundation/01-01-PLAN.md +13 -0
  637. package/src/resources/extensions/gsd/tests/__fixtures__/flat-phase/.gsd/phases/01-foundation/01-ROADMAP.md +8 -0
  638. package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/m001-basic/.gsd/milestones/M001/M001-ROADMAP.md +13 -0
  639. package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/m001-basic/.gsd/milestones/M001/slices/S01/S01-PLAN.md +5 -0
  640. package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/PROJECT.md +1 -0
  641. package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/ROADMAP.md +5 -0
  642. package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/STATE.md +10 -0
  643. package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/phases/01-foundation/01-01-PLAN.md +13 -0
  644. package/src/resources/extensions/gsd/tests/auto-artifact-paths.test.ts +322 -1
  645. package/src/resources/extensions/gsd/tests/auto-closeout-messaging.test.ts +71 -0
  646. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +68 -116
  647. package/src/resources/extensions/gsd/tests/auto-direct-dispatch-parse.test.ts +33 -0
  648. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +104 -0
  649. package/src/resources/extensions/gsd/tests/auto-migrating-recovery.test.ts +32 -1
  650. package/src/resources/extensions/gsd/tests/auto-model-selection-tool-poisoning.test.ts +7 -2
  651. package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +10 -0
  652. package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +28 -22
  653. package/src/resources/extensions/gsd/tests/auto-paused-session-validation.test.ts +11 -2
  654. package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +19 -2
  655. package/src/resources/extensions/gsd/tests/auto-verification.test.ts +36 -0
  656. package/src/resources/extensions/gsd/tests/auto-worktree-auto-resolve.test.ts +17 -0
  657. package/src/resources/extensions/gsd/tests/blocker-placeholder-logs.test.ts +218 -0
  658. package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +15 -11
  659. package/src/resources/extensions/gsd/tests/commands-dispatcher-unmerged-milestone.test.ts +89 -0
  660. package/src/resources/extensions/gsd/tests/commands-dispatcher-validation-block.test.ts +37 -1
  661. package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +31 -30
  662. package/src/resources/extensions/gsd/tests/commands-gsd-core.test.ts +862 -0
  663. package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +1 -1
  664. package/src/resources/extensions/gsd/tests/compat-health-line.test.ts +102 -0
  665. package/src/resources/extensions/gsd/tests/compat-marker-invalidation.test.ts +51 -0
  666. package/src/resources/extensions/gsd/tests/compat-marker.test.ts +105 -0
  667. package/src/resources/extensions/gsd/tests/complete-milestone-prompt-rendering.test.ts +6 -2
  668. package/src/resources/extensions/gsd/tests/complete-slice-reopen-handoff.test.ts +82 -0
  669. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +7 -7
  670. package/src/resources/extensions/gsd/tests/complete-task.test.ts +7 -7
  671. package/src/resources/extensions/gsd/tests/consent-question.test.ts +45 -0
  672. package/src/resources/extensions/gsd/tests/core-overlay-fallback.test.ts +1 -0
  673. package/src/resources/extensions/gsd/tests/dashboard-overlay.test.ts +37 -0
  674. package/src/resources/extensions/gsd/tests/db-authority-regression.test.ts +1 -1
  675. package/src/resources/extensions/gsd/tests/db-engine-logs.test.ts +207 -0
  676. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +63 -1
  677. package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +49 -5
  678. package/src/resources/extensions/gsd/tests/discuss-cold-start-db-open.test.ts +10 -27
  679. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +20 -1
  680. package/src/resources/extensions/gsd/tests/dispatch-db-degradation-logs.test.ts +98 -0
  681. package/src/resources/extensions/gsd/tests/dispatch-history.test.ts +102 -0
  682. package/src/resources/extensions/gsd/tests/dispatch-logs.test.ts +103 -0
  683. package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +38 -49
  684. package/src/resources/extensions/gsd/tests/dispatch-reactive-logs.test.ts +98 -0
  685. package/src/resources/extensions/gsd/tests/dist-redirect.mjs +7 -0
  686. package/src/resources/extensions/gsd/tests/doctor-git-checks-autoresolve.test.ts +149 -0
  687. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +6 -4
  688. package/src/resources/extensions/gsd/tests/ensure-preconditions-guard-4996.test.ts +17 -10
  689. package/src/resources/extensions/gsd/tests/evidence-cross-ref.test.ts +95 -0
  690. package/src/resources/extensions/gsd/tests/export-html-enhancements.test.ts +25 -0
  691. package/src/resources/extensions/gsd/tests/export-memory.test.ts +179 -0
  692. package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +53 -0
  693. package/src/resources/extensions/gsd/tests/external-markdown-edit.test.ts +137 -0
  694. package/src/resources/extensions/gsd/tests/external-planning-edit.test.ts +199 -0
  695. package/src/resources/extensions/gsd/tests/fallback-continuation.test.ts +36 -0
  696. package/src/resources/extensions/gsd/tests/file-lock.test.ts +43 -0
  697. package/src/resources/extensions/gsd/tests/flat-phase-migration.test.ts +114 -0
  698. package/src/resources/extensions/gsd/tests/flat-phase-renderer.test.ts +83 -0
  699. package/src/resources/extensions/gsd/tests/flat-phase-round-trip.test.ts +72 -0
  700. package/src/resources/extensions/gsd/tests/flat-phase-validation-integration.test.ts +120 -0
  701. package/src/resources/extensions/gsd/tests/flat-phase-validation-path.test.ts +74 -0
  702. package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +2 -1
  703. package/src/resources/extensions/gsd/tests/gsd-command-home.test.ts +40 -7
  704. package/src/resources/extensions/gsd/tests/gsd-core-parity-routing.test.ts +183 -0
  705. package/src/resources/extensions/gsd/tests/guidance.test.ts +25 -0
  706. package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +19 -11
  707. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +75 -0
  708. package/src/resources/extensions/gsd/tests/integration/commands-eval-review.integration.test.ts +6 -2
  709. package/src/resources/extensions/gsd/tests/integration/gitignore-tracked-gsd.test.ts +55 -0
  710. package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +4 -3
  711. package/src/resources/extensions/gsd/tests/integration/integration-proof.test.ts +11 -7
  712. package/src/resources/extensions/gsd/tests/interactive-routing-bypass.test.ts +1 -0
  713. package/src/resources/extensions/gsd/tests/knowledge-cold-start.test.ts +372 -0
  714. package/src/resources/extensions/gsd/tests/layout-policy.test.ts +59 -0
  715. package/src/resources/extensions/gsd/tests/loop.test.ts +60 -0
  716. package/src/resources/extensions/gsd/tests/markdown-renderer-parse-cache.test.ts +1 -1
  717. package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +214 -82
  718. package/src/resources/extensions/gsd/tests/mcp-filter.test.ts +74 -1
  719. package/src/resources/extensions/gsd/tests/metrics-ledger-cap.test.ts +239 -0
  720. package/src/resources/extensions/gsd/tests/milestone-closeout.test.ts +7 -2
  721. package/src/resources/extensions/gsd/tests/milestone-settlement.test.ts +6 -1
  722. package/src/resources/extensions/gsd/tests/model-router.test.ts +343 -7
  723. package/src/resources/extensions/gsd/tests/notification-store.test.ts +23 -0
  724. package/src/resources/extensions/gsd/tests/notifications.test.ts +33 -0
  725. package/src/resources/extensions/gsd/tests/oauth-api-model-routing.test.ts +13 -1
  726. package/src/resources/extensions/gsd/tests/observability-validator-boundary.test.ts +194 -0
  727. package/src/resources/extensions/gsd/tests/orchestrator-legacy-parity.test.ts +1 -1
  728. package/src/resources/extensions/gsd/tests/orchestrator-logs.test.ts +339 -0
  729. package/src/resources/extensions/gsd/tests/orphaned-worktree-audit.test.ts +52 -1
  730. package/src/resources/extensions/gsd/tests/parallel-monitor-overlay.test.ts +91 -0
  731. package/src/resources/extensions/gsd/tests/plan-milestone-boundary-map-preservation.test.ts +7 -2
  732. package/src/resources/extensions/gsd/tests/plan-milestone-sketch-render.test.ts +7 -2
  733. package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +9 -6
  734. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +58 -23
  735. package/src/resources/extensions/gsd/tests/plan-task.test.ts +4 -4
  736. package/src/resources/extensions/gsd/tests/planning-crossval.test.ts +19 -0
  737. package/src/resources/extensions/gsd/tests/planning-layout-detect.test.ts +84 -0
  738. package/src/resources/extensions/gsd/tests/planning-marker.test.ts +107 -0
  739. package/src/resources/extensions/gsd/tests/planning-projection-hook.test.ts +123 -0
  740. package/src/resources/extensions/gsd/tests/planning-round-trip-property.test.ts +164 -0
  741. package/src/resources/extensions/gsd/tests/planning-writer.test.ts +82 -0
  742. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +48 -1
  743. package/src/resources/extensions/gsd/tests/preferences.test.ts +47 -1
  744. package/src/resources/extensions/gsd/tests/prefs-missing-models-crash.test.ts +35 -4
  745. package/src/resources/extensions/gsd/tests/progress-strip-test-helpers.ts +79 -0
  746. package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +2 -0
  747. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +16 -0
  748. package/src/resources/extensions/gsd/tests/provider-error-guidance.test.ts +15 -0
  749. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +107 -0
  750. package/src/resources/extensions/gsd/tests/ready-phrase-no-files-4573.test.ts +22 -13
  751. package/src/resources/extensions/gsd/tests/reassess-handler.test.ts +9 -8
  752. package/src/resources/extensions/gsd/tests/reconcile-logs.test.ts +244 -0
  753. package/src/resources/extensions/gsd/tests/recovery-finalize-logs.test.ts +119 -0
  754. package/src/resources/extensions/gsd/tests/recovery-verify-logs.test.ts +428 -0
  755. package/src/resources/extensions/gsd/tests/register-extension-guard.test.ts +25 -0
  756. package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +79 -4
  757. package/src/resources/extensions/gsd/tests/replan-handler.test.ts +4 -4
  758. package/src/resources/extensions/gsd/tests/resume-missing-worktree-warning.test.ts +5 -5
  759. package/src/resources/extensions/gsd/tests/round-trip-property.test.ts +137 -0
  760. package/src/resources/extensions/gsd/tests/session-lock-transient-read.test.ts +28 -2
  761. package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +68 -0
  762. package/src/resources/extensions/gsd/tests/show-config-command.test.ts +3 -0
  763. package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +1 -0
  764. package/src/resources/extensions/gsd/tests/stale-dirlistcache-4648.test.ts +7 -1
  765. package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +155 -58
  766. package/src/resources/extensions/gsd/tests/stop-backtrack.test.ts +6 -2
  767. package/src/resources/extensions/gsd/tests/stuck-state-via-db.test.ts +85 -0
  768. package/src/resources/extensions/gsd/tests/sync-lock.test.ts +23 -0
  769. package/src/resources/extensions/gsd/tests/system-context-message-routing.test.ts +29 -1
  770. package/src/resources/extensions/gsd/tests/terminal-tool-surface-classification.test.ts +80 -0
  771. package/src/resources/extensions/gsd/tests/thinking-level-resolution.test.ts +1 -1
  772. package/src/resources/extensions/gsd/tests/tool-schema-model-fallback.test.ts +64 -0
  773. package/src/resources/extensions/gsd/tests/tool-search-shim.test.ts +71 -0
  774. package/src/resources/extensions/gsd/tests/tool-surface-readiness.test.ts +26 -7
  775. package/src/resources/extensions/gsd/tests/tool-unavailable-retry.test.ts +23 -0
  776. package/src/resources/extensions/gsd/tests/tui-header-lifecycle.test.ts +40 -86
  777. package/src/resources/extensions/gsd/tests/tui-render-kit.test.ts +44 -6
  778. package/src/resources/extensions/gsd/tests/undo.test.ts +39 -37
  779. package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +22 -0
  780. package/src/resources/extensions/gsd/tests/unmerged-milestone-guard.test.ts +62 -0
  781. package/src/resources/extensions/gsd/tests/uok-audit.test.ts +194 -0
  782. package/src/resources/extensions/gsd/tests/uok-gitops-turn-action.test.ts +72 -1
  783. package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +9 -1
  784. package/src/resources/extensions/gsd/tests/validation-block-guard.test.ts +51 -0
  785. package/src/resources/extensions/gsd/tests/validation-gate-patterns.test.ts +34 -6
  786. package/src/resources/extensions/gsd/tests/verify-artifact-tightened.test.ts +90 -0
  787. package/src/resources/extensions/gsd/tests/visualizer-data.test.ts +87 -0
  788. package/src/resources/extensions/gsd/tests/visualizer-views.test.ts +27 -0
  789. package/src/resources/extensions/gsd/tests/workflow-kernel.test.ts +51 -0
  790. package/src/resources/extensions/gsd/tests/workflow-mcp-preflight.test.ts +133 -0
  791. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +34 -8
  792. package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +3 -4
  793. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +64 -8
  794. package/src/resources/extensions/gsd/tests/worktree-health.test.ts +43 -3
  795. package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +62 -0
  796. package/src/resources/extensions/gsd/tests/worktree-safety.test.ts +39 -18
  797. package/src/resources/extensions/gsd/tests/worktree-write-gate.test.ts +75 -3
  798. package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +4 -1
  799. package/src/resources/extensions/gsd/tests/write-gate.test.ts +103 -0
  800. package/src/resources/extensions/gsd/tool-surface-readiness.ts +226 -16
  801. package/src/resources/extensions/gsd/tools/complete-milestone.ts +4 -7
  802. package/src/resources/extensions/gsd/tools/complete-slice.ts +12 -9
  803. package/src/resources/extensions/gsd/tools/complete-task.ts +15 -1
  804. package/src/resources/extensions/gsd/tools/exec-tool.ts +2 -118
  805. package/src/resources/extensions/gsd/tools/plan-slice.ts +1 -3
  806. package/src/resources/extensions/gsd/tools/plan-task.ts +17 -1
  807. package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +9 -10
  808. package/src/resources/extensions/gsd/tools/validate-milestone.ts +8 -13
  809. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +43 -4
  810. package/src/resources/extensions/gsd/triage-resolution.ts +14 -7
  811. package/src/resources/extensions/gsd/tui/render-kit.ts +56 -13
  812. package/src/resources/extensions/gsd/undo.ts +8 -9
  813. package/src/resources/extensions/gsd/unit-registry.ts +27 -3
  814. package/src/resources/extensions/gsd/unmerged-milestone-guard.ts +60 -1
  815. package/src/resources/extensions/gsd/validation-block-guard.ts +46 -0
  816. package/src/resources/extensions/gsd/visualizer-data.ts +55 -0
  817. package/src/resources/extensions/gsd/visualizer-views.ts +27 -2
  818. package/src/resources/extensions/gsd/workflow-logger.ts +5 -0
  819. package/src/resources/extensions/gsd/workflow-mcp.ts +12 -1
  820. package/src/resources/extensions/gsd/workflow-projections.ts +24 -4
  821. package/src/resources/extensions/gsd/worktree-command.ts +6 -6
  822. package/src/resources/extensions/gsd/worktree-health.ts +6 -3
  823. package/src/resources/extensions/gsd/worktree-manager.ts +122 -16
  824. package/src/resources/extensions/gsd/worktree-safety.ts +31 -11
  825. package/src/resources/extensions/gsd/worktree-shell-guard.ts +123 -0
  826. package/src/resources/extensions/mcp-client/manager.ts +3 -3
  827. package/src/resources/extensions/search-the-web/index.ts +45 -9
  828. package/src/resources/extensions/search-the-web/native-search.ts +16 -4
  829. package/src/resources/extensions/shared/gsd-browser-cli.ts +41 -2
  830. package/src/resources/extensions/subagent/index.ts +20 -15
  831. package/src/resources/extensions/subagent/tests/worktree-cwd.test.ts +57 -0
  832. package/src/resources/extensions/subagent/worktree-cwd.ts +35 -0
  833. package/dist/web/standalone/.next/static/chunks/8785.2e5a118797fb2dd2.js +0 -1
  834. /package/dist/web/standalone/.next/static/{2T9IOdiiM3o3gZ4UbPi8E → BTKtGFF1Y-hvVJEGhBRo9}/_buildManifest.js +0 -0
  835. /package/dist/web/standalone/.next/static/{2T9IOdiiM3o3gZ4UbPi8E → BTKtGFF1Y-hvVJEGhBRo9}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-f0285ce91d4ec9ef.js"/><script src="/_next/static/chunks/51aff721-df603e9695992f6b.js" async=""></script><script src="/_next/static/chunks/686-9424f271d9ce5d07.js" async=""></script><script src="/_next/static/chunks/main-app-90d1d8d5e5d2dc6b.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-f0285ce91d4ec9ef.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[25020,[],\"\"]\n3:I[81130,[],\"\"]\n4:I[84649,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[84649,[],\"ViewportBoundary\"]\na:I[84649,[],\"MetadataBoundary\"]\nc:I[45336,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"2T9IOdiiM3o3gZ4UbPi8E\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-f46ea08200a0227e.js"/><script src="/_next/static/chunks/51aff721-df603e9695992f6b.js" async=""></script><script src="/_next/static/chunks/686-9424f271d9ce5d07.js" async=""></script><script src="/_next/static/chunks/main-app-90d1d8d5e5d2dc6b.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-f46ea08200a0227e.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[25020,[],\"\"]\n3:I[81130,[],\"\"]\n4:I[84649,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[84649,[],\"ViewportBoundary\"]\na:I[84649,[],\"MetadataBoundary\"]\nc:I[45336,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"BTKtGFF1Y-hvVJEGhBRo9\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"WEZfUaGdWHxXh7z47mmkA37XmfnL+RZGySrnnI+TL9Q="}
1
+ {"node":{},"edge":{},"encryptionKey":"/xpiJpr3T6vXPcjdfp0mi6ca3/t36sam3DwrZa2gpuU="}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4283],{54283:(e,s,t)=>{t.r(s),t.d(s,{VisualizerView:()=>eo});var r=t(18870),n=t(45110),a=t(22434),l=t(86788),d=t(24896),i=t(55285),o=t(15007),c=t(32858);let m=(0,c.A)("heart-pulse",[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}],["path",{d:"M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27",key:"auskq0"}]]);var x=t(16847),u=t(8959),h=t(44302),p=t(68206),g=t(91262),f=t(20607),b=t(53348),j=t(62970),v=t(32457),N=t(92525),y=t(18239),w=t(67504),k=t(78070),$=t(92893),S=t(16579),C=t(76756);let A=(0,c.A)("file-braces",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]]);var D=t(66828),I=t(8291),P=t(18833),M=t(93058),R=t(78300),T=t(83890);let L=[{value:"progress",label:"Progress",Icon:l.A},{value:"timeline",label:"Timeline",Icon:d.A},{value:"deps",label:"Dependencies",Icon:i.A},{value:"metrics",label:"Metrics",Icon:o.A},{value:"health",label:"Health",Icon:m},{value:"agent",label:"Agent",Icon:x.A},{value:"changes",label:"Changes",Icon:u.A},{value:"knowledge",label:"Knowledge",Icon:h.A},{value:"captures",label:"Captures",Icon:p.A},{value:"export",label:"Export",Icon:g.A}];function B(e){switch(e){case"complete":case"done":return(0,r.jsx)(f.A,{className:"h-4 w-4 shrink-0 text-success"});case"active":return(0,r.jsx)(b.A,{className:"h-4 w-4 shrink-0 text-info"});case"pending":return(0,r.jsx)(j.A,{className:"h-4 w-4 shrink-0 text-muted-foreground/50"});case"parked":return(0,r.jsx)(v.A,{className:"h-4 w-4 shrink-0 text-muted-foreground"})}}function U({risk:e}){return(0,r.jsx)("span",{className:(0,P.cn)("inline-flex items-center rounded border px-2 py-0.5 text-[11px] font-semibold uppercase tracking-widest","high"===e?"bg-destructive/15 text-destructive border-destructive/25 ring-destructive/10":"medium"===e?"bg-warning/15 text-warning border-warning/25 ring-warning/10":"bg-success/15 text-success border-success/25 ring-success/10"),children:e})}function E(e){let s=new Date(e);return`${String(s.getHours()).padStart(2,"0")}:${String(s.getMinutes()).padStart(2,"0")}`}function F(e){if(!e)return"unknown";let s=new Date(e);return Number.isNaN(s.getTime())?e:s.toLocaleDateString("en-US",{month:"short",day:"numeric"})}function H(e,s,t){return e.sliceVerifications.find(e=>e.milestoneId===s&&e.sliceId===t)}function _(e,s){return null!=e&&("string"==typeof e||"number"==typeof e||"boolean"==typeof e?String(e).toLowerCase().includes(s):Array.isArray(e)?e.some(e=>_(e,s)):"object"==typeof e&&Object.values(e).some(e=>_(e,s)))}function O(e,s){return e.filter(e=>_(e,s))}function z({children:e}){return(0,r.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,r.jsx)("div",{className:"h-3.5 w-0.5 rounded-full bg-foreground/25"}),(0,r.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:e})]})}function V({message:e,icon:s=N.A}){return(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center gap-4 rounded-xl border border-dashed border-border py-16 text-center",children:[(0,r.jsx)("div",{className:"rounded-full border border-border bg-muted/50 p-4",children:(0,r.jsx)(s,{className:"h-6 w-6 text-muted-foreground"})}),(0,r.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:e})]})}function q({label:e,value:s,sub:t,accent:n}){return(0,r.jsxs)("div",{className:(0,P.cn)("relative overflow-hidden rounded-xl border bg-gradient-to-br to-transparent p-5",{sky:"from-info/8 border-info/20",emerald:"from-success/8 border-success/20",amber:"from-warning/8 border-warning/20",default:"from-transparent border-border"}[n??"default"]),children:[(0,r.jsx)("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:e}),(0,r.jsx)("p",{className:"mt-2 text-2xl font-bold tabular-nums leading-none tracking-tight",children:s}),t&&(0,r.jsx)("p",{className:"mt-1.5 text-xs text-muted-foreground",children:t})]})}function J({value:e,max:s,color:t="sky",animated:n=!1}){let a=s>0?Math.max(1,e/s*100):0;return(0,r.jsx)("div",{className:"h-2 w-full overflow-hidden rounded-full bg-muted",children:(0,r.jsx)("div",{className:(0,P.cn)("h-full rounded-full transition-[width,background-color] duration-700",{sky:"bg-info",emerald:"bg-success",amber:"bg-warning"}[t],n&&"animate-pulse"),style:{width:`${a}%`}})})}function W({data:e}){let s=e.stats,t=s.missingSlices.length>0||s.updatedSlices.length>0||s.recentEntries.length>0;return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Feature Snapshot"}),(0,r.jsxs)("div",{className:"mt-5 grid gap-4 sm:grid-cols-3",children:[(0,r.jsx)(q,{label:"Missing Slices",value:String(s.missingCount),accent:s.missingCount>0?"amber":"emerald"}),(0,r.jsx)(q,{label:"Updated This Week",value:String(s.updatedCount),accent:"sky"}),(0,r.jsx)(q,{label:"Recent Completions",value:String(s.recentEntries.length),accent:"emerald"})]}),t&&(0,r.jsxs)("div",{className:"mt-6 grid gap-5 lg:grid-cols-3",children:[s.missingSlices.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Missing"}),(0,r.jsx)("div",{className:"space-y-2",children:s.missingSlices.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-3 py-2",children:[(0,r.jsxs)("p",{className:"font-mono text-xs font-semibold",children:[e.milestoneId,"/",e.sliceId]}),(0,r.jsx)("p",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:e.title})]},`${e.milestoneId}-${e.sliceId}`))})]}),s.updatedSlices.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Updated"}),(0,r.jsx)("div",{className:"space-y-2",children:s.updatedSlices.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-3 py-2",children:[(0,r.jsxs)("p",{className:"font-mono text-xs font-semibold",children:[e.milestoneId,"/",e.sliceId]}),(0,r.jsxs)("p",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:[F(e.completedAt)," \xb7 ",e.title]})]},`${e.milestoneId}-${e.sliceId}`))})]}),s.recentEntries.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Recent"}),(0,r.jsx)("div",{className:"space-y-2",children:s.recentEntries.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-3 py-2",children:[(0,r.jsxs)("p",{className:"font-mono text-xs font-semibold",children:[e.milestoneId,"/",e.sliceId]}),(0,r.jsx)("p",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:e.oneLiner||e.title})]},`${e.milestoneId}-${e.sliceId}`))})]})]})]})}function K({data:e}){if(0===e.discussion.length)return null;let s=e.discussion.reduce((e,s)=>(e[s.state]+=1,e),{discussed:0,draft:0,undiscussed:0});return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[(0,r.jsx)(z,{children:"Discussion Status"}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-2 text-xs font-medium",children:[(0,r.jsxs)("span",{className:"rounded-md bg-success/10 px-2 py-1 text-success",children:["Discussed ",s.discussed]}),(0,r.jsxs)("span",{className:"rounded-md bg-warning/10 px-2 py-1 text-warning",children:["Draft ",s.draft]}),(0,r.jsxs)("span",{className:"rounded-md bg-muted px-2 py-1 text-muted-foreground",children:["Pending ",s.undiscussed]})]})]}),(0,r.jsx)("div",{className:"mt-5 grid gap-2 md:grid-cols-2",children:e.discussion.map(e=>{let s="discussed"===e.state?"text-success bg-success/10":"draft"===e.state?"text-warning bg-warning/10":"text-muted-foreground bg-muted";return(0,r.jsxs)("div",{className:"flex items-center gap-3 rounded-lg bg-muted/40 px-3 py-2.5",children:[(0,r.jsx)(y.A,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),(0,r.jsx)("span",{className:"font-mono text-xs font-semibold",children:e.milestoneId}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-sm",children:e.title}),(0,r.jsx)("span",{className:(0,P.cn)("rounded-md px-2 py-0.5 text-[11px] font-semibold",s),children:e.state})]},e.milestoneId)})})]})}function G({data:e}){if(0===e.milestones.length)return(0,r.jsx)(V,{message:"No milestones defined yet.",icon:l.A});let s=e.milestones.flatMap(e=>e.slices),t={low:0,medium:0,high:0};for(let e of s)"high"===e.risk?t.high++:"medium"===e.risk?t.medium++:t.low++;return(0,r.jsxs)("div",{className:"space-y-6",children:[s.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Risk Heatmap"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:e.milestones.filter(e=>e.slices.length>0).map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-4",children:[(0,r.jsx)("span",{className:"w-16 shrink-0 font-mono text-xs font-medium text-muted-foreground",children:e.id}),(0,r.jsx)("div",{className:"flex flex-wrap gap-1.5",children:e.slices.map(e=>(0,r.jsx)("div",{title:`${e.id}: ${e.title} (${e.risk})`,className:(0,P.cn)("h-6 w-6 rounded cursor-default transition-transform hover:scale-125","high"===e.risk?"bg-destructive":"medium"===e.risk?"bg-warning":"bg-success")},e.id))})]},e.id))}),(0,r.jsxs)("div",{className:"mt-5 flex items-center gap-5 text-xs text-muted-foreground",children:[(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"h-3 w-3 rounded-sm bg-success"}),"Low (",t.low,")"]}),(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"h-3 w-3 rounded-sm bg-warning"}),"Medium (",t.medium,")"]}),(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"h-3 w-3 rounded-sm bg-destructive"}),"High (",t.high,")"]})]})]}),(0,r.jsx)(W,{data:e}),(0,r.jsx)(K,{data:e}),(0,r.jsx)("div",{className:"space-y-4",children:e.milestones.map(s=>(0,r.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-border bg-muted/50 px-5 py-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[B(s.status),(0,r.jsx)("span",{className:"font-mono text-xs font-semibold text-muted-foreground",children:s.id}),(0,r.jsx)("span",{className:"text-sm font-semibold",children:s.title})]}),(0,r.jsx)("span",{className:(0,P.cn)("rounded-md px-2.5 py-1 text-xs font-semibold uppercase tracking-wider","complete"===s.status?"bg-success/15 text-success":"active"===s.status?"bg-info/15 text-info":"parked"===s.status?"bg-warning/15 text-warning":"bg-muted text-muted-foreground"),children:s.status})]}),("pending"===s.status||"parked"===s.status)&&s.dependsOn.length>0&&(0,r.jsxs)("div",{className:"px-5 py-2.5 text-xs text-muted-foreground border-b border-border/50",children:["Depends on ",s.dependsOn.join(", ")]}),s.slices.length>0&&(0,r.jsx)("div",{className:"divide-y divide-border/50",children:s.slices.map(t=>{var n;let a=t.tasks.filter(e=>e.done).length,l=t.done?"done":t.active?"active":"pending",d=H(e,s.id,t.id);return(0,r.jsxs)("div",{className:"px-5 py-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[B(l),(0,r.jsx)("span",{className:"font-mono text-xs font-medium text-muted-foreground",children:t.id}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-sm font-medium",children:t.title}),(0,r.jsxs)("div",{className:"flex shrink-0 items-center gap-2.5",children:[d&&(0,r.jsxs)("span",{className:(0,P.cn)("rounded-md border px-2 py-0.5 text-[11px] font-semibold","passed"===(n=d.verificationResult)?"text-success border-success/25 bg-success/10":"failed"===n?"text-destructive border-destructive/25 bg-destructive/10":"text-muted-foreground border-border bg-muted/50"),children:[d.verificationResult||"untested",d.blockerDiscovered?" \xb7 blocker":""]}),t.depends.length>0&&(0,r.jsxs)("span",{className:"text-xs text-muted-foreground",children:["deps: ",t.depends.join(", ")]}),t.tasks.length>0&&(0,r.jsxs)("span",{className:"font-mono text-xs font-medium text-muted-foreground",children:[a,"/",t.tasks.length]}),(0,r.jsx)(U,{risk:t.risk})]})]}),(t.active||t.tasks.some(e=>e.active))&&t.tasks.length>0&&(0,r.jsx)("div",{className:"ml-7 mt-3 space-y-1",children:t.tasks.map(e=>(0,r.jsxs)("div",{className:(0,P.cn)("flex items-center gap-2.5 rounded-lg px-3 py-2 transition-colors",e.active?"bg-info/8 border border-info/20":"hover:bg-muted/50"),children:[e.done?B("done"):e.active?B("active"):B("pending"),(0,r.jsx)("span",{className:"font-mono text-xs font-medium text-muted-foreground",children:e.id}),(0,r.jsx)("span",{className:(0,P.cn)("text-sm",e.done&&"text-muted-foreground line-through",e.active&&"font-semibold text-info",!e.done&&!e.active&&"text-muted-foreground"),children:e.title}),e.estimate&&(0,r.jsx)("span",{className:"ml-auto font-mono text-xs text-muted-foreground",children:e.estimate}),e.active&&(0,r.jsx)("span",{className:"rounded-md bg-info/15 px-2 py-0.5 text-[11px] font-bold uppercase tracking-wider text-info",children:"running"})]},e.id))})]},t.id)})})]},s.id))})]})}function X({data:e}){let s=e.sliceVerifications.filter(e=>e.provides.length>0),t=e.sliceVerifications.filter(e=>e.requires.length>0);return 0===s.length&&0===t.length?null:(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Data Flow"}),(0,r.jsxs)("div",{className:"mt-5 grid gap-5 lg:grid-cols-2",children:[s.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Provides"}),(0,r.jsx)("div",{className:"space-y-2",children:s.flatMap(e=>e.provides.map(s=>(0,r.jsxs)("div",{className:"flex items-center gap-3 rounded-lg bg-muted/50 px-3 py-2.5",children:[(0,r.jsx)("span",{className:"font-mono text-xs font-semibold",children:e.sliceId}),(0,r.jsx)(w.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,r.jsx)("span",{className:"truncate text-sm text-muted-foreground",children:s})]},`${e.milestoneId}-${e.sliceId}-${s}`)))})]}),t.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Requires"}),(0,r.jsx)("div",{className:"space-y-2",children:t.flatMap(e=>e.requires.map(s=>(0,r.jsxs)("div",{className:"flex items-center gap-3 rounded-lg bg-muted/50 px-3 py-2.5",children:[(0,r.jsx)("span",{className:"truncate text-sm text-muted-foreground",children:s.provides}),(0,r.jsx)(w.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,r.jsx)("span",{className:"font-mono text-xs font-semibold",children:s.slice})]},`${e.milestoneId}-${e.sliceId}-${s.slice}-${s.provides}`)))})]})]})]})}function Q({data:e}){let s,t=e.criticalPath,n=e.milestones.find(e=>"active"===e.status),a=e.milestones.filter(e=>e.dependsOn.length>0);return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Milestone Dependencies"}),(0,r.jsx)("div",{className:"mt-5",children:0===a.length?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No milestone dependencies configured."}):(0,r.jsx)("div",{className:"flex flex-col gap-3",children:a.flatMap(e=>e.dependsOn.map(s=>(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"rounded-lg border border-info/25 bg-info/10 px-3 py-1.5 font-mono text-sm font-semibold text-info",children:s}),(0,r.jsx)(w.A,{className:"h-4 w-4 text-muted-foreground"}),(0,r.jsx)("span",{className:"rounded-lg border border-border bg-muted/50 px-3 py-1.5 font-mono text-sm font-medium",children:e.id}),(0,r.jsx)("span",{className:"text-sm text-muted-foreground",children:e.title})]},`${s}-${e.id}`)))})})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Slice Dependencies — Active Milestone"}),(0,r.jsx)("div",{className:"mt-5",children:n?0===(s=n.slices.filter(e=>e.depends.length>0)).length?(0,r.jsxs)("p",{className:"text-sm text-muted-foreground",children:["No slice dependencies in ",n.id,"."]}):(0,r.jsx)("div",{className:"flex flex-col gap-3",children:s.flatMap(e=>e.depends.map(s=>(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"rounded-lg border border-info/25 bg-info/10 px-3 py-1.5 font-mono text-sm font-semibold text-info",children:s}),(0,r.jsx)(w.A,{className:"h-4 w-4 text-muted-foreground"}),(0,r.jsx)("span",{className:"rounded-lg border border-border bg-muted/50 px-3 py-1.5 font-mono text-sm font-medium",children:e.id}),(0,r.jsx)("span",{className:"text-sm text-muted-foreground",children:e.title})]},`${s}-${e.id}`)))}):(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No active milestone."})})]}),(0,r.jsx)(X,{data:e}),(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Critical Path"}),(0,r.jsx)("div",{className:"mt-5",children:0===t.milestonePath.length?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No critical path data."}):(0,r.jsxs)("div",{className:"space-y-7",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Milestone Chain"}),(0,r.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:t.milestonePath.map((e,s)=>(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-1.5 font-mono text-sm font-bold text-destructive",children:e}),s<t.milestonePath.length-1&&(0,r.jsx)(k.A,{className:"h-4 w-4 text-muted-foreground"})]},e))})]}),Object.keys(t.milestoneSlack).length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Milestone Slack"}),(0,r.jsx)("div",{className:"flex flex-col gap-2",children:e.milestones.filter(e=>!t.milestonePath.includes(e.id)).map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-4 rounded-lg bg-muted/50 px-4 py-2.5",children:[(0,r.jsx)("span",{className:"w-16 font-mono text-sm font-semibold",children:e.id}),(0,r.jsx)("span",{className:"text-sm text-muted-foreground",children:e.title}),(0,r.jsxs)("span",{className:"ml-auto font-mono text-xs text-muted-foreground",children:["slack: ",t.milestoneSlack[e.id]??0]})]},e.id))})]}),t.slicePath.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Slice Critical Path"}),(0,r.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:t.slicePath.map((e,s)=>(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"rounded-lg border border-warning/30 bg-warning/10 px-3 py-1.5 font-mono text-sm font-semibold text-warning",children:e}),s<t.slicePath.length-1&&(0,r.jsx)(k.A,{className:"h-4 w-4 text-muted-foreground"})]},e))}),n&&(0,r.jsx)("div",{className:"mt-3 space-y-2",children:t.slicePath.map(e=>n.slices.find(s=>s.id===e)).filter(e=>null!=e&&!e.done&&!e.active).map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-2.5 rounded-lg border border-warning/20 bg-warning/8 px-4 py-2.5 text-sm text-warning",children:[(0,r.jsx)($.A,{className:"h-4 w-4 shrink-0"}),(0,r.jsx)("span",{className:"font-mono font-semibold",children:e.id}),(0,r.jsx)("span",{children:"is on the critical path but not yet started"})]},e.id))})]}),Object.keys(t.sliceSlack).length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Slice Slack"}),(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(t.sliceSlack).map(([e,s])=>(0,r.jsxs)("span",{className:"rounded-lg border border-border bg-muted/50 px-3 py-1.5 font-mono text-xs text-muted-foreground",children:[e,": ",s]},e))})]})]})})]})]})}function Y({data:e}){if(!e.totals)return(0,r.jsx)(V,{message:"No metrics data available.",icon:o.A});let s=e.totals;return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,r.jsx)(q,{label:"Execution Units",value:String(s.units),accent:"default"}),(0,r.jsx)(q,{label:"Total Cost",value:(0,R.BD)(s.cost),accent:"emerald"}),(0,r.jsx)(q,{label:"Duration",value:(0,R.a3)(s.duration),accent:"sky"}),(0,r.jsx)(q,{label:"Total Tokens",value:(0,R.ap)(s.tokens.total),sub:`${(0,R.ap)(s.tokens.input)} in \xb7 ${(0,R.ap)(s.tokens.output)} out`,accent:"amber"})]}),e.byPhase.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Cost by Phase"}),(0,r.jsx)("div",{className:"mt-5 space-y-5",children:e.byPhase.map(e=>{let t=s.cost>0?e.cost/s.cost*100:0;return(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-semibold",children:e.phase}),(0,r.jsxs)("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{className:"font-mono font-medium text-foreground",children:(0,R.BD)(e.cost)}),(0,r.jsxs)("span",{children:[t.toFixed(1),"%"]}),(0,r.jsxs)("span",{children:[(0,R.ap)(e.tokens.total)," tok"]}),(0,r.jsxs)("span",{children:[e.units," units"]})]})]}),(0,r.jsx)(J,{value:t,max:100,color:"sky"})]},e.phase)})})]}),e.byModel.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Cost by Model"}),(0,r.jsx)("div",{className:"mt-5 space-y-5",children:e.byModel.map(e=>{let t=s.cost>0?e.cost/s.cost*100:0;return(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,r.jsx)("span",{className:"font-mono text-sm font-medium",children:e.model}),(0,r.jsxs)("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{className:"font-mono font-medium text-foreground",children:(0,R.BD)(e.cost)}),(0,r.jsxs)("span",{children:[t.toFixed(1),"%"]}),(0,r.jsxs)("span",{children:[(0,R.ap)(e.tokens.total)," tok"]}),(0,r.jsxs)("span",{children:[e.units," units"]})]})]}),(0,r.jsx)(J,{value:t,max:100,color:"emerald"})]},e.model)})})]}),e.byTier.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Cost by Routing Tier"}),(0,r.jsx)("div",{className:"mt-5 space-y-5",children:e.byTier.map(e=>{let t=s.cost>0?e.cost/s.cost*100:0;return(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,r.jsx)("span",{className:"font-mono text-sm font-medium",children:e.tier}),(0,r.jsxs)("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{className:"font-mono font-medium text-foreground",children:(0,R.BD)(e.cost)}),(0,r.jsxs)("span",{children:[t.toFixed(1),"%"]}),(0,r.jsxs)("span",{children:[e.units," units"]}),e.downgraded>0&&(0,r.jsxs)("span",{children:[e.downgraded," downgraded"]})]})]}),(0,r.jsx)(J,{value:t,max:100,color:"amber"})]},e.tier)})}),e.tierSavingsLine&&(0,r.jsx)("div",{className:"mt-5 rounded-lg border border-success/20 bg-success/8 px-4 py-3 text-sm text-success",children:e.tierSavingsLine})]}),e.bySlice.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Cost by Slice"}),(0,r.jsx)("div",{className:"mt-5 overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full text-sm",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{className:"border-b border-border text-left text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:[(0,r.jsx)("th",{className:"pb-3 pr-5",children:"Slice"}),(0,r.jsx)("th",{className:"pb-3 pr-5 text-right",children:"Units"}),(0,r.jsx)("th",{className:"pb-3 pr-5 text-right",children:"Cost"}),(0,r.jsx)("th",{className:"pb-3 pr-5 text-right",children:"Duration"}),(0,r.jsx)("th",{className:"pb-3 text-right",children:"Tokens"})]})}),(0,r.jsx)("tbody",{className:"divide-y divide-border/50",children:e.bySlice.map(e=>(0,r.jsxs)("tr",{className:"transition-colors hover:bg-muted/50",children:[(0,r.jsx)("td",{className:"py-3 pr-5 font-mono text-xs font-semibold",children:e.sliceId}),(0,r.jsx)("td",{className:"py-3 pr-5 text-right tabular-nums text-muted-foreground",children:e.units}),(0,r.jsx)("td",{className:"py-3 pr-5 text-right tabular-nums font-medium",children:(0,R.BD)(e.cost)}),(0,r.jsx)("td",{className:"py-3 pr-5 text-right tabular-nums text-muted-foreground",children:(0,R.a3)(e.duration)}),(0,r.jsx)("td",{className:"py-3 text-right tabular-nums text-muted-foreground",children:(0,R.ap)(e.tokens.total)})]},e.sliceId))})]})})]}),e.bySlice.length>=2&&(0,r.jsx)(Z,{data:e,totals:s})]})}function Z({data:e,totals:s}){let t=e.bySlice.filter(e=>e.sliceId.includes("/"));if(t.length<2)return null;let n=t.reduce((e,s)=>e+s.cost,0)/t.length,a=n*e.remainingSliceCount,l=s.cost+a,d=s.duration>0?s.cost/(s.duration/36e5):0;return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Projections"}),(0,r.jsxs)("div",{className:"mt-5 grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,r.jsx)(q,{label:"Avg / Slice",value:(0,R.BD)(n)}),(0,r.jsx)(q,{label:"Projected Remaining",value:(0,R.BD)(a),sub:`${e.remainingSliceCount} slices left`}),(0,r.jsx)(q,{label:"Projected Total",value:(0,R.BD)(l)}),d>0&&(0,r.jsx)(q,{label:"Burn Rate",value:`${(0,R.BD)(d)}/hr`})]}),l>2*s.cost&&e.remainingSliceCount>0&&(0,r.jsxs)("div",{className:"mt-4 flex items-center gap-2.5 rounded-lg border border-warning/20 bg-warning/8 px-4 py-3 text-sm text-warning",children:[(0,r.jsx)($.A,{className:"h-4 w-4 shrink-0"}),"Projected total ",(0,R.BD)(l)," exceeds 2\xd7 current spend"]})]})}function ee({data:e}){let s=e.health,t=e.totals?.cost??0,n=s.budgetCeiling&&s.budgetCeiling>0?Math.min(100,t/s.budgetCeiling*100):0,a=s.providers.filter(e=>!e.ok),l=s.doctorHistory??[];return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,r.jsx)(q,{label:"Budget",value:void 0!==s.budgetCeiling?(0,R.BD)(s.budgetCeiling):"unset",sub:(0,R.BD)(t),accent:n>=90?"amber":"emerald"}),(0,r.jsx)(q,{label:"Token Profile",value:s.tokenProfile,accent:"sky"}),(0,r.jsx)(q,{label:"Tool Calls",value:String(s.toolCalls)}),(0,r.jsx)(q,{label:"Pending Captures",value:String(e.captures.pendingCount),accent:e.captures.pendingCount>0?"amber":"default"})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Budget Pressure"}),(0,r.jsxs)("div",{className:"mt-5 space-y-5",children:[void 0!==s.budgetCeiling?(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"font-medium",children:"Spend"}),(0,r.jsxs)("span",{className:"font-mono text-xs text-muted-foreground",children:[(0,R.BD)(t)," / ",(0,R.BD)(s.budgetCeiling)]})]}),(0,r.jsx)(J,{value:n,max:100,color:n>=90?"amber":"emerald"})]}):(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No budget ceiling set."}),(0,r.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"font-medium",children:"Truncation"}),(0,r.jsxs)("span",{className:"font-mono text-xs text-muted-foreground",children:[s.truncationRate.toFixed(1),"%"]})]}),(0,r.jsx)(J,{value:Math.min(s.truncationRate,100),max:100,color:s.truncationRate>=30?"amber":"sky"})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"font-medium",children:"Continue-here"}),(0,r.jsxs)("span",{className:"font-mono text-xs text-muted-foreground",children:[s.continueHereRate.toFixed(1),"%"]})]}),(0,r.jsx)(J,{value:Math.min(s.continueHereRate,100),max:100,color:s.continueHereRate>=30?"amber":"sky"})]})]})]})]}),s.tierBreakdown.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Routing"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:s.tierBreakdown.map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-4 rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsx)("span",{className:"w-24 font-mono text-xs font-semibold",children:e.tier}),(0,r.jsxs)("span",{className:"text-sm text-muted-foreground",children:[e.units," units"]}),(0,r.jsx)("span",{className:"ml-auto font-mono text-sm font-medium",children:(0,R.BD)(e.cost)}),e.downgraded>0&&(0,r.jsxs)("span",{className:"rounded-md bg-warning/10 px-2 py-0.5 text-xs text-warning",children:[e.downgraded," downgraded"]})]},e.tier))}),s.tierSavingsLine&&(0,r.jsx)("p",{className:"mt-4 text-sm text-success",children:s.tierSavingsLine})]}),(s.environmentIssues.length>0||a.length>0||s.skillSummary.total>0)&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Readiness"}),(0,r.jsxs)("div",{className:"mt-5 grid gap-5 lg:grid-cols-3",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Environment"}),0===s.environmentIssues.length?(0,r.jsx)("p",{className:"text-sm text-success",children:"No environment issues."}):(0,r.jsx)("div",{className:"space-y-2",children:s.environmentIssues.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-3 py-2",children:[(0,r.jsx)("p",{className:(0,P.cn)("text-sm font-medium","error"===e.status?"text-destructive":"text-warning"),children:e.message}),e.detail&&(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:e.detail})]},`${e.name}-${e.message}`))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Providers"}),0===s.providers.length?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No provider checks available."}):(0,r.jsx)("div",{className:"space-y-2",children:s.providers.map(e=>(0,r.jsxs)("div",{className:"flex items-start gap-2 rounded-lg bg-muted/50 px-3 py-2",children:[e.ok?(0,r.jsx)(f.A,{className:"mt-0.5 h-4 w-4 shrink-0 text-success"}):(0,r.jsx)(S.A,{className:"mt-0.5 h-4 w-4 shrink-0 text-destructive"}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("p",{className:"truncate text-sm font-medium",children:e.label}),(0,r.jsx)("p",{className:"truncate text-xs text-muted-foreground",children:e.message})]})]},e.name))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Skills"}),0===s.skillSummary.total?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No skill report available."}):(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-3 py-3",children:[(0,r.jsxs)("p",{className:"text-sm font-medium",children:[s.skillSummary.total," skills tracked"]}),(0,r.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:[s.skillSummary.criticalCount," critical \xb7 ",s.skillSummary.warningCount," warning"]}),s.skillSummary.topIssue&&(0,r.jsx)("p",{className:"mt-3 text-xs text-warning",children:s.skillSummary.topIssue})]})]})]})]}),s.progressScore&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Progress Score"}),(0,r.jsxs)("div",{className:"mt-5 flex items-start gap-4",children:[(0,r.jsx)("div",{className:(0,P.cn)("mt-1 h-3 w-3 rounded-full","green"===s.progressScore.level?"bg-success":"yellow"===s.progressScore.level?"bg-warning":"bg-destructive")}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-semibold",children:s.progressScore.summary}),(0,r.jsx)("div",{className:"mt-3 space-y-1.5",children:s.progressScore.signals.map((e,s)=>(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:e.label},`${e.kind}-${s}`))})]})]})]}),l.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Doctor History"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:l.slice(0,10).map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[e.ok?(0,r.jsx)(f.A,{className:"h-4 w-4 shrink-0 text-success"}):(0,r.jsx)($.A,{className:"h-4 w-4 shrink-0 text-warning"}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:e.ts.replace("T"," ").slice(0,19)}),e.scope&&(0,r.jsx)("span",{className:"rounded-md bg-info/10 px-2 py-0.5 text-xs text-info",children:e.scope}),(0,r.jsx)("span",{className:"min-w-0 truncate text-sm",children:e.summary||`${e.errors} errors, ${e.warnings} warnings, ${e.fixes} fixes`})]}),e.issues&&e.issues.length>0&&(0,r.jsx)("div",{className:"mt-3 space-y-1",children:e.issues.slice(0,3).map(e=>(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:e.message},`${e.code}-${e.unitId}-${e.message}`))})]},`${e.ts}-${e.codes.join("-")}`))})]})]})}function es({data:e}){let s=[...e.units].sort((e,s)=>e.startedAt-s.startedAt).slice(-30),t=s.some(e=>!e.finishedAt||0===e.finishedAt),[a,l]=(0,n.useState)(()=>Date.now());(0,n.useEffect)(()=>{if(!t)return;let e=window.setInterval(()=>{l(Date.now())},1e3);return()=>window.clearInterval(e)},[t]);let i=t?a:0,o=(0,n.useCallback)(e=>(e.finishedAt||i)-e.startedAt,[i]);if(0===e.units.length)return(0,r.jsx)(V,{message:"No execution history yet.",icon:d.A});let c=Math.max(...s.map(o),1);return(0,r.jsx)("div",{className:"space-y-4",children:(0,r.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,r.jsxs)("div",{className:"border-b border-border bg-muted/50 px-6 py-4",children:[(0,r.jsx)(z,{children:"Execution Timeline"}),(0,r.jsxs)("p",{className:"mt-1.5 text-xs text-muted-foreground",children:["Showing ",s.length," of ",e.units.length," units — most recent first"]})]}),(0,r.jsxs)("div",{className:"grid grid-cols-[3.5rem_1.5rem_5rem_8rem_1fr_4.5rem_5rem] items-center gap-3 border-b border-border/50 px-6 py-2.5 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:[(0,r.jsx)("span",{children:"Time"}),(0,r.jsx)("span",{}),(0,r.jsx)("span",{children:"Type"}),(0,r.jsx)("span",{children:"ID"}),(0,r.jsx)("span",{children:"Duration"}),(0,r.jsx)("span",{className:"text-right",children:"Time"}),(0,r.jsx)("span",{className:"text-right",children:"Cost"})]}),(0,r.jsx)("div",{className:"divide-y divide-border/40",children:[...s].reverse().map((e,s)=>{let t=o(e),n=!e.finishedAt||0===e.finishedAt;return(0,r.jsxs)("div",{className:"grid grid-cols-[3.5rem_1.5rem_5rem_8rem_1fr_4.5rem_5rem] items-center gap-3 px-6 py-3.5 transition-colors hover:bg-muted/50",children:[(0,r.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:E(e.startedAt)}),n?(0,r.jsx)(b.A,{className:"h-3.5 w-3.5 shrink-0 text-info"}):(0,r.jsx)(f.A,{className:"h-3.5 w-3.5 shrink-0 text-success"}),(0,r.jsx)("span",{className:"truncate text-xs font-medium",children:e.type}),(0,r.jsx)("span",{className:"truncate font-mono text-xs text-muted-foreground",children:e.id}),(0,r.jsx)("div",{className:"hidden sm:block",children:(0,r.jsx)(J,{value:t/c*100,max:100,color:"sky",animated:n})}),(0,r.jsx)("span",{className:"text-right font-mono text-xs tabular-nums text-muted-foreground",children:(0,R.a3)(t)}),(0,r.jsx)("span",{className:"text-right font-mono text-xs tabular-nums font-medium",children:(0,R.BD)(e.cost)})]},`${e.id}-${e.startedAt}-${s}`)})})]})})}function et({data:e}){let s=e.agentActivity;if(!s)return(0,r.jsx)(V,{message:"No agent activity data available.",icon:x.A});let t=s.completedUnits,n=Math.max(t,s.totalSlices),a=n>0?Math.min(100,Math.round(t/n*100)):0;return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex items-center gap-4",children:[(0,r.jsxs)("div",{className:(0,P.cn)("relative flex h-10 w-10 items-center justify-center rounded-full",s.active?"bg-success/15":"bg-muted"),children:[s.active&&(0,r.jsx)("div",{className:"absolute inset-0 animate-ping rounded-full bg-success/20"}),(0,r.jsx)("div",{className:(0,P.cn)("h-3 w-3 rounded-full",s.active?"bg-success":"bg-muted-foreground/30")})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-xl font-bold",children:s.active?"Active":"Idle"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:s.active?"Agent is running":"Waiting for next task"})]})]}),s.active&&(0,r.jsxs)("div",{className:"text-right",children:[(0,r.jsx)("p",{className:"font-mono text-lg font-bold",children:(0,R.a3)(s.elapsed)}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"elapsed"})]})]}),s.currentUnit&&(0,r.jsxs)("div",{className:"mt-5 flex items-center gap-3 rounded-xl border border-info/20 bg-info/8 px-5 py-3.5",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 shrink-0 text-info"}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"Currently executing"}),(0,r.jsxs)("p",{className:"mt-0.5 font-mono text-sm font-semibold text-info",children:[s.currentUnit.type," — ",s.currentUnit.id]})]})]})]}),(0,r.jsxs)("div",{className:"grid gap-4 sm:grid-cols-3",children:[(0,r.jsx)(q,{label:"Truncation",value:`${e.health.truncationRate.toFixed(1)}%`,accent:e.health.truncationRate>=30?"amber":"default"}),(0,r.jsx)(q,{label:"Continue-here",value:`${e.health.continueHereRate.toFixed(1)}%`,accent:e.health.continueHereRate>=30?"amber":"default"}),(0,r.jsx)(q,{label:"Pending Captures",value:String(e.captures.pendingCount),accent:e.captures.pendingCount>0?"amber":"default"})]}),n>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,r.jsx)(z,{children:"Completion Progress"}),(0,r.jsxs)("span",{className:"font-mono text-sm text-muted-foreground",children:[t," / ",n," slices"]})]}),(0,r.jsx)(J,{value:t,max:n,color:"emerald"}),(0,r.jsxs)("div",{className:"mt-3 flex items-center justify-between text-xs text-muted-foreground",children:[(0,r.jsxs)("span",{children:[a,"% complete"]}),(0,r.jsxs)("span",{children:[n-t," remaining"]})]})]}),(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,r.jsx)(q,{label:"Completion Rate",value:s.completionRate>0?`${s.completionRate.toFixed(1)}/hr`:"—",accent:"sky"}),(0,r.jsx)(q,{label:"Session Cost",value:(0,R.BD)(s.sessionCost),accent:"emerald"}),(0,r.jsx)(q,{label:"Session Tokens",value:(0,R.ap)(s.sessionTokens),accent:"amber"}),(0,r.jsx)(q,{label:"Completed",value:String(s.completedUnits)})]}),e.units.filter(e=>e.finishedAt>0).length>0&&(0,r.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,r.jsx)("div",{className:"border-b border-border bg-muted/50 px-6 py-4",children:(0,r.jsx)(z,{children:"Recent Completed Units"})}),(0,r.jsx)("div",{className:"divide-y divide-border/40",children:e.units.filter(e=>e.finishedAt>0).slice(-5).reverse().map((e,s)=>(0,r.jsxs)("div",{className:"flex items-center gap-4 px-6 py-4 transition-colors hover:bg-muted/50",children:[(0,r.jsx)("span",{className:"w-12 font-mono text-xs text-muted-foreground",children:E(e.startedAt)}),(0,r.jsx)(f.A,{className:"h-4 w-4 shrink-0 text-success"}),(0,r.jsx)("span",{className:"flex-1 truncate text-sm font-medium",children:e.type}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:e.id}),(0,r.jsx)("span",{className:"font-mono text-xs tabular-nums text-muted-foreground",children:(0,R.a3)(e.finishedAt-e.startedAt)}),(0,r.jsx)("span",{className:"font-mono text-xs tabular-nums font-semibold",children:(0,R.BD)(e.cost)})]},`${e.id}-${s}`))})]})]})}function er({data:e}){let s=e.changelog.entries;if(0===s.length)return(0,r.jsx)(V,{message:"No completed slices yet.",icon:u.A});let t=[...s].reverse();return(0,r.jsx)("div",{className:"space-y-4",children:t.map((s,t)=>{let n=H(e,s.milestoneId,s.sliceId);return(0,r.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-border bg-muted/50 px-6 py-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)(f.A,{className:"h-4 w-4 shrink-0 text-success"}),(0,r.jsxs)("span",{className:"font-mono text-xs font-bold text-success",children:[s.milestoneId,"/",s.sliceId]}),(0,r.jsx)("span",{className:"text-sm font-semibold",children:s.title})]}),s.completedAt&&(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:function(e){let s=Date.now()-new Date(e).getTime();if(s<6e4)return"just now";let t=Math.floor(s/6e4);if(t<60)return`${t}m ago`;let r=Math.floor(t/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}(s.completedAt)})]}),(0,r.jsxs)("div",{className:"px-6 py-5 space-y-5",children:[s.oneLiner&&(0,r.jsxs)("p",{className:"text-sm text-muted-foreground italic leading-relaxed border-l-2 border-muted pl-4",children:["“",s.oneLiner,"”"]}),s.filesModified.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Files Modified"}),(0,r.jsx)("div",{className:"space-y-2",children:s.filesModified.map((e,s)=>(0,r.jsxs)("div",{className:"flex items-start gap-3 rounded-lg bg-muted/50 px-4 py-2.5",children:[(0,r.jsx)(f.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-success/70"}),(0,r.jsx)("span",{className:"font-mono text-xs font-medium text-muted-foreground",children:e.path}),e.description&&(0,r.jsxs)("span",{className:"ml-1 text-xs text-muted-foreground",children:["— ",e.description]})]},s))})]}),n&&(n.keyDecisions.length>0||n.patternsEstablished.length>0)&&(0,r.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[n.keyDecisions.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Decisions"}),(0,r.jsx)("div",{className:"space-y-2",children:n.keyDecisions.map((e,s)=>(0,r.jsx)("p",{className:"rounded-lg bg-muted/50 px-4 py-2.5 text-xs text-muted-foreground",children:e},s))})]}),n.patternsEstablished.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Patterns"}),(0,r.jsx)("div",{className:"space-y-2",children:n.patternsEstablished.map((e,s)=>(0,r.jsx)("p",{className:"rounded-lg bg-muted/50 px-4 py-2.5 text-xs text-muted-foreground",children:e},s))})]})]})]})]},`${s.milestoneId}-${s.sliceId}-${t}`)})})}function en({data:e}){let s=e.knowledge;return s.exists?0===s.rules.length&&0===s.patterns.length&&0===s.lessons.length?(0,r.jsx)(V,{message:"Project knowledge exists but has no entries yet.",icon:h.A}):(0,r.jsxs)("div",{className:"space-y-6",children:[s.rules.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Rules"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:s.rules.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"font-mono text-xs font-semibold text-info",children:e.id}),(0,r.jsx)("span",{className:"rounded-md bg-muted px-2 py-0.5 text-xs text-muted-foreground",children:e.scope})]}),(0,r.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:e.content})]},e.id))})]}),s.patterns.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Patterns"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:s.patterns.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsx)("p",{className:"font-mono text-xs font-semibold text-info",children:e.id}),(0,r.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:e.content})]},e.id))})]}),s.lessons.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Lessons Learned"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:s.lessons.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsx)("p",{className:"font-mono text-xs font-semibold text-info",children:e.id}),(0,r.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:e.content})]},e.id))})]})]}):(0,r.jsx)(V,{message:"No project knowledge file found.",icon:h.A})}function ea({data:e}){let s=e.captures,t=(0,R.vX)(s),n=[...s.entries].sort((e,s)=>{let t={pending:0,triaged:1,resolved:2};return t[e.status]-t[s.status]});return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,r.jsx)(q,{label:"Total",value:String(s.totalCount)}),(0,r.jsx)(q,{label:"Pending",value:String(t.pending),accent:t.pending>0?"amber":"default"}),(0,r.jsx)(q,{label:"Triaged",value:String(t.triaged),accent:"sky"}),(0,r.jsx)(q,{label:"Resolved",value:String(t.resolved),accent:"emerald"})]}),0===n.length?(0,r.jsx)(V,{message:"No captures recorded yet.",icon:p.A}):(0,r.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,r.jsx)("div",{className:"border-b border-border bg-muted/50 px-6 py-4",children:(0,r.jsx)(z,{children:"Captured Notes"})}),(0,r.jsx)("div",{className:"divide-y divide-border/40",children:n.map(e=>{var s;let t="pending"===e.status?"text-warning bg-warning/10":"triaged"===e.status?"text-info bg-info/10":"text-success bg-success/10";return(0,r.jsxs)("div",{className:"px-6 py-4",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsx)("span",{className:"font-mono text-xs font-bold text-info",children:e.id}),(0,r.jsx)("span",{className:(0,P.cn)("rounded-md px-2 py-0.5 text-[11px] font-semibold",t),children:e.status}),e.classification&&(0,r.jsx)("span",{className:(0,P.cn)("rounded-md px-2 py-0.5 text-[11px] font-semibold","inject"===(s=e.classification)||"stop"===s?"text-warning bg-warning/10":"replan"===s||"backtrack"===s?"text-destructive bg-destructive/10":"quick-task"===s?"text-info bg-info/10":"text-muted-foreground bg-muted"),children:e.classification}),(0,r.jsx)("span",{className:"ml-auto text-xs text-muted-foreground",children:F(e.timestamp)})]}),(0,r.jsx)("p",{className:"mt-3 text-sm leading-relaxed text-muted-foreground",children:e.text}),(e.rationale||e.resolution)&&(0,r.jsxs)("div",{className:"mt-3 rounded-lg bg-muted/50 px-4 py-3 text-xs text-muted-foreground",children:[e.rationale&&(0,r.jsxs)("p",{children:["Rationale: ",e.rationale]}),e.resolution&&(0,r.jsxs)("p",{className:"mt-1",children:["Resolution: ",e.resolution]})]})]},e.id)})})]})]})}function el({data:e}){let s=(0,n.useCallback)((e,s,t)=>{let r=new Blob([e],{type:t}),n=URL.createObjectURL(r),a=document.createElement("a");a.href=n,a.download=s,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(n)},[]),t=(0,n.useCallback)(()=>{let s=[];for(let t of(s.push("# GSD Workflow Report"),s.push(""),s.push(`Generated: ${new Date().toISOString()}`),s.push(`Phase: ${e.phase}`),s.push(""),s.push("## Milestones"),s.push(""),e.milestones)){let e="complete"===t.status?"✓":"active"===t.status?"▸":"○";for(let r of(s.push(`### ${e} ${t.id}: ${t.title} (${t.status})`),t.dependsOn.length>0&&s.push(`Depends on: ${t.dependsOn.join(", ")}`),s.push(""),t.slices)){let e=r.done?"✓":r.active?"▸":"○";for(let t of(s.push(`- ${e} **${r.id}**: ${r.title} [risk: ${r.risk}]`),r.tasks)){let e=t.done?"✓":t.active?"▸":"○";s.push(` - ${e} ${t.id}: ${t.title}`)}}s.push("")}if(e.totals&&(s.push("## Metrics Summary"),s.push(""),s.push("| Metric | Value |"),s.push("|--------|-------|"),s.push(`| Units | ${e.totals.units} |`),s.push(`| Total Cost | ${(0,R.BD)(e.totals.cost)} |`),s.push(`| Duration | ${(0,R.a3)(e.totals.duration)} |`),s.push(`| Tokens | ${(0,R.ap)(e.totals.tokens.total)} |`),s.push("")),e.byTier.length>0){for(let t of(s.push("## Routing Tiers"),s.push(""),s.push("| Tier | Units | Cost | Downgraded |"),s.push("|------|-------|------|------------|"),e.byTier))s.push(`| ${t.tier} | ${t.units} | ${(0,R.BD)(t.cost)} | ${t.downgraded} |`);e.tierSavingsLine&&s.push(`
2
- ${e.tierSavingsLine}`),s.push("")}if(s.push("## Health"),s.push(""),s.push("| Signal | Value |"),s.push("|--------|-------|"),s.push(`| Token profile | ${e.health.tokenProfile} |`),s.push(`| Truncation | ${e.health.truncationRate.toFixed(1)}% |`),s.push(`| Continue-here | ${e.health.continueHereRate.toFixed(1)}% |`),s.push(`| Pending captures | ${e.captures.pendingCount} |`),e.health.progressScore&&s.push(`| Progress score | ${e.health.progressScore.level}: ${e.health.progressScore.summary} |`),s.push(""),e.criticalPath.milestonePath.length>0&&(s.push("## Critical Path"),s.push(""),s.push(`Milestone: ${e.criticalPath.milestonePath.join(" → ")}`),e.criticalPath.slicePath.length>0&&s.push(`Slice: ${e.criticalPath.slicePath.join(" → ")}`),s.push("")),e.knowledge.exists){for(let t of(s.push("## Knowledge"),s.push(""),e.knowledge.rules))s.push(`- Rule ${t.id} [${t.scope}]: ${t.content}`);for(let t of e.knowledge.patterns)s.push(`- Pattern ${t.id}: ${t.content}`);for(let t of e.knowledge.lessons)s.push(`- Lesson ${t.id}: ${t.content}`);s.push("")}if(e.captures.entries.length>0){for(let t of(s.push("## Captures"),s.push(""),e.captures.entries)){let e=t.classification?`, ${t.classification}`:"";s.push(`- **${t.id}** (${t.status}${e}): ${t.text}`)}s.push("")}if(e.changelog.entries.length>0)for(let t of(s.push("## Changelog"),s.push(""),e.changelog.entries)){if(s.push(`### ${t.milestoneId}/${t.sliceId}: ${t.title}`),t.oneLiner&&s.push(`> ${t.oneLiner}`),t.filesModified.length>0)for(let e of(s.push("Files:"),t.filesModified))s.push(`- \`${e.path}\` — ${e.description}`);t.completedAt&&s.push(`Completed: ${t.completedAt}`);let r=H(e,t.milestoneId,t.sliceId);if(r?.keyDecisions.length)for(let e of(s.push("Decisions:"),r.keyDecisions))s.push(`- ${e}`);if(r?.patternsEstablished.length)for(let e of(s.push("Patterns:"),r.patternsEstablished))s.push(`- ${e}`);s.push("")}return s.join("\n")},[e]);return(0,r.jsx)("div",{className:"space-y-6",children:(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Export Project Data"}),(0,r.jsx)("p",{className:"mt-3 text-sm leading-relaxed text-muted-foreground",children:"Download the current visualizer data as a structured report. Markdown includes milestones, health, knowledge, captures, metrics, critical path, and changelog in a readable format. JSON contains the full raw data payload."}),(0,r.jsxs)("div",{className:"mt-7 grid gap-4 sm:grid-cols-2",children:[(0,r.jsxs)("button",{onClick:()=>s(t(),"gsd-report.md","text/markdown"),className:"group flex items-center gap-5 rounded-xl border border-border bg-muted/50 p-5 text-left transition-[background-color,border-color,box-shadow,transform] hover:border-info/40 hover:bg-info/5",children:[(0,r.jsx)("div",{className:"rounded-xl border border-info/20 bg-info/10 p-4 transition-colors group-hover:bg-info/15",children:(0,r.jsx)(C.A,{className:"h-6 w-6 text-info"})}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("p",{className:"text-sm font-semibold transition-colors group-hover:text-info",children:"Download Markdown"}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Human-readable report with tables and structure"})]}),(0,r.jsx)(g.A,{className:"h-4 w-4 shrink-0 text-muted-foreground/0 transition-[color,opacity,transform] group-hover:text-info/70"})]}),(0,r.jsxs)("button",{onClick:()=>s(JSON.stringify(e,null,2),"gsd-report.json","application/json"),className:"group flex items-center gap-5 rounded-xl border border-border bg-muted/50 p-5 text-left transition-[background-color,border-color,box-shadow,transform] hover:border-success/40 hover:bg-success/5",children:[(0,r.jsx)("div",{className:"rounded-xl border border-success/20 bg-success/10 p-4 transition-colors group-hover:bg-success/15",children:(0,r.jsx)(A,{className:"h-6 w-6 text-success"})}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("p",{className:"text-sm font-semibold transition-colors group-hover:text-success",children:"Download JSON"}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Full raw data payload for tooling"})]}),(0,r.jsx)(g.A,{className:"h-4 w-4 shrink-0 text-muted-foreground/0 transition-[color,opacity,transform] group-hover:text-success/70"})]})]})]})})}function ed({value:e,onValueChange:s,children:t}){return(0,r.jsx)(a.bL,{value:e,onValueChange:e=>s(e),className:"flex h-full flex-col overflow-hidden",children:t})}function ei(){return(0,r.jsx)(a.B8,{className:"flex shrink-0 overflow-x-auto border-b border-border bg-background px-6",children:L.map(({value:e,label:s,Icon:t})=>(0,r.jsxs)(a.l9,{value:e,className:(0,P.cn)("group relative flex shrink-0 items-center gap-2 px-3.5 py-3.5 text-sm font-medium outline-none","text-muted-foreground transition-colors duration-150","hover:text-foreground","data-[state=active]:text-foreground","focus-visible:text-foreground","disabled:pointer-events-none disabled:opacity-40"),children:[(0,r.jsx)("span",{className:(0,P.cn)("pointer-events-none absolute bottom-0 left-0 right-0 h-0.5 rounded-t-full","bg-foreground opacity-0 transition-opacity duration-150","group-data-[state=active]:opacity-100")}),(0,r.jsx)("span",{className:"absolute inset-x-0 inset-y-1.5 rounded-lg bg-muted/0 transition-colors duration-150 group-hover:bg-muted group-data-[state=active]:bg-transparent"}),(0,r.jsx)(t,{className:"relative h-4 w-4 shrink-0 transition-colors duration-150 text-muted-foreground group-hover:text-muted-foreground group-data-[state=active]:text-foreground"}),(0,r.jsx)("span",{className:"relative",children:s})]},e))})}function eo(){let e=(0,M.gF)(),s=e.boot?.project.cwd,[t,l]=(0,n.useState)(null),[d,i]=(0,n.useState)(!0),[o,c]=(0,n.useState)(null),[m,x]=(0,n.useState)("progress"),[u,h]=(0,n.useState)(""),[p,g]=(0,n.useState)(!1),f=(0,n.useRef)(null),b=(0,n.useMemo)(()=>t?function(e,s){let t=s.trim().toLowerCase();if(!t)return e;let r=e.milestones.map(e=>{if(_({...e,slices:[]},t))return e;let s=e.slices.map(e=>{if(_({...e,tasks:[]},t))return e;let s=O(e.tasks,t);return s.length>0?{...e,tasks:s}:null}).filter(e=>null!=e);return s.length>0?{...e,slices:s}:null}).filter(e=>null!=e),n=O(e.stats.missingSlices,t),a=O(e.stats.updatedSlices,t),l=O(e.stats.recentEntries,t),d=O(e.captures.entries,t);return{...e,milestones:r,byPhase:O(e.byPhase,t),bySlice:O(e.bySlice,t),byModel:O(e.byModel,t),byTier:O(e.byTier,t),units:O(e.units,t),changelog:{...e.changelog,entries:O(e.changelog.entries,t)},sliceVerifications:O(e.sliceVerifications,t),knowledge:{...e.knowledge,rules:O(e.knowledge.rules,t),patterns:O(e.knowledge.patterns,t),lessons:O(e.knowledge.lessons,t)},captures:{...e.captures,entries:d,pendingCount:d.filter(e=>"pending"===e.status).length,totalCount:d.length},health:{...e.health,tierBreakdown:O(e.health.tierBreakdown,t),providers:O(e.health.providers,t),environmentIssues:O(e.health.environmentIssues,t),doctorHistory:e.health.doctorHistory?O(e.health.doctorHistory,t):e.health.doctorHistory},discussion:O(e.discussion,t),stats:{...e.stats,missingCount:n.length,missingSlices:n,updatedCount:a.length,updatedSlices:a,recentEntries:l}}}(t,u):null,[t,u]),j=(0,n.useCallback)(async()=>{try{let e=await (0,T.tm)((0,M.fL)("/api/visualizer",s));if(!e.ok){let s=await e.json().catch(()=>({error:"Unknown error"}));throw Error(s.error||`HTTP ${e.status}`)}let t=await e.json();l(t),c(null)}catch(e){c(e instanceof Error?e.message:"Failed to fetch visualizer data")}finally{i(!1)}},[s]);if((0,n.useEffect)(()=>{j();let e=setInterval(j,1e4);return()=>clearInterval(e)},[j]),(0,n.useEffect)(()=>{let e=e=>{if(p&&("Escape"===e.key||"q"===e.key.toLowerCase())){e.preventDefault(),g(!1);return}if(!(()=>{let e=document.activeElement;if(!e)return!1;let s=e.tagName.toLowerCase();return"input"===s||"textarea"===s||"select"===s||"true"===e.getAttribute("contenteditable")})()){if(e.key>="1"&&e.key<="9"){let s=L[Number(e.key)-1];s&&(e.preventDefault(),x(s.value));return}if("0"===e.key){e.preventDefault(),x(L[L.length-1].value);return}if("/"===e.key){e.preventDefault(),f.current?.focus();return}"?"===e.key&&(e.preventDefault(),g(!0))}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[p]),d&&!t)return(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,r.jsx)(D.A,{className:"h-7 w-7 animate-spin text-muted-foreground"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading visualizer data…"})]})});if(o&&!t)return(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-4 text-center",children:[(0,r.jsx)("div",{className:"rounded-full border border-warning/20 bg-warning/10 p-4",children:(0,r.jsx)($.A,{className:"h-6 w-6 text-warning"})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-semibold",children:"Failed to load visualizer"}),(0,r.jsx)("p",{className:"mt-1.5 max-w-sm text-xs text-muted-foreground",children:o})]}),(0,r.jsxs)("button",{onClick:j,className:"mt-1 inline-flex items-center gap-2 rounded-lg border border-border bg-card px-4 py-2 text-sm font-medium transition-colors hover:bg-accent",children:[(0,r.jsx)(I.A,{className:"h-3.5 w-3.5"}),"Retry"]})]})});if(!t)return null;let v=b??t;return(0,r.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-5 border-b border-border px-7 py-5",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-xl font-bold tracking-tight",children:"Workflow Visualizer"}),(0,r.jsxs)("div",{className:"mt-1.5 flex items-center gap-3 text-sm text-muted-foreground",children:[(0,r.jsxs)("span",{children:["Phase:"," ",(0,r.jsx)("span",{className:(0,P.cn)("inline-flex items-center rounded-md px-2 py-0.5 text-xs font-semibold uppercase tracking-wider","complete"===t.phase?"bg-success/15 text-success":"active"===t.phase||"running"===t.phase?"bg-info/15 text-info":"bg-muted text-muted-foreground"),children:t.phase})]}),t.remainingSliceCount>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"text-border",children:"\xb7"}),(0,r.jsxs)("span",{children:[t.remainingSliceCount," slice",1!==t.remainingSliceCount?"s":""," remaining"]})]}),o&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"text-border",children:"\xb7"}),(0,r.jsxs)("span",{className:"flex items-center gap-1 text-warning",children:[(0,r.jsx)($.A,{className:"h-3 w-3"}),"Stale — ",o]})]})]})]}),(0,r.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,r.jsx)("input",{ref:f,type:"search",value:u,onChange:e=>h(e.target.value),placeholder:"Search","aria-label":"Search visualizer",className:"h-9 w-48 rounded-lg border border-border bg-background px-3 text-sm outline-none transition-colors placeholder:text-muted-foreground focus:border-foreground/40"}),(0,r.jsx)("button",{type:"button",onClick:()=>g(!0),"aria-label":"Show keyboard shortcuts",className:"inline-flex h-9 w-9 items-center justify-center rounded-lg border border-border bg-card text-sm font-semibold transition-colors hover:bg-accent",children:"?"})]})]}),(0,r.jsxs)(ed,{value:m,onValueChange:x,children:[(0,r.jsx)(ei,{}),(0,r.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,r.jsxs)("div",{className:"mx-auto max-w-5xl px-7 py-7",children:[(0,r.jsx)(a.UC,{value:"progress",className:"outline-none",children:(0,r.jsx)(G,{data:v})}),(0,r.jsx)(a.UC,{value:"deps",className:"outline-none",children:(0,r.jsx)(Q,{data:v})}),(0,r.jsx)(a.UC,{value:"metrics",className:"outline-none",children:(0,r.jsx)(Y,{data:v})}),(0,r.jsx)(a.UC,{value:"health",className:"outline-none",children:(0,r.jsx)(ee,{data:v})}),(0,r.jsx)(a.UC,{value:"timeline",className:"outline-none",children:(0,r.jsx)(es,{data:v})}),(0,r.jsx)(a.UC,{value:"agent",className:"outline-none",children:(0,r.jsx)(et,{data:v})}),(0,r.jsx)(a.UC,{value:"changes",className:"outline-none",children:(0,r.jsx)(er,{data:v})}),(0,r.jsx)(a.UC,{value:"knowledge",className:"outline-none",children:(0,r.jsx)(en,{data:v})}),(0,r.jsx)(a.UC,{value:"captures",className:"outline-none",children:(0,r.jsx)(ea,{data:v})}),(0,r.jsx)(a.UC,{value:"export",className:"outline-none",children:(0,r.jsx)(el,{data:v})})]})})]}),p&&(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"visualizer-shortcuts-title",className:"fixed inset-0 z-50 flex items-center justify-center bg-background/70 p-6 backdrop-blur-sm",onClick:()=>g(!1),children:(0,r.jsxs)("div",{className:"w-full max-w-sm rounded-xl border border-border bg-card p-5 shadow-lg",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,r.jsx)("h2",{id:"visualizer-shortcuts-title",className:"text-sm font-semibold",children:"Keyboard Shortcuts"}),(0,r.jsx)("button",{type:"button",onClick:()=>g(!1),"aria-label":"Close keyboard shortcuts",className:"inline-flex h-8 w-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:(0,r.jsx)(S.A,{className:"h-4 w-4"})})]}),(0,r.jsxs)("dl",{className:"mt-4 grid grid-cols-[auto_1fr] gap-x-4 gap-y-3 text-sm",children:[(0,r.jsx)("dt",{className:"font-mono text-xs text-muted-foreground",children:"1-9, 0"}),(0,r.jsx)("dd",{children:"Jump to tab"}),(0,r.jsx)("dt",{className:"font-mono text-xs text-muted-foreground",children:"/"}),(0,r.jsx)("dd",{children:"Focus search"}),(0,r.jsx)("dt",{className:"font-mono text-xs text-muted-foreground",children:"?"}),(0,r.jsx)("dd",{children:"Show this help"})]})]})})]})}}}]);
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4283],{54283:(e,s,t)=>{t.r(s),t.d(s,{VisualizerView:()=>eo});var r=t(18870),n=t(45110),a=t(22434),d=t(86788),l=t(24896),i=t(55285),o=t(15007),c=t(32858);let m=(0,c.A)("heart-pulse",[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}],["path",{d:"M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27",key:"auskq0"}]]);var x=t(16847),u=t(8959),h=t(44302),p=t(68206),g=t(91262),f=t(20607),b=t(53348),j=t(62970),N=t(32457),v=t(92525),y=t(18239),w=t(67504),k=t(78070),$=t(92893),S=t(16579),C=t(76756);let A=(0,c.A)("file-braces",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]]);var D=t(66828),I=t(8291),P=t(18833),M=t(93058),R=t(78300),T=t(83890);let L=[{value:"progress",label:"Progress",Icon:d.A},{value:"timeline",label:"Timeline",Icon:l.A},{value:"deps",label:"Dependencies",Icon:i.A},{value:"metrics",label:"Metrics",Icon:o.A},{value:"health",label:"Health",Icon:m},{value:"agent",label:"Agent",Icon:x.A},{value:"changes",label:"Changes",Icon:u.A},{value:"knowledge",label:"Knowledge",Icon:h.A},{value:"captures",label:"Captures",Icon:p.A},{value:"export",label:"Export",Icon:g.A}];function B(e){switch(e){case"complete":case"done":return(0,r.jsx)(f.A,{className:"h-4 w-4 shrink-0 text-success"});case"active":return(0,r.jsx)(b.A,{className:"h-4 w-4 shrink-0 text-info"});case"pending":return(0,r.jsx)(j.A,{className:"h-4 w-4 shrink-0 text-muted-foreground/50"});case"parked":return(0,r.jsx)(N.A,{className:"h-4 w-4 shrink-0 text-muted-foreground"})}}function U({risk:e}){return(0,r.jsx)("span",{className:(0,P.cn)("inline-flex items-center rounded border px-2 py-0.5 text-[11px] font-semibold uppercase tracking-widest","high"===e?"bg-destructive/15 text-destructive border-destructive/25 ring-destructive/10":"medium"===e?"bg-warning/15 text-warning border-warning/25 ring-warning/10":"bg-success/15 text-success border-success/25 ring-success/10"),children:e})}function E(e){let s=new Date(e);return`${String(s.getHours()).padStart(2,"0")}:${String(s.getMinutes()).padStart(2,"0")}`}function F(e){if(!e)return"unknown";let s=new Date(e);return Number.isNaN(s.getTime())?e:s.toLocaleDateString("en-US",{month:"short",day:"numeric"})}function H(e,s,t){return e.sliceVerifications.find(e=>e.milestoneId===s&&e.sliceId===t)}function _(e,s){return null!=e&&("string"==typeof e||"number"==typeof e||"boolean"==typeof e?String(e).toLowerCase().includes(s):Array.isArray(e)?e.some(e=>_(e,s)):"object"==typeof e&&Object.values(e).some(e=>_(e,s)))}function O(e,s){return e.filter(e=>_(e,s))}function z({children:e}){return(0,r.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,r.jsx)("div",{className:"h-3.5 w-0.5 rounded-full bg-foreground/25"}),(0,r.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:e})]})}function V({message:e,icon:s=v.A}){return(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center gap-4 rounded-xl border border-dashed border-border py-16 text-center",children:[(0,r.jsx)("div",{className:"rounded-full border border-border bg-muted/50 p-4",children:(0,r.jsx)(s,{className:"h-6 w-6 text-muted-foreground"})}),(0,r.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:e})]})}function q({label:e,value:s,sub:t,accent:n}){return(0,r.jsxs)("div",{className:(0,P.cn)("relative overflow-hidden rounded-xl border bg-gradient-to-br to-transparent p-5",{sky:"from-info/8 border-info/20",emerald:"from-success/8 border-success/20",amber:"from-warning/8 border-warning/20",default:"from-transparent border-border"}[n??"default"]),children:[(0,r.jsx)("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:e}),(0,r.jsx)("p",{className:"mt-2 text-2xl font-bold tabular-nums leading-none tracking-tight",children:s}),t&&(0,r.jsx)("p",{className:"mt-1.5 text-xs text-muted-foreground",children:t})]})}function J({value:e,max:s,color:t="sky",animated:n=!1}){let a=s>0?Math.max(1,e/s*100):0;return(0,r.jsx)("div",{className:"h-2 w-full overflow-hidden rounded-full bg-muted",children:(0,r.jsx)("div",{className:(0,P.cn)("h-full rounded-full transition-[width,background-color] duration-700",{sky:"bg-info",emerald:"bg-success",amber:"bg-warning"}[t],n&&"animate-pulse"),style:{width:`${a}%`}})})}function W({data:e}){let s=e.stats,t=s.missingSlices.length>0||s.updatedSlices.length>0||s.recentEntries.length>0;return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Feature Snapshot"}),(0,r.jsxs)("div",{className:"mt-5 grid gap-4 sm:grid-cols-3",children:[(0,r.jsx)(q,{label:"Missing Slices",value:String(s.missingCount),accent:s.missingCount>0?"amber":"emerald"}),(0,r.jsx)(q,{label:"Updated This Week",value:String(s.updatedCount),accent:"sky"}),(0,r.jsx)(q,{label:"Recent Completions",value:String(s.recentEntries.length),accent:"emerald"})]}),t&&(0,r.jsxs)("div",{className:"mt-6 grid gap-5 lg:grid-cols-3",children:[s.missingSlices.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Missing"}),(0,r.jsx)("div",{className:"space-y-2",children:s.missingSlices.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-3 py-2",children:[(0,r.jsxs)("p",{className:"font-mono text-xs font-semibold",children:[e.milestoneId,"/",e.sliceId]}),(0,r.jsx)("p",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:e.title})]},`${e.milestoneId}-${e.sliceId}`))})]}),s.updatedSlices.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Updated"}),(0,r.jsx)("div",{className:"space-y-2",children:s.updatedSlices.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-3 py-2",children:[(0,r.jsxs)("p",{className:"font-mono text-xs font-semibold",children:[e.milestoneId,"/",e.sliceId]}),(0,r.jsxs)("p",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:[F(e.completedAt)," \xb7 ",e.title]})]},`${e.milestoneId}-${e.sliceId}`))})]}),s.recentEntries.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Recent"}),(0,r.jsx)("div",{className:"space-y-2",children:s.recentEntries.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-3 py-2",children:[(0,r.jsxs)("p",{className:"font-mono text-xs font-semibold",children:[e.milestoneId,"/",e.sliceId]}),(0,r.jsx)("p",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:e.oneLiner||e.title})]},`${e.milestoneId}-${e.sliceId}`))})]})]})]})}function K({data:e}){if(0===e.discussion.length)return null;let s=e.discussion.reduce((e,s)=>(e[s.state]+=1,e),{discussed:0,draft:0,undiscussed:0});return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[(0,r.jsx)(z,{children:"Discussion Status"}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-2 text-xs font-medium",children:[(0,r.jsxs)("span",{className:"rounded-md bg-success/10 px-2 py-1 text-success",children:["Discussed ",s.discussed]}),(0,r.jsxs)("span",{className:"rounded-md bg-warning/10 px-2 py-1 text-warning",children:["Draft ",s.draft]}),(0,r.jsxs)("span",{className:"rounded-md bg-muted px-2 py-1 text-muted-foreground",children:["Pending ",s.undiscussed]})]})]}),(0,r.jsx)("div",{className:"mt-5 grid gap-2 md:grid-cols-2",children:e.discussion.map(e=>{let s="discussed"===e.state?"text-success bg-success/10":"draft"===e.state?"text-warning bg-warning/10":"text-muted-foreground bg-muted";return(0,r.jsxs)("div",{className:"flex items-center gap-3 rounded-lg bg-muted/40 px-3 py-2.5",children:[(0,r.jsx)(y.A,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),(0,r.jsx)("span",{className:"font-mono text-xs font-semibold",children:e.milestoneId}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-sm",children:e.title}),(0,r.jsx)("span",{className:(0,P.cn)("rounded-md px-2 py-0.5 text-[11px] font-semibold",s),children:e.state})]},e.milestoneId)})})]})}function G({data:e}){if(0===e.milestones.length)return(0,r.jsx)(V,{message:"No milestones defined yet.",icon:d.A});let s=e.milestones.flatMap(e=>e.slices),t={low:0,medium:0,high:0};for(let e of s)"high"===e.risk?t.high++:"medium"===e.risk?t.medium++:t.low++;return(0,r.jsxs)("div",{className:"space-y-6",children:[s.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Risk Heatmap"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:e.milestones.filter(e=>e.slices.length>0).map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-4",children:[(0,r.jsx)("span",{className:"w-16 shrink-0 font-mono text-xs font-medium text-muted-foreground",children:e.id}),(0,r.jsx)("div",{className:"flex flex-wrap gap-1.5",children:e.slices.map(e=>(0,r.jsx)("div",{title:`${e.id}: ${e.title} (${e.risk})`,className:(0,P.cn)("h-6 w-6 rounded cursor-default transition-transform hover:scale-125","high"===e.risk?"bg-destructive":"medium"===e.risk?"bg-warning":"bg-success")},e.id))})]},e.id))}),(0,r.jsxs)("div",{className:"mt-5 flex items-center gap-5 text-xs text-muted-foreground",children:[(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"h-3 w-3 rounded-sm bg-success"}),"Low (",t.low,")"]}),(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"h-3 w-3 rounded-sm bg-warning"}),"Medium (",t.medium,")"]}),(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"h-3 w-3 rounded-sm bg-destructive"}),"High (",t.high,")"]})]})]}),(0,r.jsx)(W,{data:e}),(0,r.jsx)(K,{data:e}),(0,r.jsx)("div",{className:"space-y-4",children:e.milestones.map(s=>(0,r.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-border bg-muted/50 px-5 py-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[B(s.status),(0,r.jsx)("span",{className:"font-mono text-xs font-semibold text-muted-foreground",children:s.id}),(0,r.jsx)("span",{className:"text-sm font-semibold",children:s.title})]}),(0,r.jsx)("span",{className:(0,P.cn)("rounded-md px-2.5 py-1 text-xs font-semibold uppercase tracking-wider","complete"===s.status?"bg-success/15 text-success":"active"===s.status?"bg-info/15 text-info":"parked"===s.status?"bg-warning/15 text-warning":"bg-muted text-muted-foreground"),children:s.status})]}),("pending"===s.status||"parked"===s.status)&&s.dependsOn.length>0&&(0,r.jsxs)("div",{className:"px-5 py-2.5 text-xs text-muted-foreground border-b border-border/50",children:["Depends on ",s.dependsOn.join(", ")]}),s.slices.length>0&&(0,r.jsx)("div",{className:"divide-y divide-border/50",children:s.slices.map(t=>{var n;let a=t.tasks.filter(e=>e.done).length,d=t.done?"done":t.active?"active":"pending",l=H(e,s.id,t.id);return(0,r.jsxs)("div",{className:"px-5 py-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[B(d),(0,r.jsx)("span",{className:"font-mono text-xs font-medium text-muted-foreground",children:t.id}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-sm font-medium",children:t.title}),(0,r.jsxs)("div",{className:"flex shrink-0 items-center gap-2.5",children:[l&&(0,r.jsxs)("span",{className:(0,P.cn)("rounded-md border px-2 py-0.5 text-[11px] font-semibold","passed"===(n=l.verificationResult)?"text-success border-success/25 bg-success/10":"failed"===n?"text-destructive border-destructive/25 bg-destructive/10":"text-muted-foreground border-border bg-muted/50"),children:[l.verificationResult||"untested",l.blockerDiscovered?" \xb7 blocker":""]}),t.depends.length>0&&(0,r.jsxs)("span",{className:"text-xs text-muted-foreground",children:["deps: ",t.depends.join(", ")]}),t.tasks.length>0&&(0,r.jsxs)("span",{className:"font-mono text-xs font-medium text-muted-foreground",children:[a,"/",t.tasks.length]}),(0,r.jsx)(U,{risk:t.risk})]})]}),(t.active||t.tasks.some(e=>e.active))&&t.tasks.length>0&&(0,r.jsx)("div",{className:"ml-7 mt-3 space-y-1",children:t.tasks.map(e=>(0,r.jsxs)("div",{className:(0,P.cn)("flex items-center gap-2.5 rounded-lg px-3 py-2 transition-colors",e.active?"bg-info/8 border border-info/20":"hover:bg-muted/50"),children:[e.done?B("done"):e.active?B("active"):B("pending"),(0,r.jsx)("span",{className:"font-mono text-xs font-medium text-muted-foreground",children:e.id}),(0,r.jsx)("span",{className:(0,P.cn)("text-sm",e.done&&"text-muted-foreground line-through",e.active&&"font-semibold text-info",!e.done&&!e.active&&"text-muted-foreground"),children:e.title}),e.estimate&&(0,r.jsx)("span",{className:"ml-auto font-mono text-xs text-muted-foreground",children:e.estimate}),e.active&&(0,r.jsx)("span",{className:"rounded-md bg-info/15 px-2 py-0.5 text-[11px] font-bold uppercase tracking-wider text-info",children:"running"})]},e.id))})]},t.id)})})]},s.id))})]})}function X({data:e}){let s=e.sliceVerifications.filter(e=>e.provides.length>0),t=e.sliceVerifications.filter(e=>e.requires.length>0);return 0===s.length&&0===t.length?null:(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Data Flow"}),(0,r.jsxs)("div",{className:"mt-5 grid gap-5 lg:grid-cols-2",children:[s.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Provides"}),(0,r.jsx)("div",{className:"space-y-2",children:s.flatMap(e=>e.provides.map(s=>(0,r.jsxs)("div",{className:"flex items-center gap-3 rounded-lg bg-muted/50 px-3 py-2.5",children:[(0,r.jsx)("span",{className:"font-mono text-xs font-semibold",children:e.sliceId}),(0,r.jsx)(w.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,r.jsx)("span",{className:"truncate text-sm text-muted-foreground",children:s})]},`${e.milestoneId}-${e.sliceId}-${s}`)))})]}),t.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Requires"}),(0,r.jsx)("div",{className:"space-y-2",children:t.flatMap(e=>e.requires.map(s=>(0,r.jsxs)("div",{className:"flex items-center gap-3 rounded-lg bg-muted/50 px-3 py-2.5",children:[(0,r.jsx)("span",{className:"truncate text-sm text-muted-foreground",children:s.provides}),(0,r.jsx)(w.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,r.jsx)("span",{className:"font-mono text-xs font-semibold",children:s.slice})]},`${e.milestoneId}-${e.sliceId}-${s.slice}-${s.provides}`)))})]})]})]})}function Q({data:e}){let s,t=e.criticalPath,n=e.milestones.find(e=>"active"===e.status),a=e.milestones.filter(e=>e.dependsOn.length>0);return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Milestone Dependencies"}),(0,r.jsx)("div",{className:"mt-5",children:0===a.length?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No milestone dependencies configured."}):(0,r.jsx)("div",{className:"flex flex-col gap-3",children:a.flatMap(e=>e.dependsOn.map(s=>(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"rounded-lg border border-info/25 bg-info/10 px-3 py-1.5 font-mono text-sm font-semibold text-info",children:s}),(0,r.jsx)(w.A,{className:"h-4 w-4 text-muted-foreground"}),(0,r.jsx)("span",{className:"rounded-lg border border-border bg-muted/50 px-3 py-1.5 font-mono text-sm font-medium",children:e.id}),(0,r.jsx)("span",{className:"text-sm text-muted-foreground",children:e.title})]},`${s}-${e.id}`)))})})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Slice Dependencies — Active Milestone"}),(0,r.jsx)("div",{className:"mt-5",children:n?0===(s=n.slices.filter(e=>e.depends.length>0)).length?(0,r.jsxs)("p",{className:"text-sm text-muted-foreground",children:["No slice dependencies in ",n.id,"."]}):(0,r.jsx)("div",{className:"flex flex-col gap-3",children:s.flatMap(e=>e.depends.map(s=>(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"rounded-lg border border-info/25 bg-info/10 px-3 py-1.5 font-mono text-sm font-semibold text-info",children:s}),(0,r.jsx)(w.A,{className:"h-4 w-4 text-muted-foreground"}),(0,r.jsx)("span",{className:"rounded-lg border border-border bg-muted/50 px-3 py-1.5 font-mono text-sm font-medium",children:e.id}),(0,r.jsx)("span",{className:"text-sm text-muted-foreground",children:e.title})]},`${s}-${e.id}`)))}):(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No active milestone."})})]}),(0,r.jsx)(X,{data:e}),(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Critical Path"}),(0,r.jsx)("div",{className:"mt-5",children:0===t.milestonePath.length?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No critical path data."}):(0,r.jsxs)("div",{className:"space-y-7",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Milestone Chain"}),(0,r.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:t.milestonePath.map((e,s)=>(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-1.5 font-mono text-sm font-bold text-destructive",children:e}),s<t.milestonePath.length-1&&(0,r.jsx)(k.A,{className:"h-4 w-4 text-muted-foreground"})]},e))})]}),Object.keys(t.milestoneSlack).length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Milestone Slack"}),(0,r.jsx)("div",{className:"flex flex-col gap-2",children:e.milestones.filter(e=>!t.milestonePath.includes(e.id)).map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-4 rounded-lg bg-muted/50 px-4 py-2.5",children:[(0,r.jsx)("span",{className:"w-16 font-mono text-sm font-semibold",children:e.id}),(0,r.jsx)("span",{className:"text-sm text-muted-foreground",children:e.title}),(0,r.jsxs)("span",{className:"ml-auto font-mono text-xs text-muted-foreground",children:["slack: ",t.milestoneSlack[e.id]??0]})]},e.id))})]}),t.slicePath.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Slice Critical Path"}),(0,r.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:t.slicePath.map((e,s)=>(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"rounded-lg border border-warning/30 bg-warning/10 px-3 py-1.5 font-mono text-sm font-semibold text-warning",children:e}),s<t.slicePath.length-1&&(0,r.jsx)(k.A,{className:"h-4 w-4 text-muted-foreground"})]},e))}),n&&(0,r.jsx)("div",{className:"mt-3 space-y-2",children:t.slicePath.map(e=>n.slices.find(s=>s.id===e)).filter(e=>null!=e&&!e.done&&!e.active).map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-2.5 rounded-lg border border-warning/20 bg-warning/8 px-4 py-2.5 text-sm text-warning",children:[(0,r.jsx)($.A,{className:"h-4 w-4 shrink-0"}),(0,r.jsx)("span",{className:"font-mono font-semibold",children:e.id}),(0,r.jsx)("span",{children:"is on the critical path but not yet started"})]},e.id))})]}),Object.keys(t.sliceSlack).length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Slice Slack"}),(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(t.sliceSlack).map(([e,s])=>(0,r.jsxs)("span",{className:"rounded-lg border border-border bg-muted/50 px-3 py-1.5 font-mono text-xs text-muted-foreground",children:[e,": ",s]},e))})]})]})})]})]})}function Y({data:e}){if(!e.totals)return(0,r.jsx)(V,{message:"No metrics data available.",icon:o.A});let s=e.totals;return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,r.jsx)(q,{label:"Execution Units",value:String(s.units),accent:"default"}),(0,r.jsx)(q,{label:"Total Cost",value:(0,R.BD)(s.cost),accent:"emerald"}),(0,r.jsx)(q,{label:"Duration",value:(0,R.a3)(s.duration),accent:"sky"}),(0,r.jsx)(q,{label:"Total Tokens",value:(0,R.ap)(s.tokens.total),sub:`${(0,R.ap)(s.tokens.input)} in \xb7 ${(0,R.ap)(s.tokens.output)} out`,accent:"amber"})]}),e.byPhase.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Cost by Phase"}),(0,r.jsx)("div",{className:"mt-5 space-y-5",children:e.byPhase.map(e=>{let t=s.cost>0?e.cost/s.cost*100:0;return(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-semibold",children:e.phase}),(0,r.jsxs)("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{className:"font-mono font-medium text-foreground",children:(0,R.BD)(e.cost)}),(0,r.jsxs)("span",{children:[t.toFixed(1),"%"]}),(0,r.jsxs)("span",{children:[(0,R.ap)(e.tokens.total)," tok"]}),(0,r.jsxs)("span",{children:[e.units," units"]})]})]}),(0,r.jsx)(J,{value:t,max:100,color:"sky"})]},e.phase)})})]}),e.byModel.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Cost by Model"}),(0,r.jsx)("div",{className:"mt-5 space-y-5",children:e.byModel.map(e=>{let t=s.cost>0?e.cost/s.cost*100:0;return(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,r.jsx)("span",{className:"font-mono text-sm font-medium",children:e.model}),(0,r.jsxs)("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{className:"font-mono font-medium text-foreground",children:(0,R.BD)(e.cost)}),(0,r.jsxs)("span",{children:[t.toFixed(1),"%"]}),(0,r.jsxs)("span",{children:[(0,R.ap)(e.tokens.total)," tok"]}),(0,r.jsxs)("span",{children:[e.units," units"]})]})]}),(0,r.jsx)(J,{value:t,max:100,color:"emerald"})]},e.model)})})]}),e.byTier.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Cost by Routing Tier"}),(0,r.jsx)("div",{className:"mt-5 space-y-5",children:e.byTier.map(e=>{let t=s.cost>0?e.cost/s.cost*100:0;return(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,r.jsx)("span",{className:"font-mono text-sm font-medium",children:e.tier}),(0,r.jsxs)("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{className:"font-mono font-medium text-foreground",children:(0,R.BD)(e.cost)}),(0,r.jsxs)("span",{children:[t.toFixed(1),"%"]}),(0,r.jsxs)("span",{children:[e.units," units"]}),e.downgraded>0&&(0,r.jsxs)("span",{children:[e.downgraded," downgraded"]})]})]}),(0,r.jsx)(J,{value:t,max:100,color:"amber"})]},e.tier)})}),e.tierSavingsLine&&(0,r.jsx)("div",{className:"mt-5 rounded-lg border border-success/20 bg-success/8 px-4 py-3 text-sm text-success",children:e.tierSavingsLine})]}),e.bySlice.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Cost by Slice"}),(0,r.jsx)("div",{className:"mt-5 overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full text-sm",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{className:"border-b border-border text-left text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:[(0,r.jsx)("th",{className:"pb-3 pr-5",children:"Slice"}),(0,r.jsx)("th",{className:"pb-3 pr-5 text-right",children:"Units"}),(0,r.jsx)("th",{className:"pb-3 pr-5 text-right",children:"Cost"}),(0,r.jsx)("th",{className:"pb-3 pr-5 text-right",children:"Duration"}),(0,r.jsx)("th",{className:"pb-3 text-right",children:"Tokens"})]})}),(0,r.jsx)("tbody",{className:"divide-y divide-border/50",children:e.bySlice.map(e=>(0,r.jsxs)("tr",{className:"transition-colors hover:bg-muted/50",children:[(0,r.jsx)("td",{className:"py-3 pr-5 font-mono text-xs font-semibold",children:e.sliceId}),(0,r.jsx)("td",{className:"py-3 pr-5 text-right tabular-nums text-muted-foreground",children:e.units}),(0,r.jsx)("td",{className:"py-3 pr-5 text-right tabular-nums font-medium",children:(0,R.BD)(e.cost)}),(0,r.jsx)("td",{className:"py-3 pr-5 text-right tabular-nums text-muted-foreground",children:(0,R.a3)(e.duration)}),(0,r.jsx)("td",{className:"py-3 text-right tabular-nums text-muted-foreground",children:(0,R.ap)(e.tokens.total)})]},e.sliceId))})]})})]}),e.bySlice.length>=2&&(0,r.jsx)(Z,{data:e,totals:s})]})}function Z({data:e,totals:s}){let t=e.bySlice.filter(e=>e.sliceId.includes("/"));if(t.length<2)return null;let n=t.reduce((e,s)=>e+s.cost,0)/t.length,a=n*e.remainingSliceCount,d=s.cost+a,l=s.duration>0?s.cost/(s.duration/36e5):0;return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Projections"}),(0,r.jsxs)("div",{className:"mt-5 grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,r.jsx)(q,{label:"Avg / Slice",value:(0,R.BD)(n)}),(0,r.jsx)(q,{label:"Projected Remaining",value:(0,R.BD)(a),sub:`${e.remainingSliceCount} slices left`}),(0,r.jsx)(q,{label:"Projected Total",value:(0,R.BD)(d)}),l>0&&(0,r.jsx)(q,{label:"Burn Rate",value:`${(0,R.BD)(l)}/hr`})]}),d>2*s.cost&&e.remainingSliceCount>0&&(0,r.jsxs)("div",{className:"mt-4 flex items-center gap-2.5 rounded-lg border border-warning/20 bg-warning/8 px-4 py-3 text-sm text-warning",children:[(0,r.jsx)($.A,{className:"h-4 w-4 shrink-0"}),"Projected total ",(0,R.BD)(d)," exceeds 2\xd7 current spend"]})]})}function ee({data:e}){let s=e.health,t=e.totals?.cost??0,n=s.budgetCeiling&&s.budgetCeiling>0?Math.min(100,t/s.budgetCeiling*100):0,a=s.providers.filter(e=>!e.ok),d=s.doctorHistory??[];return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,r.jsx)(q,{label:"Budget",value:void 0!==s.budgetCeiling?(0,R.BD)(s.budgetCeiling):"unset",sub:(0,R.BD)(t),accent:n>=90?"amber":"emerald"}),(0,r.jsx)(q,{label:"Token Profile",value:s.tokenProfile,accent:"sky"}),(0,r.jsx)(q,{label:"Tool Calls",value:String(s.toolCalls)}),(0,r.jsx)(q,{label:"Pending Captures",value:String(e.captures.pendingCount),accent:e.captures.pendingCount>0?"amber":"default"})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Budget Pressure"}),(0,r.jsxs)("div",{className:"mt-5 space-y-5",children:[void 0!==s.budgetCeiling?(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"font-medium",children:"Spend"}),(0,r.jsxs)("span",{className:"font-mono text-xs text-muted-foreground",children:[(0,R.BD)(t)," / ",(0,R.BD)(s.budgetCeiling)]})]}),(0,r.jsx)(J,{value:n,max:100,color:n>=90?"amber":"emerald"})]}):(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No budget ceiling set."}),(0,r.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"font-medium",children:"Truncation"}),(0,r.jsxs)("span",{className:"font-mono text-xs text-muted-foreground",children:[s.truncationRate.toFixed(1),"%"]})]}),(0,r.jsx)(J,{value:Math.min(s.truncationRate,100),max:100,color:s.truncationRate>=30?"amber":"sky"})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"font-medium",children:"Continue-here"}),(0,r.jsxs)("span",{className:"font-mono text-xs text-muted-foreground",children:[s.continueHereRate.toFixed(1),"%"]})]}),(0,r.jsx)(J,{value:Math.min(s.continueHereRate,100),max:100,color:s.continueHereRate>=30?"amber":"sky"})]})]})]})]}),s.tierBreakdown.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Routing"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:s.tierBreakdown.map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-4 rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsx)("span",{className:"w-24 font-mono text-xs font-semibold",children:e.tier}),(0,r.jsxs)("span",{className:"text-sm text-muted-foreground",children:[e.units," units"]}),(0,r.jsx)("span",{className:"ml-auto font-mono text-sm font-medium",children:(0,R.BD)(e.cost)}),e.downgraded>0&&(0,r.jsxs)("span",{className:"rounded-md bg-warning/10 px-2 py-0.5 text-xs text-warning",children:[e.downgraded," downgraded"]})]},e.tier))}),s.tierSavingsLine&&(0,r.jsx)("p",{className:"mt-4 text-sm text-success",children:s.tierSavingsLine})]}),(s.environmentIssues.length>0||a.length>0||s.skillSummary.total>0)&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Readiness"}),(0,r.jsxs)("div",{className:"mt-5 grid gap-5 lg:grid-cols-3",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Environment"}),0===s.environmentIssues.length?(0,r.jsx)("p",{className:"text-sm text-success",children:"No environment issues."}):(0,r.jsx)("div",{className:"space-y-2",children:s.environmentIssues.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-3 py-2",children:[(0,r.jsx)("p",{className:(0,P.cn)("text-sm font-medium","error"===e.status?"text-destructive":"text-warning"),children:e.message}),e.detail&&(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:e.detail})]},`${e.name}-${e.message}`))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Providers"}),0===s.providers.length?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No provider checks available."}):(0,r.jsx)("div",{className:"space-y-2",children:s.providers.map(e=>(0,r.jsxs)("div",{className:"flex items-start gap-2 rounded-lg bg-muted/50 px-3 py-2",children:[e.ok?(0,r.jsx)(f.A,{className:"mt-0.5 h-4 w-4 shrink-0 text-success"}):(0,r.jsx)(S.A,{className:"mt-0.5 h-4 w-4 shrink-0 text-destructive"}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("p",{className:"truncate text-sm font-medium",children:e.label}),(0,r.jsx)("p",{className:"truncate text-xs text-muted-foreground",children:e.message})]})]},e.name))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold text-muted-foreground",children:"Skills"}),0===s.skillSummary.total?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No skill report available."}):(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-3 py-3",children:[(0,r.jsxs)("p",{className:"text-sm font-medium",children:[s.skillSummary.total," skills tracked"]}),(0,r.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:[s.skillSummary.criticalCount," critical \xb7 ",s.skillSummary.warningCount," warning"]}),s.skillSummary.topIssue&&(0,r.jsx)("p",{className:"mt-3 text-xs text-warning",children:s.skillSummary.topIssue})]})]})]})]}),s.progressScore&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Progress Score"}),(0,r.jsxs)("div",{className:"mt-5 flex items-start gap-4",children:[(0,r.jsx)("div",{className:(0,P.cn)("mt-1 h-3 w-3 rounded-full","green"===s.progressScore.level?"bg-success":"yellow"===s.progressScore.level?"bg-warning":"bg-destructive")}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-semibold",children:s.progressScore.summary}),(0,r.jsx)("div",{className:"mt-3 space-y-1.5",children:s.progressScore.signals.map((e,s)=>(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:e.label},`${e.kind}-${s}`))})]})]})]}),d.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Doctor History"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:d.slice(0,10).map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[e.ok?(0,r.jsx)(f.A,{className:"h-4 w-4 shrink-0 text-success"}):(0,r.jsx)($.A,{className:"h-4 w-4 shrink-0 text-warning"}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:e.ts.replace("T"," ").slice(0,19)}),e.scope&&(0,r.jsx)("span",{className:"rounded-md bg-info/10 px-2 py-0.5 text-xs text-info",children:e.scope}),(0,r.jsx)("span",{className:"min-w-0 truncate text-sm",children:e.summary||`${e.errors} errors, ${e.warnings} warnings, ${e.fixes} fixes`})]}),e.issues&&e.issues.length>0&&(0,r.jsx)("div",{className:"mt-3 space-y-1",children:e.issues.slice(0,3).map(e=>(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:e.message},`${e.code}-${e.unitId}-${e.message}`))})]},`${e.ts}-${e.codes.join("-")}`))})]})]})}function es({data:e}){let s=[...e.units].sort((e,s)=>e.startedAt-s.startedAt).slice(-30),t=s.some(e=>!e.finishedAt||0===e.finishedAt),[a,d]=(0,n.useState)(()=>Date.now());(0,n.useEffect)(()=>{if(!t)return;let e=window.setInterval(()=>{d(Date.now())},1e3);return()=>window.clearInterval(e)},[t]);let i=t?a:0,o=(0,n.useCallback)(e=>(e.finishedAt||i)-e.startedAt,[i]);if(0===e.units.length)return(0,r.jsx)(V,{message:"No execution history yet.",icon:l.A});let c=Math.max(...s.map(o),1);return(0,r.jsx)("div",{className:"space-y-4",children:(0,r.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,r.jsxs)("div",{className:"border-b border-border bg-muted/50 px-6 py-4",children:[(0,r.jsx)(z,{children:"Execution Timeline"}),(0,r.jsxs)("p",{className:"mt-1.5 text-xs text-muted-foreground",children:["Showing ",s.length," of ",e.units.length," units — most recent first"]})]}),(0,r.jsxs)("div",{className:"grid grid-cols-[3.5rem_1.5rem_5rem_8rem_1fr_4.5rem_5rem] items-center gap-3 border-b border-border/50 px-6 py-2.5 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:[(0,r.jsx)("span",{children:"Time"}),(0,r.jsx)("span",{}),(0,r.jsx)("span",{children:"Type"}),(0,r.jsx)("span",{children:"ID"}),(0,r.jsx)("span",{children:"Duration"}),(0,r.jsx)("span",{className:"text-right",children:"Time"}),(0,r.jsx)("span",{className:"text-right",children:"Cost"})]}),(0,r.jsx)("div",{className:"divide-y divide-border/40",children:[...s].reverse().map((e,s)=>{let t=o(e),n=!e.finishedAt||0===e.finishedAt;return(0,r.jsxs)("div",{className:"grid grid-cols-[3.5rem_1.5rem_5rem_8rem_1fr_4.5rem_5rem] items-center gap-3 px-6 py-3.5 transition-colors hover:bg-muted/50",children:[(0,r.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:E(e.startedAt)}),n?(0,r.jsx)(b.A,{className:"h-3.5 w-3.5 shrink-0 text-info"}):(0,r.jsx)(f.A,{className:"h-3.5 w-3.5 shrink-0 text-success"}),(0,r.jsx)("span",{className:"truncate text-xs font-medium",children:e.type}),(0,r.jsx)("span",{className:"truncate font-mono text-xs text-muted-foreground",children:e.id}),(0,r.jsx)("div",{className:"hidden sm:block",children:(0,r.jsx)(J,{value:t/c*100,max:100,color:"sky",animated:n})}),(0,r.jsx)("span",{className:"text-right font-mono text-xs tabular-nums text-muted-foreground",children:(0,R.a3)(t)}),(0,r.jsx)("span",{className:"text-right font-mono text-xs tabular-nums font-medium",children:(0,R.BD)(e.cost)})]},`${e.id}-${e.startedAt}-${s}`)})})]})})}function et({data:e}){let s=e.agentActivity;if(!s)return(0,r.jsx)(V,{message:"No agent activity data available.",icon:x.A});let t=s.completedUnits,n=Math.max(t,s.totalSlices),a=n>0?Math.min(100,Math.round(t/n*100)):0;return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex items-center gap-4",children:[(0,r.jsxs)("div",{className:(0,P.cn)("relative flex h-10 w-10 items-center justify-center rounded-full",s.active?"bg-success/15":"bg-muted"),children:[s.active&&(0,r.jsx)("div",{className:"absolute inset-0 animate-ping rounded-full bg-success/20"}),(0,r.jsx)("div",{className:(0,P.cn)("h-3 w-3 rounded-full",s.active?"bg-success":"bg-muted-foreground/30")})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-xl font-bold",children:s.active?"Active":"Idle"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:s.active?"Agent is running":"Waiting for next task"})]})]}),s.active&&(0,r.jsxs)("div",{className:"text-right",children:[(0,r.jsx)("p",{className:"font-mono text-lg font-bold",children:(0,R.a3)(s.elapsed)}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"elapsed"})]})]}),s.currentUnit&&(0,r.jsxs)("div",{className:"mt-5 flex items-center gap-3 rounded-xl border border-info/20 bg-info/8 px-5 py-3.5",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 shrink-0 text-info"}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"Currently executing"}),(0,r.jsxs)("p",{className:"mt-0.5 font-mono text-sm font-semibold text-info",children:[s.currentUnit.type," — ",s.currentUnit.id]})]})]})]}),(0,r.jsxs)("div",{className:"grid gap-4 sm:grid-cols-3",children:[(0,r.jsx)(q,{label:"Truncation",value:`${e.health.truncationRate.toFixed(1)}%`,accent:e.health.truncationRate>=30?"amber":"default"}),(0,r.jsx)(q,{label:"Continue-here",value:`${e.health.continueHereRate.toFixed(1)}%`,accent:e.health.continueHereRate>=30?"amber":"default"}),(0,r.jsx)(q,{label:"Pending Captures",value:String(e.captures.pendingCount),accent:e.captures.pendingCount>0?"amber":"default"})]}),n>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,r.jsx)(z,{children:"Completion Progress"}),(0,r.jsxs)("span",{className:"font-mono text-sm text-muted-foreground",children:[t," / ",n," slices"]})]}),(0,r.jsx)(J,{value:t,max:n,color:"emerald"}),(0,r.jsxs)("div",{className:"mt-3 flex items-center justify-between text-xs text-muted-foreground",children:[(0,r.jsxs)("span",{children:[a,"% complete"]}),(0,r.jsxs)("span",{children:[n-t," remaining"]})]})]}),(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,r.jsx)(q,{label:"Completion Rate",value:s.completionRate>0?`${s.completionRate.toFixed(1)}/hr`:"—",accent:"sky"}),(0,r.jsx)(q,{label:"Session Cost",value:(0,R.BD)(s.sessionCost),accent:"emerald"}),(0,r.jsx)(q,{label:"Session Tokens",value:(0,R.ap)(s.sessionTokens),accent:"amber"}),(0,r.jsx)(q,{label:"Completed",value:String(s.completedUnits)})]}),e.units.filter(e=>e.finishedAt>0).length>0&&(0,r.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,r.jsx)("div",{className:"border-b border-border bg-muted/50 px-6 py-4",children:(0,r.jsx)(z,{children:"Recent Completed Units"})}),(0,r.jsx)("div",{className:"divide-y divide-border/40",children:e.units.filter(e=>e.finishedAt>0).slice(-5).reverse().map((e,s)=>(0,r.jsxs)("div",{className:"flex items-center gap-4 px-6 py-4 transition-colors hover:bg-muted/50",children:[(0,r.jsx)("span",{className:"w-12 font-mono text-xs text-muted-foreground",children:E(e.startedAt)}),(0,r.jsx)(f.A,{className:"h-4 w-4 shrink-0 text-success"}),(0,r.jsx)("span",{className:"flex-1 truncate text-sm font-medium",children:e.type}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:e.id}),(0,r.jsx)("span",{className:"font-mono text-xs tabular-nums text-muted-foreground",children:(0,R.a3)(e.finishedAt-e.startedAt)}),(0,r.jsx)("span",{className:"font-mono text-xs tabular-nums font-semibold",children:(0,R.BD)(e.cost)})]},`${e.id}-${s}`))})]})]})}function er({data:e}){let s=e.changelog.entries;if(0===s.length)return(0,r.jsx)(V,{message:"No completed slices yet.",icon:u.A});let t=[...s].reverse();return(0,r.jsx)("div",{className:"space-y-4",children:t.map((s,t)=>{let n=H(e,s.milestoneId,s.sliceId);return(0,r.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-border bg-muted/50 px-6 py-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)(f.A,{className:"h-4 w-4 shrink-0 text-success"}),(0,r.jsxs)("span",{className:"font-mono text-xs font-bold text-success",children:[s.milestoneId,"/",s.sliceId]}),(0,r.jsx)("span",{className:"text-sm font-semibold",children:s.title})]}),s.completedAt&&(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:function(e){let s=Date.now()-new Date(e).getTime();if(s<6e4)return"just now";let t=Math.floor(s/6e4);if(t<60)return`${t}m ago`;let r=Math.floor(t/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}(s.completedAt)})]}),(0,r.jsxs)("div",{className:"px-6 py-5 space-y-5",children:[s.oneLiner&&(0,r.jsxs)("p",{className:"text-sm text-muted-foreground italic leading-relaxed border-l-2 border-muted pl-4",children:["“",s.oneLiner,"”"]}),s.filesModified.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Files Modified"}),(0,r.jsx)("div",{className:"space-y-2",children:s.filesModified.map((e,s)=>(0,r.jsxs)("div",{className:"flex items-start gap-3 rounded-lg bg-muted/50 px-4 py-2.5",children:[(0,r.jsx)(f.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-success/70"}),(0,r.jsx)("span",{className:"font-mono text-xs font-medium text-muted-foreground",children:e.path}),e.description&&(0,r.jsxs)("span",{className:"ml-1 text-xs text-muted-foreground",children:["— ",e.description]})]},s))})]}),n&&(n.keyDecisions.length>0||n.patternsEstablished.length>0)&&(0,r.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[n.keyDecisions.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Decisions"}),(0,r.jsx)("div",{className:"space-y-2",children:n.keyDecisions.map((e,s)=>(0,r.jsx)("p",{className:"rounded-lg bg-muted/50 px-4 py-2.5 text-xs text-muted-foreground",children:e},s))})]}),n.patternsEstablished.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-3 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Patterns"}),(0,r.jsx)("div",{className:"space-y-2",children:n.patternsEstablished.map((e,s)=>(0,r.jsx)("p",{className:"rounded-lg bg-muted/50 px-4 py-2.5 text-xs text-muted-foreground",children:e},s))})]})]})]})]},`${s.milestoneId}-${s.sliceId}-${t}`)})})}function en({data:e,unfilteredData:s}){let t=e.knowledge,n=e.memories,a=s.knowledge,d=s.memories;return a.exists||0!==d.entries.length?a.exists&&0===a.rules.length&&0===a.patterns.length&&0===a.lessons.length&&0===d.entries.length?(0,r.jsx)(V,{message:"Project knowledge exists but has no entries yet.",icon:h.A}):t.rules.length>0||t.patterns.length>0||t.lessons.length>0||n.entries.length>0?(0,r.jsxs)("div",{className:"space-y-6",children:[t.rules.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Rules"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:t.rules.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"font-mono text-xs font-semibold text-info",children:e.id}),(0,r.jsx)("span",{className:"rounded-md bg-muted px-2 py-0.5 text-xs text-muted-foreground",children:e.scope})]}),(0,r.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:e.content})]},e.id))})]}),t.patterns.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Patterns"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:t.patterns.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsx)("p",{className:"font-mono text-xs font-semibold text-info",children:e.id}),(0,r.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:e.content})]},e.id))})]}),t.lessons.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Lessons Learned"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:t.lessons.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsx)("p",{className:"font-mono text-xs font-semibold text-info",children:e.id}),(0,r.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:e.content})]},e.id))})]}),n.entries.length>0&&(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Memories"}),(0,r.jsx)("div",{className:"mt-5 space-y-3",children:n.entries.map(e=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/50 px-4 py-3",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)("span",{className:"font-mono text-xs font-semibold text-info",children:e.id}),(0,r.jsx)("span",{className:"rounded-md bg-muted px-2 py-0.5 text-xs text-muted-foreground",children:e.category}),"project"!==e.scope&&(0,r.jsx)("span",{className:"rounded-md bg-muted px-2 py-0.5 text-xs text-muted-foreground",children:e.scope}),(0,r.jsxs)("span",{className:"text-xs text-muted-foreground",children:[Math.round(100*e.confidence),"% confidence \xb7 ",e.hitCount," hits"]})]}),(0,r.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:e.content}),e.tags.length>0&&(0,r.jsx)("div",{className:"mt-2 flex flex-wrap gap-1",children:e.tags.map(e=>(0,r.jsxs)("span",{className:"text-xs text-muted-foreground",children:["#",e]},e))})]},e.id))})]})]}):(0,r.jsx)(V,{message:"No knowledge entries match your search.",icon:h.A}):(0,r.jsx)(V,{message:"No project knowledge file found.",icon:h.A})}function ea({data:e}){let s=e.captures,t=(0,R.vX)(s),n=[...s.entries].sort((e,s)=>{let t={pending:0,triaged:1,resolved:2};return t[e.status]-t[s.status]});return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,r.jsx)(q,{label:"Total",value:String(s.totalCount)}),(0,r.jsx)(q,{label:"Pending",value:String(t.pending),accent:t.pending>0?"amber":"default"}),(0,r.jsx)(q,{label:"Triaged",value:String(t.triaged),accent:"sky"}),(0,r.jsx)(q,{label:"Resolved",value:String(t.resolved),accent:"emerald"})]}),0===n.length?(0,r.jsx)(V,{message:"No captures recorded yet.",icon:p.A}):(0,r.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,r.jsx)("div",{className:"border-b border-border bg-muted/50 px-6 py-4",children:(0,r.jsx)(z,{children:"Captured Notes"})}),(0,r.jsx)("div",{className:"divide-y divide-border/40",children:n.map(e=>{var s;let t="pending"===e.status?"text-warning bg-warning/10":"triaged"===e.status?"text-info bg-info/10":"text-success bg-success/10";return(0,r.jsxs)("div",{className:"px-6 py-4",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsx)("span",{className:"font-mono text-xs font-bold text-info",children:e.id}),(0,r.jsx)("span",{className:(0,P.cn)("rounded-md px-2 py-0.5 text-[11px] font-semibold",t),children:e.status}),e.classification&&(0,r.jsx)("span",{className:(0,P.cn)("rounded-md px-2 py-0.5 text-[11px] font-semibold","inject"===(s=e.classification)||"stop"===s?"text-warning bg-warning/10":"replan"===s||"backtrack"===s?"text-destructive bg-destructive/10":"quick-task"===s?"text-info bg-info/10":"text-muted-foreground bg-muted"),children:e.classification}),(0,r.jsx)("span",{className:"ml-auto text-xs text-muted-foreground",children:F(e.timestamp)})]}),(0,r.jsx)("p",{className:"mt-3 text-sm leading-relaxed text-muted-foreground",children:e.text}),(e.rationale||e.resolution)&&(0,r.jsxs)("div",{className:"mt-3 rounded-lg bg-muted/50 px-4 py-3 text-xs text-muted-foreground",children:[e.rationale&&(0,r.jsxs)("p",{children:["Rationale: ",e.rationale]}),e.resolution&&(0,r.jsxs)("p",{className:"mt-1",children:["Resolution: ",e.resolution]})]})]},e.id)})})]})]})}function ed({data:e}){let s=(0,n.useCallback)((e,s,t)=>{let r=new Blob([e],{type:t}),n=URL.createObjectURL(r),a=document.createElement("a");a.href=n,a.download=s,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(n)},[]),t=(0,n.useCallback)(()=>{let s=[];for(let t of(s.push("# GSD Workflow Report"),s.push(""),s.push(`Generated: ${new Date().toISOString()}`),s.push(`Phase: ${e.phase}`),s.push(""),s.push("## Milestones"),s.push(""),e.milestones)){let e="complete"===t.status?"✓":"active"===t.status?"▸":"○";for(let r of(s.push(`### ${e} ${t.id}: ${t.title} (${t.status})`),t.dependsOn.length>0&&s.push(`Depends on: ${t.dependsOn.join(", ")}`),s.push(""),t.slices)){let e=r.done?"✓":r.active?"▸":"○";for(let t of(s.push(`- ${e} **${r.id}**: ${r.title} [risk: ${r.risk}]`),r.tasks)){let e=t.done?"✓":t.active?"▸":"○";s.push(` - ${e} ${t.id}: ${t.title}`)}}s.push("")}if(e.totals&&(s.push("## Metrics Summary"),s.push(""),s.push("| Metric | Value |"),s.push("|--------|-------|"),s.push(`| Units | ${e.totals.units} |`),s.push(`| Total Cost | ${(0,R.BD)(e.totals.cost)} |`),s.push(`| Duration | ${(0,R.a3)(e.totals.duration)} |`),s.push(`| Tokens | ${(0,R.ap)(e.totals.tokens.total)} |`),s.push("")),e.byTier.length>0){for(let t of(s.push("## Routing Tiers"),s.push(""),s.push("| Tier | Units | Cost | Downgraded |"),s.push("|------|-------|------|------------|"),e.byTier))s.push(`| ${t.tier} | ${t.units} | ${(0,R.BD)(t.cost)} | ${t.downgraded} |`);e.tierSavingsLine&&s.push(`
2
+ ${e.tierSavingsLine}`),s.push("")}if(s.push("## Health"),s.push(""),s.push("| Signal | Value |"),s.push("|--------|-------|"),s.push(`| Token profile | ${e.health.tokenProfile} |`),s.push(`| Truncation | ${e.health.truncationRate.toFixed(1)}% |`),s.push(`| Continue-here | ${e.health.continueHereRate.toFixed(1)}% |`),s.push(`| Pending captures | ${e.captures.pendingCount} |`),e.health.progressScore&&s.push(`| Progress score | ${e.health.progressScore.level}: ${e.health.progressScore.summary} |`),s.push(""),e.criticalPath.milestonePath.length>0&&(s.push("## Critical Path"),s.push(""),s.push(`Milestone: ${e.criticalPath.milestonePath.join(" → ")}`),e.criticalPath.slicePath.length>0&&s.push(`Slice: ${e.criticalPath.slicePath.join(" → ")}`),s.push("")),e.knowledge.exists){for(let t of(s.push("## Knowledge"),s.push(""),e.knowledge.rules))s.push(`- Rule ${t.id} [${t.scope}]: ${t.content}`);for(let t of e.knowledge.patterns)s.push(`- Pattern ${t.id}: ${t.content}`);for(let t of e.knowledge.lessons)s.push(`- Lesson ${t.id}: ${t.content}`);s.push("")}if(e.memories.entries.length>0){for(let t of(s.push("## Memories"),s.push(""),e.memories.entries))s.push(`- ${t.id} (${t.category}, ${t.scope}): ${t.content}`);s.push("")}if(e.captures.entries.length>0){for(let t of(s.push("## Captures"),s.push(""),e.captures.entries)){let e=t.classification?`, ${t.classification}`:"";s.push(`- **${t.id}** (${t.status}${e}): ${t.text}`)}s.push("")}if(e.changelog.entries.length>0)for(let t of(s.push("## Changelog"),s.push(""),e.changelog.entries)){if(s.push(`### ${t.milestoneId}/${t.sliceId}: ${t.title}`),t.oneLiner&&s.push(`> ${t.oneLiner}`),t.filesModified.length>0)for(let e of(s.push("Files:"),t.filesModified))s.push(`- \`${e.path}\` — ${e.description}`);t.completedAt&&s.push(`Completed: ${t.completedAt}`);let r=H(e,t.milestoneId,t.sliceId);if(r?.keyDecisions.length)for(let e of(s.push("Decisions:"),r.keyDecisions))s.push(`- ${e}`);if(r?.patternsEstablished.length)for(let e of(s.push("Patterns:"),r.patternsEstablished))s.push(`- ${e}`);s.push("")}return s.join("\n")},[e]);return(0,r.jsx)("div",{className:"space-y-6",children:(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-6",children:[(0,r.jsx)(z,{children:"Export Project Data"}),(0,r.jsx)("p",{className:"mt-3 text-sm leading-relaxed text-muted-foreground",children:"Download the current visualizer data as a structured report. Markdown includes milestones, health, knowledge, captures, metrics, critical path, and changelog in a readable format. JSON contains the full raw data payload."}),(0,r.jsxs)("div",{className:"mt-7 grid gap-4 sm:grid-cols-2",children:[(0,r.jsxs)("button",{onClick:()=>s(t(),"gsd-report.md","text/markdown"),className:"group flex items-center gap-5 rounded-xl border border-border bg-muted/50 p-5 text-left transition-[background-color,border-color,box-shadow,transform] hover:border-info/40 hover:bg-info/5",children:[(0,r.jsx)("div",{className:"rounded-xl border border-info/20 bg-info/10 p-4 transition-colors group-hover:bg-info/15",children:(0,r.jsx)(C.A,{className:"h-6 w-6 text-info"})}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("p",{className:"text-sm font-semibold transition-colors group-hover:text-info",children:"Download Markdown"}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Human-readable report with tables and structure"})]}),(0,r.jsx)(g.A,{className:"h-4 w-4 shrink-0 text-muted-foreground/0 transition-[color,opacity,transform] group-hover:text-info/70"})]}),(0,r.jsxs)("button",{onClick:()=>s(JSON.stringify(e,null,2),"gsd-report.json","application/json"),className:"group flex items-center gap-5 rounded-xl border border-border bg-muted/50 p-5 text-left transition-[background-color,border-color,box-shadow,transform] hover:border-success/40 hover:bg-success/5",children:[(0,r.jsx)("div",{className:"rounded-xl border border-success/20 bg-success/10 p-4 transition-colors group-hover:bg-success/15",children:(0,r.jsx)(A,{className:"h-6 w-6 text-success"})}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("p",{className:"text-sm font-semibold transition-colors group-hover:text-success",children:"Download JSON"}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Full raw data payload for tooling"})]}),(0,r.jsx)(g.A,{className:"h-4 w-4 shrink-0 text-muted-foreground/0 transition-[color,opacity,transform] group-hover:text-success/70"})]})]})]})})}function el({value:e,onValueChange:s,children:t}){return(0,r.jsx)(a.bL,{value:e,onValueChange:e=>s(e),className:"flex h-full flex-col overflow-hidden",children:t})}function ei(){return(0,r.jsx)(a.B8,{className:"flex shrink-0 overflow-x-auto border-b border-border bg-background px-6",children:L.map(({value:e,label:s,Icon:t})=>(0,r.jsxs)(a.l9,{value:e,className:(0,P.cn)("group relative flex shrink-0 items-center gap-2 px-3.5 py-3.5 text-sm font-medium outline-none","text-muted-foreground transition-colors duration-150","hover:text-foreground","data-[state=active]:text-foreground","focus-visible:text-foreground","disabled:pointer-events-none disabled:opacity-40"),children:[(0,r.jsx)("span",{className:(0,P.cn)("pointer-events-none absolute bottom-0 left-0 right-0 h-0.5 rounded-t-full","bg-foreground opacity-0 transition-opacity duration-150","group-data-[state=active]:opacity-100")}),(0,r.jsx)("span",{className:"absolute inset-x-0 inset-y-1.5 rounded-lg bg-muted/0 transition-colors duration-150 group-hover:bg-muted group-data-[state=active]:bg-transparent"}),(0,r.jsx)(t,{className:"relative h-4 w-4 shrink-0 transition-colors duration-150 text-muted-foreground group-hover:text-muted-foreground group-data-[state=active]:text-foreground"}),(0,r.jsx)("span",{className:"relative",children:s})]},e))})}function eo(){let e=(0,M.gF)(),s=e.boot?.project.cwd,[t,d]=(0,n.useState)(null),[l,i]=(0,n.useState)(!0),[o,c]=(0,n.useState)(null),[m,x]=(0,n.useState)("progress"),[u,h]=(0,n.useState)(""),[p,g]=(0,n.useState)(!1),f=(0,n.useRef)(null),b=(0,n.useMemo)(()=>t?function(e,s){let t=s.trim().toLowerCase();if(!t)return e;let r=e.milestones.map(e=>{if(_({...e,slices:[]},t))return e;let s=e.slices.map(e=>{if(_({...e,tasks:[]},t))return e;let s=O(e.tasks,t);return s.length>0?{...e,tasks:s}:null}).filter(e=>null!=e);return s.length>0?{...e,slices:s}:null}).filter(e=>null!=e),n=O(e.stats.missingSlices,t),a=O(e.stats.updatedSlices,t),d=O(e.stats.recentEntries,t),l=O(e.captures.entries,t);return{...e,milestones:r,byPhase:O(e.byPhase,t),bySlice:O(e.bySlice,t),byModel:O(e.byModel,t),byTier:O(e.byTier,t),units:O(e.units,t),changelog:{...e.changelog,entries:O(e.changelog.entries,t)},sliceVerifications:O(e.sliceVerifications,t),knowledge:{...e.knowledge,rules:O(e.knowledge.rules,t),patterns:O(e.knowledge.patterns,t),lessons:O(e.knowledge.lessons,t)},memories:{...e.memories,entries:O(e.memories.entries,t)},captures:{...e.captures,entries:l,pendingCount:l.filter(e=>"pending"===e.status).length,totalCount:l.length},health:{...e.health,tierBreakdown:O(e.health.tierBreakdown,t),providers:O(e.health.providers,t),environmentIssues:O(e.health.environmentIssues,t),doctorHistory:e.health.doctorHistory?O(e.health.doctorHistory,t):e.health.doctorHistory},discussion:O(e.discussion,t),stats:{...e.stats,missingCount:n.length,missingSlices:n,updatedCount:a.length,updatedSlices:a,recentEntries:d}}}(t,u):null,[t,u]),j=(0,n.useCallback)(async()=>{try{let e=await (0,T.tm)((0,M.fL)("/api/visualizer",s));if(!e.ok){let s=await e.json().catch(()=>({error:"Unknown error"}));throw Error(s.error||`HTTP ${e.status}`)}let t=await e.json();d(t),c(null)}catch(e){c(e instanceof Error?e.message:"Failed to fetch visualizer data")}finally{i(!1)}},[s]);if((0,n.useEffect)(()=>{let e=setTimeout(j,0),s=setInterval(j,1e4);return()=>{clearTimeout(e),clearInterval(s)}},[j]),(0,n.useEffect)(()=>{let e=e=>{if(p&&("Escape"===e.key||"q"===e.key.toLowerCase())){e.preventDefault(),g(!1);return}if(!(()=>{let e=document.activeElement;if(!e)return!1;let s=e.tagName.toLowerCase();return"input"===s||"textarea"===s||"select"===s||"true"===e.getAttribute("contenteditable")})()){if(e.key>="1"&&e.key<="9"){let s=L[Number(e.key)-1];s&&(e.preventDefault(),x(s.value));return}if("0"===e.key){e.preventDefault(),x(L[L.length-1].value);return}if("/"===e.key){e.preventDefault(),f.current?.focus();return}"?"===e.key&&(e.preventDefault(),g(!0))}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[p]),l&&!t)return(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,r.jsx)(D.A,{className:"h-7 w-7 animate-spin text-muted-foreground"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading visualizer data…"})]})});if(o&&!t)return(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-4 text-center",children:[(0,r.jsx)("div",{className:"rounded-full border border-warning/20 bg-warning/10 p-4",children:(0,r.jsx)($.A,{className:"h-6 w-6 text-warning"})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-semibold",children:"Failed to load visualizer"}),(0,r.jsx)("p",{className:"mt-1.5 max-w-sm text-xs text-muted-foreground",children:o})]}),(0,r.jsxs)("button",{onClick:j,className:"mt-1 inline-flex items-center gap-2 rounded-lg border border-border bg-card px-4 py-2 text-sm font-medium transition-colors hover:bg-accent",children:[(0,r.jsx)(I.A,{className:"h-3.5 w-3.5"}),"Retry"]})]})});if(!t)return null;let N=b??t;return(0,r.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-5 border-b border-border px-7 py-5",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-xl font-bold tracking-tight",children:"Workflow Visualizer"}),(0,r.jsxs)("div",{className:"mt-1.5 flex items-center gap-3 text-sm text-muted-foreground",children:[(0,r.jsxs)("span",{children:["Phase:"," ",(0,r.jsx)("span",{className:(0,P.cn)("inline-flex items-center rounded-md px-2 py-0.5 text-xs font-semibold uppercase tracking-wider","complete"===t.phase?"bg-success/15 text-success":"active"===t.phase||"running"===t.phase?"bg-info/15 text-info":"bg-muted text-muted-foreground"),children:t.phase})]}),t.remainingSliceCount>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"text-border",children:"\xb7"}),(0,r.jsxs)("span",{children:[t.remainingSliceCount," slice",1!==t.remainingSliceCount?"s":""," remaining"]})]}),o&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"text-border",children:"\xb7"}),(0,r.jsxs)("span",{className:"flex items-center gap-1 text-warning",children:[(0,r.jsx)($.A,{className:"h-3 w-3"}),"Stale — ",o]})]})]})]}),(0,r.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,r.jsx)("input",{ref:f,type:"search",value:u,onChange:e=>h(e.target.value),placeholder:"Search","aria-label":"Search visualizer",className:"h-9 w-48 rounded-lg border border-border bg-background px-3 text-sm outline-none transition-colors placeholder:text-muted-foreground focus:border-foreground/40"}),(0,r.jsx)("button",{type:"button",onClick:()=>g(!0),"aria-label":"Show keyboard shortcuts",className:"inline-flex h-9 w-9 items-center justify-center rounded-lg border border-border bg-card text-sm font-semibold transition-colors hover:bg-accent",children:"?"})]})]}),(0,r.jsxs)(el,{value:m,onValueChange:x,children:[(0,r.jsx)(ei,{}),(0,r.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,r.jsxs)("div",{className:"mx-auto max-w-5xl px-7 py-7",children:[(0,r.jsx)(a.UC,{value:"progress",className:"outline-none",children:(0,r.jsx)(G,{data:N})}),(0,r.jsx)(a.UC,{value:"deps",className:"outline-none",children:(0,r.jsx)(Q,{data:N})}),(0,r.jsx)(a.UC,{value:"metrics",className:"outline-none",children:(0,r.jsx)(Y,{data:N})}),(0,r.jsx)(a.UC,{value:"health",className:"outline-none",children:(0,r.jsx)(ee,{data:N})}),(0,r.jsx)(a.UC,{value:"timeline",className:"outline-none",children:(0,r.jsx)(es,{data:N})}),(0,r.jsx)(a.UC,{value:"agent",className:"outline-none",children:(0,r.jsx)(et,{data:N})}),(0,r.jsx)(a.UC,{value:"changes",className:"outline-none",children:(0,r.jsx)(er,{data:N})}),(0,r.jsx)(a.UC,{value:"knowledge",className:"outline-none",children:(0,r.jsx)(en,{data:N,unfilteredData:t})}),(0,r.jsx)(a.UC,{value:"captures",className:"outline-none",children:(0,r.jsx)(ea,{data:N})}),(0,r.jsx)(a.UC,{value:"export",className:"outline-none",children:(0,r.jsx)(ed,{data:N})})]})})]}),p&&(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"visualizer-shortcuts-title",className:"fixed inset-0 z-50 flex items-center justify-center bg-background/70 p-6 backdrop-blur-sm",onClick:()=>g(!1),children:(0,r.jsxs)("div",{className:"w-full max-w-sm rounded-xl border border-border bg-card p-5 shadow-lg",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,r.jsx)("h2",{id:"visualizer-shortcuts-title",className:"text-sm font-semibold",children:"Keyboard Shortcuts"}),(0,r.jsx)("button",{type:"button",onClick:()=>g(!1),"aria-label":"Close keyboard shortcuts",className:"inline-flex h-8 w-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:(0,r.jsx)(S.A,{className:"h-4 w-4"})})]}),(0,r.jsxs)("dl",{className:"mt-4 grid grid-cols-[auto_1fr] gap-x-4 gap-y-3 text-sm",children:[(0,r.jsx)("dt",{className:"font-mono text-xs text-muted-foreground",children:"1-9, 0"}),(0,r.jsx)("dd",{children:"Jump to tab"}),(0,r.jsx)("dt",{className:"font-mono text-xs text-muted-foreground",children:"/"}),(0,r.jsx)("dd",{children:"Focus search"}),(0,r.jsx)("dt",{className:"font-mono text-xs text-muted-foreground",children:"?"}),(0,r.jsx)("dd",{children:"Show this help"})]})]})})]})}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8785],{18785:(e,t,s)=>{s.r(t),s.d(t,{ChatMode:()=>en,ChatPane:()=>ek});var r=s(18870),n=s(89581),a=s(45110),o=s(67552),l=s(53348),i=s(3733),d=s(37373),c=s(74676),m=s(15007),u=s(15215),x=s(22358),p=s(78278),g=s(48510),h=s(48166),f=s(68206),b=s(32457),j=s(36843),y=s(44302),w=s(12875),v=s(61999),N=s(15183),k=s(3318),S=s(41655),A=s(69663),C=s(90034),T=s(66828),D=s(24028),E=s(67238),M=s(2959),$=s(64791),P=s(72852),R=s(78070),U=s(46518),q=s(86135),F=s(26233),I=s(65066),L=s(28011),O=s(25654),_=s(18833),z=s(43106),H=s(97019),K=s(1641);function W({...e}){return(0,r.jsx)(K.bL,{"data-slot":"popover",...e})}function Z({...e}){return(0,r.jsx)(K.l9,{"data-slot":"popover-trigger",...e})}function V({className:e,align:t="center",sideOffset:s=4,...n}){return(0,r.jsx)(K.ZL,{children:(0,r.jsx)(K.UC,{"data-slot":"popover-content",align:t,sideOffset:s,className:(0,_.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...n})})}var G=s(69745),B=s(94002),Q=s(93058),J=s(59727),Y=s(72202),X=s(42130);let ee=[{label:"Discuss",command:"/gsd discuss",icon:o.A,description:"Start guided milestone/slice discussion",category:"workflow",disabledDuringAuto:!0},{label:"Next",command:"/gsd next",icon:l.A,description:"Execute next task, then pause",category:"workflow"},{label:"Auto",command:"/gsd auto",icon:i.A,description:"Run all queued units continuously",category:"workflow"},{label:"Stop",command:"/gsd stop",icon:d.A,description:"Stop auto-mode gracefully",category:"workflow"},{label:"Pause",command:"/gsd pause",icon:c.A,description:"Pause auto-mode (preserves state)",category:"workflow"},{label:"Status",command:"/gsd status",icon:m.A,description:"Show progress dashboard",category:"visibility"},{label:"Visualize",command:"/gsd visualize",icon:u.A,description:"Interactive TUI (progress, deps, metrics, timeline)",category:"visibility"},{label:"Queue",command:"/gsd queue",icon:x.A,description:"Show queued/dispatched units and execution order",category:"visibility"},{label:"History",command:"/gsd history",icon:p.A,description:"View execution history with cost/phase/model details",category:"visibility"},{label:"Steer",command:"/gsd steer",icon:g.A,description:"Apply user override to active work",category:"correction"},{label:"Capture",command:"/gsd capture",icon:h.A,description:"Quick-capture a thought to CAPTURES.md",category:"correction"},{label:"Triage",command:"/gsd triage",icon:f.A,description:"Classify and route pending captures",category:"correction",disabledDuringAuto:!0},{label:"Skip",command:"/gsd skip",icon:b.A,description:"Prevent a unit from auto-mode dispatch",category:"correction"},{label:"Undo",command:"/gsd undo",icon:j.A,description:"Revert last completed unit",category:"correction"},{label:"Knowledge",command:"/gsd knowledge",icon:y.A,description:"Add rule, pattern, or lesson to KNOWLEDGE.md",category:"knowledge"},{label:"Mode",command:"/gsd mode",icon:w.A,description:"Set workflow mode (solo/team)",category:"config"},{label:"Prefs",command:"/gsd prefs",icon:v.A,description:"Manage preferences (global/project)",category:"config"},{label:"Doctor",command:"/gsd doctor",icon:N.A,description:"Diagnose and repair .gsd/ state",category:"maintenance"},{label:"Export",command:"/gsd export",icon:k.A,description:"Export milestone/slice results (JSON or Markdown)",category:"maintenance"},{label:"Cleanup",command:"/gsd cleanup",icon:S.A,description:"Remove merged branches or snapshots",category:"maintenance"},{label:"Remote",command:"/gsd remote",icon:A.A,description:"Control remote auto-mode (Slack/Discord)",category:"maintenance"}],et=ee.slice(0,3),es=ee.slice(3),er={workflow:"Workflow",visibility:"Visibility",correction:"Course Correction",knowledge:"Knowledge",config:"Configuration",maintenance:"Maintenance"};function en({className:e}){let t=(0,Q.gF)(),{sendCommand:s}=(0,Q._l)(),n=t.boot?.bridge??null,o=(0,a.useCallback)(e=>{s((0,Q.Sf)(e,n))},[s,n]);return(0,r.jsxs)("div",{className:(0,_.cn)("flex h-full flex-col overflow-hidden bg-background",e),children:[(0,r.jsx)(ea,{onPrimaryAction:o,onSecondaryAction:o}),(0,r.jsx)(ek,{sessionId:"gsd-main",command:"gsd",className:"flex-1",onOpenAction:e=>o(e.command)})]})}function ea({onPrimaryAction:e,onSecondaryAction:t}){let s=(0,Q.gF)(),n=s.boot,a=n?.workspace??null,o=n?.auto??null,i=(0,J.L)({phase:a?.active.phase??"pre-planning",autoActive:o?.active??!1,autoPaused:o?.paused??!1,onboardingLocked:n?.onboarding.locked??!1,commandInFlight:s.commandInFlight,bootStatus:s.bootStatus,hasMilestones:(a?.milestones.length??0)>0,stepMode:o?.stepMode??!1,projectDetectionKind:n?.projectDetection?.kind??null}),d=(()=>{if("ready"!==s.bootStatus)return s.bootStatus;let e=a?.active.phase;return e?o?.active&&!o?.paused?"auto":o?.paused?"paused":e:"idle"})();return(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-border bg-card px-4 py-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(C.A,{className:"h-4 w-4 text-muted-foreground"}),(0,r.jsx)("span",{className:"font-medium",children:"Chat Mode"}),(0,r.jsx)("span",{className:"rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground uppercase tracking-wide",children:d})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2","data-testid":"chat-mode-action-bar",children:[i.primary&&(0,r.jsxs)("button",{"data-testid":"chat-primary-action",onClick:()=>{i.primary&&e(i.primary.command)},disabled:i.disabled,className:(0,_.cn)("inline-flex items-center gap-1.5 rounded-md px-3 py-1 text-xs font-medium transition-colors","destructive"===i.primary.variant?"bg-destructive text-destructive-foreground hover:bg-destructive/90":"bg-primary text-primary-foreground hover:bg-primary/90",i.disabled&&"cursor-not-allowed opacity-50"),title:i.disabledReason,children:[s.commandInFlight?(0,r.jsx)(T.A,{className:"h-3 w-3 animate-spin"}):i.isNewMilestone?(0,r.jsx)(D.A,{className:"h-3 w-3"}):(0,r.jsx)(l.A,{className:"h-3 w-3"}),i.primary.label]}),i.secondaries.map(e=>(0,r.jsx)("button",{"data-testid":`chat-secondary-action-${e.command}`,onClick:()=>t(e.command),disabled:i.disabled,className:(0,_.cn)("inline-flex items-center gap-1 rounded-md border border-border bg-background px-2 py-1 text-xs font-medium transition-colors hover:bg-accent",i.disabled&&"cursor-not-allowed opacity-50"),title:i.disabledReason,children:e.label},e.command)),s.commandInFlight&&(0,r.jsx)("span",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:(0,r.jsx)(T.A,{className:"h-3 w-3 animate-spin"})})]})]})}let eo=null;function el({content:e}){let[t,n]=(0,a.useState)(null),[o,l]=(0,a.useState)(!1),i=eu();return((0,a.useEffect)(()=>{let t=!1;return Promise.all([Promise.all([s.e(1884),s.e(1571),s.e(8468)]).then(s.bind(s,58468)),Promise.all([s.e(1884),s.e(4605)]).then(s.bind(s,14605)),(!eo&&(eo=Promise.all([s.e(1571),s.e(9477)]).then(s.bind(s,19477)).then(e=>e.createHighlighter({themes:["github-dark-default","github-light-default"],langs:["typescript","tsx","javascript","jsx","json","jsonc","markdown","mdx","css","scss","less","html","xml","yaml","toml","bash","python","ruby","rust","go","java","kotlin","swift","c","cpp","csharp","php","sql","graphql","dockerfile","makefile","lua","diff","ini","dotenv"]})).catch(e=>{throw eo=null,e})),eo)]).then(([s,a,o])=>{if(t)return;let d=s.default,c=a.default,m=i?"github-dark-default":"github-light-default";n((0,r.jsx)(d,{remarkPlugins:[c],components:{code({className:e,children:t,...s}){let n=/language-(\w+)/.exec(e||""),a=String(t).replace(/\n$/,"");if(n)try{let e=o.codeToHtml(a,{lang:n[1],theme:m});return(0,r.jsx)("div",{className:"chat-code-block my-3 rounded-xl overflow-x-auto text-sm shadow-sm border border-border/50",dangerouslySetInnerHTML:{__html:e}})}catch{}return e||String(t).includes("\n")?(0,r.jsx)("pre",{className:(0,_.cn)("my-3 overflow-x-auto rounded-xl p-4 text-sm border border-border/50",i?"bg-[#0d1117]":"bg-[#f6f8fa]"),children:(0,r.jsx)("code",{className:"font-mono",children:t})}):(0,r.jsx)("code",{className:"rounded-md bg-muted px-1.5 py-0.5 text-[0.85em] font-mono text-foreground",...s,children:t})},pre:({children:e})=>(0,r.jsx)(r.Fragment,{children:e}),table:({children:e})=>(0,r.jsx)("div",{className:"my-4 overflow-x-auto rounded-lg border border-border",children:(0,r.jsx)("table",{className:"min-w-full border-collapse text-sm",children:e})}),th:({children:e})=>(0,r.jsx)("th",{className:"border-b border-border bg-muted/50 px-3 py-2 text-left text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:e}),td:({children:e})=>(0,r.jsx)("td",{className:"border-b border-border/50 px-3 py-2 text-sm last:border-0",children:e}),a:({href:e,children:t})=>(0,r.jsx)("a",{href:e,className:"text-info underline underline-offset-2 hover:text-info transition-colors",target:"_blank",rel:"noopener noreferrer",children:t}),h1:({children:e})=>(0,r.jsx)("h1",{className:"mt-4 mb-2 text-base font-semibold text-foreground first:mt-0",children:e}),h2:({children:e})=>(0,r.jsx)("h2",{className:"mt-3 mb-1.5 text-sm font-semibold text-foreground first:mt-0",children:e}),h3:({children:e})=>(0,r.jsx)("h3",{className:"mt-2 mb-1 text-sm font-medium text-foreground first:mt-0",children:e}),ul:({children:e})=>(0,r.jsx)("ul",{className:"my-2 ml-4 list-disc space-y-0.5 text-sm [&>li]:text-foreground",children:e}),ol:({children:e})=>(0,r.jsx)("ol",{className:"my-2 ml-4 list-decimal space-y-0.5 text-sm [&>li]:text-foreground",children:e}),blockquote:({children:e})=>(0,r.jsx)("blockquote",{className:"my-3 border-l-2 border-primary/40 pl-3 text-sm text-muted-foreground italic",children:e}),hr:()=>(0,r.jsx)("hr",{className:"my-4 border-border/50"}),p:({children:e})=>(0,r.jsx)("p",{className:"mb-2 text-sm leading-relaxed last:mb-0 text-foreground",children:e}),img:({alt:e,src:t})=>(0,r.jsxs)("span",{className:"my-2 block rounded-lg border border-border bg-muted/50 px-3 py-2 text-xs text-muted-foreground italic",children:["\uD83D\uDDBC ",e||t||"image"]})},children:e})),l(!0)}).catch(()=>{t||l(!0)}),()=>{t=!0}},[e,i]),o&&t)?(0,r.jsx)("div",{className:"chat-markdown min-w-0",children:t}):(0,r.jsx)("span",{className:"whitespace-pre-wrap text-sm leading-relaxed text-foreground",children:e})}function ei({prompt:e,onSubmit:t}){let[s,n]=(0,a.useState)(e.selectedIndex??0),[o,l]=(0,a.useState)(!1),i=(0,a.useRef)(null);(0,a.useEffect)(()=>{console.log("[TuiSelectPrompt] mounted kind=select label=%s",e.label),requestAnimationFrame(()=>i.current?.focus())},[e.label]);let d=(0,a.useCallback)(r=>{if(r<0||r>=e.options.length)return;let a=r-s,o="";a>0?o="\x1b[B".repeat(a):a<0&&(o="\x1b[A".repeat(Math.abs(a))),console.log("[TuiSelectPrompt] submit delta=%d keystrokes=%j",a,o+="\r"),n(r),l(!0),t(o)},[s,t,e.options.length]),c=(0,a.useCallback)(t=>{if(o)return;let r=(0,B.cZ)(t.key,s,e.options.length);if("none"!==r.type){if(t.preventDefault(),t.stopPropagation(),"select"===r.type)return void n(r.index);d(r.index)}},[o,s,e.options.length,d]);if(o){let t=e.options[s]??"";return(0,r.jsxs)("div",{"data-testid":"tui-prompt-submitted",className:"mt-2 flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:t})]})}return(0,r.jsxs)("div",{ref:i,"data-testid":"tui-select-prompt",tabIndex:0,onKeyDown:c,className:"mt-2 rounded-xl border border-border bg-background p-1.5 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":`Select: ${e.label}`,role:"listbox","aria-activedescendant":`tui-select-option-${s}`,children:[e.label&&(0,r.jsx)("p",{className:"mb-1.5 px-2 text-[11px] font-medium text-muted-foreground uppercase tracking-wide",children:e.label}),e.options.map((t,n)=>{let a=n===s,o=e.descriptions?.[n];return(0,r.jsxs)("button",{id:`tui-select-option-${n}`,"data-testid":`tui-select-option-${n}`,role:"option","aria-selected":a,onClick:()=>d(n),className:(0,_.cn)("flex w-full items-start gap-2 rounded-lg px-3 py-1.5 text-left text-sm transition-colors",a?"bg-primary/15 text-primary font-medium":"text-foreground hover:bg-muted"),children:[(0,r.jsx)("span",{className:"mt-0.5 flex h-4 w-4 flex-shrink-0 items-center justify-center font-mono text-[11px] text-muted-foreground",children:n+1}),(0,r.jsx)("span",{className:"mt-0.5 flex h-4 w-4 flex-shrink-0 items-center justify-center",children:a?(0,r.jsx)(E.A,{className:"h-3 w-3 text-primary"}):(0,r.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-muted-foreground/30"})}),(0,r.jsxs)("span",{className:"min-w-0",children:[(0,r.jsx)("span",{className:"block",children:t}),o&&(0,r.jsx)("span",{className:"mt-0.5 block text-xs font-normal text-muted-foreground",children:o})]})]},n)})]})}function ed({prompt:e,onSubmit:t}){let[s,n]=(0,a.useState)(""),[o,l]=(0,a.useState)(!1),i=(0,a.useRef)(null);(0,a.useEffect)(()=>{console.log("[TuiTextPrompt] mounted kind=text label=%s",e.label),i.current?.focus()},[e.label]);let d=(0,a.useCallback)(()=>{o||(console.log("[TuiTextPrompt] submitted label=%s",e.label),l(!0),t(s+"\r"))},[o,s,e.label,t]),c=(0,a.useCallback)(e=>{"Enter"===e.key&&(e.preventDefault(),d())},[d]);return o?(0,r.jsxs)("div",{"data-testid":"tui-prompt-submitted",className:"mt-2 flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:"✓ Submitted"})]}):(0,r.jsxs)("div",{"data-testid":"tui-text-prompt",className:"mt-2 rounded-xl border border-border bg-background p-3 shadow-sm",children:[e.label&&(0,r.jsx)("p",{className:"mb-2 text-[11px] font-medium text-muted-foreground uppercase tracking-wide",children:e.label}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(z.p,{ref:i,value:s,onChange:e=>n(e.target.value),onKeyDown:c,placeholder:"Type your answer…",className:"flex-1 h-8 text-sm","aria-label":e.label||"Text input"}),(0,r.jsx)("button",{onClick:d,disabled:!s.trim(),className:(0,_.cn)("flex h-8 items-center justify-center rounded-lg px-3 text-xs font-medium transition-[background-color,color,box-shadow,transform]",s.trim()?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]})]})}function ec({prompt:e,onSubmit:t}){let[s,n]=(0,a.useState)(""),[o,l]=(0,a.useState)(!1),[i,d]=(0,a.useState)(!1),c=(0,a.useRef)(null);(0,a.useEffect)(()=>{console.log("[TuiPasswordPrompt] mounted kind=password label=%s",e.label),c.current?.focus()},[e.label]);let m=(0,a.useCallback)(()=>{o||(console.log("[TuiPasswordPrompt] submitted label=%s",e.label),l(!0),t(s+"\r"))},[o,s,e.label,t]),u=(0,a.useCallback)(e=>{"Enter"===e.key&&(e.preventDefault(),m())},[m]);if(o){let t=e.label||"Value";return(0,r.jsxs)("div",{"data-testid":"tui-prompt-submitted",className:"mt-2 flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsxs)("span",{className:"font-medium",children:[t," — entered ✓"]})]})}return(0,r.jsxs)("div",{"data-testid":"tui-password-prompt",className:"mt-2 rounded-xl border border-border bg-background p-3 shadow-sm",children:[e.label&&(0,r.jsx)("p",{className:"mb-2 text-[11px] font-medium text-muted-foreground uppercase tracking-wide",children:e.label}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsxs)("div",{className:"relative flex-1",children:[(0,r.jsx)(z.p,{ref:c,type:i?"text":"password",value:s,onChange:e=>n(e.target.value),onKeyDown:u,placeholder:"Enter value…",className:"h-8 pr-9 text-sm","aria-label":e.label||"Password input",autoComplete:"off"}),(0,r.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":i?"Hide input":"Show input",className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-muted-foreground transition-colors",children:i?(0,r.jsx)(M.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)($.A,{className:"h-3.5 w-3.5"})})]}),(0,r.jsx)("button",{onClick:m,disabled:!s,className:(0,_.cn)("flex h-8 items-center justify-center rounded-lg px-3 text-xs font-medium transition-[background-color,color,box-shadow,transform]",s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]}),(0,r.jsx)("p",{className:"mt-1.5 text-[10px] text-muted-foreground",children:"Value is transmitted securely and not stored in chat history."})]})}function em(){return(0,r.jsx)("span",{"aria-hidden":"true",className:"ml-0.5 inline-block h-3.5 w-0.5 translate-y-0.5 rounded-full bg-current opacity-70",style:{animation:"chat-cursor 1s ease-in-out infinite"}})}function eu(){let[e,t]=(0,a.useState)(()=>"u">typeof document&&document.documentElement.classList.contains("dark"));return(0,a.useEffect)(()=>{if("u"<typeof document)return;let e=document.documentElement,s=new MutationObserver(()=>{t(e.classList.contains("dark"))});return s.observe(e,{attributes:!0,attributeFilter:["class"]}),()=>s.disconnect()},[]),e}function ex({className:e}){let t=eu();return(0,r.jsx)(n.default,{src:t?"/logo-icon-white.svg":"/logo-icon-black.svg",alt:"",width:24,height:32,unoptimized:!0,className:(0,_.cn)("h-4 w-auto",e)})}let ep=(0,a.memo)(function({content:e,isStreaming:t}){let[s,n]=(0,a.useState)(!1),o=(0,a.useRef)(null),l=e.split("\n").filter(e=>e.trim()),i=l.slice(-5),d=l.length>5;return(0,a.useEffect)(()=>{s&&t&&o.current&&(o.current.scrollTop=o.current.scrollHeight)},[s,t,e]),(0,r.jsx)("div",{className:"mb-3",children:(0,r.jsxs)("button",{onClick:()=>n(e=>!e),className:(0,_.cn)("group w-full rounded-xl border px-3.5 py-2.5 text-left transition-[background-color,border-color,box-shadow]","border-border/50 bg-muted/50 hover:bg-muted/50"),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[t?(0,r.jsxs)("span",{className:"relative flex h-2 w-2 flex-shrink-0",children:[(0,r.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-muted-foreground/30"}),(0,r.jsx)("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-muted-foreground/50"})]}):(0,r.jsx)("span",{className:"flex h-4 w-4 flex-shrink-0 items-center justify-center rounded bg-muted-foreground/10",children:(0,r.jsx)("span",{className:"text-[9px] text-muted-foreground",children:"\uD83D\uDCAD"})}),(0,r.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:t?"Thinking…":"Thought process"}),d&&!s&&(0,r.jsxs)("span",{className:"ml-1 rounded-full bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground",children:[l.length," lines"]}),(0,r.jsx)("span",{className:"ml-auto flex-shrink-0",children:s?(0,r.jsx)(P.A,{className:"h-3 w-3 text-muted-foreground transition-transform"}):(0,r.jsx)(R.A,{className:"h-3 w-3 text-muted-foreground transition-transform group-hover:text-muted-foreground"})})]}),!s&&(0,r.jsxs)("div",{className:"mt-2 space-y-0.5 border-l-2 border-muted-foreground/10 pl-3",children:[i.map((e,t)=>(0,r.jsx)("p",{className:"text-[12px] leading-relaxed text-muted-foreground line-clamp-1",children:e},t)),t&&(0,r.jsx)(em,{})]}),s&&(0,r.jsxs)("div",{ref:o,className:"mt-2 max-h-[400px] overflow-y-auto overscroll-contain rounded-lg border border-border/50 bg-background/50 p-3 text-[12px] leading-[1.7] text-muted-foreground whitespace-pre-wrap scrollbar-thin scrollbar-thumb-border scrollbar-track-transparent",children:[e,t&&(0,r.jsx)(em,{})]})]})})}),eg=(0,a.memo)(function({message:e,onSubmitPrompt:t,isThinking:s}){if("system"===e.role)return(0,r.jsx)("div",{className:"flex items-center justify-center py-1",children:(0,r.jsx)("span",{className:"text-[11px] text-muted-foreground italic px-3",children:e.content})});if("user"===e.role)return(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsxs)("div",{className:"max-w-[72%] rounded-2xl rounded-br-md bg-primary px-4 py-2.5 text-sm text-primary-foreground shadow-sm",children:[e.images&&e.images.length>0&&(0,r.jsx)("div",{className:"flex gap-1.5 mb-2 flex-wrap",children:e.images.map((e,t)=>(0,r.jsx)(n.default,{src:`data:${e.mimeType};base64,${e.data}`,alt:`Attached image ${t+1}`,width:32,height:32,unoptimized:!0,className:"h-8 w-8 rounded object-cover border border-primary-foreground/20"},t))}),(0,r.jsx)("span",{className:"whitespace-pre-wrap leading-relaxed",children:e.content}),!e.complete&&(0,r.jsx)(em,{})]})});let a=e.prompt?.kind==="select"&&!e.complete&&null!=t,o=e.prompt?.kind==="text"&&!e.complete&&null!=t,l=e.prompt?.kind==="password"&&!e.complete&&null!=t,i=a||o||l;return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"mt-1 flex-shrink-0 flex h-7 w-7 items-center justify-center rounded-full bg-card border border-border",children:(0,r.jsx)(ex,{className:"h-3.5 w-auto"})}),(0,r.jsxs)("div",{className:"max-w-[82%] min-w-0 rounded-2xl rounded-tl-md border border-border bg-card px-4 py-3 shadow-sm",children:[s&&!e.content&&(0,r.jsxs)("div",{className:"flex items-center gap-2 py-1",children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-muted-foreground/30"}),(0,r.jsx)("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-muted-foreground/50"})]}),(0,r.jsx)("span",{className:"text-[10px] font-medium text-muted-foreground uppercase tracking-wider",children:"Thinking…"})]}),e.content&&(e.complete?(0,r.jsx)(el,{content:e.content}):(0,r.jsx)("span",{className:"whitespace-pre-wrap text-sm leading-relaxed text-foreground",children:e.content})),!e.complete&&!i&&(0,r.jsx)(em,{}),a&&(0,r.jsx)(ei,{prompt:e.prompt,onSubmit:t}),o&&(0,r.jsx)(ed,{prompt:e.prompt,onSubmit:t}),l&&(0,r.jsx)(ec,{prompt:e.prompt,onSubmit:t})]})]})});function eh({onSendInput:e,connected:t,onOpenAction:s}){let o=(0,Q.gF)().boot?.auto?.active??!1,[l,i]=(0,a.useState)(""),[d,c]=(0,a.useState)(!1),[m,u]=(0,a.useState)([]),[x,p]=(0,a.useState)(!1),[g,h]=(0,a.useState)(null),f=(0,a.useRef)(null),b=(0,a.useRef)(0);(0,a.useEffect)(()=>()=>{m.forEach(e=>URL.revokeObjectURL(e.previewUrl))},[]);let j=(0,a.useCallback)(async e=>{h(null);let t=e.filter(e=>e.type.startsWith("image/"));if(0===t.length)return;u(e=>(G.wN-e.length<=0&&h(`Maximum ${G.wN} images per message`),e));let s=m.length,r=t.slice(0,G.wN-s);r.length<t.length&&h(`Maximum ${G.wN} images per message`);let n=[];for(let e of r)try{let t=await (0,G.zF)(e),s=URL.createObjectURL(e);n.push({id:(0,G.Aw)(),data:t.data,mimeType:t.mimeType,previewUrl:s})}catch(e){console.warn("[chat-input] image processing failed:",e instanceof Error?e.message:e),h(e instanceof Error?e.message:"Failed to process image")}n.length>0&&u(e=>{let t=[...e,...n];return t.length>G.wN?(t.slice(G.wN).forEach(e=>URL.revokeObjectURL(e.previewUrl)),h(`Maximum ${G.wN} images per message`),t.slice(0,G.wN)):t})},[m.length]),y=(0,a.useCallback)(e=>{u(t=>{let s=t.find(t=>t.id===e);return s&&URL.revokeObjectURL(s.previewUrl),t.filter(t=>t.id!==e)}),h(null)},[]),w=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),p(!1),b.current=0,j(Array.from(e.dataTransfer.files))},[j]),v=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),N=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),b.current+=1,p(!0)},[]),k=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),b.current-=1,b.current<=0&&(b.current=0,p(!1))},[]),S=(0,a.useCallback)(e=>{let t=e.clipboardData?.files;if(t&&t.length>0){let s=Array.from(t).filter(e=>e.type.startsWith("image/"));s.length>0&&(e.preventDefault(),j(s))}},[j]),A=(0,a.useCallback)(()=>{!l.trim()&&0===m.length||t&&(e(l+"\r",m.length>0?m:void 0),i(""),u([]),h(null),f.current&&(f.current.style.height="auto"))},[l,t,e,m]),C=(0,a.useCallback)(e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),A())},[A]),T=(0,a.useCallback)(e=>{i(e.target.value);let t=e.target;t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,160)}px`},[]),D=l.trim().length>0||m.length>0,E=(0,a.useMemo)(()=>(function(e){let t=new Map;for(let s of e){let e=t.get(s.category);e||(e=[],t.set(s.category,e)),e.push(s)}return Array.from(t.entries()).map(([e,t])=>({category:e,label:er[e],items:t}))})(es),[]);return(0,r.jsx)("div",{className:"flex-shrink-0 border-t border-border bg-card px-4 py-3 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"flex items-end gap-2",onDrop:w,onDragOver:v,onDragEnter:N,onDragLeave:k,children:[(0,r.jsxs)("div",{className:(0,_.cn)("flex flex-1 flex-col rounded-xl border bg-background transition-colors",t?"border-border focus-within:ring-1 focus-within:ring-border/30":"border-border/50 opacity-80",x&&t&&"border-primary/60 ring-2 ring-primary/20 bg-primary/5"),children:[m.length>0&&(0,r.jsxs)("div",{className:"flex items-center gap-2 px-3 pt-2.5 pb-1 flex-wrap",children:[m.map(e=>(0,r.jsxs)("div",{className:"relative group flex-shrink-0",children:[(0,r.jsx)(n.default,{src:e.previewUrl,alt:"Pending image",width:48,height:48,unoptimized:!0,className:"h-12 w-12 rounded-lg object-cover border border-border/50"}),(0,r.jsx)("button",{onClick:()=>y(e.id),"aria-label":"Remove image",className:"absolute -top-1.5 -right-1.5 flex h-4 w-4 items-center justify-center rounded-full bg-destructive text-destructive-foreground text-[10px] opacity-0 group-hover:opacity-100 transition-opacity shadow-sm",children:(0,r.jsx)(U.A,{className:"h-2.5 w-2.5"})})]},e.id)),g&&(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground italic",children:g})]}),(0,r.jsxs)("div",{className:"flex items-end gap-2",children:[(0,r.jsx)("textarea",{ref:f,value:l,onChange:T,onKeyDown:C,onPaste:S,disabled:!t,rows:1,"aria-label":"Send message",placeholder:t?"Message…":"Connecting…",className:"min-h-[40px] flex-1 resize-none bg-transparent px-3 py-2.5 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none disabled:cursor-not-allowed disabled:text-muted-foreground",style:{height:"40px",maxHeight:"160px",overflowY:"auto"}}),(0,r.jsxs)("div",{className:"flex flex-shrink-0 items-end pb-1.5 pr-1.5 gap-1",children:[!t&&(0,r.jsx)("span",{className:"px-2 py-1 text-[10px] font-medium text-muted-foreground uppercase tracking-wide",children:"Disconnected"}),(0,r.jsx)("button",{onClick:A,disabled:!t||!D,"aria-label":"Send",className:(0,_.cn)("flex h-7 w-7 items-center justify-center rounded-lg transition-[background-color,color,box-shadow,transform]",D&&t?"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90 active:scale-[0.96]":"bg-muted text-muted-foreground cursor-not-allowed"),children:(0,r.jsx)(q.A,{className:"h-3.5 w-3.5"})})]})]})]}),s&&(0,r.jsxs)(H.Bc,{delayDuration:300,children:[et.map(e=>{let t=e.icon,n=e.disabledDuringAuto&&o;return(0,r.jsxs)(H.m_,{children:[(0,r.jsx)(H.k$,{asChild:!0,children:(0,r.jsxs)("button",{onClick:()=>s(e),disabled:n,"aria-label":e.description,className:(0,_.cn)("flex flex-shrink-0 items-center justify-center gap-1.5 rounded-xl border border-border bg-background px-3 py-2.5 text-xs font-medium text-foreground transition-colors hover:bg-accent",n&&"cursor-not-allowed opacity-40"),children:[(0,r.jsx)(t,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.label]})}),(0,r.jsxs)(H.ZI,{side:"top",sideOffset:6,children:[(0,r.jsx)("p",{className:"font-medium",children:e.label}),(0,r.jsx)("p",{className:"text-[10px] opacity-80",children:n?"Disabled while auto-mode is running":e.description})]})]},e.command)}),(0,r.jsxs)(W,{open:d,onOpenChange:c,children:[(0,r.jsxs)(H.m_,{children:[(0,r.jsx)(H.k$,{asChild:!0,children:(0,r.jsx)(Z,{asChild:!0,children:(0,r.jsx)("button",{"aria-label":"More GSD commands",className:(0,_.cn)("flex flex-shrink-0 items-center justify-center rounded-xl border border-border bg-background p-2.5 text-foreground transition-colors hover:bg-accent",d&&"bg-accent"),children:(0,r.jsx)(F.A,{className:"h-4 w-4 text-muted-foreground"})})})}),!d&&(0,r.jsx)(H.ZI,{side:"top",sideOffset:6,children:"More commands"})]}),(0,r.jsx)(V,{side:"top",align:"end",sideOffset:8,className:"w-64 max-h-[420px] overflow-y-auto rounded-xl border border-border bg-popover p-2 shadow-lg",children:E.map((e,t)=>(0,r.jsxs)("div",{children:[t>0&&(0,r.jsx)("div",{className:"my-1.5 border-t border-border/50"}),(0,r.jsx)("p",{className:"px-2 py-1 text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",children:e.label}),e.items.map(e=>{let t=e.icon,n=e.disabledDuringAuto&&o;return(0,r.jsxs)(H.m_,{children:[(0,r.jsx)(H.k$,{asChild:!0,children:(0,r.jsxs)("button",{onClick:()=>{n||(c(!1),s(e))},disabled:n,className:(0,_.cn)("flex w-full items-center gap-2.5 rounded-lg px-2 py-1.5 text-left text-sm text-foreground transition-colors hover:bg-accent",n&&"cursor-not-allowed opacity-40"),children:[(0,r.jsx)(t,{className:"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground"}),(0,r.jsx)("span",{className:"flex-1 truncate",children:e.label})]})}),(0,r.jsxs)(H.ZI,{side:"left",sideOffset:8,children:[(0,r.jsx)("p",{className:"font-medium",children:e.label}),(0,r.jsx)("p",{className:"text-[10px] opacity-80",children:n?"Disabled while auto-mode is running":e.description})]})]},e.command)})]},e.category))})]})]})]})})}function ef({connected:e,runningLabel:t,notice:s,primaryAction:n,onPrimaryAction:a}){let o=e&&!!t;return(0,r.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center text-center py-16",children:[(0,r.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-full border border-border bg-card",children:o?(0,r.jsx)(T.A,{className:"h-5 w-5 animate-spin text-muted-foreground"}):(0,r.jsx)(C.A,{className:"h-6 w-6 text-muted-foreground"})}),(0,r.jsxs)("div",{className:"mt-3 space-y-1",children:[(0,r.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Chat Mode"}),o?(0,r.jsxs)("p",{className:"max-w-xs text-xs text-muted-foreground",children:["Running ",t,"…"]}):s?(0,r.jsx)("p",{className:"max-w-xs text-xs text-muted-foreground",children:s}):e?n&&a?(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsxs)("button",{onClick:a,className:"inline-flex items-center gap-2 rounded-xl border border-border bg-background px-5 py-2.5 text-sm font-medium text-foreground transition-[background-color,transform] hover:bg-accent active:scale-[0.96]",children:[(0,r.jsx)(n.icon,{className:"h-4 w-4 text-muted-foreground"}),n.label]})}):(0,r.jsx)("p",{className:"max-w-xs text-xs text-muted-foreground",children:"Connected — waiting for GSD output…"}):(0,r.jsx)("p",{className:"max-w-xs text-xs text-muted-foreground",children:"Connecting to GSD session…"})]})]})}function eb({request:e}){let{respondToUiRequest:t,dismissUiRequest:s}=(0,Q._l)(),n="extension_ui_response"===(0,Q.gF)().commandInFlight,o=(0,a.useCallback)(s=>{t(e.id,s)},[t,e.id]),l=(0,a.useCallback)(()=>{s(e.id)},[s,e.id]);return(0,r.jsxs)("div",{className:"flex justify-start gap-3","data-testid":"inline-ui-request","data-request-id":e.id,children:[(0,r.jsx)("div",{className:"mt-1 flex-shrink-0 flex h-7 w-7 items-center justify-center rounded-full bg-card border border-border",children:(0,r.jsx)(ex,{className:"h-3.5 w-auto"})}),(0,r.jsxs)("div",{className:"max-w-[82%] min-w-0 rounded-2xl rounded-tl-md border border-border bg-card px-4 py-3 shadow-sm",children:[e.title&&(0,r.jsx)("p",{className:"mb-2.5 text-sm font-medium text-foreground",children:e.title}),"select"===e.method&&(0,r.jsx)(ej,{request:e,onSubmit:o,disabled:n}),"confirm"===e.method&&(0,r.jsx)(ey,{request:e,onSubmit:o,onDismiss:l,disabled:n}),"input"===e.method&&(0,r.jsx)(ew,{request:e,onSubmit:o,disabled:n}),"editor"===e.method&&(0,r.jsx)(ev,{request:e,onSubmit:o,disabled:n})]})]})}function ej({request:e,onSubmit:t,disabled:s}){let n=!!e.allowMultiple,[o,l]=(0,a.useState)(()=>(0,B.cv)(0,e.options.length)),[i,d]=(0,a.useState)(()=>new Set),[c,m]=(0,a.useState)(!1),u=(0,a.useRef)(null);(0,a.useEffect)(()=>{n||requestAnimationFrame(()=>u.current?.focus())},[n]);let x=(0,a.useCallback)(()=>{m(!0),t({value:n?Array.from(i):e.options[o]})},[n,i,t,e.options,o]),p=(0,a.useCallback)(r=>{let n=e.options[r];n&&!s&&(l(r),m(!0),t({value:n}))},[s,t,e.options]),g=(0,a.useCallback)(t=>{if(s||c)return;let r=(0,B.cZ)(t.key,o,e.options.length);if("none"!==r.type){if(t.preventDefault(),t.stopPropagation(),"select"===r.type)return void l(r.index);p(r.index)}},[s,e.options.length,o,c,p]);if(c){let t=n?`${i.size} selected`:e.options[o]??"";return(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:t})]})}let h=n?i.size>0:o>=0;return n?(0,r.jsxs)("div",{className:"space-y-1.5",children:[e.options.map((e,t)=>{let n=i.has(e);return(0,r.jsxs)("button",{onClick:()=>{let t=new Set(i);n?t.delete(e):t.add(e),d(t)},disabled:s,className:(0,_.cn)("flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm transition-colors",n?"bg-primary/15 text-primary font-medium":"text-foreground hover:bg-muted"),children:[(0,r.jsx)("span",{className:"flex h-4 w-4 flex-shrink-0 items-center justify-center rounded border border-border",children:n&&(0,r.jsx)(E.A,{className:"h-2.5 w-2.5 text-primary"})}),(0,r.jsx)("span",{children:e})]},t)}),(0,r.jsx)("button",{onClick:x,disabled:s||!h,className:(0,_.cn)("mt-2 flex w-full items-center justify-center rounded-lg px-3 py-2 text-xs font-medium transition-[background-color,color,box-shadow,transform]",h&&!s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:n?`Submit (${i.size})`:"Submit"})]}):(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)("div",{ref:u,role:"listbox",tabIndex:0,"aria-activedescendant":o>=0?`inline-select-option-${e.id}-${o}`:void 0,onKeyDown:g,className:"space-y-1.5 rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-ring",children:e.options.map((t,n)=>{let a=n===o;return(0,r.jsxs)("button",{id:`inline-select-option-${e.id}-${n}`,type:"button",role:"option","aria-selected":a,onClick:()=>p(n),disabled:s,className:(0,_.cn)("flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",a?"bg-primary/15 text-primary font-medium":"text-foreground hover:bg-muted",s&&"cursor-not-allowed opacity-60"),children:[(0,r.jsx)("span",{className:"w-4 shrink-0 text-center font-mono text-[11px] text-muted-foreground",children:n+1}),(0,r.jsx)("span",{className:"min-w-0 flex-1",children:t}),a&&(0,r.jsx)(E.A,{className:"h-3 w-3 shrink-0 text-primary"})]},n)})}),(0,r.jsx)("button",{onClick:x,disabled:s||!h,className:(0,_.cn)("mt-2 flex w-full items-center justify-center rounded-lg px-3 py-2 text-xs font-medium transition-[background-color,color,box-shadow,transform]",h&&!s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]})}function ey({request:e,onSubmit:t,onDismiss:s,disabled:n}){let[o,l]=(0,a.useState)(null);return null!==o?(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:o?"Confirmed":"Cancelled"})]}):(0,r.jsxs)("div",{className:"space-y-2.5",children:[(0,r.jsx)("p",{className:"text-sm text-foreground leading-relaxed",children:e.message}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{onClick:()=>{l(!0),t({value:!0})},disabled:n,className:"flex-1 rounded-lg bg-primary px-3 py-2 text-xs font-medium text-primary-foreground shadow-sm transition-[background-color,box-shadow,transform] hover:bg-primary/90 active:scale-[0.96]",children:"Confirm"}),(0,r.jsx)("button",{onClick:()=>{l(!1),s()},disabled:n,className:"flex-1 rounded-lg border border-border bg-background px-3 py-2 text-xs font-medium text-foreground hover:bg-accent transition-colors",children:"Cancel"})]})]})}function ew({request:e,onSubmit:t,disabled:s}){let[n,o]=(0,a.useState)(""),[l,i]=(0,a.useState)(!1),d=(0,a.useRef)(null);if((0,a.useEffect)(()=>{d.current?.focus()},[]),l)return(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:"Submitted"})]});let c=()=>{n.trim()&&!s&&(i(!0),t({value:n}))};return(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(z.p,{ref:d,value:n,onChange:e=>o(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),c())},placeholder:e.placeholder||"Type your answer…",disabled:s,className:"flex-1 h-8 text-sm"}),(0,r.jsx)("button",{onClick:c,disabled:s||!n.trim(),className:(0,_.cn)("flex h-8 items-center justify-center rounded-lg px-3 text-xs font-medium transition-[background-color,color,box-shadow,transform]",n.trim()&&!s?"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96] shadow-sm":"bg-muted text-muted-foreground cursor-not-allowed"),children:"Submit"})]})}function ev({request:e,onSubmit:t,disabled:s}){let[n,o]=(0,a.useState)(e.prefill||""),[l,i]=(0,a.useState)(!1);return l?(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg bg-primary/10 px-3 py-2 text-sm text-primary",children:[(0,r.jsx)(E.A,{className:"h-3.5 w-3.5 flex-shrink-0"}),(0,r.jsx)("span",{className:"font-medium",children:"Submitted"})]}):(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("textarea",{value:n,onChange:e=>o(e.target.value),disabled:s,className:"w-full min-h-[120px] rounded-lg border border-border bg-background px-3 py-2 text-sm font-mono focus:outline-none focus:ring-1 focus:ring-border/30 resize-y",autoFocus:!0}),(0,r.jsx)("button",{onClick:()=>{i(!0),t({value:n})},disabled:s,className:"flex w-full items-center justify-center rounded-lg bg-primary px-3 py-2 text-xs font-medium text-primary-foreground shadow-sm transition-[background-color,box-shadow,transform] hover:bg-primary/90 active:scale-[0.96]",children:"Submit"})]})}let eN=(0,a.memo)(function({tool:e}){let[t,s]=(0,a.useState)(!1),n=(0,a.useRef)(!1),o="string"==typeof e.name?e.name.toLowerCase():"",l="string"==typeof e.args?.path?e.args.path:"string"==typeof e.args?.file_path?e.args.file_path:null,i=l?l.startsWith(X.env.HOME??"/Users")?"~"+l.slice((X.env.HOME??"").length):l:null,d=e.result?.isError??!1,c=e.result?.details?.diff,m="edit"===o?(0,r.jsx)(I.A,{className:"h-3.5 w-3.5"}):"write"===o?(0,r.jsx)(L.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)(O.A,{className:"h-3.5 w-3.5"}),u="edit"===o?"Edit":"write"===o?"Write":"bash"===o?"$":e.name,x="bash"===o&&"string"==typeof e.args?.command?e.args.command:null,p=e.result?.content?.filter(e=>"text"===e.type&&e.text).map(e=>e.text).join("\n")??"";return(0,a.useEffect)(()=>{if(n.current||!(c||p.trim()||d))return;n.current=!0;let e=requestAnimationFrame(()=>s(!0));return()=>cancelAnimationFrame(e)},[c,p,d]),(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0 w-full",children:(0,r.jsxs)("button",{onClick:()=>s(e=>!e),className:(0,_.cn)("w-full rounded-lg border px-3 py-2 text-left text-xs transition-colors",d?"border-destructive/30 bg-destructive/5 hover:bg-destructive/10":"border-border/50 bg-muted/50 hover:bg-muted/50"),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:(0,_.cn)("flex-shrink-0",d?"text-destructive":"text-muted-foreground"),children:m}),(0,r.jsx)("span",{className:(0,_.cn)("font-mono font-medium",d?"text-destructive":"text-muted-foreground"),children:u}),i&&(0,r.jsx)("span",{className:"truncate font-mono text-info/80",children:i}),x&&!i&&(0,r.jsx)("span",{className:"truncate font-mono text-muted-foreground",children:x.length>60?x.slice(0,60)+"…":x}),(0,r.jsx)("span",{className:"ml-auto flex-shrink-0 text-muted-foreground",children:t?(0,r.jsx)(P.A,{className:"h-3 w-3"}):(0,r.jsx)(R.A,{className:"h-3 w-3"})})]}),t&&c&&(0,r.jsx)("div",{className:"mt-2 overflow-x-auto rounded-md border border-border/50 bg-background p-2 font-mono text-[11px] leading-relaxed",children:c.split("\n").map((e,t)=>{let s=e.startsWith("+"),n=e.startsWith("-"),a=e.startsWith(" ");return(0,r.jsx)("div",{className:(0,_.cn)("whitespace-pre",s&&"bg-success/10 text-success",n&&"bg-destructive/10 text-destructive",a&&"text-muted-foreground",!s&&!n&&!a&&"text-muted-foreground"),children:e},t)})}),t&&!c&&p&&(0,r.jsx)("div",{className:"mt-2 max-h-[200px] overflow-y-auto rounded-md border border-border/50 bg-background p-2 font-mono text-[11px] leading-relaxed text-muted-foreground whitespace-pre-wrap",children:p.length>2e3?p.slice(0,2e3)+"\n…":p}),t&&d&&p&&(0,r.jsx)("div",{className:"mt-2 rounded-md border border-destructive/20 bg-destructive/5 p-2 text-[11px] text-destructive whitespace-pre-wrap",children:p})]})})]})});function ek({className:e,onOpenAction:t}){let s=(0,Q.gF)(),{submitInput:n,sendCommand:o,pushChatUserMessage:c}=(0,Q._l)(),[m]=(0,Y.A)(),[u]=(0,a.useState)(()=>Date.now()),x="connected"===s.connectionState,p=s.boot?.bridge.sessionState?.isStreaming??!1,g=s.boot?.bridge??null,h=(0,J.L)({phase:s.boot?.workspace?.active.phase??"pre-planning",autoActive:s.boot?.auto?.active??!1,autoPaused:s.boot?.auto?.paused??!1,onboardingLocked:s.boot?.onboarding.locked??!1,commandInFlight:s.commandInFlight,bootStatus:s.bootStatus,hasMilestones:(s.boot?.workspace?.milestones.length??0)>0,stepMode:s.boot?.auto?.stepMode??!1,projectDetectionKind:s.boot?.projectDetection?.kind??null}),f=(0,a.useMemo)(()=>{if(!h.primary||h.disabled)return null;let e=h.primary,t={"/gsd stop":d.A,"/gsd auto":i.A,"/gsd next":l.A};return{label:e.label,icon:t[e.command]??("New Milestone"===e.label?D.A:l.A)}},[h]),b=(0,a.useCallback)(()=>{h.primary&&o((0,Q.Sf)(h.primary.command,g))},[h,o,g]),j=(0,a.useCallback)((e,t)=>{let s=e.replace(/\r$/,"").trim();(s||t&&0!==t.length)&&(c({id:"u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:"user",content:s,complete:!0,timestamp:Date.now(),images:t?.map(e=>({data:e.data,mimeType:e.mimeType}))}),n(s,t))},[n,c]),y=(0,a.useMemo)(()=>{let e=[],t=s.liveTranscript,r=s.completedTurnSegments,n=s.chatUserMessages;for(let s=0;s<Math.max(n.length,t.length);s++)if(s<n.length&&e.push({kind:"message",message:n[s]}),s<r.length&&r[s].length>0)for(let t of r[s])"thinking"===t.kind?e.push({kind:"thinking",content:t.content,id:`turn-${s}-thinking-${e.length}`}):"text"===t.kind?e.push({kind:"message",message:{id:`turn-${s}-text-${e.length}`,role:"assistant",content:t.content,complete:!0,timestamp:s+1}}):"tool"===t.kind&&e.push({kind:"tool",tool:t.tool});else s<t.length&&t[s].trim()&&e.push({kind:"message",message:{id:`transcript-${s}`,role:"assistant",content:t[s],complete:!0,timestamp:s+1}});return e},[s.liveTranscript,s.completedTurnSegments,s.chatUserMessages]),w=(0,a.useMemo)(()=>{let e=[];for(let t of s.currentTurnSegments)"thinking"===t.kind?e.push({kind:"thinking",content:t.content,id:`current-thinking-${e.length}`}):"text"===t.kind?e.push({kind:"message",message:{id:`current-text-${e.length}`,role:"assistant",content:t.content,complete:!0,timestamp:u}}):"tool"===t.kind&&e.push({kind:"tool",tool:t.tool});for(let t of(s.activeToolExecution&&e.push({kind:"active-tool",tool:s.activeToolExecution}),s.streamingThinkingText.length>0&&e.push({kind:"streaming-thinking",content:s.streamingThinkingText}),s.streamingAssistantText.length>0&&e.push({kind:"streaming-message",content:s.streamingAssistantText,isThinking:!1}),0===s.streamingThinkingText.length&&0===s.streamingAssistantText.length&&!s.activeToolExecution&&p&&0===s.currentTurnSegments.length&&e.push({kind:"streaming-message",content:"",isThinking:!0}),s.pendingUiRequests))e.push({kind:"ui-request",request:t});return e},[s.currentTurnSegments,s.streamingAssistantText,s.streamingThinkingText,s.activeToolExecution,s.pendingUiRequests,p,u]),v=(0,a.useCallback)(e=>{n(e.replace(/\r$/,""))},[n]),N=y.length>0||w.length>0,k=(0,a.useCallback)(e=>{switch(e.kind){case"message":return(0,r.jsx)(eg,{message:e.message,onSubmitPrompt:v},e.message.id);case"thinking":return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0",children:(0,r.jsx)(ep,{content:e.content,isStreaming:!1})})]},e.id);case"streaming-thinking":return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0",children:(0,r.jsx)(ep,{content:e.content,isStreaming:!0})})]},"streaming-thinking");case"streaming-message":return(0,r.jsx)(eg,{message:{id:"streaming-current",role:"assistant",content:e.content,complete:!1,timestamp:u},isThinking:e.isThinking},"streaming-message");case"tool":return(0,r.jsx)(eN,{tool:e.tool},e.tool.id);case"active-tool":return(0,r.jsxs)("div",{className:"flex justify-start gap-3",children:[(0,r.jsx)("div",{className:"w-7 flex-shrink-0"}),(0,r.jsx)("div",{className:"max-w-[82%] min-w-0",children:(0,r.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border/50 bg-muted/50 px-3.5 py-2",children:[(0,r.jsx)(T.A,{className:"h-3 w-3 animate-spin text-muted-foreground"}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:e.tool.name}),!!e.tool.args?.path&&(0,r.jsx)("span",{className:"font-mono text-xs text-info/80 truncate",children:String(e.tool.args?.path)})]})})]},`active-${e.tool.id}`);case"ui-request":return(0,r.jsx)(eb,{request:e.request},e.request.id)}},[v,u]),S=(0,a.useMemo)(()=>y.map(k),[y,k]),A=(0,a.useMemo)(()=>w.map(k),[w,k]),C=!N&&!p,E=x&&!p&&N&&!s.activeToolExecution&&0===s.pendingUiRequests.length,M=(0,a.useRef)(null),$=(0,a.useRef)(!0),P=(0,a.useCallback)(()=>{let e=M.current;e&&($.current=e.scrollHeight-e.scrollTop-e.clientHeight<100)},[]);return(0,a.useEffect)(()=>{let e=M.current;e&&$.current&&(e.scrollTop=e.scrollHeight)},[y,w]),(0,r.jsxs)("div",{"data-testid":"chat-pane-store-driven",className:(0,_.cn)("flex flex-col overflow-hidden",e),children:[(0,r.jsx)("div",{className:"flex flex-1 flex-col overflow-hidden",children:C?(0,r.jsx)(ef,{connected:x,runningLabel:p?"responding":void 0,primaryAction:f,onPrimaryAction:b}):(0,r.jsxs)("div",{ref:M,onScroll:P,className:"flex-1 overflow-y-auto px-4 py-4 space-y-4",style:13!==m?{fontSize:`${m}px`}:void 0,children:[S,A,E&&(0,r.jsxs)("div",{className:"flex items-center gap-2 px-1 py-1 text-xs text-muted-foreground animate-in fade-in duration-500",children:[(0,r.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-emerald-500/70 animate-pulse"}),"Ready for your input"]}),(0,r.jsx)("div",{className:"h-2"})]})}),(0,r.jsx)(eh,{onSendInput:j,connected:x,onOpenAction:t})]})}}}]);