gsd-pi 2.75.0 → 2.76.0-dev.b072ebb73

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 (1031) hide show
  1. package/README.md +208 -151
  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/agents/researcher.md +1 -1
  11. package/dist/resources/extensions/ask-user-questions.js +17 -5
  12. package/dist/resources/extensions/claude-code-cli/models.js +9 -0
  13. package/dist/resources/extensions/claude-code-cli/readiness.js +34 -2
  14. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +76 -4
  15. package/dist/resources/extensions/gsd/auto/detect-stuck.js +9 -0
  16. package/dist/resources/extensions/gsd/auto/loop.js +67 -4
  17. package/dist/resources/extensions/gsd/auto/phases.js +118 -53
  18. package/dist/resources/extensions/gsd/auto/resolve.js +1 -1
  19. package/dist/resources/extensions/gsd/auto/run-unit.js +10 -1
  20. package/dist/resources/extensions/gsd/auto/session.js +5 -0
  21. package/dist/resources/extensions/gsd/auto-artifact-paths.js +20 -0
  22. package/dist/resources/extensions/gsd/auto-dashboard.js +37 -8
  23. package/dist/resources/extensions/gsd/auto-direct-dispatch.js +8 -2
  24. package/dist/resources/extensions/gsd/auto-dispatch.js +120 -14
  25. package/dist/resources/extensions/gsd/auto-loop.js +1 -1
  26. package/dist/resources/extensions/gsd/auto-model-selection.js +27 -6
  27. package/dist/resources/extensions/gsd/auto-post-unit.js +10 -8
  28. package/dist/resources/extensions/gsd/auto-prompts.js +190 -46
  29. package/dist/resources/extensions/gsd/auto-recovery.js +57 -0
  30. package/dist/resources/extensions/gsd/auto-start.js +5 -3
  31. package/dist/resources/extensions/gsd/auto-verification.js +36 -3
  32. package/dist/resources/extensions/gsd/auto-worktree.js +71 -2
  33. package/dist/resources/extensions/gsd/auto.js +57 -25
  34. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +8 -21
  35. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +45 -23
  36. package/dist/resources/extensions/gsd/bootstrap/memory-tools.js +131 -0
  37. package/dist/resources/extensions/gsd/bootstrap/query-tools.js +29 -0
  38. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +12 -0
  39. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +22 -0
  40. package/dist/resources/extensions/gsd/bootstrap/system-context.js +84 -10
  41. package/dist/resources/extensions/gsd/commands/catalog.js +81 -9
  42. package/dist/resources/extensions/gsd/commands/handlers/core.js +64 -24
  43. package/dist/resources/extensions/gsd/commands/handlers/escalate.js +171 -0
  44. package/dist/resources/extensions/gsd/commands/handlers/onboarding.js +159 -0
  45. package/dist/resources/extensions/gsd/commands/handlers/ops.js +21 -0
  46. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +228 -29
  47. package/dist/resources/extensions/gsd/commands-cmux.js +5 -2
  48. package/dist/resources/extensions/gsd/commands-config.js +5 -0
  49. package/dist/resources/extensions/gsd/commands-debug.js +388 -0
  50. package/dist/resources/extensions/gsd/commands-do.js +1 -0
  51. package/dist/resources/extensions/gsd/commands-extract-learnings.js +200 -77
  52. package/dist/resources/extensions/gsd/commands-handlers.js +21 -2
  53. package/dist/resources/extensions/gsd/commands-memory.js +462 -0
  54. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +40 -12
  55. package/dist/resources/extensions/gsd/commands-scan.js +94 -0
  56. package/dist/resources/extensions/gsd/commands-workflow-templates.js +101 -2
  57. package/dist/resources/extensions/gsd/custom-workflow-engine.js +74 -54
  58. package/dist/resources/extensions/gsd/db-writer.js +89 -16
  59. package/dist/resources/extensions/gsd/debug-session-store.js +238 -0
  60. package/dist/resources/extensions/gsd/definition-loader.js +7 -0
  61. package/dist/resources/extensions/gsd/docs/preferences-reference.md +9 -9
  62. package/dist/resources/extensions/gsd/doctor-environment.js +2 -1
  63. package/dist/resources/extensions/gsd/doctor-git-checks.js +50 -32
  64. package/dist/resources/extensions/gsd/doctor-proactive.js +4 -1
  65. package/dist/resources/extensions/gsd/doctor-providers.js +96 -22
  66. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +22 -4
  67. package/dist/resources/extensions/gsd/doctor.js +7 -1
  68. package/dist/resources/extensions/gsd/ecosystem/gsd-extension-api.js +1 -0
  69. package/dist/resources/extensions/gsd/error-classifier.js +6 -3
  70. package/dist/resources/extensions/gsd/escalation.js +321 -0
  71. package/dist/resources/extensions/gsd/forensics.js +26 -29
  72. package/dist/resources/extensions/gsd/git-service.js +0 -1
  73. package/dist/resources/extensions/gsd/graph.js +26 -2
  74. package/dist/resources/extensions/gsd/gsd-db.js +517 -32
  75. package/dist/resources/extensions/gsd/health-widget-core.js +42 -14
  76. package/dist/resources/extensions/gsd/health-widget.js +7 -4
  77. package/dist/resources/extensions/gsd/hook-emitter.js +108 -0
  78. package/dist/resources/extensions/gsd/init-wizard.js +86 -45
  79. package/dist/resources/extensions/gsd/markdown-renderer.js +5 -5
  80. package/dist/resources/extensions/gsd/memory-backfill.js +126 -0
  81. package/dist/resources/extensions/gsd/memory-embeddings.js +219 -0
  82. package/dist/resources/extensions/gsd/memory-extractor.js +78 -27
  83. package/dist/resources/extensions/gsd/memory-ingest.js +218 -0
  84. package/dist/resources/extensions/gsd/memory-relations.js +189 -0
  85. package/dist/resources/extensions/gsd/memory-source-store.js +113 -0
  86. package/dist/resources/extensions/gsd/memory-store.js +318 -6
  87. package/dist/resources/extensions/gsd/metrics.js +1 -0
  88. package/dist/resources/extensions/gsd/model-cost-table.js +3 -1
  89. package/dist/resources/extensions/gsd/model-router.js +16 -6
  90. package/dist/resources/extensions/gsd/native-git-bridge.js +137 -5
  91. package/dist/resources/extensions/gsd/notification-overlay.js +7 -22
  92. package/dist/resources/extensions/gsd/notification-widget.js +24 -39
  93. package/dist/resources/extensions/gsd/notifications.js +4 -0
  94. package/dist/resources/extensions/gsd/onboarding-state.js +133 -0
  95. package/dist/resources/extensions/gsd/post-execution-checks.js +27 -11
  96. package/dist/resources/extensions/gsd/pre-execution-checks.js +105 -8
  97. package/dist/resources/extensions/gsd/preferences-models.js +1 -0
  98. package/dist/resources/extensions/gsd/preferences-types.js +2 -1
  99. package/dist/resources/extensions/gsd/preferences-validation.js +42 -8
  100. package/dist/resources/extensions/gsd/preferences.js +10 -10
  101. package/dist/resources/extensions/gsd/prompts/add-tests.md +1 -0
  102. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +4 -1
  103. package/dist/resources/extensions/gsd/prompts/complete-slice.md +2 -2
  104. package/dist/resources/extensions/gsd/prompts/debug-diagnose.md +27 -0
  105. package/dist/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
  106. package/dist/resources/extensions/gsd/prompts/execute-task.md +16 -3
  107. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
  108. package/dist/resources/extensions/gsd/prompts/plan-slice.md +2 -0
  109. package/dist/resources/extensions/gsd/prompts/refine-slice.md +69 -0
  110. package/dist/resources/extensions/gsd/prompts/research-slice.md +1 -0
  111. package/dist/resources/extensions/gsd/prompts/scan.md +79 -0
  112. package/dist/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
  113. package/dist/resources/extensions/gsd/python-resolver.js +70 -0
  114. package/dist/resources/extensions/gsd/run-manager.js +37 -17
  115. package/dist/resources/extensions/gsd/setup-catalog.js +75 -0
  116. package/dist/resources/extensions/gsd/state.js +90 -7
  117. package/dist/resources/extensions/gsd/templates/PREFERENCES.md +7 -7
  118. package/dist/resources/extensions/gsd/tools/complete-task.js +80 -0
  119. package/dist/resources/extensions/gsd/tools/memory-tools.js +331 -0
  120. package/dist/resources/extensions/gsd/tools/plan-milestone.js +37 -12
  121. package/dist/resources/extensions/gsd/tools/plan-slice.js +5 -2
  122. package/dist/resources/extensions/gsd/tools/skip-slice.js +78 -0
  123. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +14 -0
  124. package/dist/resources/extensions/gsd/uok/flags.js +7 -7
  125. package/dist/resources/extensions/gsd/uok/kernel.js +8 -3
  126. package/dist/resources/extensions/gsd/verification-gate.js +2 -1
  127. package/dist/resources/extensions/gsd/workflow-dispatch.js +64 -0
  128. package/dist/resources/extensions/gsd/workflow-install.js +327 -0
  129. package/dist/resources/extensions/gsd/workflow-manifest.js +8 -0
  130. package/dist/resources/extensions/gsd/workflow-mcp.js +1 -6
  131. package/dist/resources/extensions/gsd/workflow-plugins.js +346 -0
  132. package/dist/resources/extensions/gsd/workflow-projections.js +17 -15
  133. package/dist/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
  134. package/dist/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
  135. package/dist/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
  136. package/dist/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
  137. package/dist/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
  138. package/dist/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
  139. package/dist/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
  140. package/dist/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
  141. package/dist/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
  142. package/dist/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
  143. package/dist/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
  144. package/dist/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
  145. package/dist/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
  146. package/dist/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
  147. package/dist/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
  148. package/dist/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
  149. package/dist/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
  150. package/dist/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
  151. package/dist/resources/extensions/gsd/workflow-templates/registry.json +184 -0
  152. package/dist/resources/extensions/gsd/workflow-templates/release.md +118 -0
  153. package/dist/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
  154. package/dist/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
  155. package/dist/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
  156. package/dist/resources/extensions/gsd/workflow-templates/spike.md +7 -0
  157. package/dist/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
  158. package/dist/resources/extensions/gsd/worktree-resolver.js +42 -1
  159. package/dist/resources/extensions/remote-questions/commands.js +380 -0
  160. package/dist/resources/extensions/remote-questions/manager.js +39 -5
  161. package/dist/resources/extensions/remote-questions/telegram-adapter.js +79 -4
  162. package/dist/resources/extensions/search-the-web/command-search-provider.js +4 -1
  163. package/dist/resources/extensions/search-the-web/native-search.js +13 -2
  164. package/dist/resources/extensions/shared/interview-ui.js +189 -1
  165. package/dist/resources/extensions/shared/layout-utils.js +17 -0
  166. package/dist/resources/extensions/shared/rtk-shared.js +47 -0
  167. package/dist/resources/extensions/shared/rtk.js +3 -46
  168. package/dist/resources/skills/api-design/SKILL.md +190 -0
  169. package/dist/resources/skills/create-mcp-server/SKILL.md +121 -0
  170. package/dist/resources/skills/create-workflow/SKILL.md +33 -6
  171. package/dist/resources/skills/decompose-into-slices/SKILL.md +139 -0
  172. package/dist/resources/skills/dependency-upgrade/SKILL.md +158 -0
  173. package/dist/resources/skills/design-an-interface/SKILL.md +102 -0
  174. package/dist/resources/skills/forensics/SKILL.md +153 -0
  175. package/dist/resources/skills/grill-me/SKILL.md +93 -0
  176. package/dist/resources/skills/handoff/SKILL.md +121 -0
  177. package/dist/resources/skills/observability/SKILL.md +174 -0
  178. package/dist/resources/skills/security-review/SKILL.md +181 -0
  179. package/dist/resources/skills/spike-wrap-up/SKILL.md +138 -0
  180. package/dist/resources/skills/tdd/SKILL.md +112 -0
  181. package/dist/resources/skills/verify-before-complete/SKILL.md +97 -0
  182. package/dist/resources/skills/write-docs/SKILL.md +81 -0
  183. package/dist/resources/skills/write-milestone-brief/SKILL.md +135 -0
  184. package/dist/rtk-shared.d.ts +10 -0
  185. package/dist/rtk-shared.js +47 -0
  186. package/dist/rtk.d.ts +2 -6
  187. package/dist/rtk.js +3 -48
  188. package/dist/shared/workspace-types.d.ts +52 -0
  189. package/dist/shared/workspace-types.js +1 -0
  190. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  191. package/dist/update-check.d.ts +10 -0
  192. package/dist/update-check.js +24 -3
  193. package/dist/web/standalone/.next/BUILD_ID +1 -1
  194. package/dist/web/standalone/.next/app-path-routes-manifest.json +13 -13
  195. package/dist/web/standalone/.next/build-manifest.json +4 -4
  196. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  197. package/dist/web/standalone/.next/react-loadable-manifest.json +2 -2
  198. package/dist/web/standalone/.next/required-server-files.json +4 -4
  199. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  200. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  201. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  202. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  203. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  204. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  205. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  206. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  207. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  208. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  209. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  210. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  211. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  212. package/dist/web/standalone/.next/server/app/_not-found.rsc +4 -4
  213. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  214. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  215. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  216. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  217. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  218. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  219. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  220. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  221. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  222. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  223. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  224. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  225. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  226. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  227. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  228. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  229. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  230. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  231. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  232. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  233. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  234. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  235. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  236. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  237. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  238. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  239. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  240. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  241. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  242. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  243. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  244. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  245. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  246. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  247. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  248. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  249. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  250. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  251. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  252. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  253. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  254. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  255. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  256. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  257. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  258. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  259. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  260. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  261. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  262. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  263. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  264. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  265. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  266. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  267. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  268. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  269. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  270. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  271. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  272. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  273. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  274. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  275. package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  276. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  277. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  278. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  279. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  280. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  281. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  282. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  283. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  284. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  285. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  286. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  287. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  288. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  289. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  290. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  291. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  292. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  293. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  294. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  295. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  296. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  297. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  298. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  299. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  300. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  301. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  302. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  303. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  304. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  305. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  306. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  307. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  308. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  309. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  310. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  311. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  312. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  313. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  314. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  315. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
  316. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  317. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  318. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  319. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  320. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  321. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  322. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  323. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  324. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  325. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  326. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  327. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  328. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  329. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  330. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  331. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  332. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  333. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  334. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  335. package/dist/web/standalone/.next/server/app/index.html +1 -1
  336. package/dist/web/standalone/.next/server/app/index.rsc +5 -5
  337. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  338. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
  339. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  340. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
  341. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  342. package/dist/web/standalone/.next/server/app/page.js +2 -2
  343. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  344. package/dist/web/standalone/.next/server/app-paths-manifest.json +13 -13
  345. package/dist/web/standalone/.next/server/chunks/63.js +3 -3
  346. package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
  347. package/dist/web/standalone/.next/server/chunks/7461.js +1 -0
  348. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  349. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  350. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  351. package/dist/web/standalone/.next/server/middleware.js +2 -2
  352. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  353. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  354. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  355. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  356. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  357. package/dist/web/standalone/.next/static/chunks/2826.e59e8578e2e28639.js +9 -0
  358. package/dist/web/standalone/.next/static/chunks/{2008.71ee9230ad78df21.js → 3621.fc7480022c972438.js} +2 -2
  359. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
  360. package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
  361. package/dist/web/standalone/.next/static/chunks/app/page-5b113fd32bc2a1c3.js +1 -0
  362. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
  363. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
  364. package/dist/web/standalone/.next/static/chunks/{webpack-b868033a5834586d.js → webpack-5fc74f13a25fa1bb.js} +1 -1
  365. package/dist/web/standalone/.next/static/css/632cd626b1731d88.css +1 -0
  366. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  367. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  368. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  369. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  370. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  371. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  372. package/dist/web/standalone/server.js +1 -1
  373. package/dist/welcome-screen.js +48 -24
  374. package/dist/wizard.js +2 -2
  375. package/dist/worktree-cli.d.ts +6 -5
  376. package/dist/worktree-cli.js +23 -7
  377. package/package.json +3 -3
  378. package/packages/daemon/package.json +2 -2
  379. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  380. package/packages/mcp-server/dist/server.js +12 -10
  381. package/packages/mcp-server/dist/server.js.map +1 -1
  382. package/packages/mcp-server/dist/session-manager.d.ts.map +1 -1
  383. package/packages/mcp-server/dist/session-manager.js +8 -1
  384. package/packages/mcp-server/dist/session-manager.js.map +1 -1
  385. package/packages/mcp-server/dist/workflow-tools.d.ts +2 -1
  386. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  387. package/packages/mcp-server/dist/workflow-tools.js +306 -71
  388. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  389. package/packages/mcp-server/package.json +2 -2
  390. package/packages/mcp-server/src/mcp-server.test.ts +40 -4
  391. package/packages/mcp-server/src/server.ts +12 -10
  392. package/packages/mcp-server/src/session-manager.ts +10 -3
  393. package/packages/mcp-server/src/workflow-tools.test.ts +346 -1
  394. package/packages/mcp-server/src/workflow-tools.ts +359 -75
  395. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  396. package/packages/native/package.json +1 -1
  397. package/packages/native/tsconfig.tsbuildinfo +1 -1
  398. package/packages/pi-agent-core/dist/agent-loop.js +12 -0
  399. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  400. package/packages/pi-agent-core/dist/types.d.ts +30 -0
  401. package/packages/pi-agent-core/dist/types.d.ts.map +1 -1
  402. package/packages/pi-agent-core/dist/types.js.map +1 -1
  403. package/packages/pi-agent-core/package.json +1 -1
  404. package/packages/pi-agent-core/src/agent-loop.ts +14 -0
  405. package/packages/pi-agent-core/src/types.ts +34 -0
  406. package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -1
  407. package/packages/pi-ai/dist/index.d.ts +1 -0
  408. package/packages/pi-ai/dist/index.d.ts.map +1 -1
  409. package/packages/pi-ai/dist/index.js +1 -0
  410. package/packages/pi-ai/dist/index.js.map +1 -1
  411. package/packages/pi-ai/dist/models/capability-patches.d.ts.map +1 -1
  412. package/packages/pi-ai/dist/models/capability-patches.js +3 -2
  413. package/packages/pi-ai/dist/models/capability-patches.js.map +1 -1
  414. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts +68 -0
  415. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts.map +1 -1
  416. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js +68 -0
  417. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js.map +1 -1
  418. package/packages/pi-ai/dist/models/generated/anthropic.d.ts +17 -0
  419. package/packages/pi-ai/dist/models/generated/anthropic.d.ts.map +1 -1
  420. package/packages/pi-ai/dist/models/generated/anthropic.js +17 -0
  421. package/packages/pi-ai/dist/models/generated/anthropic.js.map +1 -1
  422. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts +17 -0
  423. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts.map +1 -1
  424. package/packages/pi-ai/dist/models/generated/google-antigravity.js +17 -0
  425. package/packages/pi-ai/dist/models/generated/google-antigravity.js.map +1 -1
  426. package/packages/pi-ai/dist/models/generated/groq.d.ts +0 -153
  427. package/packages/pi-ai/dist/models/generated/groq.d.ts.map +1 -1
  428. package/packages/pi-ai/dist/models/generated/groq.js +0 -153
  429. package/packages/pi-ai/dist/models/generated/groq.js.map +1 -1
  430. package/packages/pi-ai/dist/models/generated/index.d.ts +136 -153
  431. package/packages/pi-ai/dist/models/generated/index.d.ts.map +1 -1
  432. package/packages/pi-ai/dist/models/generated/openai-codex.d.ts +17 -0
  433. package/packages/pi-ai/dist/models/generated/openai-codex.d.ts.map +1 -1
  434. package/packages/pi-ai/dist/models/generated/openai-codex.js +17 -0
  435. package/packages/pi-ai/dist/models/generated/openai-codex.js.map +1 -1
  436. package/packages/pi-ai/dist/models/generated/openrouter.d.ts +17 -0
  437. package/packages/pi-ai/dist/models/generated/openrouter.d.ts.map +1 -1
  438. package/packages/pi-ai/dist/models/generated/openrouter.js +17 -0
  439. package/packages/pi-ai/dist/models/generated/openrouter.js.map +1 -1
  440. package/packages/pi-ai/dist/models.generated.test.js +17 -0
  441. package/packages/pi-ai/dist/models.generated.test.js.map +1 -1
  442. package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts +22 -1
  443. package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  444. package/packages/pi-ai/dist/providers/amazon-bedrock.js +40 -6
  445. package/packages/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  446. package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts +2 -0
  447. package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts.map +1 -0
  448. package/packages/pi-ai/dist/providers/amazon-bedrock.test.js +106 -0
  449. package/packages/pi-ai/dist/providers/amazon-bedrock.test.js.map +1 -0
  450. package/packages/pi-ai/dist/providers/anthropic-auth.test.js +42 -1
  451. package/packages/pi-ai/dist/providers/anthropic-auth.test.js.map +1 -1
  452. package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.d.ts +2 -0
  453. package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.d.ts.map +1 -0
  454. package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.js +13 -0
  455. package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.js.map +1 -0
  456. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts +20 -1
  457. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
  458. package/packages/pi-ai/dist/providers/anthropic-shared.js +32 -2
  459. package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
  460. package/packages/pi-ai/dist/providers/anthropic-shared.test.js +12 -1
  461. package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +1 -1
  462. package/packages/pi-ai/dist/providers/anthropic.d.ts +11 -0
  463. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  464. package/packages/pi-ai/dist/providers/anthropic.js +23 -2
  465. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  466. package/packages/pi-ai/dist/providers/api-family.d.ts +27 -0
  467. package/packages/pi-ai/dist/providers/api-family.d.ts.map +1 -0
  468. package/packages/pi-ai/dist/providers/api-family.js +47 -0
  469. package/packages/pi-ai/dist/providers/api-family.js.map +1 -0
  470. package/packages/pi-ai/dist/providers/api-family.test.d.ts +2 -0
  471. package/packages/pi-ai/dist/providers/api-family.test.d.ts.map +1 -0
  472. package/packages/pi-ai/dist/providers/api-family.test.js +101 -0
  473. package/packages/pi-ai/dist/providers/api-family.test.js.map +1 -0
  474. package/packages/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  475. package/packages/pi-ai/dist/utils/oauth/github-copilot.js +12 -2
  476. package/packages/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
  477. package/packages/pi-ai/dist/utils/oauth/github-copilot.test.js +164 -14
  478. package/packages/pi-ai/dist/utils/oauth/github-copilot.test.js.map +1 -1
  479. package/packages/pi-ai/dist/utils/oauth/google-antigravity.d.ts.map +1 -1
  480. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js +15 -3
  481. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js.map +1 -1
  482. package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.d.ts +2 -0
  483. package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.d.ts.map +1 -0
  484. package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.js +67 -0
  485. package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.js.map +1 -0
  486. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.d.ts.map +1 -1
  487. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js +16 -3
  488. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js.map +1 -1
  489. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.d.ts +2 -0
  490. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.d.ts.map +1 -0
  491. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.js +67 -0
  492. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.js.map +1 -0
  493. package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.d.ts +2 -0
  494. package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.d.ts.map +1 -0
  495. package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.js +289 -0
  496. package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.js.map +1 -0
  497. package/packages/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  498. package/packages/pi-ai/dist/utils/oauth/openai-codex.js +12 -0
  499. package/packages/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
  500. package/packages/pi-ai/package.json +2 -2
  501. package/packages/pi-ai/scripts/generate-models.ts +50 -0
  502. package/packages/pi-ai/src/index.ts +1 -0
  503. package/packages/pi-ai/src/models/capability-patches.ts +5 -2
  504. package/packages/pi-ai/src/models/generated/amazon-bedrock.ts +68 -0
  505. package/packages/pi-ai/src/models/generated/anthropic.ts +17 -0
  506. package/packages/pi-ai/src/models/generated/google-antigravity.ts +17 -0
  507. package/packages/pi-ai/src/models/generated/groq.ts +0 -153
  508. package/packages/pi-ai/src/models/generated/openai-codex.ts +17 -0
  509. package/packages/pi-ai/src/models/generated/openrouter.ts +17 -0
  510. package/packages/pi-ai/src/models.generated.test.ts +17 -0
  511. package/packages/pi-ai/src/providers/amazon-bedrock.test.ts +164 -0
  512. package/packages/pi-ai/src/providers/amazon-bedrock.ts +41 -7
  513. package/packages/pi-ai/src/providers/anthropic-auth.test.ts +47 -1
  514. package/packages/pi-ai/src/providers/anthropic-bearer-auth.test.ts +26 -0
  515. package/packages/pi-ai/src/providers/anthropic-shared.test.ts +15 -1
  516. package/packages/pi-ai/src/providers/anthropic-shared.ts +36 -3
  517. package/packages/pi-ai/src/providers/anthropic.ts +25 -2
  518. package/packages/pi-ai/src/providers/api-family.test.ts +129 -0
  519. package/packages/pi-ai/src/providers/api-family.ts +57 -0
  520. package/packages/pi-ai/src/utils/oauth/github-copilot.test.ts +200 -23
  521. package/packages/pi-ai/src/utils/oauth/github-copilot.ts +12 -2
  522. package/packages/pi-ai/src/utils/oauth/google-antigravity.test.ts +84 -0
  523. package/packages/pi-ai/src/utils/oauth/google-antigravity.ts +15 -5
  524. package/packages/pi-ai/src/utils/oauth/google-gemini-cli.test.ts +84 -0
  525. package/packages/pi-ai/src/utils/oauth/google-gemini-cli.ts +16 -5
  526. package/packages/pi-ai/src/utils/oauth/oauth-providers.test.ts +363 -0
  527. package/packages/pi-ai/src/utils/oauth/openai-codex.ts +15 -0
  528. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  529. package/packages/pi-coding-agent/dist/cli/args.d.ts +6 -0
  530. package/packages/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
  531. package/packages/pi-coding-agent/dist/cli/args.js +14 -4
  532. package/packages/pi-coding-agent/dist/cli/args.js.map +1 -1
  533. package/packages/pi-coding-agent/dist/cli/args.test.d.ts +2 -0
  534. package/packages/pi-coding-agent/dist/cli/args.test.d.ts.map +1 -0
  535. package/packages/pi-coding-agent/dist/cli/args.test.js +38 -0
  536. package/packages/pi-coding-agent/dist/cli/args.test.js.map +1 -0
  537. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts +2 -0
  538. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts.map +1 -0
  539. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js +38 -0
  540. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js.map +1 -0
  541. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  542. package/packages/pi-coding-agent/dist/core/agent-session.js +25 -2
  543. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  544. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +14 -0
  545. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  546. package/packages/pi-coding-agent/dist/core/auth-storage.js +34 -0
  547. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  548. package/packages/pi-coding-agent/dist/core/auth-storage.test.js +74 -0
  549. package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
  550. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +4 -1
  551. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
  552. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  553. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  554. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  555. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  556. package/packages/pi-coding-agent/dist/core/extensions/loader.js +4 -0
  557. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  558. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +34 -2
  559. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  560. package/packages/pi-coding-agent/dist/core/extensions/runner.js +233 -0
  561. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  562. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +200 -3
  563. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  564. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  565. package/packages/pi-coding-agent/dist/core/hooks-runner.d.ts +53 -0
  566. package/packages/pi-coding-agent/dist/core/hooks-runner.d.ts.map +1 -0
  567. package/packages/pi-coding-agent/dist/core/hooks-runner.js +337 -0
  568. package/packages/pi-coding-agent/dist/core/hooks-runner.js.map +1 -0
  569. package/packages/pi-coding-agent/dist/core/hooks-runner.test.d.ts +2 -0
  570. package/packages/pi-coding-agent/dist/core/hooks-runner.test.d.ts.map +1 -0
  571. package/packages/pi-coding-agent/dist/core/hooks-runner.test.js +234 -0
  572. package/packages/pi-coding-agent/dist/core/hooks-runner.test.js.map +1 -0
  573. package/packages/pi-coding-agent/dist/core/index.d.ts +1 -0
  574. package/packages/pi-coding-agent/dist/core/index.d.ts.map +1 -1
  575. package/packages/pi-coding-agent/dist/core/index.js +1 -0
  576. package/packages/pi-coding-agent/dist/core/index.js.map +1 -1
  577. package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.d.ts +2 -0
  578. package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.d.ts.map +1 -0
  579. package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.js +40 -0
  580. package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.js.map +1 -0
  581. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +32 -0
  582. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
  583. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -1
  584. package/packages/pi-coding-agent/dist/core/retry-handler.js +4 -1
  585. package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -1
  586. package/packages/pi-coding-agent/dist/core/sdk.d.ts +10 -0
  587. package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  588. package/packages/pi-coding-agent/dist/core/sdk.js +39 -1
  589. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  590. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +55 -0
  591. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  592. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  593. package/packages/pi-coding-agent/dist/core/skill-tool.test.js +2 -2
  594. package/packages/pi-coding-agent/dist/core/skill-tool.test.js.map +1 -1
  595. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  596. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  597. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  598. package/packages/pi-coding-agent/dist/main.d.ts.map +1 -1
  599. package/packages/pi-coding-agent/dist/main.js +3 -0
  600. package/packages/pi-coding-agent/dist/main.js.map +1 -1
  601. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts.map +1 -1
  602. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +17 -7
  603. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -1
  604. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  605. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +48 -34
  606. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  607. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts +4 -0
  608. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  609. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +83 -33
  610. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  611. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
  612. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  613. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +77 -0
  614. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  615. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -66
  616. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  617. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +1 -75
  618. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  619. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +1 -1
  620. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  621. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +192 -24
  622. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  623. package/packages/pi-coding-agent/package.json +1 -1
  624. package/packages/pi-coding-agent/src/cli/args.test.ts +44 -0
  625. package/packages/pi-coding-agent/src/cli/args.ts +21 -6
  626. package/packages/pi-coding-agent/src/core/agent-session-abort-order.test.ts +56 -0
  627. package/packages/pi-coding-agent/src/core/agent-session.ts +27 -2
  628. package/packages/pi-coding-agent/src/core/auth-storage.test.ts +83 -0
  629. package/packages/pi-coding-agent/src/core/auth-storage.ts +35 -0
  630. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +4 -1
  631. package/packages/pi-coding-agent/src/core/extensions/index.ts +16 -0
  632. package/packages/pi-coding-agent/src/core/extensions/loader.ts +5 -0
  633. package/packages/pi-coding-agent/src/core/extensions/runner.ts +353 -1
  634. package/packages/pi-coding-agent/src/core/extensions/types.ts +253 -2
  635. package/packages/pi-coding-agent/src/core/hooks-runner.test.ts +269 -0
  636. package/packages/pi-coding-agent/src/core/hooks-runner.ts +460 -0
  637. package/packages/pi-coding-agent/src/core/index.ts +10 -0
  638. package/packages/pi-coding-agent/src/core/model-registry-auth-header.test.ts +44 -0
  639. package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +37 -1
  640. package/packages/pi-coding-agent/src/core/retry-handler.ts +4 -1
  641. package/packages/pi-coding-agent/src/core/sdk.ts +58 -1
  642. package/packages/pi-coding-agent/src/core/settings-manager.ts +57 -0
  643. package/packages/pi-coding-agent/src/core/skill-tool.test.ts +2 -2
  644. package/packages/pi-coding-agent/src/index.ts +16 -0
  645. package/packages/pi-coding-agent/src/main.ts +4 -0
  646. package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +19 -7
  647. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +53 -31
  648. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +88 -36
  649. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +83 -0
  650. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +2 -83
  651. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +208 -27
  652. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  653. package/packages/pi-tui/package.json +1 -1
  654. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  655. package/packages/rpc-client/package.json +1 -1
  656. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
  657. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
  658. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  659. package/pkg/dist/modes/interactive/theme/theme-schema.js +77 -0
  660. package/pkg/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  661. package/pkg/dist/modes/interactive/theme/theme.d.ts +1 -66
  662. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  663. package/pkg/dist/modes/interactive/theme/theme.js +1 -75
  664. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  665. package/pkg/dist/modes/interactive/theme/themes.d.ts +1 -1
  666. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  667. package/pkg/dist/modes/interactive/theme/themes.js +192 -24
  668. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  669. package/pkg/package.json +1 -1
  670. package/src/resources/agents/researcher.md +1 -1
  671. package/src/resources/extensions/ask-user-questions.ts +24 -6
  672. package/src/resources/extensions/claude-code-cli/models.ts +9 -0
  673. package/src/resources/extensions/claude-code-cli/readiness.ts +36 -2
  674. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +94 -4
  675. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +84 -0
  676. package/src/resources/extensions/gsd/auto/detect-stuck.ts +10 -0
  677. package/src/resources/extensions/gsd/auto/loop-deps.ts +2 -9
  678. package/src/resources/extensions/gsd/auto/loop.ts +109 -3
  679. package/src/resources/extensions/gsd/auto/phases.ts +146 -66
  680. package/src/resources/extensions/gsd/auto/resolve.ts +1 -1
  681. package/src/resources/extensions/gsd/auto/run-unit.ts +11 -1
  682. package/src/resources/extensions/gsd/auto/session.ts +7 -0
  683. package/src/resources/extensions/gsd/auto-artifact-paths.ts +20 -0
  684. package/src/resources/extensions/gsd/auto-dashboard.ts +46 -5
  685. package/src/resources/extensions/gsd/auto-direct-dispatch.ts +15 -2
  686. package/src/resources/extensions/gsd/auto-dispatch.ts +141 -9
  687. package/src/resources/extensions/gsd/auto-loop.ts +1 -1
  688. package/src/resources/extensions/gsd/auto-model-selection.ts +37 -6
  689. package/src/resources/extensions/gsd/auto-post-unit.ts +10 -8
  690. package/src/resources/extensions/gsd/auto-prompts.ts +232 -47
  691. package/src/resources/extensions/gsd/auto-recovery.ts +63 -1
  692. package/src/resources/extensions/gsd/auto-start.ts +8 -6
  693. package/src/resources/extensions/gsd/auto-verification.ts +36 -3
  694. package/src/resources/extensions/gsd/auto-worktree.ts +81 -1
  695. package/src/resources/extensions/gsd/auto.ts +61 -28
  696. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +8 -21
  697. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +46 -24
  698. package/src/resources/extensions/gsd/bootstrap/memory-tools.ts +163 -0
  699. package/src/resources/extensions/gsd/bootstrap/query-tools.ts +31 -0
  700. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +15 -0
  701. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +22 -0
  702. package/src/resources/extensions/gsd/bootstrap/system-context.ts +89 -10
  703. package/src/resources/extensions/gsd/commands/catalog.ts +74 -9
  704. package/src/resources/extensions/gsd/commands/handlers/core.ts +69 -27
  705. package/src/resources/extensions/gsd/commands/handlers/escalate.ts +216 -0
  706. package/src/resources/extensions/gsd/commands/handlers/onboarding.ts +196 -0
  707. package/src/resources/extensions/gsd/commands/handlers/ops.ts +21 -0
  708. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +279 -29
  709. package/src/resources/extensions/gsd/commands-cmux.ts +6 -2
  710. package/src/resources/extensions/gsd/commands-config.ts +10 -0
  711. package/src/resources/extensions/gsd/commands-debug.ts +484 -0
  712. package/src/resources/extensions/gsd/commands-do.ts +1 -0
  713. package/src/resources/extensions/gsd/commands-extract-learnings.ts +262 -78
  714. package/src/resources/extensions/gsd/commands-handlers.ts +19 -2
  715. package/src/resources/extensions/gsd/commands-memory.ts +551 -0
  716. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +49 -12
  717. package/src/resources/extensions/gsd/commands-scan.ts +125 -0
  718. package/src/resources/extensions/gsd/commands-workflow-templates.ts +129 -2
  719. package/src/resources/extensions/gsd/custom-workflow-engine.ts +85 -60
  720. package/src/resources/extensions/gsd/db-writer.ts +91 -17
  721. package/src/resources/extensions/gsd/debug-session-store.ts +377 -0
  722. package/src/resources/extensions/gsd/definition-loader.ts +7 -0
  723. package/src/resources/extensions/gsd/docs/preferences-reference.md +9 -9
  724. package/src/resources/extensions/gsd/doctor-environment.ts +2 -1
  725. package/src/resources/extensions/gsd/doctor-git-checks.ts +51 -30
  726. package/src/resources/extensions/gsd/doctor-proactive.ts +4 -1
  727. package/src/resources/extensions/gsd/doctor-providers.ts +109 -26
  728. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +23 -4
  729. package/src/resources/extensions/gsd/doctor-types.ts +1 -0
  730. package/src/resources/extensions/gsd/doctor.ts +7 -1
  731. package/src/resources/extensions/gsd/ecosystem/gsd-extension-api.ts +2 -0
  732. package/src/resources/extensions/gsd/error-classifier.ts +6 -3
  733. package/src/resources/extensions/gsd/escalation.ts +367 -0
  734. package/src/resources/extensions/gsd/forensics.ts +25 -29
  735. package/src/resources/extensions/gsd/git-service.ts +0 -1
  736. package/src/resources/extensions/gsd/graph.ts +33 -3
  737. package/src/resources/extensions/gsd/gsd-db.ts +617 -32
  738. package/src/resources/extensions/gsd/health-widget-core.ts +43 -14
  739. package/src/resources/extensions/gsd/health-widget.ts +7 -3
  740. package/src/resources/extensions/gsd/hook-emitter.ts +188 -0
  741. package/src/resources/extensions/gsd/init-wizard.ts +87 -54
  742. package/src/resources/extensions/gsd/markdown-renderer.ts +5 -5
  743. package/src/resources/extensions/gsd/memory-backfill.ts +140 -0
  744. package/src/resources/extensions/gsd/memory-embeddings.ts +235 -0
  745. package/src/resources/extensions/gsd/memory-extractor.ts +100 -34
  746. package/src/resources/extensions/gsd/memory-ingest.ts +286 -0
  747. package/src/resources/extensions/gsd/memory-relations.ts +240 -0
  748. package/src/resources/extensions/gsd/memory-source-store.ts +138 -0
  749. package/src/resources/extensions/gsd/memory-store.ts +377 -7
  750. package/src/resources/extensions/gsd/metrics.ts +1 -0
  751. package/src/resources/extensions/gsd/model-cost-table.ts +3 -1
  752. package/src/resources/extensions/gsd/model-router.ts +25 -6
  753. package/src/resources/extensions/gsd/native-git-bridge.ts +134 -6
  754. package/src/resources/extensions/gsd/notification-overlay.ts +9 -19
  755. package/src/resources/extensions/gsd/notification-widget.ts +25 -43
  756. package/src/resources/extensions/gsd/notifications.ts +6 -0
  757. package/src/resources/extensions/gsd/onboarding-state.ts +146 -0
  758. package/src/resources/extensions/gsd/post-execution-checks.ts +37 -14
  759. package/src/resources/extensions/gsd/pre-execution-checks.ts +106 -12
  760. package/src/resources/extensions/gsd/preferences-models.ts +1 -0
  761. package/src/resources/extensions/gsd/preferences-types.ts +10 -2
  762. package/src/resources/extensions/gsd/preferences-validation.ts +33 -7
  763. package/src/resources/extensions/gsd/preferences.ts +10 -10
  764. package/src/resources/extensions/gsd/prompts/add-tests.md +1 -0
  765. package/src/resources/extensions/gsd/prompts/complete-milestone.md +4 -1
  766. package/src/resources/extensions/gsd/prompts/complete-slice.md +2 -2
  767. package/src/resources/extensions/gsd/prompts/debug-diagnose.md +27 -0
  768. package/src/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
  769. package/src/resources/extensions/gsd/prompts/execute-task.md +16 -3
  770. package/src/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
  771. package/src/resources/extensions/gsd/prompts/plan-slice.md +2 -0
  772. package/src/resources/extensions/gsd/prompts/refine-slice.md +69 -0
  773. package/src/resources/extensions/gsd/prompts/research-slice.md +1 -0
  774. package/src/resources/extensions/gsd/prompts/scan.md +79 -0
  775. package/src/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
  776. package/src/resources/extensions/gsd/python-resolver.ts +76 -0
  777. package/src/resources/extensions/gsd/run-manager.ts +53 -19
  778. package/src/resources/extensions/gsd/setup-catalog.ts +105 -0
  779. package/src/resources/extensions/gsd/state.ts +95 -6
  780. package/src/resources/extensions/gsd/templates/PREFERENCES.md +7 -7
  781. package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +1 -34
  782. package/src/resources/extensions/gsd/tests/artifact-corruption-2630.test.ts +7 -0
  783. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +49 -0
  784. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +45 -31
  785. package/src/resources/extensions/gsd/tests/auto-migrating-recovery.test.ts +63 -0
  786. package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +95 -1
  787. package/src/resources/extensions/gsd/tests/auto-prompts-fallback.test.ts +35 -0
  788. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +123 -1
  789. package/src/resources/extensions/gsd/tests/auto-wrapup-inflight-guard.test.ts +39 -0
  790. package/src/resources/extensions/gsd/tests/autocomplete-regressions-1675.test.ts +39 -0
  791. package/src/resources/extensions/gsd/tests/bundled-skill-triggers.test.ts +54 -0
  792. package/src/resources/extensions/gsd/tests/commands-do.test.ts +48 -0
  793. package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +335 -21
  794. package/src/resources/extensions/gsd/tests/commands-scan.test.ts +351 -0
  795. package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +8 -6
  796. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +6 -8
  797. package/src/resources/extensions/gsd/tests/complete-task.test.ts +2 -2
  798. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +63 -0
  799. package/src/resources/extensions/gsd/tests/debug-command-handler.test.ts +905 -0
  800. package/src/resources/extensions/gsd/tests/debug-command-lifecycle.integration.test.ts +1229 -0
  801. package/src/resources/extensions/gsd/tests/debug-session-store.test.ts +565 -0
  802. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +42 -0
  803. package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +8 -4
  804. package/src/resources/extensions/gsd/tests/discuss-milestone-structured-questions.test.ts +64 -0
  805. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +67 -0
  806. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +175 -17
  807. package/src/resources/extensions/gsd/tests/enhanced-verification-integration.test.ts +5 -0
  808. package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +306 -1
  809. package/src/resources/extensions/gsd/tests/escalation.test.ts +818 -0
  810. package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +29 -12
  811. package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +145 -8
  812. package/src/resources/extensions/gsd/tests/forensics-hook-key-parse.test.ts +74 -0
  813. package/src/resources/extensions/gsd/tests/freeform-decisions.test.ts +62 -0
  814. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +0 -4
  815. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +44 -1
  816. package/src/resources/extensions/gsd/tests/health-widget.test.ts +8 -2
  817. package/src/resources/extensions/gsd/tests/init-prefs-routing.test.ts +190 -0
  818. package/src/resources/extensions/gsd/tests/integration/doctor-git-symlink-cwd.test.ts +90 -0
  819. package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +117 -0
  820. package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +44 -0
  821. package/src/resources/extensions/gsd/tests/integration/doctor-runtime.test.ts +68 -1
  822. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +109 -11
  823. package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +51 -0
  824. package/src/resources/extensions/gsd/tests/integration/integration-proof.test.ts +2 -2
  825. package/src/resources/extensions/gsd/tests/integration/test-isolation.ts +53 -0
  826. package/src/resources/extensions/gsd/tests/interactive-routing-bypass.test.ts +1 -1
  827. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +206 -1
  828. package/src/resources/extensions/gsd/tests/load-memory-block.test.ts +36 -0
  829. package/src/resources/extensions/gsd/tests/md-importer.test.ts +1 -1
  830. package/src/resources/extensions/gsd/tests/memory-embeddings.test.ts +213 -0
  831. package/src/resources/extensions/gsd/tests/memory-ingest.test.ts +153 -0
  832. package/src/resources/extensions/gsd/tests/memory-maintenance.test.ts +107 -0
  833. package/src/resources/extensions/gsd/tests/memory-relations.test.ts +175 -0
  834. package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -2
  835. package/src/resources/extensions/gsd/tests/memory-tools.test.ts +295 -0
  836. package/src/resources/extensions/gsd/tests/milestone-status-tool.test.ts +3 -2
  837. package/src/resources/extensions/gsd/tests/model-cost-table.test.ts +2 -2
  838. package/src/resources/extensions/gsd/tests/model-router.test.ts +51 -1
  839. package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +59 -0
  840. package/src/resources/extensions/gsd/tests/notification-overlay.test.ts +56 -37
  841. package/src/resources/extensions/gsd/tests/notification-widget.test.ts +1 -1
  842. package/src/resources/extensions/gsd/tests/onboarding-state.test.ts +105 -0
  843. package/src/resources/extensions/gsd/tests/plan-milestone-boundary-map-preservation.test.ts +114 -0
  844. package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +4 -5
  845. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +17 -0
  846. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +105 -1
  847. package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +341 -6
  848. package/src/resources/extensions/gsd/tests/preferences.test.ts +69 -1
  849. package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +539 -0
  850. package/src/resources/extensions/gsd/tests/projection-no-plan-overwrite.test.ts +11 -2
  851. package/src/resources/extensions/gsd/tests/projection-regression.test.ts +7 -0
  852. package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +159 -8
  853. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +24 -0
  854. package/src/resources/extensions/gsd/tests/prompt-db.test.ts +1 -1
  855. package/src/resources/extensions/gsd/tests/prompts-no-gitignored-test-refs.test.ts +56 -0
  856. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +45 -4
  857. package/src/resources/extensions/gsd/tests/python-resolver.test.ts +131 -0
  858. package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +67 -0
  859. package/src/resources/extensions/gsd/tests/remote-notification-from-desktop.test.ts +107 -0
  860. package/src/resources/extensions/gsd/tests/requirements.test.ts +9 -0
  861. package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +153 -0
  862. package/src/resources/extensions/gsd/tests/skip-slice-cascades-tasks.test.ts +125 -0
  863. package/src/resources/extensions/gsd/tests/slice-context-injection.test.ts +16 -4
  864. package/src/resources/extensions/gsd/tests/stash-queued-context-files.test.ts +54 -0
  865. package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +3 -0
  866. package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +15 -0
  867. package/src/resources/extensions/gsd/tests/summary-render-parity.test.ts +5 -0
  868. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +2 -1
  869. package/src/resources/extensions/gsd/tests/uok-flags.test.ts +31 -1
  870. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +166 -0
  871. package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +9 -3
  872. package/src/resources/extensions/gsd/tests/verification-gate.test.ts +35 -0
  873. package/src/resources/extensions/gsd/tests/workflow-install.test.ts +113 -0
  874. package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +15 -6
  875. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +2 -2
  876. package/src/resources/extensions/gsd/tests/workflow-plugins.test.ts +310 -0
  877. package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +7 -0
  878. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +8 -2
  879. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +97 -0
  880. package/src/resources/extensions/gsd/tests/worktree-journal-events.test.ts +2 -1
  881. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +77 -2
  882. package/src/resources/extensions/gsd/tools/complete-task.ts +87 -0
  883. package/src/resources/extensions/gsd/tools/memory-tools.ts +410 -0
  884. package/src/resources/extensions/gsd/tools/plan-milestone.ts +42 -8
  885. package/src/resources/extensions/gsd/tools/plan-slice.ts +6 -1
  886. package/src/resources/extensions/gsd/tools/skip-slice.ts +133 -0
  887. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +14 -0
  888. package/src/resources/extensions/gsd/types.ts +62 -0
  889. package/src/resources/extensions/gsd/unit-runtime.ts +1 -0
  890. package/src/resources/extensions/gsd/uok/contracts.ts +2 -1
  891. package/src/resources/extensions/gsd/uok/flags.ts +7 -7
  892. package/src/resources/extensions/gsd/uok/kernel.ts +16 -4
  893. package/src/resources/extensions/gsd/verification-gate.ts +2 -1
  894. package/src/resources/extensions/gsd/workflow-dispatch.ts +106 -0
  895. package/src/resources/extensions/gsd/workflow-install.ts +423 -0
  896. package/src/resources/extensions/gsd/workflow-logger.ts +4 -1
  897. package/src/resources/extensions/gsd/workflow-manifest.ts +8 -0
  898. package/src/resources/extensions/gsd/workflow-mcp.ts +1 -6
  899. package/src/resources/extensions/gsd/workflow-plugins.ts +403 -0
  900. package/src/resources/extensions/gsd/workflow-projections.ts +18 -16
  901. package/src/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
  902. package/src/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
  903. package/src/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
  904. package/src/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
  905. package/src/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
  906. package/src/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
  907. package/src/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
  908. package/src/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
  909. package/src/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
  910. package/src/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
  911. package/src/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
  912. package/src/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
  913. package/src/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
  914. package/src/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
  915. package/src/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
  916. package/src/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
  917. package/src/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
  918. package/src/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
  919. package/src/resources/extensions/gsd/workflow-templates/registry.json +184 -0
  920. package/src/resources/extensions/gsd/workflow-templates/release.md +118 -0
  921. package/src/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
  922. package/src/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
  923. package/src/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
  924. package/src/resources/extensions/gsd/workflow-templates/spike.md +7 -0
  925. package/src/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
  926. package/src/resources/extensions/gsd/workflow-templates.ts +7 -0
  927. package/src/resources/extensions/gsd/workspace-index.ts +9 -4
  928. package/src/resources/extensions/gsd/worktree-resolver.ts +47 -1
  929. package/src/resources/extensions/remote-questions/commands.ts +480 -0
  930. package/src/resources/extensions/remote-questions/manager.ts +49 -4
  931. package/src/resources/extensions/remote-questions/telegram-adapter.ts +86 -4
  932. package/src/resources/extensions/remote-questions/tests/command-polling.test.ts +246 -0
  933. package/src/resources/extensions/remote-questions/tests/remote-answer-normalization.test.ts +92 -0
  934. package/src/resources/extensions/remote-questions/tests/telegram-commands.test.ts +267 -0
  935. package/src/resources/extensions/search-the-web/command-search-provider.ts +4 -1
  936. package/src/resources/extensions/search-the-web/native-search.ts +13 -3
  937. package/src/resources/extensions/shared/interview-ui.ts +195 -1
  938. package/src/resources/extensions/shared/layout-utils.ts +26 -0
  939. package/src/resources/extensions/shared/rtk-shared.ts +58 -0
  940. package/src/resources/extensions/shared/rtk.ts +12 -52
  941. package/src/resources/extensions/shared/tests/interview-preview.test.ts +177 -0
  942. package/src/resources/extensions/shared/tests/preview-layout.test.ts +120 -0
  943. package/src/resources/skills/api-design/SKILL.md +190 -0
  944. package/src/resources/skills/create-mcp-server/SKILL.md +121 -0
  945. package/src/resources/skills/create-workflow/SKILL.md +33 -6
  946. package/src/resources/skills/decompose-into-slices/SKILL.md +139 -0
  947. package/src/resources/skills/dependency-upgrade/SKILL.md +158 -0
  948. package/src/resources/skills/design-an-interface/SKILL.md +102 -0
  949. package/src/resources/skills/forensics/SKILL.md +153 -0
  950. package/src/resources/skills/grill-me/SKILL.md +93 -0
  951. package/src/resources/skills/handoff/SKILL.md +121 -0
  952. package/src/resources/skills/observability/SKILL.md +174 -0
  953. package/src/resources/skills/security-review/SKILL.md +181 -0
  954. package/src/resources/skills/spike-wrap-up/SKILL.md +138 -0
  955. package/src/resources/skills/tdd/SKILL.md +112 -0
  956. package/src/resources/skills/verify-before-complete/SKILL.md +97 -0
  957. package/src/resources/skills/write-docs/SKILL.md +81 -0
  958. package/src/resources/skills/write-milestone-brief/SKILL.md +135 -0
  959. package/dist/web/standalone/.next/static/chunks/2826.dd3dc8bbd3025fa5.js +0 -9
  960. package/dist/web/standalone/.next/static/chunks/app/page-7115e62689b5fd84.js +0 -1
  961. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
  962. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
  963. package/dist/web/standalone/.next/static/css/f6e8833d46e738d8.css +0 -1
  964. package/packages/native/dist/ps/types.d.ts +0 -5
  965. package/packages/native/dist/ps/types.js +0 -2
  966. package/packages/native/src/ps/types.ts +0 -5
  967. package/packages/pi-ai/node_modules/@smithy/node-http-handler/LICENSE +0 -201
  968. package/packages/pi-ai/node_modules/@smithy/node-http-handler/README.md +0 -9
  969. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-cjs/index.js +0 -762
  970. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js +0 -19
  971. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/constants.js +0 -1
  972. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js +0 -9
  973. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/index.js +0 -3
  974. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +0 -230
  975. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +0 -87
  976. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +0 -32
  977. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +0 -169
  978. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js +0 -21
  979. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +0 -88
  980. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +0 -36
  981. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js +0 -21
  982. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +0 -22
  983. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +0 -23
  984. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
  985. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
  986. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js +0 -21
  987. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/timing.js +0 -4
  988. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +0 -63
  989. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts +0 -10
  990. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts +0 -5
  991. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts +0 -4
  992. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +0 -3
  993. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts +0 -46
  994. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +0 -24
  995. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +0 -12
  996. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +0 -63
  997. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts +0 -13
  998. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts +0 -12
  999. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts +0 -2
  1000. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts +0 -6
  1001. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts +0 -6
  1002. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts +0 -2
  1003. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
  1004. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -6
  1005. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts +0 -13
  1006. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +0 -8
  1007. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts +0 -10
  1008. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts +0 -5
  1009. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts +0 -4
  1010. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts +0 -3
  1011. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts +0 -46
  1012. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts +0 -24
  1013. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts +0 -12
  1014. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts +0 -63
  1015. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts +0 -13
  1016. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts +0 -12
  1017. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts +0 -2
  1018. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts +0 -6
  1019. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts +0 -6
  1020. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts +0 -2
  1021. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts +0 -5
  1022. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts +0 -6
  1023. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts +0 -13
  1024. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +0 -8
  1025. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts +0 -12
  1026. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts +0 -12
  1027. package/packages/pi-ai/node_modules/@smithy/node-http-handler/package.json +0 -68
  1028. package/packages/pi-ai/oauth.d.ts +0 -1
  1029. package/packages/pi-ai/oauth.js +0 -1
  1030. /package/dist/web/standalone/.next/static/{prkokVQFxWtUVIku57_0z → pBwmOoye64ZrRp-_rf0v1}/_buildManifest.js +0 -0
  1031. /package/dist/web/standalone/.next/static/{prkokVQFxWtUVIku57_0z → pBwmOoye64ZrRp-_rf0v1}/_ssgManifest.js +0 -0
