gsd-pi 2.75.0-dev.063e5a3 → 2.75.0-dev.fd2382b9f

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 (606) 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.js +39 -14
  9. package/dist/resources/extensions/ask-user-questions.js +17 -5
  10. package/dist/resources/extensions/claude-code-cli/models.js +9 -0
  11. package/dist/resources/extensions/claude-code-cli/readiness.js +12 -2
  12. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +76 -4
  13. package/dist/resources/extensions/gsd/auto/detect-stuck.js +9 -0
  14. package/dist/resources/extensions/gsd/auto/loop.js +67 -4
  15. package/dist/resources/extensions/gsd/auto/phases.js +70 -47
  16. package/dist/resources/extensions/gsd/auto/resolve.js +1 -1
  17. package/dist/resources/extensions/gsd/auto/run-unit.js +10 -1
  18. package/dist/resources/extensions/gsd/auto/session.js +5 -0
  19. package/dist/resources/extensions/gsd/auto-artifact-paths.js +20 -0
  20. package/dist/resources/extensions/gsd/auto-dashboard.js +15 -7
  21. package/dist/resources/extensions/gsd/auto-dispatch.js +112 -6
  22. package/dist/resources/extensions/gsd/auto-loop.js +1 -1
  23. package/dist/resources/extensions/gsd/auto-model-selection.js +10 -2
  24. package/dist/resources/extensions/gsd/auto-post-unit.js +9 -7
  25. package/dist/resources/extensions/gsd/auto-prompts.js +151 -37
  26. package/dist/resources/extensions/gsd/auto-recovery.js +57 -0
  27. package/dist/resources/extensions/gsd/auto-start.js +5 -3
  28. package/dist/resources/extensions/gsd/auto-verification.js +3 -3
  29. package/dist/resources/extensions/gsd/auto-worktree.js +55 -1
  30. package/dist/resources/extensions/gsd/auto.js +50 -25
  31. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +8 -21
  32. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +22 -4
  33. package/dist/resources/extensions/gsd/bootstrap/query-tools.js +29 -0
  34. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +22 -0
  35. package/dist/resources/extensions/gsd/commands/catalog.js +67 -3
  36. package/dist/resources/extensions/gsd/commands/handlers/core.js +6 -0
  37. package/dist/resources/extensions/gsd/commands/handlers/escalate.js +171 -0
  38. package/dist/resources/extensions/gsd/commands/handlers/ops.js +16 -0
  39. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +228 -29
  40. package/dist/resources/extensions/gsd/commands-cmux.js +5 -2
  41. package/dist/resources/extensions/gsd/commands-debug.js +388 -0
  42. package/dist/resources/extensions/gsd/commands-do.js +1 -0
  43. package/dist/resources/extensions/gsd/commands-handlers.js +21 -2
  44. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +1 -1
  45. package/dist/resources/extensions/gsd/commands-scan.js +94 -0
  46. package/dist/resources/extensions/gsd/commands-workflow-templates.js +101 -2
  47. package/dist/resources/extensions/gsd/custom-workflow-engine.js +74 -54
  48. package/dist/resources/extensions/gsd/db-writer.js +1 -0
  49. package/dist/resources/extensions/gsd/debug-session-store.js +238 -0
  50. package/dist/resources/extensions/gsd/definition-loader.js +7 -0
  51. package/dist/resources/extensions/gsd/docs/preferences-reference.md +9 -9
  52. package/dist/resources/extensions/gsd/doctor-git-checks.js +5 -1
  53. package/dist/resources/extensions/gsd/doctor-proactive.js +4 -1
  54. package/dist/resources/extensions/gsd/doctor-providers.js +48 -20
  55. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +22 -4
  56. package/dist/resources/extensions/gsd/doctor.js +7 -1
  57. package/dist/resources/extensions/gsd/error-classifier.js +6 -3
  58. package/dist/resources/extensions/gsd/escalation.js +321 -0
  59. package/dist/resources/extensions/gsd/forensics.js +26 -29
  60. package/dist/resources/extensions/gsd/git-service.js +0 -1
  61. package/dist/resources/extensions/gsd/graph.js +26 -2
  62. package/dist/resources/extensions/gsd/gsd-db.js +254 -29
  63. package/dist/resources/extensions/gsd/health-widget-core.js +42 -14
  64. package/dist/resources/extensions/gsd/health-widget.js +7 -4
  65. package/dist/resources/extensions/gsd/metrics.js +1 -0
  66. package/dist/resources/extensions/gsd/model-cost-table.js +3 -1
  67. package/dist/resources/extensions/gsd/model-router.js +7 -1
  68. package/dist/resources/extensions/gsd/native-git-bridge.js +137 -5
  69. package/dist/resources/extensions/gsd/notification-widget.js +24 -39
  70. package/dist/resources/extensions/gsd/notifications.js +4 -0
  71. package/dist/resources/extensions/gsd/post-execution-checks.js +27 -11
  72. package/dist/resources/extensions/gsd/pre-execution-checks.js +97 -4
  73. package/dist/resources/extensions/gsd/preferences-models.js +1 -0
  74. package/dist/resources/extensions/gsd/preferences-types.js +2 -1
  75. package/dist/resources/extensions/gsd/preferences-validation.js +42 -8
  76. package/dist/resources/extensions/gsd/preferences.js +10 -10
  77. package/dist/resources/extensions/gsd/prompts/debug-diagnose.md +25 -0
  78. package/dist/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
  79. package/dist/resources/extensions/gsd/prompts/execute-task.md +12 -0
  80. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
  81. package/dist/resources/extensions/gsd/prompts/refine-slice.md +69 -0
  82. package/dist/resources/extensions/gsd/prompts/scan.md +79 -0
  83. package/dist/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
  84. package/dist/resources/extensions/gsd/run-manager.js +37 -17
  85. package/dist/resources/extensions/gsd/state.js +47 -3
  86. package/dist/resources/extensions/gsd/templates/PREFERENCES.md +7 -7
  87. package/dist/resources/extensions/gsd/tools/complete-task.js +80 -0
  88. package/dist/resources/extensions/gsd/tools/plan-milestone.js +37 -12
  89. package/dist/resources/extensions/gsd/tools/plan-slice.js +5 -2
  90. package/dist/resources/extensions/gsd/uok/flags.js +7 -7
  91. package/dist/resources/extensions/gsd/uok/kernel.js +8 -3
  92. package/dist/resources/extensions/gsd/workflow-dispatch.js +64 -0
  93. package/dist/resources/extensions/gsd/workflow-install.js +327 -0
  94. package/dist/resources/extensions/gsd/workflow-manifest.js +8 -0
  95. package/dist/resources/extensions/gsd/workflow-mcp.js +1 -6
  96. package/dist/resources/extensions/gsd/workflow-plugins.js +346 -0
  97. package/dist/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
  98. package/dist/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
  99. package/dist/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
  100. package/dist/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
  101. package/dist/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
  102. package/dist/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
  103. package/dist/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
  104. package/dist/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
  105. package/dist/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
  106. package/dist/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
  107. package/dist/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
  108. package/dist/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
  109. package/dist/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
  110. package/dist/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
  111. package/dist/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
  112. package/dist/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
  113. package/dist/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
  114. package/dist/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
  115. package/dist/resources/extensions/gsd/workflow-templates/registry.json +184 -0
  116. package/dist/resources/extensions/gsd/workflow-templates/release.md +118 -0
  117. package/dist/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
  118. package/dist/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
  119. package/dist/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
  120. package/dist/resources/extensions/gsd/workflow-templates/spike.md +1 -0
  121. package/dist/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
  122. package/dist/resources/extensions/gsd/worktree-resolver.js +42 -1
  123. package/dist/resources/extensions/remote-questions/commands.js +380 -0
  124. package/dist/resources/extensions/remote-questions/manager.js +39 -5
  125. package/dist/resources/extensions/remote-questions/telegram-adapter.js +79 -4
  126. package/dist/resources/extensions/shared/interview-ui.js +189 -1
  127. package/dist/resources/extensions/shared/layout-utils.js +17 -0
  128. package/dist/resources/extensions/shared/rtk-shared.js +47 -0
  129. package/dist/resources/extensions/shared/rtk.js +3 -46
  130. package/dist/resources/skills/create-workflow/SKILL.md +33 -6
  131. package/dist/rtk-shared.d.ts +10 -0
  132. package/dist/rtk-shared.js +47 -0
  133. package/dist/rtk.d.ts +2 -6
  134. package/dist/rtk.js +3 -48
  135. package/dist/shared/workspace-types.d.ts +52 -0
  136. package/dist/shared/workspace-types.js +1 -0
  137. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  138. package/dist/update-check.d.ts +10 -0
  139. package/dist/update-check.js +24 -3
  140. package/dist/web/standalone/.next/BUILD_ID +1 -1
  141. package/dist/web/standalone/.next/app-path-routes-manifest.json +6 -6
  142. package/dist/web/standalone/.next/build-manifest.json +3 -3
  143. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  144. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  145. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  146. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  147. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  148. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  149. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  150. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  151. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  152. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  153. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  154. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  155. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  156. package/dist/web/standalone/.next/server/app/_not-found.rsc +2 -2
  157. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  158. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  159. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  160. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  161. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  162. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  163. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  164. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  165. package/dist/web/standalone/.next/server/app/index.html +1 -1
  166. package/dist/web/standalone/.next/server/app/index.rsc +2 -2
  167. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  168. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
  169. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  170. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  171. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  172. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  173. package/dist/web/standalone/.next/server/app-paths-manifest.json +6 -6
  174. package/dist/web/standalone/.next/server/chunks/6897.js +2 -2
  175. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  176. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  177. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  178. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  179. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  180. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  181. package/dist/web/standalone/.next/static/chunks/2826.02df9631042cc18e.js +9 -0
  182. package/dist/web/standalone/.next/static/chunks/{webpack-b868033a5834586d.js → webpack-6c7cda3e318eedb6.js} +1 -1
  183. package/dist/web/standalone/.next/static/css/3e9cdadb4d23b8a4.css +1 -0
  184. package/dist/welcome-screen.js +48 -24
  185. package/dist/wizard.js +2 -2
  186. package/dist/worktree-cli.d.ts +6 -5
  187. package/dist/worktree-cli.js +23 -7
  188. package/package.json +3 -3
  189. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  190. package/packages/native/tsconfig.tsbuildinfo +1 -1
  191. package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -1
  192. package/packages/pi-ai/dist/models/capability-patches.d.ts.map +1 -1
  193. package/packages/pi-ai/dist/models/capability-patches.js +3 -2
  194. package/packages/pi-ai/dist/models/capability-patches.js.map +1 -1
  195. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts +68 -0
  196. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts.map +1 -1
  197. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js +68 -0
  198. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js.map +1 -1
  199. package/packages/pi-ai/dist/models/generated/anthropic.d.ts +17 -0
  200. package/packages/pi-ai/dist/models/generated/anthropic.d.ts.map +1 -1
  201. package/packages/pi-ai/dist/models/generated/anthropic.js +17 -0
  202. package/packages/pi-ai/dist/models/generated/anthropic.js.map +1 -1
  203. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts +17 -0
  204. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts.map +1 -1
  205. package/packages/pi-ai/dist/models/generated/google-antigravity.js +17 -0
  206. package/packages/pi-ai/dist/models/generated/google-antigravity.js.map +1 -1
  207. package/packages/pi-ai/dist/models/generated/groq.d.ts +0 -153
  208. package/packages/pi-ai/dist/models/generated/groq.d.ts.map +1 -1
  209. package/packages/pi-ai/dist/models/generated/groq.js +0 -153
  210. package/packages/pi-ai/dist/models/generated/groq.js.map +1 -1
  211. package/packages/pi-ai/dist/models/generated/index.d.ts +136 -153
  212. package/packages/pi-ai/dist/models/generated/index.d.ts.map +1 -1
  213. package/packages/pi-ai/dist/models/generated/openai-codex.d.ts +17 -0
  214. package/packages/pi-ai/dist/models/generated/openai-codex.d.ts.map +1 -1
  215. package/packages/pi-ai/dist/models/generated/openai-codex.js +17 -0
  216. package/packages/pi-ai/dist/models/generated/openai-codex.js.map +1 -1
  217. package/packages/pi-ai/dist/models/generated/openrouter.d.ts +17 -0
  218. package/packages/pi-ai/dist/models/generated/openrouter.d.ts.map +1 -1
  219. package/packages/pi-ai/dist/models/generated/openrouter.js +17 -0
  220. package/packages/pi-ai/dist/models/generated/openrouter.js.map +1 -1
  221. package/packages/pi-ai/dist/models.generated.test.js +17 -0
  222. package/packages/pi-ai/dist/models.generated.test.js.map +1 -1
  223. package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts +22 -1
  224. package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  225. package/packages/pi-ai/dist/providers/amazon-bedrock.js +40 -6
  226. package/packages/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  227. package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts +2 -0
  228. package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts.map +1 -0
  229. package/packages/pi-ai/dist/providers/amazon-bedrock.test.js +106 -0
  230. package/packages/pi-ai/dist/providers/amazon-bedrock.test.js.map +1 -0
  231. package/packages/pi-ai/dist/providers/anthropic-auth.test.js +42 -1
  232. package/packages/pi-ai/dist/providers/anthropic-auth.test.js.map +1 -1
  233. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts +20 -1
  234. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
  235. package/packages/pi-ai/dist/providers/anthropic-shared.js +32 -2
  236. package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
  237. package/packages/pi-ai/dist/providers/anthropic-shared.test.js +12 -1
  238. package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +1 -1
  239. package/packages/pi-ai/dist/providers/anthropic.d.ts +11 -0
  240. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  241. package/packages/pi-ai/dist/providers/anthropic.js +18 -1
  242. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  243. package/packages/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  244. package/packages/pi-ai/dist/utils/oauth/openai-codex.js +12 -0
  245. package/packages/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
  246. package/packages/pi-ai/package.json +1 -1
  247. package/packages/pi-ai/scripts/generate-models.ts +50 -0
  248. package/packages/pi-ai/src/models/capability-patches.ts +5 -2
  249. package/packages/pi-ai/src/models/generated/amazon-bedrock.ts +68 -0
  250. package/packages/pi-ai/src/models/generated/anthropic.ts +17 -0
  251. package/packages/pi-ai/src/models/generated/google-antigravity.ts +17 -0
  252. package/packages/pi-ai/src/models/generated/groq.ts +0 -153
  253. package/packages/pi-ai/src/models/generated/openai-codex.ts +17 -0
  254. package/packages/pi-ai/src/models/generated/openrouter.ts +17 -0
  255. package/packages/pi-ai/src/models.generated.test.ts +17 -0
  256. package/packages/pi-ai/src/providers/amazon-bedrock.test.ts +164 -0
  257. package/packages/pi-ai/src/providers/amazon-bedrock.ts +41 -7
  258. package/packages/pi-ai/src/providers/anthropic-auth.test.ts +47 -1
  259. package/packages/pi-ai/src/providers/anthropic-shared.test.ts +15 -1
  260. package/packages/pi-ai/src/providers/anthropic-shared.ts +36 -3
  261. package/packages/pi-ai/src/providers/anthropic.ts +19 -1
  262. package/packages/pi-ai/src/utils/oauth/openai-codex.ts +15 -0
  263. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  264. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts +2 -0
  265. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts.map +1 -0
  266. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js +38 -0
  267. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js.map +1 -0
  268. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +14 -0
  269. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  270. package/packages/pi-coding-agent/dist/core/auth-storage.js +34 -0
  271. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  272. package/packages/pi-coding-agent/dist/core/auth-storage.test.js +74 -0
  273. package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
  274. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +4 -1
  275. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
  276. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +32 -0
  277. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
  278. package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  279. package/packages/pi-coding-agent/dist/core/sdk.js +32 -0
  280. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  281. package/packages/pi-coding-agent/dist/core/skill-tool.test.js +2 -2
  282. package/packages/pi-coding-agent/dist/core/skill-tool.test.js.map +1 -1
  283. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts.map +1 -1
  284. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +17 -7
  285. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -1
  286. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  287. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +48 -34
  288. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  289. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts +4 -0
  290. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  291. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +83 -33
  292. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  293. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
  294. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  295. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +77 -0
  296. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  297. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -66
  298. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  299. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +1 -75
  300. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  301. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +1 -1
  302. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  303. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +192 -24
  304. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  305. package/packages/pi-coding-agent/src/core/agent-session-abort-order.test.ts +56 -0
  306. package/packages/pi-coding-agent/src/core/auth-storage.test.ts +83 -0
  307. package/packages/pi-coding-agent/src/core/auth-storage.ts +35 -0
  308. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +4 -1
  309. package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +37 -1
  310. package/packages/pi-coding-agent/src/core/sdk.ts +41 -0
  311. package/packages/pi-coding-agent/src/core/skill-tool.test.ts +2 -2
  312. package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +19 -7
  313. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +53 -31
  314. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +88 -36
  315. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +83 -0
  316. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +2 -83
  317. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +208 -27
  318. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  319. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  320. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
  321. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
  322. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  323. package/pkg/dist/modes/interactive/theme/theme-schema.js +77 -0
  324. package/pkg/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  325. package/pkg/dist/modes/interactive/theme/theme.d.ts +1 -66
  326. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  327. package/pkg/dist/modes/interactive/theme/theme.js +1 -75
  328. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  329. package/pkg/dist/modes/interactive/theme/themes.d.ts +1 -1
  330. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  331. package/pkg/dist/modes/interactive/theme/themes.js +192 -24
  332. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  333. package/src/resources/extensions/ask-user-questions.ts +24 -6
  334. package/src/resources/extensions/claude-code-cli/models.ts +9 -0
  335. package/src/resources/extensions/claude-code-cli/readiness.ts +13 -2
  336. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +94 -4
  337. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +84 -0
  338. package/src/resources/extensions/gsd/auto/detect-stuck.ts +10 -0
  339. package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -0
  340. package/src/resources/extensions/gsd/auto/loop.ts +109 -3
  341. package/src/resources/extensions/gsd/auto/phases.ts +94 -60
  342. package/src/resources/extensions/gsd/auto/resolve.ts +1 -1
  343. package/src/resources/extensions/gsd/auto/run-unit.ts +11 -1
  344. package/src/resources/extensions/gsd/auto/session.ts +7 -0
  345. package/src/resources/extensions/gsd/auto-artifact-paths.ts +20 -0
  346. package/src/resources/extensions/gsd/auto-dashboard.ts +21 -4
  347. package/src/resources/extensions/gsd/auto-dispatch.ts +123 -5
  348. package/src/resources/extensions/gsd/auto-loop.ts +1 -1
  349. package/src/resources/extensions/gsd/auto-model-selection.ts +13 -2
  350. package/src/resources/extensions/gsd/auto-post-unit.ts +9 -7
  351. package/src/resources/extensions/gsd/auto-prompts.ts +178 -38
  352. package/src/resources/extensions/gsd/auto-recovery.ts +63 -1
  353. package/src/resources/extensions/gsd/auto-start.ts +8 -6
  354. package/src/resources/extensions/gsd/auto-verification.ts +3 -3
  355. package/src/resources/extensions/gsd/auto-worktree.ts +65 -0
  356. package/src/resources/extensions/gsd/auto.ts +53 -28
  357. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +8 -21
  358. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +22 -4
  359. package/src/resources/extensions/gsd/bootstrap/query-tools.ts +31 -0
  360. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +22 -0
  361. package/src/resources/extensions/gsd/commands/catalog.ts +60 -3
  362. package/src/resources/extensions/gsd/commands/handlers/core.ts +6 -0
  363. package/src/resources/extensions/gsd/commands/handlers/escalate.ts +216 -0
  364. package/src/resources/extensions/gsd/commands/handlers/ops.ts +16 -0
  365. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +279 -29
  366. package/src/resources/extensions/gsd/commands-cmux.ts +6 -2
  367. package/src/resources/extensions/gsd/commands-debug.ts +484 -0
  368. package/src/resources/extensions/gsd/commands-do.ts +1 -0
  369. package/src/resources/extensions/gsd/commands-handlers.ts +19 -2
  370. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +1 -1
  371. package/src/resources/extensions/gsd/commands-scan.ts +125 -0
  372. package/src/resources/extensions/gsd/commands-workflow-templates.ts +129 -2
  373. package/src/resources/extensions/gsd/custom-workflow-engine.ts +85 -60
  374. package/src/resources/extensions/gsd/db-writer.ts +3 -0
  375. package/src/resources/extensions/gsd/debug-session-store.ts +377 -0
  376. package/src/resources/extensions/gsd/definition-loader.ts +7 -0
  377. package/src/resources/extensions/gsd/docs/preferences-reference.md +9 -9
  378. package/src/resources/extensions/gsd/doctor-git-checks.ts +5 -1
  379. package/src/resources/extensions/gsd/doctor-proactive.ts +4 -1
  380. package/src/resources/extensions/gsd/doctor-providers.ts +52 -22
  381. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +23 -4
  382. package/src/resources/extensions/gsd/doctor-types.ts +1 -0
  383. package/src/resources/extensions/gsd/doctor.ts +7 -1
  384. package/src/resources/extensions/gsd/error-classifier.ts +6 -3
  385. package/src/resources/extensions/gsd/escalation.ts +367 -0
  386. package/src/resources/extensions/gsd/forensics.ts +25 -29
  387. package/src/resources/extensions/gsd/git-service.ts +0 -1
  388. package/src/resources/extensions/gsd/graph.ts +33 -3
  389. package/src/resources/extensions/gsd/gsd-db.ts +306 -29
  390. package/src/resources/extensions/gsd/health-widget-core.ts +43 -14
  391. package/src/resources/extensions/gsd/health-widget.ts +7 -3
  392. package/src/resources/extensions/gsd/metrics.ts +1 -0
  393. package/src/resources/extensions/gsd/model-cost-table.ts +3 -1
  394. package/src/resources/extensions/gsd/model-router.ts +15 -1
  395. package/src/resources/extensions/gsd/native-git-bridge.ts +134 -6
  396. package/src/resources/extensions/gsd/notification-widget.ts +25 -43
  397. package/src/resources/extensions/gsd/notifications.ts +6 -0
  398. package/src/resources/extensions/gsd/post-execution-checks.ts +37 -14
  399. package/src/resources/extensions/gsd/pre-execution-checks.ts +98 -8
  400. package/src/resources/extensions/gsd/preferences-models.ts +1 -0
  401. package/src/resources/extensions/gsd/preferences-types.ts +10 -2
  402. package/src/resources/extensions/gsd/preferences-validation.ts +33 -7
  403. package/src/resources/extensions/gsd/preferences.ts +10 -10
  404. package/src/resources/extensions/gsd/prompts/debug-diagnose.md +25 -0
  405. package/src/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
  406. package/src/resources/extensions/gsd/prompts/execute-task.md +12 -0
  407. package/src/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
  408. package/src/resources/extensions/gsd/prompts/refine-slice.md +69 -0
  409. package/src/resources/extensions/gsd/prompts/scan.md +79 -0
  410. package/src/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
  411. package/src/resources/extensions/gsd/run-manager.ts +53 -19
  412. package/src/resources/extensions/gsd/state.ts +50 -2
  413. package/src/resources/extensions/gsd/templates/PREFERENCES.md +7 -7
  414. package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +1 -34
  415. package/src/resources/extensions/gsd/tests/artifact-corruption-2630.test.ts +7 -0
  416. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +45 -31
  417. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +123 -1
  418. package/src/resources/extensions/gsd/tests/auto-wrapup-inflight-guard.test.ts +39 -0
  419. package/src/resources/extensions/gsd/tests/autocomplete-regressions-1675.test.ts +39 -0
  420. package/src/resources/extensions/gsd/tests/commands-do.test.ts +48 -0
  421. package/src/resources/extensions/gsd/tests/commands-scan.test.ts +351 -0
  422. package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +8 -6
  423. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +2 -2
  424. package/src/resources/extensions/gsd/tests/complete-task.test.ts +2 -2
  425. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +63 -0
  426. package/src/resources/extensions/gsd/tests/debug-command-handler.test.ts +905 -0
  427. package/src/resources/extensions/gsd/tests/debug-command-lifecycle.integration.test.ts +1229 -0
  428. package/src/resources/extensions/gsd/tests/debug-session-store.test.ts +565 -0
  429. package/src/resources/extensions/gsd/tests/discuss-milestone-structured-questions.test.ts +64 -0
  430. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +67 -0
  431. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +62 -18
  432. package/src/resources/extensions/gsd/tests/enhanced-verification-integration.test.ts +5 -0
  433. package/src/resources/extensions/gsd/tests/escalation.test.ts +818 -0
  434. package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +29 -12
  435. package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +106 -0
  436. package/src/resources/extensions/gsd/tests/forensics-hook-key-parse.test.ts +74 -0
  437. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +0 -4
  438. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +44 -1
  439. package/src/resources/extensions/gsd/tests/health-widget.test.ts +8 -2
  440. package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +39 -0
  441. package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +44 -0
  442. package/src/resources/extensions/gsd/tests/integration/doctor-runtime.test.ts +68 -1
  443. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +109 -11
  444. package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +51 -0
  445. package/src/resources/extensions/gsd/tests/integration/test-isolation.ts +53 -0
  446. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +171 -1
  447. package/src/resources/extensions/gsd/tests/md-importer.test.ts +1 -1
  448. package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -2
  449. package/src/resources/extensions/gsd/tests/milestone-status-tool.test.ts +3 -2
  450. package/src/resources/extensions/gsd/tests/model-cost-table.test.ts +2 -2
  451. package/src/resources/extensions/gsd/tests/model-router.test.ts +1 -1
  452. package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +59 -0
  453. package/src/resources/extensions/gsd/tests/notification-widget.test.ts +1 -1
  454. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +17 -0
  455. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +105 -1
  456. package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +275 -6
  457. package/src/resources/extensions/gsd/tests/preferences.test.ts +69 -1
  458. package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +539 -0
  459. package/src/resources/extensions/gsd/tests/projection-regression.test.ts +7 -0
  460. package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +27 -0
  461. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +24 -0
  462. package/src/resources/extensions/gsd/tests/prompt-db.test.ts +1 -1
  463. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +33 -0
  464. package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +67 -0
  465. package/src/resources/extensions/gsd/tests/remote-notification-from-desktop.test.ts +107 -0
  466. package/src/resources/extensions/gsd/tests/requirements.test.ts +9 -0
  467. package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +153 -0
  468. package/src/resources/extensions/gsd/tests/slice-context-injection.test.ts +16 -4
  469. package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +3 -0
  470. package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +15 -0
  471. package/src/resources/extensions/gsd/tests/summary-render-parity.test.ts +5 -0
  472. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +2 -1
  473. package/src/resources/extensions/gsd/tests/uok-flags.test.ts +31 -1
  474. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +166 -0
  475. package/src/resources/extensions/gsd/tests/workflow-install.test.ts +113 -0
  476. package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +15 -6
  477. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +2 -2
  478. package/src/resources/extensions/gsd/tests/workflow-plugins.test.ts +310 -0
  479. package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +7 -0
  480. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +8 -2
  481. package/src/resources/extensions/gsd/tests/worktree-journal-events.test.ts +2 -1
  482. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +77 -2
  483. package/src/resources/extensions/gsd/tools/complete-task.ts +87 -0
  484. package/src/resources/extensions/gsd/tools/plan-milestone.ts +42 -8
  485. package/src/resources/extensions/gsd/tools/plan-slice.ts +6 -1
  486. package/src/resources/extensions/gsd/types.ts +62 -0
  487. package/src/resources/extensions/gsd/unit-runtime.ts +1 -0
  488. package/src/resources/extensions/gsd/uok/contracts.ts +2 -1
  489. package/src/resources/extensions/gsd/uok/flags.ts +7 -7
  490. package/src/resources/extensions/gsd/uok/kernel.ts +16 -4
  491. package/src/resources/extensions/gsd/workflow-dispatch.ts +106 -0
  492. package/src/resources/extensions/gsd/workflow-install.ts +423 -0
  493. package/src/resources/extensions/gsd/workflow-manifest.ts +8 -0
  494. package/src/resources/extensions/gsd/workflow-mcp.ts +1 -6
  495. package/src/resources/extensions/gsd/workflow-plugins.ts +403 -0
  496. package/src/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
  497. package/src/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
  498. package/src/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
  499. package/src/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
  500. package/src/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
  501. package/src/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
  502. package/src/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
  503. package/src/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
  504. package/src/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
  505. package/src/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
  506. package/src/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
  507. package/src/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
  508. package/src/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
  509. package/src/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
  510. package/src/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
  511. package/src/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
  512. package/src/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
  513. package/src/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
  514. package/src/resources/extensions/gsd/workflow-templates/registry.json +184 -0
  515. package/src/resources/extensions/gsd/workflow-templates/release.md +118 -0
  516. package/src/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
  517. package/src/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
  518. package/src/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
  519. package/src/resources/extensions/gsd/workflow-templates/spike.md +1 -0
  520. package/src/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
  521. package/src/resources/extensions/gsd/workflow-templates.ts +7 -0
  522. package/src/resources/extensions/gsd/workspace-index.ts +9 -4
  523. package/src/resources/extensions/gsd/worktree-resolver.ts +47 -1
  524. package/src/resources/extensions/remote-questions/commands.ts +480 -0
  525. package/src/resources/extensions/remote-questions/manager.ts +49 -4
  526. package/src/resources/extensions/remote-questions/telegram-adapter.ts +86 -4
  527. package/src/resources/extensions/remote-questions/tests/command-polling.test.ts +246 -0
  528. package/src/resources/extensions/remote-questions/tests/remote-answer-normalization.test.ts +92 -0
  529. package/src/resources/extensions/remote-questions/tests/telegram-commands.test.ts +267 -0
  530. package/src/resources/extensions/shared/interview-ui.ts +195 -1
  531. package/src/resources/extensions/shared/layout-utils.ts +26 -0
  532. package/src/resources/extensions/shared/rtk-shared.ts +58 -0
  533. package/src/resources/extensions/shared/rtk.ts +12 -52
  534. package/src/resources/extensions/shared/tests/interview-preview.test.ts +177 -0
  535. package/src/resources/extensions/shared/tests/preview-layout.test.ts +120 -0
  536. package/src/resources/skills/create-workflow/SKILL.md +33 -6
  537. package/dist/web/standalone/.next/static/chunks/2826.dd3dc8bbd3025fa5.js +0 -9
  538. package/dist/web/standalone/.next/static/css/f6e8833d46e738d8.css +0 -1
  539. package/packages/native/dist/ps/types.d.ts +0 -5
  540. package/packages/native/dist/ps/types.js +0 -2
  541. package/packages/native/src/ps/types.ts +0 -5
  542. package/packages/pi-ai/node_modules/@smithy/node-http-handler/LICENSE +0 -201
  543. package/packages/pi-ai/node_modules/@smithy/node-http-handler/README.md +0 -9
  544. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-cjs/index.js +0 -762
  545. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js +0 -19
  546. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/constants.js +0 -1
  547. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js +0 -9
  548. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/index.js +0 -3
  549. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +0 -230
  550. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +0 -87
  551. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +0 -32
  552. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +0 -169
  553. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js +0 -21
  554. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +0 -88
  555. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +0 -36
  556. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js +0 -21
  557. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +0 -22
  558. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +0 -23
  559. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
  560. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
  561. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js +0 -21
  562. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/timing.js +0 -4
  563. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +0 -63
  564. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts +0 -10
  565. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts +0 -5
  566. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts +0 -4
  567. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +0 -3
  568. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts +0 -46
  569. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +0 -24
  570. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +0 -12
  571. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +0 -63
  572. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts +0 -13
  573. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts +0 -12
  574. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts +0 -2
  575. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts +0 -6
  576. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts +0 -6
  577. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts +0 -2
  578. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
  579. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -6
  580. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts +0 -13
  581. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +0 -8
  582. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts +0 -10
  583. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts +0 -5
  584. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts +0 -4
  585. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts +0 -3
  586. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts +0 -46
  587. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts +0 -24
  588. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts +0 -12
  589. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts +0 -63
  590. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts +0 -13
  591. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts +0 -12
  592. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts +0 -2
  593. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts +0 -6
  594. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts +0 -6
  595. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts +0 -2
  596. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts +0 -5
  597. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts +0 -6
  598. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts +0 -13
  599. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +0 -8
  600. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts +0 -12
  601. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts +0 -12
  602. package/packages/pi-ai/node_modules/@smithy/node-http-handler/package.json +0 -68
  603. package/packages/pi-ai/oauth.d.ts +0 -1
  604. package/packages/pi-ai/oauth.js +0 -1
  605. /package/dist/web/standalone/.next/static/{j7IBD35UgrL2b298GLK3V → jaWw1Jh0TYayjbfOrFe8D}/_buildManifest.js +0 -0
  606. /package/dist/web/standalone/.next/static/{j7IBD35UgrL2b298GLK3V → jaWw1Jh0TYayjbfOrFe8D}/_ssgManifest.js +0 -0
