@hivehub/rulebook 5.7.0 → 5.8.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 (600) 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-memory-save.md +48 -48
  8. package/.claude/commands/rulebook-memory-search.md +47 -47
  9. package/.claude/commands/rulebook-task-apply.md +67 -67
  10. package/.claude/commands/rulebook-task-archive.md +94 -94
  11. package/.claude/commands/rulebook-task-create.md +93 -93
  12. package/.claude/commands/rulebook-task-list.md +42 -42
  13. package/.claude/commands/rulebook-task-show.md +52 -52
  14. package/.claude/commands/rulebook-task-validate.md +53 -53
  15. package/.claude-plugin/marketplace.json +28 -28
  16. package/.claude-plugin/plugin.json +8 -8
  17. package/README.md +86 -0
  18. package/dist/cli/commands/claude.d.ts +17 -0
  19. package/dist/cli/commands/claude.d.ts.map +1 -0
  20. package/dist/cli/commands/claude.js +56 -0
  21. package/dist/cli/commands/claude.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts.map +1 -1
  23. package/dist/cli/commands/init.js +18 -2
  24. package/dist/cli/commands/init.js.map +1 -1
  25. package/dist/cli/commands/update.d.ts.map +1 -1
  26. package/dist/cli/commands/update.js +6 -1
  27. package/dist/cli/commands/update.js.map +1 -1
  28. package/dist/cli/prompts.d.ts +13 -0
  29. package/dist/cli/prompts.d.ts.map +1 -1
  30. package/dist/cli/prompts.js +106 -0
  31. package/dist/cli/prompts.js.map +1 -1
  32. package/dist/core/claude/claude-mcp.d.ts +10 -1
  33. package/dist/core/claude/claude-mcp.d.ts.map +1 -1
  34. package/dist/core/claude/claude-mcp.js +48 -2
  35. package/dist/core/claude/claude-mcp.js.map +1 -1
  36. package/dist/core/claude/claude-settings-manager.d.ts +12 -0
  37. package/dist/core/claude/claude-settings-manager.d.ts.map +1 -1
  38. package/dist/core/claude/claude-settings-manager.js +59 -3
  39. package/dist/core/claude/claude-settings-manager.js.map +1 -1
  40. package/dist/core/detect/detector.d.ts +8 -1
  41. package/dist/core/detect/detector.d.ts.map +1 -1
  42. package/dist/core/detect/detector.js +225 -0
  43. package/dist/core/detect/detector.js.map +1 -1
  44. package/dist/core/detect/library-registry.d.ts +40 -0
  45. package/dist/core/detect/library-registry.d.ts.map +1 -0
  46. package/dist/core/detect/library-registry.js +239 -0
  47. package/dist/core/detect/library-registry.js.map +1 -0
  48. package/dist/core/generators/generator.d.ts +2 -1
  49. package/dist/core/generators/generator.d.ts.map +1 -1
  50. package/dist/core/generators/generator.js +38 -1
  51. package/dist/core/generators/generator.js.map +1 -1
  52. package/dist/core/generators/rules-generator.d.ts +1 -5
  53. package/dist/core/generators/rules-generator.d.ts.map +1 -1
  54. package/dist/core/generators/rules-generator.js +40 -1
  55. package/dist/core/generators/rules-generator.js.map +1 -1
  56. package/dist/index.js +12 -0
  57. package/dist/index.js.map +1 -1
  58. package/dist/mcp/rulebook-server.js +0 -0
  59. package/dist/types.d.ts +13 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +23 -22
  62. package/templates/agents/accessibility-reviewer.md +43 -43
  63. package/templates/agents/api-designer.md +42 -42
  64. package/templates/agents/architect.md +51 -51
  65. package/templates/agents/build-engineer.md +36 -36
  66. package/templates/agents/code-reviewer.md +47 -47
  67. package/templates/agents/compiler/codegen-debugger.md +34 -34
  68. package/templates/agents/compiler/stdlib-engineer.md +28 -28
  69. package/templates/agents/compiler/test-coverage-guardian.md +31 -31
  70. package/templates/agents/database-architect.md +41 -41
  71. package/templates/agents/devops-engineer.md +42 -42
  72. package/templates/agents/docs-writer.md +38 -38
  73. package/templates/agents/game-engine/cpp-core-expert.md +35 -35
  74. package/templates/agents/game-engine/render-engineer.md +22 -22
  75. package/templates/agents/game-engine/shader-engineer.md +38 -38
  76. package/templates/agents/game-engine/systems-integration.md +43 -43
  77. package/templates/agents/generic/code-reviewer.md +41 -41
  78. package/templates/agents/generic/docs-writer.md +25 -25
  79. package/templates/agents/generic/project-manager.md +36 -36
  80. package/templates/agents/generic/researcher.md +34 -34
  81. package/templates/agents/generic/test-engineer.md +41 -41
  82. package/templates/agents/i18n-engineer.md +42 -42
  83. package/templates/agents/implementer.md +42 -42
  84. package/templates/agents/migration-engineer.md +42 -42
  85. package/templates/agents/mobile/platform-specialist.md +22 -22
  86. package/templates/agents/mobile/ui-engineer.md +22 -22
  87. package/templates/agents/performance-engineer.md +49 -49
  88. package/templates/agents/project-manager.md +217 -0
  89. package/templates/agents/quality-gatekeeper.md +208 -0
  90. package/templates/agents/refactoring-agent.md +41 -41
  91. package/templates/agents/researcher.md +38 -38
  92. package/templates/agents/security-reviewer.md +40 -40
  93. package/templates/agents/team-lead.md +37 -37
  94. package/templates/agents/tester.md +48 -48
  95. package/templates/agents/ux-reviewer.md +43 -43
  96. package/templates/agents/web-app/api-designer.md +22 -22
  97. package/templates/agents/web-app/backend-engineer.md +30 -30
  98. package/templates/agents/web-app/database-engineer.md +22 -22
  99. package/templates/agents/web-app/frontend-engineer.md +29 -29
  100. package/templates/agents/web-app/security-reviewer.md +32 -32
  101. package/templates/ci/rulebook-review.yml +26 -26
  102. package/templates/claude-workflows/bugfix.js +94 -0
  103. package/templates/claude-workflows/feature-pipeline.js +88 -0
  104. package/templates/claude-workflows/release-gate.js +64 -0
  105. package/templates/claude-workflows/review-fanout.js +125 -0
  106. package/templates/claude-workflows/rulebook-driver.js +382 -0
  107. package/templates/claude-workflows/spec-author.js +133 -0
  108. package/templates/cli/AIDER.md +49 -49
  109. package/templates/cli/AMAZON_Q.md +25 -25
  110. package/templates/cli/AUGGIE.md +32 -32
  111. package/templates/cli/CLAUDE.md +117 -117
  112. package/templates/cli/CLINE.md +99 -99
  113. package/templates/cli/CODEBUDDY.md +20 -20
  114. package/templates/cli/CODEIUM.md +20 -20
  115. package/templates/cli/CODEX.md +21 -21
  116. package/templates/cli/CONTINUE.md +34 -34
  117. package/templates/cli/CURSOR_CLI.md +62 -62
  118. package/templates/cli/FACTORY.md +18 -18
  119. package/templates/cli/GEMINI.md +35 -35
  120. package/templates/cli/KILOCODE.md +18 -18
  121. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  122. package/templates/commands/rulebook-decision-create.md +55 -55
  123. package/templates/commands/rulebook-decision-list.md +15 -15
  124. package/templates/commands/rulebook-knowledge-add.md +41 -41
  125. package/templates/commands/rulebook-knowledge-list.md +15 -15
  126. package/templates/commands/rulebook-memory-save.md +48 -48
  127. package/templates/commands/rulebook-memory-search.md +47 -47
  128. package/templates/commands/rulebook-task-apply.md +67 -67
  129. package/templates/commands/rulebook-task-archive.md +94 -94
  130. package/templates/commands/rulebook-task-create.md +93 -93
  131. package/templates/commands/rulebook-task-list.md +42 -42
  132. package/templates/commands/rulebook-task-show.md +52 -52
  133. package/templates/commands/rulebook-task-validate.md +53 -53
  134. package/templates/compact-context/_default.md +23 -23
  135. package/templates/compact-context/cpp.md +26 -26
  136. package/templates/compact-context/go.md +26 -26
  137. package/templates/compact-context/python.md +26 -26
  138. package/templates/compact-context/rust.md +28 -28
  139. package/templates/compact-context/typescript.md +29 -29
  140. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  141. package/templates/core/AGENT_AUTOMATION.md +296 -296
  142. package/templates/core/CLAUDE_MD_v2.md +90 -90
  143. package/templates/core/DAG.md +304 -304
  144. package/templates/core/DECISIONS.md +38 -38
  145. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  146. package/templates/core/KNOWLEDGE.md +49 -49
  147. package/templates/core/MULTI_AGENT.md +74 -74
  148. package/templates/core/PLANS.md +28 -28
  149. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  150. package/templates/core/RULEBOOK.md +1947 -1947
  151. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  152. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  153. package/templates/git/CI_CD_PATTERNS.md +661 -661
  154. package/templates/git/GITHUB_ACTIONS.md +728 -728
  155. package/templates/git/GITLAB_CI.md +730 -730
  156. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  157. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  158. package/templates/hooks/COMMIT_MSG.md +530 -530
  159. package/templates/hooks/POST_CHECKOUT.md +546 -546
  160. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  161. package/templates/hooks/PRE_COMMIT.md +414 -414
  162. package/templates/hooks/PRE_PUSH.md +601 -601
  163. package/templates/hooks/check-context-and-handoff.sh +16 -6
  164. package/templates/hooks/update-check.ps1 +84 -0
  165. package/templates/hooks/update-check.sh +103 -0
  166. package/templates/ides/CONTINUE_RULES.md +16 -16
  167. package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
  168. package/templates/ides/GEMINI_RULES.md +17 -17
  169. package/templates/ides/WINDSURF_RULES.md +14 -14
  170. package/templates/languages/C.md +333 -333
  171. package/templates/languages/CPP.md +743 -743
  172. package/templates/languages/CSHARP.md +417 -417
  173. package/templates/languages/ELIXIR.md +454 -454
  174. package/templates/languages/ERLANG.md +361 -361
  175. package/templates/languages/GO.md +645 -645
  176. package/templates/languages/HASKELL.md +177 -177
  177. package/templates/languages/JAVA.md +607 -607
  178. package/templates/languages/JAVASCRIPT.md +631 -631
  179. package/templates/languages/JULIA.md +97 -97
  180. package/templates/languages/KOTLIN.md +511 -511
  181. package/templates/languages/LISP.md +100 -100
  182. package/templates/languages/LUA.md +74 -74
  183. package/templates/languages/OBJECTIVEC.md +90 -90
  184. package/templates/languages/PHP.md +416 -416
  185. package/templates/languages/PYTHON.md +682 -682
  186. package/templates/languages/RUBY.md +421 -421
  187. package/templates/languages/RUST.md +477 -477
  188. package/templates/languages/SAS.md +73 -73
  189. package/templates/languages/SCALA.md +348 -348
  190. package/templates/languages/SOLIDITY.md +580 -580
  191. package/templates/languages/SQL.md +137 -137
  192. package/templates/languages/SWIFT.md +466 -466
  193. package/templates/languages/TYPESCRIPT.md +591 -591
  194. package/templates/languages/ZIG.md +265 -265
  195. package/templates/libraries/go/ECHO.md +18 -0
  196. package/templates/libraries/go/GIN.md +18 -0
  197. package/templates/libraries/go/GORM.md +18 -0
  198. package/templates/libraries/python/DJANGO.md +18 -0
  199. package/templates/libraries/python/FASTAPI.md +18 -0
  200. package/templates/libraries/python/FLASK.md +17 -0
  201. package/templates/libraries/python/PYDANTIC.md +17 -0
  202. package/templates/libraries/python/PYTEST.md +17 -0
  203. package/templates/libraries/python/SQLALCHEMY.md +17 -0
  204. package/templates/libraries/rust/ACTIX.md +17 -0
  205. package/templates/libraries/rust/AXUM.md +18 -0
  206. package/templates/libraries/rust/SERDE.md +16 -0
  207. package/templates/libraries/rust/SQLX.md +17 -0
  208. package/templates/libraries/rust/TOKIO.md +16 -0
  209. package/templates/libraries/typescript/ANGULAR.md +17 -0
  210. package/templates/libraries/typescript/DRIZZLE.md +16 -0
  211. package/templates/libraries/typescript/EXPRESS.md +17 -0
  212. package/templates/libraries/typescript/HEROUI.md +16 -0
  213. package/templates/libraries/typescript/JEST.md +17 -0
  214. package/templates/libraries/typescript/NESTJS.md +17 -0
  215. package/templates/libraries/typescript/NEXT.md +18 -0
  216. package/templates/libraries/typescript/PRISMA.md +16 -0
  217. package/templates/libraries/typescript/RADIX.md +16 -0
  218. package/templates/libraries/typescript/REACT.md +18 -0
  219. package/templates/libraries/typescript/SHADCN.md +16 -0
  220. package/templates/libraries/typescript/SVELTE.md +16 -0
  221. package/templates/libraries/typescript/TAILWIND.md +16 -0
  222. package/templates/libraries/typescript/TRPC.md +16 -0
  223. package/templates/libraries/typescript/VITEST.md +17 -0
  224. package/templates/libraries/typescript/VUE.md +17 -0
  225. package/templates/libraries/typescript/ZOD.md +17 -0
  226. package/templates/modules/ATLASSIAN.md +255 -255
  227. package/templates/modules/CONTEXT7.md +54 -54
  228. package/templates/modules/FIGMA.md +267 -267
  229. package/templates/modules/GITHUB_MCP.md +64 -64
  230. package/templates/modules/GRAFANA.md +328 -328
  231. package/templates/modules/MEMORY.md +126 -126
  232. package/templates/modules/NOTION.md +247 -247
  233. package/templates/modules/PLAYWRIGHT.md +90 -90
  234. package/templates/modules/RULEBOOK_MCP.md +208 -208
  235. package/templates/modules/SERENA.md +337 -337
  236. package/templates/modules/SUPABASE.md +223 -223
  237. package/templates/modules/SYNAP.md +69 -69
  238. package/templates/modules/VECTORIZER.md +63 -63
  239. package/templates/modules/sequential-thinking.md +42 -42
  240. package/templates/rules/consult-analysis-before-implementing.md +23 -23
  241. package/templates/rules/cpp.md +46 -46
  242. package/templates/rules/csharp.md +44 -44
  243. package/templates/rules/diagnostic-first.md +39 -39
  244. package/templates/rules/fail-twice-escalate.md +46 -46
  245. package/templates/rules/follow-task-sequence.md +36 -36
  246. package/templates/rules/git-safety.md +29 -29
  247. package/templates/rules/go.md +40 -40
  248. package/templates/rules/incremental-implementation.md +56 -56
  249. package/templates/rules/incremental-tests.md +29 -29
  250. package/templates/rules/java.md +43 -43
  251. package/templates/rules/javascript.md +39 -39
  252. package/templates/rules/knowledge-base-usage.md +41 -41
  253. package/templates/rules/multi-agent-teams.md +75 -75
  254. package/templates/rules/no-deferred.md +31 -31
  255. package/templates/rules/no-shortcuts.md +30 -30
  256. package/templates/rules/python.md +43 -43
  257. package/templates/rules/research-first.md +30 -30
  258. package/templates/rules/respect-handoff-trigger.md +41 -41
  259. package/templates/rules/rust.md +40 -40
  260. package/templates/rules/sequential-editing.md +21 -21
  261. package/templates/rules/session-workflow.md +24 -24
  262. package/templates/rules/task-decomposition.md +32 -32
  263. package/templates/rules/typescript.md +40 -40
  264. package/templates/skills/cli/aider/SKILL.md +59 -59
  265. package/templates/skills/cli/amazon-q/SKILL.md +35 -35
  266. package/templates/skills/cli/auggie/SKILL.md +42 -42
  267. package/templates/skills/cli/claude/SKILL.md +42 -42
  268. package/templates/skills/cli/cline/SKILL.md +42 -42
  269. package/templates/skills/cli/codebuddy/SKILL.md +30 -30
  270. package/templates/skills/cli/codeium/SKILL.md +30 -30
  271. package/templates/skills/cli/codex/SKILL.md +31 -31
  272. package/templates/skills/cli/continue/SKILL.md +44 -44
  273. package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
  274. package/templates/skills/cli/factory/SKILL.md +28 -28
  275. package/templates/skills/cli/gemini/SKILL.md +45 -45
  276. package/templates/skills/cli/kilocode/SKILL.md +28 -28
  277. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  278. package/templates/skills/core/dag/SKILL.md +314 -314
  279. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  280. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  281. package/templates/skills/core/rulebook/SKILL.md +176 -176
  282. package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
  283. package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
  284. package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
  285. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  286. package/templates/skills/dev/analysis/SKILL.md +19 -19
  287. package/templates/skills/dev/api-design/SKILL.md +15 -15
  288. package/templates/skills/dev/architect/SKILL.md +17 -17
  289. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  290. package/templates/skills/dev/db-design/SKILL.md +15 -15
  291. package/templates/skills/dev/debug/SKILL.md +16 -16
  292. package/templates/skills/dev/deploy/SKILL.md +17 -17
  293. package/templates/skills/dev/docs/SKILL.md +17 -17
  294. package/templates/skills/dev/handoff/SKILL.md +27 -27
  295. package/templates/skills/dev/migrate/SKILL.md +15 -15
  296. package/templates/skills/dev/perf/SKILL.md +17 -17
  297. package/templates/skills/dev/refactor/SKILL.md +17 -17
  298. package/templates/skills/dev/research/SKILL.md +14 -14
  299. package/templates/skills/dev/review/SKILL.md +18 -18
  300. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  301. package/templates/skills/dev/spec/SKILL.md +65 -0
  302. package/templates/skills/ides/copilot/SKILL.md +47 -47
  303. package/templates/skills/ides/cursor/SKILL.md +53 -53
  304. package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
  305. package/templates/skills/ides/replit/SKILL.md +46 -46
  306. package/templates/skills/ides/tabnine/SKILL.md +39 -39
  307. package/templates/skills/ides/vscode/SKILL.md +50 -50
  308. package/templates/skills/ides/windsurf/SKILL.md +46 -46
  309. package/templates/skills/ides/zed/SKILL.md +42 -42
  310. package/templates/skills/languages/c/SKILL.md +343 -343
  311. package/templates/skills/languages/cpp/SKILL.md +753 -753
  312. package/templates/skills/languages/csharp/SKILL.md +427 -427
  313. package/templates/skills/languages/elixir/SKILL.md +464 -464
  314. package/templates/skills/languages/erlang/SKILL.md +371 -371
  315. package/templates/skills/languages/go/SKILL.md +655 -655
  316. package/templates/skills/languages/haskell/SKILL.md +187 -187
  317. package/templates/skills/languages/java/SKILL.md +617 -617
  318. package/templates/skills/languages/javascript/SKILL.md +641 -641
  319. package/templates/skills/languages/julia/SKILL.md +107 -107
  320. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  321. package/templates/skills/languages/lisp/SKILL.md +110 -110
  322. package/templates/skills/languages/lua/SKILL.md +84 -84
  323. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  324. package/templates/skills/languages/php/SKILL.md +426 -426
  325. package/templates/skills/languages/python/SKILL.md +692 -692
  326. package/templates/skills/languages/ruby/SKILL.md +431 -431
  327. package/templates/skills/languages/rust/SKILL.md +487 -487
  328. package/templates/skills/languages/sas/SKILL.md +83 -83
  329. package/templates/skills/languages/scala/SKILL.md +358 -358
  330. package/templates/skills/languages/solidity/SKILL.md +590 -590
  331. package/templates/skills/languages/sql/SKILL.md +147 -147
  332. package/templates/skills/languages/swift/SKILL.md +476 -476
  333. package/templates/skills/languages/typescript/SKILL.md +302 -302
  334. package/templates/skills/languages/zig/SKILL.md +275 -275
  335. package/templates/skills/modules/atlassian/SKILL.md +265 -265
  336. package/templates/skills/modules/context7/SKILL.md +64 -64
  337. package/templates/skills/modules/figma/SKILL.md +277 -277
  338. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  339. package/templates/skills/modules/grafana/SKILL.md +338 -338
  340. package/templates/skills/modules/memory/SKILL.md +73 -73
  341. package/templates/skills/modules/notion/SKILL.md +257 -257
  342. package/templates/skills/modules/playwright/SKILL.md +100 -100
  343. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  344. package/templates/skills/modules/serena/SKILL.md +347 -347
  345. package/templates/skills/modules/supabase/SKILL.md +233 -233
  346. package/templates/skills/modules/synap/SKILL.md +79 -79
  347. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  348. package/templates/workflows/typescript-test.yml +9 -3
  349. package/dist/agents/ralph-parser.d.ts +0 -91
  350. package/dist/agents/ralph-parser.d.ts.map +0 -1
  351. package/dist/agents/ralph-parser.js +0 -415
  352. package/dist/agents/ralph-parser.js.map +0 -1
  353. package/dist/cli/commands/analysis.d.ts +0 -8
  354. package/dist/cli/commands/analysis.d.ts.map +0 -1
  355. package/dist/cli/commands/analysis.js +0 -78
  356. package/dist/cli/commands/analysis.js.map +0 -1
  357. package/dist/cli/commands/compress.d.ts +0 -18
  358. package/dist/cli/commands/compress.d.ts.map +0 -1
  359. package/dist/cli/commands/compress.js +0 -100
  360. package/dist/cli/commands/compress.js.map +0 -1
  361. package/dist/cli/commands/ralph.d.ts +0 -45
  362. package/dist/cli/commands/ralph.d.ts.map +0 -1
  363. package/dist/cli/commands/ralph.js +0 -694
  364. package/dist/cli/commands/ralph.js.map +0 -1
  365. package/dist/cli/docs-prompts.d.ts +0 -3
  366. package/dist/cli/docs-prompts.d.ts.map +0 -1
  367. package/dist/cli/docs-prompts.js +0 -45
  368. package/dist/cli/docs-prompts.js.map +0 -1
  369. package/dist/core/agent-manager.d.ts +0 -69
  370. package/dist/core/agent-manager.d.ts.map +0 -1
  371. package/dist/core/agent-manager.js +0 -476
  372. package/dist/core/agent-manager.js.map +0 -1
  373. package/dist/core/agent-template-engine.d.ts +0 -51
  374. package/dist/core/agent-template-engine.d.ts.map +0 -1
  375. package/dist/core/agent-template-engine.js +0 -291
  376. package/dist/core/agent-template-engine.js.map +0 -1
  377. package/dist/core/analysis-manager.d.ts +0 -56
  378. package/dist/core/analysis-manager.d.ts.map +0 -1
  379. package/dist/core/analysis-manager.js +0 -218
  380. package/dist/core/analysis-manager.js.map +0 -1
  381. package/dist/core/auto-fixer.d.ts +0 -14
  382. package/dist/core/auto-fixer.d.ts.map +0 -1
  383. package/dist/core/auto-fixer.js +0 -207
  384. package/dist/core/auto-fixer.js.map +0 -1
  385. package/dist/core/changelog-generator.d.ts +0 -44
  386. package/dist/core/changelog-generator.d.ts.map +0 -1
  387. package/dist/core/changelog-generator.js +0 -222
  388. package/dist/core/changelog-generator.js.map +0 -1
  389. package/dist/core/claude-mcp.d.ts +0 -59
  390. package/dist/core/claude-mcp.d.ts.map +0 -1
  391. package/dist/core/claude-mcp.js +0 -220
  392. package/dist/core/claude-mcp.js.map +0 -1
  393. package/dist/core/claude-md-generator.d.ts +0 -52
  394. package/dist/core/claude-md-generator.d.ts.map +0 -1
  395. package/dist/core/claude-md-generator.js +0 -104
  396. package/dist/core/claude-md-generator.js.map +0 -1
  397. package/dist/core/claude-settings-manager.d.ts +0 -44
  398. package/dist/core/claude-settings-manager.d.ts.map +0 -1
  399. package/dist/core/claude-settings-manager.js +0 -191
  400. package/dist/core/claude-settings-manager.js.map +0 -1
  401. package/dist/core/cli-bridge.d.ts +0 -113
  402. package/dist/core/cli-bridge.d.ts.map +0 -1
  403. package/dist/core/cli-bridge.js +0 -1094
  404. package/dist/core/cli-bridge.js.map +0 -1
  405. package/dist/core/compact-context-manager.d.ts +0 -34
  406. package/dist/core/compact-context-manager.d.ts.map +0 -1
  407. package/dist/core/compact-context-manager.js +0 -60
  408. package/dist/core/compact-context-manager.js.map +0 -1
  409. package/dist/core/complexity-detector.d.ts +0 -36
  410. package/dist/core/complexity-detector.d.ts.map +0 -1
  411. package/dist/core/complexity-detector.js +0 -334
  412. package/dist/core/complexity-detector.js.map +0 -1
  413. package/dist/core/compress/compressor.d.ts +0 -60
  414. package/dist/core/compress/compressor.d.ts.map +0 -1
  415. package/dist/core/compress/compressor.js +0 -232
  416. package/dist/core/compress/compressor.js.map +0 -1
  417. package/dist/core/compress/discover.d.ts +0 -19
  418. package/dist/core/compress/discover.d.ts.map +0 -1
  419. package/dist/core/compress/discover.js +0 -100
  420. package/dist/core/compress/discover.js.map +0 -1
  421. package/dist/core/compress/validator.d.ts +0 -47
  422. package/dist/core/compress/validator.d.ts.map +0 -1
  423. package/dist/core/compress/validator.js +0 -131
  424. package/dist/core/compress/validator.js.map +0 -1
  425. package/dist/core/config-manager.d.ts +0 -86
  426. package/dist/core/config-manager.d.ts.map +0 -1
  427. package/dist/core/config-manager.js +0 -621
  428. package/dist/core/config-manager.js.map +0 -1
  429. package/dist/core/coverage-checker.d.ts +0 -14
  430. package/dist/core/coverage-checker.d.ts.map +0 -1
  431. package/dist/core/coverage-checker.js +0 -176
  432. package/dist/core/coverage-checker.js.map +0 -1
  433. package/dist/core/cursor-mdc-generator.d.ts +0 -30
  434. package/dist/core/cursor-mdc-generator.d.ts.map +0 -1
  435. package/dist/core/cursor-mdc-generator.js +0 -98
  436. package/dist/core/cursor-mdc-generator.js.map +0 -1
  437. package/dist/core/decision-manager.d.ts +0 -25
  438. package/dist/core/decision-manager.d.ts.map +0 -1
  439. package/dist/core/decision-manager.js +0 -183
  440. package/dist/core/decision-manager.js.map +0 -1
  441. package/dist/core/dependency-checker.d.ts +0 -21
  442. package/dist/core/dependency-checker.d.ts.map +0 -1
  443. package/dist/core/dependency-checker.js +0 -247
  444. package/dist/core/dependency-checker.js.map +0 -1
  445. package/dist/core/detector.d.ts +0 -27
  446. package/dist/core/detector.d.ts.map +0 -1
  447. package/dist/core/detector.js +0 -1763
  448. package/dist/core/detector.js.map +0 -1
  449. package/dist/core/docs-generator.d.ts +0 -9
  450. package/dist/core/docs-generator.d.ts.map +0 -1
  451. package/dist/core/docs-generator.js +0 -531
  452. package/dist/core/docs-generator.js.map +0 -1
  453. package/dist/core/doctor.d.ts +0 -19
  454. package/dist/core/doctor.d.ts.map +0 -1
  455. package/dist/core/doctor.js +0 -229
  456. package/dist/core/doctor.js.map +0 -1
  457. package/dist/core/generator.d.ts +0 -56
  458. package/dist/core/generator.d.ts.map +0 -1
  459. package/dist/core/generator.js +0 -1193
  460. package/dist/core/generator.js.map +0 -1
  461. package/dist/core/github-issues-importer.d.ts +0 -82
  462. package/dist/core/github-issues-importer.d.ts.map +0 -1
  463. package/dist/core/github-issues-importer.js +0 -161
  464. package/dist/core/github-issues-importer.js.map +0 -1
  465. package/dist/core/gitignore-generator.d.ts +0 -13
  466. package/dist/core/gitignore-generator.d.ts.map +0 -1
  467. package/dist/core/gitignore-generator.js +0 -307
  468. package/dist/core/gitignore-generator.js.map +0 -1
  469. package/dist/core/health-scorer.d.ts +0 -61
  470. package/dist/core/health-scorer.d.ts.map +0 -1
  471. package/dist/core/health-scorer.js +0 -638
  472. package/dist/core/health-scorer.js.map +0 -1
  473. package/dist/core/iteration-tracker.d.ts +0 -85
  474. package/dist/core/iteration-tracker.d.ts.map +0 -1
  475. package/dist/core/iteration-tracker.js +0 -295
  476. package/dist/core/iteration-tracker.js.map +0 -1
  477. package/dist/core/knowledge-manager.d.ts +0 -24
  478. package/dist/core/knowledge-manager.d.ts.map +0 -1
  479. package/dist/core/knowledge-manager.js +0 -173
  480. package/dist/core/knowledge-manager.js.map +0 -1
  481. package/dist/core/learn-manager.d.ts +0 -29
  482. package/dist/core/learn-manager.d.ts.map +0 -1
  483. package/dist/core/learn-manager.js +0 -159
  484. package/dist/core/learn-manager.js.map +0 -1
  485. package/dist/core/mcp-reference-generator.d.ts +0 -13
  486. package/dist/core/mcp-reference-generator.d.ts.map +0 -1
  487. package/dist/core/mcp-reference-generator.js +0 -66
  488. package/dist/core/mcp-reference-generator.js.map +0 -1
  489. package/dist/core/minimal-scaffolder.d.ts +0 -8
  490. package/dist/core/minimal-scaffolder.d.ts.map +0 -1
  491. package/dist/core/minimal-scaffolder.js +0 -51
  492. package/dist/core/minimal-scaffolder.js.map +0 -1
  493. package/dist/core/modern-console.d.ts +0 -98
  494. package/dist/core/modern-console.d.ts.map +0 -1
  495. package/dist/core/modern-console.js +0 -556
  496. package/dist/core/modern-console.js.map +0 -1
  497. package/dist/core/multi-tool-generator.d.ts +0 -59
  498. package/dist/core/multi-tool-generator.d.ts.map +0 -1
  499. package/dist/core/multi-tool-generator.js +0 -157
  500. package/dist/core/multi-tool-generator.js.map +0 -1
  501. package/dist/core/override-manager.d.ts +0 -23
  502. package/dist/core/override-manager.d.ts.map +0 -1
  503. package/dist/core/override-manager.js +0 -82
  504. package/dist/core/override-manager.js.map +0 -1
  505. package/dist/core/plans-manager.d.ts +0 -46
  506. package/dist/core/plans-manager.d.ts.map +0 -1
  507. package/dist/core/plans-manager.js +0 -158
  508. package/dist/core/plans-manager.js.map +0 -1
  509. package/dist/core/prd-generator.d.ts +0 -48
  510. package/dist/core/prd-generator.d.ts.map +0 -1
  511. package/dist/core/prd-generator.js +0 -233
  512. package/dist/core/prd-generator.js.map +0 -1
  513. package/dist/core/ralph-manager.d.ts +0 -163
  514. package/dist/core/ralph-manager.d.ts.map +0 -1
  515. package/dist/core/ralph-manager.js +0 -555
  516. package/dist/core/ralph-manager.js.map +0 -1
  517. package/dist/core/ralph-parallel.d.ts +0 -55
  518. package/dist/core/ralph-parallel.d.ts.map +0 -1
  519. package/dist/core/ralph-parallel.js +0 -201
  520. package/dist/core/ralph-parallel.js.map +0 -1
  521. package/dist/core/ralph-plan-checkpoint.d.ts +0 -58
  522. package/dist/core/ralph-plan-checkpoint.d.ts.map +0 -1
  523. package/dist/core/ralph-plan-checkpoint.js +0 -154
  524. package/dist/core/ralph-plan-checkpoint.js.map +0 -1
  525. package/dist/core/ralph-scripts.d.ts +0 -12
  526. package/dist/core/ralph-scripts.d.ts.map +0 -1
  527. package/dist/core/ralph-scripts.js +0 -50
  528. package/dist/core/ralph-scripts.js.map +0 -1
  529. package/dist/core/review-manager.d.ts +0 -74
  530. package/dist/core/review-manager.d.ts.map +0 -1
  531. package/dist/core/review-manager.js +0 -371
  532. package/dist/core/review-manager.js.map +0 -1
  533. package/dist/core/rules-generator.d.ts +0 -73
  534. package/dist/core/rules-generator.d.ts.map +0 -1
  535. package/dist/core/rules-generator.js +0 -202
  536. package/dist/core/rules-generator.js.map +0 -1
  537. package/dist/core/skills-manager.d.ts +0 -126
  538. package/dist/core/skills-manager.d.ts.map +0 -1
  539. package/dist/core/skills-manager.js +0 -654
  540. package/dist/core/skills-manager.js.map +0 -1
  541. package/dist/core/state-writer.d.ts +0 -35
  542. package/dist/core/state-writer.d.ts.map +0 -1
  543. package/dist/core/state-writer.js +0 -81
  544. package/dist/core/state-writer.js.map +0 -1
  545. package/dist/core/task-manager.d.ts +0 -127
  546. package/dist/core/task-manager.d.ts.map +0 -1
  547. package/dist/core/task-manager.js +0 -607
  548. package/dist/core/task-manager.js.map +0 -1
  549. package/dist/core/telemetry.d.ts +0 -29
  550. package/dist/core/telemetry.d.ts.map +0 -1
  551. package/dist/core/telemetry.js +0 -57
  552. package/dist/core/telemetry.js.map +0 -1
  553. package/dist/core/validator.d.ts +0 -21
  554. package/dist/core/validator.d.ts.map +0 -1
  555. package/dist/core/validator.js +0 -177
  556. package/dist/core/validator.js.map +0 -1
  557. package/dist/core/version-bumper.d.ts +0 -19
  558. package/dist/core/version-bumper.d.ts.map +0 -1
  559. package/dist/core/version-bumper.js +0 -180
  560. package/dist/core/version-bumper.js.map +0 -1
  561. package/dist/core/watcher.d.ts +0 -9
  562. package/dist/core/watcher.d.ts.map +0 -1
  563. package/dist/core/watcher.js +0 -22
  564. package/dist/core/watcher.js.map +0 -1
  565. package/dist/core/workflow-generator.d.ts +0 -15
  566. package/dist/core/workflow-generator.d.ts.map +0 -1
  567. package/dist/core/workflow-generator.js +0 -391
  568. package/dist/core/workflow-generator.js.map +0 -1
  569. package/dist/hooks/terse-activate.d.ts +0 -59
  570. package/dist/hooks/terse-activate.d.ts.map +0 -1
  571. package/dist/hooks/terse-activate.js +0 -149
  572. package/dist/hooks/terse-activate.js.map +0 -1
  573. package/dist/hooks/terse-config.d.ts +0 -51
  574. package/dist/hooks/terse-config.d.ts.map +0 -1
  575. package/dist/hooks/terse-config.js +0 -130
  576. package/dist/hooks/terse-config.js.map +0 -1
  577. package/dist/hooks/terse-mode-tracker.d.ts +0 -78
  578. package/dist/hooks/terse-mode-tracker.d.ts.map +0 -1
  579. package/dist/hooks/terse-mode-tracker.js +0 -213
  580. package/dist/hooks/terse-mode-tracker.js.map +0 -1
  581. package/dist/memory/hnsw-index.d.ts +0 -68
  582. package/dist/memory/hnsw-index.d.ts.map +0 -1
  583. package/dist/memory/hnsw-index.js +0 -544
  584. package/dist/memory/hnsw-index.js.map +0 -1
  585. package/dist/memory/memory-cache.d.ts +0 -33
  586. package/dist/memory/memory-cache.d.ts.map +0 -1
  587. package/dist/memory/memory-cache.js +0 -85
  588. package/dist/memory/memory-cache.js.map +0 -1
  589. package/dist/memory/memory-search.d.ts +0 -42
  590. package/dist/memory/memory-search.d.ts.map +0 -1
  591. package/dist/memory/memory-search.js +0 -180
  592. package/dist/memory/memory-search.js.map +0 -1
  593. package/dist/memory/memory-store.d.ts +0 -84
  594. package/dist/memory/memory-store.d.ts.map +0 -1
  595. package/dist/memory/memory-store.js +0 -566
  596. package/dist/memory/memory-store.js.map +0 -1
  597. package/dist/memory/memory-vectorizer.d.ts +0 -29
  598. package/dist/memory/memory-vectorizer.d.ts.map +0 -1
  599. package/dist/memory/memory-vectorizer.js +0 -199
  600. package/dist/memory/memory-vectorizer.js.map +0 -1
