gsd-pi 2.75.0 → 2.76.0-dev.4c866b677

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 (1089) 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/resource-loader.d.ts +1 -1
  11. package/dist/resource-loader.js +2 -8
  12. package/dist/resources/agents/researcher.md +1 -1
  13. package/dist/resources/extensions/ask-user-questions.js +17 -5
  14. package/dist/resources/extensions/claude-code-cli/models.js +9 -0
  15. package/dist/resources/extensions/claude-code-cli/readiness.js +34 -2
  16. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +76 -4
  17. package/dist/resources/extensions/gsd/auto/detect-stuck.js +9 -0
  18. package/dist/resources/extensions/gsd/auto/loop.js +67 -4
  19. package/dist/resources/extensions/gsd/auto/phases.js +122 -54
  20. package/dist/resources/extensions/gsd/auto/resolve.js +1 -1
  21. package/dist/resources/extensions/gsd/auto/run-unit.js +10 -1
  22. package/dist/resources/extensions/gsd/auto/session.js +9 -0
  23. package/dist/resources/extensions/gsd/auto-artifact-paths.js +20 -0
  24. package/dist/resources/extensions/gsd/auto-dashboard.js +37 -8
  25. package/dist/resources/extensions/gsd/auto-direct-dispatch.js +8 -2
  26. package/dist/resources/extensions/gsd/auto-dispatch.js +120 -14
  27. package/dist/resources/extensions/gsd/auto-loop.js +1 -1
  28. package/dist/resources/extensions/gsd/auto-model-selection.js +66 -19
  29. package/dist/resources/extensions/gsd/auto-post-unit.js +10 -8
  30. package/dist/resources/extensions/gsd/auto-prompts.js +190 -46
  31. package/dist/resources/extensions/gsd/auto-recovery.js +57 -0
  32. package/dist/resources/extensions/gsd/auto-start.js +33 -13
  33. package/dist/resources/extensions/gsd/auto-verification.js +36 -3
  34. package/dist/resources/extensions/gsd/auto-worktree.js +71 -2
  35. package/dist/resources/extensions/gsd/auto.js +61 -26
  36. package/dist/resources/extensions/gsd/blocked-models.js +68 -0
  37. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +84 -21
  38. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +45 -23
  39. package/dist/resources/extensions/gsd/bootstrap/memory-tools.js +131 -0
  40. package/dist/resources/extensions/gsd/bootstrap/query-tools.js +29 -0
  41. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +12 -0
  42. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +22 -0
  43. package/dist/resources/extensions/gsd/bootstrap/system-context.js +84 -10
  44. package/dist/resources/extensions/gsd/commands/catalog.js +81 -9
  45. package/dist/resources/extensions/gsd/commands/handlers/core.js +64 -24
  46. package/dist/resources/extensions/gsd/commands/handlers/escalate.js +171 -0
  47. package/dist/resources/extensions/gsd/commands/handlers/onboarding.js +159 -0
  48. package/dist/resources/extensions/gsd/commands/handlers/ops.js +21 -0
  49. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +228 -29
  50. package/dist/resources/extensions/gsd/commands-cmux.js +5 -2
  51. package/dist/resources/extensions/gsd/commands-config.js +5 -0
  52. package/dist/resources/extensions/gsd/commands-debug.js +388 -0
  53. package/dist/resources/extensions/gsd/commands-do.js +1 -0
  54. package/dist/resources/extensions/gsd/commands-extract-learnings.js +200 -77
  55. package/dist/resources/extensions/gsd/commands-handlers.js +21 -2
  56. package/dist/resources/extensions/gsd/commands-memory.js +462 -0
  57. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +40 -12
  58. package/dist/resources/extensions/gsd/commands-scan.js +94 -0
  59. package/dist/resources/extensions/gsd/commands-workflow-templates.js +101 -2
  60. package/dist/resources/extensions/gsd/complexity-classifier.js +5 -3
  61. package/dist/resources/extensions/gsd/custom-workflow-engine.js +74 -54
  62. package/dist/resources/extensions/gsd/db-writer.js +89 -16
  63. package/dist/resources/extensions/gsd/debug-session-store.js +238 -0
  64. package/dist/resources/extensions/gsd/definition-loader.js +7 -0
  65. package/dist/resources/extensions/gsd/docs/preferences-reference.md +9 -9
  66. package/dist/resources/extensions/gsd/doctor-environment.js +2 -1
  67. package/dist/resources/extensions/gsd/doctor-git-checks.js +50 -32
  68. package/dist/resources/extensions/gsd/doctor-proactive.js +4 -1
  69. package/dist/resources/extensions/gsd/doctor-providers.js +96 -22
  70. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +22 -4
  71. package/dist/resources/extensions/gsd/doctor.js +7 -1
  72. package/dist/resources/extensions/gsd/ecosystem/gsd-extension-api.js +1 -0
  73. package/dist/resources/extensions/gsd/error-classifier.js +27 -3
  74. package/dist/resources/extensions/gsd/escalation.js +321 -0
  75. package/dist/resources/extensions/gsd/forensics.js +26 -29
  76. package/dist/resources/extensions/gsd/git-service.js +0 -1
  77. package/dist/resources/extensions/gsd/graph.js +26 -2
  78. package/dist/resources/extensions/gsd/gsd-db.js +576 -35
  79. package/dist/resources/extensions/gsd/health-widget-core.js +42 -14
  80. package/dist/resources/extensions/gsd/health-widget.js +7 -4
  81. package/dist/resources/extensions/gsd/hook-emitter.js +108 -0
  82. package/dist/resources/extensions/gsd/init-wizard.js +101 -46
  83. package/dist/resources/extensions/gsd/markdown-renderer.js +5 -5
  84. package/dist/resources/extensions/gsd/memory-backfill.js +126 -0
  85. package/dist/resources/extensions/gsd/memory-embeddings.js +219 -0
  86. package/dist/resources/extensions/gsd/memory-extractor.js +78 -27
  87. package/dist/resources/extensions/gsd/memory-ingest.js +218 -0
  88. package/dist/resources/extensions/gsd/memory-relations.js +189 -0
  89. package/dist/resources/extensions/gsd/memory-source-store.js +113 -0
  90. package/dist/resources/extensions/gsd/memory-store.js +318 -6
  91. package/dist/resources/extensions/gsd/metrics.js +1 -0
  92. package/dist/resources/extensions/gsd/model-cost-table.js +3 -1
  93. package/dist/resources/extensions/gsd/model-router.js +16 -6
  94. package/dist/resources/extensions/gsd/native-git-bridge.js +137 -5
  95. package/dist/resources/extensions/gsd/notification-overlay.js +7 -22
  96. package/dist/resources/extensions/gsd/notification-widget.js +24 -39
  97. package/dist/resources/extensions/gsd/notifications.js +4 -0
  98. package/dist/resources/extensions/gsd/onboarding-state.js +133 -0
  99. package/dist/resources/extensions/gsd/post-execution-checks.js +27 -11
  100. package/dist/resources/extensions/gsd/pre-execution-checks.js +105 -8
  101. package/dist/resources/extensions/gsd/preferences-models.js +1 -0
  102. package/dist/resources/extensions/gsd/preferences-types.js +2 -1
  103. package/dist/resources/extensions/gsd/preferences-validation.js +42 -8
  104. package/dist/resources/extensions/gsd/preferences.js +10 -10
  105. package/dist/resources/extensions/gsd/prompt-loader.js +22 -7
  106. package/dist/resources/extensions/gsd/prompts/add-tests.md +1 -0
  107. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +4 -1
  108. package/dist/resources/extensions/gsd/prompts/complete-slice.md +2 -2
  109. package/dist/resources/extensions/gsd/prompts/debug-diagnose.md +27 -0
  110. package/dist/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
  111. package/dist/resources/extensions/gsd/prompts/execute-task.md +16 -3
  112. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
  113. package/dist/resources/extensions/gsd/prompts/plan-slice.md +2 -0
  114. package/dist/resources/extensions/gsd/prompts/refine-slice.md +69 -0
  115. package/dist/resources/extensions/gsd/prompts/research-slice.md +1 -0
  116. package/dist/resources/extensions/gsd/prompts/scan.md +79 -0
  117. package/dist/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
  118. package/dist/resources/extensions/gsd/python-resolver.js +70 -0
  119. package/dist/resources/extensions/gsd/run-manager.js +37 -17
  120. package/dist/resources/extensions/gsd/safety/file-change-validator.js +1 -1
  121. package/dist/resources/extensions/gsd/setup-catalog.js +75 -0
  122. package/dist/resources/extensions/gsd/state.js +90 -7
  123. package/dist/resources/extensions/gsd/templates/PREFERENCES.md +7 -7
  124. package/dist/resources/extensions/gsd/tools/complete-task.js +80 -0
  125. package/dist/resources/extensions/gsd/tools/memory-tools.js +331 -0
  126. package/dist/resources/extensions/gsd/tools/plan-milestone.js +37 -12
  127. package/dist/resources/extensions/gsd/tools/plan-slice.js +5 -2
  128. package/dist/resources/extensions/gsd/tools/skip-slice.js +78 -0
  129. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +14 -0
  130. package/dist/resources/extensions/gsd/uok/flags.js +7 -7
  131. package/dist/resources/extensions/gsd/uok/kernel.js +8 -3
  132. package/dist/resources/extensions/gsd/verification-gate.js +2 -1
  133. package/dist/resources/extensions/gsd/workflow-dispatch.js +64 -0
  134. package/dist/resources/extensions/gsd/workflow-install.js +327 -0
  135. package/dist/resources/extensions/gsd/workflow-manifest.js +8 -0
  136. package/dist/resources/extensions/gsd/workflow-mcp.js +1 -6
  137. package/dist/resources/extensions/gsd/workflow-plugins.js +346 -0
  138. package/dist/resources/extensions/gsd/workflow-projections.js +17 -15
  139. package/dist/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
  140. package/dist/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
  141. package/dist/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
  142. package/dist/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
  143. package/dist/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
  144. package/dist/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
  145. package/dist/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
  146. package/dist/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
  147. package/dist/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
  148. package/dist/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
  149. package/dist/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
  150. package/dist/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
  151. package/dist/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
  152. package/dist/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
  153. package/dist/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
  154. package/dist/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
  155. package/dist/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
  156. package/dist/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
  157. package/dist/resources/extensions/gsd/workflow-templates/registry.json +184 -0
  158. package/dist/resources/extensions/gsd/workflow-templates/release.md +118 -0
  159. package/dist/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
  160. package/dist/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
  161. package/dist/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
  162. package/dist/resources/extensions/gsd/workflow-templates/spike.md +7 -0
  163. package/dist/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
  164. package/dist/resources/extensions/gsd/worktree-resolver.js +42 -1
  165. package/dist/resources/extensions/remote-questions/commands.js +380 -0
  166. package/dist/resources/extensions/remote-questions/manager.js +39 -5
  167. package/dist/resources/extensions/remote-questions/telegram-adapter.js +79 -4
  168. package/dist/resources/extensions/search-the-web/command-search-provider.js +5 -1
  169. package/dist/resources/extensions/search-the-web/native-search.js +46 -3
  170. package/dist/resources/extensions/shared/interview-ui.js +189 -1
  171. package/dist/resources/extensions/shared/layout-utils.js +17 -0
  172. package/dist/resources/extensions/shared/rtk-shared.js +47 -0
  173. package/dist/resources/extensions/shared/rtk.js +3 -46
  174. package/dist/resources/skills/api-design/SKILL.md +190 -0
  175. package/dist/resources/skills/create-mcp-server/SKILL.md +121 -0
  176. package/dist/resources/skills/create-workflow/SKILL.md +33 -6
  177. package/dist/resources/skills/decompose-into-slices/SKILL.md +139 -0
  178. package/dist/resources/skills/dependency-upgrade/SKILL.md +158 -0
  179. package/dist/resources/skills/design-an-interface/SKILL.md +102 -0
  180. package/dist/resources/skills/forensics/SKILL.md +153 -0
  181. package/dist/resources/skills/grill-me/SKILL.md +93 -0
  182. package/dist/resources/skills/handoff/SKILL.md +121 -0
  183. package/dist/resources/skills/observability/SKILL.md +174 -0
  184. package/dist/resources/skills/security-review/SKILL.md +181 -0
  185. package/dist/resources/skills/spike-wrap-up/SKILL.md +138 -0
  186. package/dist/resources/skills/tdd/SKILL.md +112 -0
  187. package/dist/resources/skills/verify-before-complete/SKILL.md +97 -0
  188. package/dist/resources/skills/write-docs/SKILL.md +81 -0
  189. package/dist/resources/skills/write-milestone-brief/SKILL.md +135 -0
  190. package/dist/rtk-shared.d.ts +10 -0
  191. package/dist/rtk-shared.js +47 -0
  192. package/dist/rtk.d.ts +2 -6
  193. package/dist/rtk.js +3 -48
  194. package/dist/shared/workspace-types.d.ts +52 -0
  195. package/dist/shared/workspace-types.js +1 -0
  196. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  197. package/dist/update-check.d.ts +10 -0
  198. package/dist/update-check.js +24 -3
  199. package/dist/web/standalone/.next/BUILD_ID +1 -1
  200. package/dist/web/standalone/.next/app-path-routes-manifest.json +18 -18
  201. package/dist/web/standalone/.next/build-manifest.json +4 -4
  202. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  203. package/dist/web/standalone/.next/react-loadable-manifest.json +2 -2
  204. package/dist/web/standalone/.next/required-server-files.json +3 -3
  205. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  206. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  207. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  208. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  209. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  210. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  211. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  212. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  213. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  214. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  215. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  216. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  217. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  218. package/dist/web/standalone/.next/server/app/_not-found.rsc +4 -4
  219. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  220. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  221. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  222. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  223. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  224. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  225. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  226. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  227. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  228. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  229. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  230. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  231. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  232. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  233. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  234. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  235. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  236. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  237. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  238. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  239. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  240. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  241. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  242. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  243. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  244. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  245. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  246. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  247. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  248. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  249. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  250. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  251. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  252. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  253. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  254. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  255. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  256. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  257. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  258. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  259. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  260. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  261. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  262. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  263. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  264. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  265. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  266. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  267. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  268. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  269. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  270. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  271. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  272. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  273. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  274. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  275. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  276. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  277. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  278. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  279. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  280. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  281. package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  282. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  283. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  284. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  285. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  286. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  287. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  288. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  289. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  290. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  291. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  292. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  293. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  294. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  295. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  296. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  297. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  298. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  299. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  300. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  301. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  302. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  303. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  304. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  305. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  306. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  307. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  308. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  309. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  310. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  311. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  312. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  313. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  314. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  315. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  316. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  317. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  318. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  319. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  320. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  321. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
  322. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  323. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  324. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  325. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  326. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  327. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  328. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  329. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  330. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  331. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  332. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  333. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  334. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  335. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  336. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  337. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  338. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  339. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  340. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  341. package/dist/web/standalone/.next/server/app/index.html +1 -1
  342. package/dist/web/standalone/.next/server/app/index.rsc +5 -5
  343. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  344. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
  345. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  346. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
  347. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  348. package/dist/web/standalone/.next/server/app/page.js +2 -2
  349. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  350. package/dist/web/standalone/.next/server/app-paths-manifest.json +18 -18
  351. package/dist/web/standalone/.next/server/chunks/63.js +3 -3
  352. package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
  353. package/dist/web/standalone/.next/server/chunks/7461.js +1 -0
  354. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  355. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  356. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  357. package/dist/web/standalone/.next/server/middleware.js +2 -2
  358. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  359. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  360. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  361. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  362. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  363. package/dist/web/standalone/.next/static/chunks/2826.e59e8578e2e28639.js +9 -0
  364. package/dist/web/standalone/.next/static/chunks/{2008.71ee9230ad78df21.js → 3621.fc7480022c972438.js} +2 -2
  365. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
  366. package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
  367. package/dist/web/standalone/.next/static/chunks/app/page-5b113fd32bc2a1c3.js +1 -0
  368. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
  369. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
  370. package/dist/web/standalone/.next/static/chunks/{webpack-b868033a5834586d.js → webpack-5fc74f13a25fa1bb.js} +1 -1
  371. package/dist/web/standalone/.next/static/css/632cd626b1731d88.css +1 -0
  372. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  373. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  374. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  375. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  376. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  377. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  378. package/dist/web/standalone/server.js +1 -1
  379. package/dist/welcome-screen.js +48 -24
  380. package/dist/wizard.js +2 -2
  381. package/dist/worktree-cli.d.ts +6 -5
  382. package/dist/worktree-cli.js +23 -7
  383. package/package.json +3 -3
  384. package/packages/daemon/package.json +2 -2
  385. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  386. package/packages/mcp-server/dist/server.js +12 -10
  387. package/packages/mcp-server/dist/server.js.map +1 -1
  388. package/packages/mcp-server/dist/session-manager.d.ts.map +1 -1
  389. package/packages/mcp-server/dist/session-manager.js +8 -1
  390. package/packages/mcp-server/dist/session-manager.js.map +1 -1
  391. package/packages/mcp-server/dist/workflow-tools.d.ts +2 -1
  392. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  393. package/packages/mcp-server/dist/workflow-tools.js +306 -71
  394. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  395. package/packages/mcp-server/package.json +2 -2
  396. package/packages/mcp-server/src/mcp-server.test.ts +40 -4
  397. package/packages/mcp-server/src/server.ts +12 -10
  398. package/packages/mcp-server/src/session-manager.ts +10 -3
  399. package/packages/mcp-server/src/workflow-tools.test.ts +346 -1
  400. package/packages/mcp-server/src/workflow-tools.ts +359 -75
  401. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  402. package/packages/native/package.json +1 -1
  403. package/packages/native/tsconfig.tsbuildinfo +1 -1
  404. package/packages/pi-agent-core/dist/agent-loop.js +12 -0
  405. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  406. package/packages/pi-agent-core/dist/types.d.ts +30 -0
  407. package/packages/pi-agent-core/dist/types.d.ts.map +1 -1
  408. package/packages/pi-agent-core/dist/types.js.map +1 -1
  409. package/packages/pi-agent-core/package.json +1 -1
  410. package/packages/pi-agent-core/src/agent-loop.ts +14 -0
  411. package/packages/pi-agent-core/src/types.ts +34 -0
  412. package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -1
  413. package/packages/pi-ai/dist/index.d.ts +1 -0
  414. package/packages/pi-ai/dist/index.d.ts.map +1 -1
  415. package/packages/pi-ai/dist/index.js +1 -0
  416. package/packages/pi-ai/dist/index.js.map +1 -1
  417. package/packages/pi-ai/dist/models/capability-patches.d.ts.map +1 -1
  418. package/packages/pi-ai/dist/models/capability-patches.js +3 -2
  419. package/packages/pi-ai/dist/models/capability-patches.js.map +1 -1
  420. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts +68 -0
  421. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts.map +1 -1
  422. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js +68 -0
  423. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js.map +1 -1
  424. package/packages/pi-ai/dist/models/generated/anthropic.d.ts +17 -0
  425. package/packages/pi-ai/dist/models/generated/anthropic.d.ts.map +1 -1
  426. package/packages/pi-ai/dist/models/generated/anthropic.js +17 -0
  427. package/packages/pi-ai/dist/models/generated/anthropic.js.map +1 -1
  428. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts +17 -0
  429. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts.map +1 -1
  430. package/packages/pi-ai/dist/models/generated/google-antigravity.js +17 -0
  431. package/packages/pi-ai/dist/models/generated/google-antigravity.js.map +1 -1
  432. package/packages/pi-ai/dist/models/generated/groq.d.ts +0 -153
  433. package/packages/pi-ai/dist/models/generated/groq.d.ts.map +1 -1
  434. package/packages/pi-ai/dist/models/generated/groq.js +0 -153
  435. package/packages/pi-ai/dist/models/generated/groq.js.map +1 -1
  436. package/packages/pi-ai/dist/models/generated/index.d.ts +136 -153
  437. package/packages/pi-ai/dist/models/generated/index.d.ts.map +1 -1
  438. package/packages/pi-ai/dist/models/generated/openai-codex.d.ts +17 -0
  439. package/packages/pi-ai/dist/models/generated/openai-codex.d.ts.map +1 -1
  440. package/packages/pi-ai/dist/models/generated/openai-codex.js +17 -0
  441. package/packages/pi-ai/dist/models/generated/openai-codex.js.map +1 -1
  442. package/packages/pi-ai/dist/models/generated/openrouter.d.ts +17 -0
  443. package/packages/pi-ai/dist/models/generated/openrouter.d.ts.map +1 -1
  444. package/packages/pi-ai/dist/models/generated/openrouter.js +17 -0
  445. package/packages/pi-ai/dist/models/generated/openrouter.js.map +1 -1
  446. package/packages/pi-ai/dist/models.generated.test.js +17 -0
  447. package/packages/pi-ai/dist/models.generated.test.js.map +1 -1
  448. package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts +22 -1
  449. package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  450. package/packages/pi-ai/dist/providers/amazon-bedrock.js +40 -6
  451. package/packages/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  452. package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts +2 -0
  453. package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts.map +1 -0
  454. package/packages/pi-ai/dist/providers/amazon-bedrock.test.js +106 -0
  455. package/packages/pi-ai/dist/providers/amazon-bedrock.test.js.map +1 -0
  456. package/packages/pi-ai/dist/providers/anthropic-auth.test.js +42 -1
  457. package/packages/pi-ai/dist/providers/anthropic-auth.test.js.map +1 -1
  458. package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.d.ts +2 -0
  459. package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.d.ts.map +1 -0
  460. package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.js +13 -0
  461. package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.js.map +1 -0
  462. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts +20 -1
  463. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
  464. package/packages/pi-ai/dist/providers/anthropic-shared.js +32 -2
  465. package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
  466. package/packages/pi-ai/dist/providers/anthropic-shared.test.js +12 -1
  467. package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +1 -1
  468. package/packages/pi-ai/dist/providers/anthropic.d.ts +11 -0
  469. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  470. package/packages/pi-ai/dist/providers/anthropic.js +23 -2
  471. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  472. package/packages/pi-ai/dist/providers/api-family.d.ts +27 -0
  473. package/packages/pi-ai/dist/providers/api-family.d.ts.map +1 -0
  474. package/packages/pi-ai/dist/providers/api-family.js +47 -0
  475. package/packages/pi-ai/dist/providers/api-family.js.map +1 -0
  476. package/packages/pi-ai/dist/providers/api-family.test.d.ts +2 -0
  477. package/packages/pi-ai/dist/providers/api-family.test.d.ts.map +1 -0
  478. package/packages/pi-ai/dist/providers/api-family.test.js +101 -0
  479. package/packages/pi-ai/dist/providers/api-family.test.js.map +1 -0
  480. package/packages/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  481. package/packages/pi-ai/dist/providers/openai-completions.js +60 -15
  482. package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
  483. package/packages/pi-ai/dist/providers/think-tag-parser.d.ts +17 -0
  484. package/packages/pi-ai/dist/providers/think-tag-parser.d.ts.map +1 -0
  485. package/packages/pi-ai/dist/providers/think-tag-parser.js +75 -0
  486. package/packages/pi-ai/dist/providers/think-tag-parser.js.map +1 -0
  487. package/packages/pi-ai/dist/providers/think-tag-parser.test.d.ts +2 -0
  488. package/packages/pi-ai/dist/providers/think-tag-parser.test.d.ts.map +1 -0
  489. package/packages/pi-ai/dist/providers/think-tag-parser.test.js +41 -0
  490. package/packages/pi-ai/dist/providers/think-tag-parser.test.js.map +1 -0
  491. package/packages/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  492. package/packages/pi-ai/dist/utils/oauth/github-copilot.js +12 -2
  493. package/packages/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
  494. package/packages/pi-ai/dist/utils/oauth/github-copilot.test.js +164 -14
  495. package/packages/pi-ai/dist/utils/oauth/github-copilot.test.js.map +1 -1
  496. package/packages/pi-ai/dist/utils/oauth/google-antigravity.d.ts.map +1 -1
  497. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js +15 -3
  498. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js.map +1 -1
  499. package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.d.ts +2 -0
  500. package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.d.ts.map +1 -0
  501. package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.js +67 -0
  502. package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.js.map +1 -0
  503. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.d.ts.map +1 -1
  504. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js +16 -3
  505. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js.map +1 -1
  506. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.d.ts +2 -0
  507. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.d.ts.map +1 -0
  508. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.js +67 -0
  509. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.js.map +1 -0
  510. package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.d.ts +2 -0
  511. package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.d.ts.map +1 -0
  512. package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.js +289 -0
  513. package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.js.map +1 -0
  514. package/packages/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  515. package/packages/pi-ai/dist/utils/oauth/openai-codex.js +12 -0
  516. package/packages/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
  517. package/packages/pi-ai/package.json +2 -2
  518. package/packages/pi-ai/scripts/generate-models.ts +50 -0
  519. package/packages/pi-ai/src/index.ts +1 -0
  520. package/packages/pi-ai/src/models/capability-patches.ts +5 -2
  521. package/packages/pi-ai/src/models/generated/amazon-bedrock.ts +68 -0
  522. package/packages/pi-ai/src/models/generated/anthropic.ts +17 -0
  523. package/packages/pi-ai/src/models/generated/google-antigravity.ts +17 -0
  524. package/packages/pi-ai/src/models/generated/groq.ts +0 -153
  525. package/packages/pi-ai/src/models/generated/openai-codex.ts +17 -0
  526. package/packages/pi-ai/src/models/generated/openrouter.ts +17 -0
  527. package/packages/pi-ai/src/models.generated.test.ts +17 -0
  528. package/packages/pi-ai/src/providers/amazon-bedrock.test.ts +164 -0
  529. package/packages/pi-ai/src/providers/amazon-bedrock.ts +41 -7
  530. package/packages/pi-ai/src/providers/anthropic-auth.test.ts +47 -1
  531. package/packages/pi-ai/src/providers/anthropic-bearer-auth.test.ts +26 -0
  532. package/packages/pi-ai/src/providers/anthropic-shared.test.ts +15 -1
  533. package/packages/pi-ai/src/providers/anthropic-shared.ts +36 -3
  534. package/packages/pi-ai/src/providers/anthropic.ts +25 -2
  535. package/packages/pi-ai/src/providers/api-family.test.ts +129 -0
  536. package/packages/pi-ai/src/providers/api-family.ts +57 -0
  537. package/packages/pi-ai/src/providers/openai-completions.ts +57 -16
  538. package/packages/pi-ai/src/providers/think-tag-parser.test.ts +44 -0
  539. package/packages/pi-ai/src/providers/think-tag-parser.ts +94 -0
  540. package/packages/pi-ai/src/utils/oauth/github-copilot.test.ts +200 -23
  541. package/packages/pi-ai/src/utils/oauth/github-copilot.ts +12 -2
  542. package/packages/pi-ai/src/utils/oauth/google-antigravity.test.ts +84 -0
  543. package/packages/pi-ai/src/utils/oauth/google-antigravity.ts +15 -5
  544. package/packages/pi-ai/src/utils/oauth/google-gemini-cli.test.ts +84 -0
  545. package/packages/pi-ai/src/utils/oauth/google-gemini-cli.ts +16 -5
  546. package/packages/pi-ai/src/utils/oauth/oauth-providers.test.ts +363 -0
  547. package/packages/pi-ai/src/utils/oauth/openai-codex.ts +15 -0
  548. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  549. package/packages/pi-coding-agent/dist/cli/args.d.ts +6 -0
  550. package/packages/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
  551. package/packages/pi-coding-agent/dist/cli/args.js +14 -4
  552. package/packages/pi-coding-agent/dist/cli/args.js.map +1 -1
  553. package/packages/pi-coding-agent/dist/cli/args.test.d.ts +2 -0
  554. package/packages/pi-coding-agent/dist/cli/args.test.d.ts.map +1 -0
  555. package/packages/pi-coding-agent/dist/cli/args.test.js +38 -0
  556. package/packages/pi-coding-agent/dist/cli/args.test.js.map +1 -0
  557. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts +2 -0
  558. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts.map +1 -0
  559. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js +38 -0
  560. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js.map +1 -0
  561. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  562. package/packages/pi-coding-agent/dist/core/agent-session.js +25 -2
  563. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  564. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +14 -0
  565. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  566. package/packages/pi-coding-agent/dist/core/auth-storage.js +34 -0
  567. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  568. package/packages/pi-coding-agent/dist/core/auth-storage.test.js +74 -0
  569. package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
  570. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +4 -1
  571. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
  572. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  573. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  574. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  575. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  576. package/packages/pi-coding-agent/dist/core/extensions/loader.js +4 -0
  577. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  578. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +34 -2
  579. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  580. package/packages/pi-coding-agent/dist/core/extensions/runner.js +233 -0
  581. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  582. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +200 -3
  583. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  584. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  585. package/packages/pi-coding-agent/dist/core/hooks-runner.d.ts +53 -0
  586. package/packages/pi-coding-agent/dist/core/hooks-runner.d.ts.map +1 -0
  587. package/packages/pi-coding-agent/dist/core/hooks-runner.js +337 -0
  588. package/packages/pi-coding-agent/dist/core/hooks-runner.js.map +1 -0
  589. package/packages/pi-coding-agent/dist/core/hooks-runner.test.d.ts +2 -0
  590. package/packages/pi-coding-agent/dist/core/hooks-runner.test.d.ts.map +1 -0
  591. package/packages/pi-coding-agent/dist/core/hooks-runner.test.js +234 -0
  592. package/packages/pi-coding-agent/dist/core/hooks-runner.test.js.map +1 -0
  593. package/packages/pi-coding-agent/dist/core/index.d.ts +1 -0
  594. package/packages/pi-coding-agent/dist/core/index.d.ts.map +1 -1
  595. package/packages/pi-coding-agent/dist/core/index.js +1 -0
  596. package/packages/pi-coding-agent/dist/core/index.js.map +1 -1
  597. package/packages/pi-coding-agent/dist/core/model-discovery.d.ts +3 -1
  598. package/packages/pi-coding-agent/dist/core/model-discovery.d.ts.map +1 -1
  599. package/packages/pi-coding-agent/dist/core/model-discovery.js +92 -12
  600. package/packages/pi-coding-agent/dist/core/model-discovery.js.map +1 -1
  601. package/packages/pi-coding-agent/dist/core/model-discovery.test.js +16 -1
  602. package/packages/pi-coding-agent/dist/core/model-discovery.test.js.map +1 -1
  603. package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.d.ts +2 -0
  604. package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.d.ts.map +1 -0
  605. package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.js +40 -0
  606. package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.js.map +1 -0
  607. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +32 -0
  608. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
  609. package/packages/pi-coding-agent/dist/core/model-registry-discovery.test.js +61 -1
  610. package/packages/pi-coding-agent/dist/core/model-registry-discovery.test.js.map +1 -1
  611. package/packages/pi-coding-agent/dist/core/model-registry.d.ts +5 -0
  612. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  613. package/packages/pi-coding-agent/dist/core/model-registry.js +76 -10
  614. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  615. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -1
  616. package/packages/pi-coding-agent/dist/core/retry-handler.js +4 -1
  617. package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -1
  618. package/packages/pi-coding-agent/dist/core/sdk.d.ts +10 -0
  619. package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  620. package/packages/pi-coding-agent/dist/core/sdk.js +39 -1
  621. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  622. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +55 -0
  623. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  624. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  625. package/packages/pi-coding-agent/dist/core/skill-tool.test.js +2 -2
  626. package/packages/pi-coding-agent/dist/core/skill-tool.test.js.map +1 -1
  627. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  628. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  629. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  630. package/packages/pi-coding-agent/dist/main.d.ts.map +1 -1
  631. package/packages/pi-coding-agent/dist/main.js +3 -0
  632. package/packages/pi-coding-agent/dist/main.js.map +1 -1
  633. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts +1 -1
  634. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts.map +1 -1
  635. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +21 -10
  636. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -1
  637. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  638. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +48 -34
  639. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  640. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.d.ts.map +1 -1
  641. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.js +13 -7
  642. package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.js.map +1 -1
  643. package/packages/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.d.ts +7 -6
  644. package/packages/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  645. package/packages/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.js +29 -21
  646. package/packages/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  647. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts +4 -0
  648. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  649. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +83 -33
  650. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  651. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
  652. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  653. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +77 -0
  654. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  655. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -66
  656. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  657. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +1 -75
  658. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  659. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +1 -1
  660. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  661. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +192 -24
  662. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  663. package/packages/pi-coding-agent/package.json +1 -1
  664. package/packages/pi-coding-agent/src/cli/args.test.ts +44 -0
  665. package/packages/pi-coding-agent/src/cli/args.ts +21 -6
  666. package/packages/pi-coding-agent/src/core/agent-session-abort-order.test.ts +56 -0
  667. package/packages/pi-coding-agent/src/core/agent-session.ts +27 -2
  668. package/packages/pi-coding-agent/src/core/auth-storage.test.ts +83 -0
  669. package/packages/pi-coding-agent/src/core/auth-storage.ts +35 -0
  670. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +4 -1
  671. package/packages/pi-coding-agent/src/core/extensions/index.ts +16 -0
  672. package/packages/pi-coding-agent/src/core/extensions/loader.ts +5 -0
  673. package/packages/pi-coding-agent/src/core/extensions/runner.ts +353 -1
  674. package/packages/pi-coding-agent/src/core/extensions/types.ts +253 -2
  675. package/packages/pi-coding-agent/src/core/hooks-runner.test.ts +269 -0
  676. package/packages/pi-coding-agent/src/core/hooks-runner.ts +460 -0
  677. package/packages/pi-coding-agent/src/core/index.ts +10 -0
  678. package/packages/pi-coding-agent/src/core/model-discovery.test.ts +19 -0
  679. package/packages/pi-coding-agent/src/core/model-discovery.ts +99 -12
  680. package/packages/pi-coding-agent/src/core/model-registry-auth-header.test.ts +44 -0
  681. package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +37 -1
  682. package/packages/pi-coding-agent/src/core/model-registry-discovery.test.ts +75 -0
  683. package/packages/pi-coding-agent/src/core/model-registry.ts +86 -10
  684. package/packages/pi-coding-agent/src/core/retry-handler.ts +4 -1
  685. package/packages/pi-coding-agent/src/core/sdk.ts +58 -1
  686. package/packages/pi-coding-agent/src/core/settings-manager.ts +57 -0
  687. package/packages/pi-coding-agent/src/core/skill-tool.test.ts +2 -2
  688. package/packages/pi-coding-agent/src/index.ts +16 -0
  689. package/packages/pi-coding-agent/src/main.ts +4 -0
  690. package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +24 -12
  691. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +53 -31
  692. package/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts +16 -7
  693. package/packages/pi-coding-agent/src/modes/interactive/components/skill-invocation-message.ts +36 -22
  694. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +88 -36
  695. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +83 -0
  696. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +2 -83
  697. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +208 -27
  698. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  699. package/packages/pi-tui/package.json +1 -1
  700. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  701. package/packages/rpc-client/package.json +1 -1
  702. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
  703. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
  704. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  705. package/pkg/dist/modes/interactive/theme/theme-schema.js +77 -0
  706. package/pkg/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  707. package/pkg/dist/modes/interactive/theme/theme.d.ts +1 -66
  708. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  709. package/pkg/dist/modes/interactive/theme/theme.js +1 -75
  710. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  711. package/pkg/dist/modes/interactive/theme/themes.d.ts +1 -1
  712. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  713. package/pkg/dist/modes/interactive/theme/themes.js +192 -24
  714. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  715. package/pkg/package.json +1 -1
  716. package/scripts/link-workspace-packages.cjs +1 -0
  717. package/src/resources/agents/researcher.md +1 -1
  718. package/src/resources/extensions/ask-user-questions.ts +24 -6
  719. package/src/resources/extensions/claude-code-cli/models.ts +9 -0
  720. package/src/resources/extensions/claude-code-cli/readiness.ts +36 -2
  721. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +94 -4
  722. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +84 -0
  723. package/src/resources/extensions/gsd/auto/detect-stuck.ts +10 -0
  724. package/src/resources/extensions/gsd/auto/loop-deps.ts +3 -9
  725. package/src/resources/extensions/gsd/auto/loop.ts +109 -3
  726. package/src/resources/extensions/gsd/auto/phases.ts +150 -66
  727. package/src/resources/extensions/gsd/auto/resolve.ts +1 -1
  728. package/src/resources/extensions/gsd/auto/run-unit.ts +11 -1
  729. package/src/resources/extensions/gsd/auto/session.ts +14 -1
  730. package/src/resources/extensions/gsd/auto-artifact-paths.ts +20 -0
  731. package/src/resources/extensions/gsd/auto-dashboard.ts +46 -5
  732. package/src/resources/extensions/gsd/auto-direct-dispatch.ts +15 -2
  733. package/src/resources/extensions/gsd/auto-dispatch.ts +141 -9
  734. package/src/resources/extensions/gsd/auto-loop.ts +1 -1
  735. package/src/resources/extensions/gsd/auto-model-selection.ts +87 -18
  736. package/src/resources/extensions/gsd/auto-post-unit.ts +10 -8
  737. package/src/resources/extensions/gsd/auto-prompts.ts +232 -47
  738. package/src/resources/extensions/gsd/auto-recovery.ts +63 -1
  739. package/src/resources/extensions/gsd/auto-start.ts +36 -16
  740. package/src/resources/extensions/gsd/auto-verification.ts +36 -3
  741. package/src/resources/extensions/gsd/auto-worktree.ts +81 -1
  742. package/src/resources/extensions/gsd/auto.ts +65 -29
  743. package/src/resources/extensions/gsd/blocked-models.ts +98 -0
  744. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +105 -21
  745. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +46 -24
  746. package/src/resources/extensions/gsd/bootstrap/memory-tools.ts +163 -0
  747. package/src/resources/extensions/gsd/bootstrap/query-tools.ts +31 -0
  748. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +15 -0
  749. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +22 -0
  750. package/src/resources/extensions/gsd/bootstrap/system-context.ts +89 -10
  751. package/src/resources/extensions/gsd/commands/catalog.ts +74 -9
  752. package/src/resources/extensions/gsd/commands/handlers/core.ts +69 -27
  753. package/src/resources/extensions/gsd/commands/handlers/escalate.ts +216 -0
  754. package/src/resources/extensions/gsd/commands/handlers/onboarding.ts +196 -0
  755. package/src/resources/extensions/gsd/commands/handlers/ops.ts +21 -0
  756. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +279 -29
  757. package/src/resources/extensions/gsd/commands-cmux.ts +6 -2
  758. package/src/resources/extensions/gsd/commands-config.ts +10 -0
  759. package/src/resources/extensions/gsd/commands-debug.ts +484 -0
  760. package/src/resources/extensions/gsd/commands-do.ts +1 -0
  761. package/src/resources/extensions/gsd/commands-extract-learnings.ts +262 -78
  762. package/src/resources/extensions/gsd/commands-handlers.ts +19 -2
  763. package/src/resources/extensions/gsd/commands-memory.ts +551 -0
  764. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +49 -12
  765. package/src/resources/extensions/gsd/commands-scan.ts +125 -0
  766. package/src/resources/extensions/gsd/commands-workflow-templates.ts +129 -2
  767. package/src/resources/extensions/gsd/complexity-classifier.ts +5 -3
  768. package/src/resources/extensions/gsd/custom-workflow-engine.ts +85 -60
  769. package/src/resources/extensions/gsd/db-writer.ts +91 -17
  770. package/src/resources/extensions/gsd/debug-session-store.ts +377 -0
  771. package/src/resources/extensions/gsd/definition-loader.ts +7 -0
  772. package/src/resources/extensions/gsd/docs/preferences-reference.md +9 -9
  773. package/src/resources/extensions/gsd/doctor-environment.ts +2 -1
  774. package/src/resources/extensions/gsd/doctor-git-checks.ts +51 -30
  775. package/src/resources/extensions/gsd/doctor-proactive.ts +4 -1
  776. package/src/resources/extensions/gsd/doctor-providers.ts +109 -26
  777. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +23 -4
  778. package/src/resources/extensions/gsd/doctor-types.ts +1 -0
  779. package/src/resources/extensions/gsd/doctor.ts +7 -1
  780. package/src/resources/extensions/gsd/ecosystem/gsd-extension-api.ts +2 -0
  781. package/src/resources/extensions/gsd/error-classifier.ts +32 -3
  782. package/src/resources/extensions/gsd/escalation.ts +367 -0
  783. package/src/resources/extensions/gsd/forensics.ts +25 -29
  784. package/src/resources/extensions/gsd/git-service.ts +0 -1
  785. package/src/resources/extensions/gsd/graph.ts +33 -3
  786. package/src/resources/extensions/gsd/gsd-db.ts +682 -35
  787. package/src/resources/extensions/gsd/health-widget-core.ts +43 -14
  788. package/src/resources/extensions/gsd/health-widget.ts +7 -3
  789. package/src/resources/extensions/gsd/hook-emitter.ts +188 -0
  790. package/src/resources/extensions/gsd/init-wizard.ts +102 -55
  791. package/src/resources/extensions/gsd/markdown-renderer.ts +5 -5
  792. package/src/resources/extensions/gsd/memory-backfill.ts +140 -0
  793. package/src/resources/extensions/gsd/memory-embeddings.ts +235 -0
  794. package/src/resources/extensions/gsd/memory-extractor.ts +100 -34
  795. package/src/resources/extensions/gsd/memory-ingest.ts +286 -0
  796. package/src/resources/extensions/gsd/memory-relations.ts +240 -0
  797. package/src/resources/extensions/gsd/memory-source-store.ts +138 -0
  798. package/src/resources/extensions/gsd/memory-store.ts +377 -7
  799. package/src/resources/extensions/gsd/metrics.ts +1 -0
  800. package/src/resources/extensions/gsd/model-cost-table.ts +3 -1
  801. package/src/resources/extensions/gsd/model-router.ts +25 -6
  802. package/src/resources/extensions/gsd/native-git-bridge.ts +134 -6
  803. package/src/resources/extensions/gsd/notification-overlay.ts +9 -19
  804. package/src/resources/extensions/gsd/notification-widget.ts +25 -43
  805. package/src/resources/extensions/gsd/notifications.ts +6 -0
  806. package/src/resources/extensions/gsd/onboarding-state.ts +146 -0
  807. package/src/resources/extensions/gsd/post-execution-checks.ts +37 -14
  808. package/src/resources/extensions/gsd/pre-execution-checks.ts +106 -12
  809. package/src/resources/extensions/gsd/preferences-models.ts +1 -0
  810. package/src/resources/extensions/gsd/preferences-types.ts +10 -2
  811. package/src/resources/extensions/gsd/preferences-validation.ts +33 -7
  812. package/src/resources/extensions/gsd/preferences.ts +10 -10
  813. package/src/resources/extensions/gsd/prompt-loader.ts +30 -7
  814. package/src/resources/extensions/gsd/prompts/add-tests.md +1 -0
  815. package/src/resources/extensions/gsd/prompts/complete-milestone.md +4 -1
  816. package/src/resources/extensions/gsd/prompts/complete-slice.md +2 -2
  817. package/src/resources/extensions/gsd/prompts/debug-diagnose.md +27 -0
  818. package/src/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
  819. package/src/resources/extensions/gsd/prompts/execute-task.md +16 -3
  820. package/src/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
  821. package/src/resources/extensions/gsd/prompts/plan-slice.md +2 -0
  822. package/src/resources/extensions/gsd/prompts/refine-slice.md +69 -0
  823. package/src/resources/extensions/gsd/prompts/research-slice.md +1 -0
  824. package/src/resources/extensions/gsd/prompts/scan.md +79 -0
  825. package/src/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
  826. package/src/resources/extensions/gsd/python-resolver.ts +76 -0
  827. package/src/resources/extensions/gsd/run-manager.ts +53 -19
  828. package/src/resources/extensions/gsd/safety/file-change-validator.ts +1 -1
  829. package/src/resources/extensions/gsd/setup-catalog.ts +105 -0
  830. package/src/resources/extensions/gsd/state.ts +95 -6
  831. package/src/resources/extensions/gsd/templates/PREFERENCES.md +7 -7
  832. package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +1 -34
  833. package/src/resources/extensions/gsd/tests/artifact-corruption-2630.test.ts +7 -0
  834. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +49 -0
  835. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +45 -31
  836. package/src/resources/extensions/gsd/tests/auto-migrating-recovery.test.ts +63 -0
  837. package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +107 -1
  838. package/src/resources/extensions/gsd/tests/auto-prompts-fallback.test.ts +35 -0
  839. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +123 -1
  840. package/src/resources/extensions/gsd/tests/auto-start-model-capture.test.ts +33 -3
  841. package/src/resources/extensions/gsd/tests/auto-thinking-restore.test.ts +38 -0
  842. package/src/resources/extensions/gsd/tests/auto-wrapup-inflight-guard.test.ts +39 -0
  843. package/src/resources/extensions/gsd/tests/autocomplete-regressions-1675.test.ts +39 -0
  844. package/src/resources/extensions/gsd/tests/blocked-models.test.ts +98 -0
  845. package/src/resources/extensions/gsd/tests/bundled-skill-triggers.test.ts +54 -0
  846. package/src/resources/extensions/gsd/tests/commands-do.test.ts +48 -0
  847. package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +335 -21
  848. package/src/resources/extensions/gsd/tests/commands-scan.test.ts +351 -0
  849. package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +8 -6
  850. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +6 -8
  851. package/src/resources/extensions/gsd/tests/complete-task.test.ts +2 -2
  852. package/src/resources/extensions/gsd/tests/complexity-classifier.test.ts +3 -3
  853. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +63 -0
  854. package/src/resources/extensions/gsd/tests/debug-command-handler.test.ts +905 -0
  855. package/src/resources/extensions/gsd/tests/debug-command-lifecycle.integration.test.ts +1229 -0
  856. package/src/resources/extensions/gsd/tests/debug-session-store.test.ts +565 -0
  857. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +42 -0
  858. package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +8 -4
  859. package/src/resources/extensions/gsd/tests/discuss-milestone-structured-questions.test.ts +64 -0
  860. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +67 -0
  861. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +175 -17
  862. package/src/resources/extensions/gsd/tests/enhanced-verification-integration.test.ts +5 -0
  863. package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +306 -1
  864. package/src/resources/extensions/gsd/tests/escalation.test.ts +818 -0
  865. package/src/resources/extensions/gsd/tests/file-change-validator.test.ts +20 -0
  866. package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +29 -12
  867. package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +145 -8
  868. package/src/resources/extensions/gsd/tests/forensics-hook-key-parse.test.ts +74 -0
  869. package/src/resources/extensions/gsd/tests/freeform-decisions.test.ts +62 -0
  870. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +0 -4
  871. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +131 -1
  872. package/src/resources/extensions/gsd/tests/health-widget.test.ts +8 -2
  873. package/src/resources/extensions/gsd/tests/init-prefs-routing.test.ts +190 -0
  874. package/src/resources/extensions/gsd/tests/init-wizard.test.ts +27 -0
  875. package/src/resources/extensions/gsd/tests/integration/doctor-git-symlink-cwd.test.ts +90 -0
  876. package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +117 -0
  877. package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +44 -0
  878. package/src/resources/extensions/gsd/tests/integration/doctor-runtime.test.ts +68 -1
  879. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +109 -11
  880. package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +51 -0
  881. package/src/resources/extensions/gsd/tests/integration/integration-proof.test.ts +2 -2
  882. package/src/resources/extensions/gsd/tests/integration/test-isolation.ts +53 -0
  883. package/src/resources/extensions/gsd/tests/interactive-routing-bypass.test.ts +1 -1
  884. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +206 -1
  885. package/src/resources/extensions/gsd/tests/load-memory-block.test.ts +36 -0
  886. package/src/resources/extensions/gsd/tests/md-importer.test.ts +1 -1
  887. package/src/resources/extensions/gsd/tests/memory-embeddings.test.ts +213 -0
  888. package/src/resources/extensions/gsd/tests/memory-ingest.test.ts +153 -0
  889. package/src/resources/extensions/gsd/tests/memory-maintenance.test.ts +107 -0
  890. package/src/resources/extensions/gsd/tests/memory-relations.test.ts +175 -0
  891. package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -2
  892. package/src/resources/extensions/gsd/tests/memory-tools.test.ts +295 -0
  893. package/src/resources/extensions/gsd/tests/milestone-status-tool.test.ts +3 -2
  894. package/src/resources/extensions/gsd/tests/model-cost-table.test.ts +2 -2
  895. package/src/resources/extensions/gsd/tests/model-router.test.ts +51 -1
  896. package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +59 -0
  897. package/src/resources/extensions/gsd/tests/notification-overlay.test.ts +56 -37
  898. package/src/resources/extensions/gsd/tests/notification-widget.test.ts +1 -1
  899. package/src/resources/extensions/gsd/tests/onboarding-state.test.ts +105 -0
  900. package/src/resources/extensions/gsd/tests/plan-milestone-boundary-map-preservation.test.ts +114 -0
  901. package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +4 -5
  902. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +17 -0
  903. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +105 -1
  904. package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +341 -6
  905. package/src/resources/extensions/gsd/tests/preferences.test.ts +69 -1
  906. package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +539 -0
  907. package/src/resources/extensions/gsd/tests/projection-no-plan-overwrite.test.ts +11 -2
  908. package/src/resources/extensions/gsd/tests/projection-regression.test.ts +7 -0
  909. package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +159 -8
  910. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +24 -0
  911. package/src/resources/extensions/gsd/tests/prompt-db.test.ts +1 -1
  912. package/src/resources/extensions/gsd/tests/prompt-loader-extension-dir.test.ts +49 -0
  913. package/src/resources/extensions/gsd/tests/prompts-no-gitignored-test-refs.test.ts +56 -0
  914. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +88 -4
  915. package/src/resources/extensions/gsd/tests/python-resolver.test.ts +131 -0
  916. package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +67 -0
  917. package/src/resources/extensions/gsd/tests/remote-notification-from-desktop.test.ts +107 -0
  918. package/src/resources/extensions/gsd/tests/requirements.test.ts +9 -0
  919. package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +153 -0
  920. package/src/resources/extensions/gsd/tests/skip-slice-cascades-tasks.test.ts +125 -0
  921. package/src/resources/extensions/gsd/tests/slice-context-injection.test.ts +16 -4
  922. package/src/resources/extensions/gsd/tests/stash-queued-context-files.test.ts +54 -0
  923. package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +3 -0
  924. package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +15 -0
  925. package/src/resources/extensions/gsd/tests/summary-render-parity.test.ts +5 -0
  926. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +2 -1
  927. package/src/resources/extensions/gsd/tests/uok-flags.test.ts +31 -1
  928. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +166 -0
  929. package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +9 -3
  930. package/src/resources/extensions/gsd/tests/verification-gate.test.ts +35 -0
  931. package/src/resources/extensions/gsd/tests/workflow-install.test.ts +113 -0
  932. package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +15 -6
  933. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +2 -2
  934. package/src/resources/extensions/gsd/tests/workflow-plugins.test.ts +310 -0
  935. package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +7 -0
  936. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +8 -2
  937. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +97 -0
  938. package/src/resources/extensions/gsd/tests/worktree-journal-events.test.ts +2 -1
  939. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +77 -2
  940. package/src/resources/extensions/gsd/tools/complete-task.ts +87 -0
  941. package/src/resources/extensions/gsd/tools/memory-tools.ts +410 -0
  942. package/src/resources/extensions/gsd/tools/plan-milestone.ts +42 -8
  943. package/src/resources/extensions/gsd/tools/plan-slice.ts +6 -1
  944. package/src/resources/extensions/gsd/tools/skip-slice.ts +133 -0
  945. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +14 -0
  946. package/src/resources/extensions/gsd/types.ts +62 -0
  947. package/src/resources/extensions/gsd/unit-runtime.ts +1 -0
  948. package/src/resources/extensions/gsd/uok/contracts.ts +2 -1
  949. package/src/resources/extensions/gsd/uok/flags.ts +7 -7
  950. package/src/resources/extensions/gsd/uok/kernel.ts +16 -4
  951. package/src/resources/extensions/gsd/verification-gate.ts +2 -1
  952. package/src/resources/extensions/gsd/workflow-dispatch.ts +106 -0
  953. package/src/resources/extensions/gsd/workflow-install.ts +423 -0
  954. package/src/resources/extensions/gsd/workflow-logger.ts +4 -1
  955. package/src/resources/extensions/gsd/workflow-manifest.ts +8 -0
  956. package/src/resources/extensions/gsd/workflow-mcp.ts +1 -6
  957. package/src/resources/extensions/gsd/workflow-plugins.ts +403 -0
  958. package/src/resources/extensions/gsd/workflow-projections.ts +18 -16
  959. package/src/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
  960. package/src/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
  961. package/src/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
  962. package/src/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
  963. package/src/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
  964. package/src/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
  965. package/src/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
  966. package/src/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
  967. package/src/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
  968. package/src/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
  969. package/src/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
  970. package/src/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
  971. package/src/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
  972. package/src/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
  973. package/src/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
  974. package/src/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
  975. package/src/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
  976. package/src/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
  977. package/src/resources/extensions/gsd/workflow-templates/registry.json +184 -0
  978. package/src/resources/extensions/gsd/workflow-templates/release.md +118 -0
  979. package/src/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
  980. package/src/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
  981. package/src/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
  982. package/src/resources/extensions/gsd/workflow-templates/spike.md +7 -0
  983. package/src/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
  984. package/src/resources/extensions/gsd/workflow-templates.ts +7 -0
  985. package/src/resources/extensions/gsd/workspace-index.ts +9 -4
  986. package/src/resources/extensions/gsd/worktree-resolver.ts +47 -1
  987. package/src/resources/extensions/remote-questions/commands.ts +480 -0
  988. package/src/resources/extensions/remote-questions/manager.ts +49 -4
  989. package/src/resources/extensions/remote-questions/telegram-adapter.ts +86 -4
  990. package/src/resources/extensions/remote-questions/tests/command-polling.test.ts +246 -0
  991. package/src/resources/extensions/remote-questions/tests/remote-answer-normalization.test.ts +92 -0
  992. package/src/resources/extensions/remote-questions/tests/telegram-commands.test.ts +267 -0
  993. package/src/resources/extensions/search-the-web/command-search-provider.ts +5 -1
  994. package/src/resources/extensions/search-the-web/native-search.ts +50 -4
  995. package/src/resources/extensions/shared/interview-ui.ts +195 -1
  996. package/src/resources/extensions/shared/layout-utils.ts +26 -0
  997. package/src/resources/extensions/shared/rtk-shared.ts +58 -0
  998. package/src/resources/extensions/shared/rtk.ts +12 -52
  999. package/src/resources/extensions/shared/tests/interview-preview.test.ts +177 -0
  1000. package/src/resources/extensions/shared/tests/preview-layout.test.ts +120 -0
  1001. package/src/resources/skills/api-design/SKILL.md +190 -0
  1002. package/src/resources/skills/create-mcp-server/SKILL.md +121 -0
  1003. package/src/resources/skills/create-workflow/SKILL.md +33 -6
  1004. package/src/resources/skills/decompose-into-slices/SKILL.md +139 -0
  1005. package/src/resources/skills/dependency-upgrade/SKILL.md +158 -0
  1006. package/src/resources/skills/design-an-interface/SKILL.md +102 -0
  1007. package/src/resources/skills/forensics/SKILL.md +153 -0
  1008. package/src/resources/skills/grill-me/SKILL.md +93 -0
  1009. package/src/resources/skills/handoff/SKILL.md +121 -0
  1010. package/src/resources/skills/observability/SKILL.md +174 -0
  1011. package/src/resources/skills/security-review/SKILL.md +181 -0
  1012. package/src/resources/skills/spike-wrap-up/SKILL.md +138 -0
  1013. package/src/resources/skills/tdd/SKILL.md +112 -0
  1014. package/src/resources/skills/verify-before-complete/SKILL.md +97 -0
  1015. package/src/resources/skills/write-docs/SKILL.md +81 -0
  1016. package/src/resources/skills/write-milestone-brief/SKILL.md +135 -0
  1017. package/dist/web/standalone/.next/static/chunks/2826.dd3dc8bbd3025fa5.js +0 -9
  1018. package/dist/web/standalone/.next/static/chunks/app/page-7115e62689b5fd84.js +0 -1
  1019. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
  1020. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
  1021. package/dist/web/standalone/.next/static/css/f6e8833d46e738d8.css +0 -1
  1022. package/packages/native/dist/ps/types.d.ts +0 -5
  1023. package/packages/native/dist/ps/types.js +0 -2
  1024. package/packages/native/src/ps/types.ts +0 -5
  1025. package/packages/pi-ai/node_modules/@smithy/node-http-handler/LICENSE +0 -201
  1026. package/packages/pi-ai/node_modules/@smithy/node-http-handler/README.md +0 -9
  1027. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-cjs/index.js +0 -762
  1028. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js +0 -19
  1029. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/constants.js +0 -1
  1030. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js +0 -9
  1031. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/index.js +0 -3
  1032. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +0 -230
  1033. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +0 -87
  1034. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +0 -32
  1035. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +0 -169
  1036. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js +0 -21
  1037. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +0 -88
  1038. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +0 -36
  1039. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js +0 -21
  1040. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +0 -22
  1041. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +0 -23
  1042. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
  1043. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
  1044. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js +0 -21
  1045. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/timing.js +0 -4
  1046. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +0 -63
  1047. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts +0 -10
  1048. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts +0 -5
  1049. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts +0 -4
  1050. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +0 -3
  1051. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts +0 -46
  1052. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +0 -24
  1053. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +0 -12
  1054. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +0 -63
  1055. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts +0 -13
  1056. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts +0 -12
  1057. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts +0 -2
  1058. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts +0 -6
  1059. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts +0 -6
  1060. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts +0 -2
  1061. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
  1062. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -6
  1063. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts +0 -13
  1064. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +0 -8
  1065. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts +0 -10
  1066. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts +0 -5
  1067. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts +0 -4
  1068. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts +0 -3
  1069. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts +0 -46
  1070. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts +0 -24
  1071. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts +0 -12
  1072. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts +0 -63
  1073. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts +0 -13
  1074. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts +0 -12
  1075. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts +0 -2
  1076. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts +0 -6
  1077. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts +0 -6
  1078. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts +0 -2
  1079. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts +0 -5
  1080. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts +0 -6
  1081. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts +0 -13
  1082. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +0 -8
  1083. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts +0 -12
  1084. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts +0 -12
  1085. package/packages/pi-ai/node_modules/@smithy/node-http-handler/package.json +0 -68
  1086. package/packages/pi-ai/oauth.d.ts +0 -1
  1087. package/packages/pi-ai/oauth.js +0 -1
  1088. /package/dist/web/standalone/.next/static/{prkokVQFxWtUVIku57_0z → jDqWYbuP_CG6Kjc-uKwkN}/_buildManifest.js +0 -0
  1089. /package/dist/web/standalone/.next/static/{prkokVQFxWtUVIku57_0z → jDqWYbuP_CG6Kjc-uKwkN}/_ssgManifest.js +0 -0
