@hivehub/rulebook 3.3.1 → 4.0.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/continue.md +33 -0
- package/.claude-plugin/marketplace.json +28 -29
- package/.claude-plugin/plugin.json +8 -8
- package/README.md +32 -144
- package/dist/agents/ralph-parser.d.ts +44 -5
- package/dist/agents/ralph-parser.d.ts.map +1 -1
- package/dist/agents/ralph-parser.js +218 -26
- package/dist/agents/ralph-parser.js.map +1 -1
- package/dist/cli/commands.d.ts +65 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +841 -175
- package/dist/cli/commands.js.map +1 -1
- package/dist/core/agent-manager.d.ts +12 -32
- package/dist/core/agent-manager.d.ts.map +1 -1
- package/dist/core/agent-manager.js +150 -220
- package/dist/core/agent-manager.js.map +1 -1
- package/dist/core/claude-mcp.d.ts +17 -0
- package/dist/core/claude-mcp.d.ts.map +1 -1
- package/dist/core/claude-mcp.js +90 -6
- package/dist/core/claude-mcp.js.map +1 -1
- package/dist/core/cli-bridge.js +1 -1
- package/dist/core/cli-bridge.js.map +1 -1
- package/dist/core/config-manager.d.ts.map +1 -1
- package/dist/core/config-manager.js +40 -0
- package/dist/core/config-manager.js.map +1 -1
- package/dist/core/cursor-mdc-generator.d.ts +30 -0
- package/dist/core/cursor-mdc-generator.d.ts.map +1 -0
- package/dist/core/cursor-mdc-generator.js +98 -0
- package/dist/core/cursor-mdc-generator.js.map +1 -0
- package/dist/core/detector.d.ts +25 -1
- package/dist/core/detector.d.ts.map +1 -1
- package/dist/core/detector.js +321 -1
- package/dist/core/detector.js.map +1 -1
- package/dist/core/generator.d.ts +10 -0
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +182 -9
- package/dist/core/generator.js.map +1 -1
- package/dist/core/github-issues-importer.d.ts +82 -0
- package/dist/core/github-issues-importer.d.ts.map +1 -0
- package/dist/core/github-issues-importer.js +161 -0
- package/dist/core/github-issues-importer.js.map +1 -0
- package/dist/core/health-scorer.d.ts +39 -0
- package/dist/core/health-scorer.d.ts.map +1 -1
- package/dist/core/health-scorer.js +256 -13
- package/dist/core/health-scorer.js.map +1 -1
- package/dist/core/iteration-tracker.d.ts +28 -0
- package/dist/core/iteration-tracker.d.ts.map +1 -1
- package/dist/core/iteration-tracker.js +86 -0
- package/dist/core/iteration-tracker.js.map +1 -1
- package/dist/core/logger.js +1 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/migrator.js +1 -1
- package/dist/core/migrator.js.map +1 -1
- package/dist/core/modern-console.d.ts +1 -2
- package/dist/core/modern-console.d.ts.map +1 -1
- package/dist/core/modern-console.js +6 -18
- package/dist/core/modern-console.js.map +1 -1
- package/dist/core/multi-tool-generator.d.ts +59 -0
- package/dist/core/multi-tool-generator.d.ts.map +1 -0
- package/dist/core/multi-tool-generator.js +157 -0
- package/dist/core/multi-tool-generator.js.map +1 -0
- package/dist/core/override-manager.d.ts +23 -0
- package/dist/core/override-manager.d.ts.map +1 -0
- package/dist/core/override-manager.js +82 -0
- package/dist/core/override-manager.js.map +1 -0
- package/dist/core/plans-manager.d.ts +46 -0
- package/dist/core/plans-manager.d.ts.map +1 -0
- package/dist/core/plans-manager.js +158 -0
- package/dist/core/plans-manager.js.map +1 -0
- package/dist/core/prd-generator.d.ts +12 -0
- package/dist/core/prd-generator.d.ts.map +1 -1
- package/dist/core/prd-generator.js +91 -2
- package/dist/core/prd-generator.js.map +1 -1
- package/dist/core/ralph-manager.d.ts +81 -1
- package/dist/core/ralph-manager.d.ts.map +1 -1
- package/dist/core/ralph-manager.js +214 -4
- package/dist/core/ralph-manager.js.map +1 -1
- package/dist/core/ralph-parallel.d.ts +55 -0
- package/dist/core/ralph-parallel.d.ts.map +1 -0
- package/dist/core/ralph-parallel.js +201 -0
- package/dist/core/ralph-parallel.js.map +1 -0
- package/dist/core/ralph-plan-checkpoint.d.ts +58 -0
- package/dist/core/ralph-plan-checkpoint.d.ts.map +1 -0
- package/dist/core/ralph-plan-checkpoint.js +154 -0
- package/dist/core/ralph-plan-checkpoint.js.map +1 -0
- package/dist/core/ralph-scripts.d.ts +12 -0
- package/dist/core/ralph-scripts.d.ts.map +1 -0
- package/dist/core/ralph-scripts.js +49 -0
- package/dist/core/ralph-scripts.js.map +1 -0
- package/dist/core/review-manager.d.ts +74 -0
- package/dist/core/review-manager.d.ts.map +1 -0
- package/dist/core/review-manager.js +371 -0
- package/dist/core/review-manager.js.map +1 -0
- package/dist/core/task-manager.d.ts +1 -1
- package/dist/core/task-manager.js +1 -1
- package/dist/core/workflow-generator.js +1 -1
- package/dist/core/workflow-generator.js.map +1 -1
- package/dist/index.js +96 -4
- package/dist/index.js.map +1 -1
- package/dist/mcp/rulebook-server.d.ts.map +1 -1
- package/dist/mcp/rulebook-server.js +300 -164
- package/dist/mcp/rulebook-server.js.map +1 -1
- package/dist/memory/memory-store.d.ts.map +1 -1
- package/dist/memory/memory-store.js +4 -0
- package/dist/memory/memory-store.js.map +1 -1
- package/dist/types.d.ts +55 -34
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/agents/implementer.md +35 -0
- package/templates/agents/researcher.md +34 -0
- package/templates/agents/team-lead.md +34 -0
- package/templates/agents/tester.md +42 -0
- package/templates/ci/rulebook-review.yml +26 -0
- package/templates/core/AGENTS_LEAN.md +25 -0
- package/templates/core/AGENTS_OVERRIDE.md +16 -0
- package/templates/core/MULTI_AGENT.md +74 -0
- package/templates/core/PLANS.md +28 -0
- package/templates/core/RALPH.md +45 -4
- package/templates/ides/CONTINUE_RULES.md +16 -0
- package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -0
- package/templates/ides/GEMINI_RULES.md +17 -0
- package/templates/ides/WINDSURF_RULES.md +14 -0
- package/templates/ides/cursor-mdc/go.mdc +24 -0
- package/templates/ides/cursor-mdc/python.mdc +24 -0
- package/templates/ides/cursor-mdc/quality.mdc +25 -0
- package/templates/ides/cursor-mdc/ralph.mdc +39 -0
- package/templates/ides/cursor-mdc/rulebook.mdc +38 -0
- package/templates/ides/cursor-mdc/rust.mdc +24 -0
- package/templates/ides/cursor-mdc/typescript.mdc +25 -0
- package/templates/modules/sequential-thinking.md +42 -0
- package/templates/ralph/ralph-history.bat +4 -0
- package/templates/ralph/ralph-history.sh +5 -0
- package/templates/ralph/ralph-init.bat +5 -0
- package/templates/ralph/ralph-init.sh +5 -0
- package/templates/ralph/ralph-pause.bat +5 -0
- package/templates/ralph/ralph-pause.sh +5 -0
- package/templates/ralph/ralph-run.bat +5 -0
- package/templates/ralph/ralph-run.sh +5 -0
- package/templates/ralph/ralph-status.bat +4 -0
- package/templates/ralph/ralph-status.sh +5 -0
- package/templates/services/DATADOG.md +26 -0
- package/templates/services/DOCKER.md +124 -0
- package/templates/services/DOCKER_COMPOSE.md +168 -0
- package/templates/services/HELM.md +194 -0
- package/templates/services/KUBERNETES.md +208 -0
- package/templates/services/OPENTELEMETRY.md +25 -0
- package/templates/services/PINO.md +24 -0
- package/templates/services/PROMETHEUS.md +33 -0
- package/templates/services/SENTRY.md +23 -0
- package/templates/services/WINSTON.md +30 -0
- package/dist/core/openspec-manager.d.ts +0 -133
- package/dist/core/openspec-manager.d.ts.map +0 -1
- package/dist/core/openspec-manager.js +0 -596
- package/dist/core/openspec-manager.js.map +0 -1
- package/dist/core/openspec-migrator.d.ts +0 -27
- package/dist/core/openspec-migrator.d.ts.map +0 -1
- package/dist/core/openspec-migrator.js +0 -262
- package/dist/core/openspec-migrator.js.map +0 -1
- package/dist/core/test-task-manager.d.ts +0 -49
- package/dist/core/test-task-manager.d.ts.map +0 -1
- package/dist/core/test-task-manager.js +0 -121
- package/dist/core/test-task-manager.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rulebook-server.d.ts","sourceRoot":"","sources":["../../src/mcp/rulebook-server.ts"],"names":[],"mappings":";AAaA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAalE;
|
|
1
|
+
{"version":3,"file":"rulebook-server.d.ts","sourceRoot":"","sources":["../../src/mcp/rulebook-server.ts"],"names":[],"mappings":";AAaA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAalE;AA2CD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CA04C5D"}
|
|
@@ -22,7 +22,12 @@ export function findRulebookConfig(startDir) {
|
|
|
22
22
|
}
|
|
23
23
|
// Load configuration
|
|
24
24
|
function loadConfig() {
|
|
25
|
-
|
|
25
|
+
// Use --project-root flag as starting directory when provided
|
|
26
|
+
const projectRootFlagIndex = process.argv.indexOf('--project-root');
|
|
27
|
+
const startDir = projectRootFlagIndex !== -1 && process.argv[projectRootFlagIndex + 1]
|
|
28
|
+
? process.argv[projectRootFlagIndex + 1]
|
|
29
|
+
: process.cwd();
|
|
30
|
+
const rulebookPath = findRulebookConfig(startDir);
|
|
26
31
|
if (!rulebookPath) {
|
|
27
32
|
console.error('[rulebook-mcp] .rulebook not found. Run `rulebook mcp init` in your project.');
|
|
28
33
|
process.exit(1);
|
|
@@ -55,7 +60,7 @@ export async function startRulebookMcpServer() {
|
|
|
55
60
|
const configManager = new ConfigManager(config.projectRoot);
|
|
56
61
|
const server = new McpServer({
|
|
57
62
|
name: 'rulebook-task-management',
|
|
58
|
-
version: '
|
|
63
|
+
version: '4.0.0',
|
|
59
64
|
});
|
|
60
65
|
// Register tool: rulebook_task_create
|
|
61
66
|
server.registerTool('rulebook_task_create', {
|
|
@@ -544,6 +549,8 @@ export async function startRulebookMcpServer() {
|
|
|
544
549
|
if (rulebookConfig.memory?.enabled) {
|
|
545
550
|
try {
|
|
546
551
|
const { createMemoryManager } = await import('../memory/memory-manager.js');
|
|
552
|
+
const memoryDbPath = join(config.projectRoot, rulebookConfig.memory.dbPath ?? '.rulebook/memory/memory.db');
|
|
553
|
+
console.error(`[rulebook-mcp] Memory DB: ${memoryDbPath}`);
|
|
547
554
|
memoryManager = createMemoryManager(config.projectRoot, rulebookConfig.memory);
|
|
548
555
|
autoCaptureEnabled = rulebookConfig.memory.autoCapture !== false; // enabled by default when memory is on
|
|
549
556
|
}
|
|
@@ -781,11 +788,13 @@ export async function startRulebookMcpServer() {
|
|
|
781
788
|
const configData = await configManager.loadConfig();
|
|
782
789
|
const maxIterations = configData.ralph?.maxIterations || 10;
|
|
783
790
|
const tool = (configData.ralph?.tool || 'claude');
|
|
784
|
-
|
|
791
|
+
// Generate PRD first, then initialize with correct task count
|
|
785
792
|
const prd = await prdGenerator.generatePRD(basename(config.projectRoot) || 'project');
|
|
786
793
|
const { writeFile } = await import('../utils/file-system.js');
|
|
787
794
|
const prdPath = join(config.projectRoot, '.rulebook', 'ralph', 'prd.json');
|
|
788
795
|
await writeFile(prdPath, JSON.stringify(prd, null, 2));
|
|
796
|
+
// Initialize after PRD is written so task count is correct
|
|
797
|
+
await ralphManager.initialize(maxIterations, tool);
|
|
789
798
|
return {
|
|
790
799
|
content: [
|
|
791
800
|
{
|
|
@@ -826,182 +835,297 @@ export async function startRulebookMcpServer() {
|
|
|
826
835
|
const { RalphManager } = await import('../core/ralph-manager.js');
|
|
827
836
|
const { RalphParser } = await import('../agents/ralph-parser.js');
|
|
828
837
|
const { spawn } = await import('child_process');
|
|
838
|
+
const { execSync } = await import('child_process');
|
|
829
839
|
const logger = new Logger(config.projectRoot);
|
|
830
840
|
const ralphManager = new RalphManager(config.projectRoot, logger);
|
|
831
841
|
const configData = await configManager.loadConfig();
|
|
832
842
|
const maxIterations = args.maxIterations || configData.ralph?.maxIterations || 10;
|
|
833
843
|
const tool = (args.tool || configData.ralph?.tool || 'claude');
|
|
834
|
-
//
|
|
835
|
-
const
|
|
836
|
-
if (!
|
|
837
|
-
await ralphManager.
|
|
844
|
+
// ── Concurrency guard: prevent multiple simultaneous Ralph runs ──
|
|
845
|
+
const lockAcquired = await ralphManager.acquireLock(tool);
|
|
846
|
+
if (!lockAcquired) {
|
|
847
|
+
const lockInfo = await ralphManager.getLockInfo();
|
|
848
|
+
return {
|
|
849
|
+
content: [
|
|
850
|
+
{
|
|
851
|
+
type: 'text',
|
|
852
|
+
text: JSON.stringify({
|
|
853
|
+
success: false,
|
|
854
|
+
error: `Ralph is already running (PID ${lockInfo?.pid}, started ${lockInfo?.startedAt}, task: ${lockInfo?.currentTask || 'starting'}, iteration: ${lockInfo?.iteration || 0}). Wait for it to finish or check ralph_status. Do NOT start another run.`,
|
|
855
|
+
}),
|
|
856
|
+
},
|
|
857
|
+
],
|
|
858
|
+
};
|
|
838
859
|
}
|
|
839
|
-
//
|
|
840
|
-
const
|
|
841
|
-
|
|
842
|
-
let stderr = '';
|
|
843
|
-
const proc = spawn(cmd, cmdArgs, {
|
|
844
|
-
cwd: config.projectRoot,
|
|
845
|
-
shell: true,
|
|
846
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
847
|
-
});
|
|
848
|
-
proc.stdout?.on('data', (d) => {
|
|
849
|
-
stdout += d.toString();
|
|
850
|
-
});
|
|
851
|
-
proc.stderr?.on('data', (d) => {
|
|
852
|
-
stderr += d.toString();
|
|
853
|
-
});
|
|
854
|
-
proc.on('close', (code) => resolve({ code: code ?? 1, stdout, stderr }));
|
|
855
|
-
proc.on('error', (err) => resolve({ code: 1, stdout, stderr: err.message }));
|
|
856
|
-
});
|
|
857
|
-
// Helper: build prompt for AI agent
|
|
858
|
-
const buildPrompt = (task, prd) => {
|
|
859
|
-
const criteria = (task.acceptanceCriteria || [])
|
|
860
|
-
.map((c) => `- ${c}`)
|
|
861
|
-
.join('\n');
|
|
862
|
-
return [
|
|
863
|
-
`You are working on project: ${prd?.project || 'unknown'}`,
|
|
864
|
-
``,
|
|
865
|
-
`## Current Task: ${task.title}`,
|
|
866
|
-
`ID: ${task.id}`,
|
|
867
|
-
``,
|
|
868
|
-
`## Description`,
|
|
869
|
-
task.description,
|
|
870
|
-
``,
|
|
871
|
-
`## Acceptance Criteria`,
|
|
872
|
-
criteria,
|
|
873
|
-
``,
|
|
874
|
-
task.notes ? `## Notes\n${task.notes}\n` : '',
|
|
875
|
-
`## Instructions`,
|
|
876
|
-
`1. Implement the changes described above`,
|
|
877
|
-
`2. Ensure all acceptance criteria are met`,
|
|
878
|
-
`3. Run quality checks: type-check, lint, tests`,
|
|
879
|
-
`4. Fix any issues found by quality checks`,
|
|
880
|
-
`5. When done, summarize what was changed`,
|
|
881
|
-
]
|
|
882
|
-
.filter(Boolean)
|
|
883
|
-
.join('\n');
|
|
860
|
+
// Ensure lock is released on exit, even on crashes
|
|
861
|
+
const cleanupLock = async () => {
|
|
862
|
+
await ralphManager.releaseLock();
|
|
884
863
|
};
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
},
|
|
894
|
-
amp: { cmd: 'amp', args: ['-p', prompt], stdinPrompt: false },
|
|
895
|
-
gemini: { cmd: 'gemini', args: ['-p', prompt], stdinPrompt: false },
|
|
864
|
+
process.on('SIGTERM', cleanupLock);
|
|
865
|
+
process.on('SIGINT', cleanupLock);
|
|
866
|
+
try {
|
|
867
|
+
// Validate tool is available before starting
|
|
868
|
+
const toolCmdNames = {
|
|
869
|
+
claude: 'claude',
|
|
870
|
+
amp: 'amp',
|
|
871
|
+
gemini: 'gemini',
|
|
896
872
|
};
|
|
897
|
-
const
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
873
|
+
const toolCmd = toolCmdNames[tool] || 'claude';
|
|
874
|
+
try {
|
|
875
|
+
execSync(`${toolCmd} --version`, { stdio: 'pipe', timeout: 10000 });
|
|
876
|
+
}
|
|
877
|
+
catch {
|
|
878
|
+
return {
|
|
879
|
+
content: [
|
|
880
|
+
{
|
|
881
|
+
type: 'text',
|
|
882
|
+
text: JSON.stringify({
|
|
883
|
+
success: false,
|
|
884
|
+
error: `CLI tool "${toolCmd}" not found or not responding. Install it first: https://docs.anthropic.com/claude-code`,
|
|
885
|
+
}),
|
|
886
|
+
},
|
|
887
|
+
],
|
|
888
|
+
};
|
|
889
|
+
}
|
|
890
|
+
// Resume existing state if available, otherwise initialize fresh
|
|
891
|
+
const existingState = await ralphManager.getStatus();
|
|
892
|
+
if (!existingState) {
|
|
893
|
+
await ralphManager.initialize(maxIterations, tool);
|
|
906
894
|
}
|
|
907
|
-
|
|
908
|
-
|
|
895
|
+
// Helper: run a shell command and return stdout
|
|
896
|
+
const runCmd = (cmd, cmdArgs) => new Promise((resolve) => {
|
|
897
|
+
let stdout = '';
|
|
898
|
+
let stderr = '';
|
|
899
|
+
const proc = spawn(cmd, cmdArgs, {
|
|
900
|
+
cwd: config.projectRoot,
|
|
901
|
+
shell: true,
|
|
902
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
903
|
+
});
|
|
904
|
+
proc.stdout?.on('data', (d) => {
|
|
905
|
+
stdout += d.toString();
|
|
906
|
+
});
|
|
907
|
+
proc.stderr?.on('data', (d) => {
|
|
908
|
+
stderr += d.toString();
|
|
909
|
+
});
|
|
910
|
+
proc.on('close', (code) => resolve({ code: code ?? 1, stdout, stderr }));
|
|
911
|
+
proc.on('error', (err) => resolve({ code: 1, stdout, stderr: err.message }));
|
|
909
912
|
});
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
913
|
+
// Helper: build prompt for AI agent
|
|
914
|
+
const buildPrompt = (task, projectName) => {
|
|
915
|
+
const criteria = (task.acceptanceCriteria || [])
|
|
916
|
+
.map((c) => `- ${c}`)
|
|
917
|
+
.join('\n');
|
|
918
|
+
return [
|
|
919
|
+
`You are working on project: ${projectName}`,
|
|
920
|
+
``,
|
|
921
|
+
`## Current Task: ${task.title}`,
|
|
922
|
+
`ID: ${task.id}`,
|
|
923
|
+
``,
|
|
924
|
+
`## Description`,
|
|
925
|
+
task.description,
|
|
926
|
+
``,
|
|
927
|
+
`## Acceptance Criteria`,
|
|
928
|
+
criteria,
|
|
929
|
+
``,
|
|
930
|
+
task.notes ? `## Notes\n${task.notes}\n` : '',
|
|
931
|
+
`## Instructions`,
|
|
932
|
+
`1. Implement the changes described above`,
|
|
933
|
+
`2. Ensure all acceptance criteria are met`,
|
|
934
|
+
`3. Run quality checks: type-check, lint, tests`,
|
|
935
|
+
`4. Fix any issues found by quality checks`,
|
|
936
|
+
`5. When done, summarize what was changed`,
|
|
937
|
+
]
|
|
938
|
+
.filter(Boolean)
|
|
939
|
+
.join('\n');
|
|
940
|
+
};
|
|
941
|
+
// Helper: execute AI agent with proper error handling
|
|
942
|
+
const executeAgent = (agentTool, prompt) => new Promise((resolve, reject) => {
|
|
943
|
+
let output = '';
|
|
944
|
+
let stderrOutput = '';
|
|
945
|
+
const toolCmds = {
|
|
946
|
+
claude: {
|
|
947
|
+
cmd: 'claude',
|
|
948
|
+
args: ['-p', '--dangerously-skip-permissions', '--verbose'],
|
|
949
|
+
stdinPrompt: true,
|
|
950
|
+
},
|
|
951
|
+
amp: { cmd: 'amp', args: ['-p', prompt], stdinPrompt: false },
|
|
952
|
+
gemini: { cmd: 'gemini', args: ['-p', prompt], stdinPrompt: false },
|
|
953
|
+
};
|
|
954
|
+
const cfg = toolCmds[agentTool] || toolCmds.claude;
|
|
955
|
+
let settled = false;
|
|
956
|
+
const settle = (fn) => {
|
|
957
|
+
if (!settled) {
|
|
958
|
+
settled = true;
|
|
959
|
+
fn();
|
|
960
|
+
}
|
|
961
|
+
};
|
|
962
|
+
const proc = spawn(cfg.cmd, cfg.args, {
|
|
963
|
+
cwd: config.projectRoot,
|
|
964
|
+
shell: true,
|
|
965
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
966
|
+
});
|
|
967
|
+
if (cfg.stdinPrompt && proc.stdin) {
|
|
968
|
+
proc.stdin.write(prompt);
|
|
969
|
+
proc.stdin.end();
|
|
970
|
+
}
|
|
971
|
+
proc.stdout?.on('data', (d) => {
|
|
972
|
+
output += d.toString();
|
|
973
|
+
});
|
|
974
|
+
proc.stderr?.on('data', (d) => {
|
|
975
|
+
stderrOutput += d.toString();
|
|
976
|
+
});
|
|
977
|
+
proc.on('close', (code) => {
|
|
978
|
+
settle(() => {
|
|
979
|
+
if (code === 0 || output.length > 0) {
|
|
980
|
+
resolve(output);
|
|
981
|
+
}
|
|
982
|
+
else {
|
|
983
|
+
reject(new Error(`Agent ${agentTool} exited with code ${code}${stderrOutput ? ': ' + stderrOutput.slice(0, 500) : ''}`));
|
|
984
|
+
}
|
|
985
|
+
});
|
|
986
|
+
});
|
|
987
|
+
proc.on('error', (err) => {
|
|
988
|
+
settle(() => reject(new Error(`Failed to spawn ${agentTool}: ${err.message}`)));
|
|
989
|
+
});
|
|
990
|
+
const timeout = setTimeout(() => {
|
|
991
|
+
proc.kill('SIGTERM');
|
|
992
|
+
settle(() => resolve(output || `Agent ${agentTool} timed out after 10 minutes`));
|
|
993
|
+
}, 600000);
|
|
994
|
+
proc.on('close', () => clearTimeout(timeout));
|
|
916
995
|
});
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
// 1. Execute AI agent
|
|
934
|
-
let agentOutput = '';
|
|
935
|
-
try {
|
|
936
|
-
const prompt = buildPrompt(task, prd);
|
|
937
|
-
agentOutput = await executeAgent(tool, prompt);
|
|
938
|
-
}
|
|
939
|
-
catch (agentErr) {
|
|
940
|
-
agentOutput = `Error: ${agentErr.message || agentErr}`;
|
|
996
|
+
// Sync task count from PRD
|
|
997
|
+
await ralphManager.refreshTaskCount();
|
|
998
|
+
// Load PRD for project name (used in prompts)
|
|
999
|
+
const prd = await ralphManager.loadPRD();
|
|
1000
|
+
if (!prd || !prd.userStories || prd.userStories.length === 0) {
|
|
1001
|
+
return {
|
|
1002
|
+
content: [
|
|
1003
|
+
{
|
|
1004
|
+
type: 'text',
|
|
1005
|
+
text: JSON.stringify({
|
|
1006
|
+
success: false,
|
|
1007
|
+
error: 'No PRD found or no user stories. Run rulebook_ralph_init first.',
|
|
1008
|
+
}),
|
|
1009
|
+
},
|
|
1010
|
+
],
|
|
1011
|
+
};
|
|
941
1012
|
}
|
|
942
|
-
|
|
943
|
-
const
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
`
|
|
1013
|
+
const projectName = prd.project || 'unknown';
|
|
1014
|
+
const totalTasks = prd.userStories.filter((s) => !s.passes).length;
|
|
1015
|
+
let iterationCount = 0;
|
|
1016
|
+
const iterationResults = [];
|
|
1017
|
+
// Log to stderr so MCP callers can see progress
|
|
1018
|
+
const logProgress = (msg) => {
|
|
1019
|
+
process.stderr.write(`[Ralph] ${msg}\n`);
|
|
1020
|
+
};
|
|
1021
|
+
logProgress(`Starting Ralph loop: ${totalTasks} pending tasks, max ${maxIterations} iterations, tool=${tool}`);
|
|
1022
|
+
while (ralphManager.canContinue() && iterationCount < maxIterations) {
|
|
1023
|
+
iterationCount++;
|
|
1024
|
+
const task = await ralphManager.getNextTask();
|
|
1025
|
+
if (!task)
|
|
1026
|
+
break;
|
|
1027
|
+
// Update lock with current progress
|
|
1028
|
+
await ralphManager.updateLockProgress(iterationCount, `${task.id}: ${task.title}`);
|
|
1029
|
+
logProgress(`Iteration ${iterationCount}/${maxIterations} — Task: ${task.id} "${task.title}"`);
|
|
1030
|
+
const startTime = Date.now();
|
|
1031
|
+
// 1. Execute AI agent
|
|
1032
|
+
let agentOutput = '';
|
|
1033
|
+
try {
|
|
1034
|
+
logProgress(` Executing ${tool} agent...`);
|
|
1035
|
+
const prompt = buildPrompt(task, projectName);
|
|
1036
|
+
agentOutput = await executeAgent(tool, prompt);
|
|
1037
|
+
logProgress(` Agent finished (${((Date.now() - startTime) / 1000).toFixed(0)}s)`);
|
|
1038
|
+
}
|
|
1039
|
+
catch (agentErr) {
|
|
1040
|
+
agentOutput = `Error: ${agentErr.message || agentErr}`;
|
|
1041
|
+
logProgress(` Agent error: ${agentErr.message || agentErr}`);
|
|
1042
|
+
}
|
|
1043
|
+
// 2. Run quality gates
|
|
1044
|
+
logProgress(` Running quality gates...`);
|
|
1045
|
+
const [typeCheck, lint, tests] = await Promise.all([
|
|
1046
|
+
runCmd('npm', ['run', 'type-check']).then((r) => r.code === 0),
|
|
1047
|
+
runCmd('npm', ['run', 'lint']).then((r) => r.code === 0),
|
|
1048
|
+
runCmd('npm', ['test']).then((r) => r.code === 0),
|
|
964
1049
|
]);
|
|
965
|
-
const
|
|
966
|
-
|
|
967
|
-
|
|
1050
|
+
const qualityChecks = { type_check: typeCheck, lint, tests, coverage_met: tests };
|
|
1051
|
+
const allPass = typeCheck && lint && tests;
|
|
1052
|
+
const passCount = Object.values(qualityChecks).filter(Boolean).length;
|
|
1053
|
+
const status = allPass
|
|
1054
|
+
? 'success'
|
|
1055
|
+
: passCount >= 2
|
|
1056
|
+
? 'partial'
|
|
1057
|
+
: 'failed';
|
|
1058
|
+
logProgress(` Quality: type-check=${typeCheck ? 'PASS' : 'FAIL'} lint=${lint ? 'PASS' : 'FAIL'} tests=${tests ? 'PASS' : 'FAIL'} → ${status.toUpperCase()}`);
|
|
1059
|
+
// 3. Git commit if all gates pass
|
|
1060
|
+
let gitCommit;
|
|
1061
|
+
if (allPass) {
|
|
1062
|
+
await runCmd('git', ['add', '-A']);
|
|
1063
|
+
const commitResult = await runCmd('git', [
|
|
1064
|
+
'commit',
|
|
1065
|
+
'-m',
|
|
1066
|
+
`ralph(${task.id}): ${task.title}\n\nIteration ${iterationCount} - Ralph autonomous loop`,
|
|
1067
|
+
]);
|
|
1068
|
+
const hashMatch = commitResult.stdout.match(/\[[\w/.-]+ ([a-f0-9]+)\]/);
|
|
1069
|
+
gitCommit = hashMatch ? hashMatch[1] : undefined;
|
|
1070
|
+
await ralphManager.markStoryComplete(task.id);
|
|
1071
|
+
logProgress(` Committed: ${gitCommit || 'no hash'} — Story ${task.id} COMPLETE`);
|
|
1072
|
+
}
|
|
1073
|
+
const iterDuration = Date.now() - startTime;
|
|
1074
|
+
// 4. Parse output for learnings/errors
|
|
1075
|
+
const parsed = RalphParser.parseAgentOutput(agentOutput, iterationCount, task.id, task.title, tool);
|
|
1076
|
+
// 5. Record iteration and refresh task count for canContinue()
|
|
1077
|
+
await ralphManager.recordIteration({
|
|
1078
|
+
iteration: iterationCount,
|
|
1079
|
+
timestamp: new Date().toISOString(),
|
|
1080
|
+
task_id: task.id,
|
|
1081
|
+
task_title: task.title,
|
|
1082
|
+
status,
|
|
1083
|
+
ai_tool: tool,
|
|
1084
|
+
execution_time_ms: iterDuration,
|
|
1085
|
+
quality_checks: qualityChecks,
|
|
1086
|
+
output_summary: parsed.output_summary || `Iteration ${iterationCount}: ${task.title}`,
|
|
1087
|
+
git_commit: gitCommit,
|
|
1088
|
+
learnings: parsed.learnings,
|
|
1089
|
+
errors: parsed.errors,
|
|
1090
|
+
metadata: {
|
|
1091
|
+
context_loss_count: parsed.metadata.context_loss_count,
|
|
1092
|
+
parsed_completion: parsed.metadata.parsed_completion,
|
|
1093
|
+
},
|
|
1094
|
+
});
|
|
1095
|
+
iterationResults.push({
|
|
1096
|
+
iteration: iterationCount,
|
|
1097
|
+
taskId: task.id,
|
|
1098
|
+
taskTitle: task.title,
|
|
1099
|
+
status,
|
|
1100
|
+
durationMs: iterDuration,
|
|
1101
|
+
});
|
|
1102
|
+
// Refresh task count so canContinue() reflects updated PRD
|
|
1103
|
+
await ralphManager.refreshTaskCount();
|
|
1104
|
+
logProgress(` Iteration ${iterationCount} complete (${(iterDuration / 1000).toFixed(0)}s)\n`);
|
|
968
1105
|
}
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
1106
|
+
const stats = await ralphManager.getTaskStats();
|
|
1107
|
+
logProgress(`Ralph loop finished: ${iterationCount} iterations, ${stats.completed}/${stats.total} tasks completed`);
|
|
1108
|
+
return {
|
|
1109
|
+
content: [
|
|
1110
|
+
{
|
|
1111
|
+
type: 'text',
|
|
1112
|
+
text: JSON.stringify({
|
|
1113
|
+
success: true,
|
|
1114
|
+
iterations: iterationCount,
|
|
1115
|
+
completed: stats.completed,
|
|
1116
|
+
total: stats.total,
|
|
1117
|
+
results: iterationResults,
|
|
1118
|
+
}),
|
|
1119
|
+
},
|
|
1120
|
+
],
|
|
1121
|
+
};
|
|
1122
|
+
}
|
|
1123
|
+
finally {
|
|
1124
|
+
// Always release lock, even on error
|
|
1125
|
+
await ralphManager.releaseLock();
|
|
1126
|
+
process.removeListener('SIGTERM', cleanupLock);
|
|
1127
|
+
process.removeListener('SIGINT', cleanupLock);
|
|
990
1128
|
}
|
|
991
|
-
const stats = await ralphManager.getTaskStats();
|
|
992
|
-
return {
|
|
993
|
-
content: [
|
|
994
|
-
{
|
|
995
|
-
type: 'text',
|
|
996
|
-
text: JSON.stringify({
|
|
997
|
-
success: true,
|
|
998
|
-
iterations: iterationCount,
|
|
999
|
-
completed: stats.completed,
|
|
1000
|
-
total: stats.total,
|
|
1001
|
-
}),
|
|
1002
|
-
},
|
|
1003
|
-
],
|
|
1004
|
-
};
|
|
1005
1129
|
}
|
|
1006
1130
|
catch (error) {
|
|
1007
1131
|
return {
|
|
@@ -1037,12 +1161,24 @@ export async function startRulebookMcpServer() {
|
|
|
1037
1161
|
};
|
|
1038
1162
|
}
|
|
1039
1163
|
const stats = await ralphManager.getTaskStats();
|
|
1164
|
+
// Check if Ralph is currently running (lock held by alive process)
|
|
1165
|
+
const running = await ralphManager.isRunning();
|
|
1166
|
+
const lockInfo = running ? await ralphManager.getLockInfo() : null;
|
|
1040
1167
|
return {
|
|
1041
1168
|
content: [
|
|
1042
1169
|
{
|
|
1043
1170
|
type: 'text',
|
|
1044
1171
|
text: JSON.stringify({
|
|
1045
1172
|
success: true,
|
|
1173
|
+
running,
|
|
1174
|
+
...(running && lockInfo
|
|
1175
|
+
? {
|
|
1176
|
+
runningPid: lockInfo.pid,
|
|
1177
|
+
runningTask: lockInfo.currentTask || null,
|
|
1178
|
+
runningIteration: lockInfo.iteration || 0,
|
|
1179
|
+
runningSince: lockInfo.startedAt,
|
|
1180
|
+
}
|
|
1181
|
+
: {}),
|
|
1046
1182
|
iteration: status.current_iteration,
|
|
1047
1183
|
maxIterations: status.max_iterations,
|
|
1048
1184
|
completedTasks: stats.completed,
|