gsd-pi 2.67.0-dev.2142d3e → 2.67.0-dev.2367d7e

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 (233) hide show
  1. package/README.md +1 -1
  2. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +152 -70
  3. package/dist/resources/extensions/gsd/auto/session.js +10 -0
  4. package/dist/resources/extensions/gsd/auto-dispatch.js +1 -1
  5. package/dist/resources/extensions/gsd/auto-start.js +16 -30
  6. package/dist/resources/extensions/gsd/auto-worktree.js +62 -15
  7. package/dist/resources/extensions/gsd/auto.js +121 -59
  8. package/dist/resources/extensions/gsd/bootstrap/system-context.js +7 -2
  9. package/dist/resources/extensions/gsd/commands/catalog.js +2 -1
  10. package/dist/resources/extensions/gsd/commands/handlers/core.js +1 -1
  11. package/dist/resources/extensions/gsd/commands-mcp-status.js +43 -7
  12. package/dist/resources/extensions/gsd/doctor-git-checks.js +4 -4
  13. package/dist/resources/extensions/gsd/doctor-proactive.js +3 -3
  14. package/dist/resources/extensions/gsd/doctor.js +8 -4
  15. package/dist/resources/extensions/gsd/gsd-db.js +11 -0
  16. package/dist/resources/extensions/gsd/guided-flow.js +40 -31
  17. package/dist/resources/extensions/gsd/init-wizard.js +15 -12
  18. package/dist/resources/extensions/gsd/interrupted-session.js +146 -0
  19. package/dist/resources/extensions/gsd/mcp-project-config.js +83 -0
  20. package/dist/resources/extensions/gsd/state.js +7 -2
  21. package/dist/resources/extensions/gsd/workflow-mcp.js +90 -19
  22. package/dist/web/standalone/.next/BUILD_ID +1 -1
  23. package/dist/web/standalone/.next/app-path-routes-manifest.json +14 -14
  24. package/dist/web/standalone/.next/build-manifest.json +3 -3
  25. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  26. package/dist/web/standalone/.next/react-loadable-manifest.json +2 -2
  27. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  28. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  29. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  30. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  31. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  32. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  33. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  34. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  35. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  36. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  37. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  38. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  39. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  40. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  41. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  42. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  43. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  44. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  45. package/dist/web/standalone/.next/server/app/index.html +1 -1
  46. package/dist/web/standalone/.next/server/app/index.rsc +2 -2
  47. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  48. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
  49. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  50. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  51. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  52. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  53. package/dist/web/standalone/.next/server/app-paths-manifest.json +14 -14
  54. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  55. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  56. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  57. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  58. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  59. package/dist/web/standalone/.next/static/chunks/2826.821e01b07d92e948.js +9 -0
  60. package/dist/web/standalone/.next/static/chunks/app/{page-0c485498795110d6.js → page-f1e30ab6bb269149.js} +1 -1
  61. package/dist/web/standalone/.next/static/chunks/{webpack-b49b09f97429b5d0.js → webpack-6e4d7e9a4f57bed4.js} +1 -1
  62. package/package.json +4 -2
  63. package/packages/mcp-server/dist/cli.d.ts +9 -0
  64. package/packages/mcp-server/dist/cli.d.ts.map +1 -0
  65. package/packages/mcp-server/dist/cli.js +58 -0
  66. package/packages/mcp-server/dist/cli.js.map +1 -0
  67. package/packages/mcp-server/dist/index.d.ts +20 -0
  68. package/packages/mcp-server/dist/index.d.ts.map +1 -0
  69. package/packages/mcp-server/dist/index.js +14 -0
  70. package/packages/mcp-server/dist/index.js.map +1 -0
  71. package/packages/mcp-server/dist/readers/captures.d.ts +25 -0
  72. package/packages/mcp-server/dist/readers/captures.d.ts.map +1 -0
  73. package/packages/mcp-server/dist/readers/captures.js +67 -0
  74. package/packages/mcp-server/dist/readers/captures.js.map +1 -0
  75. package/packages/mcp-server/dist/readers/doctor-lite.d.ts +20 -0
  76. package/packages/mcp-server/dist/readers/doctor-lite.d.ts.map +1 -0
  77. package/packages/mcp-server/dist/readers/doctor-lite.js +173 -0
  78. package/packages/mcp-server/dist/readers/doctor-lite.js.map +1 -0
  79. package/packages/mcp-server/dist/readers/index.d.ts +14 -0
  80. package/packages/mcp-server/dist/readers/index.d.ts.map +1 -0
  81. package/packages/mcp-server/dist/readers/index.js +10 -0
  82. package/packages/mcp-server/dist/readers/index.js.map +1 -0
  83. package/packages/mcp-server/dist/readers/knowledge.d.ts +18 -0
  84. package/packages/mcp-server/dist/readers/knowledge.d.ts.map +1 -0
  85. package/packages/mcp-server/dist/readers/knowledge.js +82 -0
  86. package/packages/mcp-server/dist/readers/knowledge.js.map +1 -0
  87. package/packages/mcp-server/dist/readers/metrics.d.ts +32 -0
  88. package/packages/mcp-server/dist/readers/metrics.d.ts.map +1 -0
  89. package/packages/mcp-server/dist/readers/metrics.js +74 -0
  90. package/packages/mcp-server/dist/readers/metrics.js.map +1 -0
  91. package/packages/mcp-server/dist/readers/paths.d.ts +42 -0
  92. package/packages/mcp-server/dist/readers/paths.d.ts.map +1 -0
  93. package/packages/mcp-server/dist/readers/paths.js +199 -0
  94. package/packages/mcp-server/dist/readers/paths.js.map +1 -0
  95. package/packages/mcp-server/dist/readers/roadmap.d.ts +26 -0
  96. package/packages/mcp-server/dist/readers/roadmap.d.ts.map +1 -0
  97. package/packages/mcp-server/dist/readers/roadmap.js +194 -0
  98. package/packages/mcp-server/dist/readers/roadmap.js.map +1 -0
  99. package/packages/mcp-server/dist/readers/state.d.ts +43 -0
  100. package/packages/mcp-server/dist/readers/state.d.ts.map +1 -0
  101. package/packages/mcp-server/dist/readers/state.js +184 -0
  102. package/packages/mcp-server/dist/readers/state.js.map +1 -0
  103. package/packages/mcp-server/dist/server.d.ts +28 -0
  104. package/packages/mcp-server/dist/server.d.ts.map +1 -0
  105. package/packages/mcp-server/dist/server.js +319 -0
  106. package/packages/mcp-server/dist/server.js.map +1 -0
  107. package/packages/mcp-server/dist/session-manager.d.ts +54 -0
  108. package/packages/mcp-server/dist/session-manager.d.ts.map +1 -0
  109. package/packages/mcp-server/dist/session-manager.js +284 -0
  110. package/packages/mcp-server/dist/session-manager.js.map +1 -0
  111. package/packages/mcp-server/dist/types.d.ts +61 -0
  112. package/packages/mcp-server/dist/types.d.ts.map +1 -0
  113. package/packages/mcp-server/dist/types.js +11 -0
  114. package/packages/mcp-server/dist/types.js.map +1 -0
  115. package/packages/mcp-server/dist/workflow-tools.d.ts +9 -0
  116. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -0
  117. package/packages/mcp-server/dist/workflow-tools.js +532 -0
  118. package/packages/mcp-server/dist/workflow-tools.js.map +1 -0
  119. package/packages/mcp-server/src/workflow-tools.ts +13 -2
  120. package/packages/mcp-server/tsconfig.json +1 -1
  121. package/packages/pi-agent-core/dist/agent-loop.js +14 -6
  122. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  123. package/packages/pi-agent-core/src/agent-loop.test.ts +53 -0
  124. package/packages/pi-agent-core/src/agent-loop.ts +20 -6
  125. package/packages/pi-coding-agent/dist/core/contextual-tips.d.ts +43 -0
  126. package/packages/pi-coding-agent/dist/core/contextual-tips.d.ts.map +1 -0
  127. package/packages/pi-coding-agent/dist/core/contextual-tips.js +208 -0
  128. package/packages/pi-coding-agent/dist/core/contextual-tips.js.map +1 -0
  129. package/packages/pi-coding-agent/dist/core/contextual-tips.test.d.ts +2 -0
  130. package/packages/pi-coding-agent/dist/core/contextual-tips.test.d.ts.map +1 -0
  131. package/packages/pi-coding-agent/dist/core/contextual-tips.test.js +227 -0
  132. package/packages/pi-coding-agent/dist/core/contextual-tips.test.js.map +1 -0
  133. package/packages/pi-coding-agent/dist/core/index.d.ts +1 -0
  134. package/packages/pi-coding-agent/dist/core/index.d.ts.map +1 -1
  135. package/packages/pi-coding-agent/dist/core/index.js +1 -0
  136. package/packages/pi-coding-agent/dist/core/index.js.map +1 -1
  137. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.d.ts +2 -0
  138. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.d.ts.map +1 -0
  139. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +28 -0
  140. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -0
  141. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +1 -0
  142. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  143. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +17 -12
  144. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  145. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  146. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +19 -0
  147. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  148. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.d.ts +4 -0
  149. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -1
  150. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js +14 -0
  151. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js.map +1 -1
  152. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +3 -0
  153. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  154. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +15 -12
  155. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  156. package/packages/pi-coding-agent/src/core/contextual-tips.test.ts +259 -0
  157. package/packages/pi-coding-agent/src/core/contextual-tips.ts +232 -0
  158. package/packages/pi-coding-agent/src/core/index.ts +2 -0
  159. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +54 -0
  160. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +18 -12
  161. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +21 -0
  162. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.ts +19 -0
  163. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +19 -15
  164. package/packages/rpc-client/dist/index.d.ts +10 -0
  165. package/packages/rpc-client/dist/index.d.ts.map +1 -0
  166. package/packages/rpc-client/dist/index.js +9 -0
  167. package/packages/rpc-client/dist/index.js.map +1 -0
  168. package/packages/rpc-client/dist/jsonl.d.ts +17 -0
  169. package/packages/rpc-client/dist/jsonl.d.ts.map +1 -0
  170. package/packages/rpc-client/dist/jsonl.js +54 -0
  171. package/packages/rpc-client/dist/jsonl.js.map +1 -0
  172. package/packages/rpc-client/dist/rpc-client.d.ts +259 -0
  173. package/packages/rpc-client/dist/rpc-client.d.ts.map +1 -0
  174. package/packages/rpc-client/dist/rpc-client.js +541 -0
  175. package/packages/rpc-client/dist/rpc-client.js.map +1 -0
  176. package/packages/rpc-client/dist/rpc-client.test.d.ts +2 -0
  177. package/packages/rpc-client/dist/rpc-client.test.d.ts.map +1 -0
  178. package/packages/rpc-client/dist/rpc-client.test.js +477 -0
  179. package/packages/rpc-client/dist/rpc-client.test.js.map +1 -0
  180. package/packages/rpc-client/dist/rpc-types.d.ts +566 -0
  181. package/packages/rpc-client/dist/rpc-types.d.ts.map +1 -0
  182. package/packages/rpc-client/dist/rpc-types.js +12 -0
  183. package/packages/rpc-client/dist/rpc-types.js.map +1 -0
  184. package/scripts/ensure-workspace-builds.cjs +2 -0
  185. package/scripts/link-workspace-packages.cjs +21 -14
  186. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +190 -93
  187. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +89 -116
  188. package/src/resources/extensions/gsd/auto/session.ts +10 -0
  189. package/src/resources/extensions/gsd/auto-dispatch.ts +1 -1
  190. package/src/resources/extensions/gsd/auto-start.ts +23 -55
  191. package/src/resources/extensions/gsd/auto-worktree.ts +59 -15
  192. package/src/resources/extensions/gsd/auto.ts +133 -64
  193. package/src/resources/extensions/gsd/bootstrap/system-context.ts +8 -2
  194. package/src/resources/extensions/gsd/commands/catalog.ts +2 -1
  195. package/src/resources/extensions/gsd/commands/handlers/core.ts +1 -1
  196. package/src/resources/extensions/gsd/commands-mcp-status.ts +53 -7
  197. package/src/resources/extensions/gsd/doctor-git-checks.ts +4 -4
  198. package/src/resources/extensions/gsd/doctor-proactive.ts +3 -3
  199. package/src/resources/extensions/gsd/doctor.ts +9 -5
  200. package/src/resources/extensions/gsd/gsd-db.ts +12 -0
  201. package/src/resources/extensions/gsd/guided-flow.ts +42 -36
  202. package/src/resources/extensions/gsd/init-wizard.ts +17 -11
  203. package/src/resources/extensions/gsd/interrupted-session.ts +224 -0
  204. package/src/resources/extensions/gsd/mcp-project-config.ts +128 -0
  205. package/src/resources/extensions/gsd/state.ts +7 -1
  206. package/src/resources/extensions/gsd/tests/auto-project-root-env.test.ts +29 -0
  207. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +668 -2
  208. package/src/resources/extensions/gsd/tests/cold-resume-db-reopen.test.ts +14 -4
  209. package/src/resources/extensions/gsd/tests/copy-planning-artifacts-samepath.test.ts +21 -0
  210. package/src/resources/extensions/gsd/tests/crash-recovery.test.ts +380 -2
  211. package/src/resources/extensions/gsd/tests/forensics-context-persist.test.ts +30 -0
  212. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +12 -0
  213. package/src/resources/extensions/gsd/tests/guided-flow-session-isolation.test.ts +2 -2
  214. package/src/resources/extensions/gsd/tests/integration/doctor-fixlevel.test.ts +52 -1
  215. package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +2 -9
  216. package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +0 -33
  217. package/src/resources/extensions/gsd/tests/integration/merge-cwd-restore.test.ts +169 -0
  218. package/src/resources/extensions/gsd/tests/interrupted-session-auto.test.ts +146 -0
  219. package/src/resources/extensions/gsd/tests/interrupted-session-ui.test.ts +136 -0
  220. package/src/resources/extensions/gsd/tests/mcp-project-config.test.ts +85 -0
  221. package/src/resources/extensions/gsd/tests/mcp-status.test.ts +15 -0
  222. package/src/resources/extensions/gsd/tests/verification-operational-gate.test.ts +11 -0
  223. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +212 -13
  224. package/src/resources/extensions/gsd/workflow-mcp.ts +106 -19
  225. package/dist/web/standalone/.next/static/chunks/6502.b804e48b7919f55e.js +0 -9
  226. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.d.ts +0 -13
  227. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.d.ts.map +0 -1
  228. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.js +0 -27
  229. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.js.map +0 -1
  230. package/packages/pi-coding-agent/src/modes/interactive/provider-auth-setup.ts +0 -40
  231. package/src/resources/extensions/gsd/tests/init-bootstrap-completeness.test.ts +0 -121
  232. /package/dist/web/standalone/.next/static/{xR6qurkuYSvyjBjRyJLxG → WMDT_0C0XDkBKtsAI_AX4}/_buildManifest.js +0 -0
  233. /package/dist/web/standalone/.next/static/{xR6qurkuYSvyjBjRyJLxG → WMDT_0C0XDkBKtsAI_AX4}/_ssgManifest.js +0 -0