@@ -60,6 +60,7 @@ import {
60
60
  nativeAddPaths,
61
61
  nativeRmForce,
62
62
  nativeBranchDelete,
63
+ nativeBranchForceReset,
63
64
  nativeBranchExists,
64
65
  nativeDiffNumstat,
65
66
  nativeUpdateRef,
@@ -237,6 +238,14 @@ function clearProjectRootStateFiles(basePath: string, milestoneId: string): void
237
238
  }
238
239
  }
239
240
 
241
+ function isProjectGsdSymlink(basePath: string): boolean {
242
+ try {
243
+ return lstatSyncFn(join(basePath, ".gsd")).isSymbolicLink();
244
+ } catch {
245
+ return false;
246
+ }
247
+ }
248
+
240
249
  // ─── Build Artifact Auto-Resolve ─────────────────────────────────────────────
241
250
 
242
251
  /** Patterns for machine-generated build artifacts that can be safely
@@ -921,10 +930,74 @@ export function runWorktreePostCreateHook(
921
930
 
922
931
  // ─── Auto-Worktree Branch Naming ───────────────────────────────────────────
923
932
 
933
+ /** Returns the git branch name for a milestone worktree (`milestone/<MID>`). */
924
934
  export function autoWorktreeBranch(milestoneId: string): string {
925
935
  return `milestone/${milestoneId}`;
926
936
  }