@@ -146,6 +146,7 @@ import { getPriorSliceCompletionBlocker } from "./dispatch-guard.js";
146
146
  import {
147
147
  createAutoWorktree,
148
148
  enterAutoWorktree,
149
+ enterBranchModeForMilestone,
149
150
  teardownAutoWorktree,
150
151
  isInAutoWorktree,
151
152
  getAutoWorktreePath,
@@ -160,6 +161,7 @@ import {
160
161
  escapeStaleWorktree,
161
162
  } from "./auto-worktree.js";
162
163
  import { pruneQueueOrder } from "./queue-order.js";
164
+ import { startCommandPolling as _startCommandPolling, isRemoteConfigured } from "../remote-questions/manager.js";
163
165
 
164
166
  import { debugLog, isDebugEnabled, writeDebugSummary } from "./debug-logger.js";
165
167
  import {
@@ -201,7 +203,7 @@ import {
201
203
  } from "./auto-post-unit.js";
202
204
  import { bootstrapAutoSession, openProjectDbIfPresent, type BootstrapDeps } from "./auto-start.js";
203
205
  import { initHealthWidget } from "./health-widget.js";
204
- import { autoLoop, resolveAgentEnd, resolveAgentEndCancelled, _resetPendingResolve, isSessionSwitchInFlight, type LoopDeps, type ErrorContext } from "./auto-loop.js";
206
+ import { runLegacyAutoLoop, runUokKernelLoop, resolveAgentEnd, resolveAgentEndCancelled, _resetPendingResolve, isSessionSwitchInFlight, type LoopDeps, type ErrorContext } from "./auto-loop.js";
205
207
  import { runAutoLoopWithUok } from "./uok/kernel.js";
206
208
  import { resolveUokFlags } from "./uok/flags.js";
207
209
  // Slice-level parallelism (#2340)
@@ -326,6 +328,7 @@ export function startAutoDetached(
326
328
  });
327
329
  }