@@ -1,13 +0,0 @@
1
- import type { ProviderAuthMode } from "../../core/model-registry.js";
2
- export type ProviderSetupAction = {
3
- kind: "oauth-login";
4
- } | {
5
- kind: "status";
6
- message: string;
7
- };
8
- export declare function getProviderSetupAction(options: {
9
- provider: string;
10
- authMode: ProviderAuthMode;
11
- hasAuth: boolean;
12
- }): ProviderSetupAction;
13
- //# sourceMappingURL=provider-auth-setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-auth-setup.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/provider-auth-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAC5B;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CACjB,GAAG,mBAAmB,CA6BtB"}
@@ -1,27 +0,0 @@
1
- export function getProviderSetupAction(options) {
2
- const { provider, authMode, hasAuth } = options;
3
- if (authMode === "oauth") {
4
- return { kind: "oauth-login" };
5
- }
6
- if (authMode === "none") {
7
- return {
8
- kind: "status",
9
- message: `${provider} does not need auth setup. Use /model to select it.`,
10
- };
11
- }
12
- if (authMode === "externalCli") {
13
- return {
14
- kind: "status",
15
- message: hasAuth
16
- ? `${provider} is already authenticated. Use /model to select it.`
17
- : `${provider} uses external CLI auth. Sign in with the provider CLI, then use /model.`,
18
- };
19
- }
20
- return {
21
- kind: "status",
22
- message: hasAuth
23
- ? `${provider} already has credentials configured. Use /model to select it.`
24
- : `${provider} uses API-key auth, not OAuth. Configure its credentials, then use /model.`,
25
- };
26
- }
27
- //# sourceMappingURL=provider-auth-setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-auth-setup.js","sourceRoot":"","sources":["../../../src/modes/interactive/provider-auth-setup.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,sBAAsB,CAAC,OAItC;IACA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEhD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO;YACN,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAG,QAAQ,qDAAqD;SACzE,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAChC,OAAO;YACN,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,OAAO;gBACf,CAAC,CAAC,GAAG,QAAQ,qDAAqD;gBAClE,CAAC,CAAC,GAAG,QAAQ,0EAA0E;SACxF,CAAC;IACH,CAAC;IAED,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;YACf,CAAC,CAAC,GAAG,QAAQ,+DAA+D;YAC5E,CAAC,CAAC,GAAG,QAAQ,4EAA4E;KAC1F,CAAC;AACH,CAAC","sourcesContent":["import type { ProviderAuthMode } from \"../../core/model-registry.js\";\n\nexport type ProviderSetupAction =\n\t| { kind: \"oauth-login\" }\n\t| { kind: \"status\"; message: string };\n\nexport function getProviderSetupAction(options: {\n\tprovider: string;\n\tauthMode: ProviderAuthMode;\n\thasAuth: boolean;\n}): ProviderSetupAction {\n\tconst { provider, authMode, hasAuth } = options;\n\n\tif (authMode === \"oauth\") {\n\t\treturn { kind: \"oauth-login\" };\n\t}\n\n\tif (authMode === \"none\") {\n\t\treturn {\n\t\t\tkind: \"status\",\n\t\t\tmessage: `${provider} does not need auth setup. Use /model to select it.`,\n\t\t};\n\t}\n\n\tif (authMode === \"externalCli\") {\n\t\treturn {\n\t\t\tkind: \"status\",\n\t\t\tmessage: hasAuth\n\t\t\t\t? `${provider} is already authenticated. Use /model to select it.`\n\t\t\t\t: `${provider} uses external CLI auth. Sign in with the provider CLI, then use /model.`,\n\t\t};\n\t}\n\n\treturn {\n\t\tkind: \"status\",\n\t\tmessage: hasAuth\n\t\t\t? `${provider} already has credentials configured. Use /model to select it.`\n\t\t\t: `${provider} uses API-key auth, not OAuth. Configure its credentials, then use /model.`,\n\t};\n}\n"]}
@@ -1,40 +0,0 @@
1
- import type { ProviderAuthMode } from "../../core/model-registry.js";
2
-
3
- export type ProviderSetupAction =
4
- | { kind: "oauth-login" }
5
- | { kind: "status"; message: string };
6
-
7
- export function getProviderSetupAction(options: {
8
- provider: string;
9
- authMode: ProviderAuthMode;
10
- hasAuth: boolean;
11
- }): ProviderSetupAction {
12
- const { provider, authMode, hasAuth } = options;
13
-
14
- if (authMode === "oauth") {
15
- return { kind: "oauth-login" };
16
- }
17
-
18
- if (authMode === "none") {
19
- return {
20
- kind: "status",
21
- message: `${provider} does not need auth setup. Use /model to select it.`,
22
- };
23
- }
24
-
25
- if (authMode === "externalCli") {
26
- return {
27
- kind: "status",
28
- message: hasAuth
29
- ? `${provider} is already authenticated. Use /model to select it.`
30
- : `${provider} uses external CLI auth. Sign in with the provider CLI, then use /model.`,
31
- };
32
- }
33
-
34
- return {
35
- kind: "status",
36
- message: hasAuth
37
- ? `${provider} already has credentials configured. Use /model to select it.`
38
- : `${provider} uses API-key auth, not OAuth. Configure its credentials, then use /model.`,
39
- };
40
- }
@@ -1,121 +0,0 @@
1
- /**
2
- * GSD Init Wizard — Bootstrap completeness regression tests
3
- *
4
- * Regression test for #3880 — fresh install never creates gsd.db.
5
- *
6
- * The init wizard must create all artifacts needed for full-capability
7
- * mode: gsd.db (via ensureDbOpen), runtime/ directory, and STATE.md
8
- * (via deriveState + buildStateMarkdown). Without these, GSD enters
9
- * degraded markdown-only mode on every fresh install.
10
- *
11
- * These are structural tests that verify the init-wizard.ts source
12
- * contains the required calls in the correct order.
13
- */
14
-
15
- import { describe, test } from "node:test";
16
- import assert from "node:assert/strict";
17
- import { readFileSync } from "node:fs";
18
- import { fileURLToPath } from "node:url";
19
- import { dirname, join } from "node:path";
20
-
21
- const __filename = fileURLToPath(import.meta.url);
22
- const __dirname = dirname(__filename);
23
-
24
- const wizardSrc = readFileSync(
25
- join(__dirname, "..", "init-wizard.ts"),
26
- "utf-8",
27
- );
28
-
29
- describe("init-wizard bootstrap completeness (#3880)", () => {
30
- // ── Gap 1: gsd.db must be created during init ─────────────────────────
31
-
32
- test("bootstrapGsdDirectory is followed by ensureDbOpen", () => {
33
- const bootstrapIdx = wizardSrc.indexOf("bootstrapGsdDirectory(basePath");
34
- const ensureDbIdx = wizardSrc.indexOf("ensureDbOpen(basePath)");
35
- assert.ok(bootstrapIdx > -1, "bootstrapGsdDirectory call should exist");
36
- assert.ok(ensureDbIdx > -1, "ensureDbOpen(basePath) call should exist");
37
- assert.ok(
38
- ensureDbIdx > bootstrapIdx,
39
- "ensureDbOpen must appear after bootstrapGsdDirectory so .gsd/ exists first",
40
- );
41
- });
42
-
43
- test("ensureDbOpen is imported from dynamic-tools", () => {
44
- assert.match(
45
- wizardSrc,
46
- /import.*dynamic-tools/,
47
- "init-wizard should import from dynamic-tools for ensureDbOpen",
48
- );
49
- });
50
-
51
- // ── Gap 2: runtime/ directory must be created during init ──────────────
52
-
53
- test("bootstrapGsdDirectory creates runtime/ directory", () => {
54
- // Find the bootstrapGsdDirectory function body
55
- const fnStart = wizardSrc.indexOf("function bootstrapGsdDirectory(");
56
- assert.ok(fnStart > -1, "bootstrapGsdDirectory function should exist");
57
-
58
- // Find the next function definition to bound the search
59
- const fnBody = wizardSrc.slice(fnStart, wizardSrc.indexOf("\nfunction ", fnStart + 1));
60
-
61
- assert.match(
62
- fnBody,
63
- /mkdirSync\(.*"runtime"/,
64
- 'bootstrapGsdDirectory should create "runtime" directory',
65
- );
66
- });
67
-
68
- // ── Gap 3: STATE.md must be written during init ────────────────────────
69
-
70
- test("showProjectInit generates STATE.md after bootstrap", () => {
71
- const bootstrapIdx = wizardSrc.indexOf("bootstrapGsdDirectory(basePath");
72
- const deriveIdx = wizardSrc.indexOf("deriveState(basePath)");
73
- const stateIdx = wizardSrc.indexOf("buildStateMarkdown(state)");
74
- const saveIdx = wizardSrc.indexOf('resolveGsdRootFile(basePath, "STATE")');
75
-
76
- assert.ok(deriveIdx > -1, "deriveState call should exist in init-wizard");
77
- assert.ok(stateIdx > -1, "buildStateMarkdown call should exist in init-wizard");
78
- assert.ok(saveIdx > -1, "resolveGsdRootFile STATE call should exist in init-wizard");
79
- assert.ok(
80
- deriveIdx > bootstrapIdx,
81
- "deriveState must appear after bootstrapGsdDirectory",
82
- );
83
- });
84
-
85
- // ── Ordering: DB must be open before deriveState ───────────────────────
86
-
87
- test("ensureDbOpen appears before deriveState", () => {
88
- const ensureDbIdx = wizardSrc.indexOf("ensureDbOpen(basePath)");
89
- const deriveIdx = wizardSrc.indexOf("deriveState(basePath)");
90
- assert.ok(ensureDbIdx > -1, "ensureDbOpen should exist");
91
- assert.ok(deriveIdx > -1, "deriveState should exist");
92
- assert.ok(
93
- ensureDbIdx < deriveIdx,
94
- "ensureDbOpen must appear before deriveState so DB is ready for state derivation",
95
- );
96
- });
97
-
98
- // ── Failure visibility: user must be warned on partial bootstrap ───────
99
-
100
- test("ensureDbOpen failure surfaces a warning to the user", () => {
101
- assert.match(
102
- wizardSrc,
103
- /if\s*\(\s*!dbReady\s*\)/,
104
- "init-wizard should check dbReady and warn the user on failure",
105
- );
106
- // The warning must reference degraded mode so the user knows what happened
107
- assert.match(
108
- wizardSrc,
109
- /degraded mode/,
110
- "DB failure warning should mention degraded mode",
111
- );
112
- });
113
-
114
- test("STATE.md failure surfaces a warning to the user", () => {
115
- assert.match(
116
- wizardSrc,
117
- /if\s*\(\s*!stateReady\s*\)/,
118
- "init-wizard should check stateReady and warn the user on failure",
119
- );
120
- });
121
- });