gsd-pi 2.75.0-dev.063e5a3 → 2.75.0-dev.96d4bb599

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 (760) hide show
  1. package/README.md +186 -149
  2. package/dist/claude-cli-check.d.ts +10 -0
  3. package/dist/claude-cli-check.js +13 -3
  4. package/dist/headless-events.d.ts +1 -1
  5. package/dist/headless-events.js +5 -2
  6. package/dist/headless.js +5 -6
  7. package/dist/loader.js +0 -0
  8. package/dist/onboarding.d.ts +20 -1
  9. package/dist/onboarding.js +99 -39
  10. package/dist/resources/extensions/ask-user-questions.js +17 -5
  11. package/dist/resources/extensions/claude-code-cli/models.js +9 -0
  12. package/dist/resources/extensions/claude-code-cli/readiness.js +12 -2
  13. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +76 -4
  14. package/dist/resources/extensions/gsd/auto/detect-stuck.js +9 -0
  15. package/dist/resources/extensions/gsd/auto/loop.js +67 -4
  16. package/dist/resources/extensions/gsd/auto/phases.js +70 -47
  17. package/dist/resources/extensions/gsd/auto/resolve.js +1 -1
  18. package/dist/resources/extensions/gsd/auto/run-unit.js +10 -1
  19. package/dist/resources/extensions/gsd/auto/session.js +5 -0
  20. package/dist/resources/extensions/gsd/auto-artifact-paths.js +20 -0
  21. package/dist/resources/extensions/gsd/auto-dashboard.js +15 -7
  22. package/dist/resources/extensions/gsd/auto-dispatch.js +112 -6
  23. package/dist/resources/extensions/gsd/auto-loop.js +1 -1
  24. package/dist/resources/extensions/gsd/auto-model-selection.js +11 -3
  25. package/dist/resources/extensions/gsd/auto-post-unit.js +10 -8
  26. package/dist/resources/extensions/gsd/auto-prompts.js +173 -39
  27. package/dist/resources/extensions/gsd/auto-recovery.js +57 -0
  28. package/dist/resources/extensions/gsd/auto-start.js +5 -3
  29. package/dist/resources/extensions/gsd/auto-verification.js +3 -3
  30. package/dist/resources/extensions/gsd/auto-worktree.js +55 -1
  31. package/dist/resources/extensions/gsd/auto.js +57 -25
  32. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +8 -21
  33. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +45 -23
  34. package/dist/resources/extensions/gsd/bootstrap/memory-tools.js +128 -0
  35. package/dist/resources/extensions/gsd/bootstrap/query-tools.js +29 -0
  36. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +2 -0
  37. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +22 -0
  38. package/dist/resources/extensions/gsd/bootstrap/system-context.js +17 -4
  39. package/dist/resources/extensions/gsd/commands/catalog.js +81 -9
  40. package/dist/resources/extensions/gsd/commands/handlers/core.js +64 -24
  41. package/dist/resources/extensions/gsd/commands/handlers/escalate.js +171 -0
  42. package/dist/resources/extensions/gsd/commands/handlers/onboarding.js +159 -0
  43. package/dist/resources/extensions/gsd/commands/handlers/ops.js +21 -0
  44. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +228 -29
  45. package/dist/resources/extensions/gsd/commands-cmux.js +5 -2
  46. package/dist/resources/extensions/gsd/commands-config.js +5 -0
  47. package/dist/resources/extensions/gsd/commands-debug.js +388 -0
  48. package/dist/resources/extensions/gsd/commands-do.js +1 -0
  49. package/dist/resources/extensions/gsd/commands-extract-learnings.js +233 -75
  50. package/dist/resources/extensions/gsd/commands-handlers.js +21 -2
  51. package/dist/resources/extensions/gsd/commands-memory.js +462 -0
  52. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +40 -12
  53. package/dist/resources/extensions/gsd/commands-scan.js +94 -0
  54. package/dist/resources/extensions/gsd/commands-workflow-templates.js +101 -2
  55. package/dist/resources/extensions/gsd/custom-workflow-engine.js +74 -54
  56. package/dist/resources/extensions/gsd/db-writer.js +1 -0
  57. package/dist/resources/extensions/gsd/debug-session-store.js +238 -0
  58. package/dist/resources/extensions/gsd/definition-loader.js +7 -0
  59. package/dist/resources/extensions/gsd/docs/preferences-reference.md +9 -9
  60. package/dist/resources/extensions/gsd/doctor-environment.js +2 -1
  61. package/dist/resources/extensions/gsd/doctor-git-checks.js +5 -1
  62. package/dist/resources/extensions/gsd/doctor-proactive.js +4 -1
  63. package/dist/resources/extensions/gsd/doctor-providers.js +48 -20
  64. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +22 -4
  65. package/dist/resources/extensions/gsd/doctor.js +7 -1
  66. package/dist/resources/extensions/gsd/error-classifier.js +6 -3
  67. package/dist/resources/extensions/gsd/escalation.js +321 -0
  68. package/dist/resources/extensions/gsd/forensics.js +26 -29
  69. package/dist/resources/extensions/gsd/git-service.js +0 -1
  70. package/dist/resources/extensions/gsd/graph.js +26 -2
  71. package/dist/resources/extensions/gsd/gsd-db.js +490 -32
  72. package/dist/resources/extensions/gsd/health-widget-core.js +42 -14
  73. package/dist/resources/extensions/gsd/health-widget.js +7 -4
  74. package/dist/resources/extensions/gsd/init-wizard.js +86 -45
  75. package/dist/resources/extensions/gsd/markdown-renderer.js +5 -5
  76. package/dist/resources/extensions/gsd/memory-embeddings.js +219 -0
  77. package/dist/resources/extensions/gsd/memory-extractor.js +78 -27
  78. package/dist/resources/extensions/gsd/memory-ingest.js +218 -0
  79. package/dist/resources/extensions/gsd/memory-relations.js +189 -0
  80. package/dist/resources/extensions/gsd/memory-source-store.js +113 -0
  81. package/dist/resources/extensions/gsd/memory-store.js +299 -6
  82. package/dist/resources/extensions/gsd/metrics.js +1 -0
  83. package/dist/resources/extensions/gsd/model-cost-table.js +3 -1
  84. package/dist/resources/extensions/gsd/model-router.js +16 -6
  85. package/dist/resources/extensions/gsd/native-git-bridge.js +137 -5
  86. package/dist/resources/extensions/gsd/notification-overlay.js +7 -22
  87. package/dist/resources/extensions/gsd/notification-widget.js +24 -39
  88. package/dist/resources/extensions/gsd/notifications.js +4 -0
  89. package/dist/resources/extensions/gsd/onboarding-state.js +133 -0
  90. package/dist/resources/extensions/gsd/post-execution-checks.js +27 -11
  91. package/dist/resources/extensions/gsd/pre-execution-checks.js +97 -4
  92. package/dist/resources/extensions/gsd/preferences-models.js +1 -0
  93. package/dist/resources/extensions/gsd/preferences-types.js +2 -1
  94. package/dist/resources/extensions/gsd/preferences-validation.js +42 -8
  95. package/dist/resources/extensions/gsd/preferences.js +10 -10
  96. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +4 -1
  97. package/dist/resources/extensions/gsd/prompts/debug-diagnose.md +25 -0
  98. package/dist/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
  99. package/dist/resources/extensions/gsd/prompts/execute-task.md +12 -0
  100. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
  101. package/dist/resources/extensions/gsd/prompts/refine-slice.md +69 -0
  102. package/dist/resources/extensions/gsd/prompts/scan.md +79 -0
  103. package/dist/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
  104. package/dist/resources/extensions/gsd/python-resolver.js +70 -0
  105. package/dist/resources/extensions/gsd/run-manager.js +37 -17
  106. package/dist/resources/extensions/gsd/setup-catalog.js +75 -0
  107. package/dist/resources/extensions/gsd/state.js +47 -3
  108. package/dist/resources/extensions/gsd/templates/PREFERENCES.md +7 -7
  109. package/dist/resources/extensions/gsd/tools/complete-task.js +80 -0
  110. package/dist/resources/extensions/gsd/tools/memory-tools.js +306 -0
  111. package/dist/resources/extensions/gsd/tools/plan-milestone.js +37 -12
  112. package/dist/resources/extensions/gsd/tools/plan-slice.js +5 -2
  113. package/dist/resources/extensions/gsd/tools/skip-slice.js +78 -0
  114. package/dist/resources/extensions/gsd/uok/flags.js +7 -7
  115. package/dist/resources/extensions/gsd/uok/kernel.js +8 -3
  116. package/dist/resources/extensions/gsd/verification-gate.js +2 -1
  117. package/dist/resources/extensions/gsd/workflow-dispatch.js +64 -0
  118. package/dist/resources/extensions/gsd/workflow-install.js +327 -0
  119. package/dist/resources/extensions/gsd/workflow-manifest.js +8 -0
  120. package/dist/resources/extensions/gsd/workflow-mcp.js +1 -6
  121. package/dist/resources/extensions/gsd/workflow-plugins.js +346 -0
  122. package/dist/resources/extensions/gsd/workflow-projections.js +17 -15
  123. package/dist/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
  124. package/dist/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
  125. package/dist/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
  126. package/dist/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
  127. package/dist/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
  128. package/dist/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
  129. package/dist/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
  130. package/dist/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
  131. package/dist/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
  132. package/dist/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
  133. package/dist/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
  134. package/dist/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
  135. package/dist/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
  136. package/dist/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
  137. package/dist/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
  138. package/dist/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
  139. package/dist/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
  140. package/dist/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
  141. package/dist/resources/extensions/gsd/workflow-templates/registry.json +184 -0
  142. package/dist/resources/extensions/gsd/workflow-templates/release.md +118 -0
  143. package/dist/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
  144. package/dist/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
  145. package/dist/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
  146. package/dist/resources/extensions/gsd/workflow-templates/spike.md +1 -0
  147. package/dist/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
  148. package/dist/resources/extensions/gsd/worktree-resolver.js +42 -1
  149. package/dist/resources/extensions/remote-questions/commands.js +380 -0
  150. package/dist/resources/extensions/remote-questions/manager.js +39 -5
  151. package/dist/resources/extensions/remote-questions/telegram-adapter.js +79 -4
  152. package/dist/resources/extensions/shared/interview-ui.js +189 -1
  153. package/dist/resources/extensions/shared/layout-utils.js +17 -0
  154. package/dist/resources/extensions/shared/rtk-shared.js +47 -0
  155. package/dist/resources/extensions/shared/rtk.js +3 -46
  156. package/dist/resources/skills/create-workflow/SKILL.md +33 -6
  157. package/dist/rtk-shared.d.ts +10 -0
  158. package/dist/rtk-shared.js +47 -0
  159. package/dist/rtk.d.ts +2 -6
  160. package/dist/rtk.js +3 -48
  161. package/dist/shared/workspace-types.d.ts +52 -0
  162. package/dist/shared/workspace-types.js +1 -0
  163. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  164. package/dist/update-check.d.ts +10 -0
  165. package/dist/update-check.js +24 -3
  166. package/dist/web/standalone/.next/BUILD_ID +1 -1
  167. package/dist/web/standalone/.next/app-path-routes-manifest.json +5 -5
  168. package/dist/web/standalone/.next/build-manifest.json +3 -3
  169. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  170. package/dist/web/standalone/.next/react-loadable-manifest.json +2 -2
  171. package/dist/web/standalone/.next/required-server-files.json +1 -1
  172. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  173. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  174. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  175. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  176. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  177. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  178. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  179. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  180. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  181. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  182. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  183. package/dist/web/standalone/.next/server/app/_not-found.rsc +2 -2
  184. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  185. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  186. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  187. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  188. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  189. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  190. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  191. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  192. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  193. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  194. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  195. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  196. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  197. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  198. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  199. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  200. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  201. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  202. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  203. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  204. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  205. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  206. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  207. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  208. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  209. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  210. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  211. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  212. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  213. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  214. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  215. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  216. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  217. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  218. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  219. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  220. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  221. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  222. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  223. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  224. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  225. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  226. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  227. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  228. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  229. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  230. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  231. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  232. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  233. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  234. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  235. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  236. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  237. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  238. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  239. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  240. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  241. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  242. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  243. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  244. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  245. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  246. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  247. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  248. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +2 -2
  249. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  250. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  251. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  252. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  253. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  254. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  255. package/dist/web/standalone/.next/server/app/index.html +1 -1
  256. package/dist/web/standalone/.next/server/app/index.rsc +3 -3
  257. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  258. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  259. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  260. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  261. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  262. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  263. package/dist/web/standalone/.next/server/app-paths-manifest.json +5 -5
  264. package/dist/web/standalone/.next/server/chunks/6897.js +2 -2
  265. package/dist/web/standalone/.next/server/chunks/7461.js +1 -0
  266. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  267. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  268. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  269. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  270. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  271. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  272. package/dist/web/standalone/.next/static/chunks/2826.e59e8578e2e28639.js +9 -0
  273. package/dist/web/standalone/.next/static/chunks/{2008.71ee9230ad78df21.js → 3621.fc7480022c972438.js} +2 -2
  274. package/dist/web/standalone/.next/static/chunks/app/{page-f1e30ab6bb269149.js → page-5b113fd32bc2a1c3.js} +1 -1
  275. package/dist/web/standalone/.next/static/chunks/{webpack-b868033a5834586d.js → webpack-5fc74f13a25fa1bb.js} +1 -1
  276. package/dist/web/standalone/.next/static/css/632cd626b1731d88.css +1 -0
  277. package/dist/web/standalone/server.js +1 -1
  278. package/dist/welcome-screen.js +48 -24
  279. package/dist/wizard.js +2 -2
  280. package/dist/worktree-cli.d.ts +6 -5
  281. package/dist/worktree-cli.js +23 -7
  282. package/package.json +3 -3
  283. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  284. package/packages/mcp-server/dist/server.js +12 -10
  285. package/packages/mcp-server/dist/server.js.map +1 -1
  286. package/packages/mcp-server/dist/session-manager.d.ts.map +1 -1
  287. package/packages/mcp-server/dist/session-manager.js +8 -1
  288. package/packages/mcp-server/dist/session-manager.js.map +1 -1
  289. package/packages/mcp-server/dist/workflow-tools.d.ts +1 -0
  290. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  291. package/packages/mcp-server/dist/workflow-tools.js +113 -14
  292. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  293. package/packages/mcp-server/src/mcp-server.test.ts +40 -4
  294. package/packages/mcp-server/src/server.ts +12 -10
  295. package/packages/mcp-server/src/session-manager.ts +10 -3
  296. package/packages/mcp-server/src/workflow-tools.test.ts +91 -1
  297. package/packages/mcp-server/src/workflow-tools.ts +128 -18
  298. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  299. package/packages/native/tsconfig.tsbuildinfo +1 -1
  300. package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -1
  301. package/packages/pi-ai/dist/models/capability-patches.d.ts.map +1 -1
  302. package/packages/pi-ai/dist/models/capability-patches.js +3 -2
  303. package/packages/pi-ai/dist/models/capability-patches.js.map +1 -1
  304. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts +68 -0
  305. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts.map +1 -1
  306. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js +68 -0
  307. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js.map +1 -1
  308. package/packages/pi-ai/dist/models/generated/anthropic.d.ts +17 -0
  309. package/packages/pi-ai/dist/models/generated/anthropic.d.ts.map +1 -1
  310. package/packages/pi-ai/dist/models/generated/anthropic.js +17 -0
  311. package/packages/pi-ai/dist/models/generated/anthropic.js.map +1 -1
  312. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts +17 -0
  313. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts.map +1 -1
  314. package/packages/pi-ai/dist/models/generated/google-antigravity.js +17 -0
  315. package/packages/pi-ai/dist/models/generated/google-antigravity.js.map +1 -1
  316. package/packages/pi-ai/dist/models/generated/groq.d.ts +0 -153
  317. package/packages/pi-ai/dist/models/generated/groq.d.ts.map +1 -1
  318. package/packages/pi-ai/dist/models/generated/groq.js +0 -153
  319. package/packages/pi-ai/dist/models/generated/groq.js.map +1 -1
  320. package/packages/pi-ai/dist/models/generated/index.d.ts +136 -153
  321. package/packages/pi-ai/dist/models/generated/index.d.ts.map +1 -1
  322. package/packages/pi-ai/dist/models/generated/openai-codex.d.ts +17 -0
  323. package/packages/pi-ai/dist/models/generated/openai-codex.d.ts.map +1 -1
  324. package/packages/pi-ai/dist/models/generated/openai-codex.js +17 -0
  325. package/packages/pi-ai/dist/models/generated/openai-codex.js.map +1 -1
  326. package/packages/pi-ai/dist/models/generated/openrouter.d.ts +17 -0
  327. package/packages/pi-ai/dist/models/generated/openrouter.d.ts.map +1 -1
  328. package/packages/pi-ai/dist/models/generated/openrouter.js +17 -0
  329. package/packages/pi-ai/dist/models/generated/openrouter.js.map +1 -1
  330. package/packages/pi-ai/dist/models.generated.test.js +17 -0
  331. package/packages/pi-ai/dist/models.generated.test.js.map +1 -1
  332. package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts +22 -1
  333. package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  334. package/packages/pi-ai/dist/providers/amazon-bedrock.js +40 -6
  335. package/packages/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  336. package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts +2 -0
  337. package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts.map +1 -0
  338. package/packages/pi-ai/dist/providers/amazon-bedrock.test.js +106 -0
  339. package/packages/pi-ai/dist/providers/amazon-bedrock.test.js.map +1 -0
  340. package/packages/pi-ai/dist/providers/anthropic-auth.test.js +42 -1
  341. package/packages/pi-ai/dist/providers/anthropic-auth.test.js.map +1 -1
  342. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts +20 -1
  343. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
  344. package/packages/pi-ai/dist/providers/anthropic-shared.js +32 -2
  345. package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
  346. package/packages/pi-ai/dist/providers/anthropic-shared.test.js +12 -1
  347. package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +1 -1
  348. package/packages/pi-ai/dist/providers/anthropic.d.ts +11 -0
  349. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  350. package/packages/pi-ai/dist/providers/anthropic.js +18 -1
  351. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  352. package/packages/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  353. package/packages/pi-ai/dist/utils/oauth/openai-codex.js +12 -0
  354. package/packages/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
  355. package/packages/pi-ai/package.json +1 -1
  356. package/packages/pi-ai/scripts/generate-models.ts +50 -0
  357. package/packages/pi-ai/src/models/capability-patches.ts +5 -2
  358. package/packages/pi-ai/src/models/generated/amazon-bedrock.ts +68 -0
  359. package/packages/pi-ai/src/models/generated/anthropic.ts +17 -0
  360. package/packages/pi-ai/src/models/generated/google-antigravity.ts +17 -0
  361. package/packages/pi-ai/src/models/generated/groq.ts +0 -153
  362. package/packages/pi-ai/src/models/generated/openai-codex.ts +17 -0
  363. package/packages/pi-ai/src/models/generated/openrouter.ts +17 -0
  364. package/packages/pi-ai/src/models.generated.test.ts +17 -0
  365. package/packages/pi-ai/src/providers/amazon-bedrock.test.ts +164 -0
  366. package/packages/pi-ai/src/providers/amazon-bedrock.ts +41 -7
  367. package/packages/pi-ai/src/providers/anthropic-auth.test.ts +47 -1
  368. package/packages/pi-ai/src/providers/anthropic-shared.test.ts +15 -1
  369. package/packages/pi-ai/src/providers/anthropic-shared.ts +36 -3
  370. package/packages/pi-ai/src/providers/anthropic.ts +19 -1
  371. package/packages/pi-ai/src/utils/oauth/openai-codex.ts +15 -0
  372. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  373. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts +2 -0
  374. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts.map +1 -0
  375. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js +38 -0
  376. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js.map +1 -0
  377. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +14 -0
  378. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  379. package/packages/pi-coding-agent/dist/core/auth-storage.js +34 -0
  380. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  381. package/packages/pi-coding-agent/dist/core/auth-storage.test.js +74 -0
  382. package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
  383. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +4 -1
  384. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
  385. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +32 -0
  386. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
  387. package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  388. package/packages/pi-coding-agent/dist/core/sdk.js +32 -0
  389. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  390. package/packages/pi-coding-agent/dist/core/skill-tool.test.js +2 -2
  391. package/packages/pi-coding-agent/dist/core/skill-tool.test.js.map +1 -1
  392. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts.map +1 -1
  393. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +17 -7
  394. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -1
  395. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  396. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +48 -34
  397. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  398. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts +4 -0
  399. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  400. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +83 -33
  401. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  402. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
  403. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  404. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +77 -0
  405. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  406. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -66
  407. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  408. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +1 -75
  409. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  410. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +1 -1
  411. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  412. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +192 -24
  413. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  414. package/packages/pi-coding-agent/src/core/agent-session-abort-order.test.ts +56 -0
  415. package/packages/pi-coding-agent/src/core/auth-storage.test.ts +83 -0
  416. package/packages/pi-coding-agent/src/core/auth-storage.ts +35 -0
  417. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +4 -1
  418. package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +37 -1
  419. package/packages/pi-coding-agent/src/core/sdk.ts +41 -0
  420. package/packages/pi-coding-agent/src/core/skill-tool.test.ts +2 -2
  421. package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +19 -7
  422. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +53 -31
  423. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +88 -36
  424. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +83 -0
  425. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +2 -83
  426. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +208 -27
  427. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  428. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  429. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
  430. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
  431. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  432. package/pkg/dist/modes/interactive/theme/theme-schema.js +77 -0
  433. package/pkg/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  434. package/pkg/dist/modes/interactive/theme/theme.d.ts +1 -66
  435. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  436. package/pkg/dist/modes/interactive/theme/theme.js +1 -75
  437. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  438. package/pkg/dist/modes/interactive/theme/themes.d.ts +1 -1
  439. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  440. package/pkg/dist/modes/interactive/theme/themes.js +192 -24
  441. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  442. package/src/resources/extensions/ask-user-questions.ts +24 -6
  443. package/src/resources/extensions/claude-code-cli/models.ts +9 -0
  444. package/src/resources/extensions/claude-code-cli/readiness.ts +13 -2
  445. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +94 -4
  446. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +84 -0
  447. package/src/resources/extensions/gsd/auto/detect-stuck.ts +10 -0
  448. package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -0
  449. package/src/resources/extensions/gsd/auto/loop.ts +109 -3
  450. package/src/resources/extensions/gsd/auto/phases.ts +94 -60
  451. package/src/resources/extensions/gsd/auto/resolve.ts +1 -1
  452. package/src/resources/extensions/gsd/auto/run-unit.ts +11 -1
  453. package/src/resources/extensions/gsd/auto/session.ts +7 -0
  454. package/src/resources/extensions/gsd/auto-artifact-paths.ts +20 -0
  455. package/src/resources/extensions/gsd/auto-dashboard.ts +21 -4
  456. package/src/resources/extensions/gsd/auto-dispatch.ts +123 -5
  457. package/src/resources/extensions/gsd/auto-loop.ts +1 -1
  458. package/src/resources/extensions/gsd/auto-model-selection.ts +14 -3
  459. package/src/resources/extensions/gsd/auto-post-unit.ts +10 -8
  460. package/src/resources/extensions/gsd/auto-prompts.ts +201 -40
  461. package/src/resources/extensions/gsd/auto-recovery.ts +63 -1
  462. package/src/resources/extensions/gsd/auto-start.ts +8 -6
  463. package/src/resources/extensions/gsd/auto-verification.ts +3 -3
  464. package/src/resources/extensions/gsd/auto-worktree.ts +65 -0
  465. package/src/resources/extensions/gsd/auto.ts +61 -28
  466. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +8 -21
  467. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +46 -24
  468. package/src/resources/extensions/gsd/bootstrap/memory-tools.ts +158 -0
  469. package/src/resources/extensions/gsd/bootstrap/query-tools.ts +31 -0
  470. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +2 -0
  471. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +22 -0
  472. package/src/resources/extensions/gsd/bootstrap/system-context.ts +20 -4
  473. package/src/resources/extensions/gsd/commands/catalog.ts +74 -9
  474. package/src/resources/extensions/gsd/commands/handlers/core.ts +69 -27
  475. package/src/resources/extensions/gsd/commands/handlers/escalate.ts +216 -0
  476. package/src/resources/extensions/gsd/commands/handlers/onboarding.ts +196 -0
  477. package/src/resources/extensions/gsd/commands/handlers/ops.ts +21 -0
  478. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +279 -29
  479. package/src/resources/extensions/gsd/commands-cmux.ts +6 -2
  480. package/src/resources/extensions/gsd/commands-config.ts +10 -0
  481. package/src/resources/extensions/gsd/commands-debug.ts +484 -0
  482. package/src/resources/extensions/gsd/commands-do.ts +1 -0
  483. package/src/resources/extensions/gsd/commands-extract-learnings.ts +295 -76
  484. package/src/resources/extensions/gsd/commands-handlers.ts +19 -2
  485. package/src/resources/extensions/gsd/commands-memory.ts +551 -0
  486. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +49 -12
  487. package/src/resources/extensions/gsd/commands-scan.ts +125 -0
  488. package/src/resources/extensions/gsd/commands-workflow-templates.ts +129 -2
  489. package/src/resources/extensions/gsd/custom-workflow-engine.ts +85 -60
  490. package/src/resources/extensions/gsd/db-writer.ts +3 -0
  491. package/src/resources/extensions/gsd/debug-session-store.ts +377 -0
  492. package/src/resources/extensions/gsd/definition-loader.ts +7 -0
  493. package/src/resources/extensions/gsd/docs/preferences-reference.md +9 -9
  494. package/src/resources/extensions/gsd/doctor-environment.ts +2 -1
  495. package/src/resources/extensions/gsd/doctor-git-checks.ts +5 -1
  496. package/src/resources/extensions/gsd/doctor-proactive.ts +4 -1
  497. package/src/resources/extensions/gsd/doctor-providers.ts +52 -22
  498. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +23 -4
  499. package/src/resources/extensions/gsd/doctor-types.ts +1 -0
  500. package/src/resources/extensions/gsd/doctor.ts +7 -1
  501. package/src/resources/extensions/gsd/error-classifier.ts +6 -3
  502. package/src/resources/extensions/gsd/escalation.ts +367 -0
  503. package/src/resources/extensions/gsd/forensics.ts +25 -29
  504. package/src/resources/extensions/gsd/git-service.ts +0 -1
  505. package/src/resources/extensions/gsd/graph.ts +33 -3
  506. package/src/resources/extensions/gsd/gsd-db.ts +578 -32
  507. package/src/resources/extensions/gsd/health-widget-core.ts +43 -14
  508. package/src/resources/extensions/gsd/health-widget.ts +7 -3
  509. package/src/resources/extensions/gsd/init-wizard.ts +87 -54
  510. package/src/resources/extensions/gsd/markdown-renderer.ts +5 -5
  511. package/src/resources/extensions/gsd/memory-embeddings.ts +235 -0
  512. package/src/resources/extensions/gsd/memory-extractor.ts +100 -34
  513. package/src/resources/extensions/gsd/memory-ingest.ts +286 -0
  514. package/src/resources/extensions/gsd/memory-relations.ts +240 -0
  515. package/src/resources/extensions/gsd/memory-source-store.ts +138 -0
  516. package/src/resources/extensions/gsd/memory-store.ts +351 -7
  517. package/src/resources/extensions/gsd/metrics.ts +1 -0
  518. package/src/resources/extensions/gsd/model-cost-table.ts +3 -1
  519. package/src/resources/extensions/gsd/model-router.ts +25 -6
  520. package/src/resources/extensions/gsd/native-git-bridge.ts +134 -6
  521. package/src/resources/extensions/gsd/notification-overlay.ts +9 -19
  522. package/src/resources/extensions/gsd/notification-widget.ts +25 -43
  523. package/src/resources/extensions/gsd/notifications.ts +6 -0
  524. package/src/resources/extensions/gsd/onboarding-state.ts +146 -0
  525. package/src/resources/extensions/gsd/post-execution-checks.ts +37 -14
  526. package/src/resources/extensions/gsd/pre-execution-checks.ts +98 -8
  527. package/src/resources/extensions/gsd/preferences-models.ts +1 -0
  528. package/src/resources/extensions/gsd/preferences-types.ts +10 -2
  529. package/src/resources/extensions/gsd/preferences-validation.ts +33 -7
  530. package/src/resources/extensions/gsd/preferences.ts +10 -10
  531. package/src/resources/extensions/gsd/prompts/complete-milestone.md +4 -1
  532. package/src/resources/extensions/gsd/prompts/debug-diagnose.md +25 -0
  533. package/src/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
  534. package/src/resources/extensions/gsd/prompts/execute-task.md +12 -0
  535. package/src/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
  536. package/src/resources/extensions/gsd/prompts/refine-slice.md +69 -0
  537. package/src/resources/extensions/gsd/prompts/scan.md +79 -0
  538. package/src/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
  539. package/src/resources/extensions/gsd/python-resolver.ts +76 -0
  540. package/src/resources/extensions/gsd/run-manager.ts +53 -19
  541. package/src/resources/extensions/gsd/setup-catalog.ts +105 -0
  542. package/src/resources/extensions/gsd/state.ts +50 -2
  543. package/src/resources/extensions/gsd/templates/PREFERENCES.md +7 -7
  544. package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +1 -34
  545. package/src/resources/extensions/gsd/tests/artifact-corruption-2630.test.ts +7 -0
  546. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +45 -31
  547. package/src/resources/extensions/gsd/tests/auto-migrating-recovery.test.ts +63 -0
  548. package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +12 -0
  549. package/src/resources/extensions/gsd/tests/auto-prompts-fallback.test.ts +35 -0
  550. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +123 -1
  551. package/src/resources/extensions/gsd/tests/auto-wrapup-inflight-guard.test.ts +39 -0
  552. package/src/resources/extensions/gsd/tests/autocomplete-regressions-1675.test.ts +39 -0
  553. package/src/resources/extensions/gsd/tests/commands-do.test.ts +48 -0
  554. package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +333 -21
  555. package/src/resources/extensions/gsd/tests/commands-scan.test.ts +351 -0
  556. package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +8 -6
  557. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +6 -8
  558. package/src/resources/extensions/gsd/tests/complete-task.test.ts +2 -2
  559. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +63 -0
  560. package/src/resources/extensions/gsd/tests/debug-command-handler.test.ts +905 -0
  561. package/src/resources/extensions/gsd/tests/debug-command-lifecycle.integration.test.ts +1229 -0
  562. package/src/resources/extensions/gsd/tests/debug-session-store.test.ts +565 -0
  563. package/src/resources/extensions/gsd/tests/discuss-milestone-structured-questions.test.ts +64 -0
  564. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +67 -0
  565. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +62 -18
  566. package/src/resources/extensions/gsd/tests/enhanced-verification-integration.test.ts +5 -0
  567. package/src/resources/extensions/gsd/tests/escalation.test.ts +818 -0
  568. package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +29 -12
  569. package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +106 -0
  570. package/src/resources/extensions/gsd/tests/forensics-hook-key-parse.test.ts +74 -0
  571. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +0 -4
  572. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +44 -1
  573. package/src/resources/extensions/gsd/tests/health-widget.test.ts +8 -2
  574. package/src/resources/extensions/gsd/tests/init-prefs-routing.test.ts +190 -0
  575. package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +39 -0
  576. package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +44 -0
  577. package/src/resources/extensions/gsd/tests/integration/doctor-runtime.test.ts +68 -1
  578. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +109 -11
  579. package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +51 -0
  580. package/src/resources/extensions/gsd/tests/integration/integration-proof.test.ts +2 -2
  581. package/src/resources/extensions/gsd/tests/integration/test-isolation.ts +53 -0
  582. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +171 -1
  583. package/src/resources/extensions/gsd/tests/md-importer.test.ts +1 -1
  584. package/src/resources/extensions/gsd/tests/memory-embeddings.test.ts +213 -0
  585. package/src/resources/extensions/gsd/tests/memory-ingest.test.ts +153 -0
  586. package/src/resources/extensions/gsd/tests/memory-maintenance.test.ts +107 -0
  587. package/src/resources/extensions/gsd/tests/memory-relations.test.ts +175 -0
  588. package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -2
  589. package/src/resources/extensions/gsd/tests/memory-tools.test.ts +295 -0
  590. package/src/resources/extensions/gsd/tests/milestone-status-tool.test.ts +3 -2
  591. package/src/resources/extensions/gsd/tests/model-cost-table.test.ts +2 -2
  592. package/src/resources/extensions/gsd/tests/model-router.test.ts +51 -1
  593. package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +59 -0
  594. package/src/resources/extensions/gsd/tests/notification-overlay.test.ts +56 -37
  595. package/src/resources/extensions/gsd/tests/notification-widget.test.ts +1 -1
  596. package/src/resources/extensions/gsd/tests/onboarding-state.test.ts +105 -0
  597. package/src/resources/extensions/gsd/tests/plan-milestone-boundary-map-preservation.test.ts +114 -0
  598. package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +4 -5
  599. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +17 -0
  600. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +105 -1
  601. package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +275 -6
  602. package/src/resources/extensions/gsd/tests/preferences.test.ts +69 -1
  603. package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +539 -0
  604. package/src/resources/extensions/gsd/tests/projection-no-plan-overwrite.test.ts +11 -2
  605. package/src/resources/extensions/gsd/tests/projection-regression.test.ts +7 -0
  606. package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +27 -0
  607. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +24 -0
  608. package/src/resources/extensions/gsd/tests/prompt-db.test.ts +1 -1
  609. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +33 -0
  610. package/src/resources/extensions/gsd/tests/python-resolver.test.ts +131 -0
  611. package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +67 -0
  612. package/src/resources/extensions/gsd/tests/remote-notification-from-desktop.test.ts +107 -0
  613. package/src/resources/extensions/gsd/tests/requirements.test.ts +9 -0
  614. package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +153 -0
  615. package/src/resources/extensions/gsd/tests/skip-slice-cascades-tasks.test.ts +125 -0
  616. package/src/resources/extensions/gsd/tests/slice-context-injection.test.ts +16 -4
  617. package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +3 -0
  618. package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +15 -0
  619. package/src/resources/extensions/gsd/tests/summary-render-parity.test.ts +5 -0
  620. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +2 -1
  621. package/src/resources/extensions/gsd/tests/uok-flags.test.ts +31 -1
  622. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +166 -0
  623. package/src/resources/extensions/gsd/tests/verification-gate.test.ts +35 -0
  624. package/src/resources/extensions/gsd/tests/workflow-install.test.ts +113 -0
  625. package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +15 -6
  626. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +2 -2
  627. package/src/resources/extensions/gsd/tests/workflow-plugins.test.ts +310 -0
  628. package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +7 -0
  629. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +8 -2
  630. package/src/resources/extensions/gsd/tests/worktree-journal-events.test.ts +2 -1
  631. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +77 -2
  632. package/src/resources/extensions/gsd/tools/complete-task.ts +87 -0
  633. package/src/resources/extensions/gsd/tools/memory-tools.ts +380 -0
  634. package/src/resources/extensions/gsd/tools/plan-milestone.ts +42 -8
  635. package/src/resources/extensions/gsd/tools/plan-slice.ts +6 -1
  636. package/src/resources/extensions/gsd/tools/skip-slice.ts +133 -0
  637. package/src/resources/extensions/gsd/types.ts +62 -0
  638. package/src/resources/extensions/gsd/unit-runtime.ts +1 -0
  639. package/src/resources/extensions/gsd/uok/contracts.ts +2 -1
  640. package/src/resources/extensions/gsd/uok/flags.ts +7 -7
  641. package/src/resources/extensions/gsd/uok/kernel.ts +16 -4
  642. package/src/resources/extensions/gsd/verification-gate.ts +2 -1
  643. package/src/resources/extensions/gsd/workflow-dispatch.ts +106 -0
  644. package/src/resources/extensions/gsd/workflow-install.ts +423 -0
  645. package/src/resources/extensions/gsd/workflow-logger.ts +3 -1
  646. package/src/resources/extensions/gsd/workflow-manifest.ts +8 -0
  647. package/src/resources/extensions/gsd/workflow-mcp.ts +1 -6
  648. package/src/resources/extensions/gsd/workflow-plugins.ts +403 -0
  649. package/src/resources/extensions/gsd/workflow-projections.ts +18 -16
  650. package/src/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
  651. package/src/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
  652. package/src/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
  653. package/src/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
  654. package/src/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
  655. package/src/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
  656. package/src/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
  657. package/src/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
  658. package/src/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
  659. package/src/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
  660. package/src/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
  661. package/src/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
  662. package/src/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
  663. package/src/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
  664. package/src/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
  665. package/src/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
  666. package/src/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
  667. package/src/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
  668. package/src/resources/extensions/gsd/workflow-templates/registry.json +184 -0
  669. package/src/resources/extensions/gsd/workflow-templates/release.md +118 -0
  670. package/src/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
  671. package/src/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
  672. package/src/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
  673. package/src/resources/extensions/gsd/workflow-templates/spike.md +1 -0
  674. package/src/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
  675. package/src/resources/extensions/gsd/workflow-templates.ts +7 -0
  676. package/src/resources/extensions/gsd/workspace-index.ts +9 -4
  677. package/src/resources/extensions/gsd/worktree-resolver.ts +47 -1
  678. package/src/resources/extensions/remote-questions/commands.ts +480 -0
  679. package/src/resources/extensions/remote-questions/manager.ts +49 -4
  680. package/src/resources/extensions/remote-questions/telegram-adapter.ts +86 -4
  681. package/src/resources/extensions/remote-questions/tests/command-polling.test.ts +246 -0
  682. package/src/resources/extensions/remote-questions/tests/remote-answer-normalization.test.ts +92 -0
  683. package/src/resources/extensions/remote-questions/tests/telegram-commands.test.ts +267 -0
  684. package/src/resources/extensions/shared/interview-ui.ts +195 -1
  685. package/src/resources/extensions/shared/layout-utils.ts +26 -0
  686. package/src/resources/extensions/shared/rtk-shared.ts +58 -0
  687. package/src/resources/extensions/shared/rtk.ts +12 -52
  688. package/src/resources/extensions/shared/tests/interview-preview.test.ts +177 -0
  689. package/src/resources/extensions/shared/tests/preview-layout.test.ts +120 -0
  690. package/src/resources/skills/create-workflow/SKILL.md +33 -6
  691. package/dist/web/standalone/.next/static/chunks/2826.dd3dc8bbd3025fa5.js +0 -9
  692. package/dist/web/standalone/.next/static/css/f6e8833d46e738d8.css +0 -1
  693. package/packages/native/dist/ps/types.d.ts +0 -5
  694. package/packages/native/dist/ps/types.js +0 -2
  695. package/packages/native/src/ps/types.ts +0 -5
  696. package/packages/pi-ai/node_modules/@smithy/node-http-handler/LICENSE +0 -201
  697. package/packages/pi-ai/node_modules/@smithy/node-http-handler/README.md +0 -9
  698. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-cjs/index.js +0 -762
  699. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js +0 -19
  700. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/constants.js +0 -1
  701. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js +0 -9
  702. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/index.js +0 -3
  703. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +0 -230
  704. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +0 -87
  705. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +0 -32
  706. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +0 -169
  707. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js +0 -21
  708. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +0 -88
  709. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +0 -36
  710. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js +0 -21
  711. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +0 -22
  712. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +0 -23
  713. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
  714. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
  715. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js +0 -21
  716. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/timing.js +0 -4
  717. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +0 -63
  718. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts +0 -10
  719. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts +0 -5
  720. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts +0 -4
  721. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +0 -3
  722. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts +0 -46
  723. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +0 -24
  724. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +0 -12
  725. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +0 -63
  726. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts +0 -13
  727. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts +0 -12
  728. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts +0 -2
  729. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts +0 -6
  730. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts +0 -6
  731. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts +0 -2
  732. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
  733. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -6
  734. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts +0 -13
  735. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +0 -8
  736. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts +0 -10
  737. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts +0 -5
  738. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts +0 -4
  739. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts +0 -3
  740. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts +0 -46
  741. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts +0 -24
  742. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts +0 -12
  743. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts +0 -63
  744. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts +0 -13
  745. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts +0 -12
  746. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts +0 -2
  747. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts +0 -6
  748. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts +0 -6
  749. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts +0 -2
  750. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts +0 -5
  751. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts +0 -6
  752. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts +0 -13
  753. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +0 -8
  754. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts +0 -12
  755. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts +0 -12
  756. package/packages/pi-ai/node_modules/@smithy/node-http-handler/package.json +0 -68
  757. package/packages/pi-ai/oauth.d.ts +0 -1
  758. package/packages/pi-ai/oauth.js +0 -1
  759. /package/dist/web/standalone/.next/static/{j7IBD35UgrL2b298GLK3V → o61X3klsB6C0UE0X1x3PA}/_buildManifest.js +0 -0
  760. /package/dist/web/standalone/.next/static/{j7IBD35UgrL2b298GLK3V → o61X3klsB6C0UE0X1x3PA}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -27,85 +27,120 @@ One command. Walk away. Come back to a built project with clean git history.
