@therocketcode/gsd-core 1.4.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 (568) hide show
  1. package/.claude-plugin/plugin.json +23 -0
  2. package/GEMINI.md +53 -0
  3. package/LICENSE +21 -0
  4. package/README.ja-JP.md +125 -0
  5. package/README.ko-KR.md +125 -0
  6. package/README.md +144 -0
  7. package/README.pt-BR.md +125 -0
  8. package/README.zh-CN.md +125 -0
  9. package/agents/gsd-advisor-researcher.md +108 -0
  10. package/agents/gsd-ai-researcher.md +114 -0
  11. package/agents/gsd-assumptions-analyzer.md +105 -0
  12. package/agents/gsd-code-fixer.md +668 -0
  13. package/agents/gsd-code-reviewer.md +387 -0
  14. package/agents/gsd-codebase-mapper.md +853 -0
  15. package/agents/gsd-debug-session-manager.md +314 -0
  16. package/agents/gsd-debugger.md +1452 -0
  17. package/agents/gsd-doc-classifier.md +168 -0
  18. package/agents/gsd-doc-synthesizer.md +204 -0
  19. package/agents/gsd-doc-verifier.md +217 -0
  20. package/agents/gsd-doc-writer.md +616 -0
  21. package/agents/gsd-domain-researcher.md +147 -0
  22. package/agents/gsd-eval-auditor.md +191 -0
  23. package/agents/gsd-eval-planner.md +154 -0
  24. package/agents/gsd-executor.md +785 -0
  25. package/agents/gsd-framework-selector.md +160 -0
  26. package/agents/gsd-integration-checker.md +470 -0
  27. package/agents/gsd-intel-updater.md +342 -0
  28. package/agents/gsd-nyquist-auditor.md +203 -0
  29. package/agents/gsd-pattern-mapper.md +335 -0
  30. package/agents/gsd-phase-researcher.md +867 -0
  31. package/agents/gsd-plan-checker.md +978 -0
  32. package/agents/gsd-planner.md +1204 -0
  33. package/agents/gsd-project-researcher.md +611 -0
  34. package/agents/gsd-research-synthesizer.md +259 -0
  35. package/agents/gsd-roadmapper.md +688 -0
  36. package/agents/gsd-security-auditor.md +155 -0
  37. package/agents/gsd-ui-auditor.md +495 -0
  38. package/agents/gsd-ui-checker.md +309 -0
  39. package/agents/gsd-ui-researcher.md +374 -0
  40. package/agents/gsd-user-profiler.md +171 -0
  41. package/agents/gsd-verifier.md +923 -0
  42. package/assets/gsd-logo-2000-transparent.png +0 -0
  43. package/assets/gsd-logo-2000-transparent.svg +17 -0
  44. package/assets/gsd-logo-2000.png +0 -0
  45. package/assets/gsd-logo-2000.svg +21 -0
  46. package/assets/terminal.svg +68 -0
  47. package/bin/install.js +12726 -0
  48. package/bin/lib/ui-safety-gate.cjs +107 -0
  49. package/commands/gsd/add-tests.md +42 -0
  50. package/commands/gsd/ai-integration-phase.md +37 -0
  51. package/commands/gsd/audit-fix.md +34 -0
  52. package/commands/gsd/audit-milestone.md +37 -0
  53. package/commands/gsd/audit-uat.md +24 -0
  54. package/commands/gsd/autonomous.md +48 -0
  55. package/commands/gsd/capture.md +62 -0
  56. package/commands/gsd/cleanup.md +24 -0
  57. package/commands/gsd/code-review.md +59 -0
  58. package/commands/gsd/complete-milestone.md +143 -0
  59. package/commands/gsd/config.md +56 -0
  60. package/commands/gsd/debug.md +52 -0
  61. package/commands/gsd/discover-product.md +65 -0
  62. package/commands/gsd/discuss-phase.md +77 -0
  63. package/commands/gsd/docs-update.md +49 -0
  64. package/commands/gsd/eval-review.md +33 -0
  65. package/commands/gsd/execute-phase.md +66 -0
  66. package/commands/gsd/explore.md +27 -0
  67. package/commands/gsd/extract-learnings.md +23 -0
  68. package/commands/gsd/fast.md +31 -0
  69. package/commands/gsd/forensics.md +57 -0
  70. package/commands/gsd/graphify.md +204 -0
  71. package/commands/gsd/health.md +31 -0
  72. package/commands/gsd/help.md +28 -0
  73. package/commands/gsd/import.md +45 -0
  74. package/commands/gsd/inbox.md +39 -0
  75. package/commands/gsd/ingest-docs.md +42 -0
  76. package/commands/gsd/manager.md +45 -0
  77. package/commands/gsd/map-codebase.md +83 -0
  78. package/commands/gsd/milestone-summary.md +51 -0
  79. package/commands/gsd/model-domain.md +65 -0
  80. package/commands/gsd/mvp-phase.md +45 -0
  81. package/commands/gsd/new-milestone.md +45 -0
  82. package/commands/gsd/new-project.md +47 -0
  83. package/commands/gsd/ns-context.md +23 -0
  84. package/commands/gsd/ns-ideate.md +24 -0
  85. package/commands/gsd/ns-manage.md +29 -0
  86. package/commands/gsd/ns-project.md +22 -0
  87. package/commands/gsd/ns-review.md +26 -0
  88. package/commands/gsd/ns-workflow.md +28 -0
  89. package/commands/gsd/pause-work.md +43 -0
  90. package/commands/gsd/phase.md +56 -0
  91. package/commands/gsd/plan-phase.md +64 -0
  92. package/commands/gsd/plan-review-convergence.md +59 -0
  93. package/commands/gsd/pr-branch.md +26 -0
  94. package/commands/gsd/profile-user.md +46 -0
  95. package/commands/gsd/progress.md +48 -0
  96. package/commands/gsd/quick.md +174 -0
  97. package/commands/gsd/recommend-architecture.md +64 -0
  98. package/commands/gsd/resume-work.md +30 -0
  99. package/commands/gsd/review-backlog.md +63 -0
  100. package/commands/gsd/review.md +42 -0
  101. package/commands/gsd/secure-phase.md +36 -0
  102. package/commands/gsd/settings.md +29 -0
  103. package/commands/gsd/ship.md +24 -0
  104. package/commands/gsd/sketch.md +60 -0
  105. package/commands/gsd/spec-phase.md +63 -0
  106. package/commands/gsd/spike.md +57 -0
  107. package/commands/gsd/stats.md +20 -0
  108. package/commands/gsd/surface.md +155 -0
  109. package/commands/gsd/testing-strategy.md +65 -0
  110. package/commands/gsd/thread.md +24 -0
  111. package/commands/gsd/ui-phase.md +35 -0
  112. package/commands/gsd/ui-review.md +33 -0
  113. package/commands/gsd/ultraplan-phase.md +34 -0
  114. package/commands/gsd/undo.md +35 -0
  115. package/commands/gsd/update.md +49 -0
  116. package/commands/gsd/validate-phase.md +36 -0
  117. package/commands/gsd/verify-work.md +39 -0
  118. package/commands/gsd/workspace.md +52 -0
  119. package/commands/gsd/workstreams.md +70 -0
  120. package/gemini-extension.json +6 -0
  121. package/gsd-core/bin/check-latest-version.cjs +161 -0
  122. package/gsd-core/bin/gsd-tools.cjs +1928 -0
  123. package/gsd-core/bin/lib/active-workstream-store.cjs +291 -0
  124. package/gsd-core/bin/lib/adr-parser.cjs +399 -0
  125. package/gsd-core/bin/lib/agent-command-router.cjs +68 -0
  126. package/gsd-core/bin/lib/artifacts.cjs +51 -0
  127. package/gsd-core/bin/lib/audit.cjs +743 -0
  128. package/gsd-core/bin/lib/check-command-router.cjs +343 -0
  129. package/gsd-core/bin/lib/cjs-command-router-adapter.cjs +81 -0
  130. package/gsd-core/bin/lib/cli-exit.cjs +42 -0
  131. package/gsd-core/bin/lib/clock.cjs +95 -0
  132. package/gsd-core/bin/lib/clusters.cjs +132 -0
  133. package/gsd-core/bin/lib/code-review-flags.cjs +59 -0
  134. package/gsd-core/bin/lib/command-aliases.cjs +809 -0
  135. package/gsd-core/bin/lib/command-arg-projection.cjs +55 -0
  136. package/gsd-core/bin/lib/command-routing-hub.cjs +300 -0
  137. package/gsd-core/bin/lib/commands.cjs +1203 -0
  138. package/gsd-core/bin/lib/config-schema.cjs +29 -0
  139. package/gsd-core/bin/lib/config-types.cjs +19 -0
  140. package/gsd-core/bin/lib/config.cjs +738 -0
  141. package/gsd-core/bin/lib/configuration.cjs +239 -0
  142. package/gsd-core/bin/lib/context-utilization.cjs +48 -0
  143. package/gsd-core/bin/lib/core.cjs +2051 -0
  144. package/gsd-core/bin/lib/decisions.cjs +118 -0
  145. package/gsd-core/bin/lib/docs.cjs +252 -0
  146. package/gsd-core/bin/lib/drift.cjs +364 -0
  147. package/gsd-core/bin/lib/fallow-runner.cjs +115 -0
  148. package/gsd-core/bin/lib/frontmatter.cjs +442 -0
  149. package/gsd-core/bin/lib/gap-checker.cjs +257 -0
  150. package/gsd-core/bin/lib/graphify.cjs +496 -0
  151. package/gsd-core/bin/lib/gsd2-import.cjs +456 -0
  152. package/gsd-core/bin/lib/init-command-router.cjs +62 -0
  153. package/gsd-core/bin/lib/init.cjs +1815 -0
  154. package/gsd-core/bin/lib/install-profiles.cjs +584 -0
  155. package/gsd-core/bin/lib/installer-migration-authoring.cjs +122 -0
  156. package/gsd-core/bin/lib/installer-migration-report.cjs +350 -0
  157. package/gsd-core/bin/lib/installer-migrations/000-first-time-baseline.cjs +218 -0
  158. package/gsd-core/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +48 -0
  159. package/gsd-core/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +94 -0
  160. package/gsd-core/bin/lib/installer-migrations/003-rename-get-shit-done-to-gsd-core.cjs +108 -0
  161. package/gsd-core/bin/lib/installer-migrations.cjs +823 -0
  162. package/gsd-core/bin/lib/intel.cjs +590 -0
  163. package/gsd-core/bin/lib/learnings.cjs +270 -0
  164. package/gsd-core/bin/lib/legacy-cleanup.cjs +253 -0
  165. package/gsd-core/bin/lib/milestone.cjs +373 -0
  166. package/gsd-core/bin/lib/model-catalog.cjs +154 -0
  167. package/gsd-core/bin/lib/model-profiles.cjs +24 -0
  168. package/gsd-core/bin/lib/observability/event.cjs +51 -0
  169. package/gsd-core/bin/lib/observability/logger.cjs +146 -0
  170. package/gsd-core/bin/lib/observability/redaction.cjs +48 -0
  171. package/gsd-core/bin/lib/package-identity.cjs +35 -0
  172. package/gsd-core/bin/lib/package-legitimacy.cjs +368 -0
  173. package/gsd-core/bin/lib/phase-command-router.cjs +189 -0
  174. package/gsd-core/bin/lib/phase-lifecycle.cjs +74 -0
  175. package/gsd-core/bin/lib/phase.cjs +1307 -0
  176. package/gsd-core/bin/lib/phases-command-router.cjs +43 -0
  177. package/gsd-core/bin/lib/plan-scan.cjs +91 -0
  178. package/gsd-core/bin/lib/planning-workspace.cjs +245 -0
  179. package/gsd-core/bin/lib/profile-output.cjs +1120 -0
  180. package/gsd-core/bin/lib/profile-pipeline.cjs +517 -0
  181. package/gsd-core/bin/lib/project-root.cjs +119 -0
  182. package/gsd-core/bin/lib/prompt-budget.cjs +305 -0
  183. package/gsd-core/bin/lib/research-provider.cjs +137 -0
  184. package/gsd-core/bin/lib/research-store.cjs +167 -0
  185. package/gsd-core/bin/lib/review-reviewer-selection.cjs +121 -0
  186. package/gsd-core/bin/lib/roadmap-command-router.cjs +166 -0
  187. package/gsd-core/bin/lib/roadmap-upgrade.cjs +476 -0
  188. package/gsd-core/bin/lib/roadmap.cjs +600 -0
  189. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +312 -0
  190. package/gsd-core/bin/lib/runtime-config-adapter-registry.cjs +56 -0
  191. package/gsd-core/bin/lib/runtime-homes.cjs +190 -0
  192. package/gsd-core/bin/lib/runtime-name-policy.cjs +96 -0
  193. package/gsd-core/bin/lib/runtime-slash.cjs +119 -0
  194. package/gsd-core/bin/lib/schema-detect.cjs +159 -0
  195. package/gsd-core/bin/lib/secrets.cjs +34 -0
  196. package/gsd-core/bin/lib/security.cjs +480 -0
  197. package/gsd-core/bin/lib/semver-compare.cjs +42 -0
  198. package/gsd-core/bin/lib/shell-command-projection.cjs +533 -0
  199. package/gsd-core/bin/lib/state-command-router.cjs +160 -0
  200. package/gsd-core/bin/lib/state-document.cjs +259 -0
  201. package/gsd-core/bin/lib/state.cjs +2010 -0
  202. package/gsd-core/bin/lib/surface.cjs +449 -0
  203. package/gsd-core/bin/lib/task-command-router.cjs +85 -0
  204. package/gsd-core/bin/lib/template.cjs +237 -0
  205. package/gsd-core/bin/lib/uat.cjs +297 -0
  206. package/gsd-core/bin/lib/ui-safety-gate.cjs +98 -0
  207. package/gsd-core/bin/lib/update-context.cjs +218 -0
  208. package/gsd-core/bin/lib/validate-command-router.cjs +91 -0
  209. package/gsd-core/bin/lib/validate.cjs +112 -0
  210. package/gsd-core/bin/lib/verification-command-router.cjs +31 -0
  211. package/gsd-core/bin/lib/verification.cjs +193 -0
  212. package/gsd-core/bin/lib/verify-command-router.cjs +44 -0
  213. package/gsd-core/bin/lib/verify.cjs +1451 -0
  214. package/gsd-core/bin/lib/workstream-inventory-builder.cjs +81 -0
  215. package/gsd-core/bin/lib/workstream-inventory.cjs +147 -0
  216. package/gsd-core/bin/lib/workstream-name-policy.cjs +91 -0
  217. package/gsd-core/bin/lib/workstream.cjs +380 -0
  218. package/gsd-core/bin/lib/worktree-base-ref.cjs +325 -0
  219. package/gsd-core/bin/lib/worktree-safety.cjs +943 -0
  220. package/gsd-core/bin/shared/config-defaults.manifest.json +98 -0
  221. package/gsd-core/bin/shared/config-schema.manifest.json +192 -0
  222. package/gsd-core/bin/shared/model-catalog.json +149 -0
  223. package/gsd-core/bin/shared/runtime-aliases.manifest.json +75 -0
  224. package/gsd-core/bin/verify-reapply-patches.cjs +349 -0
  225. package/gsd-core/contexts/dev.md +21 -0
  226. package/gsd-core/contexts/research.md +22 -0
  227. package/gsd-core/contexts/review.md +23 -0
  228. package/gsd-core/references/agent-contracts.md +79 -0
  229. package/gsd-core/references/ai-evals.md +156 -0
  230. package/gsd-core/references/ai-frameworks.md +186 -0
  231. package/gsd-core/references/architecture-decision.md +74 -0
  232. package/gsd-core/references/artifact-types.md +131 -0
  233. package/gsd-core/references/auth-in-tests.md +91 -0
  234. package/gsd-core/references/autonomous-smart-discuss.md +277 -0
  235. package/gsd-core/references/checkpoints.md +814 -0
  236. package/gsd-core/references/common-bug-patterns.md +114 -0
  237. package/gsd-core/references/context-budget.md +85 -0
  238. package/gsd-core/references/continuation-format.md +253 -0
  239. package/gsd-core/references/db-test-isolation.md +54 -0
  240. package/gsd-core/references/debugger-philosophy.md +76 -0
  241. package/gsd-core/references/decimal-phase-calculation.md +64 -0
  242. package/gsd-core/references/doc-conflict-engine.md +91 -0
  243. package/gsd-core/references/domain-modeling.md +80 -0
  244. package/gsd-core/references/domain-probes.md +125 -0
  245. package/gsd-core/references/e2e-tiering.md +35 -0
  246. package/gsd-core/references/execute-mvp-tdd.md +81 -0
  247. package/gsd-core/references/executor-examples.md +110 -0
  248. package/gsd-core/references/few-shot-examples/plan-checker.md +73 -0
  249. package/gsd-core/references/few-shot-examples/verifier.md +109 -0
  250. package/gsd-core/references/flaky-test-checklist.md +22 -0
  251. package/gsd-core/references/gate-prompts.md +100 -0
  252. package/gsd-core/references/gates.md +70 -0
  253. package/gsd-core/references/git-integration.md +298 -0
  254. package/gsd-core/references/git-planning-commit.md +40 -0
  255. package/gsd-core/references/ios-scaffold.md +123 -0
  256. package/gsd-core/references/mandatory-initial-read.md +2 -0
  257. package/gsd-core/references/model-profile-resolution.md +38 -0
  258. package/gsd-core/references/model-profiles.md +245 -0
  259. package/gsd-core/references/mvp-concepts.md +49 -0
  260. package/gsd-core/references/phase-argument-parsing.md +61 -0
  261. package/gsd-core/references/planner-antipatterns.md +89 -0
  262. package/gsd-core/references/planner-chunked.md +49 -0
  263. package/gsd-core/references/planner-gap-closure.md +62 -0
  264. package/gsd-core/references/planner-graphify-auto-update.md +67 -0
  265. package/gsd-core/references/planner-human-verify-mode.md +57 -0
  266. package/gsd-core/references/planner-interface-context.md +62 -0
  267. package/gsd-core/references/planner-load-graph-context.md +36 -0
  268. package/gsd-core/references/planner-mvp-mode.md +53 -0
  269. package/gsd-core/references/planner-reviews.md +39 -0
  270. package/gsd-core/references/planner-revision.md +87 -0
  271. package/gsd-core/references/planner-source-audit.md +73 -0
  272. package/gsd-core/references/planning-config.md +473 -0
  273. package/gsd-core/references/product-discovery.md +49 -0
  274. package/gsd-core/references/project-skills-discovery.md +19 -0
  275. package/gsd-core/references/questioning.md +162 -0
  276. package/gsd-core/references/realistic-test-data.md +44 -0
  277. package/gsd-core/references/research-documentation-lookup.md +29 -0
  278. package/gsd-core/references/research-philosophy.md +29 -0
  279. package/gsd-core/references/research-verification-protocol.md +27 -0
  280. package/gsd-core/references/revision-loop.md +97 -0
  281. package/gsd-core/references/scout-codebase.md +51 -0
  282. package/gsd-core/references/skeleton-template.md +48 -0
  283. package/gsd-core/references/sketch-interactivity.md +41 -0
  284. package/gsd-core/references/sketch-theme-system.md +94 -0
  285. package/gsd-core/references/sketch-tooling.md +45 -0
  286. package/gsd-core/references/sketch-variant-patterns.md +81 -0
  287. package/gsd-core/references/spidr-splitting.md +69 -0
  288. package/gsd-core/references/tdd.md +330 -0
  289. package/gsd-core/references/test-containers.md +55 -0
  290. package/gsd-core/references/test-strategy.md +75 -0
  291. package/gsd-core/references/thinking-models-debug.md +44 -0
  292. package/gsd-core/references/thinking-models-execution.md +50 -0
  293. package/gsd-core/references/thinking-models-planning.md +62 -0
  294. package/gsd-core/references/thinking-models-research.md +50 -0
  295. package/gsd-core/references/thinking-models-verification.md +55 -0
  296. package/gsd-core/references/thinking-partner.md +96 -0
  297. package/gsd-core/references/ui-brand.md +162 -0
  298. package/gsd-core/references/universal-anti-patterns.md +63 -0
  299. package/gsd-core/references/user-profiling.md +681 -0
  300. package/gsd-core/references/user-story-template.md +58 -0
  301. package/gsd-core/references/verification-overrides.md +227 -0
  302. package/gsd-core/references/verification-patterns.md +612 -0
  303. package/gsd-core/references/verify-mvp-mode.md +85 -0
  304. package/gsd-core/references/workstream-flag.md +111 -0
  305. package/gsd-core/references/worktree-branch-check.md +38 -0
  306. package/gsd-core/references/worktree-path-safety.md +67 -0
  307. package/gsd-core/templates/AI-SPEC.md +246 -0
  308. package/gsd-core/templates/DEBUG.md +169 -0
  309. package/gsd-core/templates/README.md +77 -0
  310. package/gsd-core/templates/SECURITY.md +61 -0
  311. package/gsd-core/templates/UAT.md +265 -0
  312. package/gsd-core/templates/UI-SPEC.md +100 -0
  313. package/gsd-core/templates/VALIDATION.md +76 -0
  314. package/gsd-core/templates/adr.md +58 -0
  315. package/gsd-core/templates/claude-md.md +145 -0
  316. package/gsd-core/templates/codebase/architecture.md +255 -0
  317. package/gsd-core/templates/codebase/concerns.md +310 -0
  318. package/gsd-core/templates/codebase/conventions.md +307 -0
  319. package/gsd-core/templates/codebase/integrations.md +280 -0
  320. package/gsd-core/templates/codebase/stack.md +186 -0
  321. package/gsd-core/templates/codebase/structure.md +285 -0
  322. package/gsd-core/templates/codebase/testing.md +480 -0
  323. package/gsd-core/templates/config.json +62 -0
  324. package/gsd-core/templates/context.md +352 -0
  325. package/gsd-core/templates/continue-here.md +78 -0
  326. package/gsd-core/templates/copilot-instructions.md +7 -0
  327. package/gsd-core/templates/debug-subagent-prompt.md +91 -0
  328. package/gsd-core/templates/dev-preferences.md +21 -0
  329. package/gsd-core/templates/discovery.md +146 -0
  330. package/gsd-core/templates/discussion-log.md +63 -0
  331. package/gsd-core/templates/domain-model.md +54 -0
  332. package/gsd-core/templates/milestone-archive.md +123 -0
  333. package/gsd-core/templates/milestone.md +115 -0
  334. package/gsd-core/templates/phase-prompt.md +610 -0
  335. package/gsd-core/templates/planner-subagent-prompt.md +117 -0
  336. package/gsd-core/templates/product-brief.md +55 -0
  337. package/gsd-core/templates/project.md +186 -0
  338. package/gsd-core/templates/requirements.md +231 -0
  339. package/gsd-core/templates/research-project/ARCHITECTURE.md +204 -0
  340. package/gsd-core/templates/research-project/FEATURES.md +147 -0
  341. package/gsd-core/templates/research-project/PITFALLS.md +200 -0
  342. package/gsd-core/templates/research-project/STACK.md +120 -0
  343. package/gsd-core/templates/research-project/SUMMARY.md +170 -0
  344. package/gsd-core/templates/research.md +592 -0
  345. package/gsd-core/templates/retrospective.md +54 -0
  346. package/gsd-core/templates/roadmap.md +202 -0
  347. package/gsd-core/templates/spec.md +307 -0
  348. package/gsd-core/templates/state.md +195 -0
  349. package/gsd-core/templates/summary-complex.md +59 -0
  350. package/gsd-core/templates/summary-minimal.md +41 -0
  351. package/gsd-core/templates/summary-standard.md +48 -0
  352. package/gsd-core/templates/summary.md +248 -0
  353. package/gsd-core/templates/test-strategy.md +50 -0
  354. package/gsd-core/templates/user-profile.md +146 -0
  355. package/gsd-core/templates/user-setup.md +311 -0
  356. package/gsd-core/templates/verification-report.md +322 -0
  357. package/gsd-core/workflows/_runtime-launcher.snippet.sh +1 -0
  358. package/gsd-core/workflows/add-backlog.md +91 -0
  359. package/gsd-core/workflows/add-phase.md +113 -0
  360. package/gsd-core/workflows/add-tests.md +355 -0
  361. package/gsd-core/workflows/add-todo.md +161 -0
  362. package/gsd-core/workflows/ai-integration-phase.md +295 -0
  363. package/gsd-core/workflows/analyze-dependencies.md +96 -0
  364. package/gsd-core/workflows/audit-fix.md +178 -0
  365. package/gsd-core/workflows/audit-milestone.md +360 -0
  366. package/gsd-core/workflows/audit-uat.md +110 -0
  367. package/gsd-core/workflows/autonomous.md +797 -0
  368. package/gsd-core/workflows/check-todos.md +180 -0
  369. package/gsd-core/workflows/cleanup.md +195 -0
  370. package/gsd-core/workflows/code-review-fix.md +502 -0
  371. package/gsd-core/workflows/code-review.md +658 -0
  372. package/gsd-core/workflows/complete-milestone.md +855 -0
  373. package/gsd-core/workflows/debug.md +237 -0
  374. package/gsd-core/workflows/diagnose-issues.md +245 -0
  375. package/gsd-core/workflows/discover-product.md +112 -0
  376. package/gsd-core/workflows/discovery-phase.md +291 -0
  377. package/gsd-core/workflows/discuss-phase/modes/advisor.md +176 -0
  378. package/gsd-core/workflows/discuss-phase/modes/all.md +28 -0
  379. package/gsd-core/workflows/discuss-phase/modes/analyze.md +44 -0
  380. package/gsd-core/workflows/discuss-phase/modes/auto.md +57 -0
  381. package/gsd-core/workflows/discuss-phase/modes/batch.md +52 -0
  382. package/gsd-core/workflows/discuss-phase/modes/chain.md +98 -0
  383. package/gsd-core/workflows/discuss-phase/modes/default.md +141 -0
  384. package/gsd-core/workflows/discuss-phase/modes/power.md +44 -0
  385. package/gsd-core/workflows/discuss-phase/modes/text.md +55 -0
  386. package/gsd-core/workflows/discuss-phase/templates/checkpoint.json +18 -0
  387. package/gsd-core/workflows/discuss-phase/templates/context.md +136 -0
  388. package/gsd-core/workflows/discuss-phase/templates/discussion-log.md +50 -0
  389. package/gsd-core/workflows/discuss-phase-assumptions.md +675 -0
  390. package/gsd-core/workflows/discuss-phase-power.md +291 -0
  391. package/gsd-core/workflows/discuss-phase.md +499 -0
  392. package/gsd-core/workflows/do.md +111 -0
  393. package/gsd-core/workflows/docs-update.md +1176 -0
  394. package/gsd-core/workflows/edit-phase.md +295 -0
  395. package/gsd-core/workflows/eval-review.md +156 -0
  396. package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +95 -0
  397. package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +94 -0
  398. package/gsd-core/workflows/execute-phase/steps/post-merge-gate.md +117 -0
  399. package/gsd-core/workflows/execute-phase.md +1752 -0
  400. package/gsd-core/workflows/execute-plan.md +526 -0
  401. package/gsd-core/workflows/explore.md +146 -0
  402. package/gsd-core/workflows/extract-learnings.md +243 -0
  403. package/gsd-core/workflows/fast.md +124 -0
  404. package/gsd-core/workflows/forensics.md +279 -0
  405. package/gsd-core/workflows/graduation.md +196 -0
  406. package/gsd-core/workflows/health.md +224 -0
  407. package/gsd-core/workflows/help/modes/brief.md +22 -0
  408. package/gsd-core/workflows/help/modes/default.md +50 -0
  409. package/gsd-core/workflows/help/modes/full.md +789 -0
  410. package/gsd-core/workflows/help/modes/topic.md +74 -0
  411. package/gsd-core/workflows/help.md +24 -0
  412. package/gsd-core/workflows/import.md +256 -0
  413. package/gsd-core/workflows/inbox.md +387 -0
  414. package/gsd-core/workflows/ingest-docs.md +340 -0
  415. package/gsd-core/workflows/insert-phase.md +152 -0
  416. package/gsd-core/workflows/list-phase-assumptions.md +178 -0
  417. package/gsd-core/workflows/list-workspaces.md +57 -0
  418. package/gsd-core/workflows/manager.md +393 -0
  419. package/gsd-core/workflows/map-codebase.md +446 -0
  420. package/gsd-core/workflows/milestone-summary.md +224 -0
  421. package/gsd-core/workflows/model-domain.md +162 -0
  422. package/gsd-core/workflows/mvp-phase.md +222 -0
  423. package/gsd-core/workflows/new-milestone.md +635 -0
  424. package/gsd-core/workflows/new-project.md +1555 -0
  425. package/gsd-core/workflows/new-workspace.md +240 -0
  426. package/gsd-core/workflows/next.md +299 -0
  427. package/gsd-core/workflows/node-repair.md +92 -0
  428. package/gsd-core/workflows/note.md +158 -0
  429. package/gsd-core/workflows/pause-work.md +244 -0
  430. package/gsd-core/workflows/plan-milestone-gaps.md +281 -0
  431. package/gsd-core/workflows/plan-phase.md +1814 -0
  432. package/gsd-core/workflows/plan-review-convergence.md +346 -0
  433. package/gsd-core/workflows/plant-seed.md +230 -0
  434. package/gsd-core/workflows/pr-branch.md +157 -0
  435. package/gsd-core/workflows/profile-user.md +453 -0
  436. package/gsd-core/workflows/progress.md +699 -0
  437. package/gsd-core/workflows/quick.md +1017 -0
  438. package/gsd-core/workflows/reapply-patches.md +426 -0
  439. package/gsd-core/workflows/recommend-architecture.md +135 -0
  440. package/gsd-core/workflows/remove-phase.md +156 -0
  441. package/gsd-core/workflows/remove-workspace.md +108 -0
  442. package/gsd-core/workflows/resume-project.md +332 -0
  443. package/gsd-core/workflows/review.md +748 -0
  444. package/gsd-core/workflows/scan.md +107 -0
  445. package/gsd-core/workflows/secure-phase.md +182 -0
  446. package/gsd-core/workflows/session-report.md +146 -0
  447. package/gsd-core/workflows/settings-advanced.md +810 -0
  448. package/gsd-core/workflows/settings-integrations.md +312 -0
  449. package/gsd-core/workflows/settings.md +566 -0
  450. package/gsd-core/workflows/ship.md +405 -0
  451. package/gsd-core/workflows/sketch-wrap-up.md +286 -0
  452. package/gsd-core/workflows/sketch.md +361 -0
  453. package/gsd-core/workflows/spec-phase.md +263 -0
  454. package/gsd-core/workflows/spike-wrap-up.md +307 -0
  455. package/gsd-core/workflows/spike.md +453 -0
  456. package/gsd-core/workflows/stats.md +80 -0
  457. package/gsd-core/workflows/sync-skills.md +182 -0
  458. package/gsd-core/workflows/testing-strategy.md +122 -0
  459. package/gsd-core/workflows/thread.md +222 -0
  460. package/gsd-core/workflows/transition.md +694 -0
  461. package/gsd-core/workflows/ui-phase.md +328 -0
  462. package/gsd-core/workflows/ui-review.md +193 -0
  463. package/gsd-core/workflows/ultraplan-phase.md +199 -0
  464. package/gsd-core/workflows/undo.md +314 -0
  465. package/gsd-core/workflows/update.md +496 -0
  466. package/gsd-core/workflows/validate-phase.md +181 -0
  467. package/gsd-core/workflows/verify-phase.md +544 -0
  468. package/gsd-core/workflows/verify-work.md +781 -0
  469. package/hooks/dist/gsd-check-update-worker.js +108 -0
  470. package/hooks/dist/gsd-check-update.js +66 -0
  471. package/hooks/dist/gsd-config-reload.js +133 -0
  472. package/hooks/dist/gsd-context-monitor.js +195 -0
  473. package/hooks/dist/gsd-cursor-post-tool.js +75 -0
  474. package/hooks/dist/gsd-cursor-session-start.js +52 -0
  475. package/hooks/dist/gsd-graphify-update.sh +158 -0
  476. package/hooks/dist/gsd-phase-boundary.sh +47 -0
  477. package/hooks/dist/gsd-prompt-guard.js +97 -0
  478. package/hooks/dist/gsd-read-guard.js +101 -0
  479. package/hooks/dist/gsd-read-injection-scanner.js +203 -0
  480. package/hooks/dist/gsd-session-state.sh +59 -0
  481. package/hooks/dist/gsd-statusline.js +566 -0
  482. package/hooks/dist/gsd-update-banner.js +138 -0
  483. package/hooks/dist/gsd-validate-commit.sh +57 -0
  484. package/hooks/dist/gsd-workflow-guard.js +167 -0
  485. package/hooks/dist/gsd-worktree-path-guard.js +169 -0
  486. package/hooks/dist/lib/git-cmd.js +150 -0
  487. package/hooks/dist/lib/gsd-graphify-rebuild.sh +65 -0
  488. package/hooks/dist/managed-hooks-registry.cjs +38 -0
  489. package/hooks/gsd-check-update-worker.js +108 -0
  490. package/hooks/gsd-check-update.js +66 -0
  491. package/hooks/gsd-config-reload.js +133 -0
  492. package/hooks/gsd-context-monitor.js +195 -0
  493. package/hooks/gsd-cursor-post-tool.js +75 -0
  494. package/hooks/gsd-cursor-session-start.js +52 -0
  495. package/hooks/gsd-graphify-update.sh +158 -0
  496. package/hooks/gsd-phase-boundary.sh +47 -0
  497. package/hooks/gsd-prompt-guard.js +97 -0
  498. package/hooks/gsd-read-guard.js +101 -0
  499. package/hooks/gsd-read-injection-scanner.js +203 -0
  500. package/hooks/gsd-session-state.sh +59 -0
  501. package/hooks/gsd-statusline.js +566 -0
  502. package/hooks/gsd-update-banner.js +138 -0
  503. package/hooks/gsd-validate-commit.sh +57 -0
  504. package/hooks/gsd-workflow-guard.js +167 -0
  505. package/hooks/gsd-worktree-path-guard.js +169 -0
  506. package/hooks/hooks.json +69 -0
  507. package/hooks/lib/git-cmd.js +150 -0
  508. package/hooks/lib/gsd-graphify-rebuild.sh +65 -0
  509. package/hooks/managed-hooks-registry.cjs +38 -0
  510. package/package.json +115 -0
  511. package/scripts/affected-tests-lib.cjs +542 -0
  512. package/scripts/audit-workflow-script-paths.cjs +73 -0
  513. package/scripts/base64-scan.sh +351 -0
  514. package/scripts/build-hooks.js +247 -0
  515. package/scripts/changeset/README.md +129 -0
  516. package/scripts/changeset/cli.cjs +590 -0
  517. package/scripts/changeset/github-release-notes.cjs +199 -0
  518. package/scripts/changeset/lint.cjs +111 -0
  519. package/scripts/changeset/new.cjs +137 -0
  520. package/scripts/changeset/parse.cjs +114 -0
  521. package/scripts/changeset/render.cjs +34 -0
  522. package/scripts/changeset/serialize.cjs +130 -0
  523. package/scripts/check-alias-drift.cjs +114 -0
  524. package/scripts/check-env.cjs +312 -0
  525. package/scripts/check-npm-integrity.cjs +215 -0
  526. package/scripts/ci-guard-runner.cjs +22 -0
  527. package/scripts/ci-prepare-test-scope.cjs +51 -0
  528. package/scripts/ci-rebase-check.cjs +86 -0
  529. package/scripts/ci-test-scope.cjs +431 -0
  530. package/scripts/command-contract-helpers.cjs +64 -0
  531. package/scripts/diff-touches-shipped-paths.cjs +155 -0
  532. package/scripts/fix-slash-commands.cjs +147 -0
  533. package/scripts/gen-inventory-manifest.cjs +115 -0
  534. package/scripts/gen-research-agents.cjs +276 -0
  535. package/scripts/generate-package-identity.cjs +125 -0
  536. package/scripts/issue-dedupe.cjs +278 -0
  537. package/scripts/lib/allowlist-ratchet.cjs +136 -0
  538. package/scripts/lib/cli-exit.cjs +56 -0
  539. package/scripts/lint-command-contract.cjs +114 -0
  540. package/scripts/lint-descriptions.cjs +87 -0
  541. package/scripts/lint-docs-required.cjs +222 -0
  542. package/scripts/lint-legacy-dir-name.cjs +160 -0
  543. package/scripts/lint-package-identity-drift.cjs +141 -0
  544. package/scripts/lint-pr-check-project-dir.cjs +99 -0
  545. package/scripts/lint-shell-command-projection-drift.cjs +62 -0
  546. package/scripts/lint-skill-deps.cjs +185 -0
  547. package/scripts/lint-test-file-count.allowlist.json +135 -0
  548. package/scripts/lint-test-file-count.cjs +246 -0
  549. package/scripts/mutation-matrix.cjs +222 -0
  550. package/scripts/pr-template-policy.cjs +268 -0
  551. package/scripts/prompt-injection-scan.sh +207 -0
  552. package/scripts/release-notes/discord-release-summary.cjs +373 -0
  553. package/scripts/release-notes/format-github-release-notes.cjs +261 -0
  554. package/scripts/release-tarball-smoke.cjs +629 -0
  555. package/scripts/research-profiles.cjs +149 -0
  556. package/scripts/run-affected-tests.cjs +7 -0
  557. package/scripts/run-cross-platform-tests.cjs +67 -0
  558. package/scripts/run-tests.cjs +315 -0
  559. package/scripts/secret-scan-lint.sh +231 -0
  560. package/scripts/secret-scan.sh +358 -0
  561. package/scripts/setup-branch-protection.sh +236 -0
  562. package/scripts/strip-prose-atrefs.cjs +106 -0
  563. package/scripts/sync-manifest-versions.cjs +119 -0
  564. package/scripts/sync-rulesets.sh +34 -0
  565. package/scripts/sync-runtime-launcher.cjs +399 -0
  566. package/scripts/test-failure-reasons.cjs +34 -0
  567. package/scripts/verify-npm-publish.cjs +240 -0
  568. package/scripts/workflow-policy.cjs +450 -0
