@hivehub/rulebook 5.5.2 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (834) hide show
  1. package/.claude/commands/analysis.md +35 -35
  2. package/.claude/commands/continue.md +33 -33
  3. package/.claude/commands/rulebook-decision-create.md +55 -55
  4. package/.claude/commands/rulebook-decision-list.md +15 -15
  5. package/.claude/commands/rulebook-knowledge-add.md +41 -41
  6. package/.claude/commands/rulebook-knowledge-list.md +15 -15
  7. package/.claude/commands/rulebook-learn-capture.md +41 -48
  8. package/.claude/commands/rulebook-learn-list.md +13 -13
  9. package/.claude/commands/rulebook-memory-save.md +48 -48
  10. package/.claude/commands/rulebook-memory-search.md +47 -47
  11. package/.claude/commands/rulebook-task-apply.md +67 -67
  12. package/.claude/commands/rulebook-task-archive.md +94 -94
  13. package/.claude/commands/rulebook-task-create.md +93 -93
  14. package/.claude/commands/rulebook-task-list.md +42 -42
  15. package/.claude/commands/rulebook-task-show.md +52 -52
  16. package/.claude/commands/rulebook-task-validate.md +53 -53
  17. package/.claude-plugin/marketplace.json +28 -28
  18. package/.claude-plugin/plugin.json +8 -8
  19. package/README.md +418 -394
  20. package/dist/cli/commands/claude.d.ts +17 -0
  21. package/dist/cli/commands/claude.d.ts.map +1 -0
  22. package/dist/cli/commands/claude.js +56 -0
  23. package/dist/cli/commands/claude.js.map +1 -0
  24. package/dist/cli/commands/context-intelligence.d.ts +0 -1
  25. package/dist/cli/commands/context-intelligence.d.ts.map +1 -1
  26. package/dist/cli/commands/context-intelligence.js +12 -33
  27. package/dist/cli/commands/context-intelligence.js.map +1 -1
  28. package/dist/cli/commands/index.d.ts +4 -7
  29. package/dist/cli/commands/index.d.ts.map +1 -1
  30. package/dist/cli/commands/index.js +4 -7
  31. package/dist/cli/commands/index.js.map +1 -1
  32. package/dist/cli/commands/init.d.ts.map +1 -1
  33. package/dist/cli/commands/init.js +58 -83
  34. package/dist/cli/commands/init.js.map +1 -1
  35. package/dist/cli/commands/mcp.d.ts +0 -1
  36. package/dist/cli/commands/mcp.d.ts.map +1 -1
  37. package/dist/cli/commands/mcp.js +1 -7
  38. package/dist/cli/commands/mcp.js.map +1 -1
  39. package/dist/cli/commands/memory.d.ts +7 -1
  40. package/dist/cli/commands/memory.d.ts.map +1 -1
  41. package/dist/cli/commands/memory.js +51 -57
  42. package/dist/cli/commands/memory.js.map +1 -1
  43. package/dist/cli/commands/misc.d.ts +1 -15
  44. package/dist/cli/commands/misc.d.ts.map +1 -1
  45. package/dist/cli/commands/misc.js +36 -215
  46. package/dist/cli/commands/misc.js.map +1 -1
  47. package/dist/cli/commands/plans.d.ts +0 -6
  48. package/dist/cli/commands/plans.d.ts.map +1 -1
  49. package/dist/cli/commands/plans.js +9 -77
  50. package/dist/cli/commands/plans.js.map +1 -1
  51. package/dist/cli/commands/skills.js +6 -6
  52. package/dist/cli/commands/skills.js.map +1 -1
  53. package/dist/cli/commands/task.js +4 -4
  54. package/dist/cli/commands/task.js.map +1 -1
  55. package/dist/cli/commands/update.d.ts.map +1 -1
  56. package/dist/cli/commands/update.js +128 -53
  57. package/dist/cli/commands/update.js.map +1 -1
  58. package/dist/cli/prompts.d.ts +13 -0
  59. package/dist/cli/prompts.d.ts.map +1 -1
  60. package/dist/cli/prompts.js +107 -78
  61. package/dist/cli/prompts.js.map +1 -1
  62. package/dist/core/{claude-mcp.d.ts → claude/claude-mcp.d.ts} +9 -0
  63. package/dist/core/claude/claude-mcp.d.ts.map +1 -0
  64. package/dist/core/{claude-mcp.js → claude/claude-mcp.js} +33 -3
  65. package/dist/core/claude/claude-mcp.js.map +1 -0
  66. package/dist/core/claude/claude-md-generator.d.ts.map +1 -0
  67. package/dist/core/{claude-md-generator.js → claude/claude-md-generator.js} +2 -2
  68. package/dist/core/claude/claude-md-generator.js.map +1 -0
  69. package/dist/core/{claude-settings-manager.d.ts → claude/claude-settings-manager.d.ts} +12 -0
  70. package/dist/core/claude/claude-settings-manager.d.ts.map +1 -0
  71. package/dist/core/{claude-settings-manager.js → claude/claude-settings-manager.js} +81 -22
  72. package/dist/core/claude/claude-settings-manager.js.map +1 -0
  73. package/dist/core/{cli-bridge.d.ts → console/cli-bridge.d.ts} +2 -2
  74. package/dist/core/console/cli-bridge.d.ts.map +1 -0
  75. package/dist/core/{cli-bridge.js → console/cli-bridge.js} +3 -3
  76. package/dist/core/console/cli-bridge.js.map +1 -0
  77. package/dist/core/{detector.d.ts → detect/detector.d.ts} +16 -1
  78. package/dist/core/detect/detector.d.ts.map +1 -0
  79. package/dist/core/detect/detector.js +766 -0
  80. package/dist/core/detect/detector.js.map +1 -0
  81. package/dist/core/detect/library-registry.d.ts +40 -0
  82. package/dist/core/detect/library-registry.d.ts.map +1 -0
  83. package/dist/core/detect/library-registry.js +239 -0
  84. package/dist/core/detect/library-registry.js.map +1 -0
  85. package/dist/core/docs/docs-generator.d.ts.map +1 -0
  86. package/dist/core/{docs-generator.js → docs/docs-generator.js} +1 -1
  87. package/dist/core/docs/docs-generator.js.map +1 -0
  88. package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -0
  89. package/dist/core/{mcp-reference-generator.js → docs/mcp-reference-generator.js} +2 -2
  90. package/dist/core/docs/mcp-reference-generator.js.map +1 -0
  91. package/dist/core/{generator.d.ts → generators/generator.d.ts} +3 -4
  92. package/dist/core/generators/generator.d.ts.map +1 -0
  93. package/dist/core/{generator.js → generators/generator.js} +42 -157
  94. package/dist/core/generators/generator.js.map +1 -0
  95. package/dist/core/{gitignore-generator.d.ts → generators/gitignore-generator.d.ts} +1 -1
  96. package/dist/core/generators/gitignore-generator.d.ts.map +1 -0
  97. package/dist/core/{gitignore-generator.js → generators/gitignore-generator.js} +1 -1
  98. package/dist/core/generators/gitignore-generator.js.map +1 -0
  99. package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -0
  100. package/dist/core/{minimal-scaffolder.js → generators/minimal-scaffolder.js} +2 -2
  101. package/dist/core/generators/minimal-scaffolder.js.map +1 -0
  102. package/dist/core/{rules-generator.d.ts → generators/rules-generator.d.ts} +2 -6
  103. package/dist/core/generators/rules-generator.d.ts.map +1 -0
  104. package/dist/core/{rules-generator.js → generators/rules-generator.js} +41 -2
  105. package/dist/core/generators/rules-generator.js.map +1 -0
  106. package/dist/core/{workflow-generator.d.ts → generators/workflow-generator.d.ts} +1 -1
  107. package/dist/core/generators/workflow-generator.d.ts.map +1 -0
  108. package/dist/core/{workflow-generator.js → generators/workflow-generator.js} +2 -3
  109. package/dist/core/generators/workflow-generator.js.map +1 -0
  110. package/dist/core/{multi-tool-generator.d.ts → ide/multi-tool-generator.d.ts} +1 -1
  111. package/dist/core/ide/multi-tool-generator.d.ts.map +1 -0
  112. package/dist/core/{multi-tool-generator.js → ide/multi-tool-generator.js} +1 -1
  113. package/dist/core/ide/multi-tool-generator.js.map +1 -0
  114. package/dist/core/ide/opencode-generator.d.ts +72 -0
  115. package/dist/core/ide/opencode-generator.d.ts.map +1 -0
  116. package/dist/core/ide/opencode-generator.js +450 -0
  117. package/dist/core/ide/opencode-generator.js.map +1 -0
  118. package/dist/core/merger.d.ts +1 -1
  119. package/dist/core/merger.d.ts.map +1 -1
  120. package/dist/core/merger.js +5 -5
  121. package/dist/core/merger.js.map +1 -1
  122. package/dist/core/migrator.d.ts +0 -1
  123. package/dist/core/migrator.d.ts.map +1 -1
  124. package/dist/core/migrator.js +4 -29
  125. package/dist/core/migrator.js.map +1 -1
  126. package/dist/core/quality/coverage-checker.d.ts.map +1 -0
  127. package/dist/core/{coverage-checker.js → quality/coverage-checker.js} +2 -2
  128. package/dist/core/quality/coverage-checker.js.map +1 -0
  129. package/dist/core/quality/dependency-checker.d.ts.map +1 -0
  130. package/dist/core/{dependency-checker.js → quality/dependency-checker.js} +1 -1
  131. package/dist/core/quality/dependency-checker.js.map +1 -0
  132. package/dist/core/quality/doctor.d.ts.map +1 -0
  133. package/dist/core/{doctor.js → quality/doctor.js} +1 -67
  134. package/dist/core/quality/doctor.js.map +1 -0
  135. package/dist/core/quality/validator.d.ts.map +1 -0
  136. package/dist/core/{validator.js → quality/validator.js} +1 -1
  137. package/dist/core/quality/validator.js.map +1 -0
  138. package/dist/core/{skills-manager.d.ts → skills/skills-manager.d.ts} +1 -1
  139. package/dist/core/skills/skills-manager.d.ts.map +1 -0
  140. package/dist/core/{skills-manager.js → skills/skills-manager.js} +1 -25
  141. package/dist/core/skills/skills-manager.js.map +1 -0
  142. package/dist/core/{config-manager.d.ts → state/config-manager.d.ts} +1 -1
  143. package/dist/core/state/config-manager.d.ts.map +1 -0
  144. package/dist/core/{config-manager.js → state/config-manager.js} +2 -61
  145. package/dist/core/state/config-manager.js.map +1 -0
  146. package/dist/core/state/override-manager.d.ts.map +1 -0
  147. package/dist/core/{override-manager.js → state/override-manager.js} +1 -1
  148. package/dist/core/state/override-manager.js.map +1 -0
  149. package/dist/core/{state-writer.d.ts → state/state-writer.d.ts} +2 -3
  150. package/dist/core/state/state-writer.d.ts.map +1 -0
  151. package/dist/core/{state-writer.js → state/state-writer.js} +6 -9
  152. package/dist/core/state/state-writer.js.map +1 -0
  153. package/dist/core/state/version-bumper.d.ts.map +1 -0
  154. package/dist/core/{version-bumper.js → state/version-bumper.js} +1 -1
  155. package/dist/core/state/version-bumper.js.map +1 -0
  156. package/dist/core/{decision-manager.d.ts → tasks/decision-manager.d.ts} +1 -1
  157. package/dist/core/tasks/decision-manager.d.ts.map +1 -0
  158. package/dist/core/{decision-manager.js → tasks/decision-manager.js} +1 -1
  159. package/dist/core/tasks/decision-manager.js.map +1 -0
  160. package/dist/core/{knowledge-manager.d.ts → tasks/knowledge-manager.d.ts} +1 -1
  161. package/dist/core/tasks/knowledge-manager.d.ts.map +1 -0
  162. package/dist/core/{knowledge-manager.js → tasks/knowledge-manager.js} +1 -1
  163. package/dist/core/tasks/knowledge-manager.js.map +1 -0
  164. package/dist/core/{learn-manager.d.ts → tasks/learn-manager.d.ts} +1 -3
  165. package/dist/core/tasks/learn-manager.d.ts.map +1 -0
  166. package/dist/core/{learn-manager.js → tasks/learn-manager.js} +1 -39
  167. package/dist/core/tasks/learn-manager.js.map +1 -0
  168. package/dist/core/tasks/plans-manager.d.ts.map +1 -0
  169. package/dist/core/{plans-manager.js → tasks/plans-manager.js} +1 -1
  170. package/dist/core/tasks/plans-manager.js.map +1 -0
  171. package/dist/core/tasks/task-manager.d.ts.map +1 -0
  172. package/dist/core/{task-manager.js → tasks/task-manager.js} +2 -2
  173. package/dist/core/tasks/task-manager.js.map +1 -0
  174. package/dist/core/workspace/project-worker.d.ts +6 -6
  175. package/dist/core/workspace/project-worker.d.ts.map +1 -1
  176. package/dist/core/workspace/project-worker.js +6 -6
  177. package/dist/core/workspace/project-worker.js.map +1 -1
  178. package/dist/index.d.ts +1 -1
  179. package/dist/index.d.ts.map +1 -1
  180. package/dist/index.js +31 -176
  181. package/dist/index.js.map +1 -1
  182. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  183. package/dist/mcp/rulebook-server.js +16 -960
  184. package/dist/mcp/rulebook-server.js.map +1 -1
  185. package/dist/memory/file-search.d.ts +43 -0
  186. package/dist/memory/file-search.d.ts.map +1 -0
  187. package/dist/memory/file-search.js +228 -0
  188. package/dist/memory/file-search.js.map +1 -0
  189. package/dist/memory/file-store.d.ts +99 -0
  190. package/dist/memory/file-store.d.ts.map +1 -0
  191. package/dist/memory/file-store.js +615 -0
  192. package/dist/memory/file-store.js.map +1 -0
  193. package/dist/memory/legacy-migrator.d.ts +27 -0
  194. package/dist/memory/legacy-migrator.d.ts.map +1 -0
  195. package/dist/memory/legacy-migrator.js +185 -0
  196. package/dist/memory/legacy-migrator.js.map +1 -0
  197. package/dist/memory/memory-manager.d.ts +25 -24
  198. package/dist/memory/memory-manager.d.ts.map +1 -1
  199. package/dist/memory/memory-manager.js +97 -140
  200. package/dist/memory/memory-manager.js.map +1 -1
  201. package/dist/memory/memory-types.d.ts +1 -1
  202. package/dist/memory/memory-types.d.ts.map +1 -1
  203. package/dist/types.d.ts +20 -118
  204. package/dist/types.d.ts.map +1 -1
  205. package/package.json +23 -27
  206. package/templates/agents/accessibility-reviewer.md +43 -43
  207. package/templates/agents/api-designer.md +42 -42
  208. package/templates/agents/architect.md +51 -51
  209. package/templates/agents/build-engineer.md +36 -36
  210. package/templates/agents/code-reviewer.md +47 -47
  211. package/templates/agents/compiler/codegen-debugger.md +34 -34
  212. package/templates/agents/compiler/stdlib-engineer.md +28 -28
  213. package/templates/agents/compiler/test-coverage-guardian.md +31 -31
  214. package/templates/agents/context-intelligence.md +50 -52
  215. package/templates/agents/database-architect.md +41 -41
  216. package/templates/agents/devops-engineer.md +42 -42
  217. package/templates/agents/docs-writer.md +38 -38
  218. package/templates/agents/game-engine/cpp-core-expert.md +35 -35
  219. package/templates/agents/game-engine/render-engineer.md +22 -22
  220. package/templates/agents/game-engine/shader-engineer.md +38 -38
  221. package/templates/agents/game-engine/systems-integration.md +43 -43
  222. package/templates/agents/generic/code-reviewer.md +41 -41
  223. package/templates/agents/generic/docs-writer.md +25 -25
  224. package/templates/agents/generic/project-manager.md +36 -36
  225. package/templates/agents/generic/researcher.md +34 -34
  226. package/templates/agents/generic/test-engineer.md +41 -41
  227. package/templates/agents/i18n-engineer.md +42 -42
  228. package/templates/agents/implementer.md +42 -42
  229. package/templates/agents/migration-engineer.md +42 -42
  230. package/templates/agents/mobile/platform-specialist.md +22 -22
  231. package/templates/agents/mobile/ui-engineer.md +22 -22
  232. package/templates/agents/performance-engineer.md +49 -49
  233. package/templates/agents/project-manager.md +215 -0
  234. package/templates/agents/quality-gatekeeper.md +205 -0
  235. package/templates/agents/refactoring-agent.md +41 -41
  236. package/templates/agents/researcher.md +38 -38
  237. package/templates/agents/security-reviewer.md +40 -40
  238. package/templates/agents/team-lead.md +37 -37
  239. package/templates/agents/tester.md +48 -48
  240. package/templates/agents/ux-reviewer.md +43 -43
  241. package/templates/agents/web-app/api-designer.md +22 -22
  242. package/templates/agents/web-app/backend-engineer.md +30 -30
  243. package/templates/agents/web-app/database-engineer.md +22 -22
  244. package/templates/agents/web-app/frontend-engineer.md +29 -29
  245. package/templates/agents/web-app/security-reviewer.md +32 -32
  246. package/templates/ci/rulebook-review.yml +26 -26
  247. package/templates/claude-workflows/bugfix.js +94 -0
  248. package/templates/claude-workflows/feature-pipeline.js +88 -0
  249. package/templates/claude-workflows/release-gate.js +64 -0
  250. package/templates/claude-workflows/review-fanout.js +118 -0
  251. package/templates/claude-workflows/rulebook-driver.js +343 -0
  252. package/templates/claude-workflows/spec-author.js +133 -0
  253. package/templates/cli/AIDER.md +49 -49
  254. package/templates/cli/AMAZON_Q.md +25 -25
  255. package/templates/cli/AUGGIE.md +32 -32
  256. package/templates/cli/CLAUDE.md +117 -117
  257. package/templates/cli/CLINE.md +99 -99
  258. package/templates/cli/CODEBUDDY.md +20 -20
  259. package/templates/cli/CODEIUM.md +20 -20
  260. package/templates/cli/CODEX.md +21 -21
  261. package/templates/cli/CONTINUE.md +34 -34
  262. package/templates/cli/CURSOR_CLI.md +62 -62
  263. package/templates/cli/FACTORY.md +18 -18
  264. package/templates/cli/GEMINI.md +35 -35
  265. package/templates/cli/KILOCODE.md +18 -18
  266. package/templates/cli/OPENCODE.md +85 -18
  267. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  268. package/templates/commands/rulebook-decision-create.md +55 -55
  269. package/templates/commands/rulebook-decision-list.md +15 -15
  270. package/templates/commands/rulebook-knowledge-add.md +41 -41
  271. package/templates/commands/rulebook-knowledge-list.md +15 -15
  272. package/templates/commands/rulebook-learn-capture.md +41 -48
  273. package/templates/commands/rulebook-learn-list.md +13 -13
  274. package/templates/commands/rulebook-memory-save.md +48 -48
  275. package/templates/commands/rulebook-memory-search.md +47 -47
  276. package/templates/commands/rulebook-task-apply.md +67 -67
  277. package/templates/commands/rulebook-task-archive.md +94 -94
  278. package/templates/commands/rulebook-task-create.md +93 -93
  279. package/templates/commands/rulebook-task-list.md +42 -42
  280. package/templates/commands/rulebook-task-show.md +52 -52
  281. package/templates/commands/rulebook-task-validate.md +53 -53
  282. package/templates/compact-context/_default.md +23 -23
  283. package/templates/compact-context/cpp.md +26 -26
  284. package/templates/compact-context/go.md +26 -26
  285. package/templates/compact-context/python.md +26 -26
  286. package/templates/compact-context/rust.md +28 -28
  287. package/templates/compact-context/typescript.md +29 -29
  288. package/templates/core/AGENTS_LEAN.md +0 -14
  289. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  290. package/templates/core/AGENT_AUTOMATION.md +296 -296
  291. package/templates/core/CLAUDE_MD_v2.md +90 -90
  292. package/templates/core/DAG.md +304 -304
  293. package/templates/core/DECISIONS.md +38 -38
  294. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  295. package/templates/core/KNOWLEDGE.md +49 -49
  296. package/templates/core/MULTI_AGENT.md +74 -74
  297. package/templates/core/PLANS.md +28 -28
  298. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  299. package/templates/core/RULEBOOK.md +1947 -1947
  300. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  301. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  302. package/templates/git/CI_CD_PATTERNS.md +661 -661
  303. package/templates/git/GITHUB_ACTIONS.md +728 -728
  304. package/templates/git/GITLAB_CI.md +730 -730
  305. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  306. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  307. package/templates/hooks/COMMIT_MSG.md +530 -530
  308. package/templates/hooks/POST_CHECKOUT.md +546 -546
  309. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  310. package/templates/hooks/PRE_COMMIT.md +414 -414
  311. package/templates/hooks/PRE_PUSH.md +601 -601
  312. package/templates/hooks/check-context-and-handoff.sh +24 -16
  313. package/templates/hooks/enforce-pre-tool.sh +70 -0
  314. package/templates/hooks/terse-mode-tracker.sh +146 -143
  315. package/templates/hooks/update-check.ps1 +84 -0
  316. package/templates/hooks/update-check.sh +103 -0
  317. package/templates/ides/CONTINUE_RULES.md +16 -16
  318. package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
  319. package/templates/ides/GEMINI_RULES.md +17 -17
  320. package/templates/ides/OPENCODE.md +63 -0
  321. package/templates/ides/WINDSURF_RULES.md +14 -14
  322. package/templates/languages/C.md +333 -333
  323. package/templates/languages/CPP.md +743 -743
  324. package/templates/languages/CSHARP.md +417 -417
  325. package/templates/languages/ELIXIR.md +454 -454
  326. package/templates/languages/ERLANG.md +361 -361
  327. package/templates/languages/GO.md +645 -645
  328. package/templates/languages/HASKELL.md +177 -177
  329. package/templates/languages/JAVA.md +607 -607
  330. package/templates/languages/JAVASCRIPT.md +631 -631
  331. package/templates/languages/JULIA.md +97 -97
  332. package/templates/languages/KOTLIN.md +511 -511
  333. package/templates/languages/LISP.md +100 -100
  334. package/templates/languages/LUA.md +74 -74
  335. package/templates/languages/OBJECTIVEC.md +90 -90
  336. package/templates/languages/PHP.md +416 -416
  337. package/templates/languages/PYTHON.md +682 -682
  338. package/templates/languages/RUBY.md +421 -421
  339. package/templates/languages/RUST.md +477 -477
  340. package/templates/languages/SAS.md +73 -73
  341. package/templates/languages/SCALA.md +348 -348
  342. package/templates/languages/SOLIDITY.md +580 -580
  343. package/templates/languages/SQL.md +137 -137
  344. package/templates/languages/SWIFT.md +466 -466
  345. package/templates/languages/TYPESCRIPT.md +591 -591
  346. package/templates/languages/ZIG.md +265 -265
  347. package/templates/libraries/go/ECHO.md +18 -0
  348. package/templates/libraries/go/GIN.md +18 -0
  349. package/templates/libraries/go/GORM.md +18 -0
  350. package/templates/libraries/python/DJANGO.md +18 -0
  351. package/templates/libraries/python/FASTAPI.md +18 -0
  352. package/templates/libraries/python/FLASK.md +17 -0
  353. package/templates/libraries/python/PYDANTIC.md +17 -0
  354. package/templates/libraries/python/PYTEST.md +17 -0
  355. package/templates/libraries/python/SQLALCHEMY.md +17 -0
  356. package/templates/libraries/rust/ACTIX.md +17 -0
  357. package/templates/libraries/rust/AXUM.md +18 -0
  358. package/templates/libraries/rust/SERDE.md +16 -0
  359. package/templates/libraries/rust/SQLX.md +17 -0
  360. package/templates/libraries/rust/TOKIO.md +16 -0
  361. package/templates/libraries/typescript/ANGULAR.md +17 -0
  362. package/templates/libraries/typescript/DRIZZLE.md +16 -0
  363. package/templates/libraries/typescript/EXPRESS.md +17 -0
  364. package/templates/libraries/typescript/HEROUI.md +16 -0
  365. package/templates/libraries/typescript/JEST.md +17 -0
  366. package/templates/libraries/typescript/NESTJS.md +17 -0
  367. package/templates/libraries/typescript/NEXT.md +18 -0
  368. package/templates/libraries/typescript/PRISMA.md +16 -0
  369. package/templates/libraries/typescript/RADIX.md +16 -0
  370. package/templates/libraries/typescript/REACT.md +18 -0
  371. package/templates/libraries/typescript/SHADCN.md +16 -0
  372. package/templates/libraries/typescript/SVELTE.md +16 -0
  373. package/templates/libraries/typescript/TAILWIND.md +16 -0
  374. package/templates/libraries/typescript/TRPC.md +16 -0
  375. package/templates/libraries/typescript/VITEST.md +17 -0
  376. package/templates/libraries/typescript/VUE.md +17 -0
  377. package/templates/libraries/typescript/ZOD.md +17 -0
  378. package/templates/modules/ATLASSIAN.md +255 -255
  379. package/templates/modules/CONTEXT7.md +54 -54
  380. package/templates/modules/FIGMA.md +267 -267
  381. package/templates/modules/GITHUB_MCP.md +64 -64
  382. package/templates/modules/GRAFANA.md +328 -328
  383. package/templates/modules/MEMORY.md +126 -126
  384. package/templates/modules/NOTION.md +247 -247
  385. package/templates/modules/PLAYWRIGHT.md +90 -90
  386. package/templates/modules/RULEBOOK_MCP.md +208 -208
  387. package/templates/modules/SERENA.md +337 -337
  388. package/templates/modules/SUPABASE.md +223 -223
  389. package/templates/modules/SYNAP.md +69 -69
  390. package/templates/modules/VECTORIZER.md +63 -63
  391. package/templates/modules/sequential-thinking.md +42 -42
  392. package/templates/rules/consult-analysis-before-implementing.md +23 -23
  393. package/templates/rules/cpp.md +46 -46
  394. package/templates/rules/csharp.md +44 -44
  395. package/templates/rules/diagnostic-first.md +39 -39
  396. package/templates/rules/fail-twice-escalate.md +46 -46
  397. package/templates/rules/follow-task-sequence.md +36 -36
  398. package/templates/rules/git-safety.md +29 -29
  399. package/templates/rules/go.md +40 -40
  400. package/templates/rules/incremental-implementation.md +56 -56
  401. package/templates/rules/incremental-tests.md +29 -29
  402. package/templates/rules/java.md +43 -43
  403. package/templates/rules/javascript.md +39 -39
  404. package/templates/rules/knowledge-base-usage.md +41 -41
  405. package/templates/rules/multi-agent-teams.md +75 -75
  406. package/templates/rules/no-deferred.md +31 -31
  407. package/templates/rules/no-shortcuts.md +30 -30
  408. package/templates/rules/python.md +43 -43
  409. package/templates/rules/research-first.md +30 -30
  410. package/templates/rules/respect-handoff-trigger.md +41 -41
  411. package/templates/rules/rust.md +40 -40
  412. package/templates/rules/sequential-editing.md +21 -21
  413. package/templates/rules/session-workflow.md +24 -24
  414. package/templates/rules/task-decomposition.md +32 -32
  415. package/templates/rules/typescript.md +40 -40
  416. package/templates/skills/cli/aider/SKILL.md +59 -59
  417. package/templates/skills/cli/amazon-q/SKILL.md +35 -35
  418. package/templates/skills/cli/auggie/SKILL.md +42 -42
  419. package/templates/skills/cli/claude/SKILL.md +42 -42
  420. package/templates/skills/cli/cline/SKILL.md +42 -42
  421. package/templates/skills/cli/codebuddy/SKILL.md +30 -30
  422. package/templates/skills/cli/codeium/SKILL.md +30 -30
  423. package/templates/skills/cli/codex/SKILL.md +31 -31
  424. package/templates/skills/cli/continue/SKILL.md +44 -44
  425. package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
  426. package/templates/skills/cli/factory/SKILL.md +28 -28
  427. package/templates/skills/cli/gemini/SKILL.md +45 -45
  428. package/templates/skills/cli/kilocode/SKILL.md +28 -28
  429. package/templates/skills/cli/opencode/SKILL.md +82 -28
  430. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  431. package/templates/skills/core/dag/SKILL.md +314 -314
  432. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  433. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  434. package/templates/skills/core/rulebook/SKILL.md +176 -176
  435. package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
  436. package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
  437. package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
  438. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  439. package/templates/skills/dev/analysis/SKILL.md +19 -19
  440. package/templates/skills/dev/api-design/SKILL.md +15 -15
  441. package/templates/skills/dev/architect/SKILL.md +17 -17
  442. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  443. package/templates/skills/dev/db-design/SKILL.md +15 -15
  444. package/templates/skills/dev/debug/SKILL.md +16 -16
  445. package/templates/skills/dev/deploy/SKILL.md +17 -17
  446. package/templates/skills/dev/docs/SKILL.md +17 -17
  447. package/templates/skills/dev/handoff/SKILL.md +27 -27
  448. package/templates/skills/dev/migrate/SKILL.md +15 -15
  449. package/templates/skills/dev/perf/SKILL.md +17 -17
  450. package/templates/skills/dev/refactor/SKILL.md +17 -17
  451. package/templates/skills/dev/research/SKILL.md +14 -14
  452. package/templates/skills/dev/review/SKILL.md +18 -18
  453. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  454. package/templates/skills/dev/spec/SKILL.md +65 -0
  455. package/templates/skills/ides/copilot/SKILL.md +47 -47
  456. package/templates/skills/ides/cursor/SKILL.md +53 -53
  457. package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
  458. package/templates/skills/ides/replit/SKILL.md +46 -46
  459. package/templates/skills/ides/tabnine/SKILL.md +39 -39
  460. package/templates/skills/ides/vscode/SKILL.md +50 -50
  461. package/templates/skills/ides/windsurf/SKILL.md +46 -46
  462. package/templates/skills/ides/zed/SKILL.md +42 -42
  463. package/templates/skills/languages/c/SKILL.md +343 -343
  464. package/templates/skills/languages/cpp/SKILL.md +753 -753
  465. package/templates/skills/languages/csharp/SKILL.md +427 -427
  466. package/templates/skills/languages/elixir/SKILL.md +464 -464
  467. package/templates/skills/languages/erlang/SKILL.md +371 -371
  468. package/templates/skills/languages/go/SKILL.md +655 -655
  469. package/templates/skills/languages/haskell/SKILL.md +187 -187
  470. package/templates/skills/languages/java/SKILL.md +617 -617
  471. package/templates/skills/languages/javascript/SKILL.md +641 -641
  472. package/templates/skills/languages/julia/SKILL.md +107 -107
  473. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  474. package/templates/skills/languages/lisp/SKILL.md +110 -110
  475. package/templates/skills/languages/lua/SKILL.md +84 -84
  476. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  477. package/templates/skills/languages/php/SKILL.md +426 -426
  478. package/templates/skills/languages/python/SKILL.md +692 -692
  479. package/templates/skills/languages/ruby/SKILL.md +431 -431
  480. package/templates/skills/languages/rust/SKILL.md +487 -487
  481. package/templates/skills/languages/sas/SKILL.md +83 -83
  482. package/templates/skills/languages/scala/SKILL.md +358 -358
  483. package/templates/skills/languages/solidity/SKILL.md +590 -590
  484. package/templates/skills/languages/sql/SKILL.md +147 -147
  485. package/templates/skills/languages/swift/SKILL.md +476 -476
  486. package/templates/skills/languages/typescript/SKILL.md +302 -302
  487. package/templates/skills/languages/zig/SKILL.md +275 -275
  488. package/templates/skills/modules/atlassian/SKILL.md +265 -265
  489. package/templates/skills/modules/context7/SKILL.md +64 -64
  490. package/templates/skills/modules/figma/SKILL.md +277 -277
  491. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  492. package/templates/skills/modules/grafana/SKILL.md +338 -338
  493. package/templates/skills/modules/memory/SKILL.md +73 -73
  494. package/templates/skills/modules/notion/SKILL.md +257 -257
  495. package/templates/skills/modules/playwright/SKILL.md +100 -100
  496. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  497. package/templates/skills/modules/serena/SKILL.md +347 -347
  498. package/templates/skills/modules/supabase/SKILL.md +233 -233
  499. package/templates/skills/modules/synap/SKILL.md +79 -79
  500. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  501. package/.claude/commands/ralph-config.md +0 -112
  502. package/.claude/commands/ralph-history.md +0 -110
  503. package/.claude/commands/ralph-init.md +0 -72
  504. package/.claude/commands/ralph-pause-resume.md +0 -105
  505. package/.claude/commands/ralph-run.md +0 -101
  506. package/.claude/commands/ralph-status.md +0 -76
  507. package/dist/agents/ralph-parser.d.ts +0 -91
  508. package/dist/agents/ralph-parser.d.ts.map +0 -1
  509. package/dist/agents/ralph-parser.js +0 -415
  510. package/dist/agents/ralph-parser.js.map +0 -1
  511. package/dist/cli/commands/analysis.d.ts +0 -8
  512. package/dist/cli/commands/analysis.d.ts.map +0 -1
  513. package/dist/cli/commands/analysis.js +0 -78
  514. package/dist/cli/commands/analysis.js.map +0 -1
  515. package/dist/cli/commands/compress.d.ts +0 -18
  516. package/dist/cli/commands/compress.d.ts.map +0 -1
  517. package/dist/cli/commands/compress.js +0 -100
  518. package/dist/cli/commands/compress.js.map +0 -1
  519. package/dist/cli/commands/ralph.d.ts +0 -45
  520. package/dist/cli/commands/ralph.d.ts.map +0 -1
  521. package/dist/cli/commands/ralph.js +0 -694
  522. package/dist/cli/commands/ralph.js.map +0 -1
  523. package/dist/cli/docs-prompts.d.ts +0 -3
  524. package/dist/cli/docs-prompts.d.ts.map +0 -1
  525. package/dist/cli/docs-prompts.js +0 -45
  526. package/dist/cli/docs-prompts.js.map +0 -1
  527. package/dist/core/agent-manager.d.ts +0 -69
  528. package/dist/core/agent-manager.d.ts.map +0 -1
  529. package/dist/core/agent-manager.js +0 -476
  530. package/dist/core/agent-manager.js.map +0 -1
  531. package/dist/core/agent-template-engine.d.ts +0 -51
  532. package/dist/core/agent-template-engine.d.ts.map +0 -1
  533. package/dist/core/agent-template-engine.js +0 -291
  534. package/dist/core/agent-template-engine.js.map +0 -1
  535. package/dist/core/analysis-manager.d.ts +0 -56
  536. package/dist/core/analysis-manager.d.ts.map +0 -1
  537. package/dist/core/analysis-manager.js +0 -218
  538. package/dist/core/analysis-manager.js.map +0 -1
  539. package/dist/core/auto-fixer.d.ts +0 -14
  540. package/dist/core/auto-fixer.d.ts.map +0 -1
  541. package/dist/core/auto-fixer.js +0 -207
  542. package/dist/core/auto-fixer.js.map +0 -1
  543. package/dist/core/changelog-generator.d.ts +0 -44
  544. package/dist/core/changelog-generator.d.ts.map +0 -1
  545. package/dist/core/changelog-generator.js +0 -222
  546. package/dist/core/changelog-generator.js.map +0 -1
  547. package/dist/core/claude-mcp.d.ts.map +0 -1
  548. package/dist/core/claude-mcp.js.map +0 -1
  549. package/dist/core/claude-md-generator.d.ts.map +0 -1
  550. package/dist/core/claude-md-generator.js.map +0 -1
  551. package/dist/core/claude-settings-manager.d.ts.map +0 -1
  552. package/dist/core/claude-settings-manager.js.map +0 -1
  553. package/dist/core/cli-bridge.d.ts.map +0 -1
  554. package/dist/core/cli-bridge.js.map +0 -1
  555. package/dist/core/compact-context-manager.d.ts +0 -34
  556. package/dist/core/compact-context-manager.d.ts.map +0 -1
  557. package/dist/core/compact-context-manager.js +0 -60
  558. package/dist/core/compact-context-manager.js.map +0 -1
  559. package/dist/core/complexity-detector.d.ts +0 -36
  560. package/dist/core/complexity-detector.d.ts.map +0 -1
  561. package/dist/core/complexity-detector.js +0 -334
  562. package/dist/core/complexity-detector.js.map +0 -1
  563. package/dist/core/compress/compressor.d.ts +0 -60
  564. package/dist/core/compress/compressor.d.ts.map +0 -1
  565. package/dist/core/compress/compressor.js +0 -232
  566. package/dist/core/compress/compressor.js.map +0 -1
  567. package/dist/core/compress/discover.d.ts +0 -19
  568. package/dist/core/compress/discover.d.ts.map +0 -1
  569. package/dist/core/compress/discover.js +0 -100
  570. package/dist/core/compress/discover.js.map +0 -1
  571. package/dist/core/compress/validator.d.ts +0 -47
  572. package/dist/core/compress/validator.d.ts.map +0 -1
  573. package/dist/core/compress/validator.js +0 -131
  574. package/dist/core/compress/validator.js.map +0 -1
  575. package/dist/core/config-manager.d.ts.map +0 -1
  576. package/dist/core/config-manager.js.map +0 -1
  577. package/dist/core/coverage-checker.d.ts.map +0 -1
  578. package/dist/core/coverage-checker.js.map +0 -1
  579. package/dist/core/cursor-mdc-generator.d.ts +0 -30
  580. package/dist/core/cursor-mdc-generator.d.ts.map +0 -1
  581. package/dist/core/cursor-mdc-generator.js +0 -98
  582. package/dist/core/cursor-mdc-generator.js.map +0 -1
  583. package/dist/core/decision-manager.d.ts.map +0 -1
  584. package/dist/core/decision-manager.js.map +0 -1
  585. package/dist/core/dependency-checker.d.ts.map +0 -1
  586. package/dist/core/dependency-checker.js.map +0 -1
  587. package/dist/core/detector.d.ts.map +0 -1
  588. package/dist/core/detector.js +0 -1763
  589. package/dist/core/detector.js.map +0 -1
  590. package/dist/core/docs-generator.d.ts.map +0 -1
  591. package/dist/core/docs-generator.js.map +0 -1
  592. package/dist/core/doctor.d.ts.map +0 -1
  593. package/dist/core/doctor.js.map +0 -1
  594. package/dist/core/generator.d.ts.map +0 -1
  595. package/dist/core/generator.js.map +0 -1
  596. package/dist/core/github-issues-importer.d.ts +0 -82
  597. package/dist/core/github-issues-importer.d.ts.map +0 -1
  598. package/dist/core/github-issues-importer.js +0 -161
  599. package/dist/core/github-issues-importer.js.map +0 -1
  600. package/dist/core/gitignore-generator.d.ts.map +0 -1
  601. package/dist/core/gitignore-generator.js.map +0 -1
  602. package/dist/core/health-scorer.d.ts +0 -61
  603. package/dist/core/health-scorer.d.ts.map +0 -1
  604. package/dist/core/health-scorer.js +0 -638
  605. package/dist/core/health-scorer.js.map +0 -1
  606. package/dist/core/iteration-tracker.d.ts +0 -85
  607. package/dist/core/iteration-tracker.d.ts.map +0 -1
  608. package/dist/core/iteration-tracker.js +0 -295
  609. package/dist/core/iteration-tracker.js.map +0 -1
  610. package/dist/core/knowledge-manager.d.ts.map +0 -1
  611. package/dist/core/knowledge-manager.js.map +0 -1
  612. package/dist/core/learn-manager.d.ts.map +0 -1
  613. package/dist/core/learn-manager.js.map +0 -1
  614. package/dist/core/mcp-reference-generator.d.ts.map +0 -1
  615. package/dist/core/mcp-reference-generator.js.map +0 -1
  616. package/dist/core/minimal-scaffolder.d.ts.map +0 -1
  617. package/dist/core/minimal-scaffolder.js.map +0 -1
  618. package/dist/core/modern-console.d.ts +0 -98
  619. package/dist/core/modern-console.d.ts.map +0 -1
  620. package/dist/core/modern-console.js +0 -556
  621. package/dist/core/modern-console.js.map +0 -1
  622. package/dist/core/multi-tool-generator.d.ts.map +0 -1
  623. package/dist/core/multi-tool-generator.js.map +0 -1
  624. package/dist/core/override-manager.d.ts.map +0 -1
  625. package/dist/core/override-manager.js.map +0 -1
  626. package/dist/core/plans-manager.d.ts.map +0 -1
  627. package/dist/core/plans-manager.js.map +0 -1
  628. package/dist/core/prd-generator.d.ts +0 -48
  629. package/dist/core/prd-generator.d.ts.map +0 -1
  630. package/dist/core/prd-generator.js +0 -233
  631. package/dist/core/prd-generator.js.map +0 -1
  632. package/dist/core/ralph-manager.d.ts +0 -163
  633. package/dist/core/ralph-manager.d.ts.map +0 -1
  634. package/dist/core/ralph-manager.js +0 -555
  635. package/dist/core/ralph-manager.js.map +0 -1
  636. package/dist/core/ralph-parallel.d.ts +0 -55
  637. package/dist/core/ralph-parallel.d.ts.map +0 -1
  638. package/dist/core/ralph-parallel.js +0 -201
  639. package/dist/core/ralph-parallel.js.map +0 -1
  640. package/dist/core/ralph-plan-checkpoint.d.ts +0 -58
  641. package/dist/core/ralph-plan-checkpoint.d.ts.map +0 -1
  642. package/dist/core/ralph-plan-checkpoint.js +0 -154
  643. package/dist/core/ralph-plan-checkpoint.js.map +0 -1
  644. package/dist/core/ralph-scripts.d.ts +0 -12
  645. package/dist/core/ralph-scripts.d.ts.map +0 -1
  646. package/dist/core/ralph-scripts.js +0 -50
  647. package/dist/core/ralph-scripts.js.map +0 -1
  648. package/dist/core/review-manager.d.ts +0 -74
  649. package/dist/core/review-manager.d.ts.map +0 -1
  650. package/dist/core/review-manager.js +0 -371
  651. package/dist/core/review-manager.js.map +0 -1
  652. package/dist/core/rules-generator.d.ts.map +0 -1
  653. package/dist/core/rules-generator.js.map +0 -1
  654. package/dist/core/skills-manager.d.ts.map +0 -1
  655. package/dist/core/skills-manager.js.map +0 -1
  656. package/dist/core/state-writer.d.ts.map +0 -1
  657. package/dist/core/state-writer.js.map +0 -1
  658. package/dist/core/task-manager.d.ts.map +0 -1
  659. package/dist/core/task-manager.js.map +0 -1
  660. package/dist/core/telemetry.d.ts +0 -29
  661. package/dist/core/telemetry.d.ts.map +0 -1
  662. package/dist/core/telemetry.js +0 -57
  663. package/dist/core/telemetry.js.map +0 -1
  664. package/dist/core/validator.d.ts.map +0 -1
  665. package/dist/core/validator.js.map +0 -1
  666. package/dist/core/version-bumper.d.ts.map +0 -1
  667. package/dist/core/version-bumper.js.map +0 -1
  668. package/dist/core/watcher.d.ts +0 -9
  669. package/dist/core/watcher.d.ts.map +0 -1
  670. package/dist/core/watcher.js +0 -22
  671. package/dist/core/watcher.js.map +0 -1
  672. package/dist/core/workflow-generator.d.ts.map +0 -1
  673. package/dist/core/workflow-generator.js.map +0 -1
  674. package/dist/hooks/terse-activate.d.ts +0 -59
  675. package/dist/hooks/terse-activate.d.ts.map +0 -1
  676. package/dist/hooks/terse-activate.js +0 -149
  677. package/dist/hooks/terse-activate.js.map +0 -1
  678. package/dist/hooks/terse-config.d.ts +0 -51
  679. package/dist/hooks/terse-config.d.ts.map +0 -1
  680. package/dist/hooks/terse-config.js +0 -130
  681. package/dist/hooks/terse-config.js.map +0 -1
  682. package/dist/hooks/terse-mode-tracker.d.ts +0 -78
  683. package/dist/hooks/terse-mode-tracker.d.ts.map +0 -1
  684. package/dist/hooks/terse-mode-tracker.js +0 -213
  685. package/dist/hooks/terse-mode-tracker.js.map +0 -1
  686. package/dist/memory/hnsw-index.d.ts +0 -68
  687. package/dist/memory/hnsw-index.d.ts.map +0 -1
  688. package/dist/memory/hnsw-index.js +0 -544
  689. package/dist/memory/hnsw-index.js.map +0 -1
  690. package/dist/memory/memory-cache.d.ts +0 -33
  691. package/dist/memory/memory-cache.d.ts.map +0 -1
  692. package/dist/memory/memory-cache.js +0 -85
  693. package/dist/memory/memory-cache.js.map +0 -1
  694. package/dist/memory/memory-search.d.ts +0 -42
  695. package/dist/memory/memory-search.d.ts.map +0 -1
  696. package/dist/memory/memory-search.js +0 -180
  697. package/dist/memory/memory-search.js.map +0 -1
  698. package/dist/memory/memory-store.d.ts +0 -84
  699. package/dist/memory/memory-store.d.ts.map +0 -1
  700. package/dist/memory/memory-store.js +0 -566
  701. package/dist/memory/memory-store.js.map +0 -1
  702. package/dist/memory/memory-vectorizer.d.ts +0 -29
  703. package/dist/memory/memory-vectorizer.d.ts.map +0 -1
  704. package/dist/memory/memory-vectorizer.js +0 -199
  705. package/dist/memory/memory-vectorizer.js.map +0 -1
  706. package/templates/core/RALPH.md +0 -471
  707. package/templates/frameworks/ANGULAR.md +0 -36
  708. package/templates/frameworks/DJANGO.md +0 -83
  709. package/templates/frameworks/ELECTRON.md +0 -147
  710. package/templates/frameworks/FLASK.md +0 -38
  711. package/templates/frameworks/FLUTTER.md +0 -55
  712. package/templates/frameworks/JQUERY.md +0 -32
  713. package/templates/frameworks/LARAVEL.md +0 -38
  714. package/templates/frameworks/NESTJS.md +0 -43
  715. package/templates/frameworks/NEXTJS.md +0 -127
  716. package/templates/frameworks/NUXT.md +0 -40
  717. package/templates/frameworks/RAILS.md +0 -66
  718. package/templates/frameworks/REACT.md +0 -38
  719. package/templates/frameworks/REACT_NATIVE.md +0 -47
  720. package/templates/frameworks/SPRING.md +0 -39
  721. package/templates/frameworks/SYMFONY.md +0 -36
  722. package/templates/frameworks/VUE.md +0 -36
  723. package/templates/frameworks/ZEND.md +0 -35
  724. package/templates/hooks/enforce-mcp-for-tasks.sh +0 -31
  725. package/templates/hooks/enforce-no-deferred.sh +0 -21
  726. package/templates/hooks/enforce-no-shortcuts.sh +0 -31
  727. package/templates/ides/COPILOT.md +0 -37
  728. package/templates/ides/CURSOR.md +0 -43
  729. package/templates/ides/JETBRAINS_AI.md +0 -35
  730. package/templates/ides/REPLIT.md +0 -36
  731. package/templates/ides/TABNINE.md +0 -29
  732. package/templates/ides/VSCODE.md +0 -40
  733. package/templates/ides/WINDSURF.md +0 -36
  734. package/templates/ides/ZED.md +0 -32
  735. package/templates/ides/cursor-mdc/go.mdc +0 -24
  736. package/templates/ides/cursor-mdc/python.mdc +0 -24
  737. package/templates/ides/cursor-mdc/quality.mdc +0 -25
  738. package/templates/ides/cursor-mdc/ralph.mdc +0 -39
  739. package/templates/ides/cursor-mdc/rulebook.mdc +0 -38
  740. package/templates/ides/cursor-mdc/rust.mdc +0 -24
  741. package/templates/ides/cursor-mdc/typescript.mdc +0 -25
  742. package/templates/ralph/ralph-history.bat +0 -4
  743. package/templates/ralph/ralph-history.sh +0 -5
  744. package/templates/ralph/ralph-init.bat +0 -5
  745. package/templates/ralph/ralph-init.sh +0 -5
  746. package/templates/ralph/ralph-pause.bat +0 -5
  747. package/templates/ralph/ralph-pause.sh +0 -5
  748. package/templates/ralph/ralph-run.bat +0 -5
  749. package/templates/ralph/ralph-run.sh +0 -5
  750. package/templates/ralph/ralph-status.bat +0 -4
  751. package/templates/ralph/ralph-status.sh +0 -5
  752. package/templates/services/AZURE_BLOB.md +0 -184
  753. package/templates/services/CASSANDRA.md +0 -239
  754. package/templates/services/DATADOG.md +0 -26
  755. package/templates/services/DOCKER.md +0 -124
  756. package/templates/services/DOCKER_COMPOSE.md +0 -168
  757. package/templates/services/DYNAMODB.md +0 -308
  758. package/templates/services/ELASTICSEARCH.md +0 -347
  759. package/templates/services/GCS.md +0 -178
  760. package/templates/services/HELM.md +0 -194
  761. package/templates/services/INFLUXDB.md +0 -265
  762. package/templates/services/KAFKA.md +0 -341
  763. package/templates/services/KUBERNETES.md +0 -208
  764. package/templates/services/MARIADB.md +0 -183
  765. package/templates/services/MEMCACHED.md +0 -242
  766. package/templates/services/MINIO.md +0 -201
  767. package/templates/services/MONGODB.md +0 -268
  768. package/templates/services/MYSQL.md +0 -358
  769. package/templates/services/NEO4J.md +0 -247
  770. package/templates/services/OPENTELEMETRY.md +0 -25
  771. package/templates/services/ORACLE.md +0 -290
  772. package/templates/services/PINO.md +0 -24
  773. package/templates/services/POSTGRESQL.md +0 -326
  774. package/templates/services/PROMETHEUS.md +0 -33
  775. package/templates/services/RABBITMQ.md +0 -286
  776. package/templates/services/REDIS.md +0 -292
  777. package/templates/services/S3.md +0 -298
  778. package/templates/services/SENTRY.md +0 -23
  779. package/templates/services/SQLITE.md +0 -294
  780. package/templates/services/SQLSERVER.md +0 -294
  781. package/templates/services/WINSTON.md +0 -30
  782. package/templates/skills/frameworks/angular/SKILL.md +0 -46
  783. package/templates/skills/frameworks/django/SKILL.md +0 -93
  784. package/templates/skills/frameworks/electron/SKILL.md +0 -157
  785. package/templates/skills/frameworks/flask/SKILL.md +0 -48
  786. package/templates/skills/frameworks/flutter/SKILL.md +0 -65
  787. package/templates/skills/frameworks/jquery/SKILL.md +0 -42
  788. package/templates/skills/frameworks/laravel/SKILL.md +0 -48
  789. package/templates/skills/frameworks/nestjs/SKILL.md +0 -53
  790. package/templates/skills/frameworks/nextjs/SKILL.md +0 -137
  791. package/templates/skills/frameworks/nuxt/SKILL.md +0 -50
  792. package/templates/skills/frameworks/rails/SKILL.md +0 -76
  793. package/templates/skills/frameworks/react/SKILL.md +0 -48
  794. package/templates/skills/frameworks/react-native/SKILL.md +0 -57
  795. package/templates/skills/frameworks/spring/SKILL.md +0 -49
  796. package/templates/skills/frameworks/symfony/SKILL.md +0 -46
  797. package/templates/skills/frameworks/vue/SKILL.md +0 -46
  798. package/templates/skills/frameworks/zend/SKILL.md +0 -45
  799. package/templates/skills/services/azure-blob/SKILL.md +0 -194
  800. package/templates/skills/services/cassandra/SKILL.md +0 -249
  801. package/templates/skills/services/dynamodb/SKILL.md +0 -318
  802. package/templates/skills/services/elasticsearch/SKILL.md +0 -357
  803. package/templates/skills/services/gcs/SKILL.md +0 -188
  804. package/templates/skills/services/influxdb/SKILL.md +0 -275
  805. package/templates/skills/services/kafka/SKILL.md +0 -351
  806. package/templates/skills/services/mariadb/SKILL.md +0 -193
  807. package/templates/skills/services/memcached/SKILL.md +0 -252
  808. package/templates/skills/services/minio/SKILL.md +0 -211
  809. package/templates/skills/services/mongodb/SKILL.md +0 -278
  810. package/templates/skills/services/mysql/SKILL.md +0 -368
  811. package/templates/skills/services/neo4j/SKILL.md +0 -257
  812. package/templates/skills/services/oracle/SKILL.md +0 -300
  813. package/templates/skills/services/postgresql/SKILL.md +0 -336
  814. package/templates/skills/services/rabbitmq/SKILL.md +0 -296
  815. package/templates/skills/services/redis/SKILL.md +0 -302
  816. package/templates/skills/services/s3/SKILL.md +0 -308
  817. package/templates/skills/services/sqlite/SKILL.md +0 -304
  818. package/templates/skills/services/sqlserver/SKILL.md +0 -304
  819. package/templates/skills/workflows/ralph/SETUP.md +0 -228
  820. package/templates/skills/workflows/ralph/SKILL.md +0 -309
  821. package/templates/skills/workflows/ralph/install.sh +0 -87
  822. package/templates/skills/workflows/ralph/manifest.json +0 -158
  823. /package/dist/core/{claude-md-generator.d.ts → claude/claude-md-generator.d.ts} +0 -0
  824. /package/dist/core/{docs-generator.d.ts → docs/docs-generator.d.ts} +0 -0
  825. /package/dist/core/{mcp-reference-generator.d.ts → docs/mcp-reference-generator.d.ts} +0 -0
  826. /package/dist/core/{minimal-scaffolder.d.ts → generators/minimal-scaffolder.d.ts} +0 -0
  827. /package/dist/core/{coverage-checker.d.ts → quality/coverage-checker.d.ts} +0 -0
  828. /package/dist/core/{dependency-checker.d.ts → quality/dependency-checker.d.ts} +0 -0
  829. /package/dist/core/{doctor.d.ts → quality/doctor.d.ts} +0 -0
  830. /package/dist/core/{validator.d.ts → quality/validator.d.ts} +0 -0
  831. /package/dist/core/{override-manager.d.ts → state/override-manager.d.ts} +0 -0
  832. /package/dist/core/{version-bumper.d.ts → state/version-bumper.d.ts} +0 -0
  833. /package/dist/core/{plans-manager.d.ts → tasks/plans-manager.d.ts} +0 -0
  834. /package/dist/core/{task-manager.d.ts → tasks/task-manager.d.ts} +0 -0