27
27
 
28
28
  ---
29
29
 
30
- ## What's New in v2.71
30
+ ## What's New in v2.75
31
31
 
32
- ### MCP Secure Env Collect
32
+ ### Knowledge Graph & Learning Extraction
33
33
 
34
- - **Secure credential collection over MCP** — the new `secure_env_collect` tool uses MCP form elicitation to collect secrets (API keys, tokens) from external clients without exposing values in tool output. Masks input in interactive mode.
35
- - **Hardened elicitation schema** MCP elicitation schema handling is stricter, with proper validation and fallback for providers that don't support forms.
34
+ - **Knowledge graph system** — GSD now builds a structured knowledge graph from project artifacts. Learnings, decisions, and patterns are parsed into queryable graph nodes.
35
+ - **`/gsd extract-learnings`**new command extracts decisions, lessons, patterns, and surprises from completed phase artifacts into `LEARNINGS.md`, which feeds the knowledge graph automatically.
36
36
 
37
- ### MCP Reliability
37
+ ### Unified Orchestration Kernel (UOK)
38
38
 
39
- - **Stream ordering preserved** — MCP tool output now renders in the correct order, fixing interleaved output in Claude Code and other MCP clients.
40
- - **isError flag propagation** — workflow tool execution failures now correctly return `isError: true`, so MCP clients can distinguish success from failure.
41
- - **Multi-round discuss questions** — new-project discuss phase supports multi-round questioning with structured question gates.
39
+ - **UOK is now the default** — the unified orchestration kernel replaces the legacy execution path. Plan-v2 compile gates, unified audit envelopes, turn-level git transaction modes, reactive/parallel scheduling via execution graph, and model policy filtering are all enforced by default. Legacy fallback remains as an emergency escape.
42
40
 
