@opengsd/gsd-core 1.3.0-rc.1 → 1.3.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 (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 +784 -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
@@ -1,514 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * gsd2-import — Reverse migration from GSD-2 (.gsd/) to GSD v1 (.planning/)
5
- *
6
- * Reads a GSD-2 project directory structure and produces a complete
7
- * .planning/ artifact tree in GSD v1 format.
8
- *
9
- * GSD-2 hierarchy: Milestone → Slice → Task
10
- * GSD v1 hierarchy: Milestone (in ROADMAP.md) → Phase → Plan
11
- *
12
- * Mapping rules:
13
- * - Slices are numbered sequentially across all milestones (01, 02, …)
14
- * - Tasks within a slice become plans (01-01, 01-02, …)
15
- * - Completed slices ([x] in ROADMAP) → [x] phases in ROADMAP.md
16
- * - Tasks with a SUMMARY file → SUMMARY.md written
17
- * - Slice RESEARCH.md → phase XX-RESEARCH.md
18
- */
19
-
20
- const fs = require('node:fs');
21
- const path = require('node:path');
22
- const { platformWriteSync } = require('./shell-command-projection.cjs');
23
-
24
- // ─── Utilities ──────────────────────────────────────────────────────────────
25
-
26
- function readOptional(filePath) {
27
- try { return fs.readFileSync(filePath, 'utf8'); } catch { return null; }
28
- }
29
-
30
- function zeroPad(n, width = 2) {
31
- return String(n).padStart(width, '0');
32
- }
33
-
34
- function slugify(title) {
35
- return title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
36
- }
37
-
38
- // ─── GSD-2 Parser ───────────────────────────────────────────────────────────
39
-
40
- /**
41
- * Find the .gsd/ directory starting from a project root.
42
- * Returns the absolute path or null if not found.
43
- */
44
- function findGsd2Root(startPath) {
45
- if (path.basename(startPath) === '.gsd' && fs.existsSync(startPath)) {
46
- return startPath;
47
- }
48
- const candidate = path.join(startPath, '.gsd');
49
- if (fs.existsSync(candidate) && fs.statSync(candidate).isDirectory()) {
50
- return candidate;
51
- }
52
- return null;
53
- }
54
-
55
- /**
56
- * Parse the ## Slices section from a GSD-2 milestone ROADMAP.md.
57
- * Each slice entry looks like:
58
- * - [x] **S01: Title** `risk:medium` `depends:[S00]`
59
- */
60
- function parseSlicesFromRoadmap(content) {
61
- const slices = [];
62
- const sectionMatch = content.match(/## Slices\n([\s\S]*?)(?:\n## |\n# |$)/);
63
- if (!sectionMatch) return slices;
64
-
65
- for (const line of sectionMatch[1].split('\n')) {
66
- const m = line.match(/^- \[([x ])\]\s+\*\*(\w+):\s*([^*]+)\*\*/);
67
- if (!m) continue;
68
- slices.push({ done: m[1] === 'x', id: m[2].trim(), title: m[3].trim() });
69
- }
70
- return slices;
71
- }
72
-
73
- /**
74
- * Parse the milestone title from the first heading in a GSD-2 ROADMAP.md.
75
- * Format: # M001: Title
76
- */
77
- function parseMilestoneTitle(content) {
78
- const m = content.match(/^# \w+:\s*(.+)/m);
79
- return m ? m[1].trim() : null;
80
- }
81
-
82
- /**
83
- * Parse a task title from a GSD-2 T##-PLAN.md.
84
- * Format: # T01: Title
85
- */
86
- function parseTaskTitle(content, fallback) {
87
- const m = content.match(/^# \w+:\s*(.+)/m);
88
- return m ? m[1].trim() : fallback;
89
- }
90
-
91
- /**
92
- * Parse the ## Description body from a GSD-2 task plan.
93
- */
94
- function parseTaskDescription(content) {
95
- const m = content.match(/## Description\n+([\s\S]+?)(?:\n## |\n# |$)/);
96
- return m ? m[1].trim() : '';
97
- }
98
-
99
- /**
100
- * Parse ## Must-Haves items from a GSD-2 task plan.
101
- */
102
- function parseTaskMustHaves(content) {
103
- const m = content.match(/## Must-Haves\n+([\s\S]+?)(?:\n## |\n# |$)/);
104
- if (!m) return [];
105
- return m[1].split('\n')
106
- .map(l => l.match(/^- \[[ x]\]\s*(.+)/))
107
- .filter(Boolean)
108
- .map(match => match[1].trim());
109
- }
110
-
111
- /**
112
- * Read all task plan files from a GSD-2 tasks/ directory.
113
- */
114
- function readTasksDir(tasksDir) {
115
- if (!fs.existsSync(tasksDir)) return [];
116
-
117
- return fs.readdirSync(tasksDir)
118
- .filter(f => f.endsWith('-PLAN.md'))
119
- .sort()
120
- .map(tf => {
121
- const tid = tf.replace('-PLAN.md', '');
122
- const plan = readOptional(path.join(tasksDir, tf));
123
- const summary = readOptional(path.join(tasksDir, `${tid}-SUMMARY.md`));
124
- return {
125
- id: tid,
126
- title: plan ? parseTaskTitle(plan, tid) : tid,
127
- description: plan ? parseTaskDescription(plan) : '',
128
- mustHaves: plan ? parseTaskMustHaves(plan) : [],
129
- plan,
130
- summary,
131
- done: !!summary,
132
- };
133
- });
134
- }
135
-
136
- /**
137
- * Parse a complete GSD-2 .gsd/ directory into a structured representation.
138
- */
139
- function parseGsd2(gsdDir) {
140
- const data = {
141
- projectContent: readOptional(path.join(gsdDir, 'PROJECT.md')),
142
- requirements: readOptional(path.join(gsdDir, 'REQUIREMENTS.md')),
143
- milestones: [],
144
- };
145
-
146
- const milestonesBase = path.join(gsdDir, 'milestones');
147
- if (!fs.existsSync(milestonesBase)) return data;
148
-
149
- const milestoneIds = fs.readdirSync(milestonesBase)
150
- .filter(d => fs.statSync(path.join(milestonesBase, d)).isDirectory())
151
- .sort();
152
-
153
- for (const mid of milestoneIds) {
154
- const mDir = path.join(milestonesBase, mid);
155
- const roadmapContent = readOptional(path.join(mDir, `${mid}-ROADMAP.md`));
156
- const slicesDir = path.join(mDir, 'slices');
157
-
158
- const sliceInfos = roadmapContent ? parseSlicesFromRoadmap(roadmapContent) : [];
159
-
160
- const slices = sliceInfos.map(info => {
161
- const sDir = path.join(slicesDir, info.id);
162
- const hasSDir = fs.existsSync(sDir);
163
- return {
164
- id: info.id,
165
- title: info.title,
166
- done: info.done,
167
- plan: hasSDir ? readOptional(path.join(sDir, `${info.id}-PLAN.md`)) : null,
168
- summary: hasSDir ? readOptional(path.join(sDir, `${info.id}-SUMMARY.md`)) : null,
169
- research: hasSDir ? readOptional(path.join(sDir, `${info.id}-RESEARCH.md`)) : null,
170
- context: hasSDir ? readOptional(path.join(sDir, `${info.id}-CONTEXT.md`)) : null,
171
- tasks: hasSDir ? readTasksDir(path.join(sDir, 'tasks')) : [],
172
- };
173
- });
174
-
175
- data.milestones.push({
176
- id: mid,
177
- title: roadmapContent ? (parseMilestoneTitle(roadmapContent) ?? mid) : mid,
178
- research: readOptional(path.join(mDir, `${mid}-RESEARCH.md`)),
179
- slices,
180
- });
181
- }
182
-
183
- return data;
184
- }
185
-
186
- // ─── Artifact Builders ──────────────────────────────────────────────────────
187
-
188
- /**
189
- * Build a GSD v1 PLAN.md from a GSD-2 task.
190
- */
191
- function buildPlanMd(task, phasePrefix, planPrefix, phaseSlug, milestoneTitle) {
192
- const lines = [
193
- '---',
194
- `phase: "${phasePrefix}"`,
195
- `plan: "${planPrefix}"`,
196
- 'type: "implementation"',
197
- '---',
198
- '',
199
- '<objective>',
200
- task.title,
201
- '</objective>',
202
- '',
203
- '<context>',
204
- `Phase: ${phasePrefix} (${phaseSlug}) — Milestone: ${milestoneTitle}`,
205
- ];
206
-
207
- if (task.description) {
208
- lines.push('', task.description);
209
- }
210
-
211
- lines.push('</context>');
212
-
213
- if (task.mustHaves.length > 0) {
214
- lines.push('', '<must_haves>');
215
- for (const mh of task.mustHaves) {
216
- lines.push(`- ${mh}`);
217
- }
218
- lines.push('</must_haves>');
219
- }
220
-
221
- return lines.join('\n') + '\n';
222
- }
223
-
224
- /**
225
- * Build a GSD v1 SUMMARY.md from a GSD-2 task summary.
226
- * Strips the GSD-2 frontmatter and preserves the body.
227
- */
228
- function buildSummaryMd(task, phasePrefix, planPrefix) {
229
- const raw = task.summary || '';
230
- // Strip GSD-2 frontmatter block (--- ... ---) if present
231
- const bodyMatch = raw.match(/^---[\s\S]*?---\n+([\s\S]*)$/);
232
- const body = bodyMatch ? bodyMatch[1].trim() : raw.trim();
233
-
234
- return [
235
- '---',
236
- `phase: "${phasePrefix}"`,
237
- `plan: "${planPrefix}"`,
238
- '---',
239
- '',
240
- body || 'Task completed (migrated from GSD-2).',
241
- '',
242
- ].join('\n');
243
- }
244
-
245
- /**
246
- * Build a GSD v1 XX-CONTEXT.md from a GSD-2 slice.
247
- */
248
- function buildContextMd(slice, phasePrefix) {
249
- const lines = [
250
- `# Phase ${phasePrefix} Context`,
251
- '',
252
- `Migrated from GSD-2 slice ${slice.id}: ${slice.title}`,
253
- ];
254
-
255
- const extra = slice.context || '';
256
- if (extra.trim()) {
257
- lines.push('', extra.trim());
258
- }
259
-
260
- return lines.join('\n') + '\n';
261
- }
262
-
263
- /**
264
- * Build the GSD v1 ROADMAP.md with milestone-sectioned format.
265
- */
266
- function buildRoadmapMd(milestones, phaseMap) {
267
- const lines = ['# Roadmap', ''];
268
-
269
- for (const milestone of milestones) {
270
- lines.push(`## ${milestone.id}: ${milestone.title}`, '');
271
- const mPhases = phaseMap.filter(p => p.milestoneId === milestone.id);
272
- for (const { slice, phaseNum } of mPhases) {
273
- const prefix = zeroPad(phaseNum);
274
- const slug = slugify(slice.title);
275
- const check = slice.done ? 'x' : ' ';
276
- lines.push(`- [${check}] **Phase ${prefix}: ${slug}** — ${slice.title}`);
277
- }
278
- lines.push('');
279
- }
280
-
281
- return lines.join('\n');
282
- }
283
-
284
- /**
285
- * Build the GSD v1 STATE.md reflecting the current position in the project.
286
- */
287
- function buildStateMd(phaseMap) {
288
- const currentEntry = phaseMap.find(p => !p.slice.done);
289
- const totalPhases = phaseMap.length;
290
- const donePhases = phaseMap.filter(p => p.slice.done).length;
291
- const pct = totalPhases > 0 ? Math.round((donePhases / totalPhases) * 100) : 0;
292
-
293
- const currentPhaseNum = currentEntry ? zeroPad(currentEntry.phaseNum) : zeroPad(totalPhases);
294
- const currentSlug = currentEntry ? slugify(currentEntry.slice.title) : 'complete';
295
- const status = currentEntry ? 'Ready to plan' : 'All phases complete';
296
-
297
- const filled = Math.round(pct / 10);
298
- const bar = `[${'█'.repeat(filled)}${'░'.repeat(10 - filled)}]`;
299
- const today = new Date().toISOString().split('T')[0];
300
-
301
- return [
302
- '# Project State',
303
- '',
304
- '## Project Reference',
305
- '',
306
- 'See: .planning/PROJECT.md',
307
- '',
308
- `**Current focus:** Phase ${currentPhaseNum} (${currentSlug})`,
309
- '',
310
- '## Current Position',
311
- '',
312
- `Phase: ${currentPhaseNum} of ${zeroPad(totalPhases)} (${currentSlug})`,
313
- `Status: ${status}`,
314
- `Last activity: ${today} — Migrated from GSD-2`,
315
- '',
316
- `Progress: ${bar} ${pct}%`,
317
- '',
318
- '## Accumulated Context',
319
- '',
320
- '### Decisions',
321
- '',
322
- 'Migrated from GSD-2. Review PROJECT.md for key decisions.',
323
- '',
324
- '### Blockers/Concerns',
325
- '',
326
- 'None.',
327
- '',
328
- '## Session Continuity',
329
- '',
330
- `Last session: ${today}`,
331
- 'Stopped at: Migration from GSD-2 completed',
332
- 'Resume file: None',
333
- '',
334
- ].join('\n');
335
- }
336
-
337
- // ─── Transformer ─────────────────────────────────────────────────────────────
338
-
339
- /**
340
- * Convert parsed GSD-2 data into a map of relative path → file content.
341
- * All paths are relative to the .planning/ root.
342
- */
343
- function buildPlanningArtifacts(gsd2Data) {
344
- const artifacts = new Map();
345
-
346
- // Passthrough files
347
- artifacts.set('PROJECT.md', gsd2Data.projectContent || '# Project\n\n(Migrated from GSD-2)\n');
348
- if (gsd2Data.requirements) {
349
- artifacts.set('REQUIREMENTS.md', gsd2Data.requirements);
350
- }
351
-
352
- // Minimal valid v1 config
353
- artifacts.set('config.json', JSON.stringify({ version: 1 }, null, 2) + '\n');
354
-
355
- // Build sequential phase map: flatten Milestones → Slices into numbered phases
356
- const phaseMap = [];
357
- let phaseNum = 1;
358
- for (const milestone of gsd2Data.milestones) {
359
- for (const slice of milestone.slices) {
360
- phaseMap.push({ milestoneId: milestone.id, milestoneTitle: milestone.title, slice, phaseNum });
361
- phaseNum++;
362
- }
363
- }
364
-
365
- artifacts.set('ROADMAP.md', buildRoadmapMd(gsd2Data.milestones, phaseMap));
366
- artifacts.set('STATE.md', buildStateMd(phaseMap));
367
-
368
- for (const { slice, phaseNum, milestoneTitle } of phaseMap) {
369
- const prefix = zeroPad(phaseNum);
370
- const slug = slugify(slice.title);
371
- const dir = `phases/${prefix}-${slug}`;
372
-
373
- artifacts.set(`${dir}/${prefix}-CONTEXT.md`, buildContextMd(slice, prefix));
374
-
375
- if (slice.research) {
376
- artifacts.set(`${dir}/${prefix}-RESEARCH.md`, slice.research);
377
- }
378
-
379
- for (let i = 0; i < slice.tasks.length; i++) {
380
- const task = slice.tasks[i];
381
- const planPrefix = zeroPad(i + 1);
382
-
383
- artifacts.set(
384
- `${dir}/${prefix}-${planPrefix}-PLAN.md`,
385
- buildPlanMd(task, prefix, planPrefix, slug, milestoneTitle)
386
- );
387
-
388
- if (task.done && task.summary) {
389
- artifacts.set(
390
- `${dir}/${prefix}-${planPrefix}-SUMMARY.md`,
391
- buildSummaryMd(task, prefix, planPrefix)
392
- );
393
- }
394
- }
395
- }
396
-
397
- return artifacts;
398
- }
399
-
400
- // ─── Preview ─────────────────────────────────────────────────────────────────
401
-
402
- /**
403
- * Format a dry-run preview string for display before writing.
404
- */
405
- function buildPreview(gsd2Data, artifacts, projectDir) {
406
- const lines = ['Preview — files that will be created in .planning/:'];
407
-
408
- for (const rel of artifacts.keys()) {
409
- lines.push(` ${rel}`);
410
- }
411
-
412
- const totalSlices = gsd2Data.milestones.reduce((s, m) => s + m.slices.length, 0);
413
- const doneSlices = gsd2Data.milestones.reduce((s, m) => s + m.slices.filter(sl => sl.done).length, 0);
414
- const allTasks = gsd2Data.milestones.flatMap(m => m.slices.flatMap(sl => sl.tasks));
415
- const doneTasks = allTasks.filter(t => t.done).length;
416
-
417
- lines.push('');
418
- lines.push(`Milestones: ${gsd2Data.milestones.length}`);
419
- lines.push(`Phases (slices): ${totalSlices} (${doneSlices} completed)`);
420
- lines.push(`Plans (tasks): ${allTasks.length} (${doneTasks} completed)`);
421
- lines.push('');
422
- lines.push('Cannot migrate automatically:');
423
- lines.push(' - GSD-2 cost/token ledger (no v1 equivalent)');
424
- const { formatGsdSlash, resolveRuntime } = require('./runtime-slash.cjs');
425
- lines.push(` - GSD-2 database state (rebuilt from files on first ${formatGsdSlash('health', resolveRuntime(projectDir))})`);
426
- lines.push(' - VS Code extension state');
427
-
428
- return lines.join('\n');
429
- }
430
-
431
- // ─── Writer ───────────────────────────────────────────────────────────────────
432
-
433
- /**
434
- * Write all artifacts to the .planning/ directory.
435
- */
436
- function writePlanningDir(artifacts, planningRoot) {
437
- for (const [rel, content] of artifacts) {
438
- const absPath = path.join(planningRoot, rel);
439
- platformWriteSync(absPath, content);
440
- }
441
- }
442
-
443
- // ─── Command Handler ──────────────────────────────────────────────────────────
444
-
445
- /**
446
- * Entry point called from gsd-tools.cjs.
447
- * Supports: --force, --dry-run, --path <dir>
448
- */
449
- function cmdFromGsd2(args, cwd, raw) {
450
- const { output, error } = require('./core.cjs');
451
-
452
- const force = args.includes('--force');
453
- const dryRun = args.includes('--dry-run');
454
-
455
- const pathIdx = args.indexOf('--path');
456
- const projectDir = pathIdx >= 0 && args[pathIdx + 1]
457
- ? path.resolve(cwd, args[pathIdx + 1])
458
- : cwd;
459
-
460
- const gsdDir = findGsd2Root(projectDir);
461
- if (!gsdDir) {
462
- return output({ success: false, error: `No .gsd/ directory found in ${projectDir}` }, raw);
463
- }
464
-
465
- const planningRoot = path.join(path.dirname(gsdDir), '.planning');
466
- if (fs.existsSync(planningRoot) && !force) {
467
- return output({
468
- success: false,
469
- error: `.planning/ already exists at ${planningRoot}. Pass --force to overwrite.`,
470
- }, raw);
471
- }
472
-
473
- const gsd2Data = parseGsd2(gsdDir);
474
- const artifacts = buildPlanningArtifacts(gsd2Data);
475
- // Use projectDir (resolved from --path) — not the process cwd — so the
476
- // preview command targets the project actually being imported (#3584).
477
- const preview = buildPreview(gsd2Data, artifacts, projectDir);
478
-
479
- if (dryRun) {
480
- return output({ success: true, dryRun: true, preview }, raw);
481
- }
482
-
483
- writePlanningDir(artifacts, planningRoot);
484
-
485
- return output({
486
- success: true,
487
- planningDir: planningRoot,
488
- filesWritten: artifacts.size,
489
- milestones: gsd2Data.milestones.length,
490
- preview,
491
- }, raw);
492
- }
493
-
494
- module.exports = {
495
- findGsd2Root,
496
- parseGsd2,
497
- buildPlanningArtifacts,
498
- buildPreview,
499
- writePlanningDir,
500
- cmdFromGsd2,
501
- // Exported for unit tests
502
- parseSlicesFromRoadmap,
503
- parseMilestoneTitle,
504
- parseTaskTitle,
505
- parseTaskDescription,
506
- parseTaskMustHaves,
507
- buildPlanMd,
508
- buildSummaryMd,
509
- buildContextMd,
510
- buildRoadmapMd,
511
- buildStateMd,
512
- slugify,
513
- zeroPad,
514
- };
@@ -1,58 +0,0 @@
1
- 'use strict';
2
-
3
- const { INIT_SUBCOMMANDS } = require('./command-aliases.cjs');
4
- const { routeCjsCommandFamily } = require('./cjs-command-router-adapter.cjs');
5
- const { parseNamedArgs } = require('./command-arg-projection.cjs');
6
-
7
- /**
8
- * Manifest-backed init subcommand router.
9
- * Keeps gsd-tools.cjs thin while preserving existing command semantics.
10
- *
11
- * Phase 6: all init.* subcommands have SDK equivalents and are dispatched
12
- * via executeForCjs (the sync bridge). CJS fallback retained when:
13
- * - GSD_WORKSTREAM is active (workstream-scoped requests fall through to CJS).
14
- * - SDK is unavailable (build not present).
15
- *
16
- * CJS-only subcommands: none.
17
- * SDK-only (unsupported in CJS router): none.
18
- */
19
- function routeInitCommand({ init, args, cwd, raw, error }) {
20
- routeCjsCommandFamily({
21
- args,
22
- subcommands: INIT_SUBCOMMANDS,
23
- unsupported: {},
24
- error,
25
- unknownMessage: (_subcommand, available) => `Unknown init workflow: ${_subcommand}\nAvailable: ${available.join(', ')}`,
26
- handlers: {
27
- 'execute-phase': () => {
28
- const { validate: epValidate, tdd: epTdd } = parseNamedArgs(args, [], ['validate', 'tdd']);
29
- init.cmdInitExecutePhase(cwd, args[2], raw, { validate: epValidate, tdd: epTdd });
30
- },
31
- 'plan-phase': () => {
32
- const { validate: ppValidate, tdd: ppTdd } = parseNamedArgs(args, [], ['validate', 'tdd']);
33
- init.cmdInitPlanPhase(cwd, args[2], raw, { validate: ppValidate, tdd: ppTdd });
34
- },
35
- 'new-project': () => init.cmdInitNewProject(cwd, raw),
36
- 'new-milestone': () => init.cmdInitNewMilestone(cwd, raw),
37
- quick: () => init.cmdInitQuick(cwd, args.slice(2).join(' '), raw),
38
- 'ingest-docs': () => init.cmdInitIngestDocs(cwd, raw),
39
- resume: () => init.cmdInitResume(cwd, raw),
40
- 'verify-work': () => init.cmdInitVerifyWork(cwd, args[2], raw),
41
- 'phase-op': () => init.cmdInitPhaseOp(cwd, args[2], raw),
42
- todos: () => init.cmdInitTodos(cwd, args[2], raw),
43
- 'milestone-op': () => init.cmdInitMilestoneOp(cwd, raw),
44
- 'map-codebase': () => init.cmdInitMapCodebase(cwd, raw),
45
- progress: () => init.cmdInitProgress(cwd, raw),
46
- // Keep manager on CJS for now so runtime-specific command rendering
47
- // (e.g. $gsd-* for codex) stays consistent with runtime-slash helpers.
48
- manager: () => init.cmdInitManager(cwd, raw),
49
- 'new-workspace': () => init.cmdInitNewWorkspace(cwd, raw),
50
- 'list-workspaces': () => init.cmdInitListWorkspaces(cwd, raw),
51
- 'remove-workspace': () => init.cmdInitRemoveWorkspace(cwd, args[2], raw),
52
- },
53
- });
54
- }
55
-
56
- module.exports = {
57
- routeInitCommand,
58
- };