gsd-pi 2.44.0-dev.62b5d6c → 2.44.0-dev.73f2fd5

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 (326) hide show
  1. package/README.md +30 -12
  2. package/dist/resources/extensions/gsd/auto/infra-errors.js +3 -0
  3. package/dist/resources/extensions/gsd/auto/phases.js +36 -36
  4. package/dist/resources/extensions/gsd/auto-prompts.js +24 -1
  5. package/dist/resources/extensions/gsd/auto-start.js +10 -0
  6. package/dist/resources/extensions/gsd/auto-timers.js +57 -3
  7. package/dist/resources/extensions/gsd/auto-worktree-sync.js +4 -0
  8. package/dist/resources/extensions/gsd/auto-worktree.js +9 -6
  9. package/dist/resources/extensions/gsd/auto.js +30 -3
  10. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +156 -0
  11. package/dist/resources/extensions/gsd/bootstrap/system-context.js +46 -12
  12. package/dist/resources/extensions/gsd/commands/catalog.js +6 -1
  13. package/dist/resources/extensions/gsd/commands/handlers/core.js +1 -0
  14. package/dist/resources/extensions/gsd/commands/handlers/ops.js +5 -0
  15. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +5 -0
  16. package/dist/resources/extensions/gsd/commands-mcp-status.js +187 -0
  17. package/dist/resources/extensions/gsd/db-writer.js +34 -16
  18. package/dist/resources/extensions/gsd/doctor.js +8 -0
  19. package/dist/resources/extensions/gsd/git-service.js +8 -3
  20. package/dist/resources/extensions/gsd/gsd-db.js +12 -1
  21. package/dist/resources/extensions/gsd/markdown-renderer.js +1 -1
  22. package/dist/resources/extensions/gsd/preferences.js +9 -1
  23. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +2 -4
  24. package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -1
  25. package/dist/resources/extensions/gsd/prompts/reassess-roadmap.md +6 -6
  26. package/dist/resources/extensions/gsd/prompts/replan-slice.md +3 -14
  27. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +7 -37
  28. package/dist/resources/extensions/gsd/provider-error-pause.js +7 -0
  29. package/dist/resources/extensions/gsd/state.js +19 -2
  30. package/dist/resources/extensions/gsd/tools/plan-slice.js +1 -0
  31. package/dist/resources/extensions/gsd/tools/plan-task.js +1 -0
  32. package/dist/resources/extensions/gsd/tools/replan-slice.js +2 -0
  33. package/dist/resources/extensions/gsd/tools/validate-milestone.js +88 -0
  34. package/dist/resources/extensions/gsd/worktree-resolver.js +6 -0
  35. package/dist/resources/extensions/mcp-client/index.js +14 -0
  36. package/dist/web/standalone/.next/BUILD_ID +1 -1
  37. package/dist/web/standalone/.next/app-path-routes-manifest.json +17 -17
  38. package/dist/web/standalone/.next/build-manifest.json +2 -2
  39. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  40. package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
  41. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  42. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  43. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  44. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  45. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  46. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  47. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  48. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  49. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  50. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  51. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  52. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  53. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  54. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  55. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  56. package/dist/web/standalone/.next/server/app/index.html +1 -1
  57. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  58. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  59. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  60. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  61. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  62. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  63. package/dist/web/standalone/.next/server/app-paths-manifest.json +17 -17
  64. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  65. package/dist/web/standalone/.next/server/pages/500.html +2 -2
  66. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  67. package/package.json +1 -1
  68. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +3 -1
  69. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  70. package/packages/pi-coding-agent/dist/core/auth-storage.js +15 -1
  71. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  72. package/packages/pi-coding-agent/dist/core/auth-storage.test.js +6 -8
  73. package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
  74. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js +24 -26
  75. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js.map +1 -1
  76. package/packages/pi-coding-agent/dist/core/fs-utils.test.js +29 -48
  77. package/packages/pi-coding-agent/dist/core/fs-utils.test.js.map +1 -1
  78. package/packages/pi-coding-agent/dist/core/local-model-check.d.ts +15 -0
  79. package/packages/pi-coding-agent/dist/core/local-model-check.d.ts.map +1 -0
  80. package/packages/pi-coding-agent/dist/core/local-model-check.js +41 -0
  81. package/packages/pi-coding-agent/dist/core/local-model-check.js.map +1 -0
  82. package/packages/pi-coding-agent/dist/core/model-registry.d.ts +11 -0
  83. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  84. package/packages/pi-coding-agent/dist/core/model-registry.js +20 -1
  85. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  86. package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js +34 -44
  87. package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js.map +1 -1
  88. package/packages/pi-coding-agent/dist/core/session-manager.test.js +30 -34
  89. package/packages/pi-coding-agent/dist/core/session-manager.test.js.map +1 -1
  90. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
  91. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  92. package/packages/pi-coding-agent/dist/core/settings-manager.js +6 -0
  93. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  94. package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js +10 -12
  95. package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js.map +1 -1
  96. package/packages/pi-coding-agent/dist/main.d.ts.map +1 -1
  97. package/packages/pi-coding-agent/dist/main.js +17 -0
  98. package/packages/pi-coding-agent/dist/main.js.map +1 -1
  99. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.d.ts +2 -0
  100. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.d.ts.map +1 -0
  101. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.js +32 -0
  102. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.js.map +1 -0
  103. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts +3 -1
  104. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  105. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +8 -1
  106. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
  107. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  108. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  109. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +12 -0
  110. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  111. package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.d.ts +15 -0
  112. package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.d.ts.map +1 -0
  113. package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.js +40 -0
  114. package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.js.map +1 -0
  115. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  116. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +4 -1
  117. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  118. package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts +5 -2
  119. package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  120. package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.js +13 -2
  121. package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.js.map +1 -1
  122. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  123. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +17 -8
  124. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  125. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  126. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +7 -3
  127. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  128. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.test.js +43 -47
  129. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.test.js.map +1 -1
  130. package/packages/pi-coding-agent/src/core/auth-storage.test.ts +7 -7
  131. package/packages/pi-coding-agent/src/core/auth-storage.ts +15 -1
  132. package/packages/pi-coding-agent/src/core/extensions/runner.test.ts +26 -26
  133. package/packages/pi-coding-agent/src/core/fs-utils.test.ts +31 -43
  134. package/packages/pi-coding-agent/src/core/local-model-check.ts +45 -0
  135. package/packages/pi-coding-agent/src/core/model-registry.ts +21 -1
  136. package/packages/pi-coding-agent/src/core/resolve-config-value.test.ts +40 -45
  137. package/packages/pi-coding-agent/src/core/session-manager.test.ts +33 -33
  138. package/packages/pi-coding-agent/src/core/settings-manager.ts +9 -0
  139. package/packages/pi-coding-agent/src/core/tools/edit-diff.test.ts +17 -17
  140. package/packages/pi-coding-agent/src/main.ts +19 -0
  141. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/timestamp.test.ts +38 -0
  142. package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +10 -0
  143. package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +15 -0
  144. package/packages/pi-coding-agent/src/modes/interactive/components/timestamp.ts +48 -0
  145. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +3 -1
  146. package/packages/pi-coding-agent/src/modes/interactive/components/user-message.ts +18 -3
  147. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +16 -7
  148. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +8 -1
  149. package/packages/pi-coding-agent/src/resources/extensions/memory/storage.test.ts +74 -74
  150. package/src/resources/extensions/gsd/auto/infra-errors.ts +3 -0
  151. package/src/resources/extensions/gsd/auto/phases.ts +45 -48
  152. package/src/resources/extensions/gsd/auto-prompts.ts +24 -1
  153. package/src/resources/extensions/gsd/auto-start.ts +14 -0
  154. package/src/resources/extensions/gsd/auto-timers.ts +64 -3
  155. package/src/resources/extensions/gsd/auto-worktree-sync.ts +5 -0
  156. package/src/resources/extensions/gsd/auto-worktree.ts +9 -6
  157. package/src/resources/extensions/gsd/auto.ts +37 -3
  158. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +148 -0
  159. package/src/resources/extensions/gsd/bootstrap/system-context.ts +48 -11
  160. package/src/resources/extensions/gsd/commands/catalog.ts +6 -1
  161. package/src/resources/extensions/gsd/commands/handlers/core.ts +1 -0
  162. package/src/resources/extensions/gsd/commands/handlers/ops.ts +5 -0
  163. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +8 -0
  164. package/src/resources/extensions/gsd/commands-mcp-status.ts +247 -0
  165. package/src/resources/extensions/gsd/db-writer.ts +39 -17
  166. package/src/resources/extensions/gsd/doctor.ts +7 -1
  167. package/src/resources/extensions/gsd/git-service.ts +6 -2
  168. package/src/resources/extensions/gsd/gsd-db.ts +16 -1
  169. package/src/resources/extensions/gsd/markdown-renderer.ts +1 -1
  170. package/src/resources/extensions/gsd/preferences.ts +11 -1
  171. package/src/resources/extensions/gsd/prompts/complete-milestone.md +2 -4
  172. package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -1
  173. package/src/resources/extensions/gsd/prompts/reassess-roadmap.md +6 -6
  174. package/src/resources/extensions/gsd/prompts/replan-slice.md +3 -14
  175. package/src/resources/extensions/gsd/prompts/validate-milestone.md +7 -37
  176. package/src/resources/extensions/gsd/provider-error-pause.ts +9 -0
  177. package/src/resources/extensions/gsd/state.ts +19 -1
  178. package/src/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +99 -99
  179. package/src/resources/extensions/gsd/tests/auto-lock-creation.test.ts +14 -16
  180. package/src/resources/extensions/gsd/tests/auto-paused-session-validation.test.ts +43 -57
  181. package/src/resources/extensions/gsd/tests/auto-pr-bugs.test.ts +88 -0
  182. package/src/resources/extensions/gsd/tests/auto-preflight.test.ts +11 -13
  183. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +465 -523
  184. package/src/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +73 -75
  185. package/src/resources/extensions/gsd/tests/auto-start-needs-discussion.test.ts +34 -56
  186. package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +533 -656
  187. package/src/resources/extensions/gsd/tests/auto-worktree.test.ts +165 -143
  188. package/src/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +29 -52
  189. package/src/resources/extensions/gsd/tests/captures.test.ts +148 -176
  190. package/src/resources/extensions/gsd/tests/claude-import-tui.test.ts +32 -33
  191. package/src/resources/extensions/gsd/tests/collect-from-manifest.test.ts +141 -143
  192. package/src/resources/extensions/gsd/tests/commands-inspect-open-db.test.ts +25 -25
  193. package/src/resources/extensions/gsd/tests/commands-logs.test.ts +81 -81
  194. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +38 -59
  195. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +228 -263
  196. package/src/resources/extensions/gsd/tests/complete-task.test.ts +250 -302
  197. package/src/resources/extensions/gsd/tests/completed-units-metrics-sync.test.ts +114 -0
  198. package/src/resources/extensions/gsd/tests/context-store.test.ts +354 -367
  199. package/src/resources/extensions/gsd/tests/continue-here.test.ts +68 -72
  200. package/src/resources/extensions/gsd/tests/cost-projection.test.ts +92 -106
  201. package/src/resources/extensions/gsd/tests/crash-recovery.test.ts +27 -35
  202. package/src/resources/extensions/gsd/tests/dashboard-budget.test.ts +220 -237
  203. package/src/resources/extensions/gsd/tests/db-writer.test.ts +465 -416
  204. package/src/resources/extensions/gsd/tests/definition-loader.test.ts +76 -92
  205. package/src/resources/extensions/gsd/tests/derive-state-crossval.test.ts +68 -83
  206. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +210 -181
  207. package/src/resources/extensions/gsd/tests/derive-state-deps.test.ts +78 -101
  208. package/src/resources/extensions/gsd/tests/derive-state.test.ts +192 -227
  209. package/src/resources/extensions/gsd/tests/detection.test.ts +232 -278
  210. package/src/resources/extensions/gsd/tests/dev-engine-wrapper.test.ts +30 -34
  211. package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +164 -180
  212. package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +43 -49
  213. package/src/resources/extensions/gsd/tests/dispatch-uat-last-completed.test.ts +28 -32
  214. package/src/resources/extensions/gsd/tests/doctor-completion-deferral.test.ts +27 -29
  215. package/src/resources/extensions/gsd/tests/doctor-delimiter-fix.test.ts +34 -38
  216. package/src/resources/extensions/gsd/tests/doctor-enhancements.test.ts +54 -75
  217. package/src/resources/extensions/gsd/tests/doctor-environment-worktree.test.ts +21 -32
  218. package/src/resources/extensions/gsd/tests/doctor-environment.test.ts +72 -97
  219. package/src/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +38 -44
  220. package/src/resources/extensions/gsd/tests/doctor-git.test.ts +104 -145
  221. package/src/resources/extensions/gsd/tests/doctor-proactive.test.ts +84 -106
  222. package/src/resources/extensions/gsd/tests/doctor-roadmap-summary-atomicity.test.ts +54 -60
  223. package/src/resources/extensions/gsd/tests/doctor-runtime.test.ts +72 -93
  224. package/src/resources/extensions/gsd/tests/doctor.test.ts +104 -134
  225. package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +123 -131
  226. package/src/resources/extensions/gsd/tests/est-annotation-timeout.test.ts +120 -0
  227. package/src/resources/extensions/gsd/tests/exit-command.test.ts +20 -24
  228. package/src/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +48 -57
  229. package/src/resources/extensions/gsd/tests/files-loadfile-eisdir.test.ts +5 -7
  230. package/src/resources/extensions/gsd/tests/flag-file-db.test.ts +30 -42
  231. package/src/resources/extensions/gsd/tests/freeform-decisions.test.ts +198 -206
  232. package/src/resources/extensions/gsd/tests/git-locale.test.ts +13 -27
  233. package/src/resources/extensions/gsd/tests/git-service.test.ts +285 -388
  234. package/src/resources/extensions/gsd/tests/gitignore-tracked-gsd.test.ts +31 -39
  235. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +63 -69
  236. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +255 -264
  237. package/src/resources/extensions/gsd/tests/gsd-inspect.test.ts +108 -119
  238. package/src/resources/extensions/gsd/tests/gsd-recover.test.ts +81 -103
  239. package/src/resources/extensions/gsd/tests/gsd-tools.test.ts +229 -262
  240. package/src/resources/extensions/gsd/tests/headless-answers.test.ts +13 -13
  241. package/src/resources/extensions/gsd/tests/health-widget.test.ts +29 -37
  242. package/src/resources/extensions/gsd/tests/idle-recovery.test.ts +81 -102
  243. package/src/resources/extensions/gsd/tests/infra-error.test.ts +20 -2
  244. package/src/resources/extensions/gsd/tests/init-wizard.test.ts +16 -18
  245. package/src/resources/extensions/gsd/tests/integration-edge.test.ts +41 -46
  246. package/src/resources/extensions/gsd/tests/integration-lifecycle.test.ts +42 -53
  247. package/src/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +75 -91
  248. package/src/resources/extensions/gsd/tests/integration-proof.test.ts +18 -18
  249. package/src/resources/extensions/gsd/tests/knowledge.test.ts +89 -0
  250. package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +150 -194
  251. package/src/resources/extensions/gsd/tests/mcp-status.test.ts +103 -0
  252. package/src/resources/extensions/gsd/tests/md-importer.test.ts +101 -125
  253. package/src/resources/extensions/gsd/tests/memory-extractor.test.ts +45 -54
  254. package/src/resources/extensions/gsd/tests/memory-store.test.ts +80 -93
  255. package/src/resources/extensions/gsd/tests/merge-conflict-stops-loop.test.ts +66 -0
  256. package/src/resources/extensions/gsd/tests/migrate-command.test.ts +57 -66
  257. package/src/resources/extensions/gsd/tests/migrate-hierarchy.test.ts +83 -93
  258. package/src/resources/extensions/gsd/tests/migrate-parser.test.ts +161 -170
  259. package/src/resources/extensions/gsd/tests/migrate-transformer.test.ts +125 -141
  260. package/src/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +107 -131
  261. package/src/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +87 -96
  262. package/src/resources/extensions/gsd/tests/migrate-writer.test.ts +125 -164
  263. package/src/resources/extensions/gsd/tests/must-have-parser.test.ts +81 -94
  264. package/src/resources/extensions/gsd/tests/none-mode-gates.test.ts +35 -36
  265. package/src/resources/extensions/gsd/tests/overrides.test.ts +99 -106
  266. package/src/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +40 -47
  267. package/src/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +25 -28
  268. package/src/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +66 -83
  269. package/src/resources/extensions/gsd/tests/park-edge-cases.test.ts +54 -77
  270. package/src/resources/extensions/gsd/tests/park-milestone.test.ts +68 -115
  271. package/src/resources/extensions/gsd/tests/parsers.test.ts +546 -611
  272. package/src/resources/extensions/gsd/tests/paths.test.ts +72 -87
  273. package/src/resources/extensions/gsd/tests/post-unit-hooks.test.ts +77 -117
  274. package/src/resources/extensions/gsd/tests/preferences.test.ts +27 -0
  275. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +11 -7
  276. package/src/resources/extensions/gsd/tests/prompt-db.test.ts +56 -56
  277. package/src/resources/extensions/gsd/tests/queue-draft-detection.test.ts +93 -119
  278. package/src/resources/extensions/gsd/tests/queue-order.test.ts +70 -82
  279. package/src/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +42 -55
  280. package/src/resources/extensions/gsd/tests/quick-auto-guard.test.ts +100 -0
  281. package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +45 -73
  282. package/src/resources/extensions/gsd/tests/reassess-prompt.test.ts +28 -38
  283. package/src/resources/extensions/gsd/tests/replan-slice.test.ts +73 -80
  284. package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +71 -74
  285. package/src/resources/extensions/gsd/tests/requirements.test.ts +70 -75
  286. package/src/resources/extensions/gsd/tests/retry-state-reset.test.ts +44 -66
  287. package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +114 -181
  288. package/src/resources/extensions/gsd/tests/rule-registry.test.ts +63 -65
  289. package/src/resources/extensions/gsd/tests/run-uat.test.ts +66 -128
  290. package/src/resources/extensions/gsd/tests/session-lock-multipath.test.ts +18 -25
  291. package/src/resources/extensions/gsd/tests/session-lock-regression.test.ts +37 -44
  292. package/src/resources/extensions/gsd/tests/shared-wal.test.ts +19 -26
  293. package/src/resources/extensions/gsd/tests/sqlite-unavailable-gate.test.ts +63 -0
  294. package/src/resources/extensions/gsd/tests/stalled-tool-recovery.test.ts +6 -8
  295. package/src/resources/extensions/gsd/tests/stop-auto-merge-back.test.ts +67 -0
  296. package/src/resources/extensions/gsd/tests/symlink-numbered-variants.test.ts +22 -28
  297. package/src/resources/extensions/gsd/tests/terminated-transient.test.ts +49 -0
  298. package/src/resources/extensions/gsd/tests/token-savings.test.ts +54 -56
  299. package/src/resources/extensions/gsd/tests/tool-call-loop-guard.test.ts +23 -25
  300. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +10 -11
  301. package/src/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +66 -82
  302. package/src/resources/extensions/gsd/tests/unit-runtime.test.ts +46 -47
  303. package/src/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +20 -22
  304. package/src/resources/extensions/gsd/tests/visualizer-data.test.ts +84 -86
  305. package/src/resources/extensions/gsd/tests/visualizer-overlay.test.ts +41 -43
  306. package/src/resources/extensions/gsd/tests/visualizer-views.test.ts +94 -96
  307. package/src/resources/extensions/gsd/tests/windows-path-normalization.test.ts +11 -13
  308. package/src/resources/extensions/gsd/tests/worker-registry.test.ts +27 -29
  309. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +50 -52
  310. package/src/resources/extensions/gsd/tests/worktree-bugfix.test.ts +10 -13
  311. package/src/resources/extensions/gsd/tests/worktree-db-integration.test.ts +14 -18
  312. package/src/resources/extensions/gsd/tests/worktree-db.test.ts +38 -39
  313. package/src/resources/extensions/gsd/tests/worktree-e2e.test.ts +17 -21
  314. package/src/resources/extensions/gsd/tests/worktree-health.test.ts +25 -30
  315. package/src/resources/extensions/gsd/tests/worktree-integration.test.ts +30 -37
  316. package/src/resources/extensions/gsd/tests/worktree-symlink-removal.test.ts +15 -22
  317. package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +59 -66
  318. package/src/resources/extensions/gsd/tests/worktree.test.ts +44 -50
  319. package/src/resources/extensions/gsd/tools/plan-slice.ts +2 -0
  320. package/src/resources/extensions/gsd/tools/plan-task.ts +2 -0
  321. package/src/resources/extensions/gsd/tools/replan-slice.ts +3 -0
  322. package/src/resources/extensions/gsd/tools/validate-milestone.ts +127 -0
  323. package/src/resources/extensions/gsd/worktree-resolver.ts +7 -0
  324. package/src/resources/extensions/mcp-client/index.ts +20 -0
  325. /package/dist/web/standalone/.next/static/{fOnWQBjWXMKUs4bqTg530 → kxxAA66bah_yhPYqLBHE2}/_buildManifest.js +0 -0
  326. /package/dist/web/standalone/.next/static/{fOnWQBjWXMKUs4bqTg530 → kxxAA66bah_yhPYqLBHE2}/_ssgManifest.js +0 -0