@@ -1,694 +0,0 @@
1
- import chalk from 'chalk';
2
- import { writeFile, ensureDir } from '../../utils/file-system.js';
3
- import path from 'path';
4
- /**
5
- * Build prompt for AI agent from user story context
6
- */
7
- export function ralphBuildPrompt(task, prd, contextHistory, plansContext) {
8
- const criteria = (task.acceptanceCriteria || []).map((c) => `- ${c}`).join('\n');
9
- return [
10
- `You are working on project: ${prd?.project || 'unknown'}`,
11
- ``,
12
- plansContext ? `## Session Context (PLANS.md)\n${plansContext}\n` : '',
13
- contextHistory && contextHistory !== 'No iteration history available.'
14
- ? `## Iteration History\n${contextHistory}\n`
15
- : '',
16
- `## Current Task: ${task.title}`,
17
- `ID: ${task.id}`,
18
- ``,
19
- `## Description`,
20
- task.description,
21
- ``,
22
- `## Acceptance Criteria`,
23
- criteria,
24
- ``,
25
- task.notes ? `## Notes\n${task.notes}\n` : '',
26
- `## Instructions`,
27
- `1. Implement the changes described above`,
28
- `2. Ensure all acceptance criteria are met`,
29
- `3. Run quality checks: type-check, lint, tests`,
30
- `4. Fix any issues found by quality checks`,
31
- `5. When done, summarize what was changed`,
32
- ]
33
- .filter(Boolean)
34
- .join('\n');
35
- }
36
- /**
37
- * Execute AI agent and capture output
38
- */
39
- export async function ralphExecuteAgent(tool, prompt, cwd, spawn) {
40
- const toolCommands = {
41
- claude: {
42
- cmd: 'claude',
43
- args: ['-p', '--dangerously-skip-permissions', '--verbose'],
44
- stdinPrompt: true,
45
- },
46
- amp: { cmd: 'amp', args: ['-p', prompt], stdinPrompt: false },
47
- gemini: { cmd: 'gemini', args: ['-p', prompt], stdinPrompt: false },
48
- };
49
- const config = toolCommands[tool] || toolCommands.claude;
50
- return new Promise((resolve, reject) => {
51
- let output = '';
52
- let errorOutput = '';
53
- const proc = spawn(config.cmd, config.args, {
54
- cwd,
55
- shell: true,
56
- stdio: ['pipe', 'pipe', 'pipe'],
57
- env: { ...process.env },
58
- });
59
- if (config.stdinPrompt && proc.stdin) {
60
- proc.stdin.write(prompt);
61
- proc.stdin.end();
62
- }
63
- proc.stdout?.on('data', (data) => {
64
- const text = data.toString();
65
- output += text;
66
- process.stdout.write(text);
67
- });
68
- proc.stderr?.on('data', (data) => {
69
- errorOutput += data.toString();
70
- });
71
- proc.on('close', (code) => {
72
- if (code === 0 || output.length > 0) {
73
- resolve(output || errorOutput);
74
- }
75
- else {
76
- reject(new Error(`Agent ${tool} exited with code ${code}: ${errorOutput.slice(0, 500)}`));
77
- }
78
- });
79
- proc.on('error', (err) => {
80
- reject(new Error(`Failed to start ${tool}: ${err.message}`));
81
- });
82
- setTimeout(() => {
83
- proc.kill('SIGTERM');
84
- resolve(output || 'Agent execution timed out after 10 minutes');
85
- }, 600000);
86
- });
87
- }
88
- /**
89
- * Run quality gates and return results
90
- */
91
- export async function ralphRunQualityGates(cwd, spawn) {
92
- const runGate = (cmd, args) => {
93
- return new Promise((resolve) => {
94
- const proc = spawn(cmd, args, {
95
- cwd,
96
- shell: true,
97
- stdio: ['pipe', 'pipe', 'pipe'],
98
- });
99
- proc.on('close', (code) => {
100
- resolve(code === 0);
101
- });
102
- proc.on('error', () => {
103
- resolve(false);
104
- });
105
- setTimeout(() => {
106
- proc.kill('SIGTERM');
107
- resolve(false);
108
- }, 120000);
109
- });
110
- };
111
- const { detectMonorepo } = await import('../../core/detector.js');
112
- const monorepo = await detectMonorepo(cwd).catch(() => ({
113
- detected: false,
114
- tool: null,
115
- packages: [],
116
- }));
117
- let testCmd = ['npm', ['test']];
118
- if (monorepo.detected) {
119
- if (monorepo.tool === 'turborepo')
120
- testCmd = ['turbo', ['run', 'test']];
121
- else if (monorepo.tool === 'nx')
122
- testCmd = ['nx', ['run-many', '--target=test']];
123
- }
124
- const [typeCheck, lint, tests] = await Promise.all([
125
- runGate('npm', ['run', 'type-check']),
126
- runGate('npm', ['run', 'lint']),
127
- runGate(testCmd[0], testCmd[1]),
128
- ]);
129
- return {
130
- type_check: typeCheck,
131
- lint: lint,
132
- tests: tests,
133
- coverage_met: tests,
134
- };
135
- }
136
- /**
137
- * Create git branch from PRD branchName
138
- */
139
- export async function ralphCreateBranch(cwd, branchName) {
140
- const { readFileSync } = await import('fs');
141
- const { spawn } = await import('child_process');
142
- try {
143
- const gitHeadPath = path.join(cwd, '.git', 'HEAD');
144
- const head = readFileSync(gitHeadPath, 'utf8').trim();
145
- const currentBranch = head.replace('ref: refs/heads/', '');
146
- if (currentBranch === branchName) {
147
- return;
148
- }
149
- }
150
- catch {
151
- return;
152
- }
153
- await new Promise((resolve) => {
154
- const proc = spawn('git', ['checkout', '-B', branchName], {
155
- cwd,
156
- shell: true,
157
- stdio: 'pipe',
158
- });
159
- proc.on('close', () => resolve());
160
- proc.on('error', () => resolve());
161
- });
162
- }
163
- /**
164
- * Commit changes after successful iteration
165
- */
166
- export async function ralphGitCommit(cwd, task, iteration, spawn) {
167
- await new Promise((resolve) => {
168
- const proc = spawn('git', ['add', '-A'], { cwd, shell: true, stdio: 'pipe' });
169
- proc.on('close', () => resolve());
170
- proc.on('error', () => resolve());
171
- });
172
- const hasChanges = await new Promise((resolve) => {
173
- let output = '';
174
- const proc = spawn('git', ['diff', '--cached', '--stat'], {
175
- cwd,
176
- shell: true,
177
- stdio: ['pipe', 'pipe', 'pipe'],
178
- });
179
- proc.stdout?.on('data', (data) => {
180
- output += data.toString();
181
- });
182
- proc.on('close', () => resolve(output.trim().length > 0));
183
- proc.on('error', () => resolve(false));
184
- });
185
- if (!hasChanges) {
186
- return undefined;
187
- }
188
- const commitMsg = `ralph(${task.id}): ${task.title}\n\nIteration ${iteration} - Ralph autonomous loop`;
189
- const commitHash = await new Promise((resolve) => {
190
- let output = '';
191
- const proc = spawn('git', ['commit', '-m', commitMsg], {
192
- cwd,
193
- shell: true,
194
- stdio: ['pipe', 'pipe', 'pipe'],
195
- });
196
- proc.stdout?.on('data', (data) => {
197
- output += data.toString();
198
- });
199
- proc.on('close', (code) => {
200
- if (code === 0) {
201
- const hashMatch = output.match(/\[[\w/.-]+ ([a-f0-9]+)\]/);
202
- resolve(hashMatch ? hashMatch[1] : undefined);
203
- }
204
- else {
205
- resolve(undefined);
206
- }
207
- });
208
- proc.on('error', () => resolve(undefined));
209
- });
210
- return commitHash;
211
- }
212
- export async function ralphInitCommand() {
213
- const oraModule = await import('ora');
214
- const ora = oraModule.default;
215
- const spinner = ora('Initializing Ralph autonomous loop...').start();
216
- try {
217
- const cwd = process.cwd();
218
- const { Logger } = await import('../../core/logger.js');
219
- const { RalphManager } = await import('../../core/ralph-manager.js');
220
- const { PRDGenerator } = await import('../../core/prd-generator.js');
221
- const { createConfigManager } = await import('../../core/config-manager.js');
222
- const logger = new Logger(cwd);
223
- const configManager = createConfigManager(cwd);
224
- const config = await configManager.loadConfig();
225
- const ralphManager = new RalphManager(cwd, logger);
226
- const prdGenerator = new PRDGenerator(cwd, logger);
227
- const maxIterations = config.ralph?.maxIterations || 10;
228
- const tool = (config.ralph?.tool || 'claude');
229
- await ralphManager.initialize(maxIterations, tool);
230
- const prd = await prdGenerator.generatePRD(path.basename(cwd));
231
- const prdPath = path.join(cwd, '.rulebook', 'ralph', 'prd.json');
232
- await writeFile(prdPath, JSON.stringify(prd, null, 2));
233
- spinner.succeed(`Ralph initialized: ${prd.userStories.length} user stories loaded`);
234
- console.log(`\n 📋 PRD: ${prdPath}`);
235
- console.log(` 🔄 Max iterations: ${maxIterations}`);
236
- console.log(` 🤖 AI Tool: ${tool}`);
237
- console.log(`\n Run: ${chalk.bold('rulebook ralph run')}\n`);
238
- }
239
- catch (error) {
240
- spinner.fail('Ralph initialization failed');
241
- console.error(chalk.red(String(error)));
242
- process.exit(1);
243
- }
244
- }
245
- export async function ralphRunCommand(options) {
246
- const oraModule = await import('ora');
247
- const ora = oraModule.default;
248
- const spinner = ora('Starting Ralph autonomous loop...').start();
249
- try {
250
- const cwd = process.cwd();
251
- const { Logger } = await import('../../core/logger.js');
252
- const { RalphManager } = await import('../../core/ralph-manager.js');
253
- const { RalphParser } = await import('../../agents/ralph-parser.js');
254
- const { createConfigManager } = await import('../../core/config-manager.js');
255
- const { IterationTracker } = await import('../../core/iteration-tracker.js');
256
- const childProcess = await import('child_process');
257
- const logger = new Logger(cwd);
258
- const configManager = createConfigManager(cwd);
259
- const config = await configManager.loadConfig();
260
- const ralphManager = new RalphManager(cwd, logger);
261
- const maxIterations = options.maxIterations || config.ralph?.maxIterations || 10;
262
- const tool = options.tool || config.ralph?.tool || 'claude';
263
- const parallelWorkers = options.parallel ??
264
- (config.ralph?.parallel?.enabled ? config.ralph.parallel.maxWorkers : undefined);
265
- const planCheckpointConfig = {
266
- enabled: options.planFirst ?? config.ralph?.planCheckpoint?.enabled ?? false,
267
- autoApproveAfterSeconds: config.ralph?.planCheckpoint?.autoApproveAfterSeconds ?? 0,
268
- requireApprovalForStories: config.ralph?.planCheckpoint?.requireApprovalForStories ?? 'all',
269
- };
270
- const compressionConfig = config.ralph?.contextCompression;
271
- const compressionEnabled = compressionConfig?.enabled !== false;
272
- const compressionRecentCount = compressionConfig?.recentCount ?? 3;
273
- const compressionThreshold = compressionConfig?.threshold ?? 5;
274
- const iterationTracker = new IterationTracker(cwd, logger);
275
- await iterationTracker.initialize();
276
- await ralphManager.initialize(maxIterations, tool);
277
- const prd = await ralphManager.loadPRD();
278
- if (prd?.branchName) {
279
- await ralphCreateBranch(cwd, prd.branchName);
280
- }
281
- let interrupted = false;
282
- const handleInterrupt = async () => {
283
- interrupted = true;
284
- spinner.warn('Pausing after current iteration...');
285
- await ralphManager.pause();
286
- };
287
- process.on('SIGINT', handleInterrupt);
288
- await ralphManager.refreshTaskCount();
289
- if (parallelWorkers && parallelWorkers > 1) {
290
- spinner.text = `Ralph parallel mode (${parallelWorkers} workers)...`;
291
- const batches = await ralphManager.getParallelBatches(parallelWorkers);
292
- spinner.stop();
293
- console.log(chalk.bold.cyan(`\n Parallel mode: ${batches.length} batch(es), max ${parallelWorkers} workers\n`));
294
- let iterationCount = 0;
295
- for (const batch of batches) {
296
- if (interrupted)
297
- break;
298
- console.log(chalk.bold(` ── Batch: ${batch.map((s) => s.id).join(', ')} (${batch.length} stories) ──`));
299
- const batchResults = await Promise.allSettled(batch.map(async (task) => {
300
- iterationCount++;
301
- const localIteration = iterationCount;
302
- const startTime = Date.now();
303
- let contextHistory = '';
304
- if (compressionEnabled) {
305
- contextHistory = await iterationTracker.buildCompressedContext(compressionRecentCount, compressionThreshold);
306
- }
307
- let plansContext = '';
308
- try {
309
- const { readPlans, plansExists } = await import('../../core/plans-manager.js');
310
- if (plansExists(cwd)) {
311
- const plans = await readPlans(cwd);
312
- if (plans?.context && plans.context.trim()) {
313
- plansContext = plans.context.trim();
314
- }
315
- }
316
- }
317
- catch {
318
- // PLANS.md injection is optional
319
- }
320
- const prompt = ralphBuildPrompt(task, prd, contextHistory, plansContext);
321
- let agentOutput = '';
322
- try {
323
- agentOutput = await ralphExecuteAgent(tool, prompt, cwd, childProcess.spawn);
324
- }
325
- catch (agentError) {
326
- agentOutput = `Error executing agent: ${agentError.message || agentError}`;
327
- }
328
- const qualityResults = await ralphRunQualityGates(cwd, childProcess.spawn);
329
- const executionTime = Date.now() - startTime;
330
- const parsed = RalphParser.parseAgentOutput(agentOutput, localIteration, task.id, task.title, tool);
331
- const allGatesPass = qualityResults.type_check &&
332
- qualityResults.lint &&
333
- qualityResults.tests &&
334
- qualityResults.coverage_met;
335
- const passCount = Object.values(qualityResults).filter(Boolean).length;
336
- const status = allGatesPass
337
- ? 'success'
338
- : passCount >= 2
339
- ? 'partial'
340
- : 'failed';
341
- let gitCommit;
342
- if (allGatesPass) {
343
- gitCommit = await ralphGitCommit(cwd, task, localIteration, childProcess.spawn);
344
- await ralphManager.markStoryComplete(task.id);
345
- console.log(chalk.green(` [parallel] Story ${task.id} completed`));
346
- }
347
- else {
348
- console.log(chalk.yellow(` [parallel] Story ${task.id} not completed (quality gates failed)`));
349
- }
350
- const result = {
351
- iteration: localIteration,
352
- timestamp: new Date().toISOString(),
353
- task_id: task.id,
354
- task_title: task.title,
355
- status,
356
- ai_tool: tool,
357
- execution_time_ms: executionTime,
358
- quality_checks: qualityResults,
359
- output_summary: parsed.output_summary || `Iteration ${localIteration}: ${task.title}`,
360
- git_commit: gitCommit,
361
- learnings: parsed.learnings,
362
- errors: parsed.errors,
363
- metadata: {
364
- context_loss_count: parsed.metadata.context_loss_count,
365
- parsed_completion: parsed.metadata.parsed_completion,
366
- },
367
- };
368
- await ralphManager.recordIteration(result);
369
- return result;
370
- }));
371
- for (const [i, result] of batchResults.entries()) {
372
- if (result.status === 'rejected') {
373
- const story = batch[i];
374
- console.log(chalk.red(` [parallel] Story ${story.id} threw: ${result.reason}`));
375
- }
376
- }
377
- const currentStatus = await ralphManager.getStatus();
378
- if (currentStatus?.paused)
379
- break;
380
- }
381
- process.removeListener('SIGINT', handleInterrupt);
382
- const stats = await ralphManager.getTaskStats();
383
- console.log(`\n Parallel run complete: ${stats.completed}/${stats.total} tasks completed`);
384
- console.log(` Iterations: ${iterationCount}`);
385
- if (interrupted) {
386
- console.log(chalk.yellow(` Paused by user. Resume: ${chalk.bold('rulebook ralph resume')}`));
387
- }
388
- console.log(`\n View history: ${chalk.bold('rulebook ralph history')}\n`);
389
- return;
390
- }
391
- spinner.text = 'Ralph loop running (Ctrl+C to pause)...';
392
- let iterationCount = 0;
393
- while (ralphManager.canContinue() && !interrupted) {
394
- iterationCount++;
395
- const task = await ralphManager.getNextTask();
396
- if (!task) {
397
- break;
398
- }
399
- spinner.stop();
400
- console.log(chalk.bold.cyan(`\n ── Iteration ${iterationCount}: ${task.title} ──\n`));
401
- const startTime = Date.now();
402
- if (planCheckpointConfig.enabled) {
403
- const checkpoint = await ralphManager.runCheckpoint(task, tool, planCheckpointConfig);
404
- if (!checkpoint.proceed) {
405
- console.log(chalk.yellow(` Plan rejected for ${task.id}. Skipping implementation.`));
406
- if (checkpoint.feedback) {
407
- console.log(chalk.gray(` Feedback: ${checkpoint.feedback}`));
408
- }
409
- spinner.start('Preparing next iteration...');
410
- continue;
411
- }
412
- }
413
- let contextHistory = '';
414
- if (compressionEnabled) {
415
- contextHistory = await iterationTracker.buildCompressedContext(compressionRecentCount, compressionThreshold);
416
- }
417
- let plansContext = '';
418
- try {
419
- const { readPlans, plansExists } = await import('../../core/plans-manager.js');
420
- if (plansExists(cwd)) {
421
- const plans = await readPlans(cwd);
422
- if (plans?.context && plans.context.trim()) {
423
- plansContext = plans.context.trim();
424
- }
425
- }
426
- }
427
- catch {
428
- // PLANS.md injection is optional — skip on error
429
- }
430
- const prompt = ralphBuildPrompt(task, prd, contextHistory, plansContext);
431
- let agentOutput = '';
432
- try {
433
- agentOutput = await ralphExecuteAgent(tool, prompt, cwd, childProcess.spawn);
434
- }
435
- catch (agentError) {
436
- agentOutput = `Error executing agent: ${agentError.message || agentError}`;
437
- console.log(chalk.red(` Agent error: ${agentError.message || agentError}`));
438
- }
439
- spinner.start('Running quality gates...');
440
- const qualityResults = await ralphRunQualityGates(cwd, childProcess.spawn);
441
- spinner.stop();
442
- const gateIcon = (pass) => (pass ? chalk.green('✓') : chalk.red('✗'));
443
- console.log(` ${gateIcon(qualityResults.type_check)} type-check`);
444
- console.log(` ${gateIcon(qualityResults.lint)} lint`);
445
- console.log(` ${gateIcon(qualityResults.tests)} tests`);
446
- console.log(` ${gateIcon(qualityResults.coverage_met)} coverage`);
447
- const executionTime = Date.now() - startTime;
448
- const parsed = RalphParser.parseAgentOutput(agentOutput, iterationCount, task.id, task.title, tool);
449
- const allGatesPass = qualityResults.type_check &&
450
- qualityResults.lint &&
451
- qualityResults.tests &&
452
- qualityResults.coverage_met;
453
- const passCount = Object.values(qualityResults).filter(Boolean).length;
454
- const status = allGatesPass
455
- ? 'success'
456
- : passCount >= 2
457
- ? 'partial'
458
- : 'failed';
459
- let gitCommit;
460
- if (allGatesPass) {
461
- gitCommit = await ralphGitCommit(cwd, task, iterationCount, childProcess.spawn);
462
- await ralphManager.markStoryComplete(task.id);
463
- console.log(chalk.green(`\n ✅ Story ${task.id} completed`));
464
- }
465
- else {
466
- console.log(chalk.yellow(`\n ⚠ Story ${task.id} not completed (quality gates failed)`));
467
- }
468
- const result = {
469
- iteration: iterationCount,
470
- timestamp: new Date().toISOString(),
471
- task_id: task.id,
472
- task_title: task.title,
473
- status,
474
- ai_tool: tool,
475
- execution_time_ms: executionTime,
476
- quality_checks: qualityResults,
477
- output_summary: parsed.output_summary || `Iteration ${iterationCount}: ${task.title}`,
478
- git_commit: gitCommit,
479
- learnings: parsed.learnings,
480
- errors: parsed.errors,
481
- metadata: {
482
- context_loss_count: parsed.metadata.context_loss_count,
483
- parsed_completion: parsed.metadata.parsed_completion,
484
- },
485
- };
486
- await ralphManager.recordIteration(result);
487
- spinner.start('Preparing next iteration...');
488
- }
489
- process.removeListener('SIGINT', handleInterrupt);
490
- const stats = await ralphManager.getTaskStats();
491
- spinner.succeed(`Ralph loop complete: ${stats.completed}/${stats.total} tasks completed`);
492
- console.log(`\n ✅ Iterations: ${iterationCount}`);
493
- console.log(` 📊 Completed: ${stats.completed}/${stats.total}`);
494
- if (interrupted) {
495
- console.log(chalk.yellow(` ⏸ Paused by user. Resume: ${chalk.bold('rulebook ralph resume')}`));
496
- }
497
- console.log(`\n View history: ${chalk.bold('rulebook ralph history')}\n`);
498
- }
499
- catch (error) {
500
- spinner.fail('Ralph loop failed');
501
- console.error(chalk.red(String(error)));
502
- process.exit(1);
503
- }
504
- }
505
- export async function ralphStatusCommand() {
506
- const oraModule = await import('ora');
507
- const ora = oraModule.default;
508
- const spinner = ora('Loading Ralph status...').start();
509
- try {
510
- const cwd = process.cwd();
511
- const { Logger } = await import('../../core/logger.js');
512
- const { RalphManager } = await import('../../core/ralph-manager.js');
513
- const logger = new Logger(cwd);
514
- const ralphManager = new RalphManager(cwd, logger);
515
- const status = await ralphManager.getStatus();
516
- if (!status) {
517
- spinner.fail('Ralph not initialized');
518
- console.log(`\n Run: ${chalk.bold('rulebook ralph init')}\n`);
519
- return;
520
- }
521
- spinner.stop();
522
- const { createConfigManager } = await import('../../core/config-manager.js');
523
- const configManager = createConfigManager(cwd);
524
- const cfg = await configManager.loadConfig();
525
- const agentsMode = cfg.agentsMode ?? 'full';
526
- console.log(`\n ${chalk.bold('Ralph Loop Status')}`);
527
- console.log(` Iteration: ${status.current_iteration}/${status.max_iterations}`);
528
- console.log(` Tasks: ${status.completed_tasks}/${status.total_tasks}`);
529
- console.log(` Status: ${status.paused ? chalk.yellow('PAUSED') : chalk.green('RUNNING')}`);
530
- console.log(` AI Tool: ${status.tool}`);
531
- console.log(` Started: ${new Date(status.started_at).toLocaleString()}`);
532
- console.log(` Agents Mode: ${agentsMode === 'lean' ? chalk.cyan('lean') : chalk.gray('full')} (rulebook mode set lean|full)`);
533
- console.log();
534
- }
535
- catch (error) {
536
- spinner.fail('Failed to load status');
537
- console.error(chalk.red(String(error)));
538
- process.exit(1);
539
- }
540
- }
541
- export async function ralphHistoryCommand(options) {
542
- const oraModule = await import('ora');
543
- const ora = oraModule.default;
544
- const spinner = ora('Loading iteration history...').start();
545
- try {
546
- const cwd = process.cwd();
547
- const { Logger } = await import('../../core/logger.js');
548
- const { IterationTracker } = await import('../../core/iteration-tracker.js');
549
- const logger = new Logger(cwd);
550
- const tracker = new IterationTracker(cwd, logger);
551
- const limit = options.limit || 10;
552
- const history = await tracker.getHistory(limit);
553
- if (history.length === 0) {
554
- spinner.fail('No iteration history found');
555
- return;
556
- }
557
- spinner.stop();
558
- console.log(`\n ${chalk.bold('Recent Iterations')} (${history.length})\n`);
559
- for (const iter of history) {
560
- const statusIcon = iter.status === 'success'
561
- ? chalk.green('✓')
562
- : iter.status === 'partial'
563
- ? chalk.yellow('◐')
564
- : chalk.red('✗');
565
- console.log(` ${statusIcon} Iteration ${iter.iteration}: ${iter.task_title}`);
566
- console.log(` Status: ${iter.status} | Duration: ${(iter.duration_ms || 0) / 1000}s`);
567
- console.log(` Checks: type=${iter.quality_checks.type_check ? '✓' : '✗'} lint=${iter.quality_checks.lint ? '✓' : '✗'} tests=${iter.quality_checks.tests ? '✓' : '✗'}`);
568
- if (iter.git_commit) {
569
- console.log(` Commit: ${iter.git_commit}`);
570
- }
571
- console.log();
572
- }
573
- const stats = await tracker.getStatistics();
574
- console.log(` ${chalk.bold('Statistics')}`);
575
- console.log(` Total: ${stats.total_iterations} | Success: ${stats.successful_iterations} | Failed: ${stats.failed_iterations}`);
576
- console.log(` Success rate: ${(stats.success_rate * 100).toFixed(1)}%`);
577
- console.log(` Avg duration: ${stats.average_duration_ms}ms\n`);
578
- }
579
- catch (error) {
580
- spinner.fail('Failed to load history');
581
- console.error(chalk.red(String(error)));
582
- process.exit(1);
583
- }
584
- }
585
- export async function ralphPauseCommand() {
586
- const oraModule = await import('ora');
587
- const ora = oraModule.default;
588
- const spinner = ora('Pausing Ralph loop...').start();
589
- try {
590
- const cwd = process.cwd();
591
- const { Logger } = await import('../../core/logger.js');
592
- const { RalphManager } = await import('../../core/ralph-manager.js');
593
- const logger = new Logger(cwd);
594
- const ralphManager = new RalphManager(cwd, logger);
595
- const status = await ralphManager.getStatus();
596
- if (!status) {
597
- spinner.fail('Ralph not initialized');
598
- console.log(`\n Run: ${chalk.bold('rulebook ralph init')}\n`);
599
- return;
600
- }
601
- await ralphManager.pause();
602
- spinner.succeed('Ralph loop paused');
603
- console.log(`\n Resume with: ${chalk.bold('rulebook ralph resume')}\n`);
604
- }
605
- catch (error) {
606
- spinner.fail('Failed to pause');
607
- console.error(chalk.red(String(error)));
608
- process.exit(1);
609
- }
610
- }
611
- export async function ralphResumeCommand() {
612
- const oraModule = await import('ora');
613
- const ora = oraModule.default;
614
- const spinner = ora('Resuming Ralph loop...').start();
615
- try {
616
- const cwd = process.cwd();
617
- const { Logger } = await import('../../core/logger.js');
618
- const { RalphManager } = await import('../../core/ralph-manager.js');
619
- const logger = new Logger(cwd);
620
- const ralphManager = new RalphManager(cwd, logger);
621
- const status = await ralphManager.getStatus();
622
- if (!status) {
623
- spinner.fail('Ralph not initialized');
624
- console.log(`\n Run: ${chalk.bold('rulebook ralph init')}\n`);
625
- return;
626
- }
627
- await ralphManager.resume();
628
- spinner.succeed('Ralph loop resumed');
629
- console.log(`\n Continue loop: ${chalk.bold('rulebook ralph run')}\n`);
630
- }
631
- catch (error) {
632
- spinner.fail('Failed to resume');
633
- console.error(chalk.red(String(error)));
634
- process.exit(1);
635
- }
636
- }
637
- export async function ralphImportIssuesCommand(options) {
638
- const oraModule = await import('ora');
639
- const ora = oraModule.default;
640
- try {
641
- const { checkGhCliAvailable, fetchGithubIssues, convertIssueToStory, mergeStoriesIntoExistingPrd, } = await import('../../core/github-issues-importer.js');
642
- const ghAvailable = await checkGhCliAvailable();
643
- if (!ghAvailable) {
644
- console.error(chalk.red('GitHub CLI (gh) is not installed. Install it from: https://cli.github.com'));
645
- return;
646
- }
647
- const spinner = ora('Fetching GitHub issues...').start();
648
- const issues = await fetchGithubIssues({
649
- label: options.label,
650
- milestone: options.milestone,
651
- limit: options.limit ?? 20,
652
- });
653
- if (issues.length === 0) {
654
- spinner.info('No open issues found matching the given filters.');
655
- return;
656
- }
657
- spinner.text = `Converting ${issues.length} issues to Ralph stories...`;
658
- const cwd = process.cwd();
659
- let existingPrd = null;
660
- try {
661
- const { RalphManager } = await import('../../core/ralph-manager.js');
662
- const { Logger } = await import('../../core/logger.js');
663
- const logger = new Logger(cwd);
664
- const manager = new RalphManager(cwd, logger);
665
- existingPrd = await manager.loadPRD();
666
- }
667
- catch {
668
- // PRD not initialized — will create a new one
669
- }
670
- const newStories = issues.map((issue) => convertIssueToStory(issue));
671
- const { prd: mergedPrd, result } = mergeStoriesIntoExistingPrd(existingPrd, newStories);
672
- if (options.dryRun) {
673
- spinner.stop();
674
- console.log(chalk.yellow(`Dry run — would import ${result.imported} stories, update ${result.updated}, skip ${result.skipped}`));
675
- console.log('');
676
- for (const story of mergedPrd.userStories) {
677
- const marker = story.passes ? chalk.green('[PASS]') : chalk.gray('[ ]');
678
- console.log(` ${marker} ${story.id}: ${story.title}`);
679
- }
680
- return;
681
- }
682
- const prdPath = path.join(cwd, '.rulebook', 'ralph', 'prd.json');
683
- await ensureDir(path.join(cwd, '.rulebook', 'ralph'));
684
- await writeFile(prdPath, JSON.stringify(mergedPrd, null, 2));
685
- spinner.succeed(`Imported ${result.imported} new stories, updated ${result.updated} existing, ${result.skipped} skipped`);
686
- console.log(`\n PRD saved to: ${prdPath}`);
687
- console.log(` Total stories: ${mergedPrd.userStories.length}\n`);
688
- }
689
- catch (error) {
690
- console.error(chalk.red(`Failed to import GitHub issues: ${String(error)}`));
691
- process.exit(1);
692
- }
693
- }
694
- //# sourceMappingURL=ralph.js.map