927
937
 
938
+ // ─── Branch-mode Entry ─────────────────────────────────────────────────────
939
+
940
+ /**
941
+ * Enter branch isolation mode for a milestone.
942
+ *
943
+ * Creates `milestone/<MID>` from the integration branch (if it doesn't
944
+ * exist yet) and checks out to it. No worktree directory is created — the
945
+ * project root is the working copy; only HEAD changes.
946
+ *
947
+ * Uses the same 3-tier integration-branch fallback as createAutoWorktree:
948
+ * 1. META.json recorded integration branch
949
+ * 2. git.main_branch preference
950
+ * 3. nativeDetectMainBranch (origin/HEAD auto-detection)
951
+ */
952
+ export function enterBranchModeForMilestone(
953
+ basePath: string,
954
+ milestoneId: string,
955
+ ): void {
956
+ const branch = autoWorktreeBranch(milestoneId);
957
+ const branchExists = nativeBranchExists(basePath, branch);
958
+
959
+ if (!branchExists) {
960
+ // Create the milestone branch from the integration branch start-point.
961
+ const integrationBranch =
962
+ readIntegrationBranch(basePath, milestoneId) ?? undefined;
963
+ const gitPrefs = loadEffectiveGSDPreferences()?.preferences?.git;
964
+ // Validate main_branch preference exists in the repo before using it —
965
+ // a stale preference (e.g. "master" when repo uses "main") would cause
966
+ // nativeBranchForceReset to fail with a bad start-point reference.
967
+ const validatedPrefBranch =
968
+ gitPrefs?.main_branch &&
969
+ typeof gitPrefs.main_branch === "string" &&
970
+ gitPrefs.main_branch.length > 0 &&
971
+ nativeBranchExists(basePath, gitPrefs.main_branch)
972
+ ? gitPrefs.main_branch
973
+ : undefined;
974
+ const startPoint =
975
+ integrationBranch ??
976
+ validatedPrefBranch ??
977
+ nativeDetectMainBranch(basePath);
978
+
979
+ // nativeBranchForceReset creates (or resets) branch at startPoint,
980
+ // then checkout switches HEAD to it.
981
+ nativeBranchForceReset(basePath, branch, startPoint);
982
+ debugLog("auto-worktree", {
983
+ action: "enterBranchMode",
984
+ milestoneId,
985
+ branch,
986
+ startPoint,
987
+ created: true,
988
+ });
989
+ } else {
990
+ debugLog("auto-worktree", {
991
+ action: "enterBranchMode",
992
+ milestoneId,
993
+ branch,
994
+ reused: true,
995
+ });
996
+ }
997
+
998
+ nativeCheckoutBranch(basePath, branch);
999
+ }
1000
+
928
1001
  // ─── Public API ────────────────────────────────────────────────────────────