@@ -0,0 +1,456 @@
1
+ "use strict";
2
+ /**
3
+ * gsd2-import — Reverse migration from GSD-2 (.gsd/) to GSD v1 (.planning/)
4
+ *
5
+ * Reads a GSD-2 project directory structure and produces a complete
6
+ * .planning/ artifact tree in GSD v1 format.
7
+ *
8
+ * GSD-2 hierarchy: Milestone → Slice → Task
9
+ * GSD v1 hierarchy: Milestone (in ROADMAP.md) → Phase → Plan
10
+ *
11
+ * Mapping rules:
12
+ * - Slices are numbered sequentially across all milestones (01, 02, …)
13
+ * - Tasks within a slice become plans (01-01, 01-02, …)
14
+ * - Completed slices ([x] in ROADMAP) → [x] phases in ROADMAP.md
15
+ * - Tasks with a SUMMARY file → SUMMARY.md written
16
+ * - Slice RESEARCH.md → phase XX-RESEARCH.md
17
+ *
18
+ * ADR-457 build-at-publish: the hand-written bin/lib/gsd2-import.cjs collapsed
19
+ * to a TypeScript source of truth. Behaviour is preserved byte-for-behaviour
20
+ * from the prior hand-written .cjs; only strict types are added.
21
+ */
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ const node_fs_1 = __importDefault(require("node:fs"));
26
+ const node_path_1 = __importDefault(require("node:path"));
27
+ const shell_command_projection_cjs_1 = require("./shell-command-projection.cjs");
28
+ const runtime_slash_cjs_1 = require("./runtime-slash.cjs");
29
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
30
+ const core = require("./core.cjs");
31
+ const { output } = core;
32
+ // ─── Utilities ──────────────────────────────────────────────────────────────
33
+ function readOptional(filePath) {
34
+ try {
35
+ return node_fs_1.default.readFileSync(filePath, 'utf8');
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ function zeroPad(n, width = 2) {
42
+ return String(n).padStart(width, '0');
43
+ }
44
+ function slugify(title) {
45
+ return title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
46
+ }
47
+ // ─── GSD-2 Parser ───────────────────────────────────────────────────────────
48
+ /**
49
+ * Find the .gsd/ directory starting from a project root.
50
+ * Returns the absolute path or null if not found.
51
+ */
52
+ function findGsd2Root(startPath) {
53
+ if (node_path_1.default.basename(startPath) === '.gsd' && node_fs_1.default.existsSync(startPath)) {
54
+ return startPath;
55
+ }
56
+ const candidate = node_path_1.default.join(startPath, '.gsd');
57
+ if (node_fs_1.default.existsSync(candidate) && node_fs_1.default.statSync(candidate).isDirectory()) {
58
+ return candidate;
59
+ }
60
+ return null;
61
+ }
62
+ /**
63
+ * Parse the ## Slices section from a GSD-2 milestone ROADMAP.md.
64
+ * Each slice entry looks like:
65
+ * - [x] **S01: Title** `risk:medium` `depends:[S00]`
66
+ */
67
+ function parseSlicesFromRoadmap(content) {
68
+ const slices = [];
69
+ const sectionMatch = content.match(/## Slices\n([\s\S]*?)(?:\n## |\n# |$)/);
70
+ if (!sectionMatch)
71
+ return slices;
72
+ for (const line of sectionMatch[1].split('\n')) {
73
+ const m = line.match(/^- \[([x ])\]\s+\*\*(\w+):\s*([^*]+)\*\*/);
74
+ if (!m)
75
+ continue;
76
+ slices.push({ done: m[1] === 'x', id: m[2].trim(), title: m[3].trim() });
77
+ }
78
+ return slices;
79
+ }
80
+ /**
81
+ * Parse the milestone title from the first heading in a GSD-2 ROADMAP.md.
82
+ * Format: # M001: Title
83
+ */
84
+ function parseMilestoneTitle(content) {
85
+ const m = content.match(/^# \w+:\s*(.+)/m);
86
+ return m ? m[1].trim() : null;
87
+ }
88
+ /**
89
+ * Parse a task title from a GSD-2 T##-PLAN.md.
90
+ * Format: # T01: Title
91
+ */
92
+ function parseTaskTitle(content, fallback) {
93
+ const m = content.match(/^# \w+:\s*(.+)/m);
94
+ return m ? m[1].trim() : fallback;
95
+ }
96
+ /**
97
+ * Parse the ## Description body from a GSD-2 task plan.
98
+ */
99
+ function parseTaskDescription(content) {
100
+ const m = content.match(/## Description\n+([\s\S]+?)(?:\n## |\n# |$)/);
101
+ return m ? m[1].trim() : '';
102
+ }
103
+ /**
104
+ * Parse ## Must-Haves items from a GSD-2 task plan.
105
+ */
106
+ function parseTaskMustHaves(content) {
107
+ const m = content.match(/## Must-Haves\n+([\s\S]+?)(?:\n## |\n# |$)/);
108
+ if (!m)
109
+ return [];
110
+ return m[1].split('\n')
111
+ .map(l => l.match(/^- \[[ x]\]\s*(.+)/))
112
+ .filter((match) => match !== null)
113
+ .map(match => match[1].trim());
114
+ }
115
+ /**
116
+ * Read all task plan files from a GSD-2 tasks/ directory.
117
+ */
118
+ function readTasksDir(tasksDir) {
119
+ if (!node_fs_1.default.existsSync(tasksDir))
120
+ return [];
121
+ return node_fs_1.default.readdirSync(tasksDir)
122
+ .filter(f => f.endsWith('-PLAN.md'))
123
+ .sort()
124
+ .map(tf => {
125
+ const tid = tf.replace('-PLAN.md', '');
126
+ const plan = readOptional(node_path_1.default.join(tasksDir, tf));
127
+ const summary = readOptional(node_path_1.default.join(tasksDir, `${tid}-SUMMARY.md`));
128
+ return {
129
+ id: tid,
130
+ title: plan ? parseTaskTitle(plan, tid) : tid,
131
+ description: plan ? parseTaskDescription(plan) : '',
132
+ mustHaves: plan ? parseTaskMustHaves(plan) : [],
133
+ plan,
134
+ summary,
135
+ done: !!summary,
136
+ };
137
+ });
138
+ }
139
+ /**
140
+ * Parse a complete GSD-2 .gsd/ directory into a structured representation.
141
+ */
142
+ function parseGsd2(gsdDir) {
143
+ const data = {
144
+ projectContent: readOptional(node_path_1.default.join(gsdDir, 'PROJECT.md')),
145
+ requirements: readOptional(node_path_1.default.join(gsdDir, 'REQUIREMENTS.md')),
146
+ milestones: [],
147
+ };
148
+ const milestonesBase = node_path_1.default.join(gsdDir, 'milestones');
149
+ if (!node_fs_1.default.existsSync(milestonesBase))
150
+ return data;
151
+ const milestoneIds = node_fs_1.default.readdirSync(milestonesBase)
152
+ .filter(d => node_fs_1.default.statSync(node_path_1.default.join(milestonesBase, d)).isDirectory())
153
+ .sort();
154
+ for (const mid of milestoneIds) {
155
+ const mDir = node_path_1.default.join(milestonesBase, mid);
156
+ const roadmapContent = readOptional(node_path_1.default.join(mDir, `${mid}-ROADMAP.md`));
157
+ const slicesDir = node_path_1.default.join(mDir, 'slices');
158
+ const sliceInfos = roadmapContent ? parseSlicesFromRoadmap(roadmapContent) : [];
159
+ const slices = sliceInfos.map(info => {
160
+ const sDir = node_path_1.default.join(slicesDir, info.id);
161
+ const hasSDir = node_fs_1.default.existsSync(sDir);
162
+ return {
163
+ id: info.id,
164
+ title: info.title,
165
+ done: info.done,
166
+ plan: hasSDir ? readOptional(node_path_1.default.join(sDir, `${info.id}-PLAN.md`)) : null,
167
+ summary: hasSDir ? readOptional(node_path_1.default.join(sDir, `${info.id}-SUMMARY.md`)) : null,
168
+ research: hasSDir ? readOptional(node_path_1.default.join(sDir, `${info.id}-RESEARCH.md`)) : null,
169
+ context: hasSDir ? readOptional(node_path_1.default.join(sDir, `${info.id}-CONTEXT.md`)) : null,
170
+ tasks: hasSDir ? readTasksDir(node_path_1.default.join(sDir, 'tasks')) : [],
171
+ };
172
+ });
173
+ data.milestones.push({
174
+ id: mid,
175
+ title: roadmapContent ? (parseMilestoneTitle(roadmapContent) ?? mid) : mid,
176
+ research: readOptional(node_path_1.default.join(mDir, `${mid}-RESEARCH.md`)),
177
+ slices,
178
+ });
179
+ }
180
+ return data;
181
+ }
182
+ // ─── Artifact Builders ──────────────────────────────────────────────────────
183
+ /**
184
+ * Build a GSD v1 PLAN.md from a GSD-2 task.
185
+ */
186
+ function buildPlanMd(task, phasePrefix, planPrefix, phaseSlug, milestoneTitle) {
187
+ const lines = [
188
+ '---',
189
+ `phase: "${phasePrefix}"`,
190
+ `plan: "${planPrefix}"`,
191
+ 'type: "implementation"',
192
+ '---',
193
+ '',
194
+ '<objective>',
195
+ task.title,
196
+ '</objective>',
197
+ '',
198
+ '<context>',
199
+ `Phase: ${phasePrefix} (${phaseSlug}) — Milestone: ${milestoneTitle}`,
200
+ ];
201
+ if (task.description) {
202
+ lines.push('', task.description);
203
+ }
204
+ lines.push('</context>');
205
+ if (task.mustHaves.length > 0) {
206
+ lines.push('', '<must_haves>');
207
+ for (const mh of task.mustHaves) {
208
+ lines.push(`- ${mh}`);
209
+ }
210
+ lines.push('</must_haves>');
211
+ }
212
+ return lines.join('\n') + '\n';
213
+ }
214
+ /**
215
+ * Build a GSD v1 SUMMARY.md from a GSD-2 task summary.
216
+ * Strips the GSD-2 frontmatter and preserves the body.
217
+ */
218
+ function buildSummaryMd(task, phasePrefix, planPrefix) {
219
+ const raw = task.summary || '';
220
+ // Strip GSD-2 frontmatter block (--- ... ---) if present
221
+ const bodyMatch = raw.match(/^---[\s\S]*?---\n+([\s\S]*)$/);
222
+ const body = bodyMatch ? bodyMatch[1].trim() : raw.trim();
223
+ return [
224
+ '---',
225
+ `phase: "${phasePrefix}"`,
226
+ `plan: "${planPrefix}"`,
227
+ '---',
228
+ '',
229
+ body || 'Task completed (migrated from GSD-2).',
230
+ '',
231
+ ].join('\n');
232
+ }
233
+ /**
234
+ * Build a GSD v1 XX-CONTEXT.md from a GSD-2 slice.
235
+ */
236
+ function buildContextMd(slice, phasePrefix) {
237
+ const lines = [
238
+ `# Phase ${phasePrefix} Context`,
239
+ '',
240
+ `Migrated from GSD-2 slice ${slice.id}: ${slice.title}`,
241
+ ];
242
+ const extra = slice.context || '';
243
+ if (extra.trim()) {
244
+ lines.push('', extra.trim());
245
+ }
246
+ return lines.join('\n') + '\n';
247
+ }
248
+ /**
249
+ * Build the GSD v1 ROADMAP.md with milestone-sectioned format.
250
+ */
251
+ function buildRoadmapMd(milestones, phaseMap) {
252
+ const lines = ['# Roadmap', ''];
253
+ for (const milestone of milestones) {
254
+ lines.push(`## ${milestone.id}: ${milestone.title}`, '');
255
+ const mPhases = phaseMap.filter(p => p.milestoneId === milestone.id);
256
+ for (const { slice, phaseNum } of mPhases) {
257
+ const prefix = zeroPad(phaseNum);
258
+ const slug = slugify(slice.title);
259
+ const check = slice.done ? 'x' : ' ';
260
+ lines.push(`- [${check}] **Phase ${prefix}: ${slug}** — ${slice.title}`);
261
+ }
262
+ lines.push('');
263
+ }
264
+ return lines.join('\n');
265
+ }
266
+ /**
267
+ * Build the GSD v1 STATE.md reflecting the current position in the project.
268
+ */
269
+ function buildStateMd(phaseMap) {
270
+ const currentEntry = phaseMap.find(p => !p.slice.done);
271
+ const totalPhases = phaseMap.length;
272
+ const donePhases = phaseMap.filter(p => p.slice.done).length;
273
+ const pct = totalPhases > 0 ? Math.round((donePhases / totalPhases) * 100) : 0;
274
+ const currentPhaseNum = currentEntry ? zeroPad(currentEntry.phaseNum) : zeroPad(totalPhases);
275
+ const currentSlug = currentEntry ? slugify(currentEntry.slice.title) : 'complete';
276
+ const status = currentEntry ? 'Ready to plan' : 'All phases complete';
277
+ const filled = Math.round(pct / 10);
278
+ const bar = `[${'█'.repeat(filled)}${'░'.repeat(10 - filled)}]`;
279
+ const today = new Date().toISOString().split('T')[0];
280
+ return [
281
+ '# Project State',
282
+ '',
283
+ '## Project Reference',
284
+ '',
285
+ 'See: .planning/PROJECT.md',
286
+ '',
287
+ `**Current focus:** Phase ${currentPhaseNum} (${currentSlug})`,
288
+ '',
289
+ '## Current Position',
290
+ '',
291
+ `Phase: ${currentPhaseNum} of ${zeroPad(totalPhases)} (${currentSlug})`,
292
+ `Status: ${status}`,
293
+ `Last activity: ${today} — Migrated from GSD-2`,
294
+ '',
295
+ `Progress: ${bar} ${pct}%`,
296
+ '',
297
+ '## Accumulated Context',
298
+ '',
299
+ '### Decisions',
300
+ '',
301
+ 'Migrated from GSD-2. Review PROJECT.md for key decisions.',
302
+ '',
303
+ '### Blockers/Concerns',
304
+ '',
305
+ 'None.',
306
+ '',
307
+ '## Session Continuity',
308
+ '',
309
+ `Last session: ${today}`,
310
+ 'Stopped at: Migration from GSD-2 completed',
311
+ 'Resume file: None',
312
+ '',
313
+ ].join('\n');
314
+ }
315
+ // ─── Transformer ─────────────────────────────────────────────────────────────
316
+ /**
317
+ * Convert parsed GSD-2 data into a map of relative path → file content.
318
+ * All paths are relative to the .planning/ root.
319
+ */
320
+ function buildPlanningArtifacts(gsd2Data) {
321
+ const artifacts = new Map();
322
+ // Passthrough files
323
+ artifacts.set('PROJECT.md', gsd2Data.projectContent || '# Project\n\n(Migrated from GSD-2)\n');
324
+ if (gsd2Data.requirements) {
325
+ artifacts.set('REQUIREMENTS.md', gsd2Data.requirements);
326
+ }
327
+ // Minimal valid v1 config
328
+ artifacts.set('config.json', JSON.stringify({ version: 1 }, null, 2) + '\n');
329
+ // Build sequential phase map: flatten Milestones → Slices into numbered phases
330
+ const phaseMap = [];
331
+ let phaseNum = 1;
332
+ for (const milestone of gsd2Data.milestones) {
333
+ for (const slice of milestone.slices) {
334
+ phaseMap.push({ milestoneId: milestone.id, milestoneTitle: milestone.title, slice, phaseNum });
335
+ phaseNum++;
336
+ }
337
+ }
338
+ artifacts.set('ROADMAP.md', buildRoadmapMd(gsd2Data.milestones, phaseMap));
339
+ artifacts.set('STATE.md', buildStateMd(phaseMap));
340
+ for (const { slice, phaseNum: pNum, milestoneTitle } of phaseMap) {
341
+ const prefix = zeroPad(pNum);
342
+ const slug = slugify(slice.title);
343
+ const dir = `phases/${prefix}-${slug}`;
344
+ artifacts.set(`${dir}/${prefix}-CONTEXT.md`, buildContextMd(slice, prefix));
345
+ if (slice.research) {
346
+ artifacts.set(`${dir}/${prefix}-RESEARCH.md`, slice.research);
347
+ }
348
+ for (let i = 0; i < slice.tasks.length; i++) {
349
+ const task = slice.tasks[i];
350
+ const planPrefix = zeroPad(i + 1);
351
+ artifacts.set(`${dir}/${prefix}-${planPrefix}-PLAN.md`, buildPlanMd(task, prefix, planPrefix, slug, milestoneTitle));
352
+ if (task.done && task.summary) {
353
+ artifacts.set(`${dir}/${prefix}-${planPrefix}-SUMMARY.md`, buildSummaryMd(task, prefix, planPrefix));
354
+ }
355
+ }
356
+ }
357
+ return artifacts;
358
+ }
359
+ // ─── Preview ─────────────────────────────────────────────────────────────────
360
+ /**
361
+ * Format a dry-run preview string for display before writing.
362
+ */
363
+ function buildPreview(gsd2Data, artifacts, projectDir) {
364
+ const lines = ['Preview — files that will be created in .planning/:'];
365
+ for (const rel of artifacts.keys()) {
366
+ lines.push(` ${rel}`);
367
+ }
368
+ const totalSlices = gsd2Data.milestones.reduce((s, m) => s + m.slices.length, 0);
369
+ const doneSlices = gsd2Data.milestones.reduce((s, m) => s + m.slices.filter(sl => sl.done).length, 0);
370
+ const allTasks = gsd2Data.milestones.flatMap(m => m.slices.flatMap(sl => sl.tasks));
371
+ const doneTasks = allTasks.filter(t => t.done).length;
372
+ lines.push('');
373
+ lines.push(`Milestones: ${gsd2Data.milestones.length}`);
374
+ lines.push(`Phases (slices): ${totalSlices} (${doneSlices} completed)`);
375
+ lines.push(`Plans (tasks): ${allTasks.length} (${doneTasks} completed)`);
376
+ lines.push('');
377
+ lines.push('Cannot migrate automatically:');
378
+ lines.push(' - GSD-2 cost/token ledger (no v1 equivalent)');
379
+ lines.push(` - GSD-2 database state (rebuilt from files on first ${(0, runtime_slash_cjs_1.formatGsdSlash)('health', (0, runtime_slash_cjs_1.resolveRuntime)(projectDir))})`);
380
+ lines.push(' - VS Code extension state');
381
+ return lines.join('\n');
382
+ }
383
+ // ─── Writer ───────────────────────────────────────────────────────────────────
384
+ /**
385
+ * Write all artifacts to the .planning/ directory.
386
+ */
387
+ function writePlanningDir(artifacts, planningRoot) {
388
+ for (const [rel, content] of artifacts) {
389
+ const absPath = node_path_1.default.join(planningRoot, rel);
390
+ (0, shell_command_projection_cjs_1.platformWriteSync)(absPath, content);
391
+ }
392
+ }
393
+ // ─── Command Handler ──────────────────────────────────────────────────────────
394
+ /**
395
+ * Entry point called from gsd-tools.cjs.
396
+ * Supports: --force, --dry-run, --path <dir>
397
+ */
398
+ function cmdFromGsd2(args, cwd, raw) {
399
+ const force = args.includes('--force');
400
+ const dryRun = args.includes('--dry-run');
401
+ const pathIdx = args.indexOf('--path');
402
+ const projectDir = pathIdx >= 0 && args[pathIdx + 1]
403
+ ? node_path_1.default.resolve(cwd, args[pathIdx + 1])
404
+ : cwd;
405
+ const gsdDir = findGsd2Root(projectDir);
406
+ if (!gsdDir) {
407
+ output({ success: false, error: `No .gsd/ directory found in ${projectDir}` }, raw, undefined);
408
+ return;
409
+ }
410
+ const planningRoot = node_path_1.default.join(node_path_1.default.dirname(gsdDir), '.planning');
411
+ if (node_fs_1.default.existsSync(planningRoot) && !force) {
412
+ output({
413
+ success: false,
414
+ error: `.planning/ already exists at ${planningRoot}. Pass --force to overwrite.`,
415
+ }, raw, undefined);
416
+ return;
417
+ }
418
+ const gsd2Data = parseGsd2(gsdDir);
419
+ const artifacts = buildPlanningArtifacts(gsd2Data);
420
+ // Use projectDir (resolved from --path) — not the process cwd — so the
421
+ // preview command targets the project actually being imported (#3584).
422
+ const preview = buildPreview(gsd2Data, artifacts, projectDir);
423
+ if (dryRun) {
424
+ output({ success: true, dryRun: true, preview }, raw, undefined);
425
+ return;
426
+ }
427
+ writePlanningDir(artifacts, planningRoot);
428
+ output({
429
+ success: true,
430
+ planningDir: planningRoot,
431
+ filesWritten: artifacts.size,
432
+ milestones: gsd2Data.milestones.length,
433
+ preview,
434
+ }, raw, undefined);
435
+ }
436
+ module.exports = {
437
+ findGsd2Root,
438
+ parseGsd2,
439
+ buildPlanningArtifacts,
440
+ buildPreview,
441
+ writePlanningDir,
442
+ cmdFromGsd2,
443
+ // Exported for unit tests
444
+ parseSlicesFromRoadmap,
445
+ parseMilestoneTitle,
446
+ parseTaskTitle,
447
+ parseTaskDescription,
448
+ parseTaskMustHaves,
449
+ buildPlanMd,
450
+ buildSummaryMd,
451
+ buildContextMd,
452
+ buildRoadmapMd,
453
+ buildStateMd,
454
+ slugify,
455
+ zeroPad,
456
+ };
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * Manifest-backed init subcommand router.
4
+ * Keeps gsd-tools.cjs thin while preserving existing command semantics.
5
+ *
6
+ * Phase 6: all init.* subcommands have SDK equivalents and are dispatched
7
+ * via executeForCjs (the sync bridge). CJS fallback retained when:
8
+ * - GSD_WORKSTREAM is active (workstream-scoped requests fall through to CJS).
9
+ * - SDK is unavailable (build not present).
10
+ *
11
+ * CJS-only subcommands: none.
12
+ * SDK-only (unsupported in CJS router): none.
13
+ *
14
+ * ADR-457 build-at-publish: the hand-written bin/lib/init-command-router.cjs
15
+ * collapsed to a TypeScript source of truth. Behaviour is preserved byte-for-behaviour
16
+ * from the prior hand-written .cjs; only types are added.
17
+ */
18
+ const command_aliases_cjs_1 = require("./command-aliases.cjs");
19
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
20
+ const cjsCommandRouterAdapter = require("./cjs-command-router-adapter.cjs");
21
+ const { routeCjsCommandFamily } = cjsCommandRouterAdapter;
22
+ const command_arg_projection_cjs_1 = require("./command-arg-projection.cjs");
23
+ // ─── Implementation ───────────────────────────────────────────────────────────
24
+ function routeInitCommand({ init, args, cwd, raw, error }) {
25
+ routeCjsCommandFamily({
26
+ args,
27
+ subcommands: command_aliases_cjs_1.INIT_SUBCOMMANDS,
28
+ unsupported: {},
29
+ error,
30
+ unknownMessage: (_subcommand, available) => `Unknown init workflow: ${_subcommand}\nAvailable: ${available.join(', ')}`,
31
+ handlers: {
32
+ 'execute-phase': () => {
33
+ const namedArgs = (0, command_arg_projection_cjs_1.parseNamedArgs)(args, [], ['validate', 'tdd']);
34
+ init.cmdInitExecutePhase(cwd, args[2], raw, { validate: namedArgs['validate'], tdd: namedArgs['tdd'] });
35
+ },
36
+ 'plan-phase': () => {
37
+ const namedArgs = (0, command_arg_projection_cjs_1.parseNamedArgs)(args, ['granularity'], ['validate', 'tdd']);
38
+ init.cmdInitPlanPhase(cwd, args[2], raw, { validate: namedArgs['validate'], tdd: namedArgs['tdd'], granularity: namedArgs['granularity'] });
39
+ },
40
+ 'new-project': () => init.cmdInitNewProject(cwd, raw),
41
+ 'new-milestone': () => init.cmdInitNewMilestone(cwd, raw),
42
+ quick: () => init.cmdInitQuick(cwd, args.slice(2).join(' '), raw),
43
+ 'ingest-docs': () => init.cmdInitIngestDocs(cwd, raw),
44
+ resume: () => init.cmdInitResume(cwd, raw),
45
+ 'verify-work': () => init.cmdInitVerifyWork(cwd, args[2], raw),
46
+ 'phase-op': () => init.cmdInitPhaseOp(cwd, args[2], raw),
47
+ todos: () => init.cmdInitTodos(cwd, args[2], raw),
48
+ 'milestone-op': () => init.cmdInitMilestoneOp(cwd, raw),
49
+ 'map-codebase': () => init.cmdInitMapCodebase(cwd, raw),
50
+ progress: () => init.cmdInitProgress(cwd, raw),
51
+ // Keep manager on CJS for now so runtime-specific command rendering
52
+ // (e.g. $gsd-* for codex) stays consistent with runtime-slash helpers.
53
+ manager: () => init.cmdInitManager(cwd, raw),
54
+ 'new-workspace': () => init.cmdInitNewWorkspace(cwd, raw),
55
+ 'list-workspaces': () => init.cmdInitListWorkspaces(cwd, raw),
56
+ 'remove-workspace': () => init.cmdInitRemoveWorkspace(cwd, args[2], raw),
57
+ },
58
+ });
59
+ }
60
+ module.exports = {
61
+ routeInitCommand,
62
+ };