@@ -4,10 +4,10 @@
4
4
  import { readFileSync } from "node:fs";
5
5
  import { join, dirname } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
- import { createTestContext } from "./test-helpers.ts";
7
+ import { test } from 'node:test';
8
+ import assert from 'node:assert/strict';
8
9
 
9
10
  const __dirname = dirname(fileURLToPath(import.meta.url));
10
- const { assertTrue, report } = createTestContext();
11
11
 
12
12
  const dataPath = join(__dirname, "..", "visualizer-data.ts");
13
13
  const dataSrc = readFileSync(dataPath, "utf-8");
@@ -15,293 +15,293 @@ const dataSrc = readFileSync(dataPath, "utf-8");
15
15
  console.log("\n=== visualizer-data.ts source contracts ===");
16
16
 
17
17
  // Interface exports
18
- assertTrue(
18
+ assert.ok(
19
19
  dataSrc.includes("export interface VisualizerData"),
20
20
  "exports VisualizerData interface",
21
21
  );
22
22
 
23
- assertTrue(
23
+ assert.ok(
24
24
  dataSrc.includes("export interface VisualizerMilestone"),
25
25
  "exports VisualizerMilestone interface",
26
26
  );
27
27
 
28
- assertTrue(
28
+ assert.ok(
29
29
  dataSrc.includes("export interface VisualizerSlice"),
30
30
  "exports VisualizerSlice interface",
31
31
  );
32
32
 
33
- assertTrue(
33
+ assert.ok(
34
34
  dataSrc.includes("export interface VisualizerTask"),
35
35
  "exports VisualizerTask interface",
36
36
  );
37
37
 
38
38
  // New interfaces
39
- assertTrue(
39
+ assert.ok(
40
40
  dataSrc.includes("export interface CriticalPathInfo"),
41
41
  "exports CriticalPathInfo interface",
42
42
  );
43
43
 
44
- assertTrue(
44
+ assert.ok(
45
45
  dataSrc.includes("export interface AgentActivityInfo"),
46
46
  "exports AgentActivityInfo interface",
47
47
  );
48
48
 
49
- assertTrue(
49
+ assert.ok(
50
50
  dataSrc.includes("export interface ChangelogEntry"),
51
51
  "exports ChangelogEntry interface",
52
52
  );
53
53
 
54
- assertTrue(
54
+ assert.ok(
55
55
  dataSrc.includes("export interface ChangelogInfo"),
56
56
  "exports ChangelogInfo interface",
57
57
  );
58
58
 
59
- assertTrue(
59
+ assert.ok(
60
60
  dataSrc.includes("export interface SliceVerification"),
61
61
  "exports SliceVerification interface",
62
62
  );
63
63
 
64
- assertTrue(
64
+ assert.ok(
65
65
  dataSrc.includes("export interface KnowledgeInfo"),
66
66
  "exports KnowledgeInfo interface",
67
67
  );
68
68
 
69
- assertTrue(
69
+ assert.ok(
70
70
  dataSrc.includes("export interface CapturesInfo"),
71
71
  "exports CapturesInfo interface",
72
72
  );
73
73
 
74
- assertTrue(
74
+ assert.ok(
75
75
  dataSrc.includes("export interface HealthInfo"),
76
76
  "exports HealthInfo interface",
77
77
  );
78
78
 
79
- assertTrue(
79
+ assert.ok(
80
80
  dataSrc.includes("export interface VisualizerDiscussionState"),
81
81
  "exports VisualizerDiscussionState interface",
82
82
  );
83
83
 
84
- assertTrue(
84
+ assert.ok(
85
85
  dataSrc.includes("export type DiscussionState"),
86
86
  "exports DiscussionState type",
87
87
  );
88
88
 
89
- assertTrue(
89
+ assert.ok(
90
90
  dataSrc.includes("export interface VisualizerSliceRef"),
91
91
  "exports VisualizerSliceRef interface",
92
92
  );
93
93
 
94
- assertTrue(
94
+ assert.ok(
95
95
  dataSrc.includes("export interface VisualizerSliceActivity"),
96
96
  "exports VisualizerSliceActivity interface",
97
97
  );
98
98
 
99
- assertTrue(
99
+ assert.ok(
100
100
  dataSrc.includes("export interface VisualizerStats"),
101
101
  "exports VisualizerStats interface",
102
102
  );
103
103
 
104
104
  // Function export
105
- assertTrue(
105
+ assert.ok(
106
106
  dataSrc.includes("export async function loadVisualizerData"),
107
107
  "exports loadVisualizerData function",
108
108
  );
109
109
 
110
- assertTrue(
110
+ assert.ok(
111
111
  dataSrc.includes("export function computeCriticalPath"),
112
112
  "exports computeCriticalPath function",
113
113
  );
114
114
 
115
115
  // Data source usage
116
- assertTrue(
116
+ assert.ok(
117
117
  dataSrc.includes("deriveState"),
118
118
  "uses deriveState for state derivation",
119
119
  );
120
120
 
121
- assertTrue(
121
+ assert.ok(
122
122
  dataSrc.includes("findMilestoneIds"),
123
123
  "uses findMilestoneIds to enumerate milestones",
124
124
  );
125
125
 
126
- assertTrue(
126
+ assert.ok(
127
127
  dataSrc.includes("parseRoadmap"),
128
128
  "uses parseRoadmap for roadmap parsing",
129
129
  );
130
130
 
131
- assertTrue(
131
+ assert.ok(
132
132
  dataSrc.includes("parsePlan"),
133
133
  "uses parsePlan for plan parsing",
134
134
  );
135
135
 
136
- assertTrue(
136
+ assert.ok(
137
137
  dataSrc.includes("parseSummary"),
138
138
  "uses parseSummary for changelog parsing",
139
139
  );
140
140
 
141
- assertTrue(
141
+ assert.ok(
142
142
  dataSrc.includes("getLedger"),
143
143
  "uses getLedger for in-memory metrics",
144
144
  );
145
145
 
146
- assertTrue(
146
+ assert.ok(
147
147
  dataSrc.includes("loadLedgerFromDisk"),
148
148
  "uses loadLedgerFromDisk as fallback",
149
149
  );
150
150
 
151
- assertTrue(
151
+ assert.ok(
152
152
  dataSrc.includes("getProjectTotals"),
153
153
  "uses getProjectTotals for aggregation",
154
154
  );
155
155
 
156
- assertTrue(
156
+ assert.ok(
157
157
  dataSrc.includes("aggregateByPhase"),
158
158
  "uses aggregateByPhase",
159
159
  );
160
160
 
161
- assertTrue(
161
+ assert.ok(
162
162
  dataSrc.includes("aggregateBySlice"),
163
163
  "uses aggregateBySlice",
164
164
  );
165
165
 
166
- assertTrue(
166
+ assert.ok(
167
167
  dataSrc.includes("aggregateByModel"),
168
168
  "uses aggregateByModel",
169
169
  );
170
170
 
171
- assertTrue(
171
+ assert.ok(
172
172
  dataSrc.includes("aggregateByTier"),
173
173
  "uses aggregateByTier",
174
174
  );
175
175
 
176
- assertTrue(
176
+ assert.ok(
177
177
  dataSrc.includes("formatTierSavings"),
178
178
  "uses formatTierSavings",
179
179
  );
180
180
 
181
- assertTrue(
181
+ assert.ok(
182
182
  dataSrc.includes("loadAllCaptures"),
183
183
  "uses loadAllCaptures",
184
184
  );
185
185
 
186
- assertTrue(
186
+ assert.ok(
187
187
  dataSrc.includes("countPendingCaptures"),
188
188
  "uses countPendingCaptures",
189
189
  );
190
190
 
191
- assertTrue(
191
+ assert.ok(
192
192
  dataSrc.includes("loadEffectiveGSDPreferences"),
193
193
  "uses loadEffectiveGSDPreferences",
194
194
  );
195
195
 
196
- assertTrue(
196
+ assert.ok(
197
197
  dataSrc.includes("resolveGsdRootFile"),
198
198
  "uses resolveGsdRootFile for KNOWLEDGE path",
199
199
  );
200
200
 
201
201
  // Interface fields
202
- assertTrue(
202
+ assert.ok(
203
203
  dataSrc.includes("dependsOn: string[]"),
204
204
  "VisualizerMilestone has dependsOn field",
205
205
  );
206
206
 
207
- assertTrue(
207
+ assert.ok(
208
208
  dataSrc.includes("depends: string[]"),
209
209
  "VisualizerSlice has depends field",
210
210
  );
211
211
 
212
- assertTrue(
212
+ assert.ok(
213
213
  dataSrc.includes("totals: ProjectTotals | null"),
214
214
  "VisualizerData has nullable totals",
215
215
  );
216
216
 
217
- assertTrue(
217
+ assert.ok(
218
218
  dataSrc.includes("units: UnitMetrics[]"),
219
219
  "VisualizerData has units array",
220
220
  );
221
221
 
222
- assertTrue(
222
+ assert.ok(
223
223
  dataSrc.includes("estimate?: string"),
224
224
  "VisualizerTask has optional estimate field",
225
225
  );
226
226
 
227
227
  // New data model fields
228
- assertTrue(
228
+ assert.ok(
229
229
  dataSrc.includes("criticalPath: CriticalPathInfo"),
230
230
  "VisualizerData has criticalPath field",
231
231
  );
232
232
 
233
- assertTrue(
233
+ assert.ok(
234
234
  dataSrc.includes("remainingSliceCount: number"),
235
235
  "VisualizerData has remainingSliceCount field",
236
236
  );
237
237
 
238
- assertTrue(
238
+ assert.ok(
239
239
  dataSrc.includes("agentActivity: AgentActivityInfo | null"),
240
240
  "VisualizerData has agentActivity field",
241
241
  );
242
242
 
243
- assertTrue(
243
+ assert.ok(
244
244
  dataSrc.includes("changelog: ChangelogInfo"),
245
245
  "VisualizerData has changelog field",
246
246
  );
247
247
 
248
- assertTrue(
248
+ assert.ok(
249
249
  dataSrc.includes("sliceVerifications: SliceVerification[]"),
250
250
  "VisualizerData has sliceVerifications field",
251
251
  );
252
252
 
253
- assertTrue(
253
+ assert.ok(
254
254
  dataSrc.includes("knowledge: KnowledgeInfo"),
255
255
  "VisualizerData has knowledge field",
256
256
  );
257
257
 
258
- assertTrue(
258
+ assert.ok(
259
259
  dataSrc.includes("captures: CapturesInfo"),
260
260
  "VisualizerData has captures field",
261
261
  );
262
262
 
263
- assertTrue(
263
+ assert.ok(
264
264
  dataSrc.includes("health: HealthInfo"),
265
265
  "VisualizerData has health field",
266
266
  );
267
267
 
268
- assertTrue(
268
+ assert.ok(
269
269
  dataSrc.includes("stats: VisualizerStats"),
270
270
  "VisualizerData has stats field",
271
271
  );
272
272
 
273
- assertTrue(
273
+ assert.ok(
274
274
  dataSrc.includes("discussion: VisualizerDiscussionState[]"),
275
275
  "VisualizerData has discussion field",
276
276
  );
277
277
 
278
- assertTrue(
278
+ assert.ok(
279
279
  dataSrc.includes("loadDiscussionState"),
280
280
  "uses loadDiscussionState helper",
281
281
  );
282
282
 
283
- assertTrue(
283
+ assert.ok(
284
284
  dataSrc.includes("buildVisualizerStats"),
285
285
  "uses buildVisualizerStats helper",
286
286
  );
287
287
 
288
- assertTrue(
288
+ assert.ok(
289
289
  dataSrc.includes("byTier: TierAggregate[]"),
290
290
  "VisualizerData has byTier field",
291
291
  );
292
292
 
293
- assertTrue(
293
+ assert.ok(
294
294
  dataSrc.includes("tierSavingsLine: string"),
295
295
  "VisualizerData has tierSavingsLine field",
296
296
  );
297
297
 
298
298
  // completedAt must be coerced to String() to handle YAML Date objects (issue #644)
299
- assertTrue(
299
+ assert.ok(
300
300
  dataSrc.includes("String(summary.frontmatter.completed_at"),
301
301
  "completedAt assignment coerces to String() for YAML Date safety",
302
302
  );
303
303
 
304
- assertTrue(
304
+ assert.ok(
305
305
  dataSrc.includes("String(b.completedAt") && dataSrc.includes("String(a.completedAt"),
306
306
  "changelog sort coerces completedAt to String() for YAML Date safety",
307
307
  );
@@ -312,112 +312,112 @@ const overlaySrc = readFileSync(overlayPath, "utf-8");
312
312
 
313
313
  console.log("\n=== visualizer-overlay.ts source contracts ===");
314
314
 
315
- assertTrue(
315
+ assert.ok(
316
316
  overlaySrc.includes("export class GSDVisualizerOverlay"),
317
317
  "exports GSDVisualizerOverlay class",
318
318
  );
319
319
 
320
- assertTrue(
320
+ assert.ok(
321
321
  overlaySrc.includes("loadVisualizerData"),
322
322
  "overlay uses loadVisualizerData",
323
323
  );
324
324
 
325
- assertTrue(
325
+ assert.ok(
326
326
  overlaySrc.includes("renderProgressView"),
327
327
  "overlay delegates to renderProgressView",
328
328
  );
329
329
 
330
- assertTrue(
330
+ assert.ok(
331
331
  overlaySrc.includes("renderDepsView"),
332
332
  "overlay delegates to renderDepsView",
333
333
  );
334
334
 
335
- assertTrue(
335
+ assert.ok(
336
336
  overlaySrc.includes("renderMetricsView"),
337
337
  "overlay delegates to renderMetricsView",
338
338
  );
339
339
 
340
- assertTrue(
340
+ assert.ok(
341
341
  overlaySrc.includes("renderTimelineView"),
342
342
  "overlay delegates to renderTimelineView",
343
343
  );
344
344
 
345
- assertTrue(
345
+ assert.ok(
346
346
  overlaySrc.includes("renderAgentView"),
347
347
  "overlay delegates to renderAgentView",
348
348
  );
349
349
 
350
- assertTrue(
350
+ assert.ok(
351
351
  overlaySrc.includes("renderChangelogView"),
352
352
  "overlay delegates to renderChangelogView",
353
353
  );
354
354
 
355
- assertTrue(
355
+ assert.ok(
356
356
  overlaySrc.includes("renderExportView"),
357
357
  "overlay delegates to renderExportView",
358
358
  );
359
359
 
360
- assertTrue(
360
+ assert.ok(
361
361
  overlaySrc.includes("renderKnowledgeView"),
362
362
  "overlay delegates to renderKnowledgeView",
363
363
  );
364
364
 
365
- assertTrue(
365
+ assert.ok(
366
366
  overlaySrc.includes("renderCapturesView"),
367
367
  "overlay delegates to renderCapturesView",
368
368
  );
369
369
 
370
- assertTrue(
370
+ assert.ok(
371
371
  overlaySrc.includes("renderHealthView"),
372
372
  "overlay delegates to renderHealthView",
373
373
  );
374
374
 
375
- assertTrue(
375
+ assert.ok(
376
376
  overlaySrc.includes("handleInput"),
377
377
  "overlay has handleInput method",
378
378
  );
379
379
 
380
- assertTrue(
380
+ assert.ok(
381
381
  overlaySrc.includes("dispose"),
382
382
  "overlay has dispose method",
383
383
  );
384
384
 
385
- assertTrue(
385
+ assert.ok(
386
386
  overlaySrc.includes("wrapInBox"),
387
387
  "overlay has wrapInBox helper",
388
388
  );
389
389
 
390
- assertTrue(
390
+ assert.ok(
391
391
  overlaySrc.includes("activeTab"),
392
392
  "overlay tracks active tab",
393
393
  );
394
394
 
395
- assertTrue(
395
+ assert.ok(
396
396
  overlaySrc.includes("scrollOffsets"),
397
397
  "overlay tracks per-tab scroll offsets",
398
398
  );
399
399
 
400
- assertTrue(
400
+ assert.ok(
401
401
  overlaySrc.includes("filterMode"),
402
402
  "overlay has filterMode state",
403
403
  );
404
404
 
405
- assertTrue(
405
+ assert.ok(
406
406
  overlaySrc.includes("filterText"),
407
407
  "overlay has filterText state",
408
408
  );
409
409
 
410
- assertTrue(
410
+ assert.ok(
411
411
  overlaySrc.includes("filterField"),
412
412
  "overlay has filterField state",
413
413
  );
414
414
 
415
- assertTrue(
415
+ assert.ok(
416
416
  overlaySrc.includes("TAB_COUNT"),
417
417
  "overlay defines TAB_COUNT",
418
418
  );
419
419
 
420
- assertTrue(
420
+ assert.ok(
421
421
  overlaySrc.includes("0 Export"),
422
422
  "overlay has 10 tab labels",
423
423
  );
@@ -428,19 +428,17 @@ const coreHandlerSrc = readFileSync(coreHandlerPath, "utf-8");
428
428
 
429
429
  console.log("\n=== commands/handlers/core.ts integration ===");
430
430
 
431
- assertTrue(
431
+ assert.ok(
432
432
  coreHandlerSrc.includes('"visualize"'),
433
433
  "core.ts has visualize in subcommands array",
434
434
  );
435
435
 
436
- assertTrue(
436
+ assert.ok(
437
437
  coreHandlerSrc.includes("GSDVisualizerOverlay"),
438
438
  "core.ts imports GSDVisualizerOverlay",
439
439
  );
440
440
 
441
- assertTrue(
441
+ assert.ok(
442
442
  coreHandlerSrc.includes("handleVisualize"),
443
443
  "core.ts has handleVisualize handler",
444
444
  );
445
-
446
- report();