gsd-pi 2.75.0-next.9c0ec0ba1 → 2.75.0

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 (555) hide show
  1. package/README.md +51 -88
  2. package/dist/headless-events.d.ts +1 -1
  3. package/dist/headless-events.js +2 -5
  4. package/dist/headless.js +6 -5
  5. package/dist/loader.js +0 -0
  6. package/dist/onboarding.js +14 -39
  7. package/dist/resources/extensions/ask-user-questions.js +2 -11
  8. package/dist/resources/extensions/claude-code-cli/models.js +0 -9
  9. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +4 -34
  10. package/dist/resources/extensions/gsd/auto/detect-stuck.js +0 -9
  11. package/dist/resources/extensions/gsd/auto/loop.js +4 -67
  12. package/dist/resources/extensions/gsd/auto/phases.js +47 -70
  13. package/dist/resources/extensions/gsd/auto/resolve.js +1 -1
  14. package/dist/resources/extensions/gsd/auto/run-unit.js +1 -10
  15. package/dist/resources/extensions/gsd/auto/session.js +0 -5
  16. package/dist/resources/extensions/gsd/auto-dispatch.js +5 -33
  17. package/dist/resources/extensions/gsd/auto-loop.js +1 -1
  18. package/dist/resources/extensions/gsd/auto-post-unit.js +3 -3
  19. package/dist/resources/extensions/gsd/auto-prompts.js +2 -2
  20. package/dist/resources/extensions/gsd/auto-recovery.js +0 -9
  21. package/dist/resources/extensions/gsd/auto-verification.js +3 -3
  22. package/dist/resources/extensions/gsd/auto.js +22 -32
  23. package/dist/resources/extensions/gsd/commands/catalog.js +3 -67
  24. package/dist/resources/extensions/gsd/commands/handlers/core.js +0 -6
  25. package/dist/resources/extensions/gsd/commands/handlers/ops.js +0 -11
  26. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +29 -228
  27. package/dist/resources/extensions/gsd/commands-cmux.js +2 -5
  28. package/dist/resources/extensions/gsd/commands-do.js +0 -1
  29. package/dist/resources/extensions/gsd/commands-handlers.js +2 -21
  30. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +1 -1
  31. package/dist/resources/extensions/gsd/commands-workflow-templates.js +2 -101
  32. package/dist/resources/extensions/gsd/definition-loader.js +0 -7
  33. package/dist/resources/extensions/gsd/docs/preferences-reference.md +8 -8
  34. package/dist/resources/extensions/gsd/doctor-providers.js +20 -48
  35. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +3 -1
  36. package/dist/resources/extensions/gsd/error-classifier.js +1 -1
  37. package/dist/resources/extensions/gsd/forensics.js +29 -26
  38. package/dist/resources/extensions/gsd/git-service.js +1 -0
  39. package/dist/resources/extensions/gsd/graph.js +2 -0
  40. package/dist/resources/extensions/gsd/model-cost-table.js +1 -2
  41. package/dist/resources/extensions/gsd/model-router.js +1 -4
  42. package/dist/resources/extensions/gsd/native-git-bridge.js +5 -21
  43. package/dist/resources/extensions/gsd/notifications.js +0 -4
  44. package/dist/resources/extensions/gsd/pre-execution-checks.js +0 -7
  45. package/dist/resources/extensions/gsd/preferences.js +10 -10
  46. package/dist/resources/extensions/gsd/run-manager.js +17 -37
  47. package/dist/resources/extensions/gsd/templates/PREFERENCES.md +6 -6
  48. package/dist/resources/extensions/gsd/uok/flags.js +6 -6
  49. package/dist/resources/extensions/gsd/uok/kernel.js +3 -8
  50. package/dist/resources/extensions/gsd/workflow-mcp.js +6 -0
  51. package/dist/resources/extensions/gsd/workflow-templates/bugfix.md +0 -1
  52. package/dist/resources/extensions/gsd/workflow-templates/dep-upgrade.md +0 -1
  53. package/dist/resources/extensions/gsd/workflow-templates/full-project.md +0 -1
  54. package/dist/resources/extensions/gsd/workflow-templates/hotfix.md +0 -1
  55. package/dist/resources/extensions/gsd/workflow-templates/refactor.md +0 -1
  56. package/dist/resources/extensions/gsd/workflow-templates/registry.json +0 -184
  57. package/dist/resources/extensions/gsd/workflow-templates/security-audit.md +0 -1
  58. package/dist/resources/extensions/gsd/workflow-templates/small-feature.md +0 -1
  59. package/dist/resources/extensions/gsd/workflow-templates/spike.md +0 -1
  60. package/dist/resources/extensions/remote-questions/manager.js +4 -28
  61. package/dist/resources/extensions/remote-questions/telegram-adapter.js +4 -79
  62. package/dist/resources/extensions/shared/interview-ui.js +1 -189
  63. package/dist/resources/extensions/shared/layout-utils.js +0 -17
  64. package/dist/resources/extensions/shared/rtk.js +46 -3
  65. package/dist/resources/skills/create-workflow/SKILL.md +6 -33
  66. package/dist/rtk.d.ts +6 -2
  67. package/dist/rtk.js +48 -3
  68. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  69. package/dist/update-check.d.ts +0 -10
  70. package/dist/update-check.js +3 -24
  71. package/dist/web/standalone/.next/BUILD_ID +1 -1
  72. package/dist/web/standalone/.next/app-path-routes-manifest.json +13 -13
  73. package/dist/web/standalone/.next/build-manifest.json +4 -4
  74. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  75. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  76. package/dist/web/standalone/.next/required-server-files.json +3 -3
  77. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  78. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  79. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  80. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  81. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  82. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  83. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  84. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  85. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  86. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  87. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  88. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  89. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  90. package/dist/web/standalone/.next/server/app/_not-found.rsc +4 -4
  91. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  92. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  93. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  94. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  95. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  96. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  97. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  98. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  99. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  100. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  101. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  102. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  103. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  104. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  105. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  106. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  107. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  108. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  109. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  110. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  111. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  112. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  113. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  114. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  115. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  116. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  117. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  118. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  119. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  120. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  121. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  122. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  123. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  124. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  125. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  126. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  127. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  128. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  129. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  130. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  131. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  132. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  133. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  134. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  135. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  136. package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  137. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  138. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  139. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  140. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  141. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  142. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  143. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  144. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  145. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  146. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  147. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  148. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  149. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  150. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  151. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  152. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  153. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  154. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  155. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  156. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  157. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  159. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  160. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  161. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  162. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  163. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  164. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  165. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
  166. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  167. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  168. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  169. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  170. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  171. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  172. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  173. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  174. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  175. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  176. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  177. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  178. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  179. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  180. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  181. package/dist/web/standalone/.next/server/app/index.html +1 -1
  182. package/dist/web/standalone/.next/server/app/index.rsc +5 -5
  183. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  184. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
  185. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  186. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
  187. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  188. package/dist/web/standalone/.next/server/app/page.js +2 -2
  189. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  190. package/dist/web/standalone/.next/server/app-paths-manifest.json +13 -13
  191. package/dist/web/standalone/.next/server/chunks/63.js +3 -3
  192. package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
  193. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  194. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  195. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  196. package/dist/web/standalone/.next/server/middleware.js +2 -2
  197. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  198. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  199. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  200. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  201. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  202. package/dist/web/standalone/.next/static/chunks/2826.dd3dc8bbd3025fa5.js +9 -0
  203. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-f2a7482d42a5614b.js → page-2f24283c162b6ab3.js} +1 -1
  204. package/dist/web/standalone/.next/static/chunks/app/{layout-a16c7a7ecdf0c2cf.js → layout-9ecfd95f343793f0.js} +1 -1
  205. package/dist/web/standalone/.next/static/chunks/app/page-7115e62689b5fd84.js +1 -0
  206. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +1 -0
  207. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +1 -0
  208. package/dist/web/standalone/.next/static/chunks/{webpack-6c7cda3e318eedb6.js → webpack-b868033a5834586d.js} +1 -1
  209. package/dist/web/standalone/.next/static/css/f6e8833d46e738d8.css +1 -0
  210. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  211. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  212. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  213. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  214. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  215. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  216. package/dist/web/standalone/server.js +1 -1
  217. package/dist/wizard.js +2 -2
  218. package/dist/worktree-cli.d.ts +5 -6
  219. package/dist/worktree-cli.js +7 -23
  220. package/package.json +3 -3
  221. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  222. package/packages/native/dist/ps/types.d.ts +5 -0
  223. package/packages/native/dist/ps/types.js +2 -0
  224. package/packages/native/src/ps/types.ts +5 -0
  225. package/packages/native/tsconfig.tsbuildinfo +1 -1
  226. package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -1
  227. package/packages/pi-ai/dist/models/capability-patches.d.ts.map +1 -1
  228. package/packages/pi-ai/dist/models/capability-patches.js +2 -3
  229. package/packages/pi-ai/dist/models/capability-patches.js.map +1 -1
  230. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts +0 -68
  231. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts.map +1 -1
  232. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js +0 -68
  233. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js.map +1 -1
  234. package/packages/pi-ai/dist/models/generated/anthropic.d.ts +0 -17
  235. package/packages/pi-ai/dist/models/generated/anthropic.d.ts.map +1 -1
  236. package/packages/pi-ai/dist/models/generated/anthropic.js +0 -17
  237. package/packages/pi-ai/dist/models/generated/anthropic.js.map +1 -1
  238. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts +0 -17
  239. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts.map +1 -1
  240. package/packages/pi-ai/dist/models/generated/google-antigravity.js +0 -17
  241. package/packages/pi-ai/dist/models/generated/google-antigravity.js.map +1 -1
  242. package/packages/pi-ai/dist/models/generated/groq.d.ts +153 -0
  243. package/packages/pi-ai/dist/models/generated/groq.d.ts.map +1 -1
  244. package/packages/pi-ai/dist/models/generated/groq.js +153 -0
  245. package/packages/pi-ai/dist/models/generated/groq.js.map +1 -1
  246. package/packages/pi-ai/dist/models/generated/index.d.ts +153 -119
  247. package/packages/pi-ai/dist/models/generated/index.d.ts.map +1 -1
  248. package/packages/pi-ai/dist/models/generated/openrouter.d.ts +0 -17
  249. package/packages/pi-ai/dist/models/generated/openrouter.d.ts.map +1 -1
  250. package/packages/pi-ai/dist/models/generated/openrouter.js +0 -17
  251. package/packages/pi-ai/dist/models/generated/openrouter.js.map +1 -1
  252. package/packages/pi-ai/dist/models.generated.test.js +0 -16
  253. package/packages/pi-ai/dist/models.generated.test.js.map +1 -1
  254. package/packages/pi-ai/dist/providers/amazon-bedrock.js +1 -2
  255. package/packages/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  256. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts +1 -1
  257. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
  258. package/packages/pi-ai/dist/providers/anthropic-shared.js +1 -7
  259. package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
  260. package/packages/pi-ai/dist/providers/anthropic-shared.test.js +1 -12
  261. package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +1 -1
  262. package/packages/pi-ai/node_modules/@smithy/node-http-handler/LICENSE +201 -0
  263. package/packages/pi-ai/node_modules/@smithy/node-http-handler/README.md +9 -0
  264. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-cjs/index.js +762 -0
  265. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js +19 -0
  266. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/constants.js +1 -0
  267. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js +9 -0
  268. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/index.js +3 -0
  269. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +230 -0
  270. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +87 -0
  271. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +32 -0
  272. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +169 -0
  273. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js +21 -0
  274. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +88 -0
  275. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +36 -0
  276. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js +21 -0
  277. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +22 -0
  278. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +23 -0
  279. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +8 -0
  280. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +41 -0
  281. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js +21 -0
  282. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/timing.js +4 -0
  283. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +63 -0
  284. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts +10 -0
  285. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts +5 -0
  286. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts +4 -0
  287. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +3 -0
  288. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts +46 -0
  289. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +24 -0
  290. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +12 -0
  291. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +63 -0
  292. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts +13 -0
  293. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts +12 -0
  294. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts +2 -0
  295. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts +6 -0
  296. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts +6 -0
  297. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts +2 -0
  298. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +5 -0
  299. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +6 -0
  300. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts +13 -0
  301. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +8 -0
  302. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts +10 -0
  303. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts +5 -0
  304. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts +4 -0
  305. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts +3 -0
  306. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts +46 -0
  307. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts +24 -0
  308. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts +12 -0
  309. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts +63 -0
  310. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts +13 -0
  311. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts +12 -0
  312. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts +2 -0
  313. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts +6 -0
  314. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts +6 -0
  315. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts +2 -0
  316. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts +5 -0
  317. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts +6 -0
  318. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts +13 -0
  319. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +8 -0
  320. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts +12 -0
  321. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts +12 -0
  322. package/packages/pi-ai/node_modules/@smithy/node-http-handler/package.json +68 -0
  323. package/packages/pi-ai/oauth.d.ts +1 -0
  324. package/packages/pi-ai/oauth.js +1 -0
  325. package/packages/pi-ai/package.json +1 -1
  326. package/packages/pi-ai/scripts/generate-models.ts +0 -38
  327. package/packages/pi-ai/src/models/capability-patches.ts +2 -5
  328. package/packages/pi-ai/src/models/generated/amazon-bedrock.ts +0 -68
  329. package/packages/pi-ai/src/models/generated/anthropic.ts +0 -17
  330. package/packages/pi-ai/src/models/generated/google-antigravity.ts +0 -17
  331. package/packages/pi-ai/src/models/generated/groq.ts +153 -0
  332. package/packages/pi-ai/src/models/generated/openrouter.ts +0 -17
  333. package/packages/pi-ai/src/models.generated.test.ts +0 -16
  334. package/packages/pi-ai/src/providers/amazon-bedrock.ts +1 -2
  335. package/packages/pi-ai/src/providers/anthropic-shared.test.ts +1 -15
  336. package/packages/pi-ai/src/providers/anthropic-shared.ts +2 -6
  337. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  338. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +0 -7
  339. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  340. package/packages/pi-coding-agent/dist/core/auth-storage.js +0 -9
  341. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  342. package/packages/pi-coding-agent/dist/core/auth-storage.test.js +0 -36
  343. package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
  344. package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  345. package/packages/pi-coding-agent/dist/core/sdk.js +0 -10
  346. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  347. package/packages/pi-coding-agent/dist/core/skill-tool.test.js +2 -2
  348. package/packages/pi-coding-agent/dist/core/skill-tool.test.js.map +1 -1
  349. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +65 -0
  350. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  351. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +75 -1
  352. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  353. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +1 -1
  354. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  355. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +21 -185
  356. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  357. package/packages/pi-coding-agent/src/core/auth-storage.test.ts +0 -41
  358. package/packages/pi-coding-agent/src/core/auth-storage.ts +0 -10
  359. package/packages/pi-coding-agent/src/core/sdk.ts +0 -14
  360. package/packages/pi-coding-agent/src/core/skill-tool.test.ts +2 -2
  361. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +83 -1
  362. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +24 -201
  363. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  364. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  365. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
  366. package/pkg/dist/modes/interactive/theme/theme.d.ts +65 -0
  367. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  368. package/pkg/dist/modes/interactive/theme/theme.js +75 -1
  369. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  370. package/pkg/dist/modes/interactive/theme/themes.d.ts +1 -1
  371. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  372. package/pkg/dist/modes/interactive/theme/themes.js +21 -185
  373. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  374. package/src/resources/extensions/ask-user-questions.ts +2 -17
  375. package/src/resources/extensions/claude-code-cli/models.ts +0 -9
  376. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +4 -36
  377. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +0 -18
  378. package/src/resources/extensions/gsd/auto/detect-stuck.ts +0 -10
  379. package/src/resources/extensions/gsd/auto/loop-deps.ts +0 -1
  380. package/src/resources/extensions/gsd/auto/loop.ts +3 -109
  381. package/src/resources/extensions/gsd/auto/phases.ts +60 -94
  382. package/src/resources/extensions/gsd/auto/resolve.ts +1 -1
  383. package/src/resources/extensions/gsd/auto/run-unit.ts +1 -11
  384. package/src/resources/extensions/gsd/auto/session.ts +0 -7
  385. package/src/resources/extensions/gsd/auto-dispatch.ts +5 -45
  386. package/src/resources/extensions/gsd/auto-loop.ts +1 -1
  387. package/src/resources/extensions/gsd/auto-post-unit.ts +3 -3
  388. package/src/resources/extensions/gsd/auto-prompts.ts +2 -7
  389. package/src/resources/extensions/gsd/auto-recovery.ts +1 -16
  390. package/src/resources/extensions/gsd/auto-verification.ts +3 -3
  391. package/src/resources/extensions/gsd/auto.ts +26 -34
  392. package/src/resources/extensions/gsd/commands/catalog.ts +3 -60
  393. package/src/resources/extensions/gsd/commands/handlers/core.ts +0 -6
  394. package/src/resources/extensions/gsd/commands/handlers/ops.ts +0 -11
  395. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +29 -279
  396. package/src/resources/extensions/gsd/commands-cmux.ts +2 -6
  397. package/src/resources/extensions/gsd/commands-do.ts +0 -1
  398. package/src/resources/extensions/gsd/commands-handlers.ts +2 -19
  399. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +1 -1
  400. package/src/resources/extensions/gsd/commands-workflow-templates.ts +2 -129
  401. package/src/resources/extensions/gsd/definition-loader.ts +0 -7
  402. package/src/resources/extensions/gsd/docs/preferences-reference.md +8 -8
  403. package/src/resources/extensions/gsd/doctor-providers.ts +22 -52
  404. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +3 -1
  405. package/src/resources/extensions/gsd/error-classifier.ts +1 -1
  406. package/src/resources/extensions/gsd/forensics.ts +29 -25
  407. package/src/resources/extensions/gsd/git-service.ts +1 -0
  408. package/src/resources/extensions/gsd/graph.ts +3 -0
  409. package/src/resources/extensions/gsd/model-cost-table.ts +1 -2
  410. package/src/resources/extensions/gsd/model-router.ts +1 -4
  411. package/src/resources/extensions/gsd/native-git-bridge.ts +5 -21
  412. package/src/resources/extensions/gsd/notifications.ts +0 -6
  413. package/src/resources/extensions/gsd/pre-execution-checks.ts +0 -6
  414. package/src/resources/extensions/gsd/preferences-types.ts +1 -1
  415. package/src/resources/extensions/gsd/preferences.ts +10 -10
  416. package/src/resources/extensions/gsd/run-manager.ts +19 -53
  417. package/src/resources/extensions/gsd/templates/PREFERENCES.md +6 -6
  418. package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +34 -1
  419. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +31 -45
  420. package/src/resources/extensions/gsd/tests/autocomplete-regressions-1675.test.ts +0 -39
  421. package/src/resources/extensions/gsd/tests/commands-do.test.ts +0 -48
  422. package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +6 -8
  423. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +18 -62
  424. package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +12 -29
  425. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +4 -0
  426. package/src/resources/extensions/gsd/tests/integration/doctor-runtime.test.ts +0 -36
  427. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +10 -41
  428. package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +0 -51
  429. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +1 -171
  430. package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +5 -24
  431. package/src/resources/extensions/gsd/tests/preferences.test.ts +1 -69
  432. package/src/resources/extensions/gsd/tests/prompt-db.test.ts +1 -1
  433. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +0 -4
  434. package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +0 -15
  435. package/src/resources/extensions/gsd/tests/uok-flags.test.ts +1 -31
  436. package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +6 -15
  437. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +2 -2
  438. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +2 -8
  439. package/src/resources/extensions/gsd/unit-runtime.ts +0 -1
  440. package/src/resources/extensions/gsd/uok/flags.ts +6 -6
  441. package/src/resources/extensions/gsd/uok/kernel.ts +4 -16
  442. package/src/resources/extensions/gsd/workflow-mcp.ts +6 -0
  443. package/src/resources/extensions/gsd/workflow-templates/bugfix.md +0 -1
  444. package/src/resources/extensions/gsd/workflow-templates/dep-upgrade.md +0 -1
  445. package/src/resources/extensions/gsd/workflow-templates/full-project.md +0 -1
  446. package/src/resources/extensions/gsd/workflow-templates/hotfix.md +0 -1
  447. package/src/resources/extensions/gsd/workflow-templates/refactor.md +0 -1
  448. package/src/resources/extensions/gsd/workflow-templates/registry.json +0 -184
  449. package/src/resources/extensions/gsd/workflow-templates/security-audit.md +0 -1
  450. package/src/resources/extensions/gsd/workflow-templates/small-feature.md +0 -1
  451. package/src/resources/extensions/gsd/workflow-templates/spike.md +0 -1
  452. package/src/resources/extensions/gsd/workflow-templates.ts +0 -7
  453. package/src/resources/extensions/gsd/workspace-index.ts +4 -9
  454. package/src/resources/extensions/remote-questions/manager.ts +3 -36
  455. package/src/resources/extensions/remote-questions/telegram-adapter.ts +4 -86
  456. package/src/resources/extensions/shared/interview-ui.ts +1 -195
  457. package/src/resources/extensions/shared/layout-utils.ts +0 -26
  458. package/src/resources/extensions/shared/rtk.ts +52 -12
  459. package/src/resources/skills/create-workflow/SKILL.md +6 -33
  460. package/dist/resources/extensions/gsd/commands-debug.js +0 -388
  461. package/dist/resources/extensions/gsd/commands-scan.js +0 -94
  462. package/dist/resources/extensions/gsd/debug-session-store.js +0 -238
  463. package/dist/resources/extensions/gsd/prompts/debug-diagnose.md +0 -25
  464. package/dist/resources/extensions/gsd/prompts/debug-session-manager.md +0 -80
  465. package/dist/resources/extensions/gsd/prompts/scan.md +0 -79
  466. package/dist/resources/extensions/gsd/prompts/workflow-oneshot.md +0 -26
  467. package/dist/resources/extensions/gsd/workflow-dispatch.js +0 -64
  468. package/dist/resources/extensions/gsd/workflow-install.js +0 -327
  469. package/dist/resources/extensions/gsd/workflow-plugins.js +0 -346
  470. package/dist/resources/extensions/gsd/workflow-templates/accessibility-audit.md +0 -88
  471. package/dist/resources/extensions/gsd/workflow-templates/api-breaking-change.md +0 -117
  472. package/dist/resources/extensions/gsd/workflow-templates/changelog-gen.md +0 -82
  473. package/dist/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +0 -144
  474. package/dist/resources/extensions/gsd/workflow-templates/dead-code.md +0 -81
  475. package/dist/resources/extensions/gsd/workflow-templates/docs-sync.yaml +0 -76
  476. package/dist/resources/extensions/gsd/workflow-templates/env-audit.yaml +0 -88
  477. package/dist/resources/extensions/gsd/workflow-templates/issue-triage.md +0 -84
  478. package/dist/resources/extensions/gsd/workflow-templates/observability-setup.md +0 -133
  479. package/dist/resources/extensions/gsd/workflow-templates/onboarding-check.md +0 -74
  480. package/dist/resources/extensions/gsd/workflow-templates/performance-audit.md +0 -125
  481. package/dist/resources/extensions/gsd/workflow-templates/pr-review.md +0 -67
  482. package/dist/resources/extensions/gsd/workflow-templates/pr-triage.md +0 -83
  483. package/dist/resources/extensions/gsd/workflow-templates/release.md +0 -118
  484. package/dist/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +0 -99
  485. package/dist/resources/extensions/gsd/workflow-templates/test-backfill.yaml +0 -73
  486. package/dist/resources/extensions/remote-questions/commands.js +0 -380
  487. package/dist/resources/extensions/shared/rtk-shared.js +0 -47
  488. package/dist/rtk-shared.d.ts +0 -10
  489. package/dist/rtk-shared.js +0 -47
  490. package/dist/shared/workspace-types.d.ts +0 -52
  491. package/dist/shared/workspace-types.js +0 -1
  492. package/dist/web/standalone/.next/static/chunks/2826.02df9631042cc18e.js +0 -9
  493. package/dist/web/standalone/.next/static/chunks/app/page-f1e30ab6bb269149.js +0 -1
  494. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +0 -1
  495. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +0 -1
  496. package/dist/web/standalone/.next/static/css/3e9cdadb4d23b8a4.css +0 -1
  497. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts +0 -2
  498. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts.map +0 -1
  499. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js +0 -38
  500. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js.map +0 -1
  501. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +0 -69
  502. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +0 -1
  503. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +0 -76
  504. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +0 -1
  505. package/packages/pi-coding-agent/src/core/agent-session-abort-order.test.ts +0 -56
  506. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +0 -82
  507. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +0 -69
  508. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +0 -1
  509. package/pkg/dist/modes/interactive/theme/theme-schema.js +0 -76
  510. package/pkg/dist/modes/interactive/theme/theme-schema.js.map +0 -1
  511. package/src/resources/extensions/gsd/commands-debug.ts +0 -484
  512. package/src/resources/extensions/gsd/commands-scan.ts +0 -125
  513. package/src/resources/extensions/gsd/debug-session-store.ts +0 -377
  514. package/src/resources/extensions/gsd/prompts/debug-diagnose.md +0 -25
  515. package/src/resources/extensions/gsd/prompts/debug-session-manager.md +0 -80
  516. package/src/resources/extensions/gsd/prompts/scan.md +0 -79
  517. package/src/resources/extensions/gsd/prompts/workflow-oneshot.md +0 -26
  518. package/src/resources/extensions/gsd/tests/commands-scan.test.ts +0 -351
  519. package/src/resources/extensions/gsd/tests/debug-command-handler.test.ts +0 -905
  520. package/src/resources/extensions/gsd/tests/debug-command-lifecycle.integration.test.ts +0 -1229
  521. package/src/resources/extensions/gsd/tests/debug-session-store.test.ts +0 -565
  522. package/src/resources/extensions/gsd/tests/discuss-milestone-structured-questions.test.ts +0 -64
  523. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +0 -67
  524. package/src/resources/extensions/gsd/tests/forensics-hook-key-parse.test.ts +0 -74
  525. package/src/resources/extensions/gsd/tests/remote-notification-from-desktop.test.ts +0 -107
  526. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +0 -166
  527. package/src/resources/extensions/gsd/tests/workflow-install.test.ts +0 -113
  528. package/src/resources/extensions/gsd/tests/workflow-plugins.test.ts +0 -310
  529. package/src/resources/extensions/gsd/workflow-dispatch.ts +0 -106
  530. package/src/resources/extensions/gsd/workflow-install.ts +0 -423
  531. package/src/resources/extensions/gsd/workflow-plugins.ts +0 -403
  532. package/src/resources/extensions/gsd/workflow-templates/accessibility-audit.md +0 -88
  533. package/src/resources/extensions/gsd/workflow-templates/api-breaking-change.md +0 -117
  534. package/src/resources/extensions/gsd/workflow-templates/changelog-gen.md +0 -82
  535. package/src/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +0 -144
  536. package/src/resources/extensions/gsd/workflow-templates/dead-code.md +0 -81
  537. package/src/resources/extensions/gsd/workflow-templates/docs-sync.yaml +0 -76
  538. package/src/resources/extensions/gsd/workflow-templates/env-audit.yaml +0 -88
  539. package/src/resources/extensions/gsd/workflow-templates/issue-triage.md +0 -84
  540. package/src/resources/extensions/gsd/workflow-templates/observability-setup.md +0 -133
  541. package/src/resources/extensions/gsd/workflow-templates/onboarding-check.md +0 -74
  542. package/src/resources/extensions/gsd/workflow-templates/performance-audit.md +0 -125
  543. package/src/resources/extensions/gsd/workflow-templates/pr-review.md +0 -67
  544. package/src/resources/extensions/gsd/workflow-templates/pr-triage.md +0 -83
  545. package/src/resources/extensions/gsd/workflow-templates/release.md +0 -118
  546. package/src/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +0 -99
  547. package/src/resources/extensions/gsd/workflow-templates/test-backfill.yaml +0 -73
  548. package/src/resources/extensions/remote-questions/commands.ts +0 -480
  549. package/src/resources/extensions/remote-questions/tests/command-polling.test.ts +0 -246
  550. package/src/resources/extensions/remote-questions/tests/telegram-commands.test.ts +0 -267
  551. package/src/resources/extensions/shared/rtk-shared.ts +0 -58
  552. package/src/resources/extensions/shared/tests/interview-preview.test.ts +0 -177
  553. package/src/resources/extensions/shared/tests/preview-layout.test.ts +0 -120
  554. /package/dist/web/standalone/.next/static/{JncJywFxCugMuXGs56m-b → prkokVQFxWtUVIku57_0z}/_buildManifest.js +0 -0
  555. /package/dist/web/standalone/.next/static/{JncJywFxCugMuXGs56m-b → prkokVQFxWtUVIku57_0z}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -27,120 +27,85 @@ One command. Walk away. Come back to a built project with clean git history.
