@opengsd/gsd-core 1.3.0-rc.1 → 1.3.1

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 (521) hide show
  1. package/README.ja-JP.md +44 -790
  2. package/README.ko-KR.md +41 -778
  3. package/README.md +39 -180
  4. package/README.pt-BR.md +45 -413
  5. package/README.zh-CN.md +43 -761
  6. package/agents/gsd-ai-researcher.md +1 -1
  7. package/agents/gsd-debugger.md +8 -8
  8. package/agents/gsd-domain-researcher.md +14 -1
  9. package/agents/gsd-eval-auditor.md +1 -1
  10. package/agents/gsd-eval-planner.md +1 -1
  11. package/agents/gsd-executor.md +21 -8
  12. package/agents/gsd-framework-selector.md +1 -1
  13. package/agents/gsd-intel-updater.md +4 -4
  14. package/agents/gsd-phase-researcher.md +18 -5
  15. package/agents/gsd-plan-checker.md +3 -3
  16. package/agents/gsd-planner.md +36 -23
  17. package/agents/gsd-project-researcher.md +13 -0
  18. package/agents/gsd-research-synthesizer.md +6 -2
  19. package/agents/gsd-roadmapper.md +6 -6
  20. package/agents/gsd-ui-researcher.md +15 -2
  21. package/agents/gsd-user-profiler.md +2 -2
  22. package/agents/gsd-verifier.md +7 -7
  23. package/bin/install.js +169 -59
  24. package/commands/gsd/add-tests.md +1 -1
  25. package/commands/gsd/ai-integration-phase.md +3 -3
  26. package/commands/gsd/audit-fix.md +1 -1
  27. package/commands/gsd/audit-milestone.md +1 -1
  28. package/commands/gsd/audit-uat.md +1 -1
  29. package/commands/gsd/autonomous.md +2 -2
  30. package/commands/gsd/capture.md +6 -6
  31. package/commands/gsd/cleanup.md +1 -1
  32. package/commands/gsd/code-review.md +1 -1
  33. package/commands/gsd/complete-milestone.md +2 -2
  34. package/commands/gsd/config.md +3 -3
  35. package/commands/gsd/debug.md +1 -1
  36. package/commands/gsd/discuss-phase.md +5 -4
  37. package/commands/gsd/docs-update.md +1 -1
  38. package/commands/gsd/eval-review.md +2 -2
  39. package/commands/gsd/execute-phase.md +2 -2
  40. package/commands/gsd/explore.md +1 -1
  41. package/commands/gsd/extract-learnings.md +2 -2
  42. package/commands/gsd/fast.md +1 -1
  43. package/commands/gsd/forensics.md +1 -1
  44. package/commands/gsd/graphify.md +9 -9
  45. package/commands/gsd/health.md +1 -1
  46. package/commands/gsd/help.md +2 -2
  47. package/commands/gsd/import.md +5 -5
  48. package/commands/gsd/inbox.md +1 -1
  49. package/commands/gsd/ingest-docs.md +4 -4
  50. package/commands/gsd/manager.md +3 -3
  51. package/commands/gsd/map-codebase.md +1 -1
  52. package/commands/gsd/milestone-summary.md +1 -1
  53. package/commands/gsd/mvp-phase.md +4 -4
  54. package/commands/gsd/new-milestone.md +5 -5
  55. package/commands/gsd/new-project.md +5 -5
  56. package/commands/gsd/pause-work.md +2 -2
  57. package/commands/gsd/phase.md +4 -4
  58. package/commands/gsd/plan-phase.md +2 -2
  59. package/commands/gsd/plan-review-convergence.md +4 -4
  60. package/commands/gsd/pr-branch.md +1 -1
  61. package/commands/gsd/profile-user.md +2 -2
  62. package/commands/gsd/progress.md +4 -4
  63. package/commands/gsd/quick.md +1 -1
  64. package/commands/gsd/resume-work.md +1 -1
  65. package/commands/gsd/review.md +1 -1
  66. package/commands/gsd/secure-phase.md +1 -1
  67. package/commands/gsd/settings.md +1 -1
  68. package/commands/gsd/ship.md +2 -2
  69. package/commands/gsd/sketch.md +7 -7
  70. package/commands/gsd/spec-phase.md +2 -2
  71. package/commands/gsd/spike.md +3 -3
  72. package/commands/gsd/stats.md +1 -1
  73. package/commands/gsd/surface.md +4 -4
  74. package/commands/gsd/thread.md +1 -1
  75. package/commands/gsd/ui-phase.md +2 -2
  76. package/commands/gsd/ui-review.md +2 -2
  77. package/commands/gsd/ultraplan-phase.md +2 -2
  78. package/commands/gsd/undo.md +3 -3
  79. package/commands/gsd/update.md +3 -3
  80. package/commands/gsd/validate-phase.md +1 -1
  81. package/commands/gsd/verify-work.md +2 -2
  82. package/commands/gsd/workspace.md +4 -4
  83. package/{get-shit-done → gsd-core}/bin/check-latest-version.cjs +1 -1
  84. package/{get-shit-done → gsd-core}/bin/gsd-tools.cjs +13 -3
  85. package/gsd-core/bin/lib/active-workstream-store.cjs +291 -0
  86. package/gsd-core/bin/lib/adr-parser.cjs +399 -0
  87. package/gsd-core/bin/lib/agent-command-router.cjs +68 -0
  88. package/gsd-core/bin/lib/artifacts.cjs +51 -0
  89. package/gsd-core/bin/lib/audit.cjs +743 -0
  90. package/gsd-core/bin/lib/check-command-router.cjs +342 -0
  91. package/gsd-core/bin/lib/cjs-command-router-adapter.cjs +81 -0
  92. package/gsd-core/bin/lib/clock.cjs +95 -0
  93. package/gsd-core/bin/lib/clusters.cjs +128 -0
  94. package/gsd-core/bin/lib/code-review-flags.cjs +59 -0
  95. package/gsd-core/bin/lib/command-aliases.cjs +809 -0
  96. package/gsd-core/bin/lib/command-arg-projection.cjs +55 -0
  97. package/gsd-core/bin/lib/command-routing-hub.cjs +300 -0
  98. package/gsd-core/bin/lib/commands.cjs +1202 -0
  99. package/gsd-core/bin/lib/config-schema.cjs +29 -0
  100. package/{get-shit-done → gsd-core}/bin/lib/config-types.cjs +1 -1
  101. package/gsd-core/bin/lib/config.cjs +714 -0
  102. package/{get-shit-done → gsd-core}/bin/lib/configuration.cjs +76 -85
  103. package/gsd-core/bin/lib/context-utilization.cjs +48 -0
  104. package/gsd-core/bin/lib/core.cjs +2007 -0
  105. package/{get-shit-done → gsd-core}/bin/lib/decisions.cjs +9 -7
  106. package/gsd-core/bin/lib/docs.cjs +252 -0
  107. package/gsd-core/bin/lib/drift.cjs +364 -0
  108. package/gsd-core/bin/lib/fallow-runner.cjs +115 -0
  109. package/gsd-core/bin/lib/frontmatter.cjs +442 -0
  110. package/gsd-core/bin/lib/gap-checker.cjs +257 -0
  111. package/gsd-core/bin/lib/graphify.cjs +496 -0
  112. package/gsd-core/bin/lib/gsd2-import.cjs +456 -0
  113. package/gsd-core/bin/lib/init-command-router.cjs +62 -0
  114. package/gsd-core/bin/lib/init.cjs +1799 -0
  115. package/gsd-core/bin/lib/install-profiles.cjs +526 -0
  116. package/gsd-core/bin/lib/installer-migration-authoring.cjs +122 -0
  117. package/gsd-core/bin/lib/installer-migration-report.cjs +347 -0
  118. package/gsd-core/bin/lib/installer-migrations/000-first-time-baseline.cjs +218 -0
  119. package/gsd-core/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +48 -0
  120. package/gsd-core/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +94 -0
  121. package/gsd-core/bin/lib/installer-migrations/003-rename-get-shit-done-to-gsd-core.cjs +108 -0
  122. package/gsd-core/bin/lib/installer-migrations.cjs +823 -0
  123. package/gsd-core/bin/lib/intel.cjs +607 -0
  124. package/gsd-core/bin/lib/learnings.cjs +270 -0
  125. package/gsd-core/bin/lib/legacy-cleanup.cjs +253 -0
  126. package/gsd-core/bin/lib/milestone.cjs +373 -0
  127. package/gsd-core/bin/lib/model-catalog.cjs +154 -0
  128. package/gsd-core/bin/lib/model-profiles.cjs +24 -0
  129. package/gsd-core/bin/lib/observability/event.cjs +51 -0
  130. package/gsd-core/bin/lib/observability/logger.cjs +146 -0
  131. package/{get-shit-done → gsd-core}/bin/lib/observability/redaction.cjs +19 -21
  132. package/{get-shit-done → gsd-core}/bin/lib/package-identity.cjs +5 -1
  133. package/gsd-core/bin/lib/phase-command-router.cjs +189 -0
  134. package/gsd-core/bin/lib/phase-lifecycle.cjs +74 -0
  135. package/gsd-core/bin/lib/phase.cjs +1307 -0
  136. package/gsd-core/bin/lib/phases-command-router.cjs +43 -0
  137. package/{get-shit-done → gsd-core}/bin/lib/plan-scan.cjs +18 -24
  138. package/gsd-core/bin/lib/planning-workspace.cjs +245 -0
  139. package/gsd-core/bin/lib/profile-output.cjs +1120 -0
  140. package/gsd-core/bin/lib/profile-pipeline.cjs +517 -0
  141. package/gsd-core/bin/lib/project-root.cjs +119 -0
  142. package/gsd-core/bin/lib/prompt-budget.cjs +305 -0
  143. package/gsd-core/bin/lib/review-reviewer-selection.cjs +121 -0
  144. package/gsd-core/bin/lib/roadmap-command-router.cjs +166 -0
  145. package/gsd-core/bin/lib/roadmap-upgrade.cjs +491 -0
  146. package/gsd-core/bin/lib/roadmap.cjs +600 -0
  147. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +254 -0
  148. package/gsd-core/bin/lib/runtime-homes.cjs +169 -0
  149. package/gsd-core/bin/lib/runtime-name-policy.cjs +96 -0
  150. package/gsd-core/bin/lib/runtime-slash.cjs +119 -0
  151. package/{get-shit-done → gsd-core}/bin/lib/schema-detect.cjs +20 -26
  152. package/gsd-core/bin/lib/secrets.cjs +34 -0
  153. package/gsd-core/bin/lib/security.cjs +407 -0
  154. package/{get-shit-done → gsd-core}/bin/lib/semver-compare.cjs +1 -1
  155. package/gsd-core/bin/lib/shell-command-projection.cjs +524 -0
  156. package/gsd-core/bin/lib/state-command-router.cjs +160 -0
  157. package/{get-shit-done → gsd-core}/bin/lib/state-document.cjs +78 -78
  158. package/gsd-core/bin/lib/state.cjs +2010 -0
  159. package/gsd-core/bin/lib/surface.cjs +406 -0
  160. package/gsd-core/bin/lib/task-command-router.cjs +85 -0
  161. package/gsd-core/bin/lib/template.cjs +237 -0
  162. package/gsd-core/bin/lib/uat.cjs +297 -0
  163. package/gsd-core/bin/lib/ui-safety-gate.cjs +98 -0
  164. package/gsd-core/bin/lib/update-context.cjs +218 -0
  165. package/gsd-core/bin/lib/validate-command-router.cjs +91 -0
  166. package/gsd-core/bin/lib/validate.cjs +112 -0
  167. package/gsd-core/bin/lib/verify-command-router.cjs +44 -0
  168. package/gsd-core/bin/lib/verify.cjs +1451 -0
  169. package/{get-shit-done → gsd-core}/bin/lib/workstream-inventory-builder.cjs +19 -12
  170. package/gsd-core/bin/lib/workstream-inventory.cjs +147 -0
  171. package/{get-shit-done → gsd-core}/bin/lib/workstream-name-policy.cjs +28 -31
  172. package/gsd-core/bin/lib/workstream.cjs +380 -0
  173. package/gsd-core/bin/lib/worktree-safety.cjs +912 -0
  174. package/{get-shit-done → gsd-core}/bin/shared/config-schema.manifest.json +5 -0
  175. package/{get-shit-done → gsd-core}/references/artifact-types.md +1 -1
  176. package/{get-shit-done → gsd-core}/references/few-shot-examples/plan-checker.md +2 -2
  177. package/{get-shit-done → gsd-core}/references/few-shot-examples/verifier.md +12 -12
  178. package/{get-shit-done → gsd-core}/references/model-profile-resolution.md +1 -1
  179. package/{get-shit-done → gsd-core}/references/mvp-concepts.md +1 -1
  180. package/{get-shit-done → gsd-core}/references/planner-graphify-auto-update.md +2 -2
  181. package/{get-shit-done → gsd-core}/references/planner-mvp-mode.md +1 -1
  182. package/{get-shit-done → gsd-core}/references/verification-patterns.md +1 -1
  183. package/gsd-core/references/worktree-branch-check.md +38 -0
  184. package/{get-shit-done → gsd-core}/references/worktree-path-safety.md +4 -26
  185. package/{get-shit-done → gsd-core}/templates/README.md +2 -2
  186. package/{get-shit-done → gsd-core}/templates/codebase/structure.md +10 -10
  187. package/{get-shit-done → gsd-core}/templates/copilot-instructions.md +1 -1
  188. package/{get-shit-done → gsd-core}/templates/phase-prompt.md +10 -10
  189. package/gsd-core/workflows/_runtime-launcher.snippet.sh +1 -0
  190. package/{get-shit-done → gsd-core}/workflows/add-backlog.md +1 -1
  191. package/{get-shit-done → gsd-core}/workflows/add-phase.md +1 -1
  192. package/{get-shit-done → gsd-core}/workflows/add-tests.md +1 -1
  193. package/{get-shit-done → gsd-core}/workflows/add-todo.md +1 -1
  194. package/{get-shit-done → gsd-core}/workflows/ai-integration-phase.md +4 -4
  195. package/{get-shit-done → gsd-core}/workflows/audit-fix.md +1 -1
  196. package/{get-shit-done → gsd-core}/workflows/audit-milestone.md +1 -1
  197. package/{get-shit-done → gsd-core}/workflows/audit-uat.md +1 -1
  198. package/{get-shit-done → gsd-core}/workflows/autonomous.md +4 -4
  199. package/{get-shit-done → gsd-core}/workflows/check-todos.md +1 -1
  200. package/{get-shit-done → gsd-core}/workflows/cleanup.md +1 -1
  201. package/{get-shit-done → gsd-core}/workflows/code-review-fix.md +1 -1
  202. package/{get-shit-done → gsd-core}/workflows/code-review.md +4 -4
  203. package/{get-shit-done → gsd-core}/workflows/complete-milestone.md +2 -2
  204. package/{get-shit-done → gsd-core}/workflows/debug.md +1 -1
  205. package/{get-shit-done → gsd-core}/workflows/diagnose-issues.md +4 -2
  206. package/{get-shit-done → gsd-core}/workflows/discovery-phase.md +5 -5
  207. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/advisor.md +4 -4
  208. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/auto.md +1 -1
  209. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/chain.md +1 -1
  210. package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/power.md +1 -1
  211. package/{get-shit-done → gsd-core}/workflows/discuss-phase-assumptions.md +2 -2
  212. package/{get-shit-done → gsd-core}/workflows/discuss-phase.md +6 -6
  213. package/{get-shit-done → gsd-core}/workflows/do.md +1 -1
  214. package/{get-shit-done → gsd-core}/workflows/docs-update.md +1 -1
  215. package/{get-shit-done → gsd-core}/workflows/edit-phase.md +1 -1
  216. package/{get-shit-done → gsd-core}/workflows/eval-review.md +2 -2
  217. package/{get-shit-done → gsd-core}/workflows/execute-phase/steps/codebase-drift-gate.md +15 -2
  218. package/{get-shit-done → gsd-core}/workflows/execute-phase/steps/post-merge-gate.md +1 -1
  219. package/{get-shit-done → gsd-core}/workflows/execute-phase.md +68 -46
  220. package/{get-shit-done → gsd-core}/workflows/execute-plan.md +8 -8
  221. package/{get-shit-done → gsd-core}/workflows/explore.md +3 -3
  222. package/{get-shit-done → gsd-core}/workflows/extract-learnings.md +1 -1
  223. package/{get-shit-done → gsd-core}/workflows/forensics.md +1 -1
  224. package/{get-shit-done → gsd-core}/workflows/graduation.md +1 -1
  225. package/{get-shit-done → gsd-core}/workflows/health.md +1 -1
  226. package/{get-shit-done → gsd-core}/workflows/help/modes/full.md +1 -1
  227. package/{get-shit-done → gsd-core}/workflows/import.md +1 -1
  228. package/{get-shit-done → gsd-core}/workflows/ingest-docs.md +3 -3
  229. package/{get-shit-done → gsd-core}/workflows/insert-phase.md +1 -1
  230. package/{get-shit-done → gsd-core}/workflows/list-workspaces.md +1 -1
  231. package/{get-shit-done → gsd-core}/workflows/manager.md +1 -1
  232. package/{get-shit-done → gsd-core}/workflows/map-codebase.md +1 -1
  233. package/{get-shit-done → gsd-core}/workflows/milestone-summary.md +1 -1
  234. package/{get-shit-done → gsd-core}/workflows/mvp-phase.md +7 -7
  235. package/{get-shit-done → gsd-core}/workflows/new-milestone.md +3 -3
  236. package/{get-shit-done → gsd-core}/workflows/new-project.md +6 -6
  237. package/{get-shit-done → gsd-core}/workflows/new-workspace.md +1 -1
  238. package/{get-shit-done → gsd-core}/workflows/next.md +1 -1
  239. package/{get-shit-done → gsd-core}/workflows/pause-work.md +1 -1
  240. package/{get-shit-done → gsd-core}/workflows/plan-milestone-gaps.md +1 -1
  241. package/{get-shit-done → gsd-core}/workflows/plan-phase.md +15 -15
  242. package/{get-shit-done → gsd-core}/workflows/plan-review-convergence.md +7 -7
  243. package/{get-shit-done → gsd-core}/workflows/plant-seed.md +1 -1
  244. package/{get-shit-done → gsd-core}/workflows/profile-user.md +11 -11
  245. package/{get-shit-done → gsd-core}/workflows/progress.md +1 -1
  246. package/{get-shit-done → gsd-core}/workflows/quick.md +2 -26
  247. package/{get-shit-done → gsd-core}/workflows/reapply-patches.md +2 -2
  248. package/{get-shit-done → gsd-core}/workflows/remove-phase.md +1 -1
  249. package/{get-shit-done → gsd-core}/workflows/remove-workspace.md +1 -1
  250. package/{get-shit-done → gsd-core}/workflows/resume-project.md +2 -2
  251. package/{get-shit-done → gsd-core}/workflows/review.md +1 -1
  252. package/{get-shit-done → gsd-core}/workflows/scan.md +1 -1
  253. package/{get-shit-done → gsd-core}/workflows/secure-phase.md +3 -3
  254. package/{get-shit-done → gsd-core}/workflows/settings-advanced.md +1 -1
  255. package/{get-shit-done → gsd-core}/workflows/settings-integrations.md +2 -2
  256. package/{get-shit-done → gsd-core}/workflows/settings.md +1 -1
  257. package/{get-shit-done → gsd-core}/workflows/ship.md +56 -4
  258. package/{get-shit-done → gsd-core}/workflows/sketch-wrap-up.md +1 -1
  259. package/{get-shit-done → gsd-core}/workflows/sketch.md +5 -5
  260. package/{get-shit-done → gsd-core}/workflows/spec-phase.md +2 -2
  261. package/{get-shit-done → gsd-core}/workflows/spike-wrap-up.md +1 -1
  262. package/{get-shit-done → gsd-core}/workflows/spike.md +1 -1
  263. package/{get-shit-done → gsd-core}/workflows/stats.md +1 -1
  264. package/{get-shit-done → gsd-core}/workflows/sync-skills.md +3 -3
  265. package/{get-shit-done → gsd-core}/workflows/thread.md +1 -1
  266. package/{get-shit-done → gsd-core}/workflows/transition.md +2 -2
  267. package/{get-shit-done → gsd-core}/workflows/ui-phase.md +3 -3
  268. package/{get-shit-done → gsd-core}/workflows/ui-review.md +2 -2
  269. package/{get-shit-done → gsd-core}/workflows/ultraplan-phase.md +1 -1
  270. package/{get-shit-done → gsd-core}/workflows/undo.md +2 -2
  271. package/{get-shit-done → gsd-core}/workflows/update.md +41 -16
  272. package/{get-shit-done → gsd-core}/workflows/validate-phase.md +3 -3
  273. package/{get-shit-done → gsd-core}/workflows/verify-phase.md +4 -4
  274. package/{get-shit-done → gsd-core}/workflows/verify-work.md +5 -5
  275. package/hooks/dist/gsd-check-update-worker.js +16 -3
  276. package/hooks/dist/gsd-check-update.js +7 -5
  277. package/hooks/dist/gsd-context-monitor.js +2 -2
  278. package/hooks/dist/gsd-statusline.js +39 -21
  279. package/hooks/dist/gsd-update-banner.js +6 -2
  280. package/hooks/dist/managed-hooks-registry.cjs +35 -0
  281. package/hooks/gsd-check-update-worker.js +16 -3
  282. package/hooks/gsd-check-update.js +7 -5
  283. package/hooks/gsd-context-monitor.js +2 -2
  284. package/hooks/gsd-statusline.js +39 -21
  285. package/hooks/gsd-update-banner.js +6 -2
  286. package/package.json +9 -6
  287. package/scripts/affected-tests-lib.cjs +1 -1
  288. package/scripts/base64-scan.sh +12 -0
  289. package/scripts/build-hooks.js +4 -1
  290. package/scripts/changeset/cli.cjs +2 -2
  291. package/scripts/changeset/github-release-notes.cjs +1 -1
  292. package/scripts/changeset/lint.cjs +1 -1
  293. package/scripts/check-alias-drift.cjs +8 -8
  294. package/scripts/check-env.cjs +5 -1
  295. package/scripts/ci-test-scope.cjs +25 -10
  296. package/scripts/command-contract-helpers.cjs +1 -1
  297. package/scripts/fix-slash-commands.cjs +5 -5
  298. package/scripts/gen-inventory-manifest.cjs +3 -3
  299. package/scripts/generate-package-identity.cjs +28 -7
  300. package/scripts/lib/allowlist-ratchet.cjs +136 -0
  301. package/scripts/lint-command-contract.cjs +1 -1
  302. package/scripts/lint-legacy-dir-name.cjs +156 -0
  303. package/scripts/lint-package-identity-drift.cjs +8 -8
  304. package/scripts/lint-pr-check-project-dir.cjs +0 -1
  305. package/scripts/lint-shell-command-projection-drift.cjs +1 -1
  306. package/scripts/lint-skill-deps.cjs +1 -1
  307. package/scripts/lint-test-file-count.allowlist.json +129 -32
  308. package/scripts/lint-test-file-count.cjs +85 -30
  309. package/scripts/mutation-matrix.cjs +219 -0
  310. package/scripts/prompt-injection-scan.sh +5 -1
  311. package/scripts/release-notes/format-github-release-notes.cjs +256 -0
  312. package/scripts/release-tarball-smoke.cjs +9 -9
  313. package/scripts/run-tests.cjs +11 -3
  314. package/scripts/strip-prose-atrefs.cjs +2 -2
  315. package/scripts/sync-runtime-launcher.cjs +2 -2
  316. package/scripts/verify-npm-publish.cjs +252 -0
  317. package/get-shit-done/bin/lib/active-workstream-store.cjs +0 -302
  318. package/get-shit-done/bin/lib/adr-parser.cjs +0 -394
  319. package/get-shit-done/bin/lib/agent-command-router.cjs +0 -65
  320. package/get-shit-done/bin/lib/artifacts.cjs +0 -53
  321. package/get-shit-done/bin/lib/audit.cjs +0 -755
  322. package/get-shit-done/bin/lib/check-command-router.cjs +0 -333
  323. package/get-shit-done/bin/lib/cjs-command-router-adapter.cjs +0 -118
  324. package/get-shit-done/bin/lib/clock.cjs +0 -96
  325. package/get-shit-done/bin/lib/clusters.cjs +0 -135
  326. package/get-shit-done/bin/lib/code-review-flags.cjs +0 -74
  327. package/get-shit-done/bin/lib/command-aliases.cjs +0 -831
  328. package/get-shit-done/bin/lib/command-arg-projection.cjs +0 -62
  329. package/get-shit-done/bin/lib/command-routing-hub.cjs +0 -388
  330. package/get-shit-done/bin/lib/commands.cjs +0 -1292
  331. package/get-shit-done/bin/lib/config-schema.cjs +0 -31
  332. package/get-shit-done/bin/lib/config.cjs +0 -728
  333. package/get-shit-done/bin/lib/context-utilization.cjs +0 -47
  334. package/get-shit-done/bin/lib/core.cjs +0 -2513
  335. package/get-shit-done/bin/lib/docs.cjs +0 -270
  336. package/get-shit-done/bin/lib/drift.cjs +0 -388
  337. package/get-shit-done/bin/lib/fallow-runner.cjs +0 -109
  338. package/get-shit-done/bin/lib/frontmatter.cjs +0 -389
  339. package/get-shit-done/bin/lib/gap-checker.cjs +0 -254
  340. package/get-shit-done/bin/lib/graphify.cjs +0 -592
  341. package/get-shit-done/bin/lib/gsd2-import.cjs +0 -514
  342. package/get-shit-done/bin/lib/init-command-router.cjs +0 -58
  343. package/get-shit-done/bin/lib/init.cjs +0 -2112
  344. package/get-shit-done/bin/lib/install-profiles.cjs +0 -603
  345. package/get-shit-done/bin/lib/installer-migration-authoring.cjs +0 -117
  346. package/get-shit-done/bin/lib/installer-migration-report.cjs +0 -355
  347. package/get-shit-done/bin/lib/installer-migrations/000-first-time-baseline.cjs +0 -220
  348. package/get-shit-done/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +0 -41
  349. package/get-shit-done/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +0 -80
  350. package/get-shit-done/bin/lib/installer-migrations.cjs +0 -778
  351. package/get-shit-done/bin/lib/intel.cjs +0 -708
  352. package/get-shit-done/bin/lib/learnings.cjs +0 -421
  353. package/get-shit-done/bin/lib/milestone.cjs +0 -372
  354. package/get-shit-done/bin/lib/model-catalog.cjs +0 -229
  355. package/get-shit-done/bin/lib/model-profiles.cjs +0 -31
  356. package/get-shit-done/bin/lib/observability/event.cjs +0 -82
  357. package/get-shit-done/bin/lib/observability/logger.cjs +0 -174
  358. package/get-shit-done/bin/lib/phase-command-router.cjs +0 -191
  359. package/get-shit-done/bin/lib/phase-lifecycle.cjs +0 -79
  360. package/get-shit-done/bin/lib/phase.cjs +0 -1607
  361. package/get-shit-done/bin/lib/phases-command-router.cjs +0 -39
  362. package/get-shit-done/bin/lib/planning-workspace.cjs +0 -238
  363. package/get-shit-done/bin/lib/profile-output.cjs +0 -1141
  364. package/get-shit-done/bin/lib/profile-pipeline.cjs +0 -539
  365. package/get-shit-done/bin/lib/project-root.cjs +0 -112
  366. package/get-shit-done/bin/lib/prompt-budget.cjs +0 -399
  367. package/get-shit-done/bin/lib/review-reviewer-selection.cjs +0 -126
  368. package/get-shit-done/bin/lib/roadmap-command-router.cjs +0 -162
  369. package/get-shit-done/bin/lib/roadmap-upgrade.cjs +0 -569
  370. package/get-shit-done/bin/lib/roadmap.cjs +0 -651
  371. package/get-shit-done/bin/lib/runtime-artifact-layout.cjs +0 -301
  372. package/get-shit-done/bin/lib/runtime-homes.cjs +0 -222
  373. package/get-shit-done/bin/lib/runtime-name-policy.cjs +0 -83
  374. package/get-shit-done/bin/lib/runtime-slash.cjs +0 -112
  375. package/get-shit-done/bin/lib/secrets.cjs +0 -32
  376. package/get-shit-done/bin/lib/security.cjs +0 -600
  377. package/get-shit-done/bin/lib/shell-command-projection.cjs +0 -535
  378. package/get-shit-done/bin/lib/state-command-router.cjs +0 -252
  379. package/get-shit-done/bin/lib/state.cjs +0 -2073
  380. package/get-shit-done/bin/lib/surface.cjs +0 -470
  381. package/get-shit-done/bin/lib/task-command-router.cjs +0 -81
  382. package/get-shit-done/bin/lib/template.cjs +0 -228
  383. package/get-shit-done/bin/lib/uat.cjs +0 -289
  384. package/get-shit-done/bin/lib/ui-safety-gate.cjs +0 -111
  385. package/get-shit-done/bin/lib/update-context.cjs +0 -209
  386. package/get-shit-done/bin/lib/validate-command-router.cjs +0 -83
  387. package/get-shit-done/bin/lib/validate.cjs +0 -118
  388. package/get-shit-done/bin/lib/verify-command-router.cjs +0 -40
  389. package/get-shit-done/bin/lib/verify.cjs +0 -1614
  390. package/get-shit-done/bin/lib/workstream-inventory.cjs +0 -146
  391. package/get-shit-done/bin/lib/workstream.cjs +0 -389
  392. package/get-shit-done/bin/lib/worktree-safety.cjs +0 -985
  393. package/get-shit-done/workflows/_runtime-launcher.snippet.sh +0 -1
  394. package/scripts/lint-no-source-grep-extras.cjs +0 -81
  395. package/scripts/lint-no-source-grep.cjs +0 -174
  396. /package/{get-shit-done → gsd-core}/bin/shared/config-defaults.manifest.json +0 -0
  397. /package/{get-shit-done → gsd-core}/bin/shared/model-catalog.json +0 -0
  398. /package/{get-shit-done → gsd-core}/bin/shared/runtime-aliases.manifest.json +0 -0
  399. /package/{get-shit-done → gsd-core}/bin/verify-reapply-patches.cjs +0 -0
  400. /package/{get-shit-done → gsd-core}/contexts/dev.md +0 -0
  401. /package/{get-shit-done → gsd-core}/contexts/research.md +0 -0
  402. /package/{get-shit-done → gsd-core}/contexts/review.md +0 -0
  403. /package/{get-shit-done → gsd-core}/references/agent-contracts.md +0 -0
  404. /package/{get-shit-done → gsd-core}/references/ai-evals.md +0 -0
  405. /package/{get-shit-done → gsd-core}/references/ai-frameworks.md +0 -0
  406. /package/{get-shit-done → gsd-core}/references/autonomous-smart-discuss.md +0 -0
  407. /package/{get-shit-done → gsd-core}/references/checkpoints.md +0 -0
  408. /package/{get-shit-done → gsd-core}/references/common-bug-patterns.md +0 -0
  409. /package/{get-shit-done → gsd-core}/references/context-budget.md +0 -0
  410. /package/{get-shit-done → gsd-core}/references/continuation-format.md +0 -0
  411. /package/{get-shit-done → gsd-core}/references/debugger-philosophy.md +0 -0
  412. /package/{get-shit-done → gsd-core}/references/decimal-phase-calculation.md +0 -0
  413. /package/{get-shit-done → gsd-core}/references/doc-conflict-engine.md +0 -0
  414. /package/{get-shit-done → gsd-core}/references/domain-probes.md +0 -0
  415. /package/{get-shit-done → gsd-core}/references/execute-mvp-tdd.md +0 -0
  416. /package/{get-shit-done → gsd-core}/references/executor-examples.md +0 -0
  417. /package/{get-shit-done → gsd-core}/references/gate-prompts.md +0 -0
  418. /package/{get-shit-done → gsd-core}/references/gates.md +0 -0
  419. /package/{get-shit-done → gsd-core}/references/git-integration.md +0 -0
  420. /package/{get-shit-done → gsd-core}/references/git-planning-commit.md +0 -0
  421. /package/{get-shit-done → gsd-core}/references/ios-scaffold.md +0 -0
  422. /package/{get-shit-done → gsd-core}/references/mandatory-initial-read.md +0 -0
  423. /package/{get-shit-done → gsd-core}/references/model-profiles.md +0 -0
  424. /package/{get-shit-done → gsd-core}/references/phase-argument-parsing.md +0 -0
  425. /package/{get-shit-done → gsd-core}/references/planner-antipatterns.md +0 -0
  426. /package/{get-shit-done → gsd-core}/references/planner-chunked.md +0 -0
  427. /package/{get-shit-done → gsd-core}/references/planner-gap-closure.md +0 -0
  428. /package/{get-shit-done → gsd-core}/references/planner-human-verify-mode.md +0 -0
  429. /package/{get-shit-done → gsd-core}/references/planner-interface-context.md +0 -0
  430. /package/{get-shit-done → gsd-core}/references/planner-reviews.md +0 -0
  431. /package/{get-shit-done → gsd-core}/references/planner-revision.md +0 -0
  432. /package/{get-shit-done → gsd-core}/references/planner-source-audit.md +0 -0
  433. /package/{get-shit-done → gsd-core}/references/planning-config.md +0 -0
  434. /package/{get-shit-done → gsd-core}/references/project-skills-discovery.md +0 -0
  435. /package/{get-shit-done → gsd-core}/references/questioning.md +0 -0
  436. /package/{get-shit-done → gsd-core}/references/revision-loop.md +0 -0
  437. /package/{get-shit-done → gsd-core}/references/scout-codebase.md +0 -0
  438. /package/{get-shit-done → gsd-core}/references/skeleton-template.md +0 -0
  439. /package/{get-shit-done → gsd-core}/references/sketch-interactivity.md +0 -0
  440. /package/{get-shit-done → gsd-core}/references/sketch-theme-system.md +0 -0
  441. /package/{get-shit-done → gsd-core}/references/sketch-tooling.md +0 -0
  442. /package/{get-shit-done → gsd-core}/references/sketch-variant-patterns.md +0 -0
  443. /package/{get-shit-done → gsd-core}/references/spidr-splitting.md +0 -0
  444. /package/{get-shit-done → gsd-core}/references/tdd.md +0 -0
  445. /package/{get-shit-done → gsd-core}/references/thinking-models-debug.md +0 -0
  446. /package/{get-shit-done → gsd-core}/references/thinking-models-execution.md +0 -0
  447. /package/{get-shit-done → gsd-core}/references/thinking-models-planning.md +0 -0
  448. /package/{get-shit-done → gsd-core}/references/thinking-models-research.md +0 -0
  449. /package/{get-shit-done → gsd-core}/references/thinking-models-verification.md +0 -0
  450. /package/{get-shit-done → gsd-core}/references/thinking-partner.md +0 -0
  451. /package/{get-shit-done → gsd-core}/references/ui-brand.md +0 -0
  452. /package/{get-shit-done → gsd-core}/references/universal-anti-patterns.md +0 -0
  453. /package/{get-shit-done → gsd-core}/references/user-profiling.md +0 -0
  454. /package/{get-shit-done → gsd-core}/references/user-story-template.md +0 -0
  455. /package/{get-shit-done → gsd-core}/references/verification-overrides.md +0 -0
  456. /package/{get-shit-done → gsd-core}/references/verify-mvp-mode.md +0 -0
  457. /package/{get-shit-done → gsd-core}/references/workstream-flag.md +0 -0
  458. /package/{get-shit-done → gsd-core}/templates/AI-SPEC.md +0 -0
  459. /package/{get-shit-done → gsd-core}/templates/DEBUG.md +0 -0
  460. /package/{get-shit-done → gsd-core}/templates/SECURITY.md +0 -0
  461. /package/{get-shit-done → gsd-core}/templates/UAT.md +0 -0
  462. /package/{get-shit-done → gsd-core}/templates/UI-SPEC.md +0 -0
  463. /package/{get-shit-done → gsd-core}/templates/VALIDATION.md +0 -0
  464. /package/{get-shit-done → gsd-core}/templates/claude-md.md +0 -0
  465. /package/{get-shit-done → gsd-core}/templates/codebase/architecture.md +0 -0
  466. /package/{get-shit-done → gsd-core}/templates/codebase/concerns.md +0 -0
  467. /package/{get-shit-done → gsd-core}/templates/codebase/conventions.md +0 -0
  468. /package/{get-shit-done → gsd-core}/templates/codebase/integrations.md +0 -0
  469. /package/{get-shit-done → gsd-core}/templates/codebase/stack.md +0 -0
  470. /package/{get-shit-done → gsd-core}/templates/codebase/testing.md +0 -0
  471. /package/{get-shit-done → gsd-core}/templates/config.json +0 -0
  472. /package/{get-shit-done → gsd-core}/templates/context.md +0 -0
  473. /package/{get-shit-done → gsd-core}/templates/continue-here.md +0 -0
  474. /package/{get-shit-done → gsd-core}/templates/debug-subagent-prompt.md +0 -0
  475. /package/{get-shit-done → gsd-core}/templates/dev-preferences.md +0 -0
  476. /package/{get-shit-done → gsd-core}/templates/discovery.md +0 -0
  477. /package/{get-shit-done → gsd-core}/templates/discussion-log.md +0 -0
  478. /package/{get-shit-done → gsd-core}/templates/milestone-archive.md +0 -0
  479. /package/{get-shit-done → gsd-core}/templates/milestone.md +0 -0
  480. /package/{get-shit-done → gsd-core}/templates/planner-subagent-prompt.md +0 -0
  481. /package/{get-shit-done → gsd-core}/templates/project.md +0 -0
  482. /package/{get-shit-done → gsd-core}/templates/requirements.md +0 -0
  483. /package/{get-shit-done → gsd-core}/templates/research-project/ARCHITECTURE.md +0 -0
  484. /package/{get-shit-done → gsd-core}/templates/research-project/FEATURES.md +0 -0
  485. /package/{get-shit-done → gsd-core}/templates/research-project/PITFALLS.md +0 -0
  486. /package/{get-shit-done → gsd-core}/templates/research-project/STACK.md +0 -0
  487. /package/{get-shit-done → gsd-core}/templates/research-project/SUMMARY.md +0 -0
  488. /package/{get-shit-done → gsd-core}/templates/research.md +0 -0
  489. /package/{get-shit-done → gsd-core}/templates/retrospective.md +0 -0
  490. /package/{get-shit-done → gsd-core}/templates/roadmap.md +0 -0
  491. /package/{get-shit-done → gsd-core}/templates/spec.md +0 -0
  492. /package/{get-shit-done → gsd-core}/templates/state.md +0 -0
  493. /package/{get-shit-done → gsd-core}/templates/summary-complex.md +0 -0
  494. /package/{get-shit-done → gsd-core}/templates/summary-minimal.md +0 -0
  495. /package/{get-shit-done → gsd-core}/templates/summary-standard.md +0 -0
  496. /package/{get-shit-done → gsd-core}/templates/summary.md +0 -0
  497. /package/{get-shit-done → gsd-core}/templates/user-profile.md +0 -0
  498. /package/{get-shit-done → gsd-core}/templates/user-setup.md +0 -0
  499. /package/{get-shit-done → gsd-core}/templates/verification-report.md +0 -0
  500. /package/{get-shit-done → gsd-core}/workflows/analyze-dependencies.md +0 -0
  501. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/all.md +0 -0
  502. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/analyze.md +0 -0
  503. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/batch.md +0 -0
  504. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/default.md +0 -0
  505. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/modes/text.md +0 -0
  506. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/templates/checkpoint.json +0 -0
  507. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/templates/context.md +0 -0
  508. /package/{get-shit-done → gsd-core}/workflows/discuss-phase/templates/discussion-log.md +0 -0
  509. /package/{get-shit-done → gsd-core}/workflows/discuss-phase-power.md +0 -0
  510. /package/{get-shit-done → gsd-core}/workflows/execute-phase/steps/per-plan-worktree-gate.md +0 -0
  511. /package/{get-shit-done → gsd-core}/workflows/fast.md +0 -0
  512. /package/{get-shit-done → gsd-core}/workflows/help/modes/brief.md +0 -0
  513. /package/{get-shit-done → gsd-core}/workflows/help/modes/default.md +0 -0
  514. /package/{get-shit-done → gsd-core}/workflows/help/modes/topic.md +0 -0
  515. /package/{get-shit-done → gsd-core}/workflows/help.md +0 -0
  516. /package/{get-shit-done → gsd-core}/workflows/inbox.md +0 -0
  517. /package/{get-shit-done → gsd-core}/workflows/list-phase-assumptions.md +0 -0
  518. /package/{get-shit-done → gsd-core}/workflows/node-repair.md +0 -0
  519. /package/{get-shit-done → gsd-core}/workflows/note.md +0 -0
  520. /package/{get-shit-done → gsd-core}/workflows/pr-branch.md +0 -0
  521. /package/{get-shit-done → gsd-core}/workflows/session-report.md +0 -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, [], ['validate', 'tdd']);
38
+ init.cmdInitPlanPhase(cwd, args[2], raw, { validate: namedArgs['validate'], tdd: namedArgs['tdd'] });
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
+ };