@opengsd/gsd-pi 1.1.1-dev.b2556262 → 1.2.0-dev.0b870afa

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 (934) hide show
  1. package/dist/cli-style.d.ts +17 -0
  2. package/dist/cli-style.js +28 -0
  3. package/dist/cli-web-branch.d.ts +2 -0
  4. package/dist/cli-web-branch.js +9 -2
  5. package/dist/cli.js +1 -1
  6. package/dist/headless-events.d.ts +4 -2
  7. package/dist/headless-events.js +14 -34
  8. package/dist/help-text.js +5 -0
  9. package/dist/mcp-server.js +2 -1
  10. package/dist/models-resolver.d.ts +3 -13
  11. package/dist/models-resolver.js +3 -22
  12. package/dist/project-sessions.js +4 -2
  13. package/dist/resource-loader.js +2 -14
  14. package/dist/resources/.managed-resources-content-hash +1 -1
  15. package/dist/resources/GSD-WORKFLOW.md +5 -4
  16. package/dist/resources/extensions/ask-user-questions.js +78 -23
  17. package/dist/resources/extensions/async-jobs/async-bash-tool.js +30 -64
  18. package/dist/resources/extensions/async-jobs/await-tool.js +80 -12
  19. package/dist/resources/extensions/async-jobs/index.js +65 -0
  20. package/dist/resources/extensions/async-jobs/job-manager.js +12 -1
  21. package/dist/resources/extensions/bg-shell/bg-shell-command.js +6 -6
  22. package/dist/resources/extensions/bg-shell/bg-shell-tool.js +10 -7
  23. package/dist/resources/extensions/bg-shell/overlay.js +9 -6
  24. package/dist/resources/extensions/bg-shell/process-manager.js +54 -25
  25. package/dist/resources/extensions/bg-shell/readiness-detector.js +11 -0
  26. package/dist/resources/extensions/bg-shell/utilities.js +5 -2
  27. package/dist/resources/extensions/browser-tools/engine/managed-gsd-browser.js +209 -88
  28. package/dist/resources/extensions/browser-tools/engine/selection.js +73 -5
  29. package/dist/resources/extensions/browser-tools/index.js +69 -12
  30. package/dist/resources/extensions/claude-code-cli/models.js +9 -0
  31. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +139 -243
  32. package/dist/resources/extensions/claude-code-cli/turn-assembler.js +224 -0
  33. package/dist/resources/extensions/github-sync/templates.js +3 -3
  34. package/dist/resources/extensions/gsd/artifact-projection.js +14 -0
  35. package/dist/resources/extensions/gsd/auto/contracts.js +8 -1
  36. package/dist/resources/extensions/gsd/auto/custom-verify-retry-store.js +17 -2
  37. package/dist/resources/extensions/gsd/auto/detect-stuck.js +33 -13
  38. package/dist/resources/extensions/gsd/auto/dispatch-history.js +105 -0
  39. package/dist/resources/extensions/gsd/auto/dispatch-key.js +37 -0
  40. package/dist/resources/extensions/gsd/auto/loop.js +77 -56
  41. package/dist/resources/extensions/gsd/auto/orchestrator.js +860 -96
  42. package/dist/resources/extensions/gsd/auto/phases.js +81 -8
  43. package/dist/resources/extensions/gsd/auto/run-unit.js +2 -1
  44. package/dist/resources/extensions/gsd/auto/session.js +6 -0
  45. package/dist/resources/extensions/gsd/auto-dashboard.js +16 -4
  46. package/dist/resources/extensions/gsd/auto-direct-dispatch.js +11 -34
  47. package/dist/resources/extensions/gsd/auto-dispatch.js +56 -63
  48. package/dist/resources/extensions/gsd/auto-model-selection.js +44 -13
  49. package/dist/resources/extensions/gsd/auto-post-unit.js +47 -17
  50. package/dist/resources/extensions/gsd/auto-prompts.js +271 -27
  51. package/dist/resources/extensions/gsd/auto-recovery.js +48 -49
  52. package/dist/resources/extensions/gsd/auto-runtime-state.js +17 -0
  53. package/dist/resources/extensions/gsd/auto-start.js +36 -49
  54. package/dist/resources/extensions/gsd/auto-timers.js +16 -2
  55. package/dist/resources/extensions/gsd/auto-tool-tracking.js +55 -0
  56. package/dist/resources/extensions/gsd/auto-unit-closeout.js +45 -21
  57. package/dist/resources/extensions/gsd/auto-unit-tool-scope.js +33 -37
  58. package/dist/resources/extensions/gsd/auto-verification.js +30 -37
  59. package/dist/resources/extensions/gsd/auto-worktree-repair.js +10 -2
  60. package/dist/resources/extensions/gsd/auto-worktree.js +67 -375
  61. package/dist/resources/extensions/gsd/auto.js +112 -486
  62. package/dist/resources/extensions/gsd/blocked-models.js +28 -0
  63. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +29 -8
  64. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +28 -37
  65. package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +43 -49
  66. package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +2 -2
  67. package/dist/resources/extensions/gsd/bootstrap/query-tools.js +2 -2
  68. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +19 -0
  69. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +319 -161
  70. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +365 -58
  71. package/dist/resources/extensions/gsd/branch-patterns.js +2 -0
  72. package/dist/resources/extensions/gsd/browser-daemon-auto-prep.js +83 -0
  73. package/dist/resources/extensions/gsd/browser-evidence.js +8 -2
  74. package/dist/resources/extensions/gsd/captures.js +5 -15
  75. package/dist/resources/extensions/gsd/closeout-consistency-gate.js +21 -4
  76. package/dist/resources/extensions/gsd/closeout-recovery.js +3 -2
  77. package/dist/resources/extensions/gsd/closeout-wizard.js +92 -0
  78. package/dist/resources/extensions/gsd/codebase-generator.js +8 -4
  79. package/dist/resources/extensions/gsd/commands/catalog.js +6 -62
  80. package/dist/resources/extensions/gsd/commands/context.js +16 -2
  81. package/dist/resources/extensions/gsd/commands/handlers/auto.js +3 -0
  82. package/dist/resources/extensions/gsd/commands-handlers.js +66 -3
  83. package/dist/resources/extensions/gsd/commands-inspect.js +4 -8
  84. package/dist/resources/extensions/gsd/commands-maintenance.js +61 -41
  85. package/dist/resources/extensions/gsd/commands-ship.js +2 -2
  86. package/dist/resources/extensions/gsd/commands-verdict.js +12 -2
  87. package/dist/resources/extensions/gsd/consent-question.js +353 -0
  88. package/dist/resources/extensions/gsd/consent-verdict.js +63 -0
  89. package/dist/resources/extensions/gsd/constants.js +0 -2
  90. package/dist/resources/extensions/gsd/crash-recovery.js +12 -15
  91. package/dist/resources/extensions/gsd/db/engine.js +755 -0
  92. package/dist/resources/extensions/gsd/db/queries.js +398 -0
  93. package/dist/resources/extensions/gsd/db/sql-constants.js +11 -0
  94. package/dist/resources/extensions/gsd/db/writers/cascades.js +194 -0
  95. package/dist/resources/extensions/gsd/db/writers/import-restore.js +182 -0
  96. package/dist/resources/extensions/gsd/db/writers/memory.js +149 -0
  97. package/dist/resources/extensions/gsd/db/writers/reconcile.js +458 -0
  98. package/dist/resources/extensions/gsd/db/writers/status.js +70 -0
  99. package/dist/resources/extensions/gsd/db-workspace.js +103 -0
  100. package/dist/resources/extensions/gsd/debug-logger.js +10 -0
  101. package/dist/resources/extensions/gsd/delegation-policy.js +2 -10
  102. package/dist/resources/extensions/gsd/discussion-handoff.js +218 -0
  103. package/dist/resources/extensions/gsd/dispatch-guard.js +10 -35
  104. package/dist/resources/extensions/gsd/docs/preferences-reference.md +9 -0
  105. package/dist/resources/extensions/gsd/doctor-engine-checks.js +5 -5
  106. package/dist/resources/extensions/gsd/doctor-environment.js +5 -11
  107. package/dist/resources/extensions/gsd/doctor-format.js +9 -6
  108. package/dist/resources/extensions/gsd/doctor-git-checks.js +6 -21
  109. package/dist/resources/extensions/gsd/doctor-proactive.js +7 -2
  110. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +21 -16
  111. package/dist/resources/extensions/gsd/doctor.js +16 -9
  112. package/dist/resources/extensions/gsd/engine-hook-contract.js +70 -0
  113. package/dist/resources/extensions/gsd/error-classifier.js +10 -1
  114. package/dist/resources/extensions/gsd/exec-sandbox.js +30 -10
  115. package/dist/resources/extensions/gsd/files.js +33 -19
  116. package/dist/resources/extensions/gsd/git-conflict-state.js +16 -1
  117. package/dist/resources/extensions/gsd/git-service.js +1 -0
  118. package/dist/resources/extensions/gsd/gitignore.js +3 -0
  119. package/dist/resources/extensions/gsd/gsd-command-home.js +22 -12
  120. package/dist/resources/extensions/gsd/gsd-db.js +184 -2048
  121. package/dist/resources/extensions/gsd/guidance.js +158 -0
  122. package/dist/resources/extensions/gsd/guided-flow.js +91 -476
  123. package/dist/resources/extensions/gsd/guided-unit-completion.js +225 -0
  124. package/dist/resources/extensions/gsd/markdown-renderer.js +43 -33
  125. package/dist/resources/extensions/gsd/mcp-filter.js +10 -20
  126. package/dist/resources/extensions/gsd/mcp-tool-name.js +18 -0
  127. package/dist/resources/extensions/gsd/md-importer.js +4 -3
  128. package/dist/resources/extensions/gsd/memory-consolidation-scanner.js +1 -1
  129. package/dist/resources/extensions/gsd/migrate/safety.js +22 -11
  130. package/dist/resources/extensions/gsd/migration-auto-check.js +27 -5
  131. package/dist/resources/extensions/gsd/milestone-closeout-proof.js +72 -0
  132. package/dist/resources/extensions/gsd/milestone-closeout.js +97 -28
  133. package/dist/resources/extensions/gsd/milestone-merge-transaction.js +10 -0
  134. package/dist/resources/extensions/gsd/milestone-planning-persistence.js +156 -0
  135. package/dist/resources/extensions/gsd/milestone-readiness.js +77 -0
  136. package/dist/resources/extensions/gsd/milestone-reopen-events.js +3 -5
  137. package/dist/resources/extensions/gsd/milestone-settlement.js +50 -0
  138. package/dist/resources/extensions/gsd/milestone-validation-evidence.js +73 -0
  139. package/dist/resources/extensions/gsd/milestone-validation-verdict.js +57 -0
  140. package/dist/resources/extensions/gsd/model-cost-table.js +1 -0
  141. package/dist/resources/extensions/gsd/model-router.js +3 -0
  142. package/dist/resources/extensions/gsd/native-git-bridge.js +45 -0
  143. package/dist/resources/extensions/gsd/notification-store.js +11 -4
  144. package/dist/resources/extensions/gsd/parallel-eligibility.js +3 -6
  145. package/dist/resources/extensions/gsd/parallel-merge.js +14 -11
  146. package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +11 -7
  147. package/dist/resources/extensions/gsd/parallel-orchestrator.js +3 -2
  148. package/dist/resources/extensions/gsd/parsers-legacy.js +16 -4
  149. package/dist/resources/extensions/gsd/paths.js +37 -24
  150. package/dist/resources/extensions/gsd/pre-execution-checks.js +91 -3
  151. package/dist/resources/extensions/gsd/preferences-diagnostics.js +67 -0
  152. package/dist/resources/extensions/gsd/preferences-models.js +14 -48
  153. package/dist/resources/extensions/gsd/preferences.js +161 -29
  154. package/dist/resources/extensions/gsd/projection-flush.js +7 -0
  155. package/dist/resources/extensions/gsd/prompts/complete-slice.md +4 -3
  156. package/dist/resources/extensions/gsd/prompts/discuss.md +6 -7
  157. package/dist/resources/extensions/gsd/prompts/execute-task.md +3 -1
  158. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +5 -7
  159. package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +6 -6
  160. package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +1 -2
  161. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +5 -6
  162. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +3 -1
  163. package/dist/resources/extensions/gsd/prompts/plan-slice.md +4 -3
  164. package/dist/resources/extensions/gsd/prompts/quick-task.md +1 -1
  165. package/dist/resources/extensions/gsd/prompts/reassess-roadmap.md +1 -1
  166. package/dist/resources/extensions/gsd/prompts/refine-slice.md +3 -2
  167. package/dist/resources/extensions/gsd/prompts/replan-slice.md +2 -2
  168. package/dist/resources/extensions/gsd/prompts/research-milestone.md +3 -3
  169. package/dist/resources/extensions/gsd/prompts/research-slice.md +1 -1
  170. package/dist/resources/extensions/gsd/prompts/rewrite-docs.md +1 -1
  171. package/dist/resources/extensions/gsd/prompts/run-uat.md +7 -5
  172. package/dist/resources/extensions/gsd/prompts/system.md +6 -3
  173. package/dist/resources/extensions/gsd/prompts/triage-captures.md +1 -1
  174. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +6 -4
  175. package/dist/resources/extensions/gsd/provider-error-guidance.js +1 -5
  176. package/dist/resources/extensions/gsd/provider-payload-policy.js +83 -0
  177. package/dist/resources/extensions/gsd/provider-switch-observer.js +1 -1
  178. package/dist/resources/extensions/gsd/publication.js +87 -0
  179. package/dist/resources/extensions/gsd/pull-request-process.js +13 -0
  180. package/dist/resources/extensions/gsd/quality-gate-closure.js +109 -0
  181. package/dist/resources/extensions/gsd/question-transport.js +86 -0
  182. package/dist/resources/extensions/gsd/reactive-graph.js +8 -1
  183. package/dist/resources/extensions/gsd/recovery-classification.js +41 -87
  184. package/dist/resources/extensions/gsd/roadmap-slices.js +33 -5
  185. package/dist/resources/extensions/gsd/safety/destructive-confirmation.js +108 -0
  186. package/dist/resources/extensions/gsd/safety/evidence-collector.js +37 -4
  187. package/dist/resources/extensions/gsd/safety/evidence-cross-ref.js +7 -2
  188. package/dist/resources/extensions/gsd/safety/file-change-validator.js +10 -0
  189. package/dist/resources/extensions/gsd/schemas/parsers.js +6 -1
  190. package/dist/resources/extensions/gsd/session-lock.js +1 -1
  191. package/dist/resources/extensions/gsd/slice-parallel-orchestrator.js +3 -2
  192. package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +21 -1
  193. package/dist/resources/extensions/gsd/state-transition-matrix.js +38 -0
  194. package/dist/resources/extensions/gsd/state.js +19 -25
  195. package/dist/resources/extensions/gsd/status-guards.js +56 -8
  196. package/dist/resources/extensions/gsd/stop-notice.js +57 -0
  197. package/dist/resources/extensions/gsd/templates/plan.md +7 -0
  198. package/dist/resources/extensions/gsd/templates/project.md +1 -0
  199. package/dist/resources/extensions/gsd/templates/roadmap.md +1 -1
  200. package/dist/resources/extensions/gsd/templates/uat.md +5 -1
  201. package/dist/resources/extensions/gsd/tool-contract.js +66 -11
  202. package/dist/resources/extensions/gsd/tool-presentation-plan.js +17 -36
  203. package/dist/resources/extensions/gsd/tool-surface-readiness.js +56 -0
  204. package/dist/resources/extensions/gsd/tool-surface-snapshot.js +17 -0
  205. package/dist/resources/extensions/gsd/tools/complete-milestone.js +3 -2
  206. package/dist/resources/extensions/gsd/tools/complete-slice.js +46 -55
  207. package/dist/resources/extensions/gsd/tools/complete-task.js +3 -2
  208. package/dist/resources/extensions/gsd/tools/exec-tool.js +10 -8
  209. package/dist/resources/extensions/gsd/tools/plan-milestone.js +15 -143
  210. package/dist/resources/extensions/gsd/tools/plan-slice.js +14 -8
  211. package/dist/resources/extensions/gsd/tools/plan-task.js +2 -2
  212. package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +41 -2
  213. package/dist/resources/extensions/gsd/tools/reopen-milestone.js +13 -31
  214. package/dist/resources/extensions/gsd/tools/reopen-slice.js +16 -35
  215. package/dist/resources/extensions/gsd/tools/reopen-task.js +2 -2
  216. package/dist/resources/extensions/gsd/tools/replan-slice.js +2 -2
  217. package/dist/resources/extensions/gsd/tools/skip-slice.js +18 -36
  218. package/dist/resources/extensions/gsd/tools/validate-milestone.js +15 -78
  219. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +236 -22
  220. package/dist/resources/extensions/gsd/uat-policy.js +57 -25
  221. package/dist/resources/extensions/gsd/uat-run.js +9 -14
  222. package/dist/resources/extensions/gsd/undo.js +8 -7
  223. package/dist/resources/extensions/gsd/unit-closeout.js +138 -0
  224. package/dist/resources/extensions/gsd/unit-context-composer.js +114 -21
  225. package/dist/resources/extensions/gsd/unit-context-manifest.js +4 -27
  226. package/dist/resources/extensions/gsd/unit-registry.js +337 -0
  227. package/dist/resources/extensions/gsd/unit-runtime.js +3 -2
  228. package/dist/resources/extensions/gsd/unit-tool-contracts.js +9 -181
  229. package/dist/resources/extensions/gsd/validation-block-guard.js +2 -0
  230. package/dist/resources/extensions/gsd/verdict-parser.js +1 -1
  231. package/dist/resources/extensions/gsd/verification-verdict.js +2 -1
  232. package/dist/resources/extensions/gsd/web-app-uat.js +117 -0
  233. package/dist/resources/extensions/gsd/workflow-event-ledger.js +91 -0
  234. package/dist/resources/extensions/gsd/workflow-event-vocabulary.js +46 -0
  235. package/dist/resources/extensions/gsd/workflow-events.js +6 -18
  236. package/dist/resources/extensions/gsd/workflow-mcp.js +15 -102
  237. package/dist/resources/extensions/gsd/workflow-reconcile.js +25 -59
  238. package/dist/resources/extensions/gsd/workflow-tool-surface.js +46 -0
  239. package/dist/resources/extensions/gsd/workspace-git-guard.js +2 -0
  240. package/dist/resources/extensions/gsd/worktree-git-recovery.js +293 -0
  241. package/dist/resources/extensions/gsd/worktree-lifecycle.js +12 -3
  242. package/dist/resources/extensions/gsd/worktree-manager.js +45 -28
  243. package/dist/resources/extensions/gsd/worktree-placement.js +59 -0
  244. package/dist/resources/extensions/gsd/worktree-reentry.js +12 -8
  245. package/dist/resources/extensions/gsd/worktree-root.js +28 -6
  246. package/dist/resources/extensions/gsd/worktree-safety.js +8 -5
  247. package/dist/resources/extensions/gsd/worktree-session-state.js +12 -11
  248. package/dist/resources/extensions/gsd/worktree-state-projection.js +33 -4
  249. package/dist/resources/extensions/gsd/worktree-telemetry.js +12 -0
  250. package/dist/resources/extensions/search-the-web/native-search.js +5 -3
  251. package/dist/resources/extensions/shared/browser-contract.js +59 -0
  252. package/dist/resources/extensions/shared/gsd-browser-cli.js +116 -6
  253. package/dist/resources/extensions/shared/interview-ui.js +2 -2
  254. package/dist/resources/shared/claude-runtime-floor.js +182 -0
  255. package/dist/resources/shared/gsd-browser-path-sync.js +214 -0
  256. package/dist/resources/shared/package-manager-detection.js +1 -1
  257. package/dist/resources/shared/package.json +3 -0
  258. package/dist/resources/skills/create-skill/references/executable-code.md +1 -1
  259. package/dist/resources/skills/create-skill/workflows/add-reference.md +8 -3
  260. package/dist/resources/skills/create-skill/workflows/add-script.md +4 -2
  261. package/dist/resources/skills/create-skill/workflows/add-template.md +3 -1
  262. package/dist/resources/skills/create-skill/workflows/add-workflow.md +8 -3
  263. package/dist/resources/skills/create-skill/workflows/upgrade-to-router.md +10 -5
  264. package/dist/resources/skills/create-skill/workflows/verify-skill.md +9 -4
  265. package/dist/resources/skills/gsd-browser/SKILL.md +1 -1
  266. package/dist/resources/skills/spike-wrap-up/SKILL.md +9 -9
  267. package/dist/tsconfig.extensions.tsbuildinfo +1 -0
  268. package/dist/update-check.d.ts +2 -0
  269. package/dist/update-check.js +24 -1
  270. package/dist/update-cmd.js +40 -3
  271. package/dist/web/standalone/.next/BUILD_ID +1 -1
  272. package/dist/web/standalone/.next/app-path-routes-manifest.json +5 -5
  273. package/dist/web/standalone/.next/build-manifest.json +3 -3
  274. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  275. package/dist/web/standalone/.next/react-loadable-manifest.json +8 -8
  276. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  277. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  278. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  279. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  280. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  281. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  282. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  283. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  284. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  285. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  286. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  287. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  288. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  289. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  290. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  291. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  292. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  293. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  294. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  295. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  296. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  297. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  298. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  299. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  300. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  301. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  302. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  303. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  304. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  305. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  306. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  307. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  308. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  309. package/dist/web/standalone/.next/server/app/api/mcp-connections/route.js.nft.json +1 -1
  310. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  311. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  312. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  313. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  314. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  315. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  316. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  317. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  318. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  319. package/dist/web/standalone/.next/server/app/api/shutdown/route.js.nft.json +1 -1
  320. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  321. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  322. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  323. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  324. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  325. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  326. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  327. package/dist/web/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  328. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  329. package/dist/web/standalone/.next/server/app/index.html +1 -1
  330. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  331. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  332. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  333. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  334. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  335. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  336. package/dist/web/standalone/.next/server/app-paths-manifest.json +5 -5
  337. package/dist/web/standalone/.next/server/chunks/5124.js +1 -0
  338. package/dist/web/standalone/.next/server/chunks/5942.js +2 -0
  339. package/dist/web/standalone/.next/server/chunks/8357.js +3 -3
  340. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  341. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  342. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  343. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  344. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  345. package/dist/web/standalone/.next/static/chunks/2659.b7b129ee6a769448.js +1 -0
  346. package/dist/web/standalone/.next/static/chunks/2772.bfa657f49f955239.js +1 -0
  347. package/dist/web/standalone/.next/static/chunks/{3616.4113d484a994e411.js → 3616.3c60753b8ffcbd2e.js} +1 -1
  348. package/dist/web/standalone/.next/static/chunks/4283.e4873b058df143a1.js +2 -0
  349. package/dist/web/standalone/.next/static/chunks/5826.a46ecdd1cfe8dabc.js +1 -0
  350. package/dist/web/standalone/.next/static/chunks/796.e0bdc932325d7e03.js +10 -0
  351. package/dist/web/standalone/.next/static/chunks/8785.2e5a118797fb2dd2.js +1 -0
  352. package/dist/web/standalone/.next/static/chunks/{webpack-dda80a1ef5587410.js → webpack-f0285ce91d4ec9ef.js} +1 -1
  353. package/dist/web/standalone/node_modules/@gsd/native/package.json +1 -1
  354. package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
  355. package/dist/web/standalone/node_modules/postcss/lib/container.js +26 -18
  356. package/dist/web/standalone/node_modules/postcss/lib/css-syntax-error.js +47 -14
  357. package/dist/web/standalone/node_modules/postcss/lib/declaration.js +4 -4
  358. package/dist/web/standalone/node_modules/postcss/lib/fromJSON.js +3 -3
  359. package/dist/web/standalone/node_modules/postcss/lib/input.js +54 -29
  360. package/dist/web/standalone/node_modules/postcss/lib/lazy-result.js +47 -37
  361. package/dist/web/standalone/node_modules/postcss/lib/map-generator.js +26 -9
  362. package/dist/web/standalone/node_modules/postcss/lib/no-work-result.js +57 -55
  363. package/dist/web/standalone/node_modules/postcss/lib/node.js +99 -31
  364. package/dist/web/standalone/node_modules/postcss/lib/parse.js +1 -1
  365. package/dist/web/standalone/node_modules/postcss/lib/parser.js +10 -9
  366. package/dist/web/standalone/node_modules/postcss/lib/postcss.js +12 -12
  367. package/dist/web/standalone/node_modules/postcss/lib/previous-map.js +30 -11
  368. package/dist/web/standalone/node_modules/postcss/lib/processor.js +7 -7
  369. package/dist/web/standalone/node_modules/postcss/lib/result.js +5 -5
  370. package/dist/web/standalone/node_modules/postcss/lib/rule.js +6 -6
  371. package/dist/web/standalone/node_modules/postcss/lib/stringifier.js +69 -28
  372. package/dist/web/standalone/node_modules/postcss/lib/tokenize.js +6 -2
  373. package/dist/web/standalone/node_modules/postcss/package.json +48 -48
  374. package/dist/web/standalone/package.json +1 -1
  375. package/dist/web-mode.d.ts +2 -0
  376. package/dist/web-mode.js +20 -8
  377. package/dist/worktree-cli.js +3 -6
  378. package/dist/worktree-status-banner.js +7 -11
  379. package/package.json +17 -11
  380. package/packages/cloud-mcp-gateway/package.json +2 -2
  381. package/packages/contracts/dist/rpc.d.ts +1 -0
  382. package/packages/contracts/dist/rpc.d.ts.map +1 -1
  383. package/packages/contracts/dist/rpc.js.map +1 -1
  384. package/packages/contracts/dist/workflow.d.ts +4 -0
  385. package/packages/contracts/dist/workflow.d.ts.map +1 -1
  386. package/packages/contracts/dist/workflow.js.map +1 -1
  387. package/packages/contracts/package.json +1 -1
  388. package/packages/daemon/package.json +4 -4
  389. package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts +2 -0
  390. package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts.map +1 -1
  391. package/packages/gsd-agent-core/dist/session/agent-session-extensions.js +14 -0
  392. package/packages/gsd-agent-core/dist/session/agent-session-extensions.js.map +1 -1
  393. package/packages/gsd-agent-core/package.json +5 -5
  394. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +5 -0
  395. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  396. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +8 -0
  397. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
  398. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js +1 -1
  399. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js.map +1 -1
  400. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  401. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +113 -40
  402. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  403. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -1
  404. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +8 -1
  405. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +1 -1
  406. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.d.ts.map +1 -1
  407. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.js +11 -1
  408. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.js.map +1 -1
  409. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -1
  410. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js +6 -0
  411. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  412. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.d.ts.map +1 -1
  413. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.js +4 -4
  414. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.js.map +1 -1
  415. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  416. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +3 -1
  417. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +1 -1
  418. package/packages/gsd-agent-modes/package.json +7 -7
  419. package/packages/mcp-server/dist/cli.js +9 -1
  420. package/packages/mcp-server/dist/cli.js.map +1 -1
  421. package/packages/mcp-server/dist/moonshot-tool-schema.d.ts +29 -0
  422. package/packages/mcp-server/dist/moonshot-tool-schema.d.ts.map +1 -0
  423. package/packages/mcp-server/dist/moonshot-tool-schema.js +50 -0
  424. package/packages/mcp-server/dist/moonshot-tool-schema.js.map +1 -0
  425. package/packages/mcp-server/dist/server.d.ts +10 -0
  426. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  427. package/packages/mcp-server/dist/server.js +12 -0
  428. package/packages/mcp-server/dist/server.js.map +1 -1
  429. package/packages/mcp-server/dist/workflow-tools.d.ts +49 -0
  430. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  431. package/packages/mcp-server/dist/workflow-tools.js +147 -60
  432. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  433. package/packages/mcp-server/package.json +5 -4
  434. package/packages/native/package.json +1 -1
  435. package/packages/pi-agent-core/dist/harness/env/nodejs.d.ts +1 -0
  436. package/packages/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  437. package/packages/pi-agent-core/dist/harness/env/nodejs.js +34 -3
  438. package/packages/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  439. package/packages/pi-agent-core/dist/index.d.ts +1 -0
  440. package/packages/pi-agent-core/dist/index.d.ts.map +1 -1
  441. package/packages/pi-agent-core/dist/index.js +3 -0
  442. package/packages/pi-agent-core/dist/index.js.map +1 -1
  443. package/packages/pi-agent-core/package.json +1 -1
  444. package/packages/pi-ai/README.md +1 -0
  445. package/packages/pi-ai/dist/index.d.ts +2 -0
  446. package/packages/pi-ai/dist/index.d.ts.map +1 -1
  447. package/packages/pi-ai/dist/index.js +2 -0
  448. package/packages/pi-ai/dist/index.js.map +1 -1
  449. package/packages/pi-ai/dist/models.generated.d.ts +183 -110
  450. package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
  451. package/packages/pi-ai/dist/models.generated.js +205 -158
  452. package/packages/pi-ai/dist/models.generated.js.map +1 -1
  453. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  454. package/packages/pi-ai/dist/providers/anthropic.js +12 -7
  455. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  456. package/packages/pi-ai/dist/providers/google-shared.d.ts +5 -0
  457. package/packages/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
  458. package/packages/pi-ai/dist/providers/google-shared.js +12 -3
  459. package/packages/pi-ai/dist/providers/google-shared.js.map +1 -1
  460. package/packages/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  461. package/packages/pi-ai/dist/providers/openai-completions.js +7 -3
  462. package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
  463. package/packages/pi-ai/dist/utils/moonshot-tool-schema.d.ts +9 -0
  464. package/packages/pi-ai/dist/utils/moonshot-tool-schema.d.ts.map +1 -0
  465. package/packages/pi-ai/dist/utils/moonshot-tool-schema.js +34 -0
  466. package/packages/pi-ai/dist/utils/moonshot-tool-schema.js.map +1 -0
  467. package/packages/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  468. package/packages/pi-ai/dist/utils/oauth/github-copilot.js +6 -2
  469. package/packages/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
  470. package/packages/pi-ai/package.json +3 -2
  471. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +2 -2
  472. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  473. package/packages/pi-coding-agent/dist/core/auth-storage.js +29 -15
  474. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  475. package/packages/pi-coding-agent/dist/core/capability-patches.d.ts.map +1 -1
  476. package/packages/pi-coding-agent/dist/core/capability-patches.js +3 -1
  477. package/packages/pi-coding-agent/dist/core/capability-patches.js.map +1 -1
  478. package/packages/pi-coding-agent/dist/core/provider-readiness.d.ts.map +1 -1
  479. package/packages/pi-coding-agent/dist/core/provider-readiness.js +13 -6
  480. package/packages/pi-coding-agent/dist/core/provider-readiness.js.map +1 -1
  481. package/packages/pi-coding-agent/dist/core/tools/bash.d.ts +11 -0
  482. package/packages/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
  483. package/packages/pi-coding-agent/dist/core/tools/bash.js +53 -11
  484. package/packages/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
  485. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  486. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  487. package/packages/pi-coding-agent/dist/index.js +1 -1
  488. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  489. package/packages/pi-coding-agent/dist/utils/shell.d.ts +28 -2
  490. package/packages/pi-coding-agent/dist/utils/shell.d.ts.map +1 -1
  491. package/packages/pi-coding-agent/dist/utils/shell.js +56 -10
  492. package/packages/pi-coding-agent/dist/utils/shell.js.map +1 -1
  493. package/packages/pi-coding-agent/package.json +7 -7
  494. package/packages/pi-tui/dist/components/input.js +1 -1
  495. package/packages/pi-tui/dist/components/input.js.map +1 -1
  496. package/packages/pi-tui/dist/keys.d.ts.map +1 -1
  497. package/packages/pi-tui/dist/keys.js +39 -30
  498. package/packages/pi-tui/dist/keys.js.map +1 -1
  499. package/packages/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
  500. package/packages/pi-tui/dist/stdin-buffer.js +22 -0
  501. package/packages/pi-tui/dist/stdin-buffer.js.map +1 -1
  502. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  503. package/packages/pi-tui/dist/tui.js +9 -0
  504. package/packages/pi-tui/dist/tui.js.map +1 -1
  505. package/packages/pi-tui/package.json +2 -2
  506. package/packages/rpc-client/package.json +2 -2
  507. package/pkg/package.json +1 -1
  508. package/scripts/install/deps.js +10 -0
  509. package/scripts/link-workspace-packages.cjs +7 -40
  510. package/src/resources/GSD-WORKFLOW.md +5 -4
  511. package/src/resources/extensions/ask-user-questions.ts +87 -24
  512. package/src/resources/extensions/async-jobs/async-bash-cancel.test.ts +360 -0
  513. package/src/resources/extensions/async-jobs/async-bash-tool.ts +33 -56
  514. package/src/resources/extensions/async-jobs/await-tool.test.ts +139 -0
  515. package/src/resources/extensions/async-jobs/await-tool.ts +82 -12
  516. package/src/resources/extensions/async-jobs/index.ts +79 -0
  517. package/src/resources/extensions/async-jobs/job-manager.ts +21 -1
  518. package/src/resources/extensions/bg-shell/bg-shell-command.ts +6 -6
  519. package/src/resources/extensions/bg-shell/bg-shell-tool.ts +10 -6
  520. package/src/resources/extensions/bg-shell/overlay.ts +9 -5
  521. package/src/resources/extensions/bg-shell/process-manager.ts +50 -25
  522. package/src/resources/extensions/bg-shell/readiness-detector.ts +12 -0
  523. package/src/resources/extensions/bg-shell/tests/lifecycle-and-utilities.test.ts +48 -1
  524. package/src/resources/extensions/bg-shell/utilities.ts +5 -2
  525. package/src/resources/extensions/browser-tools/engine/managed-gsd-browser.ts +265 -98
  526. package/src/resources/extensions/browser-tools/engine/selection.ts +90 -4
  527. package/src/resources/extensions/browser-tools/index.ts +71 -13
  528. package/src/resources/extensions/browser-tools/tests/browser-engine-selection.test.mjs +83 -13
  529. package/src/resources/extensions/browser-tools/tests/gsd-browser-launch-config.test.mjs +40 -1
  530. package/src/resources/extensions/browser-tools/tests/managed-gsd-browser-tools.test.mjs +136 -0
  531. package/src/resources/extensions/claude-code-cli/models.ts +9 -0
  532. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +166 -293
  533. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +270 -2
  534. package/src/resources/extensions/claude-code-cli/turn-assembler.ts +287 -0
  535. package/src/resources/extensions/github-sync/templates.ts +3 -3
  536. package/src/resources/extensions/github-sync/tests/templates.test.ts +2 -2
  537. package/src/resources/extensions/gsd/artifact-projection.ts +31 -0
  538. package/src/resources/extensions/gsd/auto/contracts.ts +40 -121
  539. package/src/resources/extensions/gsd/auto/custom-verify-retry-store.ts +21 -3
  540. package/src/resources/extensions/gsd/auto/detect-stuck.ts +32 -9
  541. package/src/resources/extensions/gsd/auto/dispatch-history.ts +152 -0
  542. package/src/resources/extensions/gsd/auto/dispatch-key.ts +39 -0
  543. package/src/resources/extensions/gsd/auto/loop-deps.ts +3 -1
  544. package/src/resources/extensions/gsd/auto/loop.ts +86 -61
  545. package/src/resources/extensions/gsd/auto/orchestrator.ts +1023 -98
  546. package/src/resources/extensions/gsd/auto/phases.ts +108 -28
  547. package/src/resources/extensions/gsd/auto/run-unit.ts +2 -1
  548. package/src/resources/extensions/gsd/auto/session.ts +7 -0
  549. package/src/resources/extensions/gsd/auto-dashboard.ts +18 -4
  550. package/src/resources/extensions/gsd/auto-direct-dispatch.ts +18 -48
  551. package/src/resources/extensions/gsd/auto-dispatch.ts +68 -68
  552. package/src/resources/extensions/gsd/auto-model-selection.ts +49 -12
  553. package/src/resources/extensions/gsd/auto-post-unit.ts +56 -16
  554. package/src/resources/extensions/gsd/auto-prompts.ts +338 -44
  555. package/src/resources/extensions/gsd/auto-recovery.ts +50 -50
  556. package/src/resources/extensions/gsd/auto-runtime-state.ts +30 -0
  557. package/src/resources/extensions/gsd/auto-start.ts +41 -49
  558. package/src/resources/extensions/gsd/auto-timers.ts +16 -2
  559. package/src/resources/extensions/gsd/auto-tool-tracking.ts +59 -0
  560. package/src/resources/extensions/gsd/auto-unit-closeout.ts +83 -28
  561. package/src/resources/extensions/gsd/auto-unit-tool-scope.ts +43 -38
  562. package/src/resources/extensions/gsd/auto-verification.ts +33 -36
  563. package/src/resources/extensions/gsd/auto-worktree-repair.ts +13 -2
  564. package/src/resources/extensions/gsd/auto-worktree.ts +83 -391
  565. package/src/resources/extensions/gsd/auto.ts +151 -524
  566. package/src/resources/extensions/gsd/blocked-models.ts +49 -0
  567. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +37 -10
  568. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +29 -37
  569. package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +43 -49
  570. package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +2 -2
  571. package/src/resources/extensions/gsd/bootstrap/query-tools.ts +2 -2
  572. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +24 -0
  573. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +379 -177
  574. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +452 -58
  575. package/src/resources/extensions/gsd/branch-patterns.ts +3 -0
  576. package/src/resources/extensions/gsd/browser-daemon-auto-prep.ts +108 -0
  577. package/src/resources/extensions/gsd/browser-evidence.ts +18 -2
  578. package/src/resources/extensions/gsd/captures.ts +5 -16
  579. package/src/resources/extensions/gsd/closeout-consistency-gate.ts +27 -5
  580. package/src/resources/extensions/gsd/closeout-recovery.ts +2 -1
  581. package/src/resources/extensions/gsd/closeout-wizard.ts +102 -0
  582. package/src/resources/extensions/gsd/codebase-generator.ts +9 -5
  583. package/src/resources/extensions/gsd/commands/catalog.ts +6 -68
  584. package/src/resources/extensions/gsd/commands/context.ts +16 -2
  585. package/src/resources/extensions/gsd/commands/handlers/auto.ts +3 -0
  586. package/src/resources/extensions/gsd/commands-handlers.ts +64 -3
  587. package/src/resources/extensions/gsd/commands-inspect.ts +7 -8
  588. package/src/resources/extensions/gsd/commands-maintenance.ts +74 -40
  589. package/src/resources/extensions/gsd/commands-ship.ts +2 -2
  590. package/src/resources/extensions/gsd/commands-verdict.ts +19 -2
  591. package/src/resources/extensions/gsd/consent-question.ts +431 -0
  592. package/src/resources/extensions/gsd/consent-verdict.ts +86 -0
  593. package/src/resources/extensions/gsd/constants.ts +0 -3
  594. package/src/resources/extensions/gsd/crash-recovery.ts +13 -11
  595. package/src/resources/extensions/gsd/db/engine.ts +809 -0
  596. package/src/resources/extensions/gsd/db/queries.ts +490 -0
  597. package/src/resources/extensions/gsd/db/sql-constants.ts +12 -0
  598. package/src/resources/extensions/gsd/db/writers/cascades.ts +237 -0
  599. package/src/resources/extensions/gsd/db/writers/import-restore.ts +310 -0
  600. package/src/resources/extensions/gsd/db/writers/memory.ts +220 -0
  601. package/src/resources/extensions/gsd/db/writers/reconcile.ts +500 -0
  602. package/src/resources/extensions/gsd/db/writers/status.ts +88 -0
  603. package/src/resources/extensions/gsd/db-workspace.ts +170 -0
  604. package/src/resources/extensions/gsd/debug-logger.ts +11 -0
  605. package/src/resources/extensions/gsd/delegation-policy.ts +3 -11
  606. package/src/resources/extensions/gsd/discussion-handoff.ts +276 -0
  607. package/src/resources/extensions/gsd/dispatch-guard.ts +8 -31
  608. package/src/resources/extensions/gsd/docs/preferences-reference.md +9 -0
  609. package/src/resources/extensions/gsd/doctor-engine-checks.ts +5 -4
  610. package/src/resources/extensions/gsd/doctor-environment.ts +5 -13
  611. package/src/resources/extensions/gsd/doctor-format.ts +12 -7
  612. package/src/resources/extensions/gsd/doctor-git-checks.ts +5 -22
  613. package/src/resources/extensions/gsd/doctor-proactive.ts +8 -2
  614. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +22 -17
  615. package/src/resources/extensions/gsd/doctor.ts +15 -5
  616. package/src/resources/extensions/gsd/engine-hook-contract.ts +79 -0
  617. package/src/resources/extensions/gsd/error-classifier.ts +12 -1
  618. package/src/resources/extensions/gsd/exec-sandbox.ts +49 -9
  619. package/src/resources/extensions/gsd/files.ts +33 -12
  620. package/src/resources/extensions/gsd/git-conflict-state.ts +17 -1
  621. package/src/resources/extensions/gsd/git-service.ts +1 -0
  622. package/src/resources/extensions/gsd/gitignore.ts +3 -0
  623. package/src/resources/extensions/gsd/gsd-command-home.ts +13 -3
  624. package/src/resources/extensions/gsd/gsd-db.ts +188 -2375
  625. package/src/resources/extensions/gsd/guidance.ts +217 -0
  626. package/src/resources/extensions/gsd/guided-flow.ts +118 -589
  627. package/src/resources/extensions/gsd/guided-unit-completion.ts +275 -0
  628. package/src/resources/extensions/gsd/markdown-renderer.ts +51 -20
  629. package/src/resources/extensions/gsd/mcp-filter.ts +11 -24
  630. package/src/resources/extensions/gsd/mcp-tool-name.ts +30 -0
  631. package/src/resources/extensions/gsd/md-importer.ts +3 -3
  632. package/src/resources/extensions/gsd/memory-consolidation-scanner.ts +1 -1
  633. package/src/resources/extensions/gsd/migrate/safety.ts +20 -9
  634. package/src/resources/extensions/gsd/migration-auto-check.ts +30 -5
  635. package/src/resources/extensions/gsd/milestone-closeout-proof.ts +131 -0
  636. package/src/resources/extensions/gsd/milestone-closeout.ts +121 -28
  637. package/src/resources/extensions/gsd/milestone-merge-transaction.ts +47 -0
  638. package/src/resources/extensions/gsd/milestone-planning-persistence.ts +224 -0
  639. package/src/resources/extensions/gsd/milestone-readiness.ts +125 -0
  640. package/src/resources/extensions/gsd/milestone-reopen-events.ts +3 -6
  641. package/src/resources/extensions/gsd/milestone-settlement.ts +81 -0
  642. package/src/resources/extensions/gsd/milestone-validation-evidence.ts +95 -0
  643. package/src/resources/extensions/gsd/milestone-validation-verdict.ts +80 -0
  644. package/src/resources/extensions/gsd/model-cost-table.ts +1 -0
  645. package/src/resources/extensions/gsd/model-router.ts +3 -0
  646. package/src/resources/extensions/gsd/native-git-bridge.ts +48 -0
  647. package/src/resources/extensions/gsd/notification-store.ts +26 -3
  648. package/src/resources/extensions/gsd/parallel-eligibility.ts +4 -5
  649. package/src/resources/extensions/gsd/parallel-merge.ts +12 -9
  650. package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +10 -7
  651. package/src/resources/extensions/gsd/parallel-orchestrator.ts +6 -2
  652. package/src/resources/extensions/gsd/parsers-legacy.ts +16 -4
  653. package/src/resources/extensions/gsd/paths.ts +42 -22
  654. package/src/resources/extensions/gsd/pre-execution-checks.ts +109 -3
  655. package/src/resources/extensions/gsd/preferences-diagnostics.ts +98 -0
  656. package/src/resources/extensions/gsd/preferences-models.ts +12 -47
  657. package/src/resources/extensions/gsd/preferences-types.ts +16 -0
  658. package/src/resources/extensions/gsd/preferences.ts +191 -28
  659. package/src/resources/extensions/gsd/projection-flush.ts +20 -0
  660. package/src/resources/extensions/gsd/prompts/complete-slice.md +4 -3
  661. package/src/resources/extensions/gsd/prompts/discuss.md +6 -7
  662. package/src/resources/extensions/gsd/prompts/execute-task.md +3 -1
  663. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +5 -7
  664. package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +6 -6
  665. package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +1 -2
  666. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +5 -6
  667. package/src/resources/extensions/gsd/prompts/plan-milestone.md +3 -1
  668. package/src/resources/extensions/gsd/prompts/plan-slice.md +4 -3
  669. package/src/resources/extensions/gsd/prompts/quick-task.md +1 -1
  670. package/src/resources/extensions/gsd/prompts/reassess-roadmap.md +1 -1
  671. package/src/resources/extensions/gsd/prompts/refine-slice.md +3 -2
  672. package/src/resources/extensions/gsd/prompts/replan-slice.md +2 -2
  673. package/src/resources/extensions/gsd/prompts/research-milestone.md +3 -3
  674. package/src/resources/extensions/gsd/prompts/research-slice.md +1 -1
  675. package/src/resources/extensions/gsd/prompts/rewrite-docs.md +1 -1
  676. package/src/resources/extensions/gsd/prompts/run-uat.md +7 -5
  677. package/src/resources/extensions/gsd/prompts/system.md +6 -3
  678. package/src/resources/extensions/gsd/prompts/triage-captures.md +1 -1
  679. package/src/resources/extensions/gsd/prompts/validate-milestone.md +6 -4
  680. package/src/resources/extensions/gsd/provider-error-guidance.ts +4 -9
  681. package/src/resources/extensions/gsd/provider-payload-policy.ts +140 -0
  682. package/src/resources/extensions/gsd/provider-switch-observer.ts +1 -1
  683. package/src/resources/extensions/gsd/publication.ts +122 -0
  684. package/src/resources/extensions/gsd/pull-request-process.ts +41 -0
  685. package/src/resources/extensions/gsd/quality-gate-closure.ts +140 -0
  686. package/src/resources/extensions/gsd/question-transport.ts +138 -0
  687. package/src/resources/extensions/gsd/reactive-graph.ts +11 -1
  688. package/src/resources/extensions/gsd/recovery-classification.ts +47 -88
  689. package/src/resources/extensions/gsd/roadmap-slices.ts +36 -5
  690. package/src/resources/extensions/gsd/safety/destructive-confirmation.ts +134 -0
  691. package/src/resources/extensions/gsd/safety/evidence-collector.ts +36 -4
  692. package/src/resources/extensions/gsd/safety/evidence-cross-ref.ts +7 -2
  693. package/src/resources/extensions/gsd/safety/file-change-validator.ts +14 -0
  694. package/src/resources/extensions/gsd/schemas/parsers.ts +6 -1
  695. package/src/resources/extensions/gsd/session-lock.ts +1 -1
  696. package/src/resources/extensions/gsd/slice-parallel-orchestrator.ts +6 -2
  697. package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +31 -10
  698. package/src/resources/extensions/gsd/state-transition-matrix.ts +42 -0
  699. package/src/resources/extensions/gsd/state.ts +24 -26
  700. package/src/resources/extensions/gsd/status-guards.ts +59 -8
  701. package/src/resources/extensions/gsd/stop-notice.ts +75 -0
  702. package/src/resources/extensions/gsd/templates/plan.md +7 -0
  703. package/src/resources/extensions/gsd/templates/project.md +1 -0
  704. package/src/resources/extensions/gsd/templates/roadmap.md +1 -1
  705. package/src/resources/extensions/gsd/templates/uat.md +5 -1
  706. package/src/resources/extensions/gsd/tests/artifact-db-drift-memo.test.ts +66 -0
  707. package/src/resources/extensions/gsd/tests/ask-user-questions-render.test.ts +92 -0
  708. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +29 -1
  709. package/src/resources/extensions/gsd/tests/auto-dispatch-baseline-harness.test.ts +53 -0
  710. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +444 -5
  711. package/src/resources/extensions/gsd/tests/auto-milestone-target.test.ts +23 -0
  712. package/src/resources/extensions/gsd/tests/auto-model-selection-tool-poisoning.test.ts +18 -0
  713. package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +91 -0
  714. package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +894 -858
  715. package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +41 -11
  716. package/src/resources/extensions/gsd/tests/auto-post-unit-evidence-crossref-4909.test.ts +46 -0
  717. package/src/resources/extensions/gsd/tests/auto-remote-session-lock-cleanup.test.ts +65 -3
  718. package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +34 -0
  719. package/src/resources/extensions/gsd/tests/auto-worktree-registry.test.ts +2 -2
  720. package/src/resources/extensions/gsd/tests/auto-worktree-repair.test.ts +4 -2
  721. package/src/resources/extensions/gsd/tests/blocked-models.test.ts +19 -0
  722. package/src/resources/extensions/gsd/tests/browser-automation-contract-fixture.ts +39 -0
  723. package/src/resources/extensions/gsd/tests/browser-contract.test.ts +44 -0
  724. package/src/resources/extensions/gsd/tests/browser-daemon-auto-prep.test.ts +144 -0
  725. package/src/resources/extensions/gsd/tests/canonical-milestone-root.test.ts +20 -0
  726. package/src/resources/extensions/gsd/tests/checkout-branch-stash-guard.test.ts +66 -1
  727. package/src/resources/extensions/gsd/tests/clear-stale-autostart.test.ts +44 -0
  728. package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +22 -0
  729. package/src/resources/extensions/gsd/tests/commands-dispatcher-workspace-git.test.ts +11 -0
  730. package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +46 -8
  731. package/src/resources/extensions/gsd/tests/complete-slice-verification-gate.test.ts +42 -0
  732. package/src/resources/extensions/gsd/tests/consent-question.test.ts +351 -0
  733. package/src/resources/extensions/gsd/tests/custom-verify-retry-store.test.ts +67 -0
  734. package/src/resources/extensions/gsd/tests/debug-logger.test.ts +15 -0
  735. package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +10 -10
  736. package/src/resources/extensions/gsd/tests/destructive-confirmation.test.ts +303 -0
  737. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +34 -3
  738. package/src/resources/extensions/gsd/tests/dispatch-history.test.ts +273 -0
  739. package/src/resources/extensions/gsd/tests/dispatch-run-uat-browser-tools.test.ts +89 -0
  740. package/src/resources/extensions/gsd/tests/doctor-git-checks-terminal.test.ts +73 -0
  741. package/src/resources/extensions/gsd/tests/doctor-scope-db-unavailable.test.ts +18 -0
  742. package/src/resources/extensions/gsd/tests/dynamic-bash-no-cap.test.ts +132 -0
  743. package/src/resources/extensions/gsd/tests/engine-hook-contract.test.ts +148 -0
  744. package/src/resources/extensions/gsd/tests/evidence-xref-gsd-exec.test.ts +157 -0
  745. package/src/resources/extensions/gsd/tests/exec-graceful-kill.test.ts +193 -0
  746. package/src/resources/extensions/gsd/tests/exec-tool.test.ts +29 -1
  747. package/src/resources/extensions/gsd/tests/execute-summary-save-empty-project.test.ts +64 -1
  748. package/src/resources/extensions/gsd/tests/execute-task-rendering.test.ts +1 -0
  749. package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +35 -1
  750. package/src/resources/extensions/gsd/tests/file-change-validator.test.ts +33 -1
  751. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-no-blockers.md +1 -5
  752. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-with-blockers.md +1 -5
  753. package/src/resources/extensions/gsd/tests/gate-state-canonicalization.test.ts +48 -1
  754. package/src/resources/extensions/gsd/tests/gsd-command-home.test.ts +120 -0
  755. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +27 -0
  756. package/src/resources/extensions/gsd/tests/guidance.test.ts +148 -0
  757. package/src/resources/extensions/gsd/tests/guided-dispatch-root.test.ts +2 -6
  758. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +58 -15
  759. package/src/resources/extensions/gsd/tests/integration/auto-worktree.test.ts +74 -59
  760. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +3 -2
  761. package/src/resources/extensions/gsd/tests/integration/gsd-integration-fixture.ts +80 -0
  762. package/src/resources/extensions/gsd/tests/integration/merge-strategy-regular.test.ts +157 -0
  763. package/src/resources/extensions/gsd/tests/integration/run-uat.test.ts +199 -0
  764. package/src/resources/extensions/gsd/tests/markdown-renderer-parse-cache.test.ts +75 -0
  765. package/src/resources/extensions/gsd/tests/mcp-project-config.test.ts +3 -1
  766. package/src/resources/extensions/gsd/tests/mcp-tool-name.test.ts +34 -0
  767. package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +143 -1
  768. package/src/resources/extensions/gsd/tests/milestone-closeout-proof.test.ts +99 -0
  769. package/src/resources/extensions/gsd/tests/milestone-closeout.test.ts +120 -4
  770. package/src/resources/extensions/gsd/tests/milestone-merge-transaction.test.ts +46 -0
  771. package/src/resources/extensions/gsd/tests/milestone-readiness.test.ts +65 -0
  772. package/src/resources/extensions/gsd/tests/milestone-validation-evidence.test.ts +41 -0
  773. package/src/resources/extensions/gsd/tests/milestone-validation-verdict.test.ts +55 -0
  774. package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +32 -1
  775. package/src/resources/extensions/gsd/tests/native-merge-regular.test.ts +139 -0
  776. package/src/resources/extensions/gsd/tests/notification-store.test.ts +32 -0
  777. package/src/resources/extensions/gsd/tests/oauth-api-model-routing.test.ts +167 -0
  778. package/src/resources/extensions/gsd/tests/orchestrator-legacy-parity.test.ts +127 -0
  779. package/src/resources/extensions/gsd/tests/parallel-research-dispatch.test.ts +18 -0
  780. package/src/resources/extensions/gsd/tests/parse-project-milestone-bridge.test.ts +77 -0
  781. package/src/resources/extensions/gsd/tests/parsers-legacy-importers.test.ts +138 -0
  782. package/src/resources/extensions/gsd/tests/phases-terminal-complete-idempotent.test.ts +242 -0
  783. package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +45 -0
  784. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +6 -2
  785. package/src/resources/extensions/gsd/tests/planning-crossval.test.ts +45 -0
  786. package/src/resources/extensions/gsd/tests/post-exec-retry-bypass.test.ts +63 -2
  787. package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +193 -1
  788. package/src/resources/extensions/gsd/tests/preferences-diagnostics.test.ts +67 -0
  789. package/src/resources/extensions/gsd/tests/preferences.test.ts +183 -0
  790. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +75 -2
  791. package/src/resources/extensions/gsd/tests/prompt-db.test.ts +124 -6
  792. package/src/resources/extensions/gsd/tests/provider-error-guidance.test.ts +3 -3
  793. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +9 -0
  794. package/src/resources/extensions/gsd/tests/provider-payload-policy.test.ts +165 -0
  795. package/src/resources/extensions/gsd/tests/publication.test.ts +120 -0
  796. package/src/resources/extensions/gsd/tests/pull-request-process.test.ts +47 -0
  797. package/src/resources/extensions/gsd/tests/recovery-classification-illegal-transition.test.ts +30 -0
  798. package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +342 -1
  799. package/src/resources/extensions/gsd/tests/research-milestone-composer.test.ts +65 -0
  800. package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +40 -0
  801. package/src/resources/extensions/gsd/tests/roadmap-slices.test.ts +68 -0
  802. package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +44 -1
  803. package/src/resources/extensions/gsd/tests/safety-harness-false-positives.test.ts +38 -0
  804. package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +80 -0
  805. package/src/resources/extensions/gsd/tests/session-switch-clears-pending-autostart.test.ts +108 -0
  806. package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +144 -7
  807. package/src/resources/extensions/gsd/tests/stale-queued-milestone.test.ts +27 -0
  808. package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +21 -6
  809. package/src/resources/extensions/gsd/tests/state-transition-matrix.test.ts +36 -0
  810. package/src/resources/extensions/gsd/tests/status-guards.test.ts +38 -0
  811. package/src/resources/extensions/gsd/tests/stop-notice.test.ts +70 -0
  812. package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +114 -0
  813. package/src/resources/extensions/gsd/tests/tool-availability-audit.test.ts +35 -0
  814. package/src/resources/extensions/gsd/tests/tool-invocation-error-loop-break.test.ts +8 -0
  815. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +35 -42
  816. package/src/resources/extensions/gsd/tests/tool-surface-readiness.test.ts +155 -0
  817. package/src/resources/extensions/gsd/tests/tool-unavailable-retry.test.ts +33 -0
  818. package/src/resources/extensions/gsd/tests/transport-gate-double-complete.test.ts +139 -0
  819. package/src/resources/extensions/gsd/tests/uat-policy.test.ts +112 -6
  820. package/src/resources/extensions/gsd/tests/unit-closeout.test.ts +209 -0
  821. package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +114 -2
  822. package/src/resources/extensions/gsd/tests/unit-registry.test.ts +163 -0
  823. package/src/resources/extensions/gsd/tests/uok-audit-unified.test.ts +8 -0
  824. package/src/resources/extensions/gsd/tests/validate-milestone-stuck-guard.test.ts +39 -0
  825. package/src/resources/extensions/gsd/tests/verification-verdict.test.ts +2 -0
  826. package/src/resources/extensions/gsd/tests/web-app-uat.test.ts +193 -0
  827. package/src/resources/extensions/gsd/tests/workflow-events.test.ts +19 -0
  828. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +128 -11
  829. package/src/resources/extensions/gsd/tests/workflow-reconcile.test.ts +20 -0
  830. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +275 -40
  831. package/src/resources/extensions/gsd/tests/workspace-git-preflight.test.ts +15 -0
  832. package/src/resources/extensions/gsd/tests/worktree-lifecycle.test.ts +41 -4
  833. package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +43 -1
  834. package/src/resources/extensions/gsd/tests/worktree-placement.test.ts +113 -0
  835. package/src/resources/extensions/gsd/tests/worktree-projection-writers.test.ts +1 -1
  836. package/src/resources/extensions/gsd/tests/worktree-reentry.test.ts +1 -1
  837. package/src/resources/extensions/gsd/tests/worktree-safety.test.ts +27 -1
  838. package/src/resources/extensions/gsd/tests/worktree-symlink-removal.test.ts +12 -6
  839. package/src/resources/extensions/gsd/tests/worktree-teardown-safety.test.ts +2 -2
  840. package/src/resources/extensions/gsd/tests/worktree-telemetry.test.ts +22 -0
  841. package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +15 -3
  842. package/src/resources/extensions/gsd/tests/write-gate-seam.test.ts +358 -0
  843. package/src/resources/extensions/gsd/tests/write-gate.test.ts +188 -1
  844. package/src/resources/extensions/gsd/tool-contract.ts +124 -11
  845. package/src/resources/extensions/gsd/tool-presentation-plan.ts +18 -35
  846. package/src/resources/extensions/gsd/tool-surface-readiness.ts +76 -0
  847. package/src/resources/extensions/gsd/tool-surface-snapshot.ts +47 -0
  848. package/src/resources/extensions/gsd/tools/complete-milestone.ts +3 -2
  849. package/src/resources/extensions/gsd/tools/complete-slice.ts +45 -70
  850. package/src/resources/extensions/gsd/tools/complete-task.ts +3 -2
  851. package/src/resources/extensions/gsd/tools/exec-tool.ts +9 -8
  852. package/src/resources/extensions/gsd/tools/plan-milestone.ts +19 -160
  853. package/src/resources/extensions/gsd/tools/plan-slice.ts +14 -8
  854. package/src/resources/extensions/gsd/tools/plan-task.ts +2 -2
  855. package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +45 -2
  856. package/src/resources/extensions/gsd/tools/reopen-milestone.ts +13 -40
  857. package/src/resources/extensions/gsd/tools/reopen-slice.ts +16 -44
  858. package/src/resources/extensions/gsd/tools/reopen-task.ts +2 -2
  859. package/src/resources/extensions/gsd/tools/replan-slice.ts +2 -2
  860. package/src/resources/extensions/gsd/tools/skip-slice.ts +18 -44
  861. package/src/resources/extensions/gsd/tools/validate-milestone.ts +25 -84
  862. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +264 -23
  863. package/src/resources/extensions/gsd/uat-policy.ts +80 -25
  864. package/src/resources/extensions/gsd/uat-run.ts +10 -14
  865. package/src/resources/extensions/gsd/undo.ts +9 -8
  866. package/src/resources/extensions/gsd/unit-closeout.ts +201 -0
  867. package/src/resources/extensions/gsd/unit-context-composer.ts +196 -21
  868. package/src/resources/extensions/gsd/unit-context-manifest.ts +4 -28
  869. package/src/resources/extensions/gsd/unit-registry.ts +412 -0
  870. package/src/resources/extensions/gsd/unit-runtime.ts +3 -2
  871. package/src/resources/extensions/gsd/unit-tool-contracts.ts +27 -191
  872. package/src/resources/extensions/gsd/validation-block-guard.ts +2 -0
  873. package/src/resources/extensions/gsd/verdict-parser.ts +1 -1
  874. package/src/resources/extensions/gsd/verification-verdict.ts +4 -2
  875. package/src/resources/extensions/gsd/web-app-uat.ts +144 -0
  876. package/src/resources/extensions/gsd/workflow-event-ledger.ts +131 -0
  877. package/src/resources/extensions/gsd/workflow-event-vocabulary.ts +59 -0
  878. package/src/resources/extensions/gsd/workflow-events.ts +12 -20
  879. package/src/resources/extensions/gsd/workflow-mcp.ts +22 -110
  880. package/src/resources/extensions/gsd/workflow-reconcile.ts +32 -65
  881. package/src/resources/extensions/gsd/workflow-tool-surface.ts +76 -0
  882. package/src/resources/extensions/gsd/workspace-git-guard.ts +1 -0
  883. package/src/resources/extensions/gsd/worktree-git-recovery.ts +314 -0
  884. package/src/resources/extensions/gsd/worktree-lifecycle.ts +20 -25
  885. package/src/resources/extensions/gsd/worktree-manager.ts +47 -28
  886. package/src/resources/extensions/gsd/worktree-placement.ts +63 -0
  887. package/src/resources/extensions/gsd/worktree-reentry.ts +10 -7
  888. package/src/resources/extensions/gsd/worktree-root.ts +29 -6
  889. package/src/resources/extensions/gsd/worktree-safety.ts +8 -5
  890. package/src/resources/extensions/gsd/worktree-session-state.ts +11 -11
  891. package/src/resources/extensions/gsd/worktree-state-projection.ts +55 -7
  892. package/src/resources/extensions/gsd/worktree-telemetry.ts +16 -0
  893. package/src/resources/extensions/search-the-web/native-search.ts +5 -3
  894. package/src/resources/extensions/shared/browser-contract.ts +66 -0
  895. package/src/resources/extensions/shared/gsd-browser-cli.ts +141 -6
  896. package/src/resources/extensions/shared/interview-ui.ts +15 -2
  897. package/src/resources/shared/claude-runtime-floor.ts +248 -0
  898. package/src/resources/shared/gsd-browser-path-sync.ts +273 -0
  899. package/src/resources/shared/package-manager-detection.ts +1 -1
  900. package/src/resources/shared/package.json +3 -0
  901. package/src/resources/skills/create-skill/references/executable-code.md +1 -1
  902. package/src/resources/skills/create-skill/workflows/add-reference.md +8 -3
  903. package/src/resources/skills/create-skill/workflows/add-script.md +4 -2
  904. package/src/resources/skills/create-skill/workflows/add-template.md +3 -1
  905. package/src/resources/skills/create-skill/workflows/add-workflow.md +8 -3
  906. package/src/resources/skills/create-skill/workflows/upgrade-to-router.md +10 -5
  907. package/src/resources/skills/create-skill/workflows/verify-skill.md +9 -4
  908. package/src/resources/skills/gsd-browser/SKILL.md +1 -1
  909. package/src/resources/skills/spike-wrap-up/SKILL.md +9 -9
  910. package/dist/resources/extensions/gsd/user-input-boundary.js +0 -157
  911. package/dist/web/standalone/.next/server/chunks/678.js +0 -2
  912. package/dist/web/standalone/.next/static/chunks/2659.feb6499ca863ebfc.js +0 -1
  913. package/dist/web/standalone/.next/static/chunks/2772.151789db0edea835.js +0 -1
  914. package/dist/web/standalone/.next/static/chunks/4283.10a065467b5340d8.js +0 -2
  915. package/dist/web/standalone/.next/static/chunks/5826.960dc4634cc9b0d3.js +0 -1
  916. package/dist/web/standalone/.next/static/chunks/796.46f811c0fac23aab.js +0 -10
  917. package/dist/web/standalone/.next/static/chunks/8785.d32f7a61f55c1600.js +0 -1
  918. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts +0 -21
  919. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts.map +0 -1
  920. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js +0 -213
  921. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js.map +0 -1
  922. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.d.ts +0 -28
  923. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.d.ts.map +0 -1
  924. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.js +0 -249
  925. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.js.map +0 -1
  926. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.d.ts +0 -19
  927. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.d.ts.map +0 -1
  928. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.js +0 -797
  929. package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.js.map +0 -1
  930. package/scripts/ensure-workspace-builds.cjs +0 -129
  931. package/src/resources/extensions/gsd/tests/user-input-boundary.test.ts +0 -26
  932. package/src/resources/extensions/gsd/user-input-boundary.ts +0 -166
  933. /package/dist/web/standalone/.next/static/{tJOKQbQRO-9MiFDO8DIDS → T-LTxEw5wir5Lm5T3qEVd}/_buildManifest.js +0 -0
  934. /package/dist/web/standalone/.next/static/{tJOKQbQRO-9MiFDO8DIDS → T-LTxEw5wir5Lm5T3qEVd}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
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(1059),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;console.debug("[ChatBubble] markdown modules loaded");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)})}function ep({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,{})]})]})})}function eg({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&&(0,r.jsx)(el,{content: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"})]})}function eN({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}});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.liveTranscript,s.completedTurnSegments,s.currentTurnSegments,s.streamingAssistantText,s.streamingThinkingText,s.activeToolExecution,s.pendingUiRequests,s.chatUserMessages,p,u]),w=(0,a.useCallback)(e=>{n(e.replace(/\r$/,""))},[n]),v=0===y.length&&!p,N=x&&!p&&y.length>0&&!s.activeToolExecution&&0===s.pendingUiRequests.length,k=(0,a.useRef)(null),S=(0,a.useRef)(!0),A=(0,a.useCallback)(()=>{let e=k.current;e&&(S.current=e.scrollHeight-e.scrollTop-e.clientHeight<100)},[]);return(0,a.useEffect)(()=>{let e=k.current;e&&S.current&&(e.scrollTop=e.scrollHeight)},[y]),(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:v?(0,r.jsx)(ef,{connected:x,runningLabel:p?"responding":void 0,primaryAction:f,onPrimaryAction:b}):(0,r.jsxs)("div",{ref:k,onScroll:A,className:"flex-1 overflow-y-auto px-4 py-4 space-y-4",style:13!==m?{fontSize:`${m}px`}:void 0,children:[y.map((e,t)=>{switch(e.kind){case"message":return(0,r.jsx)(eg,{message:e.message,onSubmitPrompt:w},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)}}),N&&(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})]})}}}]);
@@ -1,21 +0,0 @@
1
- export type WidgetPrototypeId = "current-small" | "horizontal-bar" | "split-ribbon" | "dense-grid";
2
- export interface WidgetPrototype {
3
- id: WidgetPrototypeId;
4
- label: string;
5
- tagline: string;
6
- render: (width: number) => string[];
7
- }
8
- declare const RECOMMENDED_WIDGET_PROTOTYPE_ID: WidgetPrototypeId;
9
- export { RECOMMENDED_WIDGET_PROTOTYPE_ID };
10
- declare function lineStats(lines: string[]): {
11
- total: number;
12
- blank: number;
13
- nonBlank: number;
14
- };
15
- export { lineStats };
16
- export declare const WIDGET_PROTOTYPES: WidgetPrototype[];
17
- export declare function getWidgetPrototype(id: string): WidgetPrototype;
18
- export declare function resolveWidgetPrototypeSet(arg: string): WidgetPrototype[];
19
- export declare function listWidgetPrototypeIds(): WidgetPrototypeId[];
20
- export declare function renderWidgetPrototypeBanner(prototype: WidgetPrototype, width: number): string[];
21
- //# sourceMappingURL=gsd-widget-prototype.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gsd-widget-prototype.d.ts","sourceRoot":"","sources":["../../../../../src/modes/interactive/components/__prototype__/gsd-widget-prototype.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,GAAG,YAAY,CAAC;AAEnG,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CACpC;AAsBD,QAAA,MAAM,+BAA+B,EAAE,iBAAgC,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,CAAC;AAE3C,iBAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAItF;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AAiKrB,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAyB9C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,CAM9D;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAIxE;AAED,wBAAgB,sBAAsB,IAAI,iBAAiB,EAAE,CAE5D;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAO/F"}
@@ -1,213 +0,0 @@
1
- // PROTOTYPE - throwaway /gsd auto progress widget layout options.
2
- // Question: can the widget stay small while using terminal width horizontally?
3
- // Run: pnpm run prototype:tui-widget [-- current-small|horizontal-bar|split-ribbon|dense-grid|all]
4
- import { alignRight, padRight, truncateToWidth, visibleWidth } from "@gsd/pi-tui";
5
- import { theme } from "@gsd/pi-coding-agent/theme/theme.js";
6
- const SAMPLE = {
7
- mode: "AUTO",
8
- state: "running",
9
- health: "green",
10
- elapsed: "1h 42m",
11
- eta: "18m left",
12
- phase: "execute-task",
13
- verb: "Execute",
14
- milestone: "M004",
15
- slice: "S02",
16
- unit: "T03",
17
- title: "Compare horizontal dashboard density",
18
- slicesDone: 2,
19
- slicesTotal: 5,
20
- tasksDone: 2,
21
- tasksTotal: 4,
22
- tokens: "182k",
23
- cost: "$1.83",
24
- };
25
- const RECOMMENDED_WIDGET_PROTOTYPE_ID = "dense-grid";
26
- export { RECOMMENDED_WIDGET_PROTOTYPE_ID };
27
- function lineStats(lines) {
28
- const total = lines.length;
29
- const blank = lines.filter((line) => line.trim().length === 0).length;
30
- return { total, blank, nonBlank: total - blank };
31
- }
32
- export { lineStats };
33
- function padLine(line, width) {
34
- return padRight(truncateToWidth(line, width, ""), width);
35
- }
36
- function rule(width, color = "borderMuted") {
37
- return theme.fg(color, "─".repeat(Math.max(1, width)));
38
- }
39
- function dim(text) {
40
- return theme.fg("dim", text);
41
- }
42
- function accent(text) {
43
- return theme.fg("accent", text);
44
- }
45
- function success(text) {
46
- return theme.fg("success", text);
47
- }
48
- function text(textValue) {
49
- return theme.fg("text", textValue);
50
- }
51
- function label(textValue, color = "borderAccent") {
52
- return theme.fg(color, theme.bold(textValue.toUpperCase()));
53
- }
54
- function progressBar(width) {
55
- const done = SAMPLE.slicesDone;
56
- const total = SAMPLE.slicesTotal;
57
- const filled = Math.max(0, Math.min(width, Math.round((done / total) * width)));
58
- return `${success("█".repeat(filled))}${dim("░".repeat(Math.max(0, width - filled)))}`;
59
- }
60
- function metric(name, value, width) {
61
- const raw = `${dim(name)} ${text(value)}`;
62
- return truncateToWidth(raw, width, "…");
63
- }
64
- function column(content, width) {
65
- return padRight(truncateToWidth(content, width, "…"), width);
66
- }
67
- function fitColumns(width, parts) {
68
- if (parts.length === 0)
69
- return "";
70
- const gap = dim(" │ ");
71
- const gapWidth = visibleWidth(gap) * (parts.length - 1);
72
- const available = Math.max(parts.length * 8, width - gapWidth);
73
- const base = Math.floor(available / parts.length);
74
- let remaining = available - base * parts.length;
75
- const cols = parts.map((part) => {
76
- const w = base + (remaining > 0 ? 1 : 0);
77
- remaining--;
78
- return column(part, w);
79
- });
80
- return truncateToWidth(cols.join(gap), width, "…");
81
- }
82
- function stateLine(id, width, renderedLineCount) {
83
- const state = [
84
- `variant=${id}`,
85
- "mode=small-prototype",
86
- `width=${width}`,
87
- `lines=${renderedLineCount}`,
88
- `unit=${SAMPLE.milestone}/${SAMPLE.slice}/${SAMPLE.unit}`,
89
- ];
90
- return padLine(dim(`STATE ${state.join(" ")}`), width);
91
- }
92
- function actionTarget(maxWidth) {
93
- return truncateToWidth(`${SAMPLE.unit}: ${SAMPLE.title}`, Math.max(8, maxWidth), "…");
94
- }
95
- function renderCurrentSmall(width) {
96
- const pad = " ";
97
- const lines = [];
98
- lines.push(rule(width));
99
- lines.push(alignRight(`${pad}${accent("◒")} ${accent(theme.bold("GSD"))} ${success(SAMPLE.mode)} ${success(SAMPLE.state)}`, dim(`${SAMPLE.elapsed} · ${SAMPLE.eta}`), width));
100
- lines.push("");
101
- lines.push(alignRight(`${pad}${accent("▸")} ${accent(SAMPLE.verb)} ${text(actionTarget(Math.floor(width * 0.58)))}`, dim(SAMPLE.phase), width));
102
- const barWidth = Math.max(6, Math.min(18, Math.floor(width * 0.25)));
103
- lines.push(`${pad}${progressBar(barWidth)} ${text(`${SAMPLE.slicesDone}`)}${dim(`/${SAMPLE.slicesTotal} slices · task `)}${accent(String(SAMPLE.tasksDone + 1))}${dim(`/${SAMPLE.tasksTotal}`)}`);
104
- lines.push(rule(width));
105
- lines.push(stateLine("current-small", width, lines.length + 1));
106
- return lines.map((line) => padLine(line, width));
107
- }
108
- function renderHorizontalBar(width) {
109
- const lines = [];
110
- const left = `${accent("◒ GSD")} ${success(SAMPLE.mode)} ${dim("·")} ${success(SAMPLE.state)} ${dim("·")} ${text(`${SAMPLE.verb} ${actionTarget(Math.floor(width * 0.45))}`)}`;
111
- const right = dim(`${SAMPLE.phase} · ${SAMPLE.elapsed} · ${SAMPLE.eta}`);
112
- lines.push(rule(width, "borderAccent"));
113
- lines.push(alignRight(left, right, width));
114
- const barWidth = Math.max(8, Math.min(16, Math.floor(width * 0.14)));
115
- const progressLeft = `${progressBar(barWidth)} ${text(`${SAMPLE.slicesDone}/${SAMPLE.slicesTotal}`)}${dim(" slices")} ${dim("· task ")}${accent(String(SAMPLE.tasksDone + 1))}${dim(`/${SAMPLE.tasksTotal}`)}`;
116
- const rightBudget = Math.max(20, width - visibleWidth(progressLeft) - 4);
117
- const progressRight = truncateToWidth(`${metric("tokens", SAMPLE.tokens, 18)} ${dim("·")} ${metric("cost", SAMPLE.cost, 12)}`, rightBudget, "…");
118
- lines.push(alignRight(progressLeft, progressRight, width));
119
- lines.push(rule(width, "borderAccent"));
120
- lines.push(stateLine("horizontal-bar", width, lines.length + 1));
121
- return lines.map((line) => padLine(line, width));
122
- }
123
- function renderSplitRibbon(width) {
124
- const lines = [];
125
- const title = `${accent("GSD")} ${success(SAMPLE.mode)} ${dim("·")} ${SAMPLE.milestone}/${SAMPLE.slice}/${SAMPLE.unit}`;
126
- const time = dim(`${SAMPLE.elapsed} · ${SAMPLE.eta}`);
127
- lines.push(rule(width));
128
- lines.push(alignRight(title, time, width));
129
- const actionWidth = Math.max(18, Math.floor(width * 0.42));
130
- const phaseWidth = Math.max(14, Math.floor(width * 0.18));
131
- const progressWidth = Math.max(22, Math.floor(width * 0.22));
132
- const action = `${label("work")} ${text(actionTarget(actionWidth))}`;
133
- const phase = `${label("phase", "border")} ${dim(SAMPLE.phase)}`;
134
- const progress = `${label("progress")} ${progressBar(Math.max(8, progressWidth - 18))} ${text(`${SAMPLE.slicesDone}/${SAMPLE.slicesTotal}`)}`;
135
- const run = `${label("run", "border")} ${dim(`${SAMPLE.tokens} · ${SAMPLE.cost}`)}`;
136
- lines.push(fitColumns(width, [action, phase, progress, run]));
137
- lines.push(rule(width));
138
- lines.push(stateLine("split-ribbon", width, lines.length + 1));
139
- return lines.map((line) => padLine(line, width));
140
- }
141
- function renderDenseGrid(width) {
142
- const lines = [];
143
- const rowOne = fitColumns(width, [
144
- `${label("status", "border")} ${success(`${SAMPLE.mode} ${SAMPLE.state}`)}`,
145
- `${label("unit")} ${text(`${SAMPLE.milestone}/${SAMPLE.slice}/${SAMPLE.unit}`)}`,
146
- `${label("spend", "border")} ${dim(`${SAMPLE.tokens} · ${SAMPLE.cost}`)}`,
147
- `${label("time")} ${dim(`${SAMPLE.elapsed} · ${SAMPLE.eta}`)}`,
148
- ]);
149
- const rowTwo = fitColumns(width, [
150
- `${label("phase", "border")} ${dim(SAMPLE.phase)}`,
151
- `${label("work")} ${text(actionTarget(Math.floor(width * 0.28)))}`,
152
- `${label("task", "border")} ${accent(String(SAMPLE.tasksDone + 1))}${dim(`/${SAMPLE.tasksTotal}`)}`,
153
- `${label("slice")} ${progressBar(Math.max(8, Math.min(16, Math.floor(width * 0.16))))} ${text(`${SAMPLE.slicesDone}/${SAMPLE.slicesTotal}`)}`,
154
- ]);
155
- lines.push(rule(width, "borderAccent"));
156
- lines.push(rowOne);
157
- lines.push(rowTwo);
158
- lines.push(rule(width, "borderAccent"));
159
- lines.push(stateLine("dense-grid", width, lines.length + 1));
160
- return lines.map((line) => padLine(line, width));
161
- }
162
- export const WIDGET_PROTOTYPES = [
163
- {
164
- id: "current-small",
165
- label: "A · Current small",
166
- tagline: "Baseline: existing small mode shape, vertical action/progress stack",
167
- render: renderCurrentSmall,
168
- },
169
- {
170
- id: "horizontal-bar",
171
- label: "B · Horizontal bar",
172
- tagline: "3-line widget, action + status use the full terminal width",
173
- render: renderHorizontalBar,
174
- },
175
- {
176
- id: "split-ribbon",
177
- label: "C · Split ribbon",
178
- tagline: "Four labeled columns without duplicating footer commands",
179
- render: renderSplitRibbon,
180
- },
181
- {
182
- id: "dense-grid",
183
- label: "D · Dense grid",
184
- tagline: "Selected: two metric rows, maximum scan data without growing height",
185
- render: renderDenseGrid,
186
- },
187
- ];
188
- export function getWidgetPrototype(id) {
189
- const found = WIDGET_PROTOTYPES.find((prototype) => prototype.id === id);
190
- if (!found) {
191
- throw new Error(`Unknown widget prototype: ${id}. Options: ${WIDGET_PROTOTYPES.map((p) => p.id).join(", ")}`);
192
- }
193
- return found;
194
- }
195
- export function resolveWidgetPrototypeSet(arg) {
196
- if (arg === "all")
197
- return WIDGET_PROTOTYPES;
198
- if (arg === "recommended")
199
- return [getWidgetPrototype(RECOMMENDED_WIDGET_PROTOTYPE_ID)];
200
- return [getWidgetPrototype(arg)];
201
- }
202
- export function listWidgetPrototypeIds() {
203
- return WIDGET_PROTOTYPES.map((prototype) => prototype.id);
204
- }
205
- export function renderWidgetPrototypeBanner(prototype, width) {
206
- const labelText = `${prototype.label} ${prototype.id === RECOMMENDED_WIDGET_PROTOTYPE_ID ? "★ " : ""}${prototype.tagline}`;
207
- return [
208
- rule(width, prototype.id === RECOMMENDED_WIDGET_PROTOTYPE_ID ? "borderAccent" : "borderMuted"),
209
- padLine(labelText, width),
210
- rule(width, prototype.id === RECOMMENDED_WIDGET_PROTOTYPE_ID ? "borderAccent" : "borderMuted"),
211
- ];
212
- }
213
- //# sourceMappingURL=gsd-widget-prototype.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gsd-widget-prototype.js","sourceRoot":"","sources":["../../../../../src/modes/interactive/components/__prototype__/gsd-widget-prototype.ts"],"names":[],"mappings":"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","sourcesContent":["// PROTOTYPE - throwaway /gsd auto progress widget layout options.\n// Question: can the widget stay small while using terminal width horizontally?\n// Run: pnpm run prototype:tui-widget [-- current-small|horizontal-bar|split-ribbon|dense-grid|all]\n\nimport { alignRight, padRight, truncateToWidth, visibleWidth } from \"@gsd/pi-tui\";\nimport { theme, type ThemeColor } from \"@gsd/pi-coding-agent/theme/theme.js\";\n\nexport type WidgetPrototypeId = \"current-small\" | \"horizontal-bar\" | \"split-ribbon\" | \"dense-grid\";\n\nexport interface WidgetPrototype {\n\tid: WidgetPrototypeId;\n\tlabel: string;\n\ttagline: string;\n\trender: (width: number) => string[];\n}\n\nconst SAMPLE = {\n\tmode: \"AUTO\",\n\tstate: \"running\",\n\thealth: \"green\",\n\telapsed: \"1h 42m\",\n\teta: \"18m left\",\n\tphase: \"execute-task\",\n\tverb: \"Execute\",\n\tmilestone: \"M004\",\n\tslice: \"S02\",\n\tunit: \"T03\",\n\ttitle: \"Compare horizontal dashboard density\",\n\tslicesDone: 2,\n\tslicesTotal: 5,\n\ttasksDone: 2,\n\ttasksTotal: 4,\n\ttokens: \"182k\",\n\tcost: \"$1.83\",\n};\n\nconst RECOMMENDED_WIDGET_PROTOTYPE_ID: WidgetPrototypeId = \"dense-grid\";\nexport { RECOMMENDED_WIDGET_PROTOTYPE_ID };\n\nfunction lineStats(lines: string[]): { total: number; blank: number; nonBlank: number } {\n\tconst total = lines.length;\n\tconst blank = lines.filter((line) => line.trim().length === 0).length;\n\treturn { total, blank, nonBlank: total - blank };\n}\n\nexport { lineStats };\n\nfunction padLine(line: string, width: number): string {\n\treturn padRight(truncateToWidth(line, width, \"\"), width);\n}\n\nfunction rule(width: number, color: ThemeColor = \"borderMuted\"): string {\n\treturn theme.fg(color, \"─\".repeat(Math.max(1, width)));\n}\n\nfunction dim(text: string): string {\n\treturn theme.fg(\"dim\", text);\n}\n\nfunction accent(text: string): string {\n\treturn theme.fg(\"accent\", text);\n}\n\nfunction success(text: string): string {\n\treturn theme.fg(\"success\", text);\n}\n\nfunction text(textValue: string): string {\n\treturn theme.fg(\"text\", textValue);\n}\n\nfunction label(textValue: string, color: ThemeColor = \"borderAccent\"): string {\n\treturn theme.fg(color, theme.bold(textValue.toUpperCase()));\n}\n\nfunction progressBar(width: number): string {\n\tconst done = SAMPLE.slicesDone;\n\tconst total = SAMPLE.slicesTotal;\n\tconst filled = Math.max(0, Math.min(width, Math.round((done / total) * width)));\n\treturn `${success(\"█\".repeat(filled))}${dim(\"░\".repeat(Math.max(0, width - filled)))}`;\n}\n\nfunction metric(name: string, value: string, width: number): string {\n\tconst raw = `${dim(name)} ${text(value)}`;\n\treturn truncateToWidth(raw, width, \"…\");\n}\n\nfunction column(content: string, width: number): string {\n\treturn padRight(truncateToWidth(content, width, \"…\"), width);\n}\n\nfunction fitColumns(width: number, parts: string[]): string {\n\tif (parts.length === 0) return \"\";\n\tconst gap = dim(\" │ \");\n\tconst gapWidth = visibleWidth(gap) * (parts.length - 1);\n\tconst available = Math.max(parts.length * 8, width - gapWidth);\n\tconst base = Math.floor(available / parts.length);\n\tlet remaining = available - base * parts.length;\n\tconst cols = parts.map((part) => {\n\t\tconst w = base + (remaining > 0 ? 1 : 0);\n\t\tremaining--;\n\t\treturn column(part, w);\n\t});\n\treturn truncateToWidth(cols.join(gap), width, \"…\");\n}\n\nfunction stateLine(id: WidgetPrototypeId, width: number, renderedLineCount: number): string {\n\tconst state = [\n\t\t`variant=${id}`,\n\t\t\"mode=small-prototype\",\n\t\t`width=${width}`,\n\t\t`lines=${renderedLineCount}`,\n\t\t`unit=${SAMPLE.milestone}/${SAMPLE.slice}/${SAMPLE.unit}`,\n\t];\n\treturn padLine(dim(`STATE ${state.join(\" \")}`), width);\n}\n\nfunction actionTarget(maxWidth: number): string {\n\treturn truncateToWidth(`${SAMPLE.unit}: ${SAMPLE.title}`, Math.max(8, maxWidth), \"…\");\n}\n\nfunction renderCurrentSmall(width: number): string[] {\n\tconst pad = \" \";\n\tconst lines: string[] = [];\n\tlines.push(rule(width));\n\tlines.push(alignRight(\n\t\t`${pad}${accent(\"◒\")} ${accent(theme.bold(\"GSD\"))} ${success(SAMPLE.mode)} ${success(SAMPLE.state)}`,\n\t\tdim(`${SAMPLE.elapsed} · ${SAMPLE.eta}`),\n\t\twidth,\n\t));\n\tlines.push(\"\");\n\tlines.push(alignRight(\n\t\t`${pad}${accent(\"▸\")} ${accent(SAMPLE.verb)} ${text(actionTarget(Math.floor(width * 0.58)))}`,\n\t\tdim(SAMPLE.phase),\n\t\twidth,\n\t));\n\tconst barWidth = Math.max(6, Math.min(18, Math.floor(width * 0.25)));\n\tlines.push(`${pad}${progressBar(barWidth)} ${text(`${SAMPLE.slicesDone}`)}${dim(`/${SAMPLE.slicesTotal} slices · task `)}${accent(String(SAMPLE.tasksDone + 1))}${dim(`/${SAMPLE.tasksTotal}`)}`);\n\tlines.push(rule(width));\n\tlines.push(stateLine(\"current-small\", width, lines.length + 1));\n\treturn lines.map((line) => padLine(line, width));\n}\n\nfunction renderHorizontalBar(width: number): string[] {\n\tconst lines: string[] = [];\n\tconst left = `${accent(\"◒ GSD\")} ${success(SAMPLE.mode)} ${dim(\"·\")} ${success(SAMPLE.state)} ${dim(\"·\")} ${text(`${SAMPLE.verb} ${actionTarget(Math.floor(width * 0.45))}`)}`;\n\tconst right = dim(`${SAMPLE.phase} · ${SAMPLE.elapsed} · ${SAMPLE.eta}`);\n\tlines.push(rule(width, \"borderAccent\"));\n\tlines.push(alignRight(left, right, width));\n\n\tconst barWidth = Math.max(8, Math.min(16, Math.floor(width * 0.14)));\n\tconst progressLeft = `${progressBar(barWidth)} ${text(`${SAMPLE.slicesDone}/${SAMPLE.slicesTotal}`)}${dim(\" slices\")} ${dim(\"· task \")}${accent(String(SAMPLE.tasksDone + 1))}${dim(`/${SAMPLE.tasksTotal}`)}`;\n\tconst rightBudget = Math.max(20, width - visibleWidth(progressLeft) - 4);\n\tconst progressRight = truncateToWidth(\n\t\t`${metric(\"tokens\", SAMPLE.tokens, 18)} ${dim(\"·\")} ${metric(\"cost\", SAMPLE.cost, 12)}`,\n\t\trightBudget,\n\t\t\"…\",\n\t);\n\tlines.push(alignRight(progressLeft, progressRight, width));\n\tlines.push(rule(width, \"borderAccent\"));\n\tlines.push(stateLine(\"horizontal-bar\", width, lines.length + 1));\n\treturn lines.map((line) => padLine(line, width));\n}\n\nfunction renderSplitRibbon(width: number): string[] {\n\tconst lines: string[] = [];\n\tconst title = `${accent(\"GSD\")} ${success(SAMPLE.mode)} ${dim(\"·\")} ${SAMPLE.milestone}/${SAMPLE.slice}/${SAMPLE.unit}`;\n\tconst time = dim(`${SAMPLE.elapsed} · ${SAMPLE.eta}`);\n\tlines.push(rule(width));\n\tlines.push(alignRight(title, time, width));\n\n\tconst actionWidth = Math.max(18, Math.floor(width * 0.42));\n\tconst phaseWidth = Math.max(14, Math.floor(width * 0.18));\n\tconst progressWidth = Math.max(22, Math.floor(width * 0.22));\n\tconst action = `${label(\"work\")} ${text(actionTarget(actionWidth))}`;\n\tconst phase = `${label(\"phase\", \"border\")} ${dim(SAMPLE.phase)}`;\n\tconst progress = `${label(\"progress\")} ${progressBar(Math.max(8, progressWidth - 18))} ${text(`${SAMPLE.slicesDone}/${SAMPLE.slicesTotal}`)}`;\n\tconst run = `${label(\"run\", \"border\")} ${dim(`${SAMPLE.tokens} · ${SAMPLE.cost}`)}`;\n\tlines.push(fitColumns(width, [action, phase, progress, run]));\n\tlines.push(rule(width));\n\tlines.push(stateLine(\"split-ribbon\", width, lines.length + 1));\n\treturn lines.map((line) => padLine(line, width));\n}\n\nfunction renderDenseGrid(width: number): string[] {\n\tconst lines: string[] = [];\n\tconst rowOne = fitColumns(width, [\n\t\t`${label(\"status\", \"border\")} ${success(`${SAMPLE.mode} ${SAMPLE.state}`)}`,\n\t\t`${label(\"unit\")} ${text(`${SAMPLE.milestone}/${SAMPLE.slice}/${SAMPLE.unit}`)}`,\n\t\t`${label(\"spend\", \"border\")} ${dim(`${SAMPLE.tokens} · ${SAMPLE.cost}`)}`,\n\t\t`${label(\"time\")} ${dim(`${SAMPLE.elapsed} · ${SAMPLE.eta}`)}`,\n\t]);\n\tconst rowTwo = fitColumns(width, [\n\t\t`${label(\"phase\", \"border\")} ${dim(SAMPLE.phase)}`,\n\t\t`${label(\"work\")} ${text(actionTarget(Math.floor(width * 0.28)))}`,\n\t\t`${label(\"task\", \"border\")} ${accent(String(SAMPLE.tasksDone + 1))}${dim(`/${SAMPLE.tasksTotal}`)}`,\n\t\t`${label(\"slice\")} ${progressBar(Math.max(8, Math.min(16, Math.floor(width * 0.16))))} ${text(`${SAMPLE.slicesDone}/${SAMPLE.slicesTotal}`)}`,\n\t]);\n\tlines.push(rule(width, \"borderAccent\"));\n\tlines.push(rowOne);\n\tlines.push(rowTwo);\n\tlines.push(rule(width, \"borderAccent\"));\n\tlines.push(stateLine(\"dense-grid\", width, lines.length + 1));\n\treturn lines.map((line) => padLine(line, width));\n}\n\nexport const WIDGET_PROTOTYPES: WidgetPrototype[] = [\n\t{\n\t\tid: \"current-small\",\n\t\tlabel: \"A · Current small\",\n\t\ttagline: \"Baseline: existing small mode shape, vertical action/progress stack\",\n\t\trender: renderCurrentSmall,\n\t},\n\t{\n\t\tid: \"horizontal-bar\",\n\t\tlabel: \"B · Horizontal bar\",\n\t\ttagline: \"3-line widget, action + status use the full terminal width\",\n\t\trender: renderHorizontalBar,\n\t},\n\t{\n\t\tid: \"split-ribbon\",\n\t\tlabel: \"C · Split ribbon\",\n\t\ttagline: \"Four labeled columns without duplicating footer commands\",\n\t\trender: renderSplitRibbon,\n\t},\n\t{\n\t\tid: \"dense-grid\",\n\t\tlabel: \"D · Dense grid\",\n\t\ttagline: \"Selected: two metric rows, maximum scan data without growing height\",\n\t\trender: renderDenseGrid,\n\t},\n];\n\nexport function getWidgetPrototype(id: string): WidgetPrototype {\n\tconst found = WIDGET_PROTOTYPES.find((prototype) => prototype.id === id);\n\tif (!found) {\n\t\tthrow new Error(`Unknown widget prototype: ${id}. Options: ${WIDGET_PROTOTYPES.map((p) => p.id).join(\", \")}`);\n\t}\n\treturn found;\n}\n\nexport function resolveWidgetPrototypeSet(arg: string): WidgetPrototype[] {\n\tif (arg === \"all\") return WIDGET_PROTOTYPES;\n\tif (arg === \"recommended\") return [getWidgetPrototype(RECOMMENDED_WIDGET_PROTOTYPE_ID)];\n\treturn [getWidgetPrototype(arg)];\n}\n\nexport function listWidgetPrototypeIds(): WidgetPrototypeId[] {\n\treturn WIDGET_PROTOTYPES.map((prototype) => prototype.id);\n}\n\nexport function renderWidgetPrototypeBanner(prototype: WidgetPrototype, width: number): string[] {\n\tconst labelText = `${prototype.label} ${prototype.id === RECOMMENDED_WIDGET_PROTOTYPE_ID ? \"★ \" : \"\"}${prototype.tagline}`;\n\treturn [\n\t\trule(width, prototype.id === RECOMMENDED_WIDGET_PROTOTYPE_ID ? \"borderAccent\" : \"borderMuted\"),\n\t\tpadLine(labelText, width),\n\t\trule(width, prototype.id === RECOMMENDED_WIDGET_PROTOTYPE_ID ? \"borderAccent\" : \"borderMuted\"),\n\t];\n}\n"]}
@@ -1,28 +0,0 @@
1
- export type DensityVariantId = "current" | "compact" | "tight-tools" | "minimal";
2
- export interface DensityVariant {
3
- id: DensityVariantId;
4
- label: string;
5
- tagline: string;
6
- opts: DensityOptions;
7
- }
8
- export interface DensityOptions {
9
- railPaddingX: number;
10
- railPaddingY: number;
11
- openPaddingY: number;
12
- gapBeforeBlock: number;
13
- bottomRule: boolean;
14
- footerMode: "row" | "inline-title" | "none";
15
- stackCollapsedTools: boolean;
16
- }
17
- export declare const DENSITY_VARIANTS: DensityVariant[];
18
- /** Representative slice of a real session — mirrors the screenshot flow. */
19
- export declare function renderSampleTranscript(width: number, variant: DensityVariant): string[];
20
- export declare function renderVariantBanner(variant: DensityVariant, width: number): string[];
21
- export declare function getVariant(id: string): DensityVariant;
22
- export declare function countVisualLines(lines: string[]): number;
23
- export declare function lineStats(lines: string[]): {
24
- total: number;
25
- nonBlank: number;
26
- blank: number;
27
- };
28
- //# sourceMappingURL=transcript-density-prototype.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcript-density-prototype.d.ts","sourceRoot":"","sources":["../../../../../src/modes/interactive/components/__prototype__/transcript-density-prototype.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,gBAAgB,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,KAAK,GAAG,cAAc,GAAG,MAAM,CAAC;IAC5C,mBAAmB,EAAE,OAAO,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAyD5C,CAAC;AA6LF,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAmEvF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAIpF;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,CAMrD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAExD;AAMD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAI7F"}