@jokerized/getresearchdone 0.4.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 (711) hide show
  1. package/.claude-plugin/plugin.json +103 -0
  2. package/README.md +211 -0
  3. package/agents/grd-baseline-assessor.md +684 -0
  4. package/agents/grd-code-reviewer.md +300 -0
  5. package/agents/grd-codebase-mapper.md +355 -0
  6. package/agents/grd-critique-agent.md +119 -0
  7. package/agents/grd-debugger.md +519 -0
  8. package/agents/grd-deep-diver.md +737 -0
  9. package/agents/grd-eval-planner.md +913 -0
  10. package/agents/grd-eval-reporter.md +717 -0
  11. package/agents/grd-executor.md +683 -0
  12. package/agents/grd-feasibility-analyst.md +624 -0
  13. package/agents/grd-integration-checker.md +367 -0
  14. package/agents/grd-knowledge-miner.md +81 -0
  15. package/agents/grd-migrator.md +88 -0
  16. package/agents/grd-phase-researcher.md +697 -0
  17. package/agents/grd-plan-checker.md +443 -0
  18. package/agents/grd-planner.md +1532 -0
  19. package/agents/grd-product-owner.md +562 -0
  20. package/agents/grd-project-researcher.md +513 -0
  21. package/agents/grd-research-synthesizer.md +273 -0
  22. package/agents/grd-roadmapper.md +798 -0
  23. package/agents/grd-surveyor.md +566 -0
  24. package/agents/grd-verifier.md +893 -0
  25. package/bin/gd.js +4 -0
  26. package/bin/gd.ts +227 -0
  27. package/bin/grd-manifest.js +4 -0
  28. package/bin/grd-manifest.ts +286 -0
  29. package/bin/grd-mcp-server.js +4 -0
  30. package/bin/grd-mcp-server.ts +124 -0
  31. package/bin/grd-tools.js +4 -0
  32. package/bin/grd-tools.ts +2471 -0
  33. package/bin/postinstall.js +4 -0
  34. package/bin/postinstall.ts +80 -0
  35. package/commands/add-phase.md +123 -0
  36. package/commands/add-todo.md +87 -0
  37. package/commands/assess-baseline.md +289 -0
  38. package/commands/autopilot.md +100 -0
  39. package/commands/autoplan.md +55 -0
  40. package/commands/check-todos.md +87 -0
  41. package/commands/compare-methods.md +262 -0
  42. package/commands/complete-milestone.md +225 -0
  43. package/commands/debug.md +372 -0
  44. package/commands/deep-dive.md +288 -0
  45. package/commands/discover.md +281 -0
  46. package/commands/discuss-phase.md +188 -0
  47. package/commands/discuss.md +55 -0
  48. package/commands/eval-report.md +310 -0
  49. package/commands/evolve.md +79 -0
  50. package/commands/execute-phase.md +1017 -0
  51. package/commands/feasibility.md +292 -0
  52. package/commands/help.md +407 -0
  53. package/commands/init.md +1508 -0
  54. package/commands/insert-phase.md +113 -0
  55. package/commands/iterate.md +327 -0
  56. package/commands/list-phase-assumptions.md +217 -0
  57. package/commands/long-term-roadmap.md +202 -0
  58. package/commands/map-codebase.md +111 -0
  59. package/commands/migrate.md +159 -0
  60. package/commands/new-milestone.md +169 -0
  61. package/commands/pause-work.md +83 -0
  62. package/commands/plan-milestone-gaps.md +373 -0
  63. package/commands/plan-phase.md +655 -0
  64. package/commands/principles.md +328 -0
  65. package/commands/product-plan.md +319 -0
  66. package/commands/progress.md +481 -0
  67. package/commands/quick.md +167 -0
  68. package/commands/reapply-patches.md +154 -0
  69. package/commands/remove-phase.md +97 -0
  70. package/commands/requirement.md +96 -0
  71. package/commands/resume-project.md +113 -0
  72. package/commands/settings.md +1144 -0
  73. package/commands/survey.md +242 -0
  74. package/commands/sync.md +246 -0
  75. package/commands/tracker-setup.md +322 -0
  76. package/commands/update.md +202 -0
  77. package/commands/verify-phase.md +335 -0
  78. package/commands/verify-work.md +701 -0
  79. package/commands/wireup.md +29 -0
  80. package/dist/bin/gd.d.ts +3 -0
  81. package/dist/bin/gd.d.ts.map +1 -0
  82. package/dist/bin/gd.js +178 -0
  83. package/dist/bin/gd.js.map +1 -0
  84. package/dist/bin/grd-manifest.d.ts +3 -0
  85. package/dist/bin/grd-manifest.d.ts.map +1 -0
  86. package/dist/bin/grd-manifest.js +202 -0
  87. package/dist/bin/grd-manifest.js.map +1 -0
  88. package/dist/bin/grd-mcp-server.d.ts +3 -0
  89. package/dist/bin/grd-mcp-server.d.ts.map +1 -0
  90. package/dist/bin/grd-mcp-server.js +71 -0
  91. package/dist/bin/grd-mcp-server.js.map +1 -0
  92. package/dist/bin/grd-tools.d.ts +3 -0
  93. package/dist/bin/grd-tools.d.ts.map +1 -0
  94. package/dist/bin/grd-tools.js +1680 -0
  95. package/dist/bin/grd-tools.js.map +1 -0
  96. package/dist/bin/postinstall.d.ts +3 -0
  97. package/dist/bin/postinstall.d.ts.map +1 -0
  98. package/dist/bin/postinstall.js +61 -0
  99. package/dist/bin/postinstall.js.map +1 -0
  100. package/dist/lib/autopilot-milestone.d.ts +2 -0
  101. package/dist/lib/autopilot-milestone.d.ts.map +1 -0
  102. package/dist/lib/autopilot-milestone.js +94 -0
  103. package/dist/lib/autopilot-milestone.js.map +1 -0
  104. package/dist/lib/autopilot-pipeline.d.ts +2 -0
  105. package/dist/lib/autopilot-pipeline.d.ts.map +1 -0
  106. package/dist/lib/autopilot-pipeline.js +830 -0
  107. package/dist/lib/autopilot-pipeline.js.map +1 -0
  108. package/dist/lib/autopilot-waves.d.ts +2 -0
  109. package/dist/lib/autopilot-waves.d.ts.map +1 -0
  110. package/dist/lib/autopilot-waves.js +266 -0
  111. package/dist/lib/autopilot-waves.js.map +1 -0
  112. package/dist/lib/autopilot.d.ts +2 -0
  113. package/dist/lib/autopilot.d.ts.map +1 -0
  114. package/dist/lib/autopilot.js +1314 -0
  115. package/dist/lib/autopilot.js.map +1 -0
  116. package/dist/lib/autoplan.d.ts +2 -0
  117. package/dist/lib/autoplan.d.ts.map +1 -0
  118. package/dist/lib/autoplan.js +198 -0
  119. package/dist/lib/autoplan.js.map +1 -0
  120. package/dist/lib/autoresearch.d.ts +2 -0
  121. package/dist/lib/autoresearch.d.ts.map +1 -0
  122. package/dist/lib/autoresearch.js +626 -0
  123. package/dist/lib/autoresearch.js.map +1 -0
  124. package/dist/lib/backend.d.ts +2 -0
  125. package/dist/lib/backend.d.ts.map +1 -0
  126. package/dist/lib/backend.js +1036 -0
  127. package/dist/lib/backend.js.map +1 -0
  128. package/dist/lib/benchmark.d.ts +99 -0
  129. package/dist/lib/benchmark.d.ts.map +1 -0
  130. package/dist/lib/benchmark.js +278 -0
  131. package/dist/lib/benchmark.js.map +1 -0
  132. package/dist/lib/citations.d.ts +2 -0
  133. package/dist/lib/citations.d.ts.map +1 -0
  134. package/dist/lib/citations.js +642 -0
  135. package/dist/lib/citations.js.map +1 -0
  136. package/dist/lib/cleanup.d.ts +2 -0
  137. package/dist/lib/cleanup.d.ts.map +1 -0
  138. package/dist/lib/cleanup.js +1222 -0
  139. package/dist/lib/cleanup.js.map +1 -0
  140. package/dist/lib/cli/adapters.d.ts +10 -0
  141. package/dist/lib/cli/adapters.d.ts.map +1 -0
  142. package/dist/lib/cli/adapters.js +27 -0
  143. package/dist/lib/cli/adapters.js.map +1 -0
  144. package/dist/lib/cli/agent.d.ts +17 -0
  145. package/dist/lib/cli/agent.d.ts.map +1 -0
  146. package/dist/lib/cli/agent.js +53 -0
  147. package/dist/lib/cli/agent.js.map +1 -0
  148. package/dist/lib/cli/index.d.ts +21 -0
  149. package/dist/lib/cli/index.d.ts.map +1 -0
  150. package/dist/lib/cli/index.js +264 -0
  151. package/dist/lib/cli/index.js.map +1 -0
  152. package/dist/lib/cli/output.d.ts +20 -0
  153. package/dist/lib/cli/output.d.ts.map +1 -0
  154. package/dist/lib/cli/output.js +22 -0
  155. package/dist/lib/cli/output.js.map +1 -0
  156. package/dist/lib/cli/scan-dispatch.d.ts +9 -0
  157. package/dist/lib/cli/scan-dispatch.d.ts.map +1 -0
  158. package/dist/lib/cli/scan-dispatch.js +107 -0
  159. package/dist/lib/cli/scan-dispatch.js.map +1 -0
  160. package/dist/lib/cli/tools.d.ts +16 -0
  161. package/dist/lib/cli/tools.d.ts.map +1 -0
  162. package/dist/lib/cli/tools.js +168 -0
  163. package/dist/lib/cli/tools.js.map +1 -0
  164. package/dist/lib/commands/_dashboard-parsers.d.ts +2 -0
  165. package/dist/lib/commands/_dashboard-parsers.d.ts.map +1 -0
  166. package/dist/lib/commands/_dashboard-parsers.js +192 -0
  167. package/dist/lib/commands/_dashboard-parsers.js.map +1 -0
  168. package/dist/lib/commands/analysis.d.ts +2 -0
  169. package/dist/lib/commands/analysis.d.ts.map +1 -0
  170. package/dist/lib/commands/analysis.js +1418 -0
  171. package/dist/lib/commands/analysis.js.map +1 -0
  172. package/dist/lib/commands/assumptions.d.ts +2 -0
  173. package/dist/lib/commands/assumptions.d.ts.map +1 -0
  174. package/dist/lib/commands/assumptions.js +166 -0
  175. package/dist/lib/commands/assumptions.js.map +1 -0
  176. package/dist/lib/commands/blame.d.ts +2 -0
  177. package/dist/lib/commands/blame.d.ts.map +1 -0
  178. package/dist/lib/commands/blame.js +133 -0
  179. package/dist/lib/commands/blame.js.map +1 -0
  180. package/dist/lib/commands/budget.d.ts +2 -0
  181. package/dist/lib/commands/budget.d.ts.map +1 -0
  182. package/dist/lib/commands/budget.js +100 -0
  183. package/dist/lib/commands/budget.js.map +1 -0
  184. package/dist/lib/commands/check-plans.d.ts +2 -0
  185. package/dist/lib/commands/check-plans.d.ts.map +1 -0
  186. package/dist/lib/commands/check-plans.js +190 -0
  187. package/dist/lib/commands/check-plans.js.map +1 -0
  188. package/dist/lib/commands/config.d.ts +2 -0
  189. package/dist/lib/commands/config.d.ts.map +1 -0
  190. package/dist/lib/commands/config.js +188 -0
  191. package/dist/lib/commands/config.js.map +1 -0
  192. package/dist/lib/commands/dashboard.d.ts +2 -0
  193. package/dist/lib/commands/dashboard.d.ts.map +1 -0
  194. package/dist/lib/commands/dashboard.js +466 -0
  195. package/dist/lib/commands/dashboard.js.map +1 -0
  196. package/dist/lib/commands/estimate.d.ts +2 -0
  197. package/dist/lib/commands/estimate.d.ts.map +1 -0
  198. package/dist/lib/commands/estimate.js +148 -0
  199. package/dist/lib/commands/estimate.js.map +1 -0
  200. package/dist/lib/commands/eval-diff.d.ts +2 -0
  201. package/dist/lib/commands/eval-diff.d.ts.map +1 -0
  202. package/dist/lib/commands/eval-diff.js +213 -0
  203. package/dist/lib/commands/eval-diff.js.map +1 -0
  204. package/dist/lib/commands/freshness.d.ts +2 -0
  205. package/dist/lib/commands/freshness.d.ts.map +1 -0
  206. package/dist/lib/commands/freshness.js +163 -0
  207. package/dist/lib/commands/freshness.js.map +1 -0
  208. package/dist/lib/commands/health.d.ts +2 -0
  209. package/dist/lib/commands/health.d.ts.map +1 -0
  210. package/dist/lib/commands/health.js +435 -0
  211. package/dist/lib/commands/health.js.map +1 -0
  212. package/dist/lib/commands/index.d.ts +2 -0
  213. package/dist/lib/commands/index.d.ts.map +1 -0
  214. package/dist/lib/commands/index.js +128 -0
  215. package/dist/lib/commands/index.js.map +1 -0
  216. package/dist/lib/commands/install.d.ts +56 -0
  217. package/dist/lib/commands/install.d.ts.map +1 -0
  218. package/dist/lib/commands/install.js +214 -0
  219. package/dist/lib/commands/install.js.map +1 -0
  220. package/dist/lib/commands/knowhow-aggregator.d.ts +2 -0
  221. package/dist/lib/commands/knowhow-aggregator.d.ts.map +1 -0
  222. package/dist/lib/commands/knowhow-aggregator.js +279 -0
  223. package/dist/lib/commands/knowhow-aggregator.js.map +1 -0
  224. package/dist/lib/commands/knowledge-search.d.ts +2 -0
  225. package/dist/lib/commands/knowledge-search.d.ts.map +1 -0
  226. package/dist/lib/commands/knowledge-search.js +113 -0
  227. package/dist/lib/commands/knowledge-search.js.map +1 -0
  228. package/dist/lib/commands/long-term-roadmap.d.ts +2 -0
  229. package/dist/lib/commands/long-term-roadmap.d.ts.map +1 -0
  230. package/dist/lib/commands/long-term-roadmap.js +272 -0
  231. package/dist/lib/commands/long-term-roadmap.js.map +1 -0
  232. package/dist/lib/commands/patterns.d.ts +91 -0
  233. package/dist/lib/commands/patterns.d.ts.map +1 -0
  234. package/dist/lib/commands/patterns.js +391 -0
  235. package/dist/lib/commands/patterns.js.map +1 -0
  236. package/dist/lib/commands/phase-info.d.ts +2 -0
  237. package/dist/lib/commands/phase-info.d.ts.map +1 -0
  238. package/dist/lib/commands/phase-info.js +509 -0
  239. package/dist/lib/commands/phase-info.js.map +1 -0
  240. package/dist/lib/commands/plan-lint.d.ts +56 -0
  241. package/dist/lib/commands/plan-lint.d.ts.map +1 -0
  242. package/dist/lib/commands/plan-lint.js +481 -0
  243. package/dist/lib/commands/plan-lint.js.map +1 -0
  244. package/dist/lib/commands/plan-phase.d.ts +53 -0
  245. package/dist/lib/commands/plan-phase.d.ts.map +1 -0
  246. package/dist/lib/commands/plan-phase.js +288 -0
  247. package/dist/lib/commands/plan-phase.js.map +1 -0
  248. package/dist/lib/commands/progress.d.ts +2 -0
  249. package/dist/lib/commands/progress.d.ts.map +1 -0
  250. package/dist/lib/commands/progress.js +266 -0
  251. package/dist/lib/commands/progress.js.map +1 -0
  252. package/dist/lib/commands/quality.d.ts +2 -0
  253. package/dist/lib/commands/quality.d.ts.map +1 -0
  254. package/dist/lib/commands/quality.js +80 -0
  255. package/dist/lib/commands/quality.js.map +1 -0
  256. package/dist/lib/commands/rollback.d.ts +2 -0
  257. package/dist/lib/commands/rollback.d.ts.map +1 -0
  258. package/dist/lib/commands/rollback.js +145 -0
  259. package/dist/lib/commands/rollback.js.map +1 -0
  260. package/dist/lib/commands/scan.d.ts +25 -0
  261. package/dist/lib/commands/scan.d.ts.map +1 -0
  262. package/dist/lib/commands/scan.js +28 -0
  263. package/dist/lib/commands/scan.js.map +1 -0
  264. package/dist/lib/commands/search.d.ts +2 -0
  265. package/dist/lib/commands/search.d.ts.map +1 -0
  266. package/dist/lib/commands/search.js +212 -0
  267. package/dist/lib/commands/search.js.map +1 -0
  268. package/dist/lib/commands/select-candidate.d.ts +128 -0
  269. package/dist/lib/commands/select-candidate.d.ts.map +1 -0
  270. package/dist/lib/commands/select-candidate.js +518 -0
  271. package/dist/lib/commands/select-candidate.js.map +1 -0
  272. package/dist/lib/commands/singularity.d.ts +2 -0
  273. package/dist/lib/commands/singularity.d.ts.map +1 -0
  274. package/dist/lib/commands/singularity.js +185 -0
  275. package/dist/lib/commands/singularity.js.map +1 -0
  276. package/dist/lib/commands/slug-timestamp.d.ts +2 -0
  277. package/dist/lib/commands/slug-timestamp.d.ts.map +1 -0
  278. package/dist/lib/commands/slug-timestamp.js +54 -0
  279. package/dist/lib/commands/slug-timestamp.js.map +1 -0
  280. package/dist/lib/commands/tail.d.ts +2 -0
  281. package/dist/lib/commands/tail.d.ts.map +1 -0
  282. package/dist/lib/commands/tail.js +100 -0
  283. package/dist/lib/commands/tail.js.map +1 -0
  284. package/dist/lib/commands/todo.d.ts +2 -0
  285. package/dist/lib/commands/todo.d.ts.map +1 -0
  286. package/dist/lib/commands/todo.js +200 -0
  287. package/dist/lib/commands/todo.js.map +1 -0
  288. package/dist/lib/commands/watch.d.ts +2 -0
  289. package/dist/lib/commands/watch.d.ts.map +1 -0
  290. package/dist/lib/commands/watch.js +72 -0
  291. package/dist/lib/commands/watch.js.map +1 -0
  292. package/dist/lib/complexity.d.ts +55 -0
  293. package/dist/lib/complexity.d.ts.map +1 -0
  294. package/dist/lib/complexity.js +80 -0
  295. package/dist/lib/complexity.js.map +1 -0
  296. package/dist/lib/context/agents.d.ts +2 -0
  297. package/dist/lib/context/agents.d.ts.map +1 -0
  298. package/dist/lib/context/agents.js +344 -0
  299. package/dist/lib/context/agents.js.map +1 -0
  300. package/dist/lib/context/base.d.ts +2 -0
  301. package/dist/lib/context/base.d.ts.map +1 -0
  302. package/dist/lib/context/base.js +81 -0
  303. package/dist/lib/context/base.js.map +1 -0
  304. package/dist/lib/context/execute.d.ts +2 -0
  305. package/dist/lib/context/execute.d.ts.map +1 -0
  306. package/dist/lib/context/execute.js +753 -0
  307. package/dist/lib/context/execute.js.map +1 -0
  308. package/dist/lib/context/index.d.ts +2 -0
  309. package/dist/lib/context/index.d.ts.map +1 -0
  310. package/dist/lib/context/index.js +88 -0
  311. package/dist/lib/context/index.js.map +1 -0
  312. package/dist/lib/context/progress.d.ts +2 -0
  313. package/dist/lib/context/progress.d.ts.map +1 -0
  314. package/dist/lib/context/progress.js +178 -0
  315. package/dist/lib/context/progress.js.map +1 -0
  316. package/dist/lib/context/project.d.ts +2 -0
  317. package/dist/lib/context/project.d.ts.map +1 -0
  318. package/dist/lib/context/project.js +413 -0
  319. package/dist/lib/context/project.js.map +1 -0
  320. package/dist/lib/context/research.d.ts +2 -0
  321. package/dist/lib/context/research.d.ts.map +1 -0
  322. package/dist/lib/context/research.js +466 -0
  323. package/dist/lib/context/research.js.map +1 -0
  324. package/dist/lib/dead-ends.d.ts +28 -0
  325. package/dist/lib/dead-ends.d.ts.map +1 -0
  326. package/dist/lib/dead-ends.js +451 -0
  327. package/dist/lib/dead-ends.js.map +1 -0
  328. package/dist/lib/deps.d.ts +2 -0
  329. package/dist/lib/deps.d.ts.map +1 -0
  330. package/dist/lib/deps.js +630 -0
  331. package/dist/lib/deps.js.map +1 -0
  332. package/dist/lib/discussion.d.ts +2 -0
  333. package/dist/lib/discussion.d.ts.map +1 -0
  334. package/dist/lib/discussion.js +1041 -0
  335. package/dist/lib/discussion.js.map +1 -0
  336. package/dist/lib/drift.d.ts +36 -0
  337. package/dist/lib/drift.d.ts.map +1 -0
  338. package/dist/lib/drift.js +481 -0
  339. package/dist/lib/drift.js.map +1 -0
  340. package/dist/lib/evolve/_dimensions-features.d.ts +2 -0
  341. package/dist/lib/evolve/_dimensions-features.d.ts.map +1 -0
  342. package/dist/lib/evolve/_dimensions-features.js +369 -0
  343. package/dist/lib/evolve/_dimensions-features.js.map +1 -0
  344. package/dist/lib/evolve/_dimensions.d.ts +2 -0
  345. package/dist/lib/evolve/_dimensions.d.ts.map +1 -0
  346. package/dist/lib/evolve/_dimensions.js +358 -0
  347. package/dist/lib/evolve/_dimensions.js.map +1 -0
  348. package/dist/lib/evolve/_product-ideation.d.ts +2 -0
  349. package/dist/lib/evolve/_product-ideation.d.ts.map +1 -0
  350. package/dist/lib/evolve/_product-ideation.js +281 -0
  351. package/dist/lib/evolve/_product-ideation.js.map +1 -0
  352. package/dist/lib/evolve/_prompts.d.ts +2 -0
  353. package/dist/lib/evolve/_prompts.d.ts.map +1 -0
  354. package/dist/lib/evolve/_prompts.js +153 -0
  355. package/dist/lib/evolve/_prompts.js.map +1 -0
  356. package/dist/lib/evolve/cli.d.ts +2 -0
  357. package/dist/lib/evolve/cli.d.ts.map +1 -0
  358. package/dist/lib/evolve/cli.js +224 -0
  359. package/dist/lib/evolve/cli.js.map +1 -0
  360. package/dist/lib/evolve/discovery.d.ts +2 -0
  361. package/dist/lib/evolve/discovery.d.ts.map +1 -0
  362. package/dist/lib/evolve/discovery.js +391 -0
  363. package/dist/lib/evolve/discovery.js.map +1 -0
  364. package/dist/lib/evolve/index.d.ts +2 -0
  365. package/dist/lib/evolve/index.d.ts.map +1 -0
  366. package/dist/lib/evolve/index.js +88 -0
  367. package/dist/lib/evolve/index.js.map +1 -0
  368. package/dist/lib/evolve/orchestrator.d.ts +2 -0
  369. package/dist/lib/evolve/orchestrator.d.ts.map +1 -0
  370. package/dist/lib/evolve/orchestrator.js +851 -0
  371. package/dist/lib/evolve/orchestrator.js.map +1 -0
  372. package/dist/lib/evolve/scoring.d.ts +2 -0
  373. package/dist/lib/evolve/scoring.d.ts.map +1 -0
  374. package/dist/lib/evolve/scoring.js +118 -0
  375. package/dist/lib/evolve/scoring.js.map +1 -0
  376. package/dist/lib/evolve/state.d.ts +2 -0
  377. package/dist/lib/evolve/state.d.ts.map +1 -0
  378. package/dist/lib/evolve/state.js +264 -0
  379. package/dist/lib/evolve/state.js.map +1 -0
  380. package/dist/lib/evolve/types.d.ts +249 -0
  381. package/dist/lib/evolve/types.d.ts.map +1 -0
  382. package/dist/lib/evolve/types.js +3 -0
  383. package/dist/lib/evolve/types.js.map +1 -0
  384. package/dist/lib/frontmatter.d.ts +2 -0
  385. package/dist/lib/frontmatter.d.ts.map +1 -0
  386. package/dist/lib/frontmatter.js +513 -0
  387. package/dist/lib/frontmatter.js.map +1 -0
  388. package/dist/lib/gates.d.ts +2 -0
  389. package/dist/lib/gates.d.ts.map +1 -0
  390. package/dist/lib/gates.js +578 -0
  391. package/dist/lib/gates.js.map +1 -0
  392. package/dist/lib/genome.d.ts +10 -0
  393. package/dist/lib/genome.d.ts.map +1 -0
  394. package/dist/lib/genome.js +368 -0
  395. package/dist/lib/genome.js.map +1 -0
  396. package/dist/lib/got.d.ts +2 -0
  397. package/dist/lib/got.d.ts.map +1 -0
  398. package/dist/lib/got.js +280 -0
  399. package/dist/lib/got.js.map +1 -0
  400. package/dist/lib/invariants.d.ts +2 -0
  401. package/dist/lib/invariants.d.ts.map +1 -0
  402. package/dist/lib/invariants.js +298 -0
  403. package/dist/lib/invariants.js.map +1 -0
  404. package/dist/lib/knowledge.d.ts +2 -0
  405. package/dist/lib/knowledge.d.ts.map +1 -0
  406. package/dist/lib/knowledge.js +658 -0
  407. package/dist/lib/knowledge.js.map +1 -0
  408. package/dist/lib/long-term-roadmap.d.ts +2 -0
  409. package/dist/lib/long-term-roadmap.d.ts.map +1 -0
  410. package/dist/lib/long-term-roadmap.js +602 -0
  411. package/dist/lib/long-term-roadmap.js.map +1 -0
  412. package/dist/lib/markdown-split.d.ts +2 -0
  413. package/dist/lib/markdown-split.d.ts.map +1 -0
  414. package/dist/lib/markdown-split.js +199 -0
  415. package/dist/lib/markdown-split.js.map +1 -0
  416. package/dist/lib/mcp-server.d.ts +2 -0
  417. package/dist/lib/mcp-server.d.ts.map +1 -0
  418. package/dist/lib/mcp-server.js +2424 -0
  419. package/dist/lib/mcp-server.js.map +1 -0
  420. package/dist/lib/metrics.d.ts +16 -0
  421. package/dist/lib/metrics.d.ts.map +1 -0
  422. package/dist/lib/metrics.js +48 -0
  423. package/dist/lib/metrics.js.map +1 -0
  424. package/dist/lib/overstory.d.ts +2 -0
  425. package/dist/lib/overstory.d.ts.map +1 -0
  426. package/dist/lib/overstory.js +211 -0
  427. package/dist/lib/overstory.js.map +1 -0
  428. package/dist/lib/parallel.d.ts +2 -0
  429. package/dist/lib/parallel.d.ts.map +1 -0
  430. package/dist/lib/parallel.js +349 -0
  431. package/dist/lib/parallel.js.map +1 -0
  432. package/dist/lib/paths.d.ts +2 -0
  433. package/dist/lib/paths.d.ts.map +1 -0
  434. package/dist/lib/paths.js +254 -0
  435. package/dist/lib/paths.js.map +1 -0
  436. package/dist/lib/phase-complete-llm.d.ts +22 -0
  437. package/dist/lib/phase-complete-llm.d.ts.map +1 -0
  438. package/dist/lib/phase-complete-llm.js +331 -0
  439. package/dist/lib/phase-complete-llm.js.map +1 -0
  440. package/dist/lib/phase-complete.d.ts +46 -0
  441. package/dist/lib/phase-complete.d.ts.map +1 -0
  442. package/dist/lib/phase-complete.js +278 -0
  443. package/dist/lib/phase-complete.js.map +1 -0
  444. package/dist/lib/phase-io.d.ts +2 -0
  445. package/dist/lib/phase-io.d.ts.map +1 -0
  446. package/dist/lib/phase-io.js +126 -0
  447. package/dist/lib/phase-io.js.map +1 -0
  448. package/dist/lib/phase.d.ts +2 -0
  449. package/dist/lib/phase.d.ts.map +1 -0
  450. package/dist/lib/phase.js +1344 -0
  451. package/dist/lib/phase.js.map +1 -0
  452. package/dist/lib/plan-tournament.d.ts +63 -0
  453. package/dist/lib/plan-tournament.d.ts.map +1 -0
  454. package/dist/lib/plan-tournament.js +353 -0
  455. package/dist/lib/plan-tournament.js.map +1 -0
  456. package/dist/lib/refinement.d.ts +74 -0
  457. package/dist/lib/refinement.d.ts.map +1 -0
  458. package/dist/lib/refinement.js +283 -0
  459. package/dist/lib/refinement.js.map +1 -0
  460. package/dist/lib/requirements.d.ts +2 -0
  461. package/dist/lib/requirements.d.ts.map +1 -0
  462. package/dist/lib/requirements.js +355 -0
  463. package/dist/lib/requirements.js.map +1 -0
  464. package/dist/lib/research-bundle.d.ts +2 -0
  465. package/dist/lib/research-bundle.d.ts.map +1 -0
  466. package/dist/lib/research-bundle.js +246 -0
  467. package/dist/lib/research-bundle.js.map +1 -0
  468. package/dist/lib/roadmap.d.ts +2 -0
  469. package/dist/lib/roadmap.d.ts.map +1 -0
  470. package/dist/lib/roadmap.js +541 -0
  471. package/dist/lib/roadmap.js.map +1 -0
  472. package/dist/lib/sample.d.ts +16 -0
  473. package/dist/lib/sample.d.ts.map +1 -0
  474. package/dist/lib/sample.js +20 -0
  475. package/dist/lib/sample.js.map +1 -0
  476. package/dist/lib/scaffold.d.ts +2 -0
  477. package/dist/lib/scaffold.d.ts.map +1 -0
  478. package/dist/lib/scaffold.js +355 -0
  479. package/dist/lib/scaffold.js.map +1 -0
  480. package/dist/lib/scan/_utils.d.ts +11 -0
  481. package/dist/lib/scan/_utils.d.ts.map +1 -0
  482. package/dist/lib/scan/_utils.js +36 -0
  483. package/dist/lib/scan/_utils.js.map +1 -0
  484. package/dist/lib/scan/base64.d.ts +15 -0
  485. package/dist/lib/scan/base64.d.ts.map +1 -0
  486. package/dist/lib/scan/base64.js +66 -0
  487. package/dist/lib/scan/base64.js.map +1 -0
  488. package/dist/lib/scan/ignorefile.d.ts +30 -0
  489. package/dist/lib/scan/ignorefile.d.ts.map +1 -0
  490. package/dist/lib/scan/ignorefile.js +101 -0
  491. package/dist/lib/scan/ignorefile.js.map +1 -0
  492. package/dist/lib/scan/injection.d.ts +14 -0
  493. package/dist/lib/scan/injection.d.ts.map +1 -0
  494. package/dist/lib/scan/injection.js +39 -0
  495. package/dist/lib/scan/injection.js.map +1 -0
  496. package/dist/lib/scan/patterns.d.ts +17 -0
  497. package/dist/lib/scan/patterns.d.ts.map +1 -0
  498. package/dist/lib/scan/patterns.js +123 -0
  499. package/dist/lib/scan/patterns.js.map +1 -0
  500. package/dist/lib/scan/strip-markdown.d.ts +7 -0
  501. package/dist/lib/scan/strip-markdown.d.ts.map +1 -0
  502. package/dist/lib/scan/strip-markdown.js +38 -0
  503. package/dist/lib/scan/strip-markdown.js.map +1 -0
  504. package/dist/lib/scan/types.d.ts +23 -0
  505. package/dist/lib/scan/types.d.ts.map +1 -0
  506. package/dist/lib/scan/types.js +3 -0
  507. package/dist/lib/scan/types.js.map +1 -0
  508. package/dist/lib/scheduler-wait.d.ts +2 -0
  509. package/dist/lib/scheduler-wait.d.ts.map +1 -0
  510. package/dist/lib/scheduler-wait.js +59 -0
  511. package/dist/lib/scheduler-wait.js.map +1 -0
  512. package/dist/lib/scheduler.d.ts +254 -0
  513. package/dist/lib/scheduler.d.ts.map +1 -0
  514. package/dist/lib/scheduler.js +1147 -0
  515. package/dist/lib/scheduler.js.map +1 -0
  516. package/dist/lib/state.d.ts +2 -0
  517. package/dist/lib/state.d.ts.map +1 -0
  518. package/dist/lib/state.js +744 -0
  519. package/dist/lib/state.js.map +1 -0
  520. package/dist/lib/think.d.ts +18 -0
  521. package/dist/lib/think.d.ts.map +1 -0
  522. package/dist/lib/think.js +317 -0
  523. package/dist/lib/think.js.map +1 -0
  524. package/dist/lib/tracker.d.ts +2 -0
  525. package/dist/lib/tracker.d.ts.map +1 -0
  526. package/dist/lib/tracker.js +1121 -0
  527. package/dist/lib/tracker.js.map +1 -0
  528. package/dist/lib/types.d.ts +1514 -0
  529. package/dist/lib/types.d.ts.map +1 -0
  530. package/dist/lib/types.js +4 -0
  531. package/dist/lib/types.js.map +1 -0
  532. package/dist/lib/utils.d.ts +2 -0
  533. package/dist/lib/utils.d.ts.map +1 -0
  534. package/dist/lib/utils.js +1363 -0
  535. package/dist/lib/utils.js.map +1 -0
  536. package/dist/lib/verify.d.ts +2 -0
  537. package/dist/lib/verify.d.ts.map +1 -0
  538. package/dist/lib/verify.js +1153 -0
  539. package/dist/lib/verify.js.map +1 -0
  540. package/dist/lib/wireup/autofix.d.ts +2 -0
  541. package/dist/lib/wireup/autofix.d.ts.map +1 -0
  542. package/dist/lib/wireup/autofix.js +188 -0
  543. package/dist/lib/wireup/autofix.js.map +1 -0
  544. package/dist/lib/wireup/cli.d.ts +2 -0
  545. package/dist/lib/wireup/cli.d.ts.map +1 -0
  546. package/dist/lib/wireup/cli.js +194 -0
  547. package/dist/lib/wireup/cli.js.map +1 -0
  548. package/dist/lib/wireup/detection.d.ts +47 -0
  549. package/dist/lib/wireup/detection.d.ts.map +1 -0
  550. package/dist/lib/wireup/detection.js +410 -0
  551. package/dist/lib/wireup/detection.js.map +1 -0
  552. package/dist/lib/wireup/discovery.d.ts +2 -0
  553. package/dist/lib/wireup/discovery.d.ts.map +1 -0
  554. package/dist/lib/wireup/discovery.js +934 -0
  555. package/dist/lib/wireup/discovery.js.map +1 -0
  556. package/dist/lib/wireup/execution.d.ts +2 -0
  557. package/dist/lib/wireup/execution.d.ts.map +1 -0
  558. package/dist/lib/wireup/execution.js +573 -0
  559. package/dist/lib/wireup/execution.js.map +1 -0
  560. package/dist/lib/wireup/index.d.ts +2 -0
  561. package/dist/lib/wireup/index.d.ts.map +1 -0
  562. package/dist/lib/wireup/index.js +85 -0
  563. package/dist/lib/wireup/index.js.map +1 -0
  564. package/dist/lib/wireup/orchestrator.d.ts +2 -0
  565. package/dist/lib/wireup/orchestrator.d.ts.map +1 -0
  566. package/dist/lib/wireup/orchestrator.js +366 -0
  567. package/dist/lib/wireup/orchestrator.js.map +1 -0
  568. package/dist/lib/wireup/report.d.ts +47 -0
  569. package/dist/lib/wireup/report.d.ts.map +1 -0
  570. package/dist/lib/wireup/report.js +201 -0
  571. package/dist/lib/wireup/report.js.map +1 -0
  572. package/dist/lib/wireup/scenarios.d.ts +2 -0
  573. package/dist/lib/wireup/scenarios.d.ts.map +1 -0
  574. package/dist/lib/wireup/scenarios.js +516 -0
  575. package/dist/lib/wireup/scenarios.js.map +1 -0
  576. package/dist/lib/wireup/state.d.ts +2 -0
  577. package/dist/lib/wireup/state.d.ts.map +1 -0
  578. package/dist/lib/wireup/state.js +102 -0
  579. package/dist/lib/wireup/state.js.map +1 -0
  580. package/dist/lib/wireup/types.d.ts +376 -0
  581. package/dist/lib/wireup/types.d.ts.map +1 -0
  582. package/dist/lib/wireup/types.js +3 -0
  583. package/dist/lib/wireup/types.js.map +1 -0
  584. package/dist/lib/worktree.d.ts +2 -0
  585. package/dist/lib/worktree.d.ts.map +1 -0
  586. package/dist/lib/worktree.js +999 -0
  587. package/dist/lib/worktree.js.map +1 -0
  588. package/lib/autopilot-milestone.ts +136 -0
  589. package/lib/autopilot-pipeline.ts +1179 -0
  590. package/lib/autopilot-waves.ts +361 -0
  591. package/lib/autopilot.ts +1874 -0
  592. package/lib/autoplan.ts +280 -0
  593. package/lib/autoresearch.js +4 -0
  594. package/lib/autoresearch.ts +886 -0
  595. package/lib/backend.ts +1252 -0
  596. package/lib/benchmark.ts +341 -0
  597. package/lib/citations.ts +760 -0
  598. package/lib/cleanup.ts +1588 -0
  599. package/lib/cli/adapters.ts +41 -0
  600. package/lib/cli/agent.ts +83 -0
  601. package/lib/cli/index.ts +273 -0
  602. package/lib/cli/output.ts +33 -0
  603. package/lib/cli/scan-dispatch.ts +130 -0
  604. package/lib/cli/tools.ts +198 -0
  605. package/lib/commands/_dashboard-parsers.ts +275 -0
  606. package/lib/commands/analysis.ts +1851 -0
  607. package/lib/commands/assumptions.ts +232 -0
  608. package/lib/commands/blame.ts +174 -0
  609. package/lib/commands/budget.ts +148 -0
  610. package/lib/commands/check-plans.ts +233 -0
  611. package/lib/commands/config.ts +287 -0
  612. package/lib/commands/dashboard.ts +680 -0
  613. package/lib/commands/estimate.ts +204 -0
  614. package/lib/commands/eval-diff.ts +252 -0
  615. package/lib/commands/freshness.ts +213 -0
  616. package/lib/commands/health.ts +607 -0
  617. package/lib/commands/index.ts +266 -0
  618. package/lib/commands/install.ts +307 -0
  619. package/lib/commands/knowhow-aggregator.ts +345 -0
  620. package/lib/commands/knowledge-search.ts +153 -0
  621. package/lib/commands/long-term-roadmap.ts +390 -0
  622. package/lib/commands/patterns.ts +465 -0
  623. package/lib/commands/phase-info.ts +698 -0
  624. package/lib/commands/plan-lint.ts +546 -0
  625. package/lib/commands/plan-phase.ts +375 -0
  626. package/lib/commands/progress.ts +319 -0
  627. package/lib/commands/quality.ts +138 -0
  628. package/lib/commands/rollback.ts +195 -0
  629. package/lib/commands/scan.ts +72 -0
  630. package/lib/commands/search.ts +300 -0
  631. package/lib/commands/select-candidate.ts +687 -0
  632. package/lib/commands/singularity.ts +222 -0
  633. package/lib/commands/slug-timestamp.ts +74 -0
  634. package/lib/commands/tail.ts +129 -0
  635. package/lib/commands/todo.ts +273 -0
  636. package/lib/commands/watch.ts +80 -0
  637. package/lib/complexity.ts +117 -0
  638. package/lib/context/agents.ts +505 -0
  639. package/lib/context/base.ts +123 -0
  640. package/lib/context/execute.ts +977 -0
  641. package/lib/context/index.ts +110 -0
  642. package/lib/context/progress.ts +278 -0
  643. package/lib/context/project.ts +531 -0
  644. package/lib/context/research.ts +646 -0
  645. package/lib/dead-ends.ts +506 -0
  646. package/lib/deps.ts +773 -0
  647. package/lib/discussion.ts +1275 -0
  648. package/lib/drift.ts +519 -0
  649. package/lib/evolve/_dimensions-features.ts +525 -0
  650. package/lib/evolve/_dimensions.ts +511 -0
  651. package/lib/evolve/_product-ideation.ts +405 -0
  652. package/lib/evolve/_prompts.ts +178 -0
  653. package/lib/evolve/cli.ts +330 -0
  654. package/lib/evolve/discovery.ts +571 -0
  655. package/lib/evolve/index.ts +105 -0
  656. package/lib/evolve/orchestrator.ts +1139 -0
  657. package/lib/evolve/scoring.ts +167 -0
  658. package/lib/evolve/state.ts +330 -0
  659. package/lib/evolve/types.ts +290 -0
  660. package/lib/frontmatter.ts +615 -0
  661. package/lib/gates.ts +695 -0
  662. package/lib/genome.ts +402 -0
  663. package/lib/got.js +4 -0
  664. package/lib/got.ts +361 -0
  665. package/lib/invariants.ts +378 -0
  666. package/lib/knowledge.ts +768 -0
  667. package/lib/long-term-roadmap.ts +806 -0
  668. package/lib/markdown-split.ts +273 -0
  669. package/lib/mcp-server.ts +3292 -0
  670. package/lib/metrics.ts +49 -0
  671. package/lib/overstory.ts +270 -0
  672. package/lib/parallel.ts +570 -0
  673. package/lib/paths.ts +293 -0
  674. package/lib/phase-complete-llm.ts +376 -0
  675. package/lib/phase-complete.ts +366 -0
  676. package/lib/phase-io.ts +101 -0
  677. package/lib/phase.ts +1981 -0
  678. package/lib/plan-tournament.ts +426 -0
  679. package/lib/refinement.ts +349 -0
  680. package/lib/requirements.ts +469 -0
  681. package/lib/research-bundle.ts +300 -0
  682. package/lib/roadmap.ts +775 -0
  683. package/lib/scaffold.ts +480 -0
  684. package/lib/scan/_utils.ts +37 -0
  685. package/lib/scan/base64.ts +90 -0
  686. package/lib/scan/ignorefile.ts +109 -0
  687. package/lib/scan/injection.ts +67 -0
  688. package/lib/scan/patterns.ts +139 -0
  689. package/lib/scan/strip-markdown.ts +39 -0
  690. package/lib/scan/types.ts +28 -0
  691. package/lib/scheduler-wait.ts +58 -0
  692. package/lib/scheduler.ts +1370 -0
  693. package/lib/state.ts +1000 -0
  694. package/lib/think.ts +365 -0
  695. package/lib/tracker.ts +1591 -0
  696. package/lib/types.ts +1663 -0
  697. package/lib/utils.ts +1479 -0
  698. package/lib/verify.ts +1434 -0
  699. package/lib/wireup/autofix.ts +241 -0
  700. package/lib/wireup/cli.ts +278 -0
  701. package/lib/wireup/detection.ts +542 -0
  702. package/lib/wireup/discovery.ts +1063 -0
  703. package/lib/wireup/execution.ts +686 -0
  704. package/lib/wireup/index.ts +117 -0
  705. package/lib/wireup/orchestrator.ts +519 -0
  706. package/lib/wireup/report.ts +286 -0
  707. package/lib/wireup/scenarios.ts +616 -0
  708. package/lib/wireup/state.ts +139 -0
  709. package/lib/wireup/types.ts +436 -0
  710. package/lib/worktree.ts +1309 -0
  711. package/package.json +67 -0