43
- ### Model Selection Hardening
41
+ ### Extension API
44
42
 
45
- - **Unconfigured models blocked** — models without a configured provider are filtered from selection surfaces, preventing dispatch failures.
46
- - **Provider readiness required** — saved default model selection now verifies the provider is ready before accepting it.
47
- - **Session override honored** — `/gsd model` selection persists as a session override across all dispatch phases.
48
- - **Minimal context guard** — model override logic is skipped in minimal command contexts where it doesn't apply.
43
+ - **GSD Extension API** — third-party extensions can now be loaded from `.gsd/extensions/`, with a formal API surface for hooking into the GSD lifecycle (#3338).
49
44
 
50
- ### Auto-Mode Resilience
45
+ ### v1 Command Parity
51
46
 
52
- - **Credential cooldown recovery** — auto-mode survives transient 429 rate-limit responses with structured cooldown errors and a bounded retry budget.
53
- - **Fire-and-forget auto start** — auto start is detached from active turns to prevent blocking.
54
- - **Scoped forensics** — stuck-loop forensics are now scoped to auto sessions only, preventing false positives in interactive use.
47
+ - **12 missing commands added** — GSD v2 now covers all v1 commands, closing the migration gap.
55
48
 
56
49
  ### TUI Improvements
57
50
 
58
- - **Overlay subscription fix** — resolved overlay subscription lifecycle and `Ctrl+Shift+P` shortcut conflict.
59
- - **Improved overlays and shortcuts** — GSD overlays, keyboard shortcuts, and notification flows redesigned for consistency.
60
- - **Pinned output restored** — pinned output bar displays above the editor during tool execution again.
61
- - **Turn completion cleanup** — pinned latest output is cleared on turn completion, preventing stale output from persisting.
62
- - **Secure input masking** — extension input values are masked in interactive mode when collecting secrets.
51
+ - **Chat frame redesign** — compaction notices, tool execution cards, and the chat frame now share a unified styling with timestamps and model headers.
52
+ - **Inline tool calls** — assistant tool calls render inline with text instead of grouped at the end.
53
+ - **Compaction and success fixes** — tool cards no longer stick after compaction; success notifications are properly promoted.
63
54
 
64
- ### Provider Fixes
55
+ ### Auto-Mode & Reliability
65
56
 
66
- - **Full OAuth login URLs** — OAuth login URLs are now displayed in full instead of being truncated.
67
- - **MiniMax bearer auth** — MiniMax Anthropic API requests use proper bearer authentication.
68
- - **Case-insensitive tool rendering** — renderable tool matching is now case-insensitive, fixing missed tool output.
69
- - **Headless idle timeout** — idle timeout is kept off during interactive tool execution in headless mode.
57
+ - **Session timeout recovery** — auto-resume timer handles session creation timeouts; timeout counter resets on resume.
58
+ - **Compaction checkpoint fix** — all session phases are checkpointed during compaction, not just the executing phase.
59
+ - **MCP worktree routing** — tool writes are routed to the active worktree when a milestone has one; worktree paths are accepted in the project root guard.
60
+ - **Single-writer DB invariant** — the engine database now enforces a single-writer invariant, preventing corruption from concurrent access.
70
61
 
71
- ### Reliability & Internals
62
+ ### Providers & CI
72
63
 
73
- - **TOCTOU file locking** — race conditions in event log and custom workflow graph file locking are fixed with proper atomic lock acquisition.
74
- - **State derive refactor** — `deriveStateFromDb` god function extracted into composable, testable helpers.
75
- - **Windows portability** — hardened cross-platform portability across runtime, tooling, and CI.
76
- - **Model routing transparency** — dynamic routing is skipped for interactive dispatches; model changes are always shown in the banner.
77
- - **Capability-aware routing (ADR-004)** — full implementation of capability scoring, `before_model_select` hook, and task metadata extraction.
78
- - **Multi-model provider strategy (ADR-005)** — infrastructure for multi-provider model selection wired into live paths.
79
- - **Anti-fabrication guardrails** — discuss prompts enforce turn-taking to prevent fabricated user responses.
80
- - **Milestone worktree cleanup** — merged worktree cleanup uses the milestone branch instead of generic lookups.
81
- - **Tool cache control** — `cache_control` breakpoints added to tool definitions for improved prompt caching.
64
+ - **Alibaba DashScope** — added as a standalone provider (#3891).
65
+ - **Persistent language preference** — `/gsd language` sets a persistent language preference.
66
+ - **Flat-rate provider detection** — extended to custom and externalCli providers.
67
+ - **Thinking level as effort** — Claude Code now passes thinking level as an effort parameter.
68
+ - **Hardened release pipeline** — workspace versions synced in release commits, package-lock.json regenerated during bumps, incremental build cache issues resolved.
82
69
 
83
70
  See the full [Changelog](./CHANGELOG.md) for details on every release.
84
71
 
85
72
  <details>
86
- <summary>Previous highlights (v2.70 and earlier)</summary>
73
+ <summary>v2.74 highlights</summary>
74
+
75
+ - **DB-authoritative milestone completeness** — milestone completion state is derived from the database, not file markers (#4179)
76
+ - **Flat-rate provider detection** — extended to custom and externalCli providers
77
+ - **Thinking level as effort** — Claude Code passes thinking level as an effort parameter
78
+ - **False milestone merge prevention** — auto-mode no longer falsely merges after a `complete-milestone` failure (#4175)
79
+ - **Premature auto-stop fix** — prevents auto-mode from stopping early on blocked phase + missing reassessment
80
+ - **Inline tool call rendering** — assistant tool calls render inline with text instead of grouped at the end
81
+ - **Custom model preservation** — custom model selection preserved on `/gsd auto` bootstrap (#4122)
82
+
83
+ </details>
84
+
85
+ <details>
86
+ <summary>v2.73 highlights</summary>
87
+
88
+ - **Alibaba DashScope provider** — added as a standalone provider (#3891)
89
+ - **Layered depth enforcement** — discuss phase enforces depth gates for thorough requirements gathering (#4079)
90
+ - **Memory pressure watchdog** — stuck detection state persisted across sessions (#3708)
91
+ - **Ollama cloud auth** — cloud auth support and real context window resolution via `/api/show` (#4017)
92
+ - **DB corruption prevention** — direct writes to `gsd.db` blocked via hooks (#3674)
93
+ - **Circular dependency cleanup** — 3 circular dependencies broken in extension modules (#3730)
94
+ - **Subagent permissions** — GSD subagents default to `bypassPermissions` with safe built-ins pre-authorized
95
+ - **Security hardening** — auth middleware activated, shutdown/update routes hardened (#4023)
96
+ - **Stale slice reconciliation** — stale slice rows reconciled and STATE.md rebuilt before DB close (#3658)
97
+ - **Subagent model preference** — `subagent_model` preference wired through to dispatch prompt builders
98
+ - **Pipeline integrity** — 5 pipeline issues addressed from release audit, package-lock.json regenerated during bumps
99
+
100
+ </details>
101
+
102
+ <details>
103
+ <summary>v2.72 highlights</summary>
104
+
105
+ - **8 specialist subagents** — new specialist subagents and slim pro agents with GSD phase guard to prevent conflicts
106
+ - **Model selection hardening** — unconfigured models blocked from selection, provider readiness required, session override honored
107
+ - **Auto-mode resilience** — credential cooldown recovery with bounded retry budget, fire-and-forget auto start, scoped forensics
108
+ - **TUI overhaul** — overlays, keyboard shortcuts, and notification flows redesigned for consistency
109
+ - **Capability-aware routing (ADR-004)** — full implementation of capability scoring, `before_model_select` hook, and task metadata extraction
110
+ - **Multi-model provider strategy (ADR-005)** — infrastructure for multi-provider model selection wired into live paths
111
+ - **Anti-fabrication guardrails** — discuss prompts enforce turn-taking to prevent fabricated user responses
112
+ - **Windows portability** — hardened cross-platform portability across runtime, tooling, and CI
113
+ - **MCP reliability** — every registered tool exposed, SDK subpath resolution fixed, abort signals threaded through
114
+ - **Tool cache control** — `cache_control` breakpoints added to tool definitions for improved prompt caching
115
+
116
+ </details>
117
+
118
+ <details>
119
+ <summary>v2.71 highlights</summary>
120
+
121
+ - **Secure credential collection over MCP** — `secure_env_collect` tool uses MCP form elicitation to collect secrets without exposing values in tool output
122
+ - **MCP stream ordering** — tool output renders in correct order, fixing interleaved output in Claude Code and other MCP clients
123
+ - **isError flag propagation** — workflow tool execution failures correctly return `isError: true`
124
+ - **Multi-round discuss questions** — new-project discuss phase supports multi-round questioning with structured question gates
125
+ - **TOCTOU file locking** — race conditions in event log and custom workflow graph file locking fixed with atomic lock acquisition
126
+ - **State derive refactor** — `deriveStateFromDb` god function extracted into composable, testable helpers
127
+ - **Pinned output fixes** — restored above editor during tool execution, cleared on turn completion
128
+
129
+ </details>
130
+
131
+ <details>
132
+ <summary>v2.70 and earlier</summary>
87
133
 
88
134
  - **Full workflow over MCP (v2.68)** — slice replanning, milestone management, slice completion, task completion, and core planning tools exposed over MCP
89
135
  - **Transport-gated MCP (v2.68)** — workflow tool availability adapts to provider transport capabilities automatically
90
136
  - **Contextual tips system (v2.68)** — TUI and web terminal surface contextual tips based on workflow state
91
137
  - **Ask user questions over MCP (v2.70)** — interactive questions exposed via elicitation for external integrations
92
138
  - **Tiered Context Injection (M005)** — relevance-scoped context with 65%+ token reduction
93
- - **Resilient transient error recovery** — defers to Core RetryHandler and fixes cmdCtx race conditions
94
- - **Anthropic subscription routing** — auto-routed through Claude Code CLI provider with proper display names
95
139
  - **5-wave state machine hardening** — critical data integrity fixes across atomic writes, event log reconciliation, session recovery
96
- - **Discussion gate enforcement** — mechanical enforcement with fail-closed behavior
97
140
  - **Slice-level parallelism** — dependency-aware parallel dispatch within a milestone
98
- - **Persistent notification panel** — TUI overlay, widget, and web API for real-time notifications
99
141
  - **MCP server** — 6 read-only project state tools for external integrations, auto-wrapup guard, and question dedup
100
142
  - **Ollama extension** — first-class local LLM support via Ollama, with dynamic routing enabled by default
101
- - **Discord bot & daemon** — dedicated daemon package, Discord bot, and headless text mode with tool calls
102
- - **Capability-aware model routing (ADR-004)** — capability scoring, `before_model_select` hook, and task metadata extraction
103
143
  - **VS Code sidebar redesign** — SCM provider, checkpoints, diagnostics panel, activity feed, workflow controls, session forking
104
- - **`/gsd parallel watch`** — native TUI overlay for real-time worker monitoring
105
- - **Codebase map** — automatic codebase map injection for fresh agent contexts
106
- - **`--resume` flag** — resume previous sessions from the CLI
107
- - **Concurrent invocation guard** — prevents overlapping auto-mode runs
108
- - **VS Code integration** — status bar, file decorations, bash terminal, session tree, conversation history, and code lens
109
144
  - **Skills overhaul** — 30+ skill packs covering major frameworks, databases, and cloud platforms
110
145
  - **Single-writer state engine** — disciplined state transitions with machine guards and TOCTOU hardening
111
146
  - **DB-backed planning tools** — atomic SQLite tool calls for state transitions
@@ -175,8 +210,8 @@ GSD v2 solves all of these because it's not a prompt framework anymore — it's
175
210
  | Roadmap reassessment | Manual | Automatic after each slice completes |
176
211
  | Skill discovery | None | Auto-detect and install relevant skills during research |
177
212
  | Verification | Manual | Automated verification commands with auto-fix retries |
178
- | Reporting | None | Self-contained HTML reports with metrics and dep graphs |
179
- | Parallel execution | None | Multi-worker parallel milestone orchestration |
213
+ | Reporting | None | Self-contained HTML reports with metrics and dep graphs |
214
+ | Parallel execution | None | Multi-worker parallel milestone orchestration |
180
215
 
181
216
  ### Migrating from v1
182
217
 
@@ -372,45 +407,47 @@ On first run, GSD launches a branded setup wizard that walks you through LLM pro
372
407
 
373
408
  ### Commands
374
409
 
375
- | Command | What it does |
376
- | ----------------------- | --------------------------------------------------------------- |
377
- | `/gsd` | Step mode — executes one unit at a time, pauses between each |
378
- | `/gsd next` | Explicit step mode (same as bare `/gsd`) |
379
- | `/gsd auto` | Autonomous mode — researches, plans, executes, commits, repeats |
380
- | `/gsd quick` | Execute a quick task with GSD guarantees, skip planning overhead |
381
- | `/gsd stop` | Stop auto mode gracefully |
382
- | `/gsd steer` | Hard-steer plan documents during execution |
383
- | `/gsd discuss` | Discuss architecture and decisions (works alongside auto mode) |
384
- | `/gsd rethink` | Conversational project reorganization |
385
- | `/gsd mcp` | MCP server status and connectivity |
386
- | `/gsd status` | Progress dashboard |
387
- | `/gsd queue` | Queue future milestones (safe during auto mode) |
388
- | `/gsd prefs` | Model selection, timeouts, budget ceiling |
389
- | `/gsd migrate` | Migrate a v1 `.planning` directory to `.gsd` format |
390
- | `/gsd help` | Categorized command reference for all GSD subcommands |
391
- | `/gsd mode` | Switch workflow mode (solo/team) with coordinated defaults |
392
- | `/gsd forensics` | Full-access GSD debugger for auto-mode failure investigation |
393
- | `/gsd cleanup` | Archive phase directories from completed milestones |
410
+ | Command | What it does |
411
+ | ----------------------- | ----------------------------------------------------------------------------- |
412
+ | `/gsd` | Step mode — executes one unit at a time, pauses between each |
413
+ | `/gsd next` | Explicit step mode (same as bare `/gsd`) |
414
+ | `/gsd auto` | Autonomous mode — researches, plans, executes, commits, repeats |
415
+ | `/gsd quick` | Execute a quick task with GSD guarantees, skip planning overhead |
416
+ | `/gsd stop` | Stop auto mode gracefully |
417
+ | `/gsd steer` | Hard-steer plan documents during execution |
418
+ | `/gsd discuss` | Discuss architecture and decisions (works alongside auto mode) |
419
+ | `/gsd rethink` | Conversational project reorganization |
420
+ | `/gsd mcp` | MCP server status and connectivity |
421
+ | `/gsd status` | Progress dashboard |
422
+ | `/gsd queue` | Queue future milestones (safe during auto mode) |
423
+ | `/gsd prefs` | Model selection, timeouts, budget ceiling |
424
+ | `/gsd migrate` | Migrate a v1 `.planning` directory to `.gsd` format |
425
+ | `/gsd help` | Categorized command reference for all GSD subcommands |
426
+ | `/gsd mode` | Switch workflow mode (solo/team) with coordinated defaults |
427
+ | `/gsd workflow` | Unified workflow plugins list, run `<name>`, install, info, validate |
428
+ | `/gsd start <template>` | Launch a bundled or custom workflow template (bugfix, release, etc.) |
429
+ | `/gsd forensics` | Full-access GSD debugger for auto-mode failure investigation |
430
+ | `/gsd cleanup` | Archive phase directories from completed milestones |
394
431
  | `/gsd doctor` | Runtime health checks — issues surface across widget, visualizer, and reports |
395
- | `/gsd keys` | API key manager — list, add, remove, test, rotate, doctor |
396
- | `/gsd logs` | Browse activity, debug, and metrics logs |
397
- | `/gsd export --html` | Generate HTML report for current or completed milestone |
398
- | `/worktree` (`/wt`) | Git worktree lifecycle — create, switch, merge, remove |
399
- | `/voice` | Toggle real-time speech-to-text (macOS, Linux) |
400
- | `/exit` | Graceful shutdown — saves session state before exiting |
401
- | `/kill` | Kill GSD process immediately |
402
- | `/clear` | Start a new session (alias for `/new`) |
403
- | `Ctrl+Alt+G` | Toggle dashboard overlay |
404
- | `Ctrl+Alt+V` | Toggle voice transcription |
405
- | `Ctrl+Alt+B` | Show background shell processes |
406
- | `Alt+V` | Paste clipboard image (macOS) |
407
- | `gsd config` | Re-run the setup wizard (LLM provider + tool keys) |
408
- | `gsd update` | Update GSD to the latest version |
409
- | `gsd headless [cmd]` | Run `/gsd` commands without TUI (CI, cron, scripts) |
410
- | `gsd headless query` | Instant JSON snapshot — state, next dispatch, costs (no LLM) |
411
- | `gsd --continue` (`-c`) | Resume the most recent session for the current directory |
412
- | `gsd --worktree` (`-w`) | Launch an isolated worktree session for the active milestone |
413
- | `gsd sessions` | Interactive session picker — browse and resume any saved session |
432
+ | `/gsd keys` | API key manager — list, add, remove, test, rotate, doctor |
433
+ | `/gsd logs` | Browse activity, debug, and metrics logs |
434
+ | `/gsd export --html` | Generate HTML report for current or completed milestone |
435
+ | `/worktree` (`/wt`) | Git worktree lifecycle — create, switch, merge, remove |
436
+ | `/voice` | Toggle real-time speech-to-text (macOS, Linux) |
437
+ | `/exit` | Graceful shutdown — saves session state before exiting |
438
+ | `/kill` | Kill GSD process immediately |
439
+ | `/clear` | Start a new session (alias for `/new`) |
440
+ | `Ctrl+Alt+G` | Toggle dashboard overlay |
441
+ | `Ctrl+Alt+V` | Toggle voice transcription |
442
+ | `Ctrl+Alt+B` | Show background shell processes |
443
+ | `Alt+V` | Paste clipboard image (macOS) |
444
+ | `gsd config` | Re-run the setup wizard (LLM provider + tool keys) |
445
+ | `gsd update` | Update GSD to the latest version |
446
+ | `gsd headless [cmd]` | Run `/gsd` commands without TUI (CI, cron, scripts) |
447
+ | `gsd headless query` | Instant JSON snapshot — state, next dispatch, costs (no LLM) |
448
+ | `gsd --continue` (`-c`) | Resume the most recent session for the current directory |
449
+ | `gsd --worktree` (`-w`) | Launch an isolated worktree session for the active milestone |
450
+ | `gsd sessions` | Interactive session picker — browse and resume any saved session |
414
451
 
415
452
  ---
416
453
 
@@ -497,7 +534,7 @@ version: 1
497
534
  models:
498
535
  research: claude-sonnet-4-6
499
536
  planning:
500
- model: claude-opus-4-6
537
+ model: claude-opus-4-7
501
538
  fallbacks:
502
539
  - openrouter/z-ai/glm-5
503
540
  - openrouter/minimax/minimax-m2.5
@@ -519,24 +556,24 @@ auto_report: true
519
556
 
520
557
  **Key settings:**
521
558
 
522
- | Setting | What it controls |
523
- | ---------------------- | ----------------------------------------------------------------------------------------------------- |
524
- | `models.*` | Per-phase model selection — string for a single model, or `{model, fallbacks}` for automatic failover |
525
- | `skill_discovery` | `auto` / `suggest` / `off` — how GSD finds and applies skills |
526
- | `auto_supervisor.*` | Timeout thresholds for auto mode supervision |
527
- | `budget_ceiling` | USD ceiling — auto mode pauses when reached |
528
- | `uat_dispatch` | Enable automatic UAT runs after slice completion |
529
- | `always_use_skills` | Skills to always load when relevant |
530
- | `skill_rules` | Situational rules for skill routing |
531
- | `skill_staleness_days` | Skills unused for N days get deprioritized (default: 60, 0 = disabled) |
532
- | `unique_milestone_ids` | Uses unique milestone names to avoid clashes when working in teams of people |
533
- | `git.isolation` | `none` (default), `worktree`, or `branch` — enable worktree or branch isolation for milestone work |
534
- | `git.manage_gitignore` | Set `false` to prevent GSD from modifying `.gitignore` |
535
- | `verification_commands`| Array of shell commands to run after task execution (e.g., `["npm run lint", "npm run test"]`) |
536
- | `verification_auto_fix`| Auto-retry on verification failures (default: true) |
537
- | `verification_max_retries` | Max retries for verification failures (default: 2) |
538
- | `phases.require_slice_discussion` | Pause auto-mode before each slice for human discussion review |
539
- | `auto_report` | Auto-generate HTML reports after milestone completion (default: true) |
559
+ | Setting | What it controls |
560
+ | --------------------------------- | ----------------------------------------------------------------------------------------------------- |
561
+ | `models.*` | Per-phase model selection — string for a single model, or `{model, fallbacks}` for automatic failover |
562
+ | `skill_discovery` | `auto` / `suggest` / `off` — how GSD finds and applies skills |
563
+ | `auto_supervisor.*` | Timeout thresholds for auto mode supervision |
564
+ | `budget_ceiling` | USD ceiling — auto mode pauses when reached |
565
+ | `uat_dispatch` | Enable automatic UAT runs after slice completion |
566
+ | `always_use_skills` | Skills to always load when relevant |
567
+ | `skill_rules` | Situational rules for skill routing |
568
+ | `skill_staleness_days` | Skills unused for N days get deprioritized (default: 60, 0 = disabled) |
569
+ | `unique_milestone_ids` | Uses unique milestone names to avoid clashes when working in teams of people |
570
+ | `git.isolation` | `none` (default), `worktree`, or `branch` — enable worktree or branch isolation for milestone work |
571
+ | `git.manage_gitignore` | Set `false` to prevent GSD from modifying `.gitignore` |
572
+ | `verification_commands` | Array of shell commands to run after task execution (e.g., `["npm run lint", "npm run test"]`) |
573
+ | `verification_auto_fix` | Auto-retry on verification failures (default: true) |
574
+ | `verification_max_retries` | Max retries for verification failures (default: 2) |
575
+ | `phases.require_slice_discussion` | Pause auto-mode before each slice for human discussion review |
576
+ | `auto_report` | Auto-generate HTML reports after milestone completion (default: true) |
540
577
 
541
578
  ### Agent Instructions
542
579
 
@@ -553,14 +590,14 @@ Start GSD with `gsd --debug` to enable structured JSONL diagnostic logging. Debu
553
590
  GSD includes a coordinated token optimization system that reduces usage by 40-60% on cost-sensitive workloads. Set a single preference to coordinate model selection, phase skipping, and context compression:
554
591
 
555
592
  ```yaml
556
- token_profile: budget # or balanced (default), quality
593
+ token_profile: budget # or balanced (default), quality
557
594
  ```
558
595
 
559
- | Profile | Savings | What It Does |
560
- |---------|---------|-------------|
561
- | `budget` | 40-60% | Cheap models, skip research/reassess, minimal context inlining |
562
- | `balanced` | 10-20% | Default models, skip slice research, standard context |
563
- | `quality` | 0% | All phases, all context, full model power |
596
+ | Profile | Savings | What It Does |
597
+ | ---------- | ------- | -------------------------------------------------------------- |
598
+ | `budget` | 40-60% | Cheap models, skip research/reassess, minimal context inlining |
599
+ | `balanced` | 10-20% | Default models, skip slice research, standard context |
600
+ | `quality` | 0% | All phases, all context, full model power |
564
601
 
565
602
  **Complexity-based routing** automatically classifies tasks as simple/standard/complex and routes to appropriate models. Simple docs tasks get Haiku; complex architectural work gets Opus. The classification is heuristic (sub-millisecond, no LLM calls) and learns from outcomes via a persistent routing history.
566
603
 
@@ -572,44 +609,44 @@ See the full [Token Optimization Guide](./docs/user-docs/token-optimization.md)
572
609
 
573
610
  GSD ships with 24 extensions, all loaded automatically:
574
611
 
575
- | Extension | What it provides |
576
- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------- |
577
- | **GSD** | Core workflow engine, auto mode, commands, dashboard |
612
+ | Extension | What it provides |
613
+ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
614
+ | **GSD** | Core workflow engine, auto mode, commands, dashboard |
578
615
  | **Browser Tools** | Playwright-based browser with form intelligence, intent-ranked element finding, semantic actions, PDF export, session state persistence, network mocking, device emulation, structured extraction, visual diffing, region zoom, test code generation, and prompt injection detection |
579
- | **Search the Web** | Brave Search, Tavily, or Jina page extraction |
580
- | **Google Search** | Gemini-powered web search with AI-synthesized answers |
581
- | **Context7** | Up-to-date library/framework documentation |
582
- | **Background Shell** | Long-running process management with readiness detection |
583
- | **Async Jobs** | Background bash commands with job tracking and cancellation |
584
- | **Subagent** | Delegated tasks with isolated context windows |
585
- | **GitHub** | Full-suite GitHub issues and PR management via `/gh` command |
586
- | **Mac Tools** | macOS native app automation via Accessibility APIs |
587
- | **MCP Client** | Native MCP server integration via @modelcontextprotocol/sdk |
588
- | **Voice** | Real-time speech-to-text transcription (macOS, Linux — Ubuntu 22.04+) |
589
- | **Slash Commands** | Custom command creation |
590
- | **Ask User Questions** | Structured user input with single/multi-select |
591
- | **Secure Env Collect** | Masked secret collection without manual .env editing |
592
- | **Remote Questions** | Route decisions to Slack/Discord when human input is needed in headless/CI mode |
593
- | **Universal Config** | Discover and import MCP servers and rules from other AI coding tools |
594
- | **AWS Auth** | Automatic Bedrock credential refresh for AWS-hosted models |
595
- | **Ollama** | First-class local LLM support via Ollama |
596
- | **Claude Code CLI** | External provider extension for Claude Code CLI |
597
- | **cmux** | Claude multiplexer integration — desktop notifications, sidebar metadata, visual subagent splits |
598
- | **GitHub Sync** | Auto-sync milestones to GitHub Issues, PRs, and Milestones |
599
- | **LSP** | Language Server Protocol — diagnostics, definitions, references, hover, rename |
600
- | **TTSR** | Tool-triggered system rules — conditional context injection based on tool usage |
616
+ | **Search the Web** | Brave Search, Tavily, or Jina page extraction |
617
+ | **Google Search** | Gemini-powered web search with AI-synthesized answers |
618
+ | **Context7** | Up-to-date library/framework documentation |
619
+ | **Background Shell** | Long-running process management with readiness detection |
620
+ | **Async Jobs** | Background bash commands with job tracking and cancellation |
621
+ | **Subagent** | Delegated tasks with isolated context windows |
622
+ | **GitHub** | Full-suite GitHub issues and PR management via `/gh` command |
623
+ | **Mac Tools** | macOS native app automation via Accessibility APIs |
624
+ | **MCP Client** | Native MCP server integration via @modelcontextprotocol/sdk |
625
+ | **Voice** | Real-time speech-to-text transcription (macOS, Linux — Ubuntu 22.04+) |
626
+ | **Slash Commands** | Custom command creation |
627
+ | **Ask User Questions** | Structured user input with single/multi-select |
628
+ | **Secure Env Collect** | Masked secret collection without manual .env editing |
629
+ | **Remote Questions** | Route decisions to Slack/Discord when human input is needed in headless/CI mode |
630
+ | **Universal Config** | Discover and import MCP servers and rules from other AI coding tools |
631
+ | **AWS Auth** | Automatic Bedrock credential refresh for AWS-hosted models |
632
+ | **Ollama** | First-class local LLM support via Ollama |
633
+ | **Claude Code CLI** | External provider extension for Claude Code CLI |
634
+ | **cmux** | Claude multiplexer integration — desktop notifications, sidebar metadata, visual subagent splits |
635
+ | **GitHub Sync** | Auto-sync milestones to GitHub Issues, PRs, and Milestones |
636
+ | **LSP** | Language Server Protocol — diagnostics, definitions, references, hover, rename |
637
+ | **TTSR** | Tool-triggered system rules — conditional context injection based on tool usage |
601
638
 
602
639
  ### Bundled Agents
603
640
 
604
641
  Five specialized subagents for delegated work:
605
642
 
606
- | Agent | Role |
607
- | ------------------- | ------------------------------------------------------------ |
608
- | **Scout** | Fast codebase recon — returns compressed context for handoff |
609
- | **Researcher** | Web research — finds and synthesizes current information |
610
- | **Worker** | General-purpose execution in an isolated context window |
611
- | **JavaScript Pro** | JavaScript-specialized execution and debugging |
612
- | **TypeScript Pro** | TypeScript-specialized execution and debugging |
643
+ | Agent | Role |
644
+ | ------------------ | ------------------------------------------------------------ |
645
+ | **Scout** | Fast codebase recon — returns compressed context for handoff |
646
+ | **Researcher** | Web research — finds and synthesizes current information |
647
+ | **Worker** | General-purpose execution in an isolated context window |
648
+ | **JavaScript Pro** | JavaScript-specialized execution and debugging |
649
+ | **TypeScript Pro** | TypeScript-specialized execution and debugging |
613
650
 
614
651
  ---
615
652
 
@@ -756,7 +793,7 @@ In your preferences (`/gsd prefs`), assign different models to different phases:
756
793
  models:
757
794
  research: openrouter/deepseek/deepseek-r1
758
795
  planning:
759
- model: claude-opus-4-6
796
+ model: claude-opus-4-7
760
797
  fallbacks:
761
798
  - openrouter/z-ai/glm-5
762
799
  execution: claude-sonnet-4-6
@@ -769,8 +806,8 @@ Use expensive models where quality matters (planning, complex execution) and che
769
806
 
770
807
  ## Ecosystem
771
808
 
772
- | Project | Description |
773
- | ------- | ----------- |
809
+ | Project | Description |
810
+ | --------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
774
811
  | [GSD2 Config Utility](https://github.com/jeremymcs/gsd2-config) | Standalone configuration tool for managing GSD preferences, providers, and API keys |
775
812
 
776
813
  ---
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Platform-correct binary name for the Claude Code CLI.
3
+ *
4
+ * On Windows, npm-global binaries are installed as `.cmd` shims and
5
+ * `execFileSync` does not auto-resolve the extension — calling bare
6
+ * `claude` would fail with ENOENT even when the CLI is installed and
7
+ * authenticated. Mirrors the `NPM_COMMAND` pattern in
8
+ * `src/resources/extensions/gsd/pre-execution-checks.ts`.
9
+ */
10
+ export declare const CLAUDE_COMMAND: string;
1
11
  /**
2
12
  * Check if the `claude` binary is installed (regardless of auth state).
3
13
  */
@@ -2,12 +2,22 @@
2
2
  // Lightweight check used at onboarding time (before extensions load).
3
3
  // The full readiness check with caching lives in the claude-code-cli extension.
4
4
  import { execFileSync } from 'node:child_process';
5
+ /**
6
+ * Platform-correct binary name for the Claude Code CLI.
7
+ *
8
+ * On Windows, npm-global binaries are installed as `.cmd` shims and
9
+ * `execFileSync` does not auto-resolve the extension — calling bare
10
+ * `claude` would fail with ENOENT even when the CLI is installed and
11
+ * authenticated. Mirrors the `NPM_COMMAND` pattern in
12
+ * `src/resources/extensions/gsd/pre-execution-checks.ts`.
13
+ */
14
+ export const CLAUDE_COMMAND = process.platform === 'win32' ? 'claude.cmd' : 'claude';
5
15
  /**
6
16
  * Check if the `claude` binary is installed (regardless of auth state).
7
17
  */
8
18
  export function isClaudeBinaryInstalled() {
9
19
  try {
10
- execFileSync('claude', ['--version'], { timeout: 5_000, stdio: 'pipe' });
20
+ execFileSync(CLAUDE_COMMAND, ['--version'], { timeout: 5_000, stdio: 'pipe' });
11
21
  return true;
12
22
  }
13
23
  catch {
@@ -19,13 +29,13 @@ export function isClaudeBinaryInstalled() {
19
29
  */
20
30
  export function isClaudeCliReady() {
21
31
  try {
22
- execFileSync('claude', ['--version'], { timeout: 5_000, stdio: 'pipe' });
32
+ execFileSync(CLAUDE_COMMAND, ['--version'], { timeout: 5_000, stdio: 'pipe' });
23
33
  }
24
34
  catch {
25
35
  return false;
26
36
  }
27
37
  try {
28
- const output = execFileSync('claude', ['auth', 'status'], { timeout: 5_000, stdio: 'pipe' })
38
+ const output = execFileSync(CLAUDE_COMMAND, ['auth', 'status'], { timeout: 5_000, stdio: 'pipe' })
29
39
  .toString()
30
40
  .toLowerCase();
31
41
  return !(/not logged in|no credentials|unauthenticated|not authenticated/i.test(output));
@@ -47,4 +47,4 @@ export declare function isInteractiveHeadlessTool(toolName: string | undefined):
47
47
  export declare function shouldArmHeadlessIdleTimeout(toolCallCount: number, interactiveToolCount: number): boolean;
48
48
  export declare const FIRE_AND_FORGET_METHODS: Set<string>;
49
49
  export declare const QUICK_COMMANDS: Set<string>;
50
- export declare function isQuickCommand(command: string): boolean;
50
+ export declare function isQuickCommand(command: string, commandArgs?: readonly string[]): boolean;
@@ -100,6 +100,9 @@ export const QUICK_COMMANDS = new Set([
100
100
  'cleanup', 'migrate', 'doctor', 'remote', 'help', 'steer',
101
101
  'triage', 'visualize',
102
102
  ]);
103
- export function isQuickCommand(command) {
104
- return QUICK_COMMANDS.has(command);
103
+ const QUICK_WORKFLOW_SUBCOMMANDS = new Set(['list', 'validate']);
104
+ export function isQuickCommand(command, commandArgs = []) {
105
+ if (QUICK_COMMANDS.has(command))
106
+ return true;
107
+ return command === 'workflow' && QUICK_WORKFLOW_SUBCOMMANDS.has(commandArgs[0] ?? '');
105
108
  }
package/dist/headless.js CHANGED
@@ -606,7 +606,7 @@ async function runHeadlessOnce(options, restartCount) {
606
606
  }
607
607
  }
608
608
  // Quick commands: resolve on first agent_end
609
- if (eventObj.type === 'agent_end' && isQuickCommand(options.command) && !completed) {
609
+ if (eventObj.type === 'agent_end' && isQuickCommand(options.command, options.commandArgs) && !completed) {
610
610
  completed = true;
611
611
  resolveCompletion();
612
612
  return;
@@ -622,10 +622,9 @@ async function runHeadlessOnce(options, restartCount) {
622
622
  // Kill child process — don't await, just fire and exit.
623
623
  // The main flow may be awaiting a promise that resolves when the child dies,
624
624
  // which would race with this handler. Exit synchronously to ensure correct exit code.
625
- try {
626
- client.stop().catch(() => { });
627
- }
628
- catch { }
625
+ void client.stop().catch((error) => {
626
+ process.stderr.write(`[headless] Warning: failed to stop child process: ${error instanceof Error ? error.message : String(error)}\n`);
627
+ });
629
628
  if (timeoutTimer)
630
629
  clearTimeout(timeoutTimer);
631
630
  if (idleTimer)
@@ -707,7 +706,7 @@ async function runHeadlessOnce(options, restartCount) {
707
706
  process.stdin.resume();
708
707
  }
709
708
  // Detect child process crash (read-only exit event subscription — not stdin access)
710
- const internalProcess = client.process;
709
+ const internalProcess = Reflect.get(client, 'process');
711
710
  if (internalProcess) {
712
711
  internalProcess.on('exit', (code) => {
713
712
  if (!completed) {
package/dist/loader.js CHANGED
File without changes
@@ -10,6 +10,20 @@
10
10
  * All steps are skippable. All errors are recoverable. Never crashes boot.
11
11
  */
12
12
  import type { AuthStorage } from '@gsd/pi-coding-agent';
13
+ type ClackModule = typeof import('@clack/prompts');
14
+ type PicoModule = {
15
+ cyan: (s: string) => string;
16
+ green: (s: string) => string;
17
+ yellow: (s: string) => string;
18
+ dim: (s: string) => string;
19
+ bold: (s: string) => string;
20
+ red: (s: string) => string;
21
+ reset: (s: string) => string;
22
+ };
23
+ interface RunOnboardingOptions {
24
+ /** Show logo + intro banner. Disable when onboarding is launched inside an active TUI session. */
25
+ showIntro?: boolean;
26
+ }
13
27
  /**
14
28
  * Determine if the onboarding wizard should run.
15
29
  *
@@ -36,4 +50,9 @@ export declare function shouldRunOnboarding(authStorage: AuthStorage, settingsDe
36
50
  * All steps are skippable. All errors are recoverable.
37
51
  * Writes status to stderr during execution.
38
52
  */
39
- export declare function runOnboarding(authStorage: AuthStorage): Promise<void>;
53
+ export declare function runOnboarding(authStorage: AuthStorage, opts?: RunOnboardingOptions): Promise<void>;
54
+ export declare function runLlmStep(p: ClackModule, pc: PicoModule, authStorage: AuthStorage): Promise<boolean>;
55
+ export declare function runWebSearchStep(p: ClackModule, pc: PicoModule, authStorage: AuthStorage, isAnthropicAuth: boolean): Promise<string | null>;
56
+ export declare function runToolKeysStep(p: ClackModule, pc: PicoModule, authStorage: AuthStorage): Promise<number>;
57
+ export declare function runRemoteQuestionsStep(p: ClackModule, pc: PicoModule, authStorage: AuthStorage): Promise<string | null>;
58
+ export {};