328
330
 
331
+ /** Returns true if the project is configured for `isolation:worktree` mode. */
329
332
  export function shouldUseWorktreeIsolation(): boolean {
330
333
  const prefs = loadEffectiveGSDPreferences()?.preferences?.git;
331
334
  if (prefs?.isolation === "worktree") return true;
@@ -390,6 +393,27 @@ function deregisterSigtermHandler(): void {
390
393
  s.sigtermHandler = null;
391
394
  }
392
395
 
396
+ /**
397
+ * Wrapper: start background command polling for the configured remote channel
398
+ * (currently Telegram only). Stores the cleanup function on the session so
399
+ * every exit path can stop the interval via stopCommandPolling().
400
+ * No-op when no remote channel is configured.
401
+ */
402
+ function startAutoCommandPolling(basePath: string): void {
403
+ if (!isRemoteConfigured()) return;
404
+ // Clear any existing interval before starting a new one (e.g. resume path).
405
+ stopAutoCommandPolling();
406
+ s.commandPollingCleanup = _startCommandPolling(basePath);
407
+ }
408
+
409
+ /** Wrapper: stop background command polling and clear the stored cleanup. */
410
+ function stopAutoCommandPolling(): void {
411
+ if (s.commandPollingCleanup) {
412
+ s.commandPollingCleanup();
413
+ s.commandPollingCleanup = null;
414
+ }
415
+ }
416
+
393
417
  export { type AutoDashboardData } from "./auto-dashboard.js";
394
418
 
395
419
  export function getAutoDashboardData(): AutoDashboardData {
@@ -466,6 +490,15 @@ export function getAutoModeStartModel(): {
466
490
  return s.autoModeStartModel;
467
491
  }
468
492
 
493
+ /**
494
+ * Update the dashboard-facing dispatched model label.
495
+ * Used when runtime recovery switches models mid-unit (e.g. provider fallback)
496
+ * so the AUTO box reflects the active model immediately.
497
+ */
498
+ export function setCurrentDispatchedModelId(model: { provider: string; id: string } | null): void {
499
+ s.currentDispatchedModelId = model ? `${model.provider}/${model.id}` : null;
500
+ }
501
+
469
502
  // Tool tracking — delegates to auto-tool-tracking.ts
470
503
  export function markToolStart(toolCallId: string, toolName?: string): void {
471
504
  _markToolStart(toolCallId, s.active, toolName);
@@ -648,6 +681,7 @@ function handleLostSessionLock(
648
681
  s.paused = false;
649
682
  deactivateGSD();
650
683
  clearUnitTimeout();
684
+ stopAutoCommandPolling();
651
685
  restoreProjectRootEnv();
652
686
  restoreMilestoneLockEnv();
653
687
  deregisterSigtermHandler();
@@ -687,6 +721,7 @@ function cleanupAfterLoopExit(ctx: ExtensionContext): void {
687
721
  s.active = false;
688
722
  deactivateGSD();
689
723
  clearUnitTimeout();
724
+ stopAutoCommandPolling();
690
725
  restoreProjectRootEnv();
691
726
  restoreMilestoneLockEnv();
692
727
 
@@ -735,6 +770,7 @@ export async function stopAuto(
735
770
  // ── Step 1: Timers and locks ──
736
771
  try {
737
772
  clearUnitTimeout();
773
+ stopAutoCommandPolling();
738
774
  if (lockBase()) clearLock(lockBase());
739
775
  if (lockBase()) releaseSessionLock(lockBase());
740
776
  } catch (e) {
@@ -1000,6 +1036,7 @@ export async function pauseAuto(
1000
1036
  ): Promise<void> {
1001
1037
  if (!s.active) return;
1002
1038
  clearUnitTimeout();
1039
+ stopAutoCommandPolling();
1003
1040
 
1004
1041
  // Flush queued follow-up messages (#3512).
1005
1042
  // Late async notifications (async_job_result, gsd-auto-wrapup) can trigger
@@ -1103,6 +1140,7 @@ function buildResolverDeps(): WorktreeResolverDeps {
1103
1140
  teardownAutoWorktree,
1104
1141
  createAutoWorktree,
1105
1142
  enterAutoWorktree,
1143
+ enterBranchModeForMilestone,
1106
1144
  getAutoWorktreePath,
1107
1145
  autoCommitCurrentBranch,
1108
1146
  getCurrentBranch,
@@ -1253,6 +1291,11 @@ function buildLoopDeps(): LoopDeps {
1253
1291
  } as unknown as LoopDeps;
1254
1292
  }
1255
1293
 
1294
+ /**
1295
+ * Start auto-mode. Handles both fresh-start and resume paths, sets up session
1296
+ * state, enters the milestone worktree or branch, and dispatches the first unit.
1297
+ * No-ops if auto-mode is already active.
1298
+ */
1256
1299
  export async function startAuto(
1257
1300
  ctx: ExtensionCommandContext,
1258
1301
  pi: ExtensionAPI,
@@ -1438,10 +1481,10 @@ export async function startAuto(
1438
1481
  ctx.ui.notify(summary, level as "info" | "warning" | "error");
1439
1482
  });
1440
1483
 
1441
- // ── Auto-worktree: re-enter worktree on resume ──
1484
+ // ── Auto-worktree / branch-mode: re-enter on resume ──
1442
1485
  if (
1443
1486
  s.currentMilestoneId &&
1444
- shouldUseWorktreeIsolation() &&
1487
+ getIsolationMode() !== "none" &&
1445
1488
  s.originalBasePath &&
1446
1489
  !isInAutoWorktree(s.basePath) &&
1447
1490
  !detectWorktreeName(s.basePath) &&
@@ -1533,12 +1576,14 @@ export async function startAuto(
1533
1576
  logCmuxEvent(loadEffectiveGSDPreferences()?.preferences, s.stepMode ? "Step-mode resumed." : "Auto-mode resumed.", "progress");
1534
1577
 
1535
1578
  captureProjectRootEnv(s.originalBasePath || s.basePath);
1579
+ startAutoCommandPolling(s.basePath);
1536
1580
  await runAutoLoopWithUok({
1537
1581
  ctx,
1538
1582
  pi,
1539
1583
  s,
1540
1584
  deps: buildLoopDeps(),
1541
- runLegacyLoop: autoLoop,
1585
+ runKernelLoop: runUokKernelLoop,
1586
+ runLegacyLoop: runLegacyAutoLoop,
1542
1587
  });
1543
1588
  cleanupAfterLoopExit(ctx);
1544
1589
  return;
@@ -1573,40 +1618,20 @@ export async function startAuto(
1573
1618
  }
1574
1619
  logCmuxEvent(loadEffectiveGSDPreferences()?.preferences, requestedStepMode ? "Step-mode started." : "Auto-mode started.", "progress");
1575
1620
 
1621
+ startAutoCommandPolling(s.basePath);
1622
+
1576
1623
  // Dispatch the first unit
1577
1624
  await runAutoLoopWithUok({
1578
1625
  ctx,
1579
1626
  pi,
1580
1627
  s,
1581
1628
  deps: buildLoopDeps(),
1582
- runLegacyLoop: autoLoop,
1629
+ runKernelLoop: runUokKernelLoop,
1630
+ runLegacyLoop: runLegacyAutoLoop,
1583
1631
  });
1584
1632
  cleanupAfterLoopExit(ctx);
1585
1633
  }
1586
1634
 
1587
- // ─── Agent End Handler ────────────────────────────────────────────────────────
1588
-
1589
- /**
1590
- * Deprecated thin wrapper — kept as export for backward compatibility.
1591
- * The actual agent_end processing now happens via resolveAgentEnd() in auto-loop.ts,
1592
- * which is called directly from index.ts. The autoLoop() while loop handles all
1593
- * post-unit processing (verification, hooks, dispatch) that this function used to do.
1594
- *
1595
- * If called by straggler code, it simply resolves the pending promise so the loop
1596
- * can continue.
1597
- */
1598
- export async function handleAgentEnd(
1599
- ctx: ExtensionContext,
1600
- pi: ExtensionAPI,
1601
- ): Promise<void> {
1602
- if (!s.active || !s.cmdCtx) {
1603
- // Even when inactive, resolve any pending promise so the loop is unblocked.
1604
- resolveAgentEndCancelled();
1605
- return;
1606
- }
1607
- clearUnitTimeout();
1608
- resolveAgentEnd({ messages: [] });
1609
- }
1610
1635
  // describeNextUnit is imported from auto-dashboard.ts and re-exported
1611
1636
  export { describeNextUnit } from "./auto-dashboard.js";
1612
1637
 
@@ -2,7 +2,7 @@ import type { ExtensionAPI, ExtensionContext } from "@gsd/pi-coding-agent";
2
2
 
3
3
  import { logWarning } from "../workflow-logger.js";
4
4
  import { checkAutoStartAfterDiscuss } from "../guided-flow.js";
5
- import { getAutoDashboardData, getAutoModeStartModel, isAutoActive, pauseAuto } from "../auto.js";
5
+ import { getAutoDashboardData, getAutoModeStartModel, isAutoActive, pauseAuto, setCurrentDispatchedModelId } from "../auto.js";
6
6
  import { getNextFallbackModel, resolveModelWithFallbacksForUnit } from "../preferences.js";
7
7
  import { pauseAutoForProviderError } from "../provider-error-pause.js";
8
8
  import { isSessionSwitchInFlight, resolveAgentEnd } from "../auto-loop.js";
@@ -124,26 +124,11 @@ export async function handleAgentEnd(
124
124
  // ── 1. Classify using rawErrorMsg to avoid prose false-positives ────
125
125
  const cls = classifyError(rawErrorMsg, explicitRetryAfterMs);
126
126
 
127
- // ── 1b. Defer to Core RetryHandler for transient errors ─────────────
128
- // The Core RetryHandler (agent-session.ts) processes retryable errors
129
- // AFTER this extension handler, in the same _processAgentEvent() call.
130
- // For transient errors (overloaded, rate limit, server), the Core will
131
- // retry in-context same session, same conversation — which is strictly
132
- // better than our Layer 2 pause+resume (which creates a new session).
133
- //
134
- // If we react here AND the Core also retries, we race: pauseAuto tears
135
- // down the session while agent.continue() starts a new turn.
136
- //
137
- // Solution: Do nothing for transient errors. The Core RetryHandler
138
- // runs next in _processAgentEvent and will either:
139
- // a) Retry successfully → new agent_end (success) → we see it next time
140
- // b) Exhaust retries → the agent stays idle, autoLoop's unit timeout
141
- // or stuck detection handles it
142
- //
143
- // We do NOT call resolveAgentEnd here — that would unblock autoLoop
144
- // prematurely while the Core is still retrying in the same session.
145
- // We do NOT call pauseAuto — that would tear down the session.
146
- if (isTransient(cls)) {
127
+ // ── 1b. Defer to Core RetryHandler for most transient errors ────────
128
+ // Core retries transient failures in-session after this handler.
129
+ // Keep that behavior for non-rate-limit classes to avoid pause/retry races,
130
+ // but let rate-limit continue into model fallback logic below (#4373).
131
+ if (isTransient(cls) && cls.kind !== "rate-limit") {
147
132
  return;
148
133
  }
149
134
 
@@ -202,6 +187,7 @@ export async function handleAgentEnd(
202
187
  if (modelToSet) {
203
188
  const ok = await pi.setModel(modelToSet, { persist: false });
204
189
  if (ok) {
190
+ setCurrentDispatchedModelId({ provider: modelToSet.provider, id: modelToSet.id });
205
191
  ctx.ui.notify(`Model error${errorDetail}. Switched to fallback: ${nextModelId} and resuming.`, "warning");
206
192
  pi.sendMessage({ customType: "gsd-auto-timeout-recovery", content: "Continue execution.", display: false }, { triggerTurn: true });
207
193
  return;
@@ -219,6 +205,7 @@ export async function handleAgentEnd(
219
205
  if (startModel) {
220
206
  const ok = await pi.setModel(startModel, { persist: false });
221
207
  if (ok) {
208
+ setCurrentDispatchedModelId({ provider: startModel.provider, id: startModel.id });
222
209
  retryState.networkRetryCount = 0;
223
210
  retryState.currentRetryModelId = undefined;
224
211
  ctx.ui.notify(`Model error${errorDetail}. Restored session model: ${sessionModel.provider}/${sessionModel.id} and resuming.`, "warning");
@@ -449,10 +449,14 @@ export function registerDbTools(pi: ExtensionAPI): void {
449
449
  depends: Type.Array(Type.String(), { description: "Slice dependency IDs" }),
450
450
  demo: Type.String({ description: "Roadmap demo text / After this" }),
451
451
  goal: Type.String({ description: "Slice goal" }),
452
- successCriteria: Type.String({ description: "Slice success criteria block" }),
453
- proofLevel: Type.String({ description: "Slice proof level" }),
454
- integrationClosure: Type.String({ description: "Slice integration closure" }),
455
- observabilityImpact: Type.String({ description: "Slice observability impact" }),
452
+ // ADR-011: heavy planning fields are optional for sketch slices; required for full slices.
453
+ successCriteria: Type.Optional(Type.String({ description: "Slice success criteria block (required for full slices; omit for sketches)" })),
454
+ proofLevel: Type.Optional(Type.String({ description: "Slice proof level (required for full slices; omit for sketches)" })),
455
+ integrationClosure: Type.Optional(Type.String({ description: "Slice integration closure (required for full slices; omit for sketches)" })),
456
+ observabilityImpact: Type.Optional(Type.String({ description: "Slice observability impact (required for full slices; omit for sketches)" })),
457
+ // ADR-011 sketch-then-refine fields.
458
+ isSketch: Type.Optional(Type.Boolean({ description: "ADR-011: true marks this slice as a sketch awaiting refine-slice expansion" })),
459
+ sketchScope: Type.Optional(Type.String({ description: "ADR-011: 2–3 sentence scope boundary, required when isSketch=true" })),
456
460
  }), { description: "Planned slices for the milestone" }),
457
461
  // ── Enrichment metadata (optional — defaults to empty) ────────────
458
462
  status: Type.Optional(Type.String({ description: "Milestone status (defaults to active)" })),
@@ -631,6 +635,20 @@ export function registerDbTools(pi: ExtensionAPI): void {
631
635
  keyFiles: Type.Optional(Type.Array(Type.String(), { description: "List of key files created or modified" })),
632
636
  keyDecisions: Type.Optional(Type.Array(Type.String(), { description: "List of key decisions made during this task" })),
633
637
  blockerDiscovered: Type.Optional(Type.Boolean({ description: "Whether a plan-invalidating blocker was discovered" })),
638
+ // ADR-011 Phase 2: mid-execution escalation — agent asks the user to resolve an ambiguity.
639
+ escalation: Type.Optional(Type.Object({
640
+ question: Type.String({ description: "The question the user needs to answer — one clear sentence." }),
641
+ options: Type.Array(Type.Object({
642
+ id: Type.String({ description: "Short id (e.g. 'A', 'B') used by /gsd escalate resolve." }),
643
+ label: Type.String({ description: "One-line label." }),
644
+ tradeoffs: Type.String({ description: "1-2 sentences on the tradeoffs of this option." }),
645
+ }), { minItems: 2, maxItems: 4, description: "2–4 options the user can choose between." }),
646
+ recommendation: Type.String({ description: "Option id the executor recommends." }),
647
+ recommendationRationale: Type.String({ description: "Why the recommendation — 1–2 sentences." }),
648
+ continueWithDefault: Type.Boolean({
649
+ description: "When true, loop continues (artifact logged for later review). When false, auto-mode pauses until the user resolves via /gsd escalate resolve.",
650
+ }),
651
+ }, { description: "ADR-011 Phase 2: optional escalation payload. Only honored when phases.mid_execution_escalation is true." })),
634
652
  verificationEvidence: Type.Optional(Type.Array(
635
653
  Type.Union([
636
654
  Type.Object({
@@ -4,6 +4,7 @@ import { Type } from "@sinclair/typebox";
4
4
  import type { ExtensionAPI } from "@gsd/pi-coding-agent";
5
5
  import { ensureDbOpen } from "./dynamic-tools.js";
6
6
  import { executeMilestoneStatus } from "../tools/workflow-tool-executors.js";
7
+ import { checkpointDatabase } from "../gsd-db.js";
7
8
 
8
9
  export function registerQueryTools(pi: ExtensionAPI): void {
9
10
  pi.registerTool({
@@ -31,4 +32,34 @@ export function registerQueryTools(pi: ExtensionAPI): void {
31
32
  return executeMilestoneStatus(params);
32
33
  },
33
34
  });
35
+
36
+ pi.registerTool({
37
+ name: "gsd_checkpoint_db",
38
+ label: "Checkpoint GSD Database",
39
+ description:
40
+ "Flush the SQLite WAL (Write-Ahead Log) into the base gsd.db file. " +
41
+ "Call this before `git add .gsd/gsd.db` to ensure the committed database " +
42
+ "contains current milestone/slice/task state rather than stale pre-session content. " +
43
+ "Safe to call at any time while GSD is running.",
44
+ promptSnippet: "Flush WAL into gsd.db so git add stages current state",
45
+ promptGuidelines: [
46
+ "Call gsd_checkpoint_db immediately before staging .gsd/gsd.db with git add.",
47
+ "Do not use sqlite3 or shell commands to checkpoint — they are blocked. Use this tool instead.",
48
+ ],
49
+ parameters: Type.Object({}),
50
+ async execute(_toolCallId, _params, _signal, _onUpdate, _ctx) {
51
+ const dbAvailable = await ensureDbOpen();
52
+ if (!dbAvailable) {
53
+ return {
54
+ content: [{ type: "text", text: "Error: GSD database is not available. Cannot checkpoint." }],
55
+ details: { operation: "checkpoint_db", error: "db_unavailable" },
56
+ };
57
+ }
58
+ checkpointDatabase();
59
+ return {
60
+ content: [{ type: "text", text: "WAL checkpoint complete. gsd.db is now up to date and safe to stage with git add." }],
61
+ details: { operation: "checkpoint_db", status: "ok" },
62
+ };
63
+ },
64
+ });
34
65
  }
@@ -18,6 +18,7 @@ import { loadToolApiKeys } from "../commands-config.js";
18
18
  import { loadFile, saveFile, formatContinue } from "../files.js";
19
19
  import { deriveState } from "../state.js";
20
20
  import { getAutoDashboardData, isAutoActive, isAutoPaused, markToolEnd, markToolStart, recordToolInvocationError } from "../auto.js";
21
+ import { hideFooter } from "../auto-dashboard.js";
21
22
  import { isParallelActive, shutdownParallel } from "../parallel-orchestrator.js";
22
23
  import { checkToolCallLoop, resetToolCallLoopGuard } from "./tool-call-loop-guard.js";
23
24
  import { saveActivityLog } from "../activity-log.js";
@@ -88,6 +89,9 @@ export function registerHooks(
88
89
  } catch { /* non-fatal */ }
89
90
  }
90
91
  loadToolApiKeys();
92
+ if (isAutoActive()) {
93
+ ctx.ui.setFooter(hideFooter);
94
+ }
91
95
  });
92
96
 
93
97
  pi.on("session_switch", async (_event, ctx) => {
@@ -108,6 +112,9 @@ export function registerHooks(
108
112
  prepareWorkflowMcpForProject(ctx, process.cwd());
109
113
  }
110
114
  loadToolApiKeys();
115
+ if (isAutoActive()) {
116
+ ctx.ui.setFooter(hideFooter);
117
+ }
111
118
  });
112
119
 
113
120
  pi.on("before_agent_start", async (event, ctx: ExtensionContext) => {
@@ -325,6 +332,7 @@ export function registerHooks(
325
332
  // ── Safety harness: evidence collection + destructive command warnings ──
326
333
  pi.on("tool_call", async (event, ctx) => {
327
334
  if (!isAutoActive()) return;
335
+ markToolStart(event.toolCallId, event.toolName);
328
336
  safetyRecordToolCall(event.toolCallId, event.toolName, event.input as Record<string, unknown>);
329
337
 
330
338
  // Destructive command classification (warn only, never block)
@@ -343,6 +351,20 @@ export function registerHooks(
343
351
  });
344
352
 
345
353
  pi.on("tool_result", async (event) => {
354
+ if (isAutoActive() && typeof event.toolCallId === "string") {
355
+ markToolEnd(event.toolCallId);
356
+ }
357
+ if (isAutoActive() && event.isError && event.toolName.startsWith("gsd_")) {
358
+ const resultPayload = ("result" in event ? event.result : undefined) as any;
359
+ const errorText = typeof resultPayload === "string"
360
+ ? resultPayload
361
+ : (typeof resultPayload?.content?.[0]?.text === "string"
362
+ ? resultPayload.content[0].text
363
+ : (typeof (event as any).content === "string"
364
+ ? (event as any).content
365
+ : String(resultPayload ?? "")));
366
+ recordToolInvocationError(event.toolName, errorText);
367
+ }
346
368
  if (event.toolName !== "ask_user_questions") return;
347
369
  const milestoneId = getDiscussionMilestoneId(process.cwd());
348
370
  const queueActive = isQueuePhaseActive();
@@ -15,7 +15,7 @@ export interface GsdCommandDefinition {
15
15
  type CompletionMap = Record<string, readonly GsdCommandDefinition[]>;
16
16
 
17
17
  export const GSD_COMMAND_DESCRIPTION =
18
- "GSD — Get Shit Done: /gsd help|start|templates|next|auto|stop|pause|status|widget|visualize|queue|quick|discuss|capture|triage|dispatch|history|undo|undo-task|reset-slice|rate|skip|export|cleanup|model|mode|prefs|config|keys|hooks|run-hook|skill-health|doctor|logs|forensics|changelog|migrate|remote|steer|knowledge|new-milestone|parallel|cmux|park|unpark|init|setup|inspect|extensions|update|fast|mcp|rethink|codebase|notifications|ship|do|session-report|backlog|pr-branch|add-tests|language";
18
+ "GSD — Get Shit Done: /gsd help|start|templates|next|auto|stop|pause|status|widget|visualize|queue|quick|discuss|capture|triage|dispatch|history|undo|undo-task|reset-slice|rate|skip|export|cleanup|model|mode|prefs|config|keys|hooks|run-hook|skill-health|doctor|debug|logs|forensics|changelog|migrate|remote|steer|knowledge|new-milestone|parallel|cmux|park|unpark|init|setup|inspect|extensions|update|fast|mcp|rethink|codebase|notifications|ship|do|session-report|backlog|pr-branch|add-tests|scan|language";
19
19
 
20
20
  export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
21
21
  { cmd: "help", desc: "Categorized command reference with descriptions" },
@@ -52,6 +52,7 @@ export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
52
52
  { cmd: "notifications", desc: "View, filter, and clear persistent notification history" },
53
53
  { cmd: "doctor", desc: "Runtime health checks with auto-fix" },
54
54
  { cmd: "logs", desc: "Browse activity logs, debug logs, and metrics" },
55
+ { cmd: "debug", desc: "Create and inspect persistent /gsd debug sessions" },
55
56
  { cmd: "forensics", desc: "Examine execution logs" },
56
57
  { cmd: "init", desc: "Project init wizard — detect, configure, bootstrap .gsd/" },
57
58
  { cmd: "setup", desc: "Global setup status and configuration" },
@@ -72,7 +73,7 @@ export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
72
73
  { cmd: "fast", desc: "Toggle OpenAI service tier (on/off/flex/status)" },
73
74
  { cmd: "mcp", desc: "MCP server status, connectivity, and local config bootstrap (status, check, init)" },
74
75
  { cmd: "rethink", desc: "Conversational project reorganization — reorder, park, discard, add milestones" },
75
- { cmd: "workflow", desc: "Custom workflow lifecycle (new, run, list, validate, pause, resume)" },
76
+ { cmd: "workflow", desc: "Custom workflow lifecycle (new, run, list, info, install, uninstall, validate, pause, resume) or run <name> directly" },
76
77
  { cmd: "codebase", desc: "Generate, refresh, and inspect the codebase map cache (.gsd/CODEBASE.md)" },
77
78
  { cmd: "ship", desc: "Create PR from milestone artifacts and open for review" },
78
79
  { cmd: "do", desc: "Route freeform text to the right GSD command" },
@@ -80,6 +81,7 @@ export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
80
81
  { cmd: "backlog", desc: "Manage backlog items (add, promote, remove, list)" },
81
82
  { cmd: "pr-branch", desc: "Create clean PR branch filtering .gsd/ commits" },
82
83
  { cmd: "add-tests", desc: "Generate tests for completed slices" },
84
+ { cmd: "scan", desc: "Rapid codebase assessment — lightweight alternative to full map (--focus tech|arch|quality|concerns|tech+arch)" },
83
85
  { cmd: "language", desc: "Set or clear the global response language (e.g. /gsd language Chinese)" },
84
86
  ];
85
87
 
@@ -129,6 +131,12 @@ const NESTED_COMPLETIONS: CompletionMap = {
129
131
  { cmd: "tail", desc: "Show last N activity log summaries" },
130
132
  { cmd: "clear", desc: "Remove old activity and debug logs" },
131
133
  ],
134
+ debug: [
135
+ { cmd: "list", desc: "List persisted debug sessions" },
136
+ { cmd: "status", desc: "Show status for one debug session slug" },
137
+ { cmd: "continue", desc: "Resume an existing debug session slug" },
138
+ { cmd: "--diagnose", desc: "Inspect malformed artifacts and session health" },
139
+ ],
132
140
  keys: [
133
141
  { cmd: "list", desc: "Show key status dashboard" },
134
142
  { cmd: "add", desc: "Add a key for a provider" },
@@ -235,8 +243,11 @@ const NESTED_COMPLETIONS: CompletionMap = {
235
243
  ],
236
244
  workflow: [
237
245
  { cmd: "new", desc: "Create a new workflow definition (via skill)" },
238
- { cmd: "run", desc: "Create a run and start auto-mode" },
246
+ { cmd: "run", desc: "Create a YAML run and start auto-mode" },
239
247
  { cmd: "list", desc: "List workflow runs" },
248
+ { cmd: "info", desc: "Show plugin details (source, mode, phases)" },
249
+ { cmd: "install", desc: "Install a plugin from a URL / gist: / gh:" },
250
+ { cmd: "uninstall", desc: "Remove an installed plugin" },
240
251
  { cmd: "validate", desc: "Validate a workflow definition YAML" },
241
252
  { cmd: "pause", desc: "Pause custom workflow auto-mode" },
242
253
  { cmd: "resume", desc: "Resume paused custom workflow auto-mode" },
@@ -270,6 +281,13 @@ const NESTED_COMPLETIONS: CompletionMap = {
270
281
  { cmd: "--dry-run", desc: "Preview what would be filtered" },
271
282
  { cmd: "--name", desc: "Custom branch name" },
272
283
  ],
284
+ scan: [
285
+ { cmd: "--focus tech", desc: "Technology stack and external integrations" },
286
+ { cmd: "--focus arch", desc: "Architecture patterns and directory structure" },
287
+ { cmd: "--focus quality", desc: "Coding conventions and testing patterns" },
288
+ { cmd: "--focus concerns", desc: "Technical debt and risk areas" },
289
+ { cmd: "--focus tech+arch", desc: "Tech + Architecture (default)" },
290
+ ],
273
291
  language: [
274
292
  { cmd: "off", desc: "Clear the language preference (revert to default)" },
275
293
  { cmd: "clear", desc: "Alias for off — clear the language preference" },
@@ -399,6 +417,45 @@ export function getGsdArgumentCompletions(prefix: string) {
399
417
  return [];
400
418
  }
401
419
 
420
+ // Completion for `/gsd workflow info <name>` — list all discoverable plugins (project + global).
421
+ if (command === "workflow" && subcommand === "info" && parts.length <= 3) {
422
+ const results: GsdCommandDefinition[] = [];
423
+ const seen = new Set<string>();
424
+ const scanDir = (dir: string, source: string) => {
425
+ if (!existsSync(dir)) return;
426
+ try {
427
+ for (const f of readdirSync(dir)) {
428
+ if (!/\.(ya?ml|md)$/i.test(f)) continue;
429
+ const name = f.replace(/\.(ya?ml|md)$/i, "");
430
+ if (!name.startsWith(third)) continue;
431
+ if (seen.has(name)) continue;
432
+ seen.add(name);
433
+ results.push({ cmd: name, desc: `Workflow plugin (${source})` });
434
+ }
435
+ } catch { /* ignore */ }
436
+ };
437
+ try {
438
+ const base = resolveProjectRoot(process.cwd());
439
+ scanDir(join(base, ".gsd", "workflows"), "project");
440
+ scanDir(join(base, ".gsd", "workflow-defs"), "project-legacy");
441
+ scanDir(join(gsdHome, "workflows"), "global");
442
+ } catch { /* ignore */ }
443
+ // Also include bundled template names.
444
+ try {
445
+ const registry = loadRegistry();
446
+ for (const id of Object.keys(registry.templates)) {
447
+ if (seen.has(id) || !id.startsWith(third)) continue;
448
+ seen.add(id);
449
+ results.push({ cmd: id, desc: "Workflow plugin (bundled)" });
450
+ }
451
+ } catch { /* ignore */ }
452
+ return results.map((r) => ({
453
+ value: `workflow info ${r.cmd}`,
454
+ label: r.cmd,
455
+ description: r.desc,
456
+ }));
457
+ }
458
+
402
459
  const nested = NESTED_COMPLETIONS[command];
403
460
  if (nested && parts.length <= 2) {
404
461
  return filterOptions(subcommand, nested, command);
@@ -36,6 +36,10 @@ export function showHelp(ctx: ExtensionCommandContext, args = ""): void {
36
36
  " /gsd undo Revert last completed unit [--force]",
37
37
  " /gsd rethink Conversational project reorganization",
38
38
  "",
39
+ "OBSERVABILITY",
40
+ " /gsd logs Browse activity and debug logs",
41
+ " /gsd debug Create/list/continue persistent debug sessions",
42
+ "",
39
43
  "SETUP",
40
44
  " /gsd init Project init wizard",
41
45
  " /gsd setup Global setup status [llm|search|remote|keys|prefs]",
@@ -67,6 +71,8 @@ export function showHelp(ctx: ExtensionCommandContext, args = ""): void {
67
71
  " /gsd history View execution history [--cost] [--phase] [--model] [N]",
68
72
  " /gsd changelog Show categorized release notes [version]",
69
73
  ` /gsd notifications View persistent notification history [clear|tail|filter] (${formattedShortcutPair("notifications")})`,
74
+ " /gsd logs Browse activity logs, debug logs, and metrics",
75
+ " /gsd debug Create/list/continue persistent debug sessions",
70
76
  "",
71
77
  "COURSE CORRECTION",
72
78
  " /gsd steer <desc> Apply user override to active work",