@@ -0,0 +1,349 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const { output, loadConfig, findPhaseInternal, getMilestoneInfo, } = require('./utils');
4
+ const { detectBackend, getBackendCapabilities, } = require('./backend');
5
+ const { worktreePath, } = require('./worktree');
6
+ const { buildDependencyGraph, } = require('./deps');
7
+ const { analyzeRoadmap, } = require('./roadmap');
8
+ const { runPreflightGates, } = require('./gates');
9
+ // ─── validateIndependentPhases ──────────────────────────────────────────────
10
+ /**
11
+ * Validate that requested phases have no direct dependency edges between them.
12
+ *
13
+ * Only checks DIRECT edges (not transitive paths). This is correct because the
14
+ * command template already receives parallel_groups from deps analysis for ordering.
15
+ * The validation here prevents the user from requesting two phases where one
16
+ * directly depends on the other.
17
+ * @param graph - Dependency graph containing all phase edges
18
+ * @param requestedPhases - Array of phase number strings to validate
19
+ * @returns Validation result indicating whether phases are independent, with any conflict pairs
20
+ */
21
+ function validateIndependentPhases(graph, requestedPhases) {
22
+ if (requestedPhases.length <= 1) {
23
+ return { valid: true, phases: requestedPhases };
24
+ }
25
+ const requestedSet = new Set(requestedPhases);
26
+ const conflicts = [];
27
+ for (const edge of graph.edges) {
28
+ if (requestedSet.has(edge.from) && requestedSet.has(edge.to)) {
29
+ conflicts.push({ from: edge.from, to: edge.to });
30
+ }
31
+ }
32
+ if (conflicts.length > 0) {
33
+ return { valid: false, conflicts, phases: requestedPhases };
34
+ }
35
+ return { valid: true, phases: requestedPhases };
36
+ }
37
+ // ─── buildParallelContext ───────────────────────────────────────────────────
38
+ /**
39
+ * Build structured JSON context for parallel execution of multiple phases.
40
+ *
41
+ * Loads config, detects backend capabilities, resolves per-phase info (directory,
42
+ * plans, worktree paths), and selects parallel vs sequential mode. Returns a
43
+ * context object consumed by the execute-phase command template.
44
+ * @param cwd - Absolute path to the working directory (project root)
45
+ * @param phaseNumbers - Array of phase number strings to build context for
46
+ * @param options - Optional configuration for native worktree availability
47
+ * @returns Full parallel execution context, or an error object if a phase is not found
48
+ */
49
+ function buildParallelContext(cwd, phaseNumbers, options) {
50
+ const { nativeWorktreeAvailable = false } = options || {};
51
+ const config = loadConfig(cwd);
52
+ const backend = detectBackend(cwd);
53
+ const capabilities = getBackendCapabilities(backend);
54
+ const milestone = getMilestoneInfo(cwd);
55
+ // Determine mode: parallel only if backend supports teams AND config allows it
56
+ const mode = capabilities.teams === true && config.use_teams !== false ? 'parallel' : 'sequential';
57
+ // Build fallback note for sequential mode
58
+ const fallback_note = mode === 'sequential'
59
+ ? 'Parallel execution available on Claude Code backend with teams enabled'
60
+ : null;
61
+ // Build per-phase context objects
62
+ const phaseContexts = [];
63
+ for (const phaseNum of phaseNumbers) {
64
+ const phaseInfo = findPhaseInternal(cwd, phaseNum);
65
+ if (!phaseInfo) {
66
+ return { error: `Phase ${phaseNum} not found` };
67
+ }
68
+ const template = config.phase_branch_template || 'grd/{milestone}/{phase}-{slug}';
69
+ const worktree_branch = template
70
+ .replace('{milestone}', milestone.version)
71
+ .replace('{phase}', phaseInfo.phase_number)
72
+ .replace('{slug}', phaseInfo.phase_slug || 'phase');
73
+ // When native isolation is available, skip worktree_path pre-computation
74
+ // Claude Code creates worktrees natively via its isolation: worktree mechanism
75
+ const wt_path = nativeWorktreeAvailable
76
+ ? null
77
+ : worktreePath(cwd, milestone.version, phaseInfo.phase_number);
78
+ phaseContexts.push({
79
+ phase_number: phaseInfo.phase_number,
80
+ phase_name: phaseInfo.phase_name,
81
+ phase_slug: phaseInfo.phase_slug,
82
+ phase_dir: phaseInfo.directory,
83
+ worktree_path: wt_path,
84
+ worktree_branch,
85
+ native_isolation: nativeWorktreeAvailable,
86
+ plans: phaseInfo.plans,
87
+ incomplete_plans: phaseInfo.incomplete_plans,
88
+ plan_count: phaseInfo.plans ? phaseInfo.plans.length : 0,
89
+ });
90
+ }
91
+ // Build status tracker with per-phase pending state
92
+ const status_tracker = { phases: {} };
93
+ for (const ctx of phaseContexts) {
94
+ status_tracker.phases[ctx.phase_number] = { status: 'pending' };
95
+ }
96
+ return {
97
+ mode,
98
+ fallback_note,
99
+ backend,
100
+ backend_capabilities: capabilities,
101
+ use_teams: config.use_teams,
102
+ team_timeout_minutes: config.team_timeout_minutes,
103
+ max_concurrent_teammates: config.max_concurrent_teammates,
104
+ milestone_version: milestone.version,
105
+ milestone_name: milestone.name,
106
+ phases: phaseContexts,
107
+ phase_count: phaseNumbers.length,
108
+ status_tracker,
109
+ };
110
+ }
111
+ /**
112
+ * Assign plans to execution waves using a combined dependency model.
113
+ *
114
+ * Merges two dependency mechanisms into a single constraint set per plan:
115
+ * 1. Explicit `depends_on` field in PLAN.md frontmatter (coarse phase-level gates).
116
+ * 2. Fine-grained artifact DAG: for each plan's `requires` entries, look up the
117
+ * provider plan in `artifactDAG.providers` and treat it as a hard dependency.
118
+ *
119
+ * Kahn's level-based topological sort assigns each plan to the earliest wave where
120
+ * all its dependencies have been satisfied. Plans without `provides`/`requires`
121
+ * fields (empty arrays) are backward compatible — they only respect `depends_on`.
122
+ *
123
+ * If a cycle is detected (remaining plans with unresolvable dependencies), all
124
+ * remaining plans are placed in the last wave and a warning is written to stderr.
125
+ *
126
+ * @param plans - Plan artifacts parsed from PLAN.md frontmatter
127
+ * @param options - Optional config including a pre-built ArtifactDAG
128
+ * @returns Array of WaveAssignment objects sorted by wave number
129
+ */
130
+ function buildWaves(plans, options) {
131
+ if (plans.length === 0) {
132
+ return [];
133
+ }
134
+ const artifactDAG = options?.artifactDAG;
135
+ // Build plan ID for each plan using the same format as buildArtifactDAG
136
+ const planIdOf = (p) => `${p.phase}-${String(p.plan).padStart(2, '0')}`;
137
+ // Build a set of all valid plan IDs for membership checks
138
+ const planIds = new Set(plans.map(planIdOf));
139
+ // Build combined dependency set for each plan
140
+ // combined deps: Set<planId> that must be completed before this plan
141
+ const combinedDeps = new Map();
142
+ for (const plan of plans) {
143
+ const id = planIdOf(plan);
144
+ const deps = new Set();
145
+ // 1. Explicit depends_on: these are plan IDs like "94-01" directly
146
+ for (const dep of plan.depends_on) {
147
+ if (planIds.has(dep)) {
148
+ deps.add(dep);
149
+ }
150
+ }
151
+ // 2. Artifact DAG requires: look up each required artifact's provider plan
152
+ if (artifactDAG !== undefined) {
153
+ for (const artifact of plan.requires) {
154
+ const providerPlanId = artifactDAG.providers[artifact];
155
+ if (providerPlanId !== undefined && providerPlanId !== id && planIds.has(providerPlanId)) {
156
+ deps.add(providerPlanId);
157
+ }
158
+ }
159
+ }
160
+ combinedDeps.set(id, deps);
161
+ }
162
+ // Build in-degree and adjacency for Kahn's algorithm
163
+ // Edge: dependency → dependent (dep must run before dependent)
164
+ const adjacency = new Map(); // dep → [dependents]
165
+ const inDegree = new Map();
166
+ for (const id of planIds) {
167
+ adjacency.set(id, []);
168
+ inDegree.set(id, 0);
169
+ }
170
+ for (const [id, deps] of combinedDeps) {
171
+ for (const dep of deps) {
172
+ adjacency.get(dep).push(id);
173
+ inDegree.set(id, inDegree.get(id) + 1);
174
+ }
175
+ }
176
+ // Level-based Kahn's — each iteration yields one wave
177
+ const waves = [];
178
+ const remaining = new Set(planIds);
179
+ let waveNumber = 1;
180
+ while (remaining.size > 0) {
181
+ const batch = [];
182
+ for (const id of remaining) {
183
+ if (inDegree.get(id) === 0) {
184
+ batch.push(id);
185
+ }
186
+ }
187
+ if (batch.length === 0) {
188
+ // Cycle detected — place all remaining plans in the last wave and warn
189
+ process.stderr.write(`[buildWaves] Warning: cycle detected among plans [${Array.from(remaining).join(', ')}]; placing all in wave ${waveNumber}\n`);
190
+ batch.push(...Array.from(remaining));
191
+ batch.sort();
192
+ waves.push({ wave: waveNumber, plans: batch });
193
+ break;
194
+ }
195
+ // Sort lexicographically for deterministic output
196
+ batch.sort();
197
+ waves.push({ wave: waveNumber, plans: batch });
198
+ // Decrement in-degree for dependents and remove from remaining
199
+ for (const id of batch) {
200
+ remaining.delete(id);
201
+ for (const dependent of adjacency.get(id)) {
202
+ if (remaining.has(dependent)) {
203
+ inDegree.set(dependent, inDegree.get(dependent) - 1);
204
+ }
205
+ }
206
+ }
207
+ waveNumber++;
208
+ }
209
+ return waves;
210
+ }
211
+ // ─── cmdInitExecuteParallel ─────────────────────────────────────────────────
212
+ /**
213
+ * CLI command: Validate phase independence and build parallel execution context.
214
+ *
215
+ * Follows the established cmdInit* pattern: validates inputs, runs preflight gates,
216
+ * checks roadmap for requested phases, validates independence via dependency graph,
217
+ * builds context, and outputs structured JSON.
218
+ * @param cwd - Absolute path to the working directory (project root)
219
+ * @param phaseNumbers - Array of phase number strings requested for parallel execution
220
+ * @param _includes - Unused set of include filters (reserved for future use)
221
+ * @param raw - Whether to output plain text instead of JSON
222
+ * @returns void (outputs JSON or error to stdout)
223
+ */
224
+ function cmdInitExecuteParallel(cwd, phaseNumbers, _includes, raw) {
225
+ // Validate at least one phase requested
226
+ if (!phaseNumbers || phaseNumbers.length === 0) {
227
+ output({ error: 'At least one phase number is required' }, raw);
228
+ return;
229
+ }
230
+ // Run preflight gates (reuse execute-phase gates with first phase)
231
+ const gates = runPreflightGates(cwd, 'execute-phase', {
232
+ phase: phaseNumbers[0],
233
+ });
234
+ if (!gates.passed) {
235
+ output({ gate_failed: true, gate_errors: gates.errors, gate_warnings: gates.warnings }, raw);
236
+ return;
237
+ }
238
+ // Analyze roadmap to get all phases
239
+ const roadmapResult = analyzeRoadmap(cwd);
240
+ if (roadmapResult.error || !roadmapResult.phases || roadmapResult.phases.length === 0) {
241
+ output({ error: roadmapResult.error || 'ROADMAP.md not found or empty' }, raw);
242
+ return;
243
+ }
244
+ // Verify all requested phases exist in roadmap
245
+ const roadmapPhaseNumbers = new Set(roadmapResult.phases.map((p) => p.number));
246
+ const missing = phaseNumbers.filter((pn) => !roadmapPhaseNumbers.has(pn));
247
+ if (missing.length > 0) {
248
+ output({ error: `Phase(s) not found in roadmap: ${missing.join(', ')}` }, raw);
249
+ return;
250
+ }
251
+ // Build dependency graph and validate independence
252
+ const graph = buildDependencyGraph(roadmapResult.phases);
253
+ const validation = validateIndependentPhases(graph, phaseNumbers);
254
+ if (!validation.valid) {
255
+ const conflictStr = validation
256
+ .conflicts.map((c) => `Phase ${c.from} -> Phase ${c.to}`)
257
+ .join(', ');
258
+ output({
259
+ error: `Phases are not independent: ${conflictStr}`,
260
+ conflicts: validation.conflicts,
261
+ }, raw);
262
+ return;
263
+ }
264
+ // Build parallel context with native isolation awareness
265
+ const backend = detectBackend(cwd);
266
+ const capabilities = getBackendCapabilities(backend);
267
+ const context = buildParallelContext(cwd, phaseNumbers, {
268
+ nativeWorktreeAvailable: capabilities.native_worktree_isolation,
269
+ });
270
+ if (context.error) {
271
+ output(context, raw, `Error: ${context.error}`);
272
+ return;
273
+ }
274
+ // Add independence validation flag
275
+ context.independence_validated = true;
276
+ // Include gate warnings if any
277
+ if (gates.warnings && gates.warnings.length > 0) {
278
+ context.gate_warnings = gates.warnings;
279
+ }
280
+ output(context, raw, `Backend: ${context.backend}, ${context.phase_count} phases, mode: ${context.mode}`);
281
+ }
282
+ // ─── formatProgressBar ──────────────────────────────────────────────────────
283
+ /**
284
+ * Format a progress bar string like `[####______] 40%`
285
+ */
286
+ function formatProgressBar(current, total, width) {
287
+ const barWidth = width || 20;
288
+ const pct = total === 0 ? 0 : Math.min(1, current / total);
289
+ const filled = Math.round(pct * barWidth);
290
+ const empty = barWidth - filled;
291
+ const bar = '#'.repeat(filled) + '_'.repeat(empty);
292
+ const pctLabel = Math.round(pct * 100) + '%';
293
+ return `[${bar}] ${pctLabel}`;
294
+ }
295
+ // ─── streamPhaseProgress ────────────────────────────────────────────────────
296
+ /**
297
+ * Write formatted phase progress to stderr.
298
+ */
299
+ function streamPhaseProgress(phaseNum, current, total, status) {
300
+ const padded = String(phaseNum).padStart(2, '0');
301
+ const bar = formatProgressBar(current, total);
302
+ const statusPart = status ? ` [${status}]` : '';
303
+ const line = `Phase ${padded}: ${current} of ${total} ${bar}${statusPart}\n`;
304
+ process.stderr.write(line);
305
+ }
306
+ // ─── cmdParallelProgress ────────────────────────────────────────────────────
307
+ /**
308
+ * CLI command for progress updates during parallel execution.
309
+ * Accepts --phase, --plan, --total-plans, --status args.
310
+ */
311
+ function cmdParallelProgress(args, raw) {
312
+ // Parse args
313
+ let phase = null;
314
+ let plan = null;
315
+ let totalPlans = null;
316
+ let status = null;
317
+ for (let i = 0; i < args.length; i++) {
318
+ if (args[i] === '--phase' && args[i + 1])
319
+ phase = args[++i];
320
+ else if (args[i] === '--plan' && args[i + 1])
321
+ plan = parseInt(args[++i], 10);
322
+ else if (args[i] === '--total-plans' && args[i + 1])
323
+ totalPlans = parseInt(args[++i], 10);
324
+ else if (args[i] === '--status' && args[i + 1])
325
+ status = args[++i];
326
+ }
327
+ if (phase === null || plan === null || totalPlans === null) {
328
+ output({ error: 'Usage: parallel-progress --phase N --plan M --total-plans T [--status label]' }, raw);
329
+ return;
330
+ }
331
+ const bar = formatProgressBar(plan, totalPlans);
332
+ if (raw) {
333
+ output({ phase, plan, total_plans: totalPlans, bar, status }, raw);
334
+ }
335
+ else {
336
+ streamPhaseProgress(phase, plan, totalPlans, status || undefined);
337
+ }
338
+ }
339
+ // ─── Exports ──────────────────────────────────────────────────────────────────
340
+ module.exports = {
341
+ validateIndependentPhases,
342
+ buildParallelContext,
343
+ buildWaves,
344
+ cmdInitExecuteParallel,
345
+ formatProgressBar,
346
+ streamPhaseProgress,
347
+ cmdParallelProgress,
348
+ };
349
+ //# sourceMappingURL=parallel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../lib/parallel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../lib/paths.ts"],"names":[],"mappings":""}
@@ -0,0 +1,254 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ // ─── Milestone Detection ────────────────────────────────────────────────────
6
+ /**
7
+ * Read the current milestone version from STATE.md.
8
+ *
9
+ * Reads the **Milestone:** field from .planning/STATE.md and extracts
10
+ * the version string (e.g., 'v0.2.1'). Returns 'anonymous' when
11
+ * STATE.md is missing, unreadable, has no Milestone field, or the
12
+ * field value contains no version string.
13
+ * @param cwd - Absolute path to the working directory (project root)
14
+ * @returns Current milestone version string (e.g., 'v0.2.1'), or 'anonymous' if not found
15
+ */
16
+ function currentMilestone(cwd) {
17
+ const statePath = path.join(cwd, '.planning', 'STATE.md');
18
+ let content;
19
+ try {
20
+ content = fs.readFileSync(statePath, 'utf-8');
21
+ }
22
+ catch {
23
+ return inferMilestoneFromDisk(cwd);
24
+ }
25
+ // Extract the **Milestone:** field value
26
+ const fieldMatch = content.match(/\*\*Milestone:\*\*\s*(.+)/i);
27
+ if (!fieldMatch)
28
+ return inferMilestoneFromDisk(cwd);
29
+ const fieldValue = fieldMatch[1].trim();
30
+ if (!fieldValue)
31
+ return inferMilestoneFromDisk(cwd);
32
+ // Extract just the version string (vX.Y or vX.Y.Z etc.)
33
+ const versionMatch = fieldValue.match(/(v[\d.]+)/);
34
+ if (!versionMatch)
35
+ return inferMilestoneFromDisk(cwd);
36
+ return versionMatch[1];
37
+ }
38
+ /**
39
+ * Fallback: infer milestone from ROADMAP.md and .planning/milestones/ directory.
40
+ *
41
+ * Mirrors the 4-strategy approach from getMilestoneInfo() in utils.js
42
+ * (duplicated here to avoid circular dependency: utils.js imports paths.js).
43
+ * Falls back to scanning milestones/ directory if ROADMAP.md parsing fails.
44
+ */
45
+ function inferMilestoneFromDisk(cwd) {
46
+ // Collect active milestone directories on disk
47
+ const msDir = path.join(cwd, '.planning', 'milestones');
48
+ let activeDirs = [];
49
+ try {
50
+ const entries = fs.readdirSync(msDir, { withFileTypes: true });
51
+ activeDirs = entries
52
+ .filter((e) => e.isDirectory() && !e.name.endsWith('-phases') && e.name !== 'anonymous')
53
+ .map((e) => e.name);
54
+ }
55
+ catch {
56
+ // milestones dir doesn't exist
57
+ }
58
+ // If exactly one active milestone dir, use it directly
59
+ if (activeDirs.length === 1)
60
+ return activeDirs[0];
61
+ // If multiple dirs exist, disambiguate via ROADMAP.md
62
+ if (activeDirs.length > 1) {
63
+ const fromRoadmap = parseRoadmapMilestone(cwd);
64
+ if (fromRoadmap && activeDirs.includes(fromRoadmap))
65
+ return fromRoadmap;
66
+ }
67
+ return 'anonymous';
68
+ }
69
+ /**
70
+ * Parse ROADMAP.md for the active milestone version string.
71
+ * Mirrors strategies 1-3 from getMilestoneInfo() in utils.js.
72
+ * (Duplicated here to avoid circular dependency: utils.js imports paths.js.)
73
+ */
74
+ function parseRoadmapMilestone(cwd) {
75
+ try {
76
+ const raw = fs.readFileSync(path.join(cwd, '.planning', 'ROADMAP.md'), 'utf-8');
77
+ const roadmap = raw.replace(/<details>[\s\S]*?<\/details>/gi, '');
78
+ // Strategy 1: "(in progress)" milestone bullet
79
+ const inProgress = roadmap.match(/-\s+(v[\d.]+)\s+[^\n(]+?\s*\(in progress\)/im);
80
+ if (inProgress)
81
+ return inProgress[1];
82
+ // Strategy 2: Last non-shipped milestone bullet
83
+ const bulletRegex = /-\s+(v[\d.]+)\s+[^\n(]+?(?:\s*\(([^)]*)\))?\s*$/gim;
84
+ let lastNonShipped = null;
85
+ let m;
86
+ while ((m = bulletRegex.exec(roadmap)) !== null) {
87
+ if (!/shipped/i.test(m[2] || ''))
88
+ lastNonShipped = m[1];
89
+ }
90
+ if (lastNonShipped)
91
+ return lastNonShipped;
92
+ // Strategy 3: Heading format "## vX.Y.Z: Name"
93
+ const headingMatch = roadmap.match(/^##\s+(?!#).*?(v\d+\.\d+(?:\.\d+)?)\s*[:\s]+([^\n(]+)/m);
94
+ if (headingMatch)
95
+ return headingMatch[1];
96
+ }
97
+ catch {
98
+ // ROADMAP.md doesn't exist
99
+ }
100
+ return null;
101
+ }
102
+ // ─── Internal Helper ────────────────────────────────────────────────────────
103
+ /**
104
+ * Return the milestone root directory path.
105
+ */
106
+ function milestoneRoot(cwd, milestone) {
107
+ return path.join(cwd, '.planning', 'milestones', milestone);
108
+ }
109
+ // ─── Directory Path Functions ───────────────────────────────────────────────
110
+ /**
111
+ * Root milestones container directory.
112
+ */
113
+ function milestonesDir(cwd) {
114
+ return path.join(cwd, '.planning', 'milestones');
115
+ }
116
+ /**
117
+ * Milestone-scoped phases directory.
118
+ *
119
+ * Always returns the milestone-scoped path (.planning/milestones/{milestone}/phases/).
120
+ * Callers should use fs.mkdirSync({ recursive: true }) to ensure the directory exists.
121
+ * @param cwd - Absolute path to the working directory (project root)
122
+ * @param milestone - Milestone version string (e.g., 'v0.2.1'); defaults to current milestone if omitted
123
+ * @returns Absolute path to the milestone-scoped phases directory
124
+ */
125
+ function phasesDir(cwd, milestone) {
126
+ if (milestone == null) {
127
+ milestone = currentMilestone(cwd);
128
+ }
129
+ const milestonesBase = path.join(cwd, '.planning', 'milestones');
130
+ const resolved = path.join(milestoneRoot(cwd, milestone), 'phases');
131
+ if (!resolved.startsWith(milestonesBase + path.sep) && resolved !== milestonesBase) {
132
+ throw new Error(`Invalid milestone: path would escape .planning directory`);
133
+ }
134
+ return resolved;
135
+ }
136
+ /**
137
+ * Specific phase subdirectory within a milestone.
138
+ *
139
+ * Uses phasesDir() for the base path, inheriting its backward-compatible fallback.
140
+ */
141
+ function phaseDir(cwd, milestone, phaseDirName) {
142
+ const base = phasesDir(cwd, milestone);
143
+ const resolved = path.join(base, phaseDirName);
144
+ if (!resolved.startsWith(base + path.sep) && resolved !== base) {
145
+ throw new Error(`Invalid phase directory: path would escape phases directory`);
146
+ }
147
+ return resolved;
148
+ }
149
+ /**
150
+ * Milestone-scoped research directory.
151
+ */
152
+ function researchDir(cwd, milestone) {
153
+ if (milestone == null) {
154
+ milestone = currentMilestone(cwd);
155
+ }
156
+ return path.join(milestoneRoot(cwd, milestone), 'research');
157
+ }
158
+ /**
159
+ * Project-level codebase analysis directory.
160
+ *
161
+ * Always returns .planning/codebase/ -- codebase maps are project-wide,
162
+ * not scoped to a specific milestone.
163
+ * @param cwd - Absolute path to the working directory (project root)
164
+ * @returns Absolute path to the .planning/codebase/ directory
165
+ */
166
+ function codebaseDir(cwd) {
167
+ return path.join(cwd, '.planning', 'codebase');
168
+ }
169
+ /**
170
+ * Milestone-scoped todos directory.
171
+ */
172
+ function todosDir(cwd, milestone) {
173
+ if (milestone == null) {
174
+ milestone = currentMilestone(cwd);
175
+ }
176
+ return path.join(milestoneRoot(cwd, milestone), 'todos');
177
+ }
178
+ /**
179
+ * Milestone-scoped discussions directory.
180
+ * Created at runtime by runDiscussion() via mkdirSync({ recursive: true }).
181
+ */
182
+ function discussionsDir(cwd, milestone) {
183
+ if (milestone == null) {
184
+ milestone = currentMilestone(cwd);
185
+ }
186
+ const milestonesBase = path.join(cwd, '.planning', 'milestones');
187
+ const resolved = path.join(milestoneRoot(cwd, milestone), 'discussions');
188
+ if (!resolved.startsWith(milestonesBase + path.sep) && resolved !== milestonesBase) {
189
+ throw new Error('Invalid milestone: path would escape .planning directory');
190
+ }
191
+ return resolved;
192
+ }
193
+ /**
194
+ * Milestone-scoped quick tasks directory.
195
+ */
196
+ function quickDir(cwd, milestone) {
197
+ if (milestone == null) {
198
+ milestone = currentMilestone(cwd);
199
+ }
200
+ return path.join(milestoneRoot(cwd, milestone), 'quick');
201
+ }
202
+ /**
203
+ * Archived phases directory for a completed milestone.
204
+ *
205
+ * Matches the existing archive layout where completed milestone phases
206
+ * are stored as {version}-phases/ directories.
207
+ * @param cwd - Absolute path to the working directory (project root)
208
+ * @param version - Milestone version string used to form the archive directory name (e.g., 'v0.2.1')
209
+ * @returns Absolute path to the archived phases directory (e.g., .planning/milestones/v0.2.1-phases/)
210
+ */
211
+ function archivedPhasesDir(cwd, version) {
212
+ const milestonesBase = path.join(cwd, '.planning', 'milestones');
213
+ const resolved = path.join(milestonesBase, version + '-phases');
214
+ if (!resolved.startsWith(milestonesBase + path.sep) && resolved !== milestonesBase) {
215
+ throw new Error(`Invalid version: path would escape .planning directory`);
216
+ }
217
+ return resolved;
218
+ }
219
+ /**
220
+ * Milestone-scoped standards directory.
221
+ */
222
+ function standardsDir(cwd, milestone) {
223
+ if (milestone == null) {
224
+ milestone = currentMilestone(cwd);
225
+ }
226
+ return path.join(milestoneRoot(cwd, milestone), 'standards');
227
+ }
228
+ // ─── Exports ────────────────────────────────────────────────────────────────
229
+ /**
230
+ * Root .planning directory path.
231
+ *
232
+ * Single source of truth for the .planning/ directory location.
233
+ * Use this instead of hardcoding path.join(cwd, '.planning', ...) constructions.
234
+ * @param cwd - Absolute path to the working directory (project root)
235
+ * @returns Absolute path to the .planning/ directory
236
+ */
237
+ function planningDir(cwd) {
238
+ return path.join(cwd, '.planning');
239
+ }
240
+ module.exports = {
241
+ currentMilestone,
242
+ planningDir,
243
+ milestonesDir,
244
+ phasesDir,
245
+ phaseDir,
246
+ researchDir,
247
+ codebaseDir,
248
+ todosDir,
249
+ discussionsDir,
250
+ quickDir,
251
+ standardsDir,
252
+ archivedPhasesDir,
253
+ };
254
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../lib/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { GateViolation, PhaseCompleteResult } from './types';
2
+ import type { Scheduler } from './scheduler';
3
+ export declare function _verifyFallbackOutput(cwd: string, phaseNum: string): {
4
+ ok: boolean;
5
+ checks: {
6
+ name: string;
7
+ passed: boolean;
8
+ }[];
9
+ };
10
+ /**
11
+ * Attempts to recover from a mechanical phase-completion failure by
12
+ * asking Claude to perform the ROADMAP.md and STATE.md edits directly.
13
+ * Returns a synthetic PhaseCompleteResult on success, null on any
14
+ * failure or when the scheduler is null.
15
+ *
16
+ * Retries up to `phase_complete_llm_fallback_retries` times (default 0)
17
+ * with exponential backoff: 2^attempt seconds between retries (2s, 4s, …).
18
+ */
19
+ export declare function attemptLlmFallbackCompletion(cwd: string, phaseNum: string, scheduler: Scheduler | null, failure: Error | {
20
+ gate_errors?: GateViolation[];
21
+ }): Promise<PhaseCompleteResult | null>;
22
+ //# sourceMappingURL=phase-complete-llm.d.ts.map