929
1002
 
930
1003
  /**
@@ -1610,12 +1683,19 @@ export function mergeMilestoneToMain(
1610
1683
  // CONTEXT files into the stash. If stash pop later fails, those files
1611
1684
  // are permanently trapped in the stash entry and lost on the next
1612
1685
  // stash push or drop.
1686
+ //
1687
+ // When `.gsd` itself is a symlink, Git rejects pathspecs below it
1688
+ // ("beyond a symbolic link"). In that layout, exclude the whole symlink
1689
+ // and keep stashing real project files that could block the merge.
1690
+ const stashPathspecs = isProjectGsdSymlink(originalBasePath_)
1691
+ ? [".", ":(exclude).gsd"]
1692
+ : [":(exclude).gsd/milestones"];
1613
1693
  execFileSync(
1614
1694
  "git",
1615
1695
  [
1616
1696
  "stash", "push", "--include-untracked",
1617
1697
  "-m", `gsd: pre-merge stash for ${milestoneId}`,
1618
- "--", ":(exclude).gsd/milestones",
1698
+ "--", ...stashPathspecs,
1619
1699
  ],
1620
1700
  { cwd: originalBasePath_, stdio: ["ignore", "pipe", "pipe"], encoding: "utf-8" },
1621
1701
  );
@@ -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 {
@@ -168,6 +170,7 @@ import {
168
170
  } from "./auto-recovery.js";
169
171
  import { resolveDispatch, DISPATCH_RULES } from "./auto-dispatch.js";
170
172
  import { getErrorMessage } from "./error-utils.js";
173
+ import { recoverFailedMigration } from "./migrate-external.js";
171
174
  import { initRegistry, convertDispatchRules } from "./rule-registry.js";
172
175
  import { emitJournalEvent as _emitJournalEvent, type JournalEntry } from "./journal.js";
173
176
  import {
@@ -201,7 +204,7 @@ import {
201
204
  } from "./auto-post-unit.js";
202
205
  import { bootstrapAutoSession, openProjectDbIfPresent, type BootstrapDeps } from "./auto-start.js";
203
206
  import { initHealthWidget } from "./health-widget.js";
204
- import { autoLoop, resolveAgentEnd, resolveAgentEndCancelled, _resetPendingResolve, isSessionSwitchInFlight, type LoopDeps, type ErrorContext } from "./auto-loop.js";
207
+ import { runLegacyAutoLoop, runUokKernelLoop, resolveAgentEnd, resolveAgentEndCancelled, _resetPendingResolve, isSessionSwitchInFlight, type LoopDeps, type ErrorContext } from "./auto-loop.js";
205
208
  import { runAutoLoopWithUok } from "./uok/kernel.js";
206
209
  import { resolveUokFlags } from "./uok/flags.js";
207
210
  // Slice-level parallelism (#2340)
@@ -326,6 +329,7 @@ export function startAutoDetached(
326
329
  });
327
330
  }
328
331
 
332
+ /** Returns true if the project is configured for `isolation:worktree` mode. */
329
333
  export function shouldUseWorktreeIsolation(): boolean {
330
334
  const prefs = loadEffectiveGSDPreferences()?.preferences?.git;
331
335
  if (prefs?.isolation === "worktree") return true;
@@ -390,6 +394,27 @@ function deregisterSigtermHandler(): void {
390
394
  s.sigtermHandler = null;
391
395
  }
392
396
 
397
+ /**
398
+ * Wrapper: start background command polling for the configured remote channel
399
+ * (currently Telegram only). Stores the cleanup function on the session so
400
+ * every exit path can stop the interval via stopCommandPolling().
401
+ * No-op when no remote channel is configured.
402
+ */
403
+ function startAutoCommandPolling(basePath: string): void {
404
+ if (!isRemoteConfigured()) return;
405
+ // Clear any existing interval before starting a new one (e.g. resume path).
406
+ stopAutoCommandPolling();
407
+ s.commandPollingCleanup = _startCommandPolling(basePath);
408
+ }
409
+
410
+ /** Wrapper: stop background command polling and clear the stored cleanup. */
411
+ function stopAutoCommandPolling(): void {
412
+ if (s.commandPollingCleanup) {
413
+ s.commandPollingCleanup();
414
+ s.commandPollingCleanup = null;
415
+ }
416
+ }
417
+
393
418
  export { type AutoDashboardData } from "./auto-dashboard.js";
394
419
 
395
420
  export function getAutoDashboardData(): AutoDashboardData {
@@ -466,6 +491,15 @@ export function getAutoModeStartModel(): {
466
491
  return s.autoModeStartModel;
467
492
  }
468
493
 
494
+ /**
495
+ * Update the dashboard-facing dispatched model label.
496
+ * Used when runtime recovery switches models mid-unit (e.g. provider fallback)
497
+ * so the AUTO box reflects the active model immediately.
498
+ */
499
+ export function setCurrentDispatchedModelId(model: { provider: string; id: string } | null): void {
500
+ s.currentDispatchedModelId = model ? `${model.provider}/${model.id}` : null;
501
+ }
502
+
469
503
  // Tool tracking — delegates to auto-tool-tracking.ts
470
504
  export function markToolStart(toolCallId: string, toolName?: string): void {
471
505
  _markToolStart(toolCallId, s.active, toolName);
@@ -648,6 +682,7 @@ function handleLostSessionLock(
648
682
  s.paused = false;
649
683
  deactivateGSD();
650
684
  clearUnitTimeout();
685
+ stopAutoCommandPolling();
651
686
  restoreProjectRootEnv();
652
687
  restoreMilestoneLockEnv();
653
688
  deregisterSigtermHandler();
@@ -687,6 +722,7 @@ function cleanupAfterLoopExit(ctx: ExtensionContext): void {
687
722
  s.active = false;
688
723
  deactivateGSD();
689
724
  clearUnitTimeout();
725
+ stopAutoCommandPolling();
690
726
  restoreProjectRootEnv();
691
727
  restoreMilestoneLockEnv();
692
728
 
@@ -735,6 +771,7 @@ export async function stopAuto(
735
771
  // ── Step 1: Timers and locks ──
736
772
  try {
737
773
  clearUnitTimeout();
774
+ stopAutoCommandPolling();
738
775
  if (lockBase()) clearLock(lockBase());
739
776
  if (lockBase()) releaseSessionLock(lockBase());
740
777
  } catch (e) {
@@ -1000,6 +1037,7 @@ export async function pauseAuto(
1000
1037
  ): Promise<void> {
1001
1038
  if (!s.active) return;
1002
1039
  clearUnitTimeout();
1040
+ stopAutoCommandPolling();
1003
1041
 
1004
1042
  // Flush queued follow-up messages (#3512).
1005
1043
  // Late async notifications (async_job_result, gsd-auto-wrapup) can trigger
@@ -1103,6 +1141,7 @@ function buildResolverDeps(): WorktreeResolverDeps {
1103
1141
  teardownAutoWorktree,
1104
1142
  createAutoWorktree,
1105
1143
  enterAutoWorktree,
1144
+ enterBranchModeForMilestone,
1106
1145
  getAutoWorktreePath,
1107
1146
  autoCommitCurrentBranch,
1108
1147
  getCurrentBranch,
@@ -1253,6 +1292,11 @@ function buildLoopDeps(): LoopDeps {
1253
1292
  } as unknown as LoopDeps;
1254
1293
  }
1255
1294
 
1295
+ /**
1296
+ * Start auto-mode. Handles both fresh-start and resume paths, sets up session
1297
+ * state, enters the milestone worktree or branch, and dispatches the first unit.
1298
+ * No-ops if auto-mode is already active.
1299
+ */
1256
1300
  export async function startAuto(
1257
1301
  ctx: ExtensionCommandContext,
1258
1302
  pi: ExtensionAPI,
@@ -1281,6 +1325,13 @@ export async function startAuto(
1281
1325
  // Escape stale worktree cwd from a previous milestone (#608).
1282
1326
  base = escapeStaleWorktree(base);
1283
1327
 
1328
+ // Heal .gsd.migrating before any branching — covers both fresh-start and
1329
+ // resume paths (#4416). The matching call in auto-start.ts covers the
1330
+ // bootstrap-only path; this call ensures the resume path is also protected.
1331
+ if (recoverFailedMigration(base)) {
1332
+ ctx.ui.notify("Recovered unfinished migration (.gsd.migrating → .gsd).", "info");
1333
+ }
1334
+
1284
1335
  const freshStartAssessment = interruptedAssessment
1285
1336
  ?? await assessInterruptedSession(base);
1286
1337
 
@@ -1438,10 +1489,10 @@ export async function startAuto(
1438
1489
  ctx.ui.notify(summary, level as "info" | "warning" | "error");
1439
1490
  });
1440
1491
 
1441
- // ── Auto-worktree: re-enter worktree on resume ──
1492
+ // ── Auto-worktree / branch-mode: re-enter on resume ──
1442
1493
  if (
1443
1494
  s.currentMilestoneId &&
1444
- shouldUseWorktreeIsolation() &&
1495
+ getIsolationMode() !== "none" &&
1445
1496
  s.originalBasePath &&
1446
1497
  !isInAutoWorktree(s.basePath) &&
1447
1498
  !detectWorktreeName(s.basePath) &&
@@ -1533,12 +1584,14 @@ export async function startAuto(
1533
1584
  logCmuxEvent(loadEffectiveGSDPreferences()?.preferences, s.stepMode ? "Step-mode resumed." : "Auto-mode resumed.", "progress");
1534
1585
 
1535
1586
  captureProjectRootEnv(s.originalBasePath || s.basePath);
1587
+ startAutoCommandPolling(s.basePath);
1536
1588
  await runAutoLoopWithUok({
1537
1589
  ctx,
1538
1590
  pi,
1539
1591
  s,
1540
1592
  deps: buildLoopDeps(),
1541
- runLegacyLoop: autoLoop,
1593
+ runKernelLoop: runUokKernelLoop,
1594
+ runLegacyLoop: runLegacyAutoLoop,
1542
1595
  });
1543
1596
  cleanupAfterLoopExit(ctx);
1544
1597
  return;
@@ -1573,40 +1626,20 @@ export async function startAuto(
1573
1626
  }
1574
1627
  logCmuxEvent(loadEffectiveGSDPreferences()?.preferences, requestedStepMode ? "Step-mode started." : "Auto-mode started.", "progress");
1575
1628
 
1629
+ startAutoCommandPolling(s.basePath);
1630
+
1576
1631
  // Dispatch the first unit
1577
1632
  await runAutoLoopWithUok({
1578
1633
  ctx,
1579
1634
  pi,
1580
1635
  s,
1581
1636
  deps: buildLoopDeps(),
1582
- runLegacyLoop: autoLoop,
1637
+ runKernelLoop: runUokKernelLoop,
1638
+ runLegacyLoop: runLegacyAutoLoop,
1583
1639
  });
1584
1640
  cleanupAfterLoopExit(ctx);
1585
1641
  }
1586
1642
 
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
1643
  // describeNextUnit is imported from auto-dashboard.ts and re-exported
1611
1644
  export { describeNextUnit } from "./auto-dashboard.js";
1612
1645
 
@@ -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({
@@ -758,32 +776,26 @@ export function registerDbTools(pi: ExtensionAPI): void {
758
776
  };
759
777
  }
760
778
  try {
761
- const { getSlice, updateSliceStatus } = await import("../gsd-db.js");
779
+ const { handleSkipSlice } = await import("../tools/skip-slice.js");
762
780
  const { invalidateStateCache } = await import("../state.js");
763
781
 
764
- const slice = getSlice(params.milestoneId, params.sliceId);
765
- if (!slice) {
766
- return {
767
- content: [{ type: "text" as const, text: `Error: Slice ${params.sliceId} not found in milestone ${params.milestoneId}` }],
768
- details: { operation: "skip_slice", error: "slice_not_found" } as any,
769
- };
770
- }
782
+ const result = handleSkipSlice({
783
+ milestoneId: params.milestoneId,
784
+ sliceId: params.sliceId,
785
+ reason: params.reason,
786
+ });
771
787
 
772
- if (slice.status === "complete" || slice.status === "done") {
788
+ if (result.error) {
773
789
  return {
774
- content: [{ type: "text" as const, text: `Error: Slice ${params.sliceId} is already complete — cannot skip.` }],
775
- details: { operation: "skip_slice", error: "already_complete" } as any,
790
+ content: [{ type: "text" as const, text: `Error: ${result.error}` }],
791
+ details: {
792
+ operation: "skip_slice",
793
+ error: result.error,
794
+ errorCode: result.errorCode ?? "skip_failed",
795
+ } as any,
776
796
  };
777
797
  }
778
798
 
779
- if (slice.status === "skipped") {
780
- return {
781
- content: [{ type: "text" as const, text: `Slice ${params.sliceId} is already skipped.` }],
782
- details: { operation: "skip_slice", sliceId: params.sliceId, milestoneId: params.milestoneId } as any,
783
- };
784
- }
785
-
786
- updateSliceStatus(params.milestoneId, params.sliceId, "skipped");
787
799
  invalidateStateCache();
788
800
 
789
801
  // Rebuild STATE.md so it reflects the skip immediately (#3477).
@@ -796,13 +808,21 @@ export function registerDbTools(pi: ExtensionAPI): void {
796
808
  logError("tool", `skip_slice rebuildState failed: ${(err as Error).message}`, { tool: "gsd_skip_slice" });
797
809
  }
798
810
 
811
+ const suffix = result.wasAlreadySkipped
812
+ ? result.tasksSkipped > 0
813
+ ? ` (already skipped; cascaded ${result.tasksSkipped} leftover task(s) to skipped).`
814
+ : " (already skipped; no pending tasks to cascade)."
815
+ : ` Cascaded ${result.tasksSkipped} task(s) to skipped. Auto-mode will advance past this slice.`;
816
+
799
817
  return {
800
- content: [{ type: "text" as const, text: `Skipped slice ${params.sliceId} (${params.milestoneId}). Reason: ${params.reason ?? "User-directed skip"}. Auto-mode will advance past this slice.` }],
818
+ content: [{ type: "text" as const, text: `Skipped slice ${params.sliceId} (${params.milestoneId}). Reason: ${params.reason ?? "User-directed skip"}.${suffix}` }],
801
819
  details: {
802
820
  operation: "skip_slice",
803
821
  sliceId: params.sliceId,
804
822
  milestoneId: params.milestoneId,
805
823
  reason: params.reason,
824
+ tasksSkipped: result.tasksSkipped,
825
+ wasAlreadySkipped: result.wasAlreadySkipped,
806
826
  } as any,
807
827
  };
808
828
  } catch (err) {
@@ -820,12 +840,14 @@ export function registerDbTools(pi: ExtensionAPI): void {
820
840
  label: "Skip Slice",
821
841
  description:
822
842
  "Mark a slice as skipped so auto-mode advances past it without executing. " +
843
+ "Non-closed tasks within the slice are cascaded to skipped so milestone completion is not blocked by leftover pending tasks (#4375). " +
823
844
  "The slice data is preserved for reference. The state machine treats skipped slices like completed ones for dependency satisfaction.",
824
845
  promptSnippet: "Skip a GSD slice (mark as skipped, auto-mode will advance past it)",
825
846
  promptGuidelines: [
826
847
  "Use gsd_skip_slice when a slice should be bypassed — descoped, superseded, or no longer relevant.",
827
848
  "Cannot skip a slice that is already complete.",
828
849
  "Skipped slices satisfy downstream dependencies just like completed slices.",
850
+ "All pending/active tasks in the slice are cascaded to skipped; completed tasks are never downgraded.",
829
851
  ],
830
852
  parameters: Type.Object({
831
853
  sliceId: Type.String({ description: "Slice ID (e.g. S02)" }),