@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,571 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * GRD Evolve -- Discovery engine
5
+ *
6
+ * Claude-powered and hardcoded codebase discovery, output parsing,
7
+ * and discovery orchestration (runDiscovery, runGroupDiscovery).
8
+ * Dimension-specific discoverers are in ./_dimensions.ts.
9
+ *
10
+ * @dependencies ./types, ./state, ./_dimensions, ../utils, ../autopilot
11
+ */
12
+
13
+ import type {
14
+ WorkItem,
15
+ WorkItemEffort,
16
+ EvolveState,
17
+ EvolveGroupState,
18
+ GroupDiscoveryResult,
19
+ WorkGroup,
20
+ DiscoveryOptions,
21
+ } from './types';
22
+
23
+ const path = require('path');
24
+ const {
25
+ safeReadFile,
26
+ }: {
27
+ safeReadFile: (filePath: string) => string | null;
28
+ } = require('../utils');
29
+ const {
30
+ spawnClaudeAsync,
31
+ }: {
32
+ spawnClaudeAsync: (
33
+ cwd: string,
34
+ prompt: string,
35
+ opts?: {
36
+ captureOutput?: boolean;
37
+ model?: string;
38
+ maxTurns?: number;
39
+ timeout?: number;
40
+ outputFormat?: string;
41
+ captureStderr?: boolean;
42
+ }
43
+ ) => Promise<{
44
+ exitCode: number;
45
+ stdout?: string;
46
+ stderr?: string;
47
+ timedOut: boolean;
48
+ }>;
49
+ } = require('../autopilot');
50
+ const {
51
+ SONNET_MODEL,
52
+ WORK_ITEM_DIMENSIONS,
53
+ DEFAULT_ITEMS_PER_ITERATION,
54
+ DEFAULT_PICK_PCT,
55
+ THEME_PATTERNS,
56
+ createWorkItem,
57
+ mergeWorkItems,
58
+ }: {
59
+ SONNET_MODEL: string;
60
+ WORK_ITEM_DIMENSIONS: string[];
61
+ DEFAULT_ITEMS_PER_ITERATION: number;
62
+ DEFAULT_PICK_PCT: number;
63
+ THEME_PATTERNS: Array<{ pattern: RegExp; theme: string }>;
64
+ createWorkItem: (
65
+ dimension: string,
66
+ slug: string,
67
+ title: string,
68
+ description: string,
69
+ opts?: { effort?: string }
70
+ ) => WorkItem;
71
+ mergeWorkItems: (existing: WorkItem[], discovered: WorkItem[]) => WorkItem[];
72
+ } = require('./state');
73
+ const {
74
+ analyzeCodebaseForItems,
75
+ }: {
76
+ analyzeCodebaseForItems: (cwd: string) => WorkItem[];
77
+ } = require('./_dimensions');
78
+ const {
79
+ discoverProductIdeationItems,
80
+ }: {
81
+ discoverProductIdeationItems: (cwd: string, opts?: DiscoveryOptions) => Promise<WorkItem[]>;
82
+ } = require('./_product-ideation');
83
+
84
+ /** Default timeout for discovery subprocesses (3 hours). */
85
+ const DEFAULT_DISCOVERY_TIMEOUT: number = 10_800_000;
86
+ const {
87
+ selectPriorityItems,
88
+ groupDiscoveredItems,
89
+ selectPriorityGroups,
90
+ }: {
91
+ selectPriorityItems: (
92
+ items: WorkItem[],
93
+ count: number
94
+ ) => { selected: WorkItem[]; remaining: WorkItem[] };
95
+ groupDiscoveredItems: (
96
+ items: WorkItem[],
97
+ dimensionWeights?: Record<string, number>
98
+ ) => WorkGroup[];
99
+ selectPriorityGroups: (
100
+ groups: WorkGroup[],
101
+ pickPct: number
102
+ ) => { selected: WorkGroup[]; remaining: WorkGroup[] };
103
+ } = require('./scoring');
104
+
105
+ const fs = require('fs');
106
+
107
+ // ─── Saturated Dimensions ───────────────────────────────────────────────────
108
+
109
+ /**
110
+ * Dimensions that have been verified as 100% false-positive for 5+ consecutive
111
+ * iterations. Items in these themes are filtered out before grouping to avoid
112
+ * wasting subprocess calls on work that's already been done.
113
+ */
114
+ const SATURATED_THEMES: Set<string> = new Set([
115
+ 'error-recovery',
116
+ 'agent-workflow-gaps',
117
+ 'process-exit-cleanup',
118
+ 'long-function-refactors',
119
+ 'jsdoc-gaps',
120
+ ]);
121
+
122
+ // ─── Codebase Digest ────────────────────────────────────────────────────────
123
+
124
+ /** File extensions to include in codebase digest. */
125
+ const CODE_EXTENSIONS: Set<string> = new Set([
126
+ '.ts',
127
+ '.js',
128
+ '.tsx',
129
+ '.jsx',
130
+ '.py',
131
+ '.rs',
132
+ '.go',
133
+ '.java',
134
+ '.kt',
135
+ '.rb',
136
+ '.php',
137
+ '.swift',
138
+ '.c',
139
+ '.cpp',
140
+ '.h',
141
+ '.hpp',
142
+ '.cs',
143
+ '.vue',
144
+ '.svelte',
145
+ '.astro',
146
+ '.sql',
147
+ '.sh',
148
+ '.bash',
149
+ '.zsh',
150
+ ]);
151
+
152
+ /** Directories to always skip. */
153
+ const SKIP_DIRS: Set<string> = new Set([
154
+ 'node_modules',
155
+ '.git',
156
+ '.next',
157
+ '.nuxt',
158
+ 'dist',
159
+ 'build',
160
+ 'out',
161
+ '.cache',
162
+ '.turbo',
163
+ '.vercel',
164
+ '__pycache__',
165
+ '.tox',
166
+ '.mypy_cache',
167
+ 'target',
168
+ 'vendor',
169
+ '.worktrees',
170
+ '.planning',
171
+ 'coverage',
172
+ ]);
173
+
174
+ /**
175
+ * Recursively collect source files from a directory (max 2 levels deep).
176
+ */
177
+ function _collectSourceFiles(
178
+ baseDir: string,
179
+ relPrefix: string,
180
+ depth: number,
181
+ maxDepth: number
182
+ ): string[] {
183
+ if (depth > maxDepth) return [];
184
+ const results: string[] = [];
185
+ let entries: Array<{ isFile: () => boolean; isDirectory: () => boolean; name: string }>;
186
+ try {
187
+ entries = fs.readdirSync(baseDir, { withFileTypes: true });
188
+ } catch {
189
+ return results;
190
+ }
191
+ const names: Set<string> = new Set(entries.map((e: { name: string }) => e.name));
192
+ for (const entry of entries) {
193
+ if (entry.name.startsWith('.')) continue;
194
+ if (entry.isDirectory()) {
195
+ if (SKIP_DIRS.has(entry.name)) continue;
196
+ const sub: string = relPrefix ? `${relPrefix}/${entry.name}` : entry.name;
197
+ results.push(
198
+ ..._collectSourceFiles(path.join(baseDir, entry.name), sub, depth + 1, maxDepth)
199
+ );
200
+ } else if (entry.isFile()) {
201
+ const ext: string = path.extname(entry.name);
202
+ if (!CODE_EXTENSIONS.has(ext)) continue;
203
+ // Skip JS files that have a matching TS file
204
+ if (ext === '.js' && names.has(entry.name.replace(/\.js$/, '.ts'))) continue;
205
+ if (ext === '.jsx' && names.has(entry.name.replace(/\.jsx$/, '.tsx'))) continue;
206
+ const rel: string = relPrefix ? `${relPrefix}/${entry.name}` : entry.name;
207
+ const content: string | null = safeReadFile(path.join(baseDir, entry.name));
208
+ const lineCount: number = content ? content.split('\n').length : 0;
209
+ results.push(`${rel} (${lineCount}L)`);
210
+ }
211
+ }
212
+ return results;
213
+ }
214
+
215
+ /**
216
+ * Build a compact file tree with line counts for Claude-powered discovery.
217
+ * Dynamically scans the project's actual directories (max 2 levels deep).
218
+ */
219
+ function buildCodebaseDigest(cwd: string): string {
220
+ const files: string[] = _collectSourceFiles(cwd, '', 0, 2);
221
+ files.sort();
222
+ return files.join('\n');
223
+ }
224
+
225
+ /**
226
+ * Build the discovery prompt with a file tree and optional exclusions.
227
+ */
228
+ function buildDiscoveryPrompt(cwd: string, completedTitles?: string[]): string {
229
+ const tree: string = buildCodebaseDigest(cwd);
230
+
231
+ const exclusionBlock: string =
232
+ completedTitles && completedTitles.length > 0
233
+ ? `\nDo NOT rediscover these already-completed items:\n${completedTitles.map((t) => `- ${t}`).join('\n')}\n`
234
+ : '';
235
+
236
+ return `Analyze this codebase for concrete, immediately implementable improvements. Read the source files you need. Here is the file tree:
237
+
238
+ ${tree}
239
+ ${exclusionBlock}
240
+ Output ONLY a JSON array. Each item:
241
+ {"dimension":"<dim>","slug":"<kebab-id>","title":"<short>","description":"<EXACT change: which file, which function/line, what to add/change/remove, and why>","effort":"small|medium|large"}
242
+
243
+ Dimensions: productivity, quality, usability, consistency, stability, improve-features, new-features
244
+
245
+ Rules:
246
+ - Read source files to find real, specific issues — open and read the files before suggesting changes
247
+ - Every item MUST specify: exact file path, function/line, and what code to write or change
248
+ - Bad example: "Add input validation to CLI commands" (too vague)
249
+ - Good example: "Add null check for opts.timeout in lib/autopilot.ts:spawnClaudeAsync (~line 362) — currently crashes if timeout is 0 because setTimeout(fn, 0) is treated as no timeout"
250
+ - Focus on real code changes: bug fixes, missing error handling, new utility functions, test cases, feature improvements
251
+ - Do NOT suggest: JSDoc, documentation, markdown files, process.exit cleanup, splitting long functions, agent init workflows
252
+ - 5-10 items only — quality over quantity, each must be directly implementable
253
+ - ONLY the JSON array, no other text`;
254
+ }
255
+
256
+ // ─── Claude-Powered Discovery ───────────────────────────────────────────────
257
+
258
+ /**
259
+ * Discover code-quality improvement opportunities by running Claude as a subprocess.
260
+ * (Renamed from discoverWithClaude -- handles the code-quality dimension only.)
261
+ */
262
+ async function _discoverCodeQualityWithClaude(
263
+ cwd: string,
264
+ completedTitles?: string[],
265
+ opts?: DiscoveryOptions
266
+ ): Promise<WorkItem[]> {
267
+ try {
268
+ const effectiveTimeout: number = opts?.timeoutMs || DEFAULT_DISCOVERY_TIMEOUT;
269
+ const scheduler = opts?.scheduler;
270
+ const prompt: string = buildDiscoveryPrompt(cwd, completedTitles);
271
+ const result = scheduler
272
+ ? await scheduler.spawn(prompt, {
273
+ model: SONNET_MODEL,
274
+ maxTurns: 15,
275
+ timeout: effectiveTimeout,
276
+ captureOutput: true,
277
+ cwd,
278
+ workItemId: `evolve-discovery-code-quality-${Date.now()}`,
279
+ agentType: 'grd-codebase-mapper',
280
+ })
281
+ : await spawnClaudeAsync(cwd, prompt, {
282
+ captureOutput: true,
283
+ model: SONNET_MODEL,
284
+ maxTurns: 15,
285
+ timeout: effectiveTimeout,
286
+ outputFormat: 'text',
287
+ });
288
+
289
+ if (result.exitCode !== 0 || !result.stdout) {
290
+ if (result.timedOut) {
291
+ process.stderr.write(
292
+ `[evolve] WARNING: Claude discovery timed out after timeout limit, using hardcoded fallback\n`
293
+ );
294
+ } else {
295
+ process.stderr.write(
296
+ `[evolve] Claude discovery failed (exit=${result.exitCode}, timedOut=${result.timedOut}), using hardcoded fallback\n`
297
+ );
298
+ }
299
+ return analyzeCodebaseForItems(cwd);
300
+ }
301
+
302
+ // Check for max-turns error message in stdout
303
+ if (result.stdout.startsWith('Error:')) {
304
+ process.stderr.write(
305
+ `[evolve] Claude discovery error: ${result.stdout.trim()}, using hardcoded fallback\n`
306
+ );
307
+ return analyzeCodebaseForItems(cwd);
308
+ }
309
+
310
+ const items: WorkItem[] = parseDiscoveryOutput(result.stdout);
311
+ if (items.length === 0) {
312
+ process.stderr.write(
313
+ `[evolve] Claude discovery returned unparseable output (${result.stdout.length} chars), using hardcoded fallback\n`
314
+ );
315
+ return analyzeCodebaseForItems(cwd);
316
+ }
317
+ return items;
318
+ } catch (err) {
319
+ process.stderr.write(
320
+ `[evolve] Claude discovery threw: ${(err as Error).message}, using hardcoded fallback\n`
321
+ );
322
+ return analyzeCodebaseForItems(cwd);
323
+ }
324
+ }
325
+
326
+ /**
327
+ * Discover ALL improvement opportunities: code-quality AND product ideation.
328
+ * Runs both discovery pathways in parallel and merges the results.
329
+ */
330
+ async function discoverWithClaude(
331
+ cwd: string,
332
+ completedTitles?: string[],
333
+ opts?: DiscoveryOptions
334
+ ): Promise<WorkItem[]> {
335
+ // Run both discovery pathways in parallel.
336
+ // IMPORTANT: Wrap discoverProductIdeationItems in .catch so an unexpected
337
+ // throw (as opposed to the graceful empty-array return it already does
338
+ // internally) cannot reject the Promise.all and crash the whole pipeline.
339
+ const [codeQualityItems, productIdeationItems] = await Promise.all([
340
+ _discoverCodeQualityWithClaude(cwd, completedTitles, opts),
341
+ discoverProductIdeationItems(cwd, opts).catch((err) => {
342
+ process.stderr.write(
343
+ `[evolve] Product ideation discovery failed unexpectedly: ${(err as Error).message}\n`
344
+ );
345
+ return [] as WorkItem[];
346
+ }),
347
+ ]);
348
+
349
+ // Merge: product ideation items come first (they have higher dimension weight)
350
+ return [...productIdeationItems, ...codeQualityItems];
351
+ }
352
+
353
+ /**
354
+ * Parse Claude's discovery output into validated work items.
355
+ */
356
+ function parseDiscoveryOutput(raw: string): WorkItem[] {
357
+ let jsonStr: string = raw.trim();
358
+
359
+ // Strip markdown fences if present
360
+ const fenceMatch: RegExpMatchArray | null = jsonStr.match(
361
+ /```(?:json)?\s*\n?([\s\S]*?)\n?\s*```/
362
+ );
363
+ if (fenceMatch) {
364
+ jsonStr = fenceMatch[1].trim();
365
+ }
366
+
367
+ let parsed: unknown;
368
+ try {
369
+ parsed = JSON.parse(jsonStr);
370
+ } catch {
371
+ return [];
372
+ }
373
+
374
+ if (!Array.isArray(parsed)) {
375
+ return [];
376
+ }
377
+
378
+ const validEfforts: string[] = ['small', 'medium', 'large'];
379
+ const items: WorkItem[] = [];
380
+
381
+ for (const entry of parsed as Array<Record<string, unknown>>) {
382
+ if (
383
+ !entry ||
384
+ typeof entry.dimension !== 'string' ||
385
+ typeof entry.slug !== 'string' ||
386
+ typeof entry.title !== 'string' ||
387
+ typeof entry.description !== 'string'
388
+ ) {
389
+ continue;
390
+ }
391
+
392
+ if (!WORK_ITEM_DIMENSIONS.includes(entry.dimension)) {
393
+ continue;
394
+ }
395
+
396
+ const effort: WorkItemEffort = validEfforts.includes(entry.effort as string)
397
+ ? (entry.effort as WorkItemEffort)
398
+ : 'medium';
399
+
400
+ try {
401
+ items.push(
402
+ createWorkItem(entry.dimension, entry.slug, entry.title, entry.description, { effort })
403
+ );
404
+ } catch {
405
+ // Skip invalid items
406
+ }
407
+ }
408
+
409
+ // Warn when >50% of items have off-theme slugs
410
+ if (items.length > 0) {
411
+ const offThemeCount: number = items.filter((item) => {
412
+ return !THEME_PATTERNS.some(({ pattern }) => pattern.test(item.slug));
413
+ }).length;
414
+ if (offThemeCount / items.length > 0.5) {
415
+ process.stderr.write(
416
+ `[evolve] WARNING: ${offThemeCount}/${items.length} items do not match any theme pattern — Claude may be generating off-theme slugs\n`
417
+ );
418
+ }
419
+ }
420
+
421
+ return items;
422
+ }
423
+
424
+ // ─── Discovery Orchestrators ────────────────────────────────────────────────
425
+
426
+ /**
427
+ * Run the full discovery flow: analyze codebase, merge with previous state,
428
+ * and select priority items.
429
+ */
430
+ async function runDiscovery(
431
+ cwd: string,
432
+ previousState: EvolveState | null
433
+ ): Promise<{
434
+ selected: WorkItem[];
435
+ remaining: WorkItem[];
436
+ all_discovered_count: number;
437
+ merged_count: number;
438
+ }> {
439
+ const freshItems: WorkItem[] = await discoverWithClaude(cwd);
440
+ const allDiscoveredCount: number = freshItems.length;
441
+
442
+ let mergePool: WorkItem[] = freshItems;
443
+
444
+ if (previousState) {
445
+ // Merge with remaining items from previous state
446
+ if (previousState.remaining && previousState.remaining.length > 0) {
447
+ mergePool = mergeWorkItems(previousState.remaining, freshItems);
448
+ }
449
+ // Merge in bugfix items from previous state
450
+ if (previousState.bugfix && previousState.bugfix.length > 0) {
451
+ mergePool = mergeWorkItems(mergePool, previousState.bugfix);
452
+ }
453
+ }
454
+
455
+ const mergedCount: number = mergePool.length;
456
+ const itemsPerIteration: number = previousState
457
+ ? previousState.items_per_iteration || DEFAULT_ITEMS_PER_ITERATION
458
+ : DEFAULT_ITEMS_PER_ITERATION;
459
+
460
+ const { selected, remaining } = selectPriorityItems(mergePool, itemsPerIteration);
461
+
462
+ return {
463
+ selected,
464
+ remaining,
465
+ all_discovered_count: allDiscoveredCount,
466
+ merged_count: mergedCount,
467
+ };
468
+ }
469
+
470
+ /**
471
+ * Run full discovery flow returning groups instead of flat items.
472
+ */
473
+ async function runGroupDiscovery(
474
+ cwd: string,
475
+ previousState: EvolveGroupState | EvolveState | null,
476
+ pickPct?: number,
477
+ opts?: DiscoveryOptions
478
+ ): Promise<GroupDiscoveryResult> {
479
+ // Extract completed titles from history to prevent rediscovery
480
+ const stateAsLegacy = previousState as EvolveState | null;
481
+ const stateAsGroup = previousState as EvolveGroupState | null;
482
+ const completedTitles: string[] = stateAsGroup?.completed_groups
483
+ ? stateAsGroup.completed_groups.flatMap((g) => g.items.map((i: WorkItem) => i.title))
484
+ : [];
485
+
486
+ const freshItems: WorkItem[] = await discoverWithClaude(cwd, completedTitles, opts);
487
+ const allItemsCount: number = freshItems.length;
488
+
489
+ let mergePool: WorkItem[] = freshItems;
490
+
491
+ if (previousState && stateAsLegacy?.remaining && !stateAsGroup?.remaining_groups) {
492
+ const oldItems: WorkItem[] = stateAsLegacy.remaining.filter(
493
+ (i: WorkItem) => i.status === 'pending'
494
+ );
495
+ if (stateAsLegacy.bugfix && stateAsLegacy.bugfix.length > 0) {
496
+ mergePool = mergeWorkItems(mergeWorkItems(oldItems, freshItems), stateAsLegacy.bugfix);
497
+ } else {
498
+ mergePool = mergeWorkItems(oldItems, freshItems);
499
+ }
500
+ } else if (previousState && stateAsGroup?.remaining_groups) {
501
+ // New format: merge previous remaining groups' items back into pool for re-grouping
502
+ const prevItems: WorkItem[] = [];
503
+ for (const group of stateAsGroup.remaining_groups) {
504
+ if (group.status === 'pending') {
505
+ prevItems.push(...group.items);
506
+ }
507
+ }
508
+ mergePool = mergeWorkItems(prevItems, freshItems);
509
+ }
510
+
511
+ // Filter out items belonging to saturated themes (100% false-positive for 5+ iterations)
512
+ const preFilterCount: number = mergePool.length;
513
+ mergePool = mergePool.filter((item) => {
514
+ for (const { pattern, theme } of THEME_PATTERNS) {
515
+ if (pattern.test(item.slug) && SATURATED_THEMES.has(theme)) {
516
+ return false;
517
+ }
518
+ }
519
+ return true;
520
+ });
521
+ if (mergePool.length < preFilterCount) {
522
+ process.stderr.write(
523
+ `[evolve] Filtered ${preFilterCount - mergePool.length} items from saturated themes\n`
524
+ );
525
+ }
526
+
527
+ // Deduplicate against completed groups from history
528
+ if (previousState && stateAsGroup?.completed_groups) {
529
+ const completedIds = new Set<string>(
530
+ stateAsGroup.completed_groups.flatMap((g) => g.items.map((i: WorkItem) => i.id))
531
+ );
532
+ if (completedIds.size > 0) {
533
+ const beforeDedup: number = mergePool.length;
534
+ mergePool = mergePool.filter((item) => !completedIds.has(item.id));
535
+ if (mergePool.length < beforeDedup) {
536
+ process.stderr.write(
537
+ `[evolve] Deduped ${beforeDedup - mergePool.length} items already completed in prior iterations\n`
538
+ );
539
+ }
540
+ }
541
+ }
542
+
543
+ const effectivePickPct: number = pickPct !== undefined ? pickPct : DEFAULT_PICK_PCT;
544
+ const groups: WorkGroup[] = groupDiscoveredItems(mergePool);
545
+ const { selected, remaining } = selectPriorityGroups(groups, effectivePickPct);
546
+
547
+ return {
548
+ groups,
549
+ selected_groups: selected,
550
+ remaining_groups: remaining,
551
+ all_items_count: allItemsCount,
552
+ merged_items_count: mergePool.length,
553
+ groups_count: groups.length,
554
+ };
555
+ }
556
+
557
+ // ─── Exports ────────────────────────────────────────────────────────────────
558
+
559
+ module.exports = {
560
+ // Re-export dimension functions for backward compat
561
+ discoverImproveFeatureItems: require('./_dimensions-features').discoverImproveFeatureItems,
562
+ analyzeCodebaseForItems: require('./_dimensions').analyzeCodebaseForItems,
563
+ // Framework functions
564
+ buildCodebaseDigest,
565
+ buildDiscoveryPrompt,
566
+ discoverWithClaude,
567
+ parseDiscoveryOutput,
568
+ // Orchestrators
569
+ runDiscovery,
570
+ runGroupDiscovery,
571
+ };
@@ -0,0 +1,105 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * GRD Evolve -- Barrel re-export
5
+ *
6
+ * Re-exports all 44 public symbols from the evolve sub-modules.
7
+ * This file is the single entry point for consumers of lib/evolve/.
8
+ *
9
+ * @see lib/evolve/types.ts -- Domain types (re-exported via module.exports)
10
+ * @see lib/evolve/state.ts -- Constants, state I/O, work item factory
11
+ * @see lib/evolve/discovery.ts -- Discovery engine + orchestrators
12
+ * @see lib/evolve/scoring.ts -- Scoring heuristic + group engine
13
+ * @see lib/evolve/orchestrator.ts -- Evolve loop + todos
14
+ * @see lib/evolve/_prompts.ts -- Prompt templates
15
+ * @see lib/evolve/_product-ideation.ts -- Product ideation discovery
16
+ * @see lib/evolve/cli.ts -- CLI command functions
17
+ */
18
+
19
+ // ─── State (constants + state I/O + work item factory) ──────────────────────
20
+
21
+ const stateModule = require('./state');
22
+ const discoveryModule = require('./discovery');
23
+ const scoringModule = require('./scoring');
24
+ const orchestratorModule = require('./orchestrator');
25
+ const promptsModule = require('./_prompts');
26
+ const cliModule = require('./cli');
27
+ const productIdeationModule = require('./_product-ideation');
28
+
29
+ module.exports = {
30
+ // ─── Constants (from state.ts) ──────────────────────────────────────────
31
+ EVOLVE_STATE_FILENAME: stateModule.EVOLVE_STATE_FILENAME,
32
+ WORK_ITEM_DIMENSIONS: stateModule.WORK_ITEM_DIMENSIONS,
33
+ DEFAULT_ITEMS_PER_ITERATION: stateModule.DEFAULT_ITEMS_PER_ITERATION,
34
+ DEFAULT_PICK_PCT: stateModule.DEFAULT_PICK_PCT,
35
+ THEME_PATTERNS: stateModule.THEME_PATTERNS,
36
+ SONNET_MODEL: stateModule.SONNET_MODEL,
37
+
38
+ // ─── Work item factory (from state.ts) ──────────────────────────────────
39
+ createWorkItem: stateModule.createWorkItem,
40
+
41
+ // ─── State path (from state.ts) ─────────────────────────────────────────
42
+ evolveStatePath: stateModule.evolveStatePath,
43
+
44
+ // ─── State I/O (from state.ts) ──────────────────────────────────────────
45
+ readEvolveState: stateModule.readEvolveState,
46
+ writeEvolveState: stateModule.writeEvolveState,
47
+
48
+ // ─── State creation (from state.ts) ─────────────────────────────────────
49
+ createInitialState: stateModule.createInitialState,
50
+
51
+ // ─── Merge logic (from state.ts) ────────────────────────────────────────
52
+ mergeWorkItems: stateModule.mergeWorkItems,
53
+
54
+ // ─── Iteration advancement (from state.ts) ──────────────────────────────
55
+ advanceIteration: stateModule.advanceIteration,
56
+
57
+ // ─── Discovery engine (from discovery.ts) ───────────────────────────────
58
+ discoverImproveFeatureItems: discoveryModule.discoverImproveFeatureItems,
59
+ analyzeCodebaseForItems: discoveryModule.analyzeCodebaseForItems,
60
+ buildCodebaseDigest: discoveryModule.buildCodebaseDigest,
61
+ buildDiscoveryPrompt: discoveryModule.buildDiscoveryPrompt,
62
+ discoverWithClaude: discoveryModule.discoverWithClaude,
63
+ parseDiscoveryOutput: discoveryModule.parseDiscoveryOutput,
64
+
65
+ // ─── Scoring heuristic (from scoring.ts) ────────────────────────────────
66
+ scoreWorkItem: scoringModule.scoreWorkItem,
67
+
68
+ // ─── Priority selection (from scoring.ts) ───────────────────────────────
69
+ selectPriorityItems: scoringModule.selectPriorityItems,
70
+
71
+ // ─── Group engine (from scoring.ts) ─────────────────────────────────────
72
+ groupDiscoveredItems: scoringModule.groupDiscoveredItems,
73
+ selectPriorityGroups: scoringModule.selectPriorityGroups,
74
+
75
+ // ─── Discovery orchestrator (from discovery.ts) ─────────────────────────
76
+ runDiscovery: discoveryModule.runDiscovery,
77
+ runGroupDiscovery: discoveryModule.runGroupDiscovery,
78
+
79
+ // ─── Product ideation discovery (from _product-ideation.ts) ─────────────
80
+ gatherProductContext: productIdeationModule.gatherProductContext,
81
+ buildProductIdeationPrompt: productIdeationModule.buildProductIdeationPrompt,
82
+ parseProductIdeationOutput: productIdeationModule.parseProductIdeationOutput,
83
+ discoverProductIdeationItems: productIdeationModule.discoverProductIdeationItems,
84
+
85
+ // ─── Prompt builders (from _prompts.ts) ─────────────────────────────────
86
+ buildPlanPrompt: promptsModule.buildPlanPrompt,
87
+ buildExecutePrompt: promptsModule.buildExecutePrompt,
88
+ buildReviewPrompt: promptsModule.buildReviewPrompt,
89
+ buildGroupExecutePrompt: promptsModule.buildGroupExecutePrompt,
90
+ buildGroupReviewPrompt: promptsModule.buildGroupReviewPrompt,
91
+
92
+ // ─── Orchestrator (from orchestrator.ts) ────────────────────────────────
93
+ writeEvolutionNotes: orchestratorModule.writeEvolutionNotes,
94
+ writeDiscoveriesToTodos: orchestratorModule.writeDiscoveriesToTodos,
95
+ runEvolve: orchestratorModule.runEvolve,
96
+ runInfiniteEvolve: orchestratorModule.runInfiniteEvolve,
97
+
98
+ // ─── CLI commands (from cli.ts) ─────────────────────────────────────────
99
+ cmdEvolve: cliModule.cmdEvolve,
100
+ cmdEvolveDiscover: cliModule.cmdEvolveDiscover,
101
+ cmdEvolveState: cliModule.cmdEvolveState,
102
+ cmdEvolveAdvance: cliModule.cmdEvolveAdvance,
103
+ cmdEvolveReset: cliModule.cmdEvolveReset,
104
+ cmdInitEvolve: cliModule.cmdInitEvolve,
105
+ };