@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.
- package/.claude/commands/analysis.md +35 -35
- package/.claude/commands/continue.md +33 -33
- package/.claude/commands/rulebook-decision-create.md +55 -55
- package/.claude/commands/rulebook-decision-list.md +15 -15
- package/.claude/commands/rulebook-knowledge-add.md +41 -41
- package/.claude/commands/rulebook-knowledge-list.md +15 -15
- package/.claude/commands/rulebook-learn-capture.md +41 -48
- package/.claude/commands/rulebook-learn-list.md +13 -13
- package/.claude/commands/rulebook-memory-save.md +48 -48
- package/.claude/commands/rulebook-memory-search.md +47 -47
- package/.claude/commands/rulebook-task-apply.md +67 -67
- package/.claude/commands/rulebook-task-archive.md +94 -94
- package/.claude/commands/rulebook-task-create.md +93 -93
- package/.claude/commands/rulebook-task-list.md +42 -42
- package/.claude/commands/rulebook-task-show.md +52 -52
- package/.claude/commands/rulebook-task-validate.md +53 -53
- package/.claude-plugin/marketplace.json +28 -28
- package/.claude-plugin/plugin.json +8 -8
- package/README.md +418 -394
- package/dist/cli/commands/claude.d.ts +17 -0
- package/dist/cli/commands/claude.d.ts.map +1 -0
- package/dist/cli/commands/claude.js +56 -0
- package/dist/cli/commands/claude.js.map +1 -0
- package/dist/cli/commands/context-intelligence.d.ts +0 -1
- package/dist/cli/commands/context-intelligence.d.ts.map +1 -1
- package/dist/cli/commands/context-intelligence.js +12 -33
- package/dist/cli/commands/context-intelligence.js.map +1 -1
- package/dist/cli/commands/index.d.ts +4 -7
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +4 -7
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +58 -83
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +0 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +1 -7
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/memory.d.ts +7 -1
- package/dist/cli/commands/memory.d.ts.map +1 -1
- package/dist/cli/commands/memory.js +51 -57
- package/dist/cli/commands/memory.js.map +1 -1
- package/dist/cli/commands/misc.d.ts +1 -15
- package/dist/cli/commands/misc.d.ts.map +1 -1
- package/dist/cli/commands/misc.js +36 -215
- package/dist/cli/commands/misc.js.map +1 -1
- package/dist/cli/commands/plans.d.ts +0 -6
- package/dist/cli/commands/plans.d.ts.map +1 -1
- package/dist/cli/commands/plans.js +9 -77
- package/dist/cli/commands/plans.js.map +1 -1
- package/dist/cli/commands/skills.js +6 -6
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/task.js +4 -4
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +128 -53
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/prompts.d.ts +13 -0
- package/dist/cli/prompts.d.ts.map +1 -1
- package/dist/cli/prompts.js +107 -78
- package/dist/cli/prompts.js.map +1 -1
- package/dist/core/{claude-mcp.d.ts → claude/claude-mcp.d.ts} +9 -0
- package/dist/core/claude/claude-mcp.d.ts.map +1 -0
- package/dist/core/{claude-mcp.js → claude/claude-mcp.js} +33 -3
- package/dist/core/claude/claude-mcp.js.map +1 -0
- package/dist/core/claude/claude-md-generator.d.ts.map +1 -0
- package/dist/core/{claude-md-generator.js → claude/claude-md-generator.js} +2 -2
- package/dist/core/claude/claude-md-generator.js.map +1 -0
- package/dist/core/{claude-settings-manager.d.ts → claude/claude-settings-manager.d.ts} +12 -0
- package/dist/core/claude/claude-settings-manager.d.ts.map +1 -0
- package/dist/core/{claude-settings-manager.js → claude/claude-settings-manager.js} +81 -22
- package/dist/core/claude/claude-settings-manager.js.map +1 -0
- package/dist/core/{cli-bridge.d.ts → console/cli-bridge.d.ts} +2 -2
- package/dist/core/console/cli-bridge.d.ts.map +1 -0
- package/dist/core/{cli-bridge.js → console/cli-bridge.js} +3 -3
- package/dist/core/console/cli-bridge.js.map +1 -0
- package/dist/core/{detector.d.ts → detect/detector.d.ts} +16 -1
- package/dist/core/detect/detector.d.ts.map +1 -0
- package/dist/core/detect/detector.js +766 -0
- package/dist/core/detect/detector.js.map +1 -0
- package/dist/core/detect/library-registry.d.ts +40 -0
- package/dist/core/detect/library-registry.d.ts.map +1 -0
- package/dist/core/detect/library-registry.js +239 -0
- package/dist/core/detect/library-registry.js.map +1 -0
- package/dist/core/docs/docs-generator.d.ts.map +1 -0
- package/dist/core/{docs-generator.js → docs/docs-generator.js} +1 -1
- package/dist/core/docs/docs-generator.js.map +1 -0
- package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -0
- package/dist/core/{mcp-reference-generator.js → docs/mcp-reference-generator.js} +2 -2
- package/dist/core/docs/mcp-reference-generator.js.map +1 -0
- package/dist/core/{generator.d.ts → generators/generator.d.ts} +3 -4
- package/dist/core/generators/generator.d.ts.map +1 -0
- package/dist/core/{generator.js → generators/generator.js} +42 -157
- package/dist/core/generators/generator.js.map +1 -0
- package/dist/core/{gitignore-generator.d.ts → generators/gitignore-generator.d.ts} +1 -1
- package/dist/core/generators/gitignore-generator.d.ts.map +1 -0
- package/dist/core/{gitignore-generator.js → generators/gitignore-generator.js} +1 -1
- package/dist/core/generators/gitignore-generator.js.map +1 -0
- package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -0
- package/dist/core/{minimal-scaffolder.js → generators/minimal-scaffolder.js} +2 -2
- package/dist/core/generators/minimal-scaffolder.js.map +1 -0
- package/dist/core/{rules-generator.d.ts → generators/rules-generator.d.ts} +2 -6
- package/dist/core/generators/rules-generator.d.ts.map +1 -0
- package/dist/core/{rules-generator.js → generators/rules-generator.js} +41 -2
- package/dist/core/generators/rules-generator.js.map +1 -0
- package/dist/core/{workflow-generator.d.ts → generators/workflow-generator.d.ts} +1 -1
- package/dist/core/generators/workflow-generator.d.ts.map +1 -0
- package/dist/core/{workflow-generator.js → generators/workflow-generator.js} +2 -3
- package/dist/core/generators/workflow-generator.js.map +1 -0
- package/dist/core/{multi-tool-generator.d.ts → ide/multi-tool-generator.d.ts} +1 -1
- package/dist/core/ide/multi-tool-generator.d.ts.map +1 -0
- package/dist/core/{multi-tool-generator.js → ide/multi-tool-generator.js} +1 -1
- package/dist/core/ide/multi-tool-generator.js.map +1 -0
- package/dist/core/ide/opencode-generator.d.ts +72 -0
- package/dist/core/ide/opencode-generator.d.ts.map +1 -0
- package/dist/core/ide/opencode-generator.js +450 -0
- package/dist/core/ide/opencode-generator.js.map +1 -0
- package/dist/core/merger.d.ts +1 -1
- package/dist/core/merger.d.ts.map +1 -1
- package/dist/core/merger.js +5 -5
- package/dist/core/merger.js.map +1 -1
- package/dist/core/migrator.d.ts +0 -1
- package/dist/core/migrator.d.ts.map +1 -1
- package/dist/core/migrator.js +4 -29
- package/dist/core/migrator.js.map +1 -1
- package/dist/core/quality/coverage-checker.d.ts.map +1 -0
- package/dist/core/{coverage-checker.js → quality/coverage-checker.js} +2 -2
- package/dist/core/quality/coverage-checker.js.map +1 -0
- package/dist/core/quality/dependency-checker.d.ts.map +1 -0
- package/dist/core/{dependency-checker.js → quality/dependency-checker.js} +1 -1
- package/dist/core/quality/dependency-checker.js.map +1 -0
- package/dist/core/quality/doctor.d.ts.map +1 -0
- package/dist/core/{doctor.js → quality/doctor.js} +1 -67
- package/dist/core/quality/doctor.js.map +1 -0
- package/dist/core/quality/validator.d.ts.map +1 -0
- package/dist/core/{validator.js → quality/validator.js} +1 -1
- package/dist/core/quality/validator.js.map +1 -0
- package/dist/core/{skills-manager.d.ts → skills/skills-manager.d.ts} +1 -1
- package/dist/core/skills/skills-manager.d.ts.map +1 -0
- package/dist/core/{skills-manager.js → skills/skills-manager.js} +1 -25
- package/dist/core/skills/skills-manager.js.map +1 -0
- package/dist/core/{config-manager.d.ts → state/config-manager.d.ts} +1 -1
- package/dist/core/state/config-manager.d.ts.map +1 -0
- package/dist/core/{config-manager.js → state/config-manager.js} +2 -61
- package/dist/core/state/config-manager.js.map +1 -0
- package/dist/core/state/override-manager.d.ts.map +1 -0
- package/dist/core/{override-manager.js → state/override-manager.js} +1 -1
- package/dist/core/state/override-manager.js.map +1 -0
- package/dist/core/{state-writer.d.ts → state/state-writer.d.ts} +2 -3
- package/dist/core/state/state-writer.d.ts.map +1 -0
- package/dist/core/{state-writer.js → state/state-writer.js} +6 -9
- package/dist/core/state/state-writer.js.map +1 -0
- package/dist/core/state/version-bumper.d.ts.map +1 -0
- package/dist/core/{version-bumper.js → state/version-bumper.js} +1 -1
- package/dist/core/state/version-bumper.js.map +1 -0
- package/dist/core/{decision-manager.d.ts → tasks/decision-manager.d.ts} +1 -1
- package/dist/core/tasks/decision-manager.d.ts.map +1 -0
- package/dist/core/{decision-manager.js → tasks/decision-manager.js} +1 -1
- package/dist/core/tasks/decision-manager.js.map +1 -0
- package/dist/core/{knowledge-manager.d.ts → tasks/knowledge-manager.d.ts} +1 -1
- package/dist/core/tasks/knowledge-manager.d.ts.map +1 -0
- package/dist/core/{knowledge-manager.js → tasks/knowledge-manager.js} +1 -1
- package/dist/core/tasks/knowledge-manager.js.map +1 -0
- package/dist/core/{learn-manager.d.ts → tasks/learn-manager.d.ts} +1 -3
- package/dist/core/tasks/learn-manager.d.ts.map +1 -0
- package/dist/core/{learn-manager.js → tasks/learn-manager.js} +1 -39
- package/dist/core/tasks/learn-manager.js.map +1 -0
- package/dist/core/tasks/plans-manager.d.ts.map +1 -0
- package/dist/core/{plans-manager.js → tasks/plans-manager.js} +1 -1
- package/dist/core/tasks/plans-manager.js.map +1 -0
- package/dist/core/tasks/task-manager.d.ts.map +1 -0
- package/dist/core/{task-manager.js → tasks/task-manager.js} +2 -2
- package/dist/core/tasks/task-manager.js.map +1 -0
- package/dist/core/workspace/project-worker.d.ts +6 -6
- package/dist/core/workspace/project-worker.d.ts.map +1 -1
- package/dist/core/workspace/project-worker.js +6 -6
- package/dist/core/workspace/project-worker.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -176
- package/dist/index.js.map +1 -1
- package/dist/mcp/rulebook-server.d.ts.map +1 -1
- package/dist/mcp/rulebook-server.js +16 -960
- package/dist/mcp/rulebook-server.js.map +1 -1
- package/dist/memory/file-search.d.ts +43 -0
- package/dist/memory/file-search.d.ts.map +1 -0
- package/dist/memory/file-search.js +228 -0
- package/dist/memory/file-search.js.map +1 -0
- package/dist/memory/file-store.d.ts +99 -0
- package/dist/memory/file-store.d.ts.map +1 -0
- package/dist/memory/file-store.js +615 -0
- package/dist/memory/file-store.js.map +1 -0
- package/dist/memory/legacy-migrator.d.ts +27 -0
- package/dist/memory/legacy-migrator.d.ts.map +1 -0
- package/dist/memory/legacy-migrator.js +185 -0
- package/dist/memory/legacy-migrator.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +25 -24
- package/dist/memory/memory-manager.d.ts.map +1 -1
- package/dist/memory/memory-manager.js +97 -140
- package/dist/memory/memory-manager.js.map +1 -1
- package/dist/memory/memory-types.d.ts +1 -1
- package/dist/memory/memory-types.d.ts.map +1 -1
- package/dist/types.d.ts +20 -118
- package/dist/types.d.ts.map +1 -1
- package/package.json +23 -27
- package/templates/agents/accessibility-reviewer.md +43 -43
- package/templates/agents/api-designer.md +42 -42
- package/templates/agents/architect.md +51 -51
- package/templates/agents/build-engineer.md +36 -36
- package/templates/agents/code-reviewer.md +47 -47
- package/templates/agents/compiler/codegen-debugger.md +34 -34
- package/templates/agents/compiler/stdlib-engineer.md +28 -28
- package/templates/agents/compiler/test-coverage-guardian.md +31 -31
- package/templates/agents/context-intelligence.md +50 -52
- package/templates/agents/database-architect.md +41 -41
- package/templates/agents/devops-engineer.md +42 -42
- package/templates/agents/docs-writer.md +38 -38
- package/templates/agents/game-engine/cpp-core-expert.md +35 -35
- package/templates/agents/game-engine/render-engineer.md +22 -22
- package/templates/agents/game-engine/shader-engineer.md +38 -38
- package/templates/agents/game-engine/systems-integration.md +43 -43
- package/templates/agents/generic/code-reviewer.md +41 -41
- package/templates/agents/generic/docs-writer.md +25 -25
- package/templates/agents/generic/project-manager.md +36 -36
- package/templates/agents/generic/researcher.md +34 -34
- package/templates/agents/generic/test-engineer.md +41 -41
- package/templates/agents/i18n-engineer.md +42 -42
- package/templates/agents/implementer.md +42 -42
- package/templates/agents/migration-engineer.md +42 -42
- package/templates/agents/mobile/platform-specialist.md +22 -22
- package/templates/agents/mobile/ui-engineer.md +22 -22
- package/templates/agents/performance-engineer.md +49 -49
- package/templates/agents/project-manager.md +215 -0
- package/templates/agents/quality-gatekeeper.md +205 -0
- package/templates/agents/refactoring-agent.md +41 -41
- package/templates/agents/researcher.md +38 -38
- package/templates/agents/security-reviewer.md +40 -40
- package/templates/agents/team-lead.md +37 -37
- package/templates/agents/tester.md +48 -48
- package/templates/agents/ux-reviewer.md +43 -43
- package/templates/agents/web-app/api-designer.md +22 -22
- package/templates/agents/web-app/backend-engineer.md +30 -30
- package/templates/agents/web-app/database-engineer.md +22 -22
- package/templates/agents/web-app/frontend-engineer.md +29 -29
- package/templates/agents/web-app/security-reviewer.md +32 -32
- package/templates/ci/rulebook-review.yml +26 -26
- package/templates/claude-workflows/bugfix.js +94 -0
- package/templates/claude-workflows/feature-pipeline.js +88 -0
- package/templates/claude-workflows/release-gate.js +64 -0
- package/templates/claude-workflows/review-fanout.js +118 -0
- package/templates/claude-workflows/rulebook-driver.js +343 -0
- package/templates/claude-workflows/spec-author.js +133 -0
- package/templates/cli/AIDER.md +49 -49
- package/templates/cli/AMAZON_Q.md +25 -25
- package/templates/cli/AUGGIE.md +32 -32
- package/templates/cli/CLAUDE.md +117 -117
- package/templates/cli/CLINE.md +99 -99
- package/templates/cli/CODEBUDDY.md +20 -20
- package/templates/cli/CODEIUM.md +20 -20
- package/templates/cli/CODEX.md +21 -21
- package/templates/cli/CONTINUE.md +34 -34
- package/templates/cli/CURSOR_CLI.md +62 -62
- package/templates/cli/FACTORY.md +18 -18
- package/templates/cli/GEMINI.md +35 -35
- package/templates/cli/KILOCODE.md +18 -18
- package/templates/cli/OPENCODE.md +85 -18
- package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
- package/templates/commands/rulebook-decision-create.md +55 -55
- package/templates/commands/rulebook-decision-list.md +15 -15
- package/templates/commands/rulebook-knowledge-add.md +41 -41
- package/templates/commands/rulebook-knowledge-list.md +15 -15
- package/templates/commands/rulebook-learn-capture.md +41 -48
- package/templates/commands/rulebook-learn-list.md +13 -13
- package/templates/commands/rulebook-memory-save.md +48 -48
- package/templates/commands/rulebook-memory-search.md +47 -47
- package/templates/commands/rulebook-task-apply.md +67 -67
- package/templates/commands/rulebook-task-archive.md +94 -94
- package/templates/commands/rulebook-task-create.md +93 -93
- package/templates/commands/rulebook-task-list.md +42 -42
- package/templates/commands/rulebook-task-show.md +52 -52
- package/templates/commands/rulebook-task-validate.md +53 -53
- package/templates/compact-context/_default.md +23 -23
- package/templates/compact-context/cpp.md +26 -26
- package/templates/compact-context/go.md +26 -26
- package/templates/compact-context/python.md +26 -26
- package/templates/compact-context/rust.md +28 -28
- package/templates/compact-context/typescript.md +29 -29
- package/templates/core/AGENTS_LEAN.md +0 -14
- package/templates/core/AGENTS_OVERRIDE.md +16 -16
- package/templates/core/AGENT_AUTOMATION.md +296 -296
- package/templates/core/CLAUDE_MD_v2.md +90 -90
- package/templates/core/DAG.md +304 -304
- package/templates/core/DECISIONS.md +38 -38
- package/templates/core/DOCUMENTATION_RULES.md +36 -36
- package/templates/core/KNOWLEDGE.md +49 -49
- package/templates/core/MULTI_AGENT.md +74 -74
- package/templates/core/PLANS.md +28 -28
- package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
- package/templates/core/RULEBOOK.md +1947 -1947
- package/templates/core/TIER1_PROHIBITIONS.md +154 -154
- package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
- package/templates/git/CI_CD_PATTERNS.md +661 -661
- package/templates/git/GITHUB_ACTIONS.md +728 -728
- package/templates/git/GITLAB_CI.md +730 -730
- package/templates/git/GIT_WORKFLOW.md +1192 -1192
- package/templates/git/SECRETS_MANAGEMENT.md +585 -585
- package/templates/hooks/COMMIT_MSG.md +530 -530
- package/templates/hooks/POST_CHECKOUT.md +546 -546
- package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
- package/templates/hooks/PRE_COMMIT.md +414 -414
- package/templates/hooks/PRE_PUSH.md +601 -601
- package/templates/hooks/check-context-and-handoff.sh +24 -16
- package/templates/hooks/enforce-pre-tool.sh +70 -0
- package/templates/hooks/terse-mode-tracker.sh +146 -143
- package/templates/hooks/update-check.ps1 +84 -0
- package/templates/hooks/update-check.sh +103 -0
- package/templates/ides/CONTINUE_RULES.md +16 -16
- package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
- package/templates/ides/GEMINI_RULES.md +17 -17
- package/templates/ides/OPENCODE.md +63 -0
- package/templates/ides/WINDSURF_RULES.md +14 -14
- package/templates/languages/C.md +333 -333
- package/templates/languages/CPP.md +743 -743
- package/templates/languages/CSHARP.md +417 -417
- package/templates/languages/ELIXIR.md +454 -454
- package/templates/languages/ERLANG.md +361 -361
- package/templates/languages/GO.md +645 -645
- package/templates/languages/HASKELL.md +177 -177
- package/templates/languages/JAVA.md +607 -607
- package/templates/languages/JAVASCRIPT.md +631 -631
- package/templates/languages/JULIA.md +97 -97
- package/templates/languages/KOTLIN.md +511 -511
- package/templates/languages/LISP.md +100 -100
- package/templates/languages/LUA.md +74 -74
- package/templates/languages/OBJECTIVEC.md +90 -90
- package/templates/languages/PHP.md +416 -416
- package/templates/languages/PYTHON.md +682 -682
- package/templates/languages/RUBY.md +421 -421
- package/templates/languages/RUST.md +477 -477
- package/templates/languages/SAS.md +73 -73
- package/templates/languages/SCALA.md +348 -348
- package/templates/languages/SOLIDITY.md +580 -580
- package/templates/languages/SQL.md +137 -137
- package/templates/languages/SWIFT.md +466 -466
- package/templates/languages/TYPESCRIPT.md +591 -591
- package/templates/languages/ZIG.md +265 -265
- package/templates/libraries/go/ECHO.md +18 -0
- package/templates/libraries/go/GIN.md +18 -0
- package/templates/libraries/go/GORM.md +18 -0
- package/templates/libraries/python/DJANGO.md +18 -0
- package/templates/libraries/python/FASTAPI.md +18 -0
- package/templates/libraries/python/FLASK.md +17 -0
- package/templates/libraries/python/PYDANTIC.md +17 -0
- package/templates/libraries/python/PYTEST.md +17 -0
- package/templates/libraries/python/SQLALCHEMY.md +17 -0
- package/templates/libraries/rust/ACTIX.md +17 -0
- package/templates/libraries/rust/AXUM.md +18 -0
- package/templates/libraries/rust/SERDE.md +16 -0
- package/templates/libraries/rust/SQLX.md +17 -0
- package/templates/libraries/rust/TOKIO.md +16 -0
- package/templates/libraries/typescript/ANGULAR.md +17 -0
- package/templates/libraries/typescript/DRIZZLE.md +16 -0
- package/templates/libraries/typescript/EXPRESS.md +17 -0
- package/templates/libraries/typescript/HEROUI.md +16 -0
- package/templates/libraries/typescript/JEST.md +17 -0
- package/templates/libraries/typescript/NESTJS.md +17 -0
- package/templates/libraries/typescript/NEXT.md +18 -0
- package/templates/libraries/typescript/PRISMA.md +16 -0
- package/templates/libraries/typescript/RADIX.md +16 -0
- package/templates/libraries/typescript/REACT.md +18 -0
- package/templates/libraries/typescript/SHADCN.md +16 -0
- package/templates/libraries/typescript/SVELTE.md +16 -0
- package/templates/libraries/typescript/TAILWIND.md +16 -0
- package/templates/libraries/typescript/TRPC.md +16 -0
- package/templates/libraries/typescript/VITEST.md +17 -0
- package/templates/libraries/typescript/VUE.md +17 -0
- package/templates/libraries/typescript/ZOD.md +17 -0
- package/templates/modules/ATLASSIAN.md +255 -255
- package/templates/modules/CONTEXT7.md +54 -54
- package/templates/modules/FIGMA.md +267 -267
- package/templates/modules/GITHUB_MCP.md +64 -64
- package/templates/modules/GRAFANA.md +328 -328
- package/templates/modules/MEMORY.md +126 -126
- package/templates/modules/NOTION.md +247 -247
- package/templates/modules/PLAYWRIGHT.md +90 -90
- package/templates/modules/RULEBOOK_MCP.md +208 -208
- package/templates/modules/SERENA.md +337 -337
- package/templates/modules/SUPABASE.md +223 -223
- package/templates/modules/SYNAP.md +69 -69
- package/templates/modules/VECTORIZER.md +63 -63
- package/templates/modules/sequential-thinking.md +42 -42
- package/templates/rules/consult-analysis-before-implementing.md +23 -23
- package/templates/rules/cpp.md +46 -46
- package/templates/rules/csharp.md +44 -44
- package/templates/rules/diagnostic-first.md +39 -39
- package/templates/rules/fail-twice-escalate.md +46 -46
- package/templates/rules/follow-task-sequence.md +36 -36
- package/templates/rules/git-safety.md +29 -29
- package/templates/rules/go.md +40 -40
- package/templates/rules/incremental-implementation.md +56 -56
- package/templates/rules/incremental-tests.md +29 -29
- package/templates/rules/java.md +43 -43
- package/templates/rules/javascript.md +39 -39
- package/templates/rules/knowledge-base-usage.md +41 -41
- package/templates/rules/multi-agent-teams.md +75 -75
- package/templates/rules/no-deferred.md +31 -31
- package/templates/rules/no-shortcuts.md +30 -30
- package/templates/rules/python.md +43 -43
- package/templates/rules/research-first.md +30 -30
- package/templates/rules/respect-handoff-trigger.md +41 -41
- package/templates/rules/rust.md +40 -40
- package/templates/rules/sequential-editing.md +21 -21
- package/templates/rules/session-workflow.md +24 -24
- package/templates/rules/task-decomposition.md +32 -32
- package/templates/rules/typescript.md +40 -40
- package/templates/skills/cli/aider/SKILL.md +59 -59
- package/templates/skills/cli/amazon-q/SKILL.md +35 -35
- package/templates/skills/cli/auggie/SKILL.md +42 -42
- package/templates/skills/cli/claude/SKILL.md +42 -42
- package/templates/skills/cli/cline/SKILL.md +42 -42
- package/templates/skills/cli/codebuddy/SKILL.md +30 -30
- package/templates/skills/cli/codeium/SKILL.md +30 -30
- package/templates/skills/cli/codex/SKILL.md +31 -31
- package/templates/skills/cli/continue/SKILL.md +44 -44
- package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
- package/templates/skills/cli/factory/SKILL.md +28 -28
- package/templates/skills/cli/gemini/SKILL.md +45 -45
- package/templates/skills/cli/kilocode/SKILL.md +28 -28
- package/templates/skills/cli/opencode/SKILL.md +82 -28
- package/templates/skills/core/agent-automation/SKILL.md +194 -194
- package/templates/skills/core/dag/SKILL.md +314 -314
- package/templates/skills/core/documentation-rules/SKILL.md +46 -46
- package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
- package/templates/skills/core/rulebook/SKILL.md +176 -176
- package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
- package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
- package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
- package/templates/skills/dev/accessibility/SKILL.md +17 -17
- package/templates/skills/dev/analysis/SKILL.md +19 -19
- package/templates/skills/dev/api-design/SKILL.md +15 -15
- package/templates/skills/dev/architect/SKILL.md +17 -17
- package/templates/skills/dev/build-fix/SKILL.md +17 -17
- package/templates/skills/dev/db-design/SKILL.md +15 -15
- package/templates/skills/dev/debug/SKILL.md +16 -16
- package/templates/skills/dev/deploy/SKILL.md +17 -17
- package/templates/skills/dev/docs/SKILL.md +17 -17
- package/templates/skills/dev/handoff/SKILL.md +27 -27
- package/templates/skills/dev/migrate/SKILL.md +15 -15
- package/templates/skills/dev/perf/SKILL.md +17 -17
- package/templates/skills/dev/refactor/SKILL.md +17 -17
- package/templates/skills/dev/research/SKILL.md +14 -14
- package/templates/skills/dev/review/SKILL.md +18 -18
- package/templates/skills/dev/security-audit/SKILL.md +17 -17
- package/templates/skills/dev/spec/SKILL.md +65 -0
- package/templates/skills/ides/copilot/SKILL.md +47 -47
- package/templates/skills/ides/cursor/SKILL.md +53 -53
- package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
- package/templates/skills/ides/replit/SKILL.md +46 -46
- package/templates/skills/ides/tabnine/SKILL.md +39 -39
- package/templates/skills/ides/vscode/SKILL.md +50 -50
- package/templates/skills/ides/windsurf/SKILL.md +46 -46
- package/templates/skills/ides/zed/SKILL.md +42 -42
- package/templates/skills/languages/c/SKILL.md +343 -343
- package/templates/skills/languages/cpp/SKILL.md +753 -753
- package/templates/skills/languages/csharp/SKILL.md +427 -427
- package/templates/skills/languages/elixir/SKILL.md +464 -464
- package/templates/skills/languages/erlang/SKILL.md +371 -371
- package/templates/skills/languages/go/SKILL.md +655 -655
- package/templates/skills/languages/haskell/SKILL.md +187 -187
- package/templates/skills/languages/java/SKILL.md +617 -617
- package/templates/skills/languages/javascript/SKILL.md +641 -641
- package/templates/skills/languages/julia/SKILL.md +107 -107
- package/templates/skills/languages/kotlin/SKILL.md +521 -521
- package/templates/skills/languages/lisp/SKILL.md +110 -110
- package/templates/skills/languages/lua/SKILL.md +84 -84
- package/templates/skills/languages/objectivec/SKILL.md +100 -100
- package/templates/skills/languages/php/SKILL.md +426 -426
- package/templates/skills/languages/python/SKILL.md +692 -692
- package/templates/skills/languages/ruby/SKILL.md +431 -431
- package/templates/skills/languages/rust/SKILL.md +487 -487
- package/templates/skills/languages/sas/SKILL.md +83 -83
- package/templates/skills/languages/scala/SKILL.md +358 -358
- package/templates/skills/languages/solidity/SKILL.md +590 -590
- package/templates/skills/languages/sql/SKILL.md +147 -147
- package/templates/skills/languages/swift/SKILL.md +476 -476
- package/templates/skills/languages/typescript/SKILL.md +302 -302
- package/templates/skills/languages/zig/SKILL.md +275 -275
- package/templates/skills/modules/atlassian/SKILL.md +265 -265
- package/templates/skills/modules/context7/SKILL.md +64 -64
- package/templates/skills/modules/figma/SKILL.md +277 -277
- package/templates/skills/modules/github-mcp/SKILL.md +74 -74
- package/templates/skills/modules/grafana/SKILL.md +338 -338
- package/templates/skills/modules/memory/SKILL.md +73 -73
- package/templates/skills/modules/notion/SKILL.md +257 -257
- package/templates/skills/modules/playwright/SKILL.md +100 -100
- package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
- package/templates/skills/modules/serena/SKILL.md +347 -347
- package/templates/skills/modules/supabase/SKILL.md +233 -233
- package/templates/skills/modules/synap/SKILL.md +79 -79
- package/templates/skills/modules/vectorizer/SKILL.md +73 -73
- package/.claude/commands/ralph-config.md +0 -112
- package/.claude/commands/ralph-history.md +0 -110
- package/.claude/commands/ralph-init.md +0 -72
- package/.claude/commands/ralph-pause-resume.md +0 -105
- package/.claude/commands/ralph-run.md +0 -101
- package/.claude/commands/ralph-status.md +0 -76
- package/dist/agents/ralph-parser.d.ts +0 -91
- package/dist/agents/ralph-parser.d.ts.map +0 -1
- package/dist/agents/ralph-parser.js +0 -415
- package/dist/agents/ralph-parser.js.map +0 -1
- package/dist/cli/commands/analysis.d.ts +0 -8
- package/dist/cli/commands/analysis.d.ts.map +0 -1
- package/dist/cli/commands/analysis.js +0 -78
- package/dist/cli/commands/analysis.js.map +0 -1
- package/dist/cli/commands/compress.d.ts +0 -18
- package/dist/cli/commands/compress.d.ts.map +0 -1
- package/dist/cli/commands/compress.js +0 -100
- package/dist/cli/commands/compress.js.map +0 -1
- package/dist/cli/commands/ralph.d.ts +0 -45
- package/dist/cli/commands/ralph.d.ts.map +0 -1
- package/dist/cli/commands/ralph.js +0 -694
- package/dist/cli/commands/ralph.js.map +0 -1
- package/dist/cli/docs-prompts.d.ts +0 -3
- package/dist/cli/docs-prompts.d.ts.map +0 -1
- package/dist/cli/docs-prompts.js +0 -45
- package/dist/cli/docs-prompts.js.map +0 -1
- package/dist/core/agent-manager.d.ts +0 -69
- package/dist/core/agent-manager.d.ts.map +0 -1
- package/dist/core/agent-manager.js +0 -476
- package/dist/core/agent-manager.js.map +0 -1
- package/dist/core/agent-template-engine.d.ts +0 -51
- package/dist/core/agent-template-engine.d.ts.map +0 -1
- package/dist/core/agent-template-engine.js +0 -291
- package/dist/core/agent-template-engine.js.map +0 -1
- package/dist/core/analysis-manager.d.ts +0 -56
- package/dist/core/analysis-manager.d.ts.map +0 -1
- package/dist/core/analysis-manager.js +0 -218
- package/dist/core/analysis-manager.js.map +0 -1
- package/dist/core/auto-fixer.d.ts +0 -14
- package/dist/core/auto-fixer.d.ts.map +0 -1
- package/dist/core/auto-fixer.js +0 -207
- package/dist/core/auto-fixer.js.map +0 -1
- package/dist/core/changelog-generator.d.ts +0 -44
- package/dist/core/changelog-generator.d.ts.map +0 -1
- package/dist/core/changelog-generator.js +0 -222
- package/dist/core/changelog-generator.js.map +0 -1
- package/dist/core/claude-mcp.d.ts.map +0 -1
- package/dist/core/claude-mcp.js.map +0 -1
- package/dist/core/claude-md-generator.d.ts.map +0 -1
- package/dist/core/claude-md-generator.js.map +0 -1
- package/dist/core/claude-settings-manager.d.ts.map +0 -1
- package/dist/core/claude-settings-manager.js.map +0 -1
- package/dist/core/cli-bridge.d.ts.map +0 -1
- package/dist/core/cli-bridge.js.map +0 -1
- package/dist/core/compact-context-manager.d.ts +0 -34
- package/dist/core/compact-context-manager.d.ts.map +0 -1
- package/dist/core/compact-context-manager.js +0 -60
- package/dist/core/compact-context-manager.js.map +0 -1
- package/dist/core/complexity-detector.d.ts +0 -36
- package/dist/core/complexity-detector.d.ts.map +0 -1
- package/dist/core/complexity-detector.js +0 -334
- package/dist/core/complexity-detector.js.map +0 -1
- package/dist/core/compress/compressor.d.ts +0 -60
- package/dist/core/compress/compressor.d.ts.map +0 -1
- package/dist/core/compress/compressor.js +0 -232
- package/dist/core/compress/compressor.js.map +0 -1
- package/dist/core/compress/discover.d.ts +0 -19
- package/dist/core/compress/discover.d.ts.map +0 -1
- package/dist/core/compress/discover.js +0 -100
- package/dist/core/compress/discover.js.map +0 -1
- package/dist/core/compress/validator.d.ts +0 -47
- package/dist/core/compress/validator.d.ts.map +0 -1
- package/dist/core/compress/validator.js +0 -131
- package/dist/core/compress/validator.js.map +0 -1
- package/dist/core/config-manager.d.ts.map +0 -1
- package/dist/core/config-manager.js.map +0 -1
- package/dist/core/coverage-checker.d.ts.map +0 -1
- package/dist/core/coverage-checker.js.map +0 -1
- package/dist/core/cursor-mdc-generator.d.ts +0 -30
- package/dist/core/cursor-mdc-generator.d.ts.map +0 -1
- package/dist/core/cursor-mdc-generator.js +0 -98
- package/dist/core/cursor-mdc-generator.js.map +0 -1
- package/dist/core/decision-manager.d.ts.map +0 -1
- package/dist/core/decision-manager.js.map +0 -1
- package/dist/core/dependency-checker.d.ts.map +0 -1
- package/dist/core/dependency-checker.js.map +0 -1
- package/dist/core/detector.d.ts.map +0 -1
- package/dist/core/detector.js +0 -1763
- package/dist/core/detector.js.map +0 -1
- package/dist/core/docs-generator.d.ts.map +0 -1
- package/dist/core/docs-generator.js.map +0 -1
- package/dist/core/doctor.d.ts.map +0 -1
- package/dist/core/doctor.js.map +0 -1
- package/dist/core/generator.d.ts.map +0 -1
- package/dist/core/generator.js.map +0 -1
- package/dist/core/github-issues-importer.d.ts +0 -82
- package/dist/core/github-issues-importer.d.ts.map +0 -1
- package/dist/core/github-issues-importer.js +0 -161
- package/dist/core/github-issues-importer.js.map +0 -1
- package/dist/core/gitignore-generator.d.ts.map +0 -1
- package/dist/core/gitignore-generator.js.map +0 -1
- package/dist/core/health-scorer.d.ts +0 -61
- package/dist/core/health-scorer.d.ts.map +0 -1
- package/dist/core/health-scorer.js +0 -638
- package/dist/core/health-scorer.js.map +0 -1
- package/dist/core/iteration-tracker.d.ts +0 -85
- package/dist/core/iteration-tracker.d.ts.map +0 -1
- package/dist/core/iteration-tracker.js +0 -295
- package/dist/core/iteration-tracker.js.map +0 -1
- package/dist/core/knowledge-manager.d.ts.map +0 -1
- package/dist/core/knowledge-manager.js.map +0 -1
- package/dist/core/learn-manager.d.ts.map +0 -1
- package/dist/core/learn-manager.js.map +0 -1
- package/dist/core/mcp-reference-generator.d.ts.map +0 -1
- package/dist/core/mcp-reference-generator.js.map +0 -1
- package/dist/core/minimal-scaffolder.d.ts.map +0 -1
- package/dist/core/minimal-scaffolder.js.map +0 -1
- package/dist/core/modern-console.d.ts +0 -98
- package/dist/core/modern-console.d.ts.map +0 -1
- package/dist/core/modern-console.js +0 -556
- package/dist/core/modern-console.js.map +0 -1
- package/dist/core/multi-tool-generator.d.ts.map +0 -1
- package/dist/core/multi-tool-generator.js.map +0 -1
- package/dist/core/override-manager.d.ts.map +0 -1
- package/dist/core/override-manager.js.map +0 -1
- package/dist/core/plans-manager.d.ts.map +0 -1
- package/dist/core/plans-manager.js.map +0 -1
- package/dist/core/prd-generator.d.ts +0 -48
- package/dist/core/prd-generator.d.ts.map +0 -1
- package/dist/core/prd-generator.js +0 -233
- package/dist/core/prd-generator.js.map +0 -1
- package/dist/core/ralph-manager.d.ts +0 -163
- package/dist/core/ralph-manager.d.ts.map +0 -1
- package/dist/core/ralph-manager.js +0 -555
- package/dist/core/ralph-manager.js.map +0 -1
- package/dist/core/ralph-parallel.d.ts +0 -55
- package/dist/core/ralph-parallel.d.ts.map +0 -1
- package/dist/core/ralph-parallel.js +0 -201
- package/dist/core/ralph-parallel.js.map +0 -1
- package/dist/core/ralph-plan-checkpoint.d.ts +0 -58
- package/dist/core/ralph-plan-checkpoint.d.ts.map +0 -1
- package/dist/core/ralph-plan-checkpoint.js +0 -154
- package/dist/core/ralph-plan-checkpoint.js.map +0 -1
- package/dist/core/ralph-scripts.d.ts +0 -12
- package/dist/core/ralph-scripts.d.ts.map +0 -1
- package/dist/core/ralph-scripts.js +0 -50
- package/dist/core/ralph-scripts.js.map +0 -1
- package/dist/core/review-manager.d.ts +0 -74
- package/dist/core/review-manager.d.ts.map +0 -1
- package/dist/core/review-manager.js +0 -371
- package/dist/core/review-manager.js.map +0 -1
- package/dist/core/rules-generator.d.ts.map +0 -1
- package/dist/core/rules-generator.js.map +0 -1
- package/dist/core/skills-manager.d.ts.map +0 -1
- package/dist/core/skills-manager.js.map +0 -1
- package/dist/core/state-writer.d.ts.map +0 -1
- package/dist/core/state-writer.js.map +0 -1
- package/dist/core/task-manager.d.ts.map +0 -1
- package/dist/core/task-manager.js.map +0 -1
- package/dist/core/telemetry.d.ts +0 -29
- package/dist/core/telemetry.d.ts.map +0 -1
- package/dist/core/telemetry.js +0 -57
- package/dist/core/telemetry.js.map +0 -1
- package/dist/core/validator.d.ts.map +0 -1
- package/dist/core/validator.js.map +0 -1
- package/dist/core/version-bumper.d.ts.map +0 -1
- package/dist/core/version-bumper.js.map +0 -1
- package/dist/core/watcher.d.ts +0 -9
- package/dist/core/watcher.d.ts.map +0 -1
- package/dist/core/watcher.js +0 -22
- package/dist/core/watcher.js.map +0 -1
- package/dist/core/workflow-generator.d.ts.map +0 -1
- package/dist/core/workflow-generator.js.map +0 -1
- package/dist/hooks/terse-activate.d.ts +0 -59
- package/dist/hooks/terse-activate.d.ts.map +0 -1
- package/dist/hooks/terse-activate.js +0 -149
- package/dist/hooks/terse-activate.js.map +0 -1
- package/dist/hooks/terse-config.d.ts +0 -51
- package/dist/hooks/terse-config.d.ts.map +0 -1
- package/dist/hooks/terse-config.js +0 -130
- package/dist/hooks/terse-config.js.map +0 -1
- package/dist/hooks/terse-mode-tracker.d.ts +0 -78
- package/dist/hooks/terse-mode-tracker.d.ts.map +0 -1
- package/dist/hooks/terse-mode-tracker.js +0 -213
- package/dist/hooks/terse-mode-tracker.js.map +0 -1
- package/dist/memory/hnsw-index.d.ts +0 -68
- package/dist/memory/hnsw-index.d.ts.map +0 -1
- package/dist/memory/hnsw-index.js +0 -544
- package/dist/memory/hnsw-index.js.map +0 -1
- package/dist/memory/memory-cache.d.ts +0 -33
- package/dist/memory/memory-cache.d.ts.map +0 -1
- package/dist/memory/memory-cache.js +0 -85
- package/dist/memory/memory-cache.js.map +0 -1
- package/dist/memory/memory-search.d.ts +0 -42
- package/dist/memory/memory-search.d.ts.map +0 -1
- package/dist/memory/memory-search.js +0 -180
- package/dist/memory/memory-search.js.map +0 -1
- package/dist/memory/memory-store.d.ts +0 -84
- package/dist/memory/memory-store.d.ts.map +0 -1
- package/dist/memory/memory-store.js +0 -566
- package/dist/memory/memory-store.js.map +0 -1
- package/dist/memory/memory-vectorizer.d.ts +0 -29
- package/dist/memory/memory-vectorizer.d.ts.map +0 -1
- package/dist/memory/memory-vectorizer.js +0 -199
- package/dist/memory/memory-vectorizer.js.map +0 -1
- package/templates/core/RALPH.md +0 -471
- package/templates/frameworks/ANGULAR.md +0 -36
- package/templates/frameworks/DJANGO.md +0 -83
- package/templates/frameworks/ELECTRON.md +0 -147
- package/templates/frameworks/FLASK.md +0 -38
- package/templates/frameworks/FLUTTER.md +0 -55
- package/templates/frameworks/JQUERY.md +0 -32
- package/templates/frameworks/LARAVEL.md +0 -38
- package/templates/frameworks/NESTJS.md +0 -43
- package/templates/frameworks/NEXTJS.md +0 -127
- package/templates/frameworks/NUXT.md +0 -40
- package/templates/frameworks/RAILS.md +0 -66
- package/templates/frameworks/REACT.md +0 -38
- package/templates/frameworks/REACT_NATIVE.md +0 -47
- package/templates/frameworks/SPRING.md +0 -39
- package/templates/frameworks/SYMFONY.md +0 -36
- package/templates/frameworks/VUE.md +0 -36
- package/templates/frameworks/ZEND.md +0 -35
- package/templates/hooks/enforce-mcp-for-tasks.sh +0 -31
- package/templates/hooks/enforce-no-deferred.sh +0 -21
- package/templates/hooks/enforce-no-shortcuts.sh +0 -31
- package/templates/ides/COPILOT.md +0 -37
- package/templates/ides/CURSOR.md +0 -43
- package/templates/ides/JETBRAINS_AI.md +0 -35
- package/templates/ides/REPLIT.md +0 -36
- package/templates/ides/TABNINE.md +0 -29
- package/templates/ides/VSCODE.md +0 -40
- package/templates/ides/WINDSURF.md +0 -36
- package/templates/ides/ZED.md +0 -32
- package/templates/ides/cursor-mdc/go.mdc +0 -24
- package/templates/ides/cursor-mdc/python.mdc +0 -24
- package/templates/ides/cursor-mdc/quality.mdc +0 -25
- package/templates/ides/cursor-mdc/ralph.mdc +0 -39
- package/templates/ides/cursor-mdc/rulebook.mdc +0 -38
- package/templates/ides/cursor-mdc/rust.mdc +0 -24
- package/templates/ides/cursor-mdc/typescript.mdc +0 -25
- package/templates/ralph/ralph-history.bat +0 -4
- package/templates/ralph/ralph-history.sh +0 -5
- package/templates/ralph/ralph-init.bat +0 -5
- package/templates/ralph/ralph-init.sh +0 -5
- package/templates/ralph/ralph-pause.bat +0 -5
- package/templates/ralph/ralph-pause.sh +0 -5
- package/templates/ralph/ralph-run.bat +0 -5
- package/templates/ralph/ralph-run.sh +0 -5
- package/templates/ralph/ralph-status.bat +0 -4
- package/templates/ralph/ralph-status.sh +0 -5
- package/templates/services/AZURE_BLOB.md +0 -184
- package/templates/services/CASSANDRA.md +0 -239
- package/templates/services/DATADOG.md +0 -26
- package/templates/services/DOCKER.md +0 -124
- package/templates/services/DOCKER_COMPOSE.md +0 -168
- package/templates/services/DYNAMODB.md +0 -308
- package/templates/services/ELASTICSEARCH.md +0 -347
- package/templates/services/GCS.md +0 -178
- package/templates/services/HELM.md +0 -194
- package/templates/services/INFLUXDB.md +0 -265
- package/templates/services/KAFKA.md +0 -341
- package/templates/services/KUBERNETES.md +0 -208
- package/templates/services/MARIADB.md +0 -183
- package/templates/services/MEMCACHED.md +0 -242
- package/templates/services/MINIO.md +0 -201
- package/templates/services/MONGODB.md +0 -268
- package/templates/services/MYSQL.md +0 -358
- package/templates/services/NEO4J.md +0 -247
- package/templates/services/OPENTELEMETRY.md +0 -25
- package/templates/services/ORACLE.md +0 -290
- package/templates/services/PINO.md +0 -24
- package/templates/services/POSTGRESQL.md +0 -326
- package/templates/services/PROMETHEUS.md +0 -33
- package/templates/services/RABBITMQ.md +0 -286
- package/templates/services/REDIS.md +0 -292
- package/templates/services/S3.md +0 -298
- package/templates/services/SENTRY.md +0 -23
- package/templates/services/SQLITE.md +0 -294
- package/templates/services/SQLSERVER.md +0 -294
- package/templates/services/WINSTON.md +0 -30
- package/templates/skills/frameworks/angular/SKILL.md +0 -46
- package/templates/skills/frameworks/django/SKILL.md +0 -93
- package/templates/skills/frameworks/electron/SKILL.md +0 -157
- package/templates/skills/frameworks/flask/SKILL.md +0 -48
- package/templates/skills/frameworks/flutter/SKILL.md +0 -65
- package/templates/skills/frameworks/jquery/SKILL.md +0 -42
- package/templates/skills/frameworks/laravel/SKILL.md +0 -48
- package/templates/skills/frameworks/nestjs/SKILL.md +0 -53
- package/templates/skills/frameworks/nextjs/SKILL.md +0 -137
- package/templates/skills/frameworks/nuxt/SKILL.md +0 -50
- package/templates/skills/frameworks/rails/SKILL.md +0 -76
- package/templates/skills/frameworks/react/SKILL.md +0 -48
- package/templates/skills/frameworks/react-native/SKILL.md +0 -57
- package/templates/skills/frameworks/spring/SKILL.md +0 -49
- package/templates/skills/frameworks/symfony/SKILL.md +0 -46
- package/templates/skills/frameworks/vue/SKILL.md +0 -46
- package/templates/skills/frameworks/zend/SKILL.md +0 -45
- package/templates/skills/services/azure-blob/SKILL.md +0 -194
- package/templates/skills/services/cassandra/SKILL.md +0 -249
- package/templates/skills/services/dynamodb/SKILL.md +0 -318
- package/templates/skills/services/elasticsearch/SKILL.md +0 -357
- package/templates/skills/services/gcs/SKILL.md +0 -188
- package/templates/skills/services/influxdb/SKILL.md +0 -275
- package/templates/skills/services/kafka/SKILL.md +0 -351
- package/templates/skills/services/mariadb/SKILL.md +0 -193
- package/templates/skills/services/memcached/SKILL.md +0 -252
- package/templates/skills/services/minio/SKILL.md +0 -211
- package/templates/skills/services/mongodb/SKILL.md +0 -278
- package/templates/skills/services/mysql/SKILL.md +0 -368
- package/templates/skills/services/neo4j/SKILL.md +0 -257
- package/templates/skills/services/oracle/SKILL.md +0 -300
- package/templates/skills/services/postgresql/SKILL.md +0 -336
- package/templates/skills/services/rabbitmq/SKILL.md +0 -296
- package/templates/skills/services/redis/SKILL.md +0 -302
- package/templates/skills/services/s3/SKILL.md +0 -308
- package/templates/skills/services/sqlite/SKILL.md +0 -304
- package/templates/skills/services/sqlserver/SKILL.md +0 -304
- package/templates/skills/workflows/ralph/SETUP.md +0 -228
- package/templates/skills/workflows/ralph/SKILL.md +0 -309
- package/templates/skills/workflows/ralph/install.sh +0 -87
- package/templates/skills/workflows/ralph/manifest.json +0 -158
- /package/dist/core/{claude-md-generator.d.ts → claude/claude-md-generator.d.ts} +0 -0
- /package/dist/core/{docs-generator.d.ts → docs/docs-generator.d.ts} +0 -0
- /package/dist/core/{mcp-reference-generator.d.ts → docs/mcp-reference-generator.d.ts} +0 -0
- /package/dist/core/{minimal-scaffolder.d.ts → generators/minimal-scaffolder.d.ts} +0 -0
- /package/dist/core/{coverage-checker.d.ts → quality/coverage-checker.d.ts} +0 -0
- /package/dist/core/{dependency-checker.d.ts → quality/dependency-checker.d.ts} +0 -0
- /package/dist/core/{doctor.d.ts → quality/doctor.d.ts} +0 -0
- /package/dist/core/{validator.d.ts → quality/validator.d.ts} +0 -0
- /package/dist/core/{override-manager.d.ts → state/override-manager.d.ts} +0 -0
- /package/dist/core/{version-bumper.d.ts → state/version-bumper.d.ts} +0 -0
- /package/dist/core/{plans-manager.d.ts → tasks/plans-manager.d.ts} +0 -0
- /package/dist/core/{task-manager.d.ts → tasks/task-manager.d.ts} +0 -0
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pure functions for Ralph parallel story execution.
|
|
3
|
-
*
|
|
4
|
-
* Provides dependency analysis, batch partitioning, file-conflict detection,
|
|
5
|
-
* and orchestration logic for running multiple user stories concurrently.
|
|
6
|
-
*
|
|
7
|
-
* All functions are side-effect-free and fully testable without mocks.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Regex pattern that matches story IDs like "US-001", "GH-42", etc.
|
|
11
|
-
*/
|
|
12
|
-
const STORY_ID_PATTERN = /(US|GH)-\d+/g;
|
|
13
|
-
/**
|
|
14
|
-
* Regex pattern that matches file-like paths in text.
|
|
15
|
-
* Captures patterns such as `src/core/auth.ts`, `lib/utils.js`, `index.ts`, etc.
|
|
16
|
-
*/
|
|
17
|
-
const FILE_PATH_PATTERN = /(?:^|\s|`|"|')([a-zA-Z0-9._/-]+\.(?:ts|js|tsx|jsx|json|css|scss|html|vue|svelte|py|go|rs|java|rb|php))\b/g;
|
|
18
|
-
/**
|
|
19
|
-
* Extract all story ID references from a text string.
|
|
20
|
-
* Returns unique IDs found in the text.
|
|
21
|
-
*/
|
|
22
|
-
function extractStoryIds(text) {
|
|
23
|
-
const matches = text.match(STORY_ID_PATTERN);
|
|
24
|
-
return matches ? [...new Set(matches)] : [];
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Extract all file-path-like references from a text string.
|
|
28
|
-
* Returns unique file paths found in the text.
|
|
29
|
-
*/
|
|
30
|
-
function extractFilePaths(text) {
|
|
31
|
-
const paths = [];
|
|
32
|
-
let match;
|
|
33
|
-
const regex = new RegExp(FILE_PATH_PATTERN.source, FILE_PATH_PATTERN.flags);
|
|
34
|
-
while ((match = regex.exec(text)) !== null) {
|
|
35
|
-
paths.push(match[1]);
|
|
36
|
-
}
|
|
37
|
-
return [...new Set(paths)];
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Gather all searchable text from a user story for dependency/conflict analysis.
|
|
41
|
-
*/
|
|
42
|
-
function getStoryText(story) {
|
|
43
|
-
const parts = [
|
|
44
|
-
story.description ?? '',
|
|
45
|
-
story.notes ?? '',
|
|
46
|
-
...(story.acceptanceCriteria ?? []),
|
|
47
|
-
];
|
|
48
|
-
return parts.join('\n');
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Analyze inter-story dependencies by scanning each story's text for references
|
|
52
|
-
* to other stories' IDs.
|
|
53
|
-
*
|
|
54
|
-
* @param stories - The list of user stories to analyze
|
|
55
|
-
* @returns A map from story ID to the list of story IDs it depends on
|
|
56
|
-
*/
|
|
57
|
-
export function analyzeDependencies(stories) {
|
|
58
|
-
const storyIds = new Set(stories.map((s) => s.id));
|
|
59
|
-
const deps = new Map();
|
|
60
|
-
for (const story of stories) {
|
|
61
|
-
const text = getStoryText(story);
|
|
62
|
-
const referencedIds = extractStoryIds(text);
|
|
63
|
-
// Filter to only IDs that exist in the story set, excluding self-references
|
|
64
|
-
const dependencies = referencedIds.filter((id) => id !== story.id && storyIds.has(id));
|
|
65
|
-
deps.set(story.id, dependencies);
|
|
66
|
-
}
|
|
67
|
-
return deps;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Partition stories into batches that can run concurrently, respecting
|
|
71
|
-
* dependency ordering and a maximum worker count per batch.
|
|
72
|
-
*
|
|
73
|
-
* Algorithm:
|
|
74
|
-
* 1. Stories with no unresolved dependencies go into the current batch (up to maxWorkers).
|
|
75
|
-
* 2. Once a batch is full or no more ready stories remain, finalize the batch.
|
|
76
|
-
* 3. Stories whose dependencies are all in previous batches become eligible.
|
|
77
|
-
* 4. Circular or unresolvable dependencies are placed in the final batch.
|
|
78
|
-
*
|
|
79
|
-
* @param stories - The stories to partition
|
|
80
|
-
* @param maxWorkers - Maximum number of stories per batch
|
|
81
|
-
* @param deps - Dependency map from analyzeDependencies()
|
|
82
|
-
* @returns Array of batches, each batch is an array of stories to run concurrently
|
|
83
|
-
*/
|
|
84
|
-
export function partitionForParallel(stories, maxWorkers, deps) {
|
|
85
|
-
if (stories.length === 0) {
|
|
86
|
-
return [];
|
|
87
|
-
}
|
|
88
|
-
const effectiveMaxWorkers = Math.max(1, maxWorkers);
|
|
89
|
-
const batches = [];
|
|
90
|
-
const placed = new Set(); // IDs already placed in a batch
|
|
91
|
-
const remaining = new Map(stories.map((s) => [s.id, s]));
|
|
92
|
-
// Iteratively build batches until all stories are placed or we detect a deadlock
|
|
93
|
-
while (remaining.size > 0) {
|
|
94
|
-
const batch = [];
|
|
95
|
-
// Find stories whose dependencies are all satisfied (already placed)
|
|
96
|
-
for (const [id, story] of remaining) {
|
|
97
|
-
if (batch.length >= effectiveMaxWorkers) {
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
const storyDeps = deps.get(id) ?? [];
|
|
101
|
-
const allDepsResolved = storyDeps.every((depId) => placed.has(depId));
|
|
102
|
-
if (allDepsResolved) {
|
|
103
|
-
batch.push(story);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
if (batch.length === 0) {
|
|
107
|
-
// Deadlock: remaining stories have circular or unresolvable deps.
|
|
108
|
-
// Place them all in a final batch, respecting maxWorkers per sub-batch.
|
|
109
|
-
const unresolved = [...remaining.values()];
|
|
110
|
-
for (let i = 0; i < unresolved.length; i += effectiveMaxWorkers) {
|
|
111
|
-
batches.push(unresolved.slice(i, i + effectiveMaxWorkers));
|
|
112
|
-
}
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
// Remove placed stories from remaining
|
|
116
|
-
for (const story of batch) {
|
|
117
|
-
remaining.delete(story.id);
|
|
118
|
-
placed.add(story.id);
|
|
119
|
-
}
|
|
120
|
-
batches.push(batch);
|
|
121
|
-
}
|
|
122
|
-
return batches;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Detect whether two stories likely touch the same files, using a simple
|
|
126
|
-
* heuristic: extract file-path-like patterns from each story's text and
|
|
127
|
-
* check for meaningful overlap (more than 1 file in common).
|
|
128
|
-
*
|
|
129
|
-
* @param story1 - First user story
|
|
130
|
-
* @param story2 - Second user story
|
|
131
|
-
* @returns true if there is meaningful file overlap between the two stories
|
|
132
|
-
*/
|
|
133
|
-
export function detectFileConflicts(story1, story2) {
|
|
134
|
-
const files1 = extractFilePaths(getStoryText(story1));
|
|
135
|
-
const files2 = extractFilePaths(getStoryText(story2));
|
|
136
|
-
if (files1.length === 0 || files2.length === 0) {
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
const set1 = new Set(files1);
|
|
140
|
-
const commonFiles = files2.filter((f) => set1.has(f));
|
|
141
|
-
return commonFiles.length > 1;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Build the final parallel execution batches by:
|
|
145
|
-
* 1. Analyzing inter-story dependencies
|
|
146
|
-
* 2. Partitioning into dependency-ordered batches
|
|
147
|
-
* 3. Splitting batches that contain file-conflicting stories
|
|
148
|
-
*
|
|
149
|
-
* @param stories - All pending user stories to execute
|
|
150
|
-
* @param maxWorkers - Maximum concurrent workers
|
|
151
|
-
* @returns Array of batches, each batch safe to run concurrently
|
|
152
|
-
*/
|
|
153
|
-
export function buildParallelBatches(stories, maxWorkers) {
|
|
154
|
-
if (stories.length === 0) {
|
|
155
|
-
return [];
|
|
156
|
-
}
|
|
157
|
-
const deps = analyzeDependencies(stories);
|
|
158
|
-
const rawBatches = partitionForParallel(stories, maxWorkers, deps);
|
|
159
|
-
// Post-process: split batches that have file conflicts
|
|
160
|
-
const finalBatches = [];
|
|
161
|
-
for (const batch of rawBatches) {
|
|
162
|
-
if (batch.length <= 1) {
|
|
163
|
-
finalBatches.push(batch);
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
// Check all pairs in the batch for file conflicts
|
|
167
|
-
const conflictingIndices = new Set();
|
|
168
|
-
for (let i = 0; i < batch.length; i++) {
|
|
169
|
-
for (let j = i + 1; j < batch.length; j++) {
|
|
170
|
-
if (detectFileConflicts(batch[i], batch[j])) {
|
|
171
|
-
conflictingIndices.add(j); // Move the later story out
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
if (conflictingIndices.size === 0) {
|
|
176
|
-
finalBatches.push(batch);
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
// Keep non-conflicting stories in the original batch
|
|
180
|
-
const safe = [];
|
|
181
|
-
const deferred = [];
|
|
182
|
-
for (let i = 0; i < batch.length; i++) {
|
|
183
|
-
if (conflictingIndices.has(i)) {
|
|
184
|
-
deferred.push(batch[i]);
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
safe.push(batch[i]);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
if (safe.length > 0) {
|
|
191
|
-
finalBatches.push(safe);
|
|
192
|
-
}
|
|
193
|
-
// Place each deferred story in its own batch (they conflict with something)
|
|
194
|
-
for (const story of deferred) {
|
|
195
|
-
finalBatches.push([story]);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return finalBatches;
|
|
200
|
-
}
|
|
201
|
-
//# sourceMappingURL=ralph-parallel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ralph-parallel.js","sourceRoot":"","sources":["../../src/core/ralph-parallel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;GAEG;AACH,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAExC;;;GAGG;AACH,MAAM,iBAAiB,GACrB,2GAA2G,CAAC;AAE9G;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAA6B,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE5E,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAmB;IACvC,MAAM,KAAK,GAAa;QACtB,KAAK,CAAC,WAAW,IAAI,EAAE;QACvB,KAAK,CAAC,KAAK,IAAI,EAAE;QACjB,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC;KACpC,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAuB;IACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAE5C,4EAA4E;QAC5E,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAuB,EACvB,UAAkB,EAClB,IAA2B;IAE3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC,CAAC,gCAAgC;IAClE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAuB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/E,iFAAiF;IACjF,OAAO,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAmB,EAAE,CAAC;QAEjC,qEAAqE;QACrE,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;gBACxC,MAAM;YACR,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtE,IAAI,eAAe,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,kEAAkE;YAClE,wEAAwE;YACxE,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM;QACR,CAAC;QAED,uCAAuC;QACvC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAoB,EAAE,MAAoB;IAC5E,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAuB,EACvB,UAAkB;IAElB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAEnE,uDAAuD;IACvD,MAAM,YAAY,GAAqB,EAAE,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,kDAAkD;QAClD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,kBAAkB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAClC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,qDAAqD;YACrD,MAAM,IAAI,GAAmB,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAmB,EAAE,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAED,4EAA4E;YAC5E,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import type { PRDUserStory, PlanCheckpointConfig } from '../types.js';
|
|
2
|
-
/** Signature for the async exec function used by plan generation. */
|
|
3
|
-
export type ExecAsyncFn = (command: string, options: {
|
|
4
|
-
timeout: number;
|
|
5
|
-
}) => Promise<{
|
|
6
|
-
stdout: string;
|
|
7
|
-
}>;
|
|
8
|
-
/** AI tool type accepted by the plan generation step. */
|
|
9
|
-
type PlanTool = 'claude' | 'amp' | 'gemini';
|
|
10
|
-
/**
|
|
11
|
-
* Build the planning-only prompt sent to the AI CLI tool.
|
|
12
|
-
*
|
|
13
|
-
* The prompt asks for an implementation plan without generating any code.
|
|
14
|
-
*/
|
|
15
|
-
export declare function buildPlanPrompt(story: PRDUserStory): string;
|
|
16
|
-
/**
|
|
17
|
-
* Generate an implementation plan for a user story by invoking an AI CLI tool.
|
|
18
|
-
*
|
|
19
|
-
* Uses the same execution pattern as {@link review-manager#runAIReview} — runs
|
|
20
|
-
* the tool binary with the prompt piped via stdin (for Claude) or as an
|
|
21
|
-
* argument (for Gemini / Amp).
|
|
22
|
-
*
|
|
23
|
-
* @returns The plan text, or an empty string if the tool fails or times out.
|
|
24
|
-
*/
|
|
25
|
-
export declare function generateIterationPlan(story: PRDUserStory, tool: PlanTool, _projectRoot: string, execFn?: ExecAsyncFn): Promise<string>;
|
|
26
|
-
/**
|
|
27
|
-
* Display the generated plan in the terminal with a chalk-styled border.
|
|
28
|
-
*
|
|
29
|
-
* Uses simple `console.log` output — no blessed/ncurses dependencies.
|
|
30
|
-
*/
|
|
31
|
-
export declare function displayPlan(plan: string, storyTitle: string): void;
|
|
32
|
-
/** Result returned by the plan approval step. */
|
|
33
|
-
export interface PlanApprovalResult {
|
|
34
|
-
approved: boolean;
|
|
35
|
-
feedback?: string;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Display the plan and interactively request approval from the user.
|
|
39
|
-
*
|
|
40
|
-
* When `autoApproveAfterSeconds` is greater than zero the plan is automatically
|
|
41
|
-
* approved after the specified delay. Otherwise an interactive inquirer prompt
|
|
42
|
-
* is presented with three choices: approve, reject, or edit.
|
|
43
|
-
*
|
|
44
|
-
* @returns Approval result indicating whether to proceed and optional feedback.
|
|
45
|
-
*/
|
|
46
|
-
export declare function requestPlanApproval(plan: string, story: PRDUserStory, autoApproveAfterSeconds: number): Promise<PlanApprovalResult>;
|
|
47
|
-
/**
|
|
48
|
-
* Determine whether a plan checkpoint should be executed for the given story.
|
|
49
|
-
*
|
|
50
|
-
* Returns `false` when:
|
|
51
|
-
* - The checkpoint feature is disabled.
|
|
52
|
-
* - The session is non-interactive (CI, --yes flag, piped stdin).
|
|
53
|
-
* - `requireApprovalForStories` is `'none'`.
|
|
54
|
-
* - `requireApprovalForStories` is `'failed'` but the story already passes.
|
|
55
|
-
*/
|
|
56
|
-
export declare function shouldRunCheckpoint(config: PlanCheckpointConfig, story: PRDUserStory, isNonInteractive: boolean): boolean;
|
|
57
|
-
export {};
|
|
58
|
-
//# sourceMappingURL=ralph-plan-checkpoint.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ralph-plan-checkpoint.d.ts","sourceRoot":"","sources":["../../src/core/ralph-plan-checkpoint.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAItE,qEAAqE;AACrE,MAAM,MAAM,WAAW,GAAG,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KACzB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjC,yDAAyD;AACzD,KAAK,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;AAI5C;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAmB3D;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,WAA8B,GACrC,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAID;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAiBlE;AAID,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,uBAAuB,EAAE,MAAM,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA6C7B;AAID;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,YAAY,EACnB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAmBT"}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { exec } from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
const defaultExecAsync = promisify(exec);
|
|
5
|
-
// ─── Plan generation ─────────────────────────────────────────────────────────
|
|
6
|
-
/**
|
|
7
|
-
* Build the planning-only prompt sent to the AI CLI tool.
|
|
8
|
-
*
|
|
9
|
-
* The prompt asks for an implementation plan without generating any code.
|
|
10
|
-
*/
|
|
11
|
-
export function buildPlanPrompt(story) {
|
|
12
|
-
const criteria = story.acceptanceCriteria.map((c) => `- ${c}`).join('\n');
|
|
13
|
-
return [
|
|
14
|
-
'You are planning (NOT implementing) a solution for this story:',
|
|
15
|
-
'',
|
|
16
|
-
`Story: ${story.title}`,
|
|
17
|
-
`Description: ${story.description}`,
|
|
18
|
-
`Acceptance Criteria:`,
|
|
19
|
-
criteria,
|
|
20
|
-
'',
|
|
21
|
-
'Provide a detailed implementation plan covering:',
|
|
22
|
-
'1. Files to create/modify',
|
|
23
|
-
'2. Key design decisions',
|
|
24
|
-
'3. Potential risks or blockers',
|
|
25
|
-
'4. Estimated implementation steps',
|
|
26
|
-
'',
|
|
27
|
-
'IMPORTANT: Output ONLY the plan. Do NOT implement or generate code.',
|
|
28
|
-
].join('\n');
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Generate an implementation plan for a user story by invoking an AI CLI tool.
|
|
32
|
-
*
|
|
33
|
-
* Uses the same execution pattern as {@link review-manager#runAIReview} — runs
|
|
34
|
-
* the tool binary with the prompt piped via stdin (for Claude) or as an
|
|
35
|
-
* argument (for Gemini / Amp).
|
|
36
|
-
*
|
|
37
|
-
* @returns The plan text, or an empty string if the tool fails or times out.
|
|
38
|
-
*/
|
|
39
|
-
export async function generateIterationPlan(story, tool, _projectRoot, execFn = defaultExecAsync) {
|
|
40
|
-
const prompt = buildPlanPrompt(story);
|
|
41
|
-
const commands = {
|
|
42
|
-
claude: 'claude',
|
|
43
|
-
gemini: 'gemini',
|
|
44
|
-
amp: 'amp',
|
|
45
|
-
};
|
|
46
|
-
const binary = commands[tool];
|
|
47
|
-
const flag = tool === 'gemini' ? '' : '-p';
|
|
48
|
-
// Pipe prompt via stdin to avoid shell escaping and arg-length issues
|
|
49
|
-
const escapedPrompt = prompt.replace(/'/g, "'\\''");
|
|
50
|
-
const command = flag
|
|
51
|
-
? `echo '${escapedPrompt}' | ${binary} ${flag} -`
|
|
52
|
-
: `${binary} '${escapedPrompt}'`;
|
|
53
|
-
try {
|
|
54
|
-
const { stdout } = await execFn(command, { timeout: 120_000 });
|
|
55
|
-
return stdout.trim();
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
return '';
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
// ─── Plan display ────────────────────────────────────────────────────────────
|
|
62
|
-
/**
|
|
63
|
-
* Display the generated plan in the terminal with a chalk-styled border.
|
|
64
|
-
*
|
|
65
|
-
* Uses simple `console.log` output — no blessed/ncurses dependencies.
|
|
66
|
-
*/
|
|
67
|
-
export function displayPlan(plan, storyTitle) {
|
|
68
|
-
const maxWidth = 60;
|
|
69
|
-
const titleLine = ` Story: ${storyTitle}`;
|
|
70
|
-
const headerLine = ' Implementation Plan';
|
|
71
|
-
const width = Math.max(maxWidth, headerLine.length + 4, titleLine.length + 4);
|
|
72
|
-
const top = chalk.cyan(`${'='.repeat(width + 4)}`);
|
|
73
|
-
const bottom = chalk.cyan(`${'='.repeat(width + 4)}`);
|
|
74
|
-
console.log('');
|
|
75
|
-
console.log(top);
|
|
76
|
-
console.log(chalk.cyan.bold(headerLine));
|
|
77
|
-
console.log(chalk.cyan(titleLine));
|
|
78
|
-
console.log(bottom);
|
|
79
|
-
console.log('');
|
|
80
|
-
console.log(plan);
|
|
81
|
-
console.log('');
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Display the plan and interactively request approval from the user.
|
|
85
|
-
*
|
|
86
|
-
* When `autoApproveAfterSeconds` is greater than zero the plan is automatically
|
|
87
|
-
* approved after the specified delay. Otherwise an interactive inquirer prompt
|
|
88
|
-
* is presented with three choices: approve, reject, or edit.
|
|
89
|
-
*
|
|
90
|
-
* @returns Approval result indicating whether to proceed and optional feedback.
|
|
91
|
-
*/
|
|
92
|
-
export async function requestPlanApproval(plan, story, autoApproveAfterSeconds) {
|
|
93
|
-
displayPlan(plan, story.title);
|
|
94
|
-
// Auto-approve path
|
|
95
|
-
if (autoApproveAfterSeconds > 0) {
|
|
96
|
-
console.log(chalk.yellow(` Auto-approving in ${autoApproveAfterSeconds} seconds... (Ctrl+C to abort)`));
|
|
97
|
-
await new Promise((resolve) => setTimeout(resolve, autoApproveAfterSeconds * 1000));
|
|
98
|
-
console.log(chalk.green(' Plan auto-approved.'));
|
|
99
|
-
return { approved: true };
|
|
100
|
-
}
|
|
101
|
-
// Interactive prompt path
|
|
102
|
-
const inquirer = (await import('inquirer')).default;
|
|
103
|
-
const { action } = await inquirer.prompt([
|
|
104
|
-
{
|
|
105
|
-
type: 'list',
|
|
106
|
-
name: 'action',
|
|
107
|
-
message: 'Review plan:',
|
|
108
|
-
choices: [
|
|
109
|
-
{ name: 'approve', value: 'approve' },
|
|
110
|
-
{ name: 'reject', value: 'reject' },
|
|
111
|
-
{ name: 'edit', value: 'edit' },
|
|
112
|
-
],
|
|
113
|
-
},
|
|
114
|
-
]);
|
|
115
|
-
if (action === 'approve') {
|
|
116
|
-
return { approved: true };
|
|
117
|
-
}
|
|
118
|
-
const feedbackMessage = action === 'reject' ? 'Reason for rejection?' : 'What needs to change?';
|
|
119
|
-
const { feedback } = await inquirer.prompt([
|
|
120
|
-
{
|
|
121
|
-
type: 'input',
|
|
122
|
-
name: 'feedback',
|
|
123
|
-
message: feedbackMessage,
|
|
124
|
-
},
|
|
125
|
-
]);
|
|
126
|
-
return { approved: false, feedback };
|
|
127
|
-
}
|
|
128
|
-
// ─── Checkpoint gate ─────────────────────────────────────────────────────────
|
|
129
|
-
/**
|
|
130
|
-
* Determine whether a plan checkpoint should be executed for the given story.
|
|
131
|
-
*
|
|
132
|
-
* Returns `false` when:
|
|
133
|
-
* - The checkpoint feature is disabled.
|
|
134
|
-
* - The session is non-interactive (CI, --yes flag, piped stdin).
|
|
135
|
-
* - `requireApprovalForStories` is `'none'`.
|
|
136
|
-
* - `requireApprovalForStories` is `'failed'` but the story already passes.
|
|
137
|
-
*/
|
|
138
|
-
export function shouldRunCheckpoint(config, story, isNonInteractive) {
|
|
139
|
-
if (!config.enabled) {
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
|
-
if (isNonInteractive) {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
if (config.requireApprovalForStories === 'none') {
|
|
146
|
-
return false;
|
|
147
|
-
}
|
|
148
|
-
if (config.requireApprovalForStories === 'all') {
|
|
149
|
-
return true;
|
|
150
|
-
}
|
|
151
|
-
// 'failed' — only checkpoint stories that haven't passed yet
|
|
152
|
-
return !story.passes;
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=ralph-plan-checkpoint.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ralph-plan-checkpoint.js","sourceRoot":"","sources":["../../src/core/ralph-plan-checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Install Ralph shell scripts into the project's `.rulebook/scripts/` directory.
|
|
3
|
-
*
|
|
4
|
-
* Copies `.sh` and `.bat` script pairs from the templates directory.
|
|
5
|
-
* Sets executable permissions (0o755) on `.sh` files on non-Windows platforms.
|
|
6
|
-
* Idempotent: overwrites existing scripts without error.
|
|
7
|
-
*
|
|
8
|
-
* @param projectRoot - Absolute path to the project root directory.
|
|
9
|
-
* @returns List of installed file paths (relative to projectRoot).
|
|
10
|
-
*/
|
|
11
|
-
export declare function installRalphScripts(projectRoot: string): Promise<string[]>;
|
|
12
|
-
//# sourceMappingURL=ralph-scripts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ralph-scripts.d.ts","sourceRoot":"","sources":["../../src/core/ralph-scripts.ts"],"names":[],"mappings":"AAsBA;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA0BhF"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import { fileURLToPath } from 'url';
|
|
3
|
-
import { copyFile, ensureDir, writeShellScript } from '../utils/file-system.js';
|
|
4
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = path.dirname(__filename);
|
|
6
|
-
/** Resolve templates/ralph directory (handles both dev and production). */
|
|
7
|
-
function getRalphTemplatesDir() {
|
|
8
|
-
return path.join(__dirname, '..', '..', 'templates', 'ralph');
|
|
9
|
-
}
|
|
10
|
-
const RALPH_SCRIPTS = [
|
|
11
|
-
'ralph-init',
|
|
12
|
-
'ralph-run',
|
|
13
|
-
'ralph-status',
|
|
14
|
-
'ralph-pause',
|
|
15
|
-
'ralph-history',
|
|
16
|
-
];
|
|
17
|
-
const SCRIPT_EXTENSIONS = ['.sh', '.bat'];
|
|
18
|
-
/**
|
|
19
|
-
* Install Ralph shell scripts into the project's `.rulebook/scripts/` directory.
|
|
20
|
-
*
|
|
21
|
-
* Copies `.sh` and `.bat` script pairs from the templates directory.
|
|
22
|
-
* Sets executable permissions (0o755) on `.sh` files on non-Windows platforms.
|
|
23
|
-
* Idempotent: overwrites existing scripts without error.
|
|
24
|
-
*
|
|
25
|
-
* @param projectRoot - Absolute path to the project root directory.
|
|
26
|
-
* @returns List of installed file paths (relative to projectRoot).
|
|
27
|
-
*/
|
|
28
|
-
export async function installRalphScripts(projectRoot) {
|
|
29
|
-
const templatesDir = getRalphTemplatesDir();
|
|
30
|
-
const scriptsDir = path.join(projectRoot, '.rulebook', 'scripts');
|
|
31
|
-
await ensureDir(scriptsDir);
|
|
32
|
-
const installed = [];
|
|
33
|
-
for (const scriptName of RALPH_SCRIPTS) {
|
|
34
|
-
for (const ext of SCRIPT_EXTENSIONS) {
|
|
35
|
-
const filename = `${scriptName}${ext}`;
|
|
36
|
-
const source = path.join(templatesDir, filename);
|
|
37
|
-
const destination = path.join(scriptsDir, filename);
|
|
38
|
-
if (ext === '.sh') {
|
|
39
|
-
// Normalize line endings to LF and set 0o755 on POSIX.
|
|
40
|
-
await writeShellScript(destination, { sourcePath: source });
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
await copyFile(source, destination);
|
|
44
|
-
}
|
|
45
|
-
installed.push(path.join('.rulebook', 'scripts', filename));
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return installed;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=ralph-scripts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ralph-scripts.js","sourceRoot":"","sources":["../../src/core/ralph-scripts.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,2EAA2E;AAC3E,SAAS,oBAAoB;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,aAAa,GAAG;IACpB,YAAY;IACZ,WAAW;IACX,cAAc;IACd,aAAa;IACb,eAAe;CACP,CAAC;AAEX,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAU,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IAC3D,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAElE,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;IAE5B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,GAAG,UAAU,GAAG,GAAG,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEpD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,uDAAuD;gBACvD,MAAM,gBAAgB,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACtC,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
export interface ReviewIssue {
|
|
2
|
-
severity: 'critical' | 'major' | 'minor' | 'suggestion';
|
|
3
|
-
file?: string;
|
|
4
|
-
line?: number;
|
|
5
|
-
message: string;
|
|
6
|
-
code?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface ReviewResult {
|
|
9
|
-
summary: string;
|
|
10
|
-
issues: ReviewIssue[];
|
|
11
|
-
suggestions: string[];
|
|
12
|
-
/** True when no critical or major issues are present. */
|
|
13
|
-
approved: boolean;
|
|
14
|
-
}
|
|
15
|
-
export type ReviewOutputFormat = 'terminal' | 'github-comment' | 'json';
|
|
16
|
-
export type ReviewFailOnSeverity = 'critical' | 'major' | 'minor';
|
|
17
|
-
export type ReviewTool = 'claude' | 'gemini' | 'amp';
|
|
18
|
-
/**
|
|
19
|
-
* Retrieve the git diff between the current HEAD and a base branch.
|
|
20
|
-
*
|
|
21
|
-
* Returns an empty string when:
|
|
22
|
-
* - The working directory is not a git repo.
|
|
23
|
-
* - There is no diff between the branches.
|
|
24
|
-
* - An error occurs during execution.
|
|
25
|
-
*
|
|
26
|
-
* The returned string is truncated to {@link MAX_DIFF_LENGTH} characters.
|
|
27
|
-
*/
|
|
28
|
-
export declare function getDiffContext(projectRoot: string, baseBranch?: string): Promise<string>;
|
|
29
|
-
/**
|
|
30
|
-
* Build a structured review prompt suitable for an AI code reviewer.
|
|
31
|
-
*/
|
|
32
|
-
export declare function buildReviewPrompt(diff: string, context: {
|
|
33
|
-
agentsMdContent?: string;
|
|
34
|
-
projectName?: string;
|
|
35
|
-
}): string;
|
|
36
|
-
/**
|
|
37
|
-
* Parse the raw AI output into a structured {@link ReviewResult}.
|
|
38
|
-
*
|
|
39
|
-
* Handles missing sections gracefully — every field has a sensible default.
|
|
40
|
-
*/
|
|
41
|
-
export declare function parseReviewOutput(output: string): ReviewResult;
|
|
42
|
-
/**
|
|
43
|
-
* Run the specified AI CLI tool with the given prompt.
|
|
44
|
-
*
|
|
45
|
-
* Returns the tool's stdout. On any error (timeout, missing tool, etc.)
|
|
46
|
-
* returns an empty string.
|
|
47
|
-
*/
|
|
48
|
-
export declare function runAIReview(prompt: string, tool?: ReviewTool): Promise<string>;
|
|
49
|
-
/**
|
|
50
|
-
* Format a {@link ReviewResult} as a chalk-colored terminal string.
|
|
51
|
-
*/
|
|
52
|
-
export declare function formatReviewTerminal(result: ReviewResult): string;
|
|
53
|
-
/**
|
|
54
|
-
* Format a {@link ReviewResult} as a GitHub-flavored markdown comment.
|
|
55
|
-
*/
|
|
56
|
-
export declare function formatReviewMarkdown(result: ReviewResult): string;
|
|
57
|
-
/**
|
|
58
|
-
* Post a review result as a PR comment using the `gh` CLI.
|
|
59
|
-
*
|
|
60
|
-
* When `prNumber` is omitted the `gh` CLI auto-detects the current PR
|
|
61
|
-
* from the branch.
|
|
62
|
-
*/
|
|
63
|
-
export declare function postGitHubComment(result: ReviewResult, prNumber?: string): Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* Check whether any issue meets or exceeds the given severity threshold.
|
|
66
|
-
*
|
|
67
|
-
* Returns `true` when at least one issue is at the threshold level or higher.
|
|
68
|
-
*/
|
|
69
|
-
export declare function hasFailingIssues(issues: readonly ReviewIssue[], failOn: ReviewFailOnSeverity): boolean;
|
|
70
|
-
/**
|
|
71
|
-
* Read AGENTS.md from the given project root, if it exists.
|
|
72
|
-
*/
|
|
73
|
-
export declare function readAgentsMd(projectRoot: string): Promise<string | undefined>;
|
|
74
|
-
//# sourceMappingURL=review-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review-manager.d.ts","sourceRoot":"","sources":["../../src/core/review-manager.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,yDAAyD;IACzD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAExE,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAIrD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,MAAe,GAC1B,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAID;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,MAAM,CAiCR;AAWD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAW9D;AA4ED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,UAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB9F;AAkBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA2DjE;AAoBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAyCjE;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY9F;AAWD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAGT;AAID;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAMnF"}
|