27
27
 
28
28
  ---
29
29
 
30
- ## What's New in v2.75
30
+ ## What's New in v2.71
31
31
 
32
- ### Knowledge Graph & Learning Extraction
32
+ ### MCP Secure Env Collect
33
33
 
34
- - **Knowledge graph system** — GSD now builds a structured knowledge graph from project artifacts. Learnings, decisions, and patterns are parsed into queryable graph nodes.
35
- - **`/gsd extract-learnings`**new command extracts decisions, lessons, patterns, and surprises from completed phase artifacts into `LEARNINGS.md`, which feeds the knowledge graph automatically.
34
+ - **Secure credential collection over MCP** — the new `secure_env_collect` tool uses MCP form elicitation to collect secrets (API keys, tokens) from external clients without exposing values in tool output. Masks input in interactive mode.
35
+ - **Hardened elicitation schema** MCP elicitation schema handling is stricter, with proper validation and fallback for providers that don't support forms.
36
36
 
37
- ### Unified Orchestration Kernel (UOK)
37
+ ### MCP Reliability
38
38
 
39
- - **UOK is now the default** — the unified orchestration kernel replaces the legacy execution path. Plan-v2 compile gates, unified audit envelopes, turn-level git transaction modes, reactive/parallel scheduling via execution graph, and model policy filtering are all enforced by default. Legacy fallback remains as an emergency escape.
39
+ - **Stream ordering preserved** — MCP tool output now renders in the correct order, fixing interleaved output in Claude Code and other MCP clients.
40
+ - **isError flag propagation** — workflow tool execution failures now correctly return `isError: true`, so MCP clients can distinguish success from failure.
41
+ - **Multi-round discuss questions** — new-project discuss phase supports multi-round questioning with structured question gates.
40
42
 