@@ -60,7 +60,7 @@ import { initRoutingHistory } from "./routing-history.js";
60
60
  import { restoreHookState, resetHookState } from "./post-unit-hooks.js";
61
61
  import { resetProactiveHealing, setLevelChangeCallback } from "./doctor-proactive.js";
62
62
  import { snapshotSkills } from "./skill-discovery.js";
63
- import { isDbAvailable, getMilestone, openDatabase } from "./gsd-db.js";
63
+ import { isDbAvailable, getMilestone, openDatabase, getDbStatus } from "./gsd-db.js";
64
64
  import { hideFooter } from "./auto-dashboard.js";
65
65
  import {
66
66
  debugLog,
@@ -273,8 +273,8 @@ export async function bootstrapAutoSession(
273
273
  //
274
274
  // Precedence:
275
275
  // 1) Explicit session override via /gsd model (this session)
276
- // 2) GSD model preferences from PREFERENCES.md (validated against live auth)
277
- // 3) Current session model from settings/session restore (if provider ready)
276
+ // 2) Current session model from settings/session restore (if provider ready)
277
+ // 3) GSD model preferences from PREFERENCES.md (validated against live auth)
278
278
  //
279
279
  // This preserves #3517 defaults while honoring explicit runtime model
280
280
  // selection for subsequent /gsd runs in the same session.
@@ -314,11 +314,14 @@ export async function bootstrapAutoSession(
314
314
  }
315
315
  const sessionModelReady =
316
316
  ctx.model && ctx.modelRegistry.isProviderRequestReady(ctx.model.provider);
317
+ const currentSessionModel = (sessionModelReady && ctx.model)
318
+ ? { provider: ctx.model.provider, id: ctx.model.id }
319
+ : null;
320
+ const startThinkingSnapshot = pi.getThinkingLevel();
317
321
  const startModelSnapshot = manualSessionOverride
322
+ ?? currentSessionModel
318
323
  ?? validatedPreferredModel
319
- ?? (sessionModelReady && ctx.model
320
- ? { provider: ctx.model.provider, id: ctx.model.id }
321
- : null);
324
+ ?? null;
322
325
 
323
326
  try {
324
327
  // Validate GSD_PROJECT_ID early so the user gets immediate feedback
@@ -464,11 +467,12 @@ export async function bootstrapAutoSession(
464
467
  // Detect survivor milestone branches in both pre-planning and complete phases.
465
468
  // In phase=complete, the milestone artifacts exist but finalization (merge,
466
469
  // worktree cleanup) was never run — the survivor branch must be merged.
470
+ // Applies to both worktree and branch isolation modes.
467
471
  let hasSurvivorBranch = false;
468
472
  if (
469
473
  state.activeMilestone &&
470
474
  (state.phase === "pre-planning" || state.phase === "complete") &&
471
- shouldUseWorktreeIsolation() &&
475
+ getIsolationMode() !== "none" &&
472
476
  !detectWorktreeName(base) &&
473
477
  !base.includes(`${pathSep}.gsd${pathSep}worktrees${pathSep}`)
474
478
  ) {
@@ -663,8 +667,9 @@ export async function bootstrapAutoSession(
663
667
  s.pendingQuickTasks = [];
664
668
  s.currentUnit = null;
665
669
  s.currentMilestoneId = state.activeMilestone?.id ?? null;
666
- s.originalModelId = ctx.model?.id ?? null;
667
- s.originalModelProvider = ctx.model?.provider ?? null;
670
+ s.originalModelId = startModelSnapshot?.id ?? ctx.model?.id ?? null;
671
+ s.originalModelProvider = startModelSnapshot?.provider ?? ctx.model?.provider ?? null;
672
+ s.originalThinkingLevel = startThinkingSnapshot ?? null;
668
673
 
669
674
  // Register SIGTERM handler
670
675
  registerSigtermHandler(base);
@@ -711,7 +716,7 @@ export async function bootstrapAutoSession(
711
716
 
712
717
  if (
713
718
  s.currentMilestoneId &&
714
- shouldUseWorktreeIsolation() &&
719
+ getIsolationMode() !== "none" &&
715
720
  !detectWorktreeName(base) &&
716
721
  !isUnderGsdWorktrees(base)
717
722
  ) {
@@ -757,9 +762,22 @@ export async function bootstrapAutoSession(
757
762
  // call returns "db_unavailable", triggering artifact-retry which
758
763
  // re-dispatches the same task — producing an infinite loop (#2419).
759
764
  if (existsSync(gsdDbPath) && !isDbAvailable()) {
765
+ const dbStatus = getDbStatus();
766
+ const phaseHint = dbStatus.lastPhase === "open"
767
+ ? "The database file could not be opened"
768
+ : dbStatus.lastPhase === "initSchema"
769
+ ? "The database schema could not be initialized"
770
+ : dbStatus.lastPhase === "vacuum-recovery"
771
+ ? "Corruption recovery (VACUUM) failed"
772
+ : dbStatus.attempted
773
+ ? "The database could not be opened (phase unknown)"
774
+ : "The database provider could not be loaded";
775
+ const errorDetail = dbStatus.lastError ? ` (${dbStatus.lastError.message})` : "";
776
+ const providerHint = dbStatus.provider
777
+ ? ` Provider: ${dbStatus.provider}.`
778
+ : " No SQLite provider available — check Node >= 22 or install better-sqlite3.";
760
779
  ctx.ui.notify(
761
- "SQLite database exists but failed to open. Auto-mode cannot proceed without a working database provider. " +
762
- "Check for corrupt gsd.db or missing native SQLite bindings.",
780
+ `SQLite database exists but failed to open: ${gsdDbPath}. ${phaseHint}${errorDetail}.${providerHint}`,
763
781
  "error",
764
782
  );
765
783
  return releaseLockAndReturn();
@@ -778,6 +796,7 @@ export async function bootstrapAutoSession(
778
796
  id: startModelSnapshot.id,
779
797
  };
780
798
  }
799
+ s.autoModeStartThinkingLevel = startThinkingSnapshot ?? null;
781
800
  s.manualSessionModelOverride = manualSessionOverride ?? null;
782
801
 
783
802
  // Apply worker model override from parallel orchestrator (#worker-model).
@@ -837,10 +856,11 @@ export async function bootstrapAutoSession(
837
856
  const bannerPrefs = loadEffectiveGSDPreferences()?.preferences;
838
857
  const effectiveProvider = s.autoModeStartModel?.provider ?? ctx.model?.provider;
839
858
  const effectivelyEnabled = routingConfig.enabled
840
- && !(effectiveProvider && isFlatRateProvider(
841
- effectiveProvider,
842
- buildFlatRateContext(effectiveProvider, ctx, bannerPrefs),
843
- ));
859
+ && (routingConfig.allow_flat_rate_providers
860
+ || !(effectiveProvider && isFlatRateProvider(
861
+ effectiveProvider,
862
+ buildFlatRateContext(effectiveProvider, ctx, bannerPrefs),
863
+ )));
844
864
 
845
865
  // The actual ceiling may come from tier_models.heavy, not the start model.
846
866
  const effectiveCeiling = (routingConfig.enabled && routingConfig.tier_models?.heavy)
@@ -5,9 +5,9 @@
5
5
  * dependency audits, handles auto-fix retry logic, and writes
6
6
  * verification evidence JSON.
7
7
  *
8
- * Extracted from handleAgentEnd() in auto.ts. Returns a sentinel
9
- * value instead of calling return/pauseAuto directly — the caller
10
- * checks the result and handles control flow.
8
+ * Extracted from the pre-loop agent_end handler in auto.ts. Returns a
9
+ * sentinel value instead of calling return/pauseAuto directly — the
10
+ * caller checks the result and handles control flow.
11
11
  */
12
12
 
13
13
  import type { ExtensionContext, ExtensionAPI } from "@gsd/pi-coding-agent";
@@ -526,6 +526,39 @@ export async function runPostUnitVerification(
526
526
  result.passed = false;
527
527
  }
528
528
 
529
+ // Emit Layer 2 verify_result event with the final, post-exec verdict so hooks
530
+ // see the authoritative pass/fail and the complete set of failures.
531
+ try {
532
+ const { emitVerifyResult } = await import("./hook-emitter.js");
533
+ const checkFailures = result.checks
534
+ .filter((c) => c.exitCode !== 0)
535
+ .map((c) => ({
536
+ kind: "gate" as const,
537
+ message: `${c.command} exited ${c.exitCode}${c.stderr ? `: ${c.stderr.slice(0, 200)}` : ""}`,
538
+ }));
539
+ const runtimeFailures = (result.runtimeErrors ?? [])
540
+ .filter((e) => e.blocking)
541
+ .map((e) => ({
542
+ kind: "other" as const,
543
+ message: `[${e.source}] ${e.message.slice(0, 200)}`,
544
+ }));
545
+ const postExecFailures = (postExecChecks ?? [])
546
+ .filter((c) => !c.passed)
547
+ .map((c) => ({
548
+ kind: "other" as const,
549
+ message: `[${c.category}] ${c.target}: ${c.message}`,
550
+ }));
551
+ await emitVerifyResult({
552
+ passed: result.passed,
553
+ failures: [...checkFailures, ...runtimeFailures, ...postExecFailures],
554
+ unitType: s.currentUnit.type,
555
+ unitId: s.currentUnit.id,
556
+ cwd: s.basePath,
557
+ });
558
+ } catch (hookErr) {
559
+ logWarning("engine", `verify_result hook emission failed: ${(hookErr as Error).message}`);
560
+ }
561
+
529
562
  // ── Auto-fix retry logic ──
530
563
  if (result.passed) {
531
564
  s.verificationRetryCount.delete(s.currentUnit.id);
@@ -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) {
@@ -932,7 +969,7 @@ export async function stopAuto(
932
969
  logWarning("engine", `file unlink failed: ${err instanceof Error ? err.message : String(err)}`, { file: "auto.ts" });
933
970
  }
934
971
 
935
- // ── Step 13: Restore original model (before reset clears IDs) ──
972
+ // ── Step 13: Restore original model + thinking (before reset clears IDs) ──
936
973
  try {
937
974
  if (pi && ctx && s.originalModelId && s.originalModelProvider) {
938
975
  const original = ctx.modelRegistry.find(
@@ -941,6 +978,9 @@ export async function stopAuto(
941
978
  );
942
979
  if (original) await pi.setModel(original);
943
980
  }
981
+ if (pi && s.originalThinkingLevel) {
982
+ pi.setThinkingLevel(s.originalThinkingLevel);
983
+ }
944
984
  } catch (e) {
945
985
  debugLog("stop-cleanup-model", { error: e instanceof Error ? e.message : String(e) });
946
986
  }
@@ -1000,6 +1040,7 @@ export async function pauseAuto(
1000
1040
  ): Promise<void> {
1001
1041
  if (!s.active) return;
1002
1042
  clearUnitTimeout();
1043
+ stopAutoCommandPolling();
1003
1044
 
1004
1045
  // Flush queued follow-up messages (#3512).
1005
1046
  // Late async notifications (async_job_result, gsd-auto-wrapup) can trigger
@@ -1103,6 +1144,7 @@ function buildResolverDeps(): WorktreeResolverDeps {
1103
1144
  teardownAutoWorktree,
1104
1145
  createAutoWorktree,
1105
1146
  enterAutoWorktree,
1147
+ enterBranchModeForMilestone,
1106
1148
  getAutoWorktreePath,
1107
1149
  autoCommitCurrentBranch,
1108
1150
  getCurrentBranch,
@@ -1253,6 +1295,11 @@ function buildLoopDeps(): LoopDeps {
1253
1295
  } as unknown as LoopDeps;
1254
1296
  }
1255
1297
 
1298
+ /**
1299
+ * Start auto-mode. Handles both fresh-start and resume paths, sets up session
1300
+ * state, enters the milestone worktree or branch, and dispatches the first unit.
1301
+ * No-ops if auto-mode is already active.
1302
+ */
1256
1303
  export async function startAuto(
1257
1304
  ctx: ExtensionCommandContext,
1258
1305
  pi: ExtensionAPI,
@@ -1281,6 +1328,13 @@ export async function startAuto(
1281
1328
  // Escape stale worktree cwd from a previous milestone (#608).
1282
1329
  base = escapeStaleWorktree(base);
1283
1330
 
1331
+ // Heal .gsd.migrating before any branching — covers both fresh-start and
1332
+ // resume paths (#4416). The matching call in auto-start.ts covers the
1333
+ // bootstrap-only path; this call ensures the resume path is also protected.
1334
+ if (recoverFailedMigration(base)) {
1335
+ ctx.ui.notify("Recovered unfinished migration (.gsd.migrating → .gsd).", "info");
1336
+ }
1337
+
1284
1338
  const freshStartAssessment = interruptedAssessment
1285
1339
  ?? await assessInterruptedSession(base);
1286
1340
 
@@ -1438,10 +1492,10 @@ export async function startAuto(
1438
1492
  ctx.ui.notify(summary, level as "info" | "warning" | "error");
1439
1493
  });
1440
1494
 
1441
- // ── Auto-worktree: re-enter worktree on resume ──
1495
+ // ── Auto-worktree / branch-mode: re-enter on resume ──
1442
1496
  if (
1443
1497
  s.currentMilestoneId &&
1444
- shouldUseWorktreeIsolation() &&
1498
+ getIsolationMode() !== "none" &&
1445
1499
  s.originalBasePath &&
1446
1500
  !isInAutoWorktree(s.basePath) &&
1447
1501
  !detectWorktreeName(s.basePath) &&
@@ -1533,12 +1587,14 @@ export async function startAuto(
1533
1587
  logCmuxEvent(loadEffectiveGSDPreferences()?.preferences, s.stepMode ? "Step-mode resumed." : "Auto-mode resumed.", "progress");
1534
1588
 
1535
1589
  captureProjectRootEnv(s.originalBasePath || s.basePath);
1590
+ startAutoCommandPolling(s.basePath);
1536
1591
  await runAutoLoopWithUok({
1537
1592
  ctx,
1538
1593
  pi,
1539
1594
  s,
1540
1595
  deps: buildLoopDeps(),
1541
- runLegacyLoop: autoLoop,
1596
+ runKernelLoop: runUokKernelLoop,
1597
+ runLegacyLoop: runLegacyAutoLoop,
1542
1598
  });
1543
1599
  cleanupAfterLoopExit(ctx);
1544
1600
  return;
@@ -1573,40 +1629,20 @@ export async function startAuto(
1573
1629
  }
1574
1630
  logCmuxEvent(loadEffectiveGSDPreferences()?.preferences, requestedStepMode ? "Step-mode started." : "Auto-mode started.", "progress");
1575
1631
 
1632
+ startAutoCommandPolling(s.basePath);
1633
+
1576
1634
  // Dispatch the first unit
1577
1635
  await runAutoLoopWithUok({
1578
1636
  ctx,
1579
1637
  pi,
1580
1638
  s,
1581
1639
  deps: buildLoopDeps(),
1582
- runLegacyLoop: autoLoop,
1640
+ runKernelLoop: runUokKernelLoop,
1641
+ runLegacyLoop: runLegacyAutoLoop,
1583
1642
  });
1584
1643
  cleanupAfterLoopExit(ctx);
1585
1644
  }
1586
1645
 
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
1646
  // describeNextUnit is imported from auto-dashboard.ts and re-exported
1611
1647
  export { describeNextUnit } from "./auto-dashboard.js";
1612
1648
 
@@ -0,0 +1,98 @@
1
+ // GSD — Persistent per-project blocklist of provider/model pairs that the
2
+ // provider has rejected at request time for account entitlement reasons.
3
+ //
4
+ // Lives at `.gsd/runtime/blocked-models.json` so the block survives /gsd auto
5
+ // restarts. Auto-mode model selection skips blocked entries; agent-end
6
+ // recovery adds entries when a runtime rejection is classified as
7
+ // `unsupported-model`. See issue #4513.
8
+
9
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
10
+ import { dirname, join } from "node:path";
11
+ import { gsdRoot } from "./paths.js";
12
+ import { withFileLockSync } from "./file-lock.js";
13
+
14
+ export interface BlockedModelEntry {
15
+ provider: string;
16
+ id: string;
17
+ reason: string;
18
+ blockedAt: number;
19
+ }
20
+
21
+ interface BlockedModelsFile {
22
+ version: 1;
23
+ blocked: BlockedModelEntry[];
24
+ }
25
+
26
+ function blockedModelsPath(basePath: string): string {
27
+ return join(gsdRoot(basePath), "runtime", "blocked-models.json");
28
+ }
29
+
30
+ function modelKey(provider: string, id: string): string {
31
+ return `${provider.toLowerCase()}/${id.toLowerCase()}`;
32
+ }
33
+
34
+ function readFileSafe(path: string): BlockedModelsFile {
35
+ if (!existsSync(path)) return { version: 1, blocked: [] };
36
+ try {
37
+ const raw = readFileSync(path, "utf-8");
38
+ const parsed = JSON.parse(raw) as Partial<BlockedModelsFile>;
39
+ if (!parsed || !Array.isArray(parsed.blocked)) {
40
+ return { version: 1, blocked: [] };
41
+ }
42
+ const blocked = parsed.blocked.filter(
43
+ (e): e is BlockedModelEntry =>
44
+ !!e && typeof e.provider === "string" && typeof e.id === "string",
45
+ );
46
+ return { version: 1, blocked };
47
+ } catch {
48
+ // Corrupted JSON: treat as empty so a bad file never blocks dispatch.
49
+ return { version: 1, blocked: [] };
50
+ }
51
+ }
52
+
53
+ export function loadBlockedModels(basePath: string): BlockedModelEntry[] {
54
+ return readFileSafe(blockedModelsPath(basePath)).blocked;
55
+ }
56
+
57
+ export function isModelBlocked(
58
+ basePath: string,
59
+ provider: string | undefined,
60
+ id: string | undefined,
61
+ ): boolean {
62
+ if (!provider || !id) return false;
63
+ const target = modelKey(provider, id);
64
+ return loadBlockedModels(basePath).some(
65
+ (e) => modelKey(e.provider, e.id) === target,
66
+ );
67
+ }
68
+
69
+ export function blockModel(
70
+ basePath: string,
71
+ provider: string,
72
+ id: string,
73
+ reason: string,
74
+ ): void {
75
+ const path = blockedModelsPath(basePath);
76
+ mkdirSync(dirname(path), { recursive: true });
77
+ // Ensure the file exists before we try to lock it — proper-lockfile requires
78
+ // the target path to exist (file-lock.ts falls through to an unlocked call
79
+ // otherwise).
80
+ if (!existsSync(path)) {
81
+ writeFileSync(path, JSON.stringify({ version: 1, blocked: [] }, null, 2) + "\n", "utf-8");
82
+ }
83
+ withFileLockSync(path, () => {
84
+ const current = readFileSafe(path);
85
+ const target = modelKey(provider, id);
86
+ if (current.blocked.some((e) => modelKey(e.provider, e.id) === target)) {
87
+ return;
88
+ }
89
+ const next: BlockedModelsFile = {
90
+ version: 1,
91
+ blocked: [
92
+ ...current.blocked,
93
+ { provider, id, reason, blockedAt: Date.now() },
94
+ ],
95
+ };
96
+ writeFileSync(path, JSON.stringify(next, null, 2) + "\n", "utf-8");
97
+ });
98
+ }