@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
package/bin/gd.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+ require('tsx/cjs');
4
+ require('./gd.ts');
package/bin/gd.ts ADDED
@@ -0,0 +1,227 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const { join } = require('path') as typeof import('path');
5
+ const { readFileSync, existsSync } = require('fs') as typeof import('fs');
6
+
7
+ const {
8
+ parseFlags,
9
+ classifyCommand,
10
+ }: {
11
+ parseFlags: (argv: string[]) => {
12
+ json: boolean;
13
+ help: boolean;
14
+ version: boolean;
15
+ verbose: boolean;
16
+ cwd?: string;
17
+ backend?: string;
18
+ model?: string;
19
+ positional: string[];
20
+ passthrough: string[];
21
+ };
22
+ classifyCommand: (command: string, subcommand?: string) => 'tool' | 'agent' | 'unknown';
23
+ } = require('../lib/cli/index');
24
+
25
+ const {
26
+ runToolCommand,
27
+ }: {
28
+ runToolCommand: (
29
+ command: string,
30
+ subcommand: string | undefined,
31
+ extraArgs: string[],
32
+ jsonFlag: boolean,
33
+ cwd: string,
34
+ passthrough?: string[]
35
+ ) => { exitCode: number; stdout: string; stderr: string };
36
+ } = require('../lib/cli/tools');
37
+
38
+ const {
39
+ runAgentCommand,
40
+ }: {
41
+ runAgentCommand: (
42
+ command: string,
43
+ args: string[],
44
+ opts: {
45
+ cwd: string;
46
+ backend: string;
47
+ json: boolean;
48
+ verbose: boolean;
49
+ model?: string;
50
+ timeout?: number;
51
+ }
52
+ ) => void;
53
+ } = require('../lib/cli/agent');
54
+
55
+ const flags = parseFlags(process.argv.slice(2));
56
+
57
+ // --version
58
+ if (flags.version) {
59
+ try {
60
+ // Handle both bin/ (source) and dist/bin/ (compiled) locations
61
+ let pkgPath = join(__dirname, '..', 'package.json');
62
+ if (!existsSync(pkgPath)) pkgPath = join(__dirname, '..', '..', 'package.json');
63
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as { version: string };
64
+ process.stdout.write(`gd v${pkg.version}\n`);
65
+ } catch {
66
+ process.stdout.write('gd (unknown version)\n');
67
+ }
68
+ process.exit(0);
69
+ }
70
+
71
+ const command = flags.positional[0];
72
+ const subcommand = flags.positional[1];
73
+ const extraArgs = flags.positional.slice(2);
74
+
75
+ // --help with no command, or no command at all
76
+ if (!command || (flags.help && !command)) {
77
+ printHelp();
78
+ process.exit(0);
79
+ }
80
+
81
+ // Per-command --help
82
+ if (flags.help) {
83
+ printCommandHelp(command);
84
+ process.exit(0);
85
+ }
86
+
87
+ const cwd = flags.cwd || process.cwd();
88
+ let classification = classifyCommand(command, subcommand);
89
+
90
+ // Codex r23 P2: `gd execute-phase <N> --dry-run` should hit the tool
91
+ // dry-run preview, not the agent execute path. Override the agent
92
+ // classification when the user passes --dry-run on an agent command
93
+ // that exposes a tool-side dry-run handler.
94
+ const DRYRUN_TOOL_OVERRIDES = new Set(['execute-phase']);
95
+ if (
96
+ classification === 'agent' &&
97
+ DRYRUN_TOOL_OVERRIDES.has(command) &&
98
+ (extraArgs.includes('--dry-run') || flags.passthrough.includes('--dry-run'))
99
+ ) {
100
+ classification = 'tool';
101
+ }
102
+
103
+ if (classification === 'tool') {
104
+ const result = runToolCommand(command, subcommand, extraArgs, flags.json, cwd, flags.passthrough);
105
+ if (result.stdout) process.stdout.write(result.stdout);
106
+ if (result.stderr) process.stderr.write(result.stderr);
107
+ process.exit(result.exitCode);
108
+ } else if (classification === 'agent') {
109
+ const { detectBackend }: { detectBackend: (cwd: string) => string } = require('../lib/backend');
110
+ const backend = flags.backend || detectBackend(cwd);
111
+ runAgentCommand(command, flags.positional.slice(1), {
112
+ cwd,
113
+ backend,
114
+ json: flags.json,
115
+ verbose: flags.verbose,
116
+ model: flags.model,
117
+ });
118
+ } else {
119
+ process.stderr.write(`Unknown command: ${command}\nRun "gd --help" for usage.\n`);
120
+ process.exit(1);
121
+ }
122
+
123
+ function printHelp(): void {
124
+ process.stdout.write(`gd — Get Research Done CLI
125
+
126
+ Usage: gd <command> [args] [--json] [--help] [--version]
127
+
128
+ Hero verbs (the closed loop):
129
+ init Bootstrap a new R&D project from a template
130
+ plan-phase <N> Compose PLAN.md (Ouroboros context auto-injected)
131
+ execute-phase <N> Run plans (wave-parallel + worktree-isolated)
132
+ verify-phase <N> Reflection-loop verifier with Evidence Standard
133
+ autopilot Run N phases end-to-end (the closed loop)
134
+ evolve Autonomous self-improvement loop
135
+ health Drift score + blockers + Ouroboros status
136
+ think One-shot project briefing aggregating all primitives
137
+ singularity % of recent LOC authored by gd evolve itself
138
+
139
+ Workflow:
140
+ new-milestone Start a new milestone cycle
141
+ autoplan Auto-generate milestones from discoveries
142
+ progress Show project progress
143
+ resume-project Restore project context
144
+ pause-work Save work state for later
145
+ quick Execute small ad-hoc tasks
146
+
147
+ Research:
148
+ survey <topic> SoTA landscape scan
149
+ deep-dive <paper> Paper deep analysis
150
+ compare-methods Compare research methods
151
+ feasibility <topic> Paper-to-production gap analysis
152
+
153
+ Planning:
154
+ product-plan Product-level planning
155
+ discuss-phase <N> Brainstorm before planning
156
+ add-phase Add a new phase
157
+ insert-phase Insert phase between existing ones
158
+ remove-phase Remove an unstarted phase
159
+
160
+ Evaluation:
161
+ assess-baseline Current performance baseline
162
+ eval-report <N> Collect and analyze results
163
+ iterate <N> Iteration loop on failed metrics
164
+ verify-work Validate features with metrics
165
+
166
+ Configuration:
167
+ settings Configure workflow settings
168
+ principles Create/edit project principles
169
+ discover [area] Discover codebase standards
170
+ tracker-setup Configure issue tracker
171
+
172
+ Tools (deterministic, fast):
173
+ state <sub> State management
174
+ verify <sub> Verification suite (incl. \`verify mechanical\`)
175
+ phase <sub> Phase lifecycle ops
176
+ scaffold <sub> Directory scaffolding
177
+ frontmatter <sub> YAML frontmatter CRUD
178
+ tracker <sub> Issue tracker sync
179
+ roadmap <sub> Roadmap queries
180
+ init <sub> Workflow init contexts (internal)
181
+ version Print version
182
+ phases List all phases
183
+
184
+ Ouroboros primitives (see docs/ouroboros-loop.md):
185
+ dead-end <sub> DEAD-ENDS.md registry CRUD + promote-from-phase
186
+ genome <sub> GENOME.md init / show / snapshot
187
+ plan-tournament Score candidate PLAN.md files
188
+ scan Prompt-injection scanner
189
+
190
+ Auxiliary (run \`gd <cmd> --help\` for details):
191
+ diagnose, blame, budget, impact, freshness, rollback, estimate,
192
+ estimate-phase, forecast-phase, check-plans, check-assumptions,
193
+ deps, deps-risk, knowledge, knowhow, eval, tail, watch,
194
+ research-gaps, import-knowhow, import-knowledge, export-research,
195
+ import-research, metrics
196
+
197
+ Note: dashboard, health-check, coverage-report, phase-time-budget,
198
+ todo-duplicates, markdown-split, and setup are DEPRECATED — see
199
+ docs/DEPRECATIONS.md for the v0.4.x trim plan.
200
+
201
+ Global Flags:
202
+ --json Machine-parseable JSON output
203
+ --help Show help text
204
+ --verbose Extended output
205
+ --version Print version and exit
206
+ --cwd <path> Override working directory
207
+ --backend <id> Force a specific backend (agent commands only)
208
+ --model <name> Override model (agent commands only)
209
+
210
+ Run "gd <command> --help" for command-specific usage.
211
+ `);
212
+ }
213
+
214
+ function printCommandHelp(cmd: string): void {
215
+ const resolvedCmd = cmd;
216
+ // Handle both bin/ (source) and dist/bin/ (compiled) locations
217
+ let cmdFile = join(__dirname, '..', 'commands', `${resolvedCmd}.md`);
218
+ if (!existsSync(cmdFile)) cmdFile = join(__dirname, '..', '..', 'commands', `${resolvedCmd}.md`);
219
+ if (existsSync(cmdFile)) {
220
+ const content = readFileSync(cmdFile, 'utf-8');
221
+ const match = content.match(/description:\s*(.+)/);
222
+ if (match) {
223
+ process.stdout.write(`gd ${cmd}: ${match[1].trim()}\n\n`);
224
+ }
225
+ }
226
+ process.stdout.write(`Usage: gd ${cmd} [args] [--json] [--verbose]\n`);
227
+ }
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+ require('tsx/cjs');
4
+ require('./grd-manifest.ts');
@@ -0,0 +1,286 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /**
5
+ * GRD Manifest — SHA256-based file tracking for self-update system
6
+ *
7
+ * Usage: node grd-manifest.js <command>
8
+ *
9
+ * Commands:
10
+ * generate Generate grd-file-manifest.json with SHA256 hashes
11
+ * detect Detect local modifications vs manifest
12
+ * save-patches [--dir path] Save modified files to grd-local-patches/
13
+ * load-patches [--dir path] Read patch backup metadata
14
+ */
15
+
16
+
17
+ const fs = require('fs') as typeof import('fs');
18
+ const path = require('path') as typeof import('path');
19
+ const crypto = require('crypto') as typeof import('crypto');
20
+
21
+ const MANIFEST_FILE = 'grd-file-manifest.json';
22
+ const PATCH_DIR = 'grd-local-patches';
23
+ const BACKUP_META = 'backup-meta.json';
24
+
25
+ // Files/dirs to exclude from manifest
26
+ const EXCLUDE: ReadonlySet<string> = new Set([
27
+ MANIFEST_FILE,
28
+ PATCH_DIR,
29
+ '.git',
30
+ 'node_modules',
31
+ '.DS_Store',
32
+ ]);
33
+
34
+ // ─── Interfaces ──────────────────────────────────────────────────────────────
35
+
36
+ interface ManifestData {
37
+ version: string;
38
+ timestamp: string;
39
+ file_count: number;
40
+ files: Record<string, string>;
41
+ }
42
+
43
+ interface Modification {
44
+ file: string;
45
+ expected: string;
46
+ actual: string;
47
+ }
48
+
49
+ interface DetectionResult {
50
+ error?: string;
51
+ version?: string;
52
+ total_tracked?: number;
53
+ modifications: Modification[];
54
+ additions: string[];
55
+ deletions: string[];
56
+ clean: boolean;
57
+ }
58
+
59
+ interface PatchSaveResult {
60
+ saved: boolean;
61
+ reason?: string;
62
+ error?: string;
63
+ patch_dir?: string;
64
+ from_version?: string;
65
+ timestamp?: string;
66
+ files?: string[];
67
+ additions?: string[];
68
+ deletions?: string[];
69
+ }
70
+
71
+ interface PatchLoadResult {
72
+ found: boolean;
73
+ reason?: string;
74
+ patch_dir?: string;
75
+ from_version?: string;
76
+ timestamp?: string;
77
+ files?: string[];
78
+ }
79
+
80
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
81
+
82
+ function getPluginRoot(): string {
83
+ return path.dirname(__dirname);
84
+ }
85
+
86
+ function sha256(filePath: string): string {
87
+ const content: Buffer = fs.readFileSync(filePath);
88
+ return crypto.createHash('sha256').update(content).digest('hex');
89
+ }
90
+
91
+ function walkDir(dir: string, base: string): string[] {
92
+ const results: string[] = [];
93
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
94
+ for (const entry of entries) {
95
+ if (EXCLUDE.has(entry.name)) continue;
96
+ const fullPath: string = path.join(dir, entry.name);
97
+ const relPath: string = path.relative(base, fullPath);
98
+ if (entry.isDirectory()) {
99
+ results.push(...walkDir(fullPath, base));
100
+ } else if (entry.isFile()) {
101
+ results.push(relPath);
102
+ }
103
+ }
104
+ return results.sort();
105
+ }
106
+
107
+ function readVersion(pluginRoot: string): string {
108
+ const versionFile: string = path.join(pluginRoot, 'VERSION');
109
+ if (fs.existsSync(versionFile)) {
110
+ return fs.readFileSync(versionFile, 'utf-8').trim();
111
+ }
112
+ return 'unknown';
113
+ }
114
+
115
+ // ─── Commands ────────────────────────────────────────────────────────────────
116
+
117
+ function generateManifest(pluginRoot: string): ManifestData {
118
+ const files: string[] = walkDir(pluginRoot, pluginRoot);
119
+ const hashes: Record<string, string> = {};
120
+ for (const file of files) {
121
+ const fullPath: string = path.join(pluginRoot, file);
122
+ hashes[file] = sha256(fullPath);
123
+ }
124
+
125
+ const manifest: ManifestData = {
126
+ version: readVersion(pluginRoot),
127
+ timestamp: new Date().toISOString(),
128
+ file_count: Object.keys(hashes).length,
129
+ files: hashes,
130
+ };
131
+
132
+ const manifestPath: string = path.join(pluginRoot, MANIFEST_FILE);
133
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
134
+ return manifest;
135
+ }
136
+
137
+ function detectModifications(pluginRoot: string): DetectionResult {
138
+ const manifestPath: string = path.join(pluginRoot, MANIFEST_FILE);
139
+ if (!fs.existsSync(manifestPath)) {
140
+ return {
141
+ error: 'No manifest found. Run: node bin/grd-manifest.js generate',
142
+ modifications: [],
143
+ additions: [],
144
+ deletions: [],
145
+ clean: false,
146
+ };
147
+ }
148
+
149
+ const manifest: ManifestData = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
150
+ const modifications: Modification[] = [];
151
+ const additions: string[] = [];
152
+ const deletions: string[] = [];
153
+
154
+ // Check existing manifest entries
155
+ for (const [file, expectedHash] of Object.entries(manifest.files)) {
156
+ const fullPath: string = path.join(pluginRoot, file);
157
+ if (!fs.existsSync(fullPath)) {
158
+ deletions.push(file);
159
+ } else {
160
+ const currentHash: string = sha256(fullPath);
161
+ if (currentHash !== expectedHash) {
162
+ modifications.push({
163
+ file,
164
+ expected: expectedHash,
165
+ actual: currentHash,
166
+ });
167
+ }
168
+ }
169
+ }
170
+
171
+ // Check for new files
172
+ const currentFiles: string[] = walkDir(pluginRoot, pluginRoot);
173
+ for (const file of currentFiles) {
174
+ if (!manifest.files[file]) {
175
+ additions.push(file);
176
+ }
177
+ }
178
+
179
+ return {
180
+ version: manifest.version,
181
+ total_tracked: Object.keys(manifest.files).length,
182
+ modifications,
183
+ additions,
184
+ deletions,
185
+ clean: modifications.length === 0 && additions.length === 0 && deletions.length === 0,
186
+ };
187
+ }
188
+
189
+ function savePatches(pluginRoot: string, patchDirOverride?: string | null): PatchSaveResult {
190
+ const detection: DetectionResult = detectModifications(pluginRoot);
191
+ if (detection.error) return { saved: false, error: detection.error };
192
+ if (detection.clean) return { saved: false, reason: 'No modifications detected' };
193
+
194
+ const patchDir: string = patchDirOverride || path.join(pluginRoot, PATCH_DIR);
195
+ fs.mkdirSync(patchDir, { recursive: true });
196
+
197
+ const savedFiles: string[] = [];
198
+
199
+ for (const mod of detection.modifications) {
200
+ const srcPath: string = path.join(pluginRoot, mod.file);
201
+ const destPath: string = path.join(patchDir, mod.file);
202
+ fs.mkdirSync(path.dirname(destPath), { recursive: true });
203
+ fs.copyFileSync(srcPath, destPath);
204
+ savedFiles.push(mod.file);
205
+ }
206
+
207
+ const meta = {
208
+ from_version: detection.version,
209
+ timestamp: new Date().toISOString(),
210
+ files: savedFiles,
211
+ additions: detection.additions,
212
+ deletions: detection.deletions,
213
+ };
214
+
215
+ fs.writeFileSync(path.join(patchDir, BACKUP_META), JSON.stringify(meta, null, 2) + '\n', 'utf-8');
216
+
217
+ return { saved: true, patch_dir: patchDir, ...meta };
218
+ }
219
+
220
+ function loadPatches(pluginRoot: string, patchDirOverride?: string | null): PatchLoadResult {
221
+ const patchDir: string = patchDirOverride || path.join(pluginRoot, PATCH_DIR);
222
+ const metaPath: string = path.join(patchDir, BACKUP_META);
223
+
224
+ if (!fs.existsSync(metaPath)) {
225
+ return { found: false, reason: `No patches found at ${patchDir}` };
226
+ }
227
+
228
+ const meta: { from_version?: string; timestamp?: string; files?: string[] } = JSON.parse(
229
+ fs.readFileSync(metaPath, 'utf-8')
230
+ );
231
+ return { found: true, patch_dir: patchDir, ...meta };
232
+ }
233
+
234
+ // ─── CLI ─────────────────────────────────────────────────────────────────────
235
+
236
+ function main(): void {
237
+ const args: string[] = process.argv.slice(2);
238
+ const command: string | undefined = args[0];
239
+ const pluginRoot: string = getPluginRoot();
240
+
241
+ const dirIndex: number = args.indexOf('--dir');
242
+ const dirOverride: string | null = dirIndex !== -1 ? args[dirIndex + 1] : null;
243
+
244
+ let result: ManifestData | DetectionResult | PatchSaveResult | PatchLoadResult;
245
+
246
+ switch (command) {
247
+ case 'generate':
248
+ result = generateManifest(pluginRoot);
249
+ console.log(
250
+ JSON.stringify(
251
+ {
252
+ status: 'ok',
253
+ version: (result as ManifestData).version,
254
+ file_count: (result as ManifestData).file_count,
255
+ path: path.join(pluginRoot, MANIFEST_FILE),
256
+ },
257
+ null,
258
+ 2
259
+ )
260
+ );
261
+ break;
262
+
263
+ case 'detect':
264
+ result = detectModifications(pluginRoot);
265
+ console.log(JSON.stringify(result, null, 2));
266
+ if ((result as DetectionResult).error) process.exit(1);
267
+ break;
268
+
269
+ case 'save-patches':
270
+ result = savePatches(pluginRoot, dirOverride);
271
+ console.log(JSON.stringify(result, null, 2));
272
+ if ((result as PatchSaveResult).error) process.exit(1);
273
+ break;
274
+
275
+ case 'load-patches':
276
+ result = loadPatches(pluginRoot, dirOverride);
277
+ console.log(JSON.stringify(result, null, 2));
278
+ break;
279
+
280
+ default:
281
+ console.error('Usage: node grd-manifest.js <generate|detect|save-patches|load-patches>');
282
+ process.exit(1);
283
+ }
284
+ }
285
+
286
+ main();
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+ require('tsx/cjs');
4
+ require('./grd-mcp-server.ts');
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /**
5
+ * GRD MCP Server -- Entry point wiring lib/mcp-server.ts to stdin/stdout as MCP stdio transport.
6
+ *
7
+ * Reads JSON-RPC 2.0 messages from stdin (newline-delimited JSON), dispatches to McpServer,
8
+ * writes responses to stdout. Runs until stdin closes (EOF).
9
+ *
10
+ * Usage: node bin/grd-mcp-server.js
11
+ *
12
+ * Created in Phase 16 Plan 01 (MCP Server).
13
+ * Migrated to TypeScript in Phase 63 Plan 04.
14
+ */
15
+
16
+
17
+ /** JSON-RPC 2.0 message received on stdin */
18
+ interface JsonRpcMessage {
19
+ jsonrpc?: string;
20
+ method?: string;
21
+ id?: number | string | null;
22
+ params?: Record<string, unknown>;
23
+ }
24
+
25
+ /** JSON-RPC 2.0 response written to stdout */
26
+ interface JsonRpcResponse {
27
+ jsonrpc: '2.0';
28
+ id: number | string | null;
29
+ result?: unknown;
30
+ error?: { code: number; message: string; data?: unknown };
31
+ }
32
+
33
+ /** McpServer class shape for typed instantiation */
34
+ interface McpServerInstance {
35
+ handleMessage(message: JsonRpcMessage): JsonRpcResponse | Promise<JsonRpcResponse> | null;
36
+ }
37
+
38
+ interface McpServerConstructor {
39
+ new (options?: { cwd?: string }): McpServerInstance;
40
+ }
41
+
42
+ const {
43
+ McpServer,
44
+ }: {
45
+ McpServer: McpServerConstructor;
46
+ } = require('../lib/mcp-server');
47
+
48
+ const server: McpServerInstance = new McpServer({ cwd: process.cwd() });
49
+
50
+ let buffer: string = '';
51
+
52
+ process.stdin.setEncoding('utf-8');
53
+
54
+ process.stdin.on('data', (chunk: string) => {
55
+ buffer += chunk;
56
+
57
+ // Process complete lines
58
+ let newlineIdx: number;
59
+ while ((newlineIdx = buffer.indexOf('\n')) !== -1) {
60
+ const line: string = buffer.slice(0, newlineIdx).trim();
61
+ buffer = buffer.slice(newlineIdx + 1);
62
+
63
+ // Skip empty lines
64
+ if (!line) continue;
65
+
66
+ let message: JsonRpcMessage;
67
+ try {
68
+ message = JSON.parse(line) as JsonRpcMessage;
69
+ } catch (_e: unknown) {
70
+ // Malformed JSON -- write parse error response
71
+ const errorResponse: JsonRpcResponse = {
72
+ jsonrpc: '2.0' as const,
73
+ id: null,
74
+ error: { code: -32700, message: 'Parse error' },
75
+ };
76
+ process.stdout.write(JSON.stringify(errorResponse) + '\n');
77
+ continue;
78
+ }
79
+
80
+ const response: JsonRpcResponse | Promise<JsonRpcResponse> | null =
81
+ server.handleMessage(message);
82
+
83
+ // Notifications return null -- no response needed
84
+ if (response !== null && response !== undefined) {
85
+ // Handle both sync responses and async (Promise) responses
86
+ Promise.resolve(response).then((r: JsonRpcResponse | null) => {
87
+ if (r !== null && r !== undefined) {
88
+ process.stdout.write(JSON.stringify(r) + '\n');
89
+ }
90
+ });
91
+ }
92
+ }
93
+ });
94
+
95
+ process.stdin.on('end', () => {
96
+ // Handle any remaining data in buffer
97
+ const remaining: string = buffer.trim();
98
+ if (remaining) {
99
+ try {
100
+ const message: JsonRpcMessage = JSON.parse(remaining) as JsonRpcMessage;
101
+ const response: JsonRpcResponse | Promise<JsonRpcResponse> | null =
102
+ server.handleMessage(message);
103
+
104
+ Promise.resolve(response).then((r: JsonRpcResponse | null) => {
105
+ if (r !== null && r !== undefined) {
106
+ process.stdout.write(JSON.stringify(r) + '\n');
107
+ }
108
+ });
109
+ } catch (_e: unknown) {
110
+ const errorResponse: JsonRpcResponse = {
111
+ jsonrpc: '2.0' as const,
112
+ id: null,
113
+ error: { code: -32700, message: 'Parse error' },
114
+ };
115
+ process.stdout.write(JSON.stringify(errorResponse) + '\n');
116
+ }
117
+ }
118
+
119
+ process.exit(0);
120
+ });
121
+
122
+ process.stdin.on('error', () => {
123
+ process.exit(0);
124
+ });
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+ require('tsx/cjs');
4
+ require('./grd-tools.ts');