41
- ### Extension API
43
+ ### Model Selection Hardening
42
44
 
43
- - **GSD Extension API** — third-party extensions can now be loaded from `.gsd/extensions/`, with a formal API surface for hooking into the GSD lifecycle (#3338).
45
+ - **Unconfigured models blocked** — models without a configured provider are filtered from selection surfaces, preventing dispatch failures.
46
+ - **Provider readiness required** — saved default model selection now verifies the provider is ready before accepting it.
47
+ - **Session override honored** — `/gsd model` selection persists as a session override across all dispatch phases.
48
+ - **Minimal context guard** — model override logic is skipped in minimal command contexts where it doesn't apply.
44
49
 
45
- ### v1 Command Parity
50
+ ### Auto-Mode Resilience
46
51
 
47
- - **12 missing commands added** — GSD v2 now covers all v1 commands, closing the migration gap.
52
+ - **Credential cooldown recovery** — auto-mode survives transient 429 rate-limit responses with structured cooldown errors and a bounded retry budget.
53
+ - **Fire-and-forget auto start** — auto start is detached from active turns to prevent blocking.
54
+ - **Scoped forensics** — stuck-loop forensics are now scoped to auto sessions only, preventing false positives in interactive use.
48
55
 
49
56
  ### TUI Improvements
50
57
 
51
- - **Chat frame redesign** — compaction notices, tool execution cards, and the chat frame now share a unified styling with timestamps and model headers.
52
- - **Inline tool calls** — assistant tool calls render inline with text instead of grouped at the end.
53
- - **Compaction and success fixes** — tool cards no longer stick after compaction; success notifications are properly promoted.
58
+ - **Overlay subscription fix** — resolved overlay subscription lifecycle and `Ctrl+Shift+P` shortcut conflict.
59
+ - **Improved overlays and shortcuts** — GSD overlays, keyboard shortcuts, and notification flows redesigned for consistency.
60
+ - **Pinned output restored** — pinned output bar displays above the editor during tool execution again.
61
+ - **Turn completion cleanup** — pinned latest output is cleared on turn completion, preventing stale output from persisting.
62
+ - **Secure input masking** — extension input values are masked in interactive mode when collecting secrets.
54
63
 
55
- ### Auto-Mode & Reliability
64
+ ### Provider Fixes
56
65
 
57
- - **Session timeout recovery** — auto-resume timer handles session creation timeouts; timeout counter resets on resume.
58
- - **Compaction checkpoint fix** — all session phases are checkpointed during compaction, not just the executing phase.
59
- - **MCP worktree routing** — tool writes are routed to the active worktree when a milestone has one; worktree paths are accepted in the project root guard.
60
- - **Single-writer DB invariant** — the engine database now enforces a single-writer invariant, preventing corruption from concurrent access.
66
+ - **Full OAuth login URLs** — OAuth login URLs are now displayed in full instead of being truncated.
67
+ - **MiniMax bearer auth** — MiniMax Anthropic API requests use proper bearer authentication.
68
+ - **Case-insensitive tool rendering** — renderable tool matching is now case-insensitive, fixing missed tool output.
69
+ - **Headless idle timeout** — idle timeout is kept off during interactive tool execution in headless mode.
61
70
 
62
- ### Providers & CI
71
+ ### Reliability & Internals
63
72
 
64
- - **Alibaba DashScope** — added as a standalone provider (#3891).
65
- - **Persistent language preference** — `/gsd language` sets a persistent language preference.
66
- - **Flat-rate provider detection** — extended to custom and externalCli providers.
67
- - **Thinking level as effort** — Claude Code now passes thinking level as an effort parameter.
68
- - **Hardened release pipeline** — workspace versions synced in release commits, package-lock.json regenerated during bumps, incremental build cache issues resolved.
73
+ - **TOCTOU file locking** — race conditions in event log and custom workflow graph file locking are fixed with proper atomic lock acquisition.
74
+ - **State derive refactor** — `deriveStateFromDb` god function extracted into composable, testable helpers.
75
+ - **Windows portability** — hardened cross-platform portability across runtime, tooling, and CI.
76
+ - **Model routing transparency** — dynamic routing is skipped for interactive dispatches; model changes are always shown in the banner.
77
+ - **Capability-aware routing (ADR-004)** — full implementation of capability scoring, `before_model_select` hook, and task metadata extraction.
78
+ - **Multi-model provider strategy (ADR-005)** — infrastructure for multi-provider model selection wired into live paths.
79
+ - **Anti-fabrication guardrails** — discuss prompts enforce turn-taking to prevent fabricated user responses.
80
+ - **Milestone worktree cleanup** — merged worktree cleanup uses the milestone branch instead of generic lookups.
81
+ - **Tool cache control** — `cache_control` breakpoints added to tool definitions for improved prompt caching.
69
82
 
70
83
  See the full [Changelog](./CHANGELOG.md) for details on every release.
71
84
 
72
85
  <details>
73
- <summary>v2.74 highlights</summary>
74
-
75
- - **DB-authoritative milestone completeness** — milestone completion state is derived from the database, not file markers (#4179)
76
- - **Flat-rate provider detection** — extended to custom and externalCli providers
77
- - **Thinking level as effort** — Claude Code passes thinking level as an effort parameter
78
- - **False milestone merge prevention** — auto-mode no longer falsely merges after a `complete-milestone` failure (#4175)
79
- - **Premature auto-stop fix** — prevents auto-mode from stopping early on blocked phase + missing reassessment
80
- - **Inline tool call rendering** — assistant tool calls render inline with text instead of grouped at the end
81
- - **Custom model preservation** — custom model selection preserved on `/gsd auto` bootstrap (#4122)
82
-
83
- </details>
84
-
85
- <details>
86
- <summary>v2.73 highlights</summary>
87
-
88
- - **Alibaba DashScope provider** — added as a standalone provider (#3891)
89
- - **Layered depth enforcement** — discuss phase enforces depth gates for thorough requirements gathering (#4079)
90
- - **Memory pressure watchdog** — stuck detection state persisted across sessions (#3708)
91
- - **Ollama cloud auth** — cloud auth support and real context window resolution via `/api/show` (#4017)
92
- - **DB corruption prevention** — direct writes to `gsd.db` blocked via hooks (#3674)
93
- - **Circular dependency cleanup** — 3 circular dependencies broken in extension modules (#3730)
94
- - **Subagent permissions** — GSD subagents default to `bypassPermissions` with safe built-ins pre-authorized
95
- - **Security hardening** — auth middleware activated, shutdown/update routes hardened (#4023)
96
- - **Stale slice reconciliation** — stale slice rows reconciled and STATE.md rebuilt before DB close (#3658)
97
- - **Subagent model preference** — `subagent_model` preference wired through to dispatch prompt builders
98
- - **Pipeline integrity** — 5 pipeline issues addressed from release audit, package-lock.json regenerated during bumps
99
-
100
- </details>
101
-
102
- <details>
103
- <summary>v2.72 highlights</summary>
104
-
105
- - **8 specialist subagents** — new specialist subagents and slim pro agents with GSD phase guard to prevent conflicts
106
- - **Model selection hardening** — unconfigured models blocked from selection, provider readiness required, session override honored
107
- - **Auto-mode resilience** — credential cooldown recovery with bounded retry budget, fire-and-forget auto start, scoped forensics
108
- - **TUI overhaul** — overlays, keyboard shortcuts, and notification flows redesigned for consistency
109
- - **Capability-aware routing (ADR-004)** — full implementation of capability scoring, `before_model_select` hook, and task metadata extraction
110
- - **Multi-model provider strategy (ADR-005)** — infrastructure for multi-provider model selection wired into live paths
111
- - **Anti-fabrication guardrails** — discuss prompts enforce turn-taking to prevent fabricated user responses
112
- - **Windows portability** — hardened cross-platform portability across runtime, tooling, and CI
113
- - **MCP reliability** — every registered tool exposed, SDK subpath resolution fixed, abort signals threaded through
114
- - **Tool cache control** — `cache_control` breakpoints added to tool definitions for improved prompt caching
115
-
116
- </details>
117
-
118
- <details>
119
- <summary>v2.71 highlights</summary>
120
-
121
- - **Secure credential collection over MCP** — `secure_env_collect` tool uses MCP form elicitation to collect secrets without exposing values in tool output
122
- - **MCP stream ordering** — tool output renders in correct order, fixing interleaved output in Claude Code and other MCP clients
123
- - **isError flag propagation** — workflow tool execution failures correctly return `isError: true`
124
- - **Multi-round discuss questions** — new-project discuss phase supports multi-round questioning with structured question gates
125
- - **TOCTOU file locking** — race conditions in event log and custom workflow graph file locking fixed with atomic lock acquisition
126
- - **State derive refactor** — `deriveStateFromDb` god function extracted into composable, testable helpers
127
- - **Pinned output fixes** — restored above editor during tool execution, cleared on turn completion
128
-
129
- </details>
130
-
131
- <details>
132
- <summary>v2.70 and earlier</summary>
86
+ <summary>Previous highlights (v2.70 and earlier)</summary>
133
87
 
134
88
  - **Full workflow over MCP (v2.68)** — slice replanning, milestone management, slice completion, task completion, and core planning tools exposed over MCP
135
89
  - **Transport-gated MCP (v2.68)** — workflow tool availability adapts to provider transport capabilities automatically
136
90
  - **Contextual tips system (v2.68)** — TUI and web terminal surface contextual tips based on workflow state
137
91
  - **Ask user questions over MCP (v2.70)** — interactive questions exposed via elicitation for external integrations
138
92
  - **Tiered Context Injection (M005)** — relevance-scoped context with 65%+ token reduction
93
+ - **Resilient transient error recovery** — defers to Core RetryHandler and fixes cmdCtx race conditions
94
+ - **Anthropic subscription routing** — auto-routed through Claude Code CLI provider with proper display names
139
95
  - **5-wave state machine hardening** — critical data integrity fixes across atomic writes, event log reconciliation, session recovery
96
+ - **Discussion gate enforcement** — mechanical enforcement with fail-closed behavior
140
97
  - **Slice-level parallelism** — dependency-aware parallel dispatch within a milestone
98
+ - **Persistent notification panel** — TUI overlay, widget, and web API for real-time notifications
141
99
  - **MCP server** — 6 read-only project state tools for external integrations, auto-wrapup guard, and question dedup
142
100
  - **Ollama extension** — first-class local LLM support via Ollama, with dynamic routing enabled by default
101
+ - **Discord bot & daemon** — dedicated daemon package, Discord bot, and headless text mode with tool calls
102
+ - **Capability-aware model routing (ADR-004)** — capability scoring, `before_model_select` hook, and task metadata extraction
143
103
  - **VS Code sidebar redesign** — SCM provider, checkpoints, diagnostics panel, activity feed, workflow controls, session forking
104
+ - **`/gsd parallel watch`** — native TUI overlay for real-time worker monitoring
105
+ - **Codebase map** — automatic codebase map injection for fresh agent contexts
106
+ - **`--resume` flag** — resume previous sessions from the CLI
107
+ - **Concurrent invocation guard** — prevents overlapping auto-mode runs
108
+ - **VS Code integration** — status bar, file decorations, bash terminal, session tree, conversation history, and code lens
144
109
  - **Skills overhaul** — 30+ skill packs covering major frameworks, databases, and cloud platforms
145
110
  - **Single-writer state engine** — disciplined state transitions with machine guards and TOCTOU hardening
146
111
  - **DB-backed planning tools** — atomic SQLite tool calls for state transitions
@@ -424,8 +389,6 @@ On first run, GSD launches a branded setup wizard that walks you through LLM pro
424
389
  | `/gsd migrate` | Migrate a v1 `.planning` directory to `.gsd` format |
425
390
  | `/gsd help` | Categorized command reference for all GSD subcommands |
426
391
  | `/gsd mode` | Switch workflow mode (solo/team) with coordinated defaults |
427
- | `/gsd workflow` | Unified workflow plugins — list, run `<name>`, install, info, validate |
428
- | `/gsd start <template>` | Launch a bundled or custom workflow template (bugfix, release, etc.) |
429
392
  | `/gsd forensics` | Full-access GSD debugger for auto-mode failure investigation |
430
393
  | `/gsd cleanup` | Archive phase directories from completed milestones |
431
394
  | `/gsd doctor` | Runtime health checks — issues surface across widget, visualizer, and reports |
@@ -534,7 +497,7 @@ version: 1
534
497
  models:
535
498
  research: claude-sonnet-4-6
536
499
  planning:
537
- model: claude-opus-4-7
500
+ model: claude-opus-4-6
538
501
  fallbacks:
539
502
  - openrouter/z-ai/glm-5
540
503
  - openrouter/minimax/minimax-m2.5
@@ -793,7 +756,7 @@ In your preferences (`/gsd prefs`), assign different models to different phases:
793
756
  models:
794
757
  research: openrouter/deepseek/deepseek-r1
795
758
  planning:
796
- model: claude-opus-4-7
759
+ model: claude-opus-4-6
797
760
  fallbacks:
798
761
  - openrouter/z-ai/glm-5
799
762
  execution: claude-sonnet-4-6
@@ -47,4 +47,4 @@ export declare function isInteractiveHeadlessTool(toolName: string | undefined):
47
47
  export declare function shouldArmHeadlessIdleTimeout(toolCallCount: number, interactiveToolCount: number): boolean;
48
48
  export declare const FIRE_AND_FORGET_METHODS: Set<string>;
49
49
  export declare const QUICK_COMMANDS: Set<string>;
50
- export declare function isQuickCommand(command: string, commandArgs?: readonly string[]): boolean;
50
+ export declare function isQuickCommand(command: string): boolean;
@@ -100,9 +100,6 @@ export const QUICK_COMMANDS = new Set([
100
100
  'cleanup', 'migrate', 'doctor', 'remote', 'help', 'steer',
101
101
  'triage', 'visualize',
102
102
  ]);
103
- const QUICK_WORKFLOW_SUBCOMMANDS = new Set(['list', 'validate']);
104
- export function isQuickCommand(command, commandArgs = []) {
105
- if (QUICK_COMMANDS.has(command))
106
- return true;
107
- return command === 'workflow' && QUICK_WORKFLOW_SUBCOMMANDS.has(commandArgs[0] ?? '');
103
+ export function isQuickCommand(command) {
104
+ return QUICK_COMMANDS.has(command);
108
105
  }
package/dist/headless.js CHANGED
@@ -606,7 +606,7 @@ async function runHeadlessOnce(options, restartCount) {
606
606
  }
607
607
  }
608
608
  // Quick commands: resolve on first agent_end
609
- if (eventObj.type === 'agent_end' && isQuickCommand(options.command, options.commandArgs) && !completed) {
609
+ if (eventObj.type === 'agent_end' && isQuickCommand(options.command) && !completed) {
610
610
  completed = true;
611
611
  resolveCompletion();
612
612
  return;
@@ -622,9 +622,10 @@ async function runHeadlessOnce(options, restartCount) {
622
622
  // Kill child process — don't await, just fire and exit.
623
623
  // The main flow may be awaiting a promise that resolves when the child dies,
624
624
  // which would race with this handler. Exit synchronously to ensure correct exit code.
625
- void client.stop().catch((error) => {
626
- process.stderr.write(`[headless] Warning: failed to stop child process: ${error instanceof Error ? error.message : String(error)}\n`);
627
- });
625
+ try {
626
+ client.stop().catch(() => { });
627
+ }
628
+ catch { }
628
629
  if (timeoutTimer)
629
630
  clearTimeout(timeoutTimer);
630
631
  if (idleTimer)
@@ -706,7 +707,7 @@ async function runHeadlessOnce(options, restartCount) {
706
707
  process.stdin.resume();
707
708
  }
708
709
  // Detect child process crash (read-only exit event subscription — not stdin access)
709
- const internalProcess = Reflect.get(client, 'process');
710
+ const internalProcess = client.process;
710
711
  if (internalProcess) {
711
712
  internalProcess.on('exit', (code) => {
712
713
  if (!completed) {
package/dist/loader.js CHANGED
File without changes
@@ -118,25 +118,6 @@ function openBrowser(url) {
118
118
  execFile(cmd, [url], () => { });
119
119
  }
120
120
  }
121
- /**
122
- * Persist the selected default provider to settings.json.
123
- *
124
- * This ensures first startup after onboarding prefers the provider the user
125
- * just configured, instead of falling back to the first "available" provider
126
- * (which can be influenced by unrelated env auth like AWS_PROFILE).
127
- */
128
- function persistDefaultProvider(providerId) {
129
- const settingsPath = join(agentDir, 'settings.json');
130
- try {
131
- const raw = existsSync(settingsPath) ? JSON.parse(readFileSync(settingsPath, 'utf-8')) : {};
132
- raw.defaultProvider = providerId;
133
- mkdirSync(dirname(settingsPath), { recursive: true });
134
- writeFileSync(settingsPath, JSON.stringify(raw, null, 2), 'utf-8');
135
- }
136
- catch {
137
- // Non-fatal: startup fallback logic will still run.
138
- }
139
- }
140
121
  /** Sentinel returned by runStep when the user cancels — tells the caller
141
122
  * to abort the entire wizard. */
142
123
  const STEP_CANCELLED = Symbol('step-cancelled');
@@ -302,8 +283,16 @@ async function runLlmStep(p, pc, authStorage) {
302
283
  p.log.info('Your Claude subscription will be used for inference. No API key needed.');
303
284
  // Store sentinel so hasAuth('claude-code') returns true on future boots
304
285
  authStorage.set('claude-code', { type: 'api_key', key: 'cli' });
305
- // Persist claude-code so startup does not keep users on anthropic direct API.
306
- persistDefaultProvider('claude-code');
286
+ // Persist claude-code as the default provider so the startup migration in
287
+ // cli.ts does not need to fire and the user is not left on "anthropic".
288
+ const settingsPath = join(agentDir, 'settings.json');
289
+ try {
290
+ const raw = existsSync(settingsPath) ? JSON.parse(readFileSync(settingsPath, 'utf-8')) : {};
291
+ raw.defaultProvider = 'claude-code';
292
+ mkdirSync(dirname(settingsPath), { recursive: true });
293
+ writeFileSync(settingsPath, JSON.stringify(raw, null, 2), 'utf-8');
294
+ }
295
+ catch { /* non-fatal — startup migration will catch it */ }
307
296
  return true;
308
297
  }
309
298
  // ── Step 2: Which provider? ──────────────────────────────────────────────
@@ -356,7 +345,7 @@ async function runOAuthFlow(p, pc, authStorage, providerId, oauthMap) {
356
345
  const s = p.spinner();
357
346
  s.start(`Authenticating with ${providerName}...`);
358
347
  try {
359
- const loginCallbacks = {
348
+ await authStorage.login(providerId, {
360
349
  onAuth: (info) => {
361
350
  s.stop(`Opening browser for ${providerName}`);
362
351
  openBrowser(info.url);
@@ -388,9 +377,7 @@ async function runOAuthFlow(p, pc, authStorage, providerId, oauthMap) {
388
377
  return result;
389
378
  }
390
379
  : undefined,
391
- };
392
- await authStorage.login(providerId, loginCallbacks);
393
- persistDefaultProvider(providerId);
380
+ });
394
381
  p.log.success(`Authenticated with ${pc.green(providerName)}`);
395
382
  return true;
396
383
  }
@@ -429,7 +416,6 @@ async function runApiKeyFlow(p, pc, authStorage, providerId, providerLabel) {
429
416
  p.log.warn(`Key doesn't start with expected prefix (${expectedPrefixes.join(' or ')}). Saving anyway.`);
430
417
  }
431
418
  authStorage.set(providerId, { type: 'api_key', key: trimmed });
432
- persistDefaultProvider(providerId);
433
419
  p.log.success(`API key saved for ${pc.green(providerLabel)}`);
434
420
  // Provider-specific post-setup hints
435
421
  if (providerId === 'openrouter') {
@@ -452,7 +438,6 @@ async function runOllamaLocalFlow(p, pc, authStorage) {
452
438
  s.stop(`Ollama is running at ${pc.green(host)}`);
453
439
  // Store a placeholder so the provider is recognized as authenticated
454
440
  authStorage.set('ollama', { type: 'api_key', key: 'ollama' });
455
- persistDefaultProvider('ollama');
456
441
  p.log.success(`${pc.green('Ollama (Local)')} configured — no API key needed`);
457
442
  p.log.info(pc.dim('Models are discovered automatically from your local Ollama instance.'));
458
443
  return true;
@@ -475,7 +460,6 @@ async function runOllamaLocalFlow(p, pc, authStorage) {
475
460
  if (p.isCancel(proceed) || !proceed)
476
461
  return false;
477
462
  authStorage.set('ollama', { type: 'api_key', key: 'ollama' });
478
- persistDefaultProvider('ollama');
479
463
  p.log.success(`${pc.green('Ollama (Local)')} saved — models will appear when Ollama is running`);
480
464
  return true;
481
465
  }
@@ -525,7 +509,6 @@ async function runCustomOpenAIFlow(p, pc, authStorage) {
525
509
  const trimmedModelId = modelId.trim();
526
510
  // Save API key to auth storage
527
511
  authStorage.set('custom-openai', { type: 'api_key', key: trimmedKey });
528
- persistDefaultProvider('custom-openai');
529
512
  // Write or merge into models.json
530
513
  const modelsJsonPath = join(agentDir, 'models.json');
531
514
  let config = { providers: {} };
@@ -670,9 +653,7 @@ async function runToolKeysStep(p, pc, authStorage) {
670
653
  // ─── Remote Questions Step ────────────────────────────────────────────────────
671
654
  async function runRemoteQuestionsStep(p, pc, authStorage) {
672
655
  // Check existing config — use getCredentialsForProvider to skip empty-key entries
673
- const hasValidKey = (provider) => authStorage
674
- .getCredentialsForProvider(provider)
675
- .some((c) => c.type === 'api_key' && typeof c.key === 'string' && c.key.length > 0);
656
+ const hasValidKey = (provider) => authStorage.getCredentialsForProvider(provider).some((c) => c.type === 'api_key' && c.key);
676
657
  const hasDiscord = hasValidKey('discord_bot');
677
658
  const hasSlack = hasValidKey('slack_bot');
678
659
  const hasTelegram = hasValidKey('telegram_bot');
@@ -877,13 +858,7 @@ async function runDiscordChannelStep(p, pc, token) {
877
858
  try {
878
859
  const res = await fetch(`https://discord.com/api/v10/guilds/${guildId}/channels`, { headers, signal: AbortSignal.timeout(15_000) });
879
860
  const data = await res.json();
880
- channels = Array.isArray(data)
881
- ? data.filter((ch) => typeof ch === 'object' &&
882
- ch !== null &&
883
- typeof ch.id === 'string' &&
884
- typeof ch.name === 'string' &&
885
- (ch.type === 0 || ch.type === 5))
886
- : [];
861
+ channels = Array.isArray(data) ? data.filter((ch) => ch.type === 0 || ch.type === 5) : [];
887
862
  }
888
863
  catch {
889
864
  p.log.warn('Could not fetch channels — configure later with /gsd remote discord');
@@ -16,16 +16,13 @@ import { showInterviewRound, } from "./shared/tui.js";
16
16
  const OptionSchema = Type.Object({
17
17
  label: Type.String({ description: "User-facing label (1-5 words)" }),
18
18
  description: Type.String({ description: "One short sentence explaining impact/tradeoff if selected" }),
19
- preview: Type.Optional(Type.String({
20
- description: "Optional markdown content shown in a side-by-side preview panel when this option is highlighted. Use for showing code samples, config snippets, or detailed explanations. Keep under ~20 lines — longer content is truncated.",
21
- })),
22
19
  });
23
20
  const QuestionSchema = Type.Object({
24
21
  id: Type.String({ description: "Stable identifier for mapping answers (snake_case)" }),
25
22
  header: Type.String({ description: "Short header label shown in the UI (12 or fewer chars)" }),
26
23
  question: Type.String({ description: "Single-sentence prompt shown to the user" }),
27
24
  options: Type.Array(OptionSchema, {
28
- description: 'Provide 2-3 mutually exclusive choices for single-select, or any number for multi-select. Put the recommended option first and suffix its label with "(Recommended)". Each option can include an optional "preview" field with markdown content shown in a side panel. Do not include an "Other" option for single-select; the client adds a free-form "None of the above" option automatically.',
25
+ description: 'Provide 2-3 mutually exclusive choices for single-select, or any number for multi-select. Put the recommended option first and suffix its label with "(Recommended)". Do not include an "Other" option for single-select; the client adds a free-form "None of the above" option automatically.',
29
26
  }),
30
27
  allowMultiple: Type.Optional(Type.Boolean({
31
28
  description: "If true, the user can select multiple options using SPACE to toggle and ENTER to confirm. No 'None of the above' option is added. Default: false.",
@@ -137,14 +134,12 @@ export default function AskUserQuestions(pi) {
137
134
  pi.registerTool({
138
135
  name: "ask_user_questions",
139
136
  label: "Request User Input",
140
- description: "Request user input for one to three short questions and wait for the response. Single-select questions have 2-3 mutually exclusive options with a free-form 'None of the above' added automatically. Multi-select questions (allowMultiple: true) let the user toggle multiple options with SPACE and confirm with ENTER. Options can include an optional 'preview' field with markdown content shown in a side-by-side panel when highlighted.",
137
+ description: "Request user input for one to three short questions and wait for the response. Single-select questions have 2-3 mutually exclusive options with a free-form 'None of the above' added automatically. Multi-select questions (allowMultiple: true) let the user toggle multiple options with SPACE and confirm with ENTER.",
141
138
  promptGuidelines: [
142
139
  "Use ask_user_questions when you need the user to choose between concrete alternatives before proceeding.",
143
140
  "Keep questions to 1 when possible; never exceed 3.",
144
141
  "For single-select: each question must have 2-3 options. Put the recommended option first with '(Recommended)' suffix. Do not include an 'Other' or 'None of the above' option - the client adds one automatically.",
145
142
  "For multi-select: set allowMultiple: true. The user can pick any number of options. No 'None of the above' is added.",
146
- "When options involve code patterns, config choices, or architecture decisions, add a 'preview' field with markdown content (code blocks, lists, headers, etc.). The preview renders in a side-by-side panel when the option is highlighted.",
147
- "Preview content is rendered in a fixed-height panel (max ~20 lines visible). Keep previews concise — show the most relevant snippet, not exhaustive examples. Longer content is truncated with a '+N lines hidden' indicator.",
148
143
  ],
149
144
  parameters: AskUserQuestionsParams,
150
145
  async execute(_toolCallId, params, signal, _onUpdate, ctx) {
@@ -279,10 +274,6 @@ export default function AskUserQuestions(pi) {
279
274
  const headers = qs.map((q) => q.header).join(", ");
280
275
  text += theme.fg("dim", ` (${headers})`);
281
276
  }
282
- const previewCount = qs.reduce((acc, q) => acc + (q.options || []).filter((o) => o.preview).length, 0);
283
- if (previewCount > 0) {
284
- text += theme.fg("accent", ` [${previewCount} preview${previewCount !== 1 ? "s" : ""}]`);
285
- }
286
277
  for (const q of qs) {
287
278
  const multiSel = !!q.allowMultiple;
288
279
  text += `\n ${theme.fg("text", q.question)}`;
@@ -19,15 +19,6 @@ export const CLAUDE_CODE_MODELS = [
19
19
  contextWindow: 1_000_000,
20
20
  maxTokens: 128_000,
21
21
  },
22
- {
23
- id: "claude-opus-4-7",
24
- name: "Claude Opus 4.7 (via Claude Code)",
25
- reasoning: true,
26
- input: ["text", "image"],
27
- cost: ZERO_COST,
28
- contextWindow: 1_000_000,
29
- maxTokens: 128_000,
30
- },
31
22
  {
32
23
  id: "claude-sonnet-4-6",
33
24
  name: "Claude Sonnet 4.6 (via Claude Code)",
@@ -6,7 +6,7 @@
6
6
  * AssistantMessageEvents for TUI rendering, then strips tool-call blocks from
7
7
  * the final AssistantMessage so GSD's agent loop doesn't try to dispatch them.
8
8
  */
9
- import { EventStream } from "@gsd/pi-ai";
9
+ import { EventStream, mapThinkingLevelToEffort, supportsAdaptiveThinking } from "@gsd/pi-ai";
10
10
  import { execSync } from "node:child_process";
11
11
  import { PartialMessageBuilder, ZERO_USAGE, mapUsage } from "./partial-builder.js";
12
12
  import { buildWorkflowMcpServers } from "../gsd/workflow-mcp.js";
@@ -482,36 +482,6 @@ export async function resolveClaudePermissionMode(env = process.env) {
482
482
  }
483
483
  return "bypassPermissions";
484
484
  }
485
- // NOTE: These helpers intentionally mirror @gsd/pi-ai anthropic-shared
486
- // behavior so this extension remains typecheck-stable even when the published
487
- // @gsd/pi-ai barrel lags behind monorepo source exports.
488
- function modelSupportsAdaptiveThinking(modelId) {
489
- return (modelId.includes("opus-4-6")
490
- || modelId.includes("opus-4.6")
491
- || modelId.includes("opus-4-7")
492
- || modelId.includes("opus-4.7")
493
- || modelId.includes("sonnet-4-6")
494
- || modelId.includes("sonnet-4.6"));
495
- }
496
- function mapThinkingLevelToAnthropicEffort(level, modelId) {
497
- switch (level) {
498
- case "minimal":
499
- case "low":
500
- return "low";
501
- case "medium":
502
- return "medium";
503
- case "high":
504
- return "high";
505
- case "xhigh":
506
- if (modelId.includes("opus-4-7") || modelId.includes("opus-4.7"))
507
- return "xhigh";
508
- if (modelId.includes("opus-4-6") || modelId.includes("opus-4.6"))
509
- return "max";
510
- return "high";
511
- default:
512
- return "high";
513
- }
514
- }
515
485
  /**
516
486
  * Build the options object passed to the Claude Agent SDK's `query()` call.
517
487
  *
@@ -543,8 +513,8 @@ export function buildSdkOptions(modelId, prompt, overrides, extraOptions = {}) {
543
513
  "Bash(pwd)",
544
514
  ...(mcpServers ? Object.keys(mcpServers).map((serverName) => `mcp__${serverName}__*`) : []),
545
515
  ];
546
- const effort = reasoning && modelSupportsAdaptiveThinking(modelId)
547
- ? mapThinkingLevelToAnthropicEffort(reasoning, modelId)
516
+ const effort = reasoning && supportsAdaptiveThinking(modelId)
517
+ ? mapThinkingLevelToEffort(reasoning, modelId)
548
518
  : undefined;
549
519
  return {
550
520
  pathToClaudeCodeExecutable: getClaudePath(),
@@ -559,7 +529,7 @@ export function buildSdkOptions(modelId, prompt, overrides, extraOptions = {}) {
559
529
  disallowedTools,
560
530
  ...(allowedTools.length > 0 ? { allowedTools } : {}),
561
531
  ...(mcpServers ? { mcpServers } : {}),
562
- betas: (modelId.includes("sonnet") || modelId.includes("opus-4-7") || modelId.includes("opus-4.7")) ? ["context-1m-2025-08-07"] : [],
532
+ betas: modelId.includes("sonnet") ? ["context-1m-2025-08-07"] : [],
563
533
  ...(effort ? { effort } : {}),
564
534
  ...sdkExtraOptions,
565
535
  };
@@ -16,7 +16,6 @@ const ENOENT_PATH_RE = /ENOENT[^']*'([^']+)'/;
16
16
  *
17
17
  * Rule 1: Same error string twice in a row → stuck immediately.
18
18
  * Rule 2: Same unit key 3+ consecutive times → stuck (preserves prior behavior).
19
- * Rule 2b: Same unit key appears 3+ times anywhere in the active window → stuck.
20
19
  * Rule 3: Oscillation A→B→A→B in last 4 entries → stuck.
21
20
  * Rule 4: Same ENOENT path in any 2 entries within the window → stuck (#3575).
22
21
  * Missing files don't self-heal between retries — retrying wastes budget.
@@ -49,14 +48,6 @@ export function detectStuck(window) {
49
48
  };
50
49
  }
51
50
  }
52
- // Rule 2b: Same unit key 3+ times anywhere in the active window
53
- const countInWindow = window.filter((entry) => entry.key === last.key).length;
54
- if (countInWindow >= 3) {
55
- return {
56
- stuck: true,
57
- reason: `${last.key} derived ${countInWindow} times in last ${window.length} attempts without progress${suffix}`,
58
- };
59
- }
60
51
  // Rule 3: Oscillation (A→B→A→B in last 4)
61
52
  if (window.length >= 4) {
62
53
  const w = window.slice(-4);