@@ -1,73 +1,73 @@
1
- ---
2
- name: "Vectorizer"
3
- description: "Use MCP Vectorizer as primary data source for project information instead of file reading."
4
- version: "1.0.0"
5
- category: "modules"
6
- author: "Rulebook"
7
- tags: ["modules", "mcp"]
8
- dependencies: []
9
- conflicts: []
10
- ---
11
- <!-- VECTORIZER:START -->
12
- # Vectorizer Instructions
13
-
14
- **CRITICAL**: Use MCP Vectorizer as primary data source for project information instead of file reading.
15
-
16
- ## Core Functions
17
-
18
- ### Search
19
- ```
20
- mcp_vectorizer_search - Multiple strategies:
21
- - intelligent: AI-powered with query expansion
22
- - semantic: Advanced with reranking
23
- - contextual: Context-aware with filtering
24
- - multi_collection: Cross-project search
25
- - batch: Parallel queries
26
- - by_file_type: Filter by extension (.rs, .ts, .py)
27
- ```
28
-
29
- ### File Operations
30
- ```
31
- get_content - Retrieve file without disk I/O
32
- list_files - List indexed files with metadata
33
- get_summary - File summaries (extractive/structural)
34
- get_chunks - Progressive reading of large files
35
- get_outline - Project structure overview
36
- get_related - Find semantically related files
37
- ```
38
-
39
- ### Discovery
40
- ```
41
- full_pipeline - Complete discovery with scoring
42
- broad_discovery - Multi-query with deduplication
43
- semantic_focus - Deep semantic search
44
- expand_queries - Generate query variations
45
- ```
46
-
47
- ## When to Use
48
-
49
- | Task | Tool |
50
- |------|------|
51
- | Explore unfamiliar code | intelligent search |
52
- | Read file | get_content |
53
- | Understand structure | get_outline |
54
- | Find related files | get_related |
55
- | Read large file | get_chunks |
56
- | Complex question | full_pipeline |
57
-
58
- ## Best Practices
59
-
60
- ✅ **DO:**
61
- - Start with intelligent search for exploration
62
- - Use file_operations to avoid disk I/O
63
- - Batch queries for related items
64
- - Set similarity thresholds (0.6-0.8)
65
- - Use specific collections when known
66
-
67
- ❌ **DON'T:**
68
- - Read files from disk when available in vectorizer
69
- - Use sequential searches (batch instead)
70
- - Skip similarity thresholds
71
- - Search entire codebase when collection is known
72
-
73
- <!-- VECTORIZER:END -->
1
+ ---
2
+ name: "Vectorizer"
3
+ description: "Use MCP Vectorizer as primary data source for project information instead of file reading."
4
+ version: "1.0.0"
5
+ category: "modules"
6
+ author: "Rulebook"
7
+ tags: ["modules", "mcp"]
8
+ dependencies: []
9
+ conflicts: []
10
+ ---
11
+ <!-- VECTORIZER:START -->
12
+ # Vectorizer Instructions
13
+
14
+ **CRITICAL**: Use MCP Vectorizer as primary data source for project information instead of file reading.
15
+
16
+ ## Core Functions
17
+
18
+ ### Search
19
+ ```
20
+ mcp_vectorizer_search - Multiple strategies:
21
+ - intelligent: AI-powered with query expansion
22
+ - semantic: Advanced with reranking
23
+ - contextual: Context-aware with filtering
24
+ - multi_collection: Cross-project search
25
+ - batch: Parallel queries
26
+ - by_file_type: Filter by extension (.rs, .ts, .py)
27
+ ```
28
+
29
+ ### File Operations
30
+ ```
31
+ get_content - Retrieve file without disk I/O
32
+ list_files - List indexed files with metadata
33
+ get_summary - File summaries (extractive/structural)
34
+ get_chunks - Progressive reading of large files
35
+ get_outline - Project structure overview
36
+ get_related - Find semantically related files
37
+ ```
38
+
39
+ ### Discovery
40
+ ```
41
+ full_pipeline - Complete discovery with scoring
42
+ broad_discovery - Multi-query with deduplication
43
+ semantic_focus - Deep semantic search
44
+ expand_queries - Generate query variations
45
+ ```
46
+
47
+ ## When to Use
48
+
49
+ | Task | Tool |
50
+ |------|------|
51
+ | Explore unfamiliar code | intelligent search |
52
+ | Read file | get_content |
53
+ | Understand structure | get_outline |
54
+ | Find related files | get_related |
55
+ | Read large file | get_chunks |
56
+ | Complex question | full_pipeline |
57
+
58
+ ## Best Practices
59
+
60
+ ✅ **DO:**
61
+ - Start with intelligent search for exploration
62
+ - Use file_operations to avoid disk I/O
63
+ - Batch queries for related items
64
+ - Set similarity thresholds (0.6-0.8)
65
+ - Use specific collections when known
66
+
67
+ ❌ **DON'T:**
68
+ - Read files from disk when available in vectorizer
69
+ - Use sequential searches (batch instead)
70
+ - Skip similarity thresholds
71
+ - Search entire codebase when collection is known
72
+
73
+ <!-- VECTORIZER:END -->
@@ -60,10 +60,16 @@ jobs:
60
60
  flags: unittests
61
61
  fail_ci_if_error: false
62
62
 
63
- - name: Security audit
63
+ - name: Security audit (blocking on high/critical)
64
+ # Fails the build on high or critical production vulnerabilities.
65
+ # Runs only once (ubuntu/20.x) to avoid duplicate failures across the matrix.
66
+ if: matrix.os == 'ubuntu-latest' && matrix.node-version == '20.x'
67
+ run: |
68
+ echo "Running security audit (production, high+)..."
69
+ npm audit --production --audit-level=high
70
+
71
+ - name: Dependency hygiene (informational)
64
72
  run: |
65
- echo "Running security audit..."
66
- npm audit --production --audit-level=moderate || true
67
73
  echo "Checking for outdated dependencies..."
68
74
  npm outdated || true
69
75
 
@@ -1,91 +0,0 @@
1
- import { IterationResult } from '../types.js';
2
- /**
3
- * Parses AI agent output to extract task completion status,
4
- * quality metrics, and learnings for Ralph iteration tracking
5
- */
6
- export declare class RalphParser {
7
- /**
8
- * Parse agent output and extract iteration result
9
- */
10
- static parseAgentOutput(agentOutput: string, iterationNum: number, taskId: string, taskTitle: string, tool: 'claude' | 'amp' | 'gemini'): IterationResult;
11
- /**
12
- * Extract quality check results from agent output.
13
- * Uses structured count-based detection to avoid false positives.
14
- * "0 errors" / "no errors" are treated as success, not failure.
15
- * Note: In MCP ralph_run, real quality gates are determined by actual command exit codes,
16
- * not this parser. This is a best-effort extraction for standalone parsing.
17
- */
18
- private static extractQualityChecks;
19
- /**
20
- * Parse lint error count from ESLint output.
21
- * Returns 0 if no error count found (treat as passing).
22
- */
23
- private static parseLintErrorCount;
24
- /**
25
- * Parse test failure count from vitest/jest output.
26
- * Returns 0 if no failure count found (treat as passing).
27
- */
28
- private static parseTestFailCount;
29
- /**
30
- * Parse real coverage percentage from test runner output.
31
- * Supports vitest table format and jest/c8 line format.
32
- * Returns null if coverage cannot be determined.
33
- */
34
- static parseCoveragePercentage(output: string): number | null;
35
- /**
36
- * Helper: Check if a single line contains percentage >= threshold
37
- */
38
- private static lineHasPercentageAbove;
39
- /**
40
- * Determine overall iteration status
41
- */
42
- private static determineStatus;
43
- /**
44
- * Extract learnings and insights from output
45
- */
46
- private static extractLearnings;
47
- /**
48
- * Extract errors from output
49
- */
50
- private static extractErrors;
51
- /**
52
- * Extract git commit hash from output
53
- */
54
- private static extractGitCommit;
55
- /**
56
- * Generate summary from agent output
57
- */
58
- private static generateSummary;
59
- /**
60
- * Count context loss events in output
61
- */
62
- private static countContextLoss;
63
- /**
64
- * Check if iteration completion is detected
65
- */
66
- private static isCompletionDetected;
67
- /**
68
- * Parse `npm audit --json` output.
69
- * Returns the highest severity found: 'critical' | 'high' | 'moderate' | 'low' | 'none'
70
- */
71
- static parseNpmAuditSeverity(jsonOutput: string): 'critical' | 'high' | 'moderate' | 'low' | 'none';
72
- /**
73
- * Parse text-based security tool output (trivy, semgrep, or npm audit without --json).
74
- * Returns the highest severity found: 'critical' | 'high' | 'moderate' | 'low' | 'none'
75
- */
76
- static parseSecurityOutputText(output: string): 'critical' | 'high' | 'moderate' | 'low' | 'none';
77
- /**
78
- * Parse trivy JSON output (`trivy fs --format json`) for the highest severity found.
79
- */
80
- static parseTrivySeverity(jsonOutput: string): 'critical' | 'high' | 'moderate' | 'low' | 'none';
81
- /**
82
- * Parse semgrep JSON output (`semgrep --json`) for the highest severity found.
83
- */
84
- static parseSemgrepSeverity(jsonOutput: string): 'critical' | 'high' | 'moderate' | 'low' | 'none';
85
- /**
86
- * Determine if a security gate passes given the found severity and the configured failOn threshold.
87
- * Severity order: none < low < moderate < high < critical
88
- */
89
- static securityGatePasses(foundSeverity: 'critical' | 'high' | 'moderate' | 'low' | 'none', failOn: 'critical' | 'high' | 'moderate' | 'low'): boolean;
90
- }
91
- //# sourceMappingURL=ralph-parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ralph-parser.d.ts","sourceRoot":"","sources":["../../src/agents/ralph-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CACrB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAChC,eAAe;IA4ClB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA2EnC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAgBlC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAgBjC;;;;OAIG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA4B7D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAYrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAwB9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IA4B/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IA4B5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAa/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAiB9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAenC;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAC1B,UAAU,EAAE,MAAM,GACjB,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM;IAoBpD;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAC5B,MAAM,EAAE,MAAM,GACb,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM;IASpD;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM;IAoBhG;;OAEG;IACH,MAAM,CAAC,oBAAoB,CACzB,UAAU,EAAE,MAAM,GACjB,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM;IAyBpD;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CACvB,aAAa,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,EAChE,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAC/C,OAAO;CAMX"}
@@ -1,415 +0,0 @@
1
- /**
2
- * Parses AI agent output to extract task completion status,
3
- * quality metrics, and learnings for Ralph iteration tracking
4
- */
5
- export class RalphParser {
6
- /**
7
- * Parse agent output and extract iteration result
8
- */
9
- static parseAgentOutput(agentOutput, iterationNum, taskId, taskTitle, tool) {
10
- const startTime = Date.now();
11
- // Extract quality check results
12
- const qualityChecks = this.extractQualityChecks(agentOutput);
13
- // Determine success/partial/failed status
14
- const status = this.determineStatus(qualityChecks);
15
- // Extract learnings and errors
16
- const learnings = this.extractLearnings(agentOutput);
17
- const errors = this.extractErrors(agentOutput);
18
- // Extract git commit hash if present
19
- const gitCommit = this.extractGitCommit(agentOutput);
20
- // Generate summary from output
21
- const summary = this.generateSummary(agentOutput, status);
22
- // Calculate execution time (placeholder - would be from actual execution)
23
- const executionTime = Date.now() - startTime;
24
- const result = {
25
- iteration: iterationNum,
26
- timestamp: new Date().toISOString(),
27
- task_id: taskId,
28
- task_title: taskTitle,
29
- status,
30
- ai_tool: tool,
31
- execution_time_ms: executionTime,
32
- quality_checks: qualityChecks,
33
- output_summary: summary,
34
- git_commit: gitCommit,
35
- learnings,
36
- errors,
37
- metadata: {
38
- context_loss_count: this.countContextLoss(agentOutput),
39
- parsed_completion: this.isCompletionDetected(agentOutput),
40
- },
41
- };
42
- return result;
43
- }
44
- /**
45
- * Extract quality check results from agent output.
46
- * Uses structured count-based detection to avoid false positives.
47
- * "0 errors" / "no errors" are treated as success, not failure.
48
- * Note: In MCP ralph_run, real quality gates are determined by actual command exit codes,
49
- * not this parser. This is a best-effort extraction for standalone parsing.
50
- */
51
- static extractQualityChecks(output) {
52
- const lines = output.split('\n').map((l) => l.toLowerCase().trim());
53
- // Type-check: pass if no TypeScript error codes (error TS\d+) found
54
- const tsErrorCount = (output.match(/error TS\d+/gi) ?? []).length;
55
- const typeCheckExplicitPass = lines.some((l) => (l.includes('type-check') || l.includes('tsc')) &&
56
- (l.includes('pass') || l.includes('success') || l.includes('✓')) &&
57
- !l.includes('fail'));
58
- const typeCheckPass = typeCheckExplicitPass || tsErrorCount === 0;
59
- // Lint: parse "X problems (Y errors, Z warnings)" — fail only if errors > 0
60
- // Also pass on "0 problems", "0 errors", "no problems", explicit pass
61
- const lintErrorCount = this.parseLintErrorCount(lines);
62
- const lintExplicitPass = lines.some((l) => (l.includes('eslint') || l.includes('lint')) &&
63
- (l.includes('pass') ||
64
- l.includes('success') ||
65
- l.includes('✓') ||
66
- l.includes('0 problems') ||
67
- l.includes('no problems')));
68
- const lintExplicitFail = lines.some((l) => (l.includes('eslint') || l.includes('lint')) && l.includes('fail'));
69
- const lintPass = lintExplicitFail ? false : lintExplicitPass || lintErrorCount === 0;
70
- // Tests: parse "X failed" — fail only if count > 0
71
- // "0 errors", "passing", "✓ X tests" are all success
72
- const testFailCount = this.parseTestFailCount(lines);
73
- const testExplicitPass = lines.some((l) => (l.includes('test') || l.includes('vitest') || l.includes('jest')) &&
74
- (l.includes('pass') ||
75
- l.includes('passed') ||
76
- l.includes('✓') ||
77
- l.includes('success') ||
78
- l.includes('0 errors') ||
79
- l.includes('no errors') ||
80
- l.includes('0 failed')));
81
- const testExplicitFail = lines.some((l) => (l.includes('test') || l.includes('vitest') || l.includes('jest')) &&
82
- l.includes('fail') &&
83
- !l.includes('0 fail'));
84
- const testsPass = testExplicitFail ? false : testExplicitPass || testFailCount === 0;
85
- // Coverage: parse actual percentage or explicit pass/fail
86
- const covPct = this.parseCoveragePercentage(output);
87
- const coveragePass = (covPct !== null && covPct >= 95) ||
88
- lines.some((l) => l.includes('coverage') && this.lineHasPercentageAbove(l, 95)) ||
89
- lines.some((l) => l.includes('coverage') && (l.includes('pass') || l.includes('met') || l.includes('✓')));
90
- return {
91
- type_check: typeCheckPass,
92
- lint: lintPass,
93
- tests: testsPass,
94
- coverage_met: coveragePass,
95
- };
96
- }
97
- /**
98
- * Parse lint error count from ESLint output.
99
- * Returns 0 if no error count found (treat as passing).
100
- */
101
- static parseLintErrorCount(lines) {
102
- for (const line of lines) {
103
- // "X problems (Y errors, Z warnings)"
104
- const problemsMatch = line.match(/(\d+)\s+problems?\s+\((\d+)\s+errors?/);
105
- if (problemsMatch) {
106
- return parseInt(problemsMatch[2], 10);
107
- }
108
- // "X error" standalone
109
- const errorCountMatch = line.match(/^(\d+)\s+errors?$/);
110
- if (errorCountMatch) {
111
- return parseInt(errorCountMatch[1], 10);
112
- }
113
- }
114
- return 0;
115
- }
116
- /**
117
- * Parse test failure count from vitest/jest output.
118
- * Returns 0 if no failure count found (treat as passing).
119
- */
120
- static parseTestFailCount(lines) {
121
- for (const line of lines) {
122
- // "X failed" — vitest/jest
123
- const failMatch = line.match(/(\d+)\s+failed/);
124
- if (failMatch) {
125
- return parseInt(failMatch[1], 10);
126
- }
127
- // "Tests: X failed" — jest summary
128
- const jestMatch = line.match(/tests:\s+(\d+)\s+failed/);
129
- if (jestMatch) {
130
- return parseInt(jestMatch[1], 10);
131
- }
132
- }
133
- return 0;
134
- }
135
- /**
136
- * Parse real coverage percentage from test runner output.
137
- * Supports vitest table format and jest/c8 line format.
138
- * Returns null if coverage cannot be determined.
139
- */
140
- static parseCoveragePercentage(output) {
141
- // vitest/istanbul table: "All files | 87.50 | ..." or "All files | 87.50 |"
142
- const vitestMatch = output.match(/all files\s*\|\s*(\d+(?:\.\d+)?)\s*\|/i);
143
- if (vitestMatch) {
144
- return parseFloat(vitestMatch[1]);
145
- }
146
- // jest: "Lines : 87.5%" or "Lines : 87.5 %"
147
- const jestLinesMatch = output.match(/lines\s*:\s*(\d+(?:\.\d+)?)\s*%/i);
148
- if (jestLinesMatch) {
149
- return parseFloat(jestLinesMatch[1]);
150
- }
151
- // c8/nyc: "% Lines | 87.5"
152
- const c8Match = output.match(/%\s*lines\s*\|\s*(\d+(?:\.\d+)?)/i);
153
- if (c8Match) {
154
- return parseFloat(c8Match[1]);
155
- }
156
- // Generic: "coverage: 87%" or "coverage 87.5%"
157
- const genericMatch = output.match(/coverage[:\s]+(\d+(?:\.\d+)?)%/i);
158
- if (genericMatch) {
159
- return parseFloat(genericMatch[1]);
160
- }
161
- return null;
162
- }
163
- /**
164
- * Helper: Check if a single line contains percentage >= threshold
165
- */
166
- static lineHasPercentageAbove(line, threshold) {
167
- // eslint-disable-next-line no-useless-escape
168
- const percentMatches = line.match(/(\d+(?:\.\d+)?)%/g);
169
- if (!percentMatches) {
170
- return false;
171
- }
172
- return percentMatches.some((match) => {
173
- const percent = parseFloat(match);
174
- return percent >= threshold;
175
- });
176
- }
177
- /**
178
- * Determine overall iteration status
179
- */
180
- static determineStatus(qualityChecks) {
181
- const allPass = qualityChecks.type_check &&
182
- qualityChecks.lint &&
183
- qualityChecks.tests &&
184
- qualityChecks.coverage_met;
185
- if (allPass) {
186
- return 'success';
187
- }
188
- const passCount = Object.values(qualityChecks).filter(Boolean).length;
189
- if (passCount >= 2) {
190
- return 'partial';
191
- }
192
- return 'failed';
193
- }
194
- /**
195
- * Extract learnings and insights from output
196
- */
197
- static extractLearnings(output) {
198
- const learnings = [];
199
- // Look for key learnings markers
200
- const learningsMatch = output.match(/(?:learning|insight|pattern|note)[\s:]*([^\n]+)/gi);
201
- if (learningsMatch) {
202
- learningsMatch.forEach((match) => {
203
- const cleaned = match.replace(/^(?:learning|insight|pattern|note)[\s:]*/i, '').trim();
204
- if (cleaned.length > 10 && cleaned.length < 500) {
205
- learnings.push(cleaned);
206
- }
207
- });
208
- }
209
- // Extract from code comments about discoveries
210
- const discoveryMatch = output.match(/(?:discovered|found|realized)[\s:]*([^\n]+)/gi);
211
- if (discoveryMatch) {
212
- discoveryMatch.forEach((match) => {
213
- const cleaned = match.replace(/^(?:discovered|found|realized)[\s:]*/i, '').trim();
214
- if (cleaned.length > 10 && cleaned.length < 500) {
215
- learnings.push(cleaned);
216
- }
217
- });
218
- }
219
- return learnings.slice(0, 5); // Limit to 5 learnings
220
- }
221
- /**
222
- * Extract errors from output
223
- */
224
- static extractErrors(output) {
225
- const errors = [];
226
- // Look for error patterns
227
- const errorMatch = output.match(/(?:error|failed|fail)[\s:]*([^\n]+)/gi);
228
- if (errorMatch) {
229
- errorMatch.forEach((match) => {
230
- const cleaned = match.replace(/^(?:error|failed|fail)[\s:]*/i, '').trim();
231
- if (cleaned.length > 5 && cleaned.length < 300) {
232
- errors.push(cleaned);
233
- }
234
- });
235
- }
236
- // Look for stack traces or error codes
237
- const stackMatch = output.match(/(?:Error|Exception)[\s:]*([^\n]+)/g);
238
- if (stackMatch) {
239
- stackMatch.forEach((match) => {
240
- const cleaned = match.trim();
241
- if (cleaned.length > 5 && !errors.includes(cleaned)) {
242
- errors.push(cleaned);
243
- }
244
- });
245
- }
246
- return errors.slice(0, 3); // Limit to 3 errors
247
- }
248
- /**
249
- * Extract git commit hash from output
250
- */
251
- static extractGitCommit(output) {
252
- // Look for commit hashes (40 hex chars or short 7-char format)
253
- const commitMatch = output.match(/\b[a-f0-9]{7,40}\b/);
254
- if (commitMatch) {
255
- const hash = commitMatch[0];
256
- // Verify it looks like a commit hash (after 'commit' keyword)
257
- if (output.toLowerCase().includes('commit') && output.includes(hash)) {
258
- return hash;
259
- }
260
- }
261
- return undefined;
262
- }
263
- /**
264
- * Generate summary from agent output
265
- */
266
- static generateSummary(output, status) {
267
- // Get first 300 chars of meaningful content
268
- const lines = output
269
- .split('\n')
270
- .filter((l) => l.trim().length > 20)
271
- .slice(0, 3);
272
- let summary = lines.join(' ').substring(0, 300);
273
- // Add status if not already present
274
- if (!summary.toLowerCase().includes(status)) {
275
- summary = `[${status.toUpperCase()}] ${summary}`;
276
- }
277
- return summary;
278
- }
279
- /**
280
- * Count context loss events in output
281
- */
282
- static countContextLoss(output) {
283
- const contextLossPatterns = [
284
- /context.*loss/gi,
285
- /context.*window/gi,
286
- /ran out of.*context/gi,
287
- /context.*exceeded/gi,
288
- ];
289
- let count = 0;
290
- for (const pattern of contextLossPatterns) {
291
- const matches = output.match(pattern) || [];
292
- count += matches.length;
293
- }
294
- return Math.min(count, 10); // Cap at 10
295
- }
296
- /**
297
- * Check if iteration completion is detected
298
- */
299
- static isCompletionDetected(output) {
300
- const completionKeywords = [
301
- 'complete',
302
- 'done',
303
- 'finished',
304
- 'success',
305
- 'implemented',
306
- 'deployed',
307
- 'committed',
308
- ];
309
- const lowerOutput = output.toLowerCase();
310
- return completionKeywords.some((kw) => lowerOutput.includes(kw));
311
- }
312
- /**
313
- * Parse `npm audit --json` output.
314
- * Returns the highest severity found: 'critical' | 'high' | 'moderate' | 'low' | 'none'
315
- */
316
- static parseNpmAuditSeverity(jsonOutput) {
317
- try {
318
- const parsed = JSON.parse(jsonOutput);
319
- const v = parsed?.metadata?.vulnerabilities;
320
- if (!v)
321
- return 'none';
322
- if ((v.critical ?? 0) > 0)
323
- return 'critical';
324
- if ((v.high ?? 0) > 0)
325
- return 'high';
326
- if ((v.moderate ?? 0) > 0)
327
- return 'moderate';
328
- if ((v.low ?? 0) > 0)
329
- return 'low';
330
- return 'none';
331
- }
332
- catch {
333
- // Not valid JSON — try text-based fallback
334
- return this.parseSecurityOutputText(jsonOutput);
335
- }
336
- }
337
- /**
338
- * Parse text-based security tool output (trivy, semgrep, or npm audit without --json).
339
- * Returns the highest severity found: 'critical' | 'high' | 'moderate' | 'low' | 'none'
340
- */
341
- static parseSecurityOutputText(output) {
342
- const lower = output.toLowerCase();
343
- if (lower.includes('critical'))
344
- return 'critical';
345
- if (lower.includes(' high'))
346
- return 'high';
347
- if (lower.includes('moderate'))
348
- return 'moderate';
349
- if (lower.includes(' low'))
350
- return 'low';
351
- return 'none';
352
- }
353
- /**
354
- * Parse trivy JSON output (`trivy fs --format json`) for the highest severity found.
355
- */
356
- static parseTrivySeverity(jsonOutput) {
357
- try {
358
- const parsed = JSON.parse(jsonOutput);
359
- const severities = (parsed.Results ?? [])
360
- .flatMap((r) => r.Vulnerabilities ?? [])
361
- .map((v) => (v.Severity ?? '').toLowerCase());
362
- if (severities.includes('critical'))
363
- return 'critical';
364
- if (severities.includes('high'))
365
- return 'high';
366
- if (severities.includes('medium'))
367
- return 'moderate'; // trivy uses MEDIUM
368
- if (severities.includes('moderate'))
369
- return 'moderate';
370
- if (severities.includes('low'))
371
- return 'low';
372
- return 'none';
373
- }
374
- catch {
375
- return this.parseSecurityOutputText(jsonOutput);
376
- }
377
- }
378
- /**
379
- * Parse semgrep JSON output (`semgrep --json`) for the highest severity found.
380
- */
381
- static parseSemgrepSeverity(jsonOutput) {
382
- try {
383
- const parsed = JSON.parse(jsonOutput);
384
- const severities = (parsed.results ?? []).map((r) => {
385
- const sev = (r.extra?.severity ?? r.extra?.metadata?.severity ?? '').toLowerCase();
386
- return sev;
387
- });
388
- if (severities.includes('critical') || severities.includes('error'))
389
- return 'high'; // semgrep ERROR ≈ high
390
- if (severities.includes('high'))
391
- return 'high';
392
- if (severities.includes('warning') ||
393
- severities.includes('medium') ||
394
- severities.includes('moderate'))
395
- return 'moderate';
396
- if (severities.includes('info') || severities.includes('low'))
397
- return 'low';
398
- return severities.length > 0 ? 'low' : 'none';
399
- }
400
- catch {
401
- return this.parseSecurityOutputText(jsonOutput);
402
- }
403
- }
404
- /**
405
- * Determine if a security gate passes given the found severity and the configured failOn threshold.
406
- * Severity order: none < low < moderate < high < critical
407
- */
408
- static securityGatePasses(foundSeverity, failOn) {
409
- const order = ['none', 'low', 'moderate', 'high', 'critical'];
410
- const foundIdx = order.indexOf(foundSeverity);
411
- const failIdx = order.indexOf(failOn);
412
- return foundIdx < failIdx;
413
- }
414
- }
415
- //# sourceMappingURL=ralph-parser.js.map