surrogate-protocol-mcp 2.1.1 → 3.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/dist/__tests__/gates.test.js +97 -1
- package/dist/__tests__/gates.test.js.map +1 -1
- package/dist/mcp-server.js +177 -51
- package/dist/mcp-server.js.map +1 -1
- package/dist/utils/artifacts.js +3 -3
- package/dist/utils/artifacts.js.map +1 -1
- package/dist/utils/critique.d.ts +50 -0
- package/dist/utils/critique.d.ts.map +1 -0
- package/dist/utils/critique.js +379 -0
- package/dist/utils/critique.js.map +1 -0
- package/dist/utils/gates.d.ts +1 -0
- package/dist/utils/gates.d.ts.map +1 -1
- package/dist/utils/gates.js +20 -6
- package/dist/utils/gates.js.map +1 -1
- package/dist/utils/graph.d.ts +47 -0
- package/dist/utils/graph.d.ts.map +1 -0
- package/dist/utils/graph.js +311 -0
- package/dist/utils/graph.js.map +1 -0
- package/dist/utils/migrate-yaml-to-db.d.ts +24 -0
- package/dist/utils/migrate-yaml-to-db.d.ts.map +1 -0
- package/dist/utils/migrate-yaml-to-db.js +274 -0
- package/dist/utils/migrate-yaml-to-db.js.map +1 -0
- package/dist/utils/project-gates.js +1 -1
- package/dist/utils/project-gates.js.map +1 -1
- package/dist/utils/state-db.d.ts +172 -0
- package/dist/utils/state-db.d.ts.map +1 -0
- package/dist/utils/state-db.js +462 -0
- package/dist/utils/state-db.js.map +1 -0
- package/dist/utils/workspace-manager.d.ts +60 -0
- package/dist/utils/workspace-manager.d.ts.map +1 -0
- package/dist/utils/workspace-manager.js +442 -0
- package/dist/utils/workspace-manager.js.map +1 -0
- package/package.json +68 -66
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
|
-
import { runRebaseGate, runTestGate, runTypeCheckGate, runLintGate, runBuildGate, runSecurityGate, runAllGates, commitChanges, } from '../utils/gates.js';
|
|
5
|
+
import { runRebaseGate, runTestGate, runTypeCheckGate, runLintGate, runBuildGate, runSecurityGate, runAllGates, commitChanges, runHasChangesGate, } from '../utils/gates.js';
|
|
6
6
|
// Test fixtures directory
|
|
7
7
|
const TEST_DIR = path.join(process.cwd(), '.gates-test');
|
|
8
8
|
describe('Validation Gates', () => {
|
|
@@ -339,4 +339,100 @@ describe('RebaseGate', () => {
|
|
|
339
339
|
// Should have error about missing remote
|
|
340
340
|
});
|
|
341
341
|
});
|
|
342
|
+
describe('HAS_CHANGES gate with merged branches', () => {
|
|
343
|
+
const TEST_DIR = path.join(process.cwd(), '.has-changes-test');
|
|
344
|
+
beforeEach(() => {
|
|
345
|
+
if (fs.existsSync(TEST_DIR)) {
|
|
346
|
+
fs.rmSync(TEST_DIR, { recursive: true, force: true });
|
|
347
|
+
}
|
|
348
|
+
fs.mkdirSync(TEST_DIR, { recursive: true });
|
|
349
|
+
});
|
|
350
|
+
afterEach(() => {
|
|
351
|
+
if (fs.existsSync(TEST_DIR)) {
|
|
352
|
+
fs.rmSync(TEST_DIR, { recursive: true, force: true });
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
it('should detect already-merged branch and pass gate with is_merged flag', () => {
|
|
356
|
+
// Initialize git repo locally first
|
|
357
|
+
const repoPath = path.join(TEST_DIR, 'repo');
|
|
358
|
+
fs.mkdirSync(repoPath, { recursive: true });
|
|
359
|
+
execSync('git init', { cwd: repoPath, stdio: 'pipe' });
|
|
360
|
+
execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' });
|
|
361
|
+
execSync('git config user.name "Test"', { cwd: repoPath, stdio: 'pipe' });
|
|
362
|
+
// Create initial commit on main
|
|
363
|
+
fs.writeFileSync(path.join(repoPath, 'README.md'), '# Test');
|
|
364
|
+
execSync('git add .', { cwd: repoPath, stdio: 'pipe' });
|
|
365
|
+
execSync('git commit -m "Initial commit"', { cwd: repoPath, stdio: 'pipe' });
|
|
366
|
+
// Ensure we're on main branch
|
|
367
|
+
execSync('git branch -M main', { cwd: repoPath, stdio: 'pipe' });
|
|
368
|
+
// Create bare origin and push to it
|
|
369
|
+
execSync('git init --bare origin.git', { cwd: TEST_DIR, stdio: 'pipe' });
|
|
370
|
+
execSync(`git remote add origin ${path.join(TEST_DIR, 'origin.git')}`, { cwd: repoPath, stdio: 'pipe' });
|
|
371
|
+
execSync('git push -u origin main', { cwd: repoPath, stdio: 'pipe' });
|
|
372
|
+
// Create feature branch and add changes
|
|
373
|
+
execSync('git checkout -b feature', { cwd: repoPath, stdio: 'pipe' });
|
|
374
|
+
fs.writeFileSync(path.join(repoPath, 'file.txt'), 'content');
|
|
375
|
+
execSync('git add . && git commit -m "Add file"', { cwd: repoPath, stdio: 'pipe' });
|
|
376
|
+
// Merge to main
|
|
377
|
+
execSync('git checkout main && git merge feature --no-ff -m "Merge feature"', { cwd: repoPath, stdio: 'pipe' });
|
|
378
|
+
execSync('git push origin main', { cwd: repoPath, stdio: 'pipe' });
|
|
379
|
+
// Go back to feature branch
|
|
380
|
+
execSync('git checkout feature', { cwd: repoPath, stdio: 'pipe' });
|
|
381
|
+
const result = runHasChangesGate(repoPath, 'main');
|
|
382
|
+
expect(result.passed).toBe(true);
|
|
383
|
+
expect(result.is_merged).toBe(true);
|
|
384
|
+
expect(result.output).toContain('Already merged');
|
|
385
|
+
});
|
|
386
|
+
it('should detect unmerged changes correctly with is_merged false', () => {
|
|
387
|
+
// Initialize git repo locally first
|
|
388
|
+
const repoPath = path.join(TEST_DIR, 'repo');
|
|
389
|
+
fs.mkdirSync(repoPath, { recursive: true });
|
|
390
|
+
execSync('git init', { cwd: repoPath, stdio: 'pipe' });
|
|
391
|
+
execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' });
|
|
392
|
+
execSync('git config user.name "Test"', { cwd: repoPath, stdio: 'pipe' });
|
|
393
|
+
// Create initial commit on main
|
|
394
|
+
fs.writeFileSync(path.join(repoPath, 'README.md'), '# Test');
|
|
395
|
+
execSync('git add .', { cwd: repoPath, stdio: 'pipe' });
|
|
396
|
+
execSync('git commit -m "Initial commit"', { cwd: repoPath, stdio: 'pipe' });
|
|
397
|
+
// Ensure we're on main branch
|
|
398
|
+
execSync('git branch -M main', { cwd: repoPath, stdio: 'pipe' });
|
|
399
|
+
// Create bare origin and push to it
|
|
400
|
+
execSync('git init --bare origin.git', { cwd: TEST_DIR, stdio: 'pipe' });
|
|
401
|
+
execSync(`git remote add origin ${path.join(TEST_DIR, 'origin.git')}`, { cwd: repoPath, stdio: 'pipe' });
|
|
402
|
+
execSync('git push -u origin main', { cwd: repoPath, stdio: 'pipe' });
|
|
403
|
+
// Create feature branch with new changes
|
|
404
|
+
execSync('git checkout -b feature', { cwd: repoPath, stdio: 'pipe' });
|
|
405
|
+
fs.writeFileSync(path.join(repoPath, 'new.txt'), 'new content');
|
|
406
|
+
execSync('git add . && git commit -m "Add new file"', { cwd: repoPath, stdio: 'pipe' });
|
|
407
|
+
const result = runHasChangesGate(repoPath, 'main');
|
|
408
|
+
expect(result.passed).toBe(true);
|
|
409
|
+
expect(result.is_merged).toBe(false);
|
|
410
|
+
expect(result.output).toContain('1 files changed');
|
|
411
|
+
});
|
|
412
|
+
it('should fail when no changes and not merged', () => {
|
|
413
|
+
// Initialize git repo locally first
|
|
414
|
+
const repoPath = path.join(TEST_DIR, 'repo');
|
|
415
|
+
fs.mkdirSync(repoPath, { recursive: true });
|
|
416
|
+
execSync('git init', { cwd: repoPath, stdio: 'pipe' });
|
|
417
|
+
execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' });
|
|
418
|
+
execSync('git config user.name "Test"', { cwd: repoPath, stdio: 'pipe' });
|
|
419
|
+
// Create initial commit on main
|
|
420
|
+
fs.writeFileSync(path.join(repoPath, 'README.md'), '# Test');
|
|
421
|
+
execSync('git add .', { cwd: repoPath, stdio: 'pipe' });
|
|
422
|
+
execSync('git commit -m "Initial commit"', { cwd: repoPath, stdio: 'pipe' });
|
|
423
|
+
// Ensure we're on main branch
|
|
424
|
+
execSync('git branch -M main', { cwd: repoPath, stdio: 'pipe' });
|
|
425
|
+
// Create bare origin and push to it
|
|
426
|
+
execSync('git init --bare origin.git', { cwd: TEST_DIR, stdio: 'pipe' });
|
|
427
|
+
execSync(`git remote add origin ${path.join(TEST_DIR, 'origin.git')}`, { cwd: repoPath, stdio: 'pipe' });
|
|
428
|
+
execSync('git push -u origin main', { cwd: repoPath, stdio: 'pipe' });
|
|
429
|
+
// Create feature branch without any changes
|
|
430
|
+
execSync('git checkout -b feature', { cwd: repoPath, stdio: 'pipe' });
|
|
431
|
+
const result = runHasChangesGate(repoPath, 'main');
|
|
432
|
+
// When feature branch is exactly at main with no commits, it's considered merged
|
|
433
|
+
expect(result.passed).toBe(true);
|
|
434
|
+
expect(result.is_merged).toBe(true);
|
|
435
|
+
expect(result.output).toContain('Already merged');
|
|
436
|
+
});
|
|
437
|
+
});
|
|
342
438
|
//# sourceMappingURL=gates.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.test.js","sourceRoot":"","sources":["../../src/__tests__/gates.test.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAE9C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,WAAW,EACX,aAAa,GAGd,MAAM,mBAAmB,CAAC;AAE3B,0BAA0B;AAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;AAEzD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,0CAA0C;IAC1C,SAAS,iBAAiB,CAAC,UAMvB,EAAE;QACJ,MAAM,EACJ,YAAY,GAAG,KAAK,EACpB,eAAe,GAAG,IAAI,EACtB,cAAc,GAAG,KAAK,EACtB,eAAe,GAAG,KAAK,EACvB,cAAc,GAAG,KAAK,GACvB,GAAG,OAAO,CAAC;QAEZ,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,OAAO,GAA2B,EAAE,CAAC;YAC3C,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,GAAG,qBAAqB,CAAC;YACvC,CAAC;YACD,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,GAAG,uBAAuB,CAAC;YAC1C,CAAC;YACD,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,GAAG,oBAAoB,CAAC;YACtC,CAAC;YAED,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EACnC,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,OAAO;gBAChB,OAAO;aACR,EAAE,IAAI,EAAE,CAAC,CAAC,CACZ,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,EACpC,IAAI,CAAC,SAAS,CAAC;gBACb,eAAe,EAAE;oBACf,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,IAAI;iBACb;gBACD,OAAO,EAAE,CAAC,UAAU,CAAC;aACtB,EAAE,IAAI,EAAE,CAAC,CAAC,CACZ,CAAC;YACF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,EACtC,iCAAiC,CAClC,CAAC;QACJ,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EACnC,iCAAiC,CAClC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,SAAS,WAAW;QAClB,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,QAAQ,CAAC,uCAAuC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACpF,QAAQ,CAAC,6BAA6B,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,wBAAwB;QACxB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7D,QAAQ,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,QAAQ,CAAC,gCAAgC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,UAAU,CAAC,GAAG,EAAE;QACd,wCAAwC;QACxC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,MAAM,GAAe;gBACzB,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,IAAI;gBACZ,WAAW,EAAE,GAAG;aACjB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,MAAM,GAAe;gBACzB,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,aAAa;gBACrB,WAAW,EAAE,GAAG;aACjB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,iBAAiB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5C,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,iBAAiB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,iBAAiB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;YAE3C,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,2BAA2B;YAC3B,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,EACpC,qCAAqC,CACtC,CAAC;YAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,iBAAiB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAE5C,iDAAiD;YACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,wDAAwD;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,iBAAiB,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,kCAAkC;YAClC,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EACnC,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ,EAAE,gBAAgB;iBACjC;aACF,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE3C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,iBAAiB,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,iBAAiB,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,iBAAiB,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EACnC,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,KAAK,EAAE,QAAQ;iBAChB;aACF,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,iBAAiB,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACrC,iEAAiE;YACjE,+CAA+C;YAC/C,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtB,WAAW,EAAE,CAAC;YAEd,oBAAoB;YACpB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,SAAS,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YAEvD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAElC,uBAAuB;YACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,sBAAsB,EAAE;gBAC3C,GAAG,EAAE,QAAQ;gBACb,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtB,WAAW,EAAE,CAAC;YAEd,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YAEvD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,iBAAiB,CAAC;gBAChB,cAAc,EAAE,IAAI;gBACpB,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC;YACH,WAAW,EAAE,CAAC;YAEd,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE;gBACzC,UAAU,EAAE,IAAI,EAAE,yCAAyC;aAC5D,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAE/C,0BAA0B;YAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,iBAAiB,CAAC;gBAChB,cAAc,EAAE,KAAK,EAAE,0BAA0B;gBACjD,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC;YACH,WAAW,EAAE,CAAC;YAEd,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE;gBACzC,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAEzC,8CAA8C;YAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAC/D,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtB,WAAW,EAAE,CAAC;YAEd,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE;gBACzC,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,2FAA2F;YAC3F,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,iBAAiB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,WAAW,EAAE,CAAC;YAEd,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE;gBACzC,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,iBAAiB,CAAC;gBAChB,cAAc,EAAE,IAAI;gBACpB,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,IAAI;gBACrB,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YACH,WAAW,EAAE,CAAC;YAEd,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE;gBACzC,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,mDAAmD;YACnD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE9C,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAE1D,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAiB;YAC3B,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,IAAI;YAClB,iBAAiB,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;YAC3C,KAAK,EAAE,gBAAgB;YACvB,WAAW,EAAE,GAAG;SACjB,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,QAAQ,CAAC,uCAAuC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACpF,QAAQ,CAAC,6BAA6B,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7D,QAAQ,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,QAAQ,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtE,qDAAqD;QACrD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,yCAAyC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"gates.test.js","sourceRoot":"","sources":["../../src/__tests__/gates.test.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -12,7 +12,8 @@ import { loadState, addSurrogate, updateSurrogateStatus, completeSurrogateState,
|
|
|
12
12
|
import { commitChanges, pushBranch, createPullRequest } from './utils/gates.js';
|
|
13
13
|
import { runProjectAwareGates } from './utils/project-gates.js';
|
|
14
14
|
import { scaffoldCapsule, validateCompliance } from './utils/capsule.js';
|
|
15
|
-
|
|
15
|
+
// NOTE: Agent spawning now uses Task tool instead of external CLI
|
|
16
|
+
// import { spawnAgent, terminateAgent, isAgentRunning } from './utils/agent.js';
|
|
16
17
|
import { reconcileAll, driftCheck } from './utils/reconcile.js';
|
|
17
18
|
import { reconcileState } from './utils/state.js';
|
|
18
19
|
import { getLogSummary, readLogTail, getLogErrors, cleanOldLogs } from './utils/logging.js';
|
|
@@ -23,7 +24,7 @@ import { autoDetectClaudeCLI, verifyClaudeCLI } from './utils/auto-detect-claude
|
|
|
23
24
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
24
25
|
const server = new Server({
|
|
25
26
|
name: 'surrogate-protocol',
|
|
26
|
-
version: '2.
|
|
27
|
+
version: '2.2.0', // Task tool integration + Flight Recorder
|
|
27
28
|
}, {
|
|
28
29
|
capabilities: {
|
|
29
30
|
tools: {},
|
|
@@ -375,6 +376,26 @@ Shows IDs of all surrogates that have generated reports (both successful and fai
|
|
|
375
376
|
required: [],
|
|
376
377
|
},
|
|
377
378
|
},
|
|
379
|
+
{
|
|
380
|
+
name: 'get_flight_recorder',
|
|
381
|
+
description: `Query the flight recorder (mission audit trail) for previous work and history.
|
|
382
|
+
Returns human-readable summary of mission objective, active surrogates, completed work, and statistics.
|
|
383
|
+
Use this to understand what has been attempted before, what failed, and what succeeded.`,
|
|
384
|
+
inputSchema: {
|
|
385
|
+
type: 'object',
|
|
386
|
+
properties: {
|
|
387
|
+
include_completed: {
|
|
388
|
+
type: 'boolean',
|
|
389
|
+
description: 'Include recent_completed history (default: true)',
|
|
390
|
+
},
|
|
391
|
+
include_statistics: {
|
|
392
|
+
type: 'boolean',
|
|
393
|
+
description: 'Include statistics (default: true)',
|
|
394
|
+
},
|
|
395
|
+
},
|
|
396
|
+
required: [],
|
|
397
|
+
},
|
|
398
|
+
},
|
|
378
399
|
{
|
|
379
400
|
name: 'scaffold_capsule',
|
|
380
401
|
description: `Create a new vertical slice "capsule" with enforced architecture.
|
|
@@ -531,50 +552,75 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
531
552
|
// Update state to register the surrogate
|
|
532
553
|
addSurrogate(id, role, task, result.path, branch, files_to_lock);
|
|
533
554
|
// ═══════════════════════════════════════════════════════════════════
|
|
534
|
-
//
|
|
535
|
-
//
|
|
536
|
-
const spawnResult = spawnAgent({
|
|
537
|
-
surrogateId: id,
|
|
538
|
-
worktreePath: result.path,
|
|
539
|
-
task: task,
|
|
540
|
-
role: role
|
|
541
|
-
});
|
|
542
|
-
if (!spawnResult.success) {
|
|
543
|
-
console.error(`[MCP] Failed to spawn agent for ${id}: ${spawnResult.error}`);
|
|
544
|
-
// ROLLBACK: Remove the worktree and fail the state entry
|
|
545
|
-
removeWorktree(id);
|
|
546
|
-
failSurrogateState(id, {
|
|
547
|
-
error_type: 'TOOLING_MISSING',
|
|
548
|
-
message: `Spawn failed: ${spawnResult.error}`,
|
|
549
|
-
evidence: {
|
|
550
|
-
command: 'claude (Claude Code CLI)',
|
|
551
|
-
stderr_tail: spawnResult.error || 'Unknown spawn error',
|
|
552
|
-
},
|
|
553
|
-
});
|
|
554
|
-
return {
|
|
555
|
-
isError: true,
|
|
556
|
-
content: [{ type: 'text', text: `CRITICAL ERROR: Failed to spawn agent process.\n${spawnResult.error}\n\nWorktree has been cleaned up.` }],
|
|
557
|
-
};
|
|
558
|
-
}
|
|
555
|
+
// ENTERPRISE FIX: Return Task tool instructions instead of external spawn
|
|
556
|
+
// The Manager will use the Task tool to spawn the agent with fresh context
|
|
559
557
|
// ═══════════════════════════════════════════════════════════════════
|
|
558
|
+
// Construct the Task agent prompt with worktree context
|
|
559
|
+
const taskAgentPrompt = `You are a coding agent working in an isolated git worktree for surrogate task '${id}'.
|
|
560
|
+
|
|
561
|
+
CRITICAL CONTEXT:
|
|
562
|
+
- Worktree Path: ${result.path}
|
|
563
|
+
- Git Branch: ${branch}
|
|
564
|
+
- Role: ${role}
|
|
565
|
+
- Locked Files: ${files_to_lock.join(', ')} (YOU have exclusive access to these)
|
|
566
|
+
|
|
567
|
+
YOUR TASK:
|
|
568
|
+
${task}
|
|
569
|
+
|
|
570
|
+
WORKFLOW:
|
|
571
|
+
1. ALL your work must be done in the worktree directory: ${result.path}
|
|
572
|
+
2. Use Bash with 'cd "${result.path}"' before any file operations
|
|
573
|
+
3. Read necessary files to understand the codebase
|
|
574
|
+
4. Make the required changes
|
|
575
|
+
5. Stage and commit your changes: git add -A && git commit -m "descriptive message"
|
|
576
|
+
6. Report back what you accomplished
|
|
577
|
+
|
|
578
|
+
IMPORTANT RULES:
|
|
579
|
+
- Work ONLY in ${result.path} (the isolated worktree)
|
|
580
|
+
- Do NOT modify files outside this worktree
|
|
581
|
+
- Focus ONLY on the task described above
|
|
582
|
+
- Make reasonable decisions - do not ask for clarification
|
|
583
|
+
- If you encounter blocking errors, document them and report back
|
|
584
|
+
- When done, commit your changes and provide a summary
|
|
585
|
+
|
|
586
|
+
Begin your task now.`;
|
|
587
|
+
// Return success with Task tool spawn instructions
|
|
560
588
|
return {
|
|
561
589
|
content: [
|
|
562
590
|
{
|
|
563
591
|
type: 'text',
|
|
564
|
-
text:
|
|
592
|
+
text: `✅ Surrogate '${id}' registered successfully!
|
|
565
593
|
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
Locked files: ${files_to_lock.join(', ')}
|
|
594
|
+
WORKTREE CREATED:
|
|
595
|
+
Path: ${result.path}
|
|
596
|
+
Branch: ${branch}
|
|
597
|
+
Role: ${role}
|
|
598
|
+
Locked files: ${files_to_lock.join(', ')}${protectedWarning}
|
|
571
599
|
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
3. Update heartbeats every 30s
|
|
600
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
601
|
+
🚀 NEXT STEP: Spawn the Task Agent
|
|
602
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
576
603
|
|
|
577
|
-
|
|
604
|
+
Now call the Task tool with these parameters:
|
|
605
|
+
|
|
606
|
+
subagent_type: "${role}"
|
|
607
|
+
description: "Surrogate ${id}"
|
|
608
|
+
prompt: """
|
|
609
|
+
${taskAgentPrompt}
|
|
610
|
+
"""
|
|
611
|
+
|
|
612
|
+
The Task tool will spawn an agent with a FRESH context window who will:
|
|
613
|
+
1. Work in the isolated worktree: ${result.path}
|
|
614
|
+
2. Execute the task with exclusive file access
|
|
615
|
+
3. Commit changes when complete
|
|
616
|
+
4. Report back to you
|
|
617
|
+
|
|
618
|
+
After the agent reports completion, call:
|
|
619
|
+
- complete_surrogate(id="${id}", ...) if successful
|
|
620
|
+
- fail_surrogate(id="${id}", ...) if it failed
|
|
621
|
+
|
|
622
|
+
Monitor active surrogates with: get_status()
|
|
623
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`,
|
|
578
624
|
},
|
|
579
625
|
],
|
|
580
626
|
};
|
|
@@ -692,8 +738,8 @@ The surrogate remains active with its file locks.`,
|
|
|
692
738
|
files_modified: files_modified || [],
|
|
693
739
|
tests_added: [],
|
|
694
740
|
}, prUrl);
|
|
695
|
-
//
|
|
696
|
-
terminateAgent(id);
|
|
741
|
+
// NOTE: Agent termination not needed - Task agents complete autonomously
|
|
742
|
+
// terminateAgent(id); // Removed: agents are now Task-based, not external processes
|
|
697
743
|
// Cleanup worktree if configured
|
|
698
744
|
let cleanupMessage = `Worktree remains at ${worktreePath} (can be cleaned up later).`;
|
|
699
745
|
if (state.config?.cleanup_on_complete) {
|
|
@@ -766,8 +812,8 @@ Error type '${error_type}' may require additional evidence:
|
|
|
766
812
|
],
|
|
767
813
|
};
|
|
768
814
|
}
|
|
769
|
-
//
|
|
770
|
-
terminateAgent(id);
|
|
815
|
+
// NOTE: Agent termination not needed - Task agents complete autonomously
|
|
816
|
+
// terminateAgent(id); // Removed: agents are now Task-based, not external processes
|
|
771
817
|
try {
|
|
772
818
|
failSurrogateState(id, failure);
|
|
773
819
|
}
|
|
@@ -1155,21 +1201,25 @@ Consider calling fail_surrogate('${id}', 'Force released locks') to properly cle
|
|
|
1155
1201
|
// ─────────────────────────────────────────────────────────────────────
|
|
1156
1202
|
case 'kill_agent': {
|
|
1157
1203
|
const { id } = args;
|
|
1158
|
-
|
|
1159
|
-
|
|
1204
|
+
// NOTE: kill_agent is deprecated - Task agents don't use external processes
|
|
1205
|
+
// const wasRunning = isAgentRunning(id);
|
|
1206
|
+
// terminateAgent(id);
|
|
1160
1207
|
return {
|
|
1161
1208
|
content: [
|
|
1162
1209
|
{
|
|
1163
1210
|
type: 'text',
|
|
1164
|
-
text:
|
|
1165
|
-
|
|
1211
|
+
text: `NOTE: kill_agent is deprecated with Task-based spawning.
|
|
1212
|
+
|
|
1213
|
+
Task agents run autonomously and complete on their own. To manage stuck surrogates:
|
|
1166
1214
|
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
: `Agent '${id}' was not running (process already dead or never started).
|
|
1215
|
+
1. Call get_status() to check if the surrogate is still active
|
|
1216
|
+
2. Call reconcile_surrogates() to sync state with actual results
|
|
1217
|
+
3. Call fail_surrogate('${id}', ...) to manually mark as failed and release locks
|
|
1171
1218
|
|
|
1172
|
-
|
|
1219
|
+
File locks for '${id}': ${Object.entries(loadState().file_locks)
|
|
1220
|
+
.filter(([_, owner]) => owner === id)
|
|
1221
|
+
.map(([file, _]) => file)
|
|
1222
|
+
.join(', ') || 'none'}`,
|
|
1173
1223
|
},
|
|
1174
1224
|
],
|
|
1175
1225
|
};
|
|
@@ -1218,6 +1268,82 @@ Use get_surrogate_report(id) to view details for a specific surrogate.`,
|
|
|
1218
1268
|
};
|
|
1219
1269
|
}
|
|
1220
1270
|
// ─────────────────────────────────────────────────────────────────────
|
|
1271
|
+
// GET_FLIGHT_RECORDER - Query mission history
|
|
1272
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
1273
|
+
case 'get_flight_recorder': {
|
|
1274
|
+
const { include_completed, include_statistics } = args;
|
|
1275
|
+
const state = loadState();
|
|
1276
|
+
const showCompleted = include_completed !== false;
|
|
1277
|
+
const showStats = include_statistics !== false;
|
|
1278
|
+
let response = `FLIGHT RECORDER - Mission Audit Trail\n`;
|
|
1279
|
+
response += `═══════════════════════════════════════════════════\n\n`;
|
|
1280
|
+
// Mission
|
|
1281
|
+
response += `MISSION:\n`;
|
|
1282
|
+
response += `Objective: ${state.mission.objective}\n\n`;
|
|
1283
|
+
// Active surrogates
|
|
1284
|
+
if (state.active_surrogates.length > 0) {
|
|
1285
|
+
response += `ACTIVE SURROGATES (${state.active_surrogates.length}):\n`;
|
|
1286
|
+
state.active_surrogates.forEach((s) => {
|
|
1287
|
+
response += ` 🔸 ${s.id} [${s.status}]\n`;
|
|
1288
|
+
response += ` Role: ${s.role}\n`;
|
|
1289
|
+
response += ` Task: ${s.task_description.slice(0, 100)}${s.task_description.length > 100 ? '...' : ''}\n`;
|
|
1290
|
+
response += ` Locked files: ${s.file_locks.exclusive.join(', ')}\n`;
|
|
1291
|
+
response += ` Started: ${s.started}\n`;
|
|
1292
|
+
if (s.last_heartbeat) {
|
|
1293
|
+
const heartbeatAge = Math.floor((Date.now() - new Date(s.last_heartbeat).getTime()) / 1000 / 60);
|
|
1294
|
+
response += ` Last heartbeat: ${heartbeatAge} min ago\n`;
|
|
1295
|
+
}
|
|
1296
|
+
response += `\n`;
|
|
1297
|
+
});
|
|
1298
|
+
}
|
|
1299
|
+
else {
|
|
1300
|
+
response += `ACTIVE SURROGATES: None\n\n`;
|
|
1301
|
+
}
|
|
1302
|
+
// Recent completed
|
|
1303
|
+
if (showCompleted && state.recent_completed.length > 0) {
|
|
1304
|
+
response += `RECENT COMPLETED (${state.recent_completed.length}):\n`;
|
|
1305
|
+
state.recent_completed.slice(0, 10).forEach((s) => {
|
|
1306
|
+
const icon = s.status === 'COMPLETE' ? '✅' : '❌';
|
|
1307
|
+
response += ` ${icon} ${s.id} [${s.status}]\n`;
|
|
1308
|
+
response += ` Role: ${s.role}\n`;
|
|
1309
|
+
response += ` Duration: ${s.completed_at && s.started ?
|
|
1310
|
+
`${Math.floor((new Date(s.completed_at).getTime() - new Date(s.started).getTime()) / 1000)}s` :
|
|
1311
|
+
'unknown'}\n`;
|
|
1312
|
+
if (s.error_details) {
|
|
1313
|
+
response += ` Error: ${s.error_details}\n`;
|
|
1314
|
+
}
|
|
1315
|
+
response += `\n`;
|
|
1316
|
+
});
|
|
1317
|
+
if (state.recent_completed.length > 10) {
|
|
1318
|
+
response += ` ... and ${state.recent_completed.length - 10} more\n\n`;
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
// File locks
|
|
1322
|
+
const lockCount = Object.keys(state.file_locks).length;
|
|
1323
|
+
if (lockCount > 0) {
|
|
1324
|
+
response += `FILE LOCKS (${lockCount}):\n`;
|
|
1325
|
+
Object.entries(state.file_locks).forEach(([file, owner]) => {
|
|
1326
|
+
response += ` 🔒 ${file} → ${owner}\n`;
|
|
1327
|
+
});
|
|
1328
|
+
response += `\n`;
|
|
1329
|
+
}
|
|
1330
|
+
// Statistics
|
|
1331
|
+
if (showStats) {
|
|
1332
|
+
response += `STATISTICS:\n`;
|
|
1333
|
+
response += ` Total spawned: ${state.statistics.total_spawned}\n`;
|
|
1334
|
+
response += ` Total completed: ${state.statistics.total_completed}\n`;
|
|
1335
|
+
response += ` Total failed: ${state.statistics.total_failed}\n`;
|
|
1336
|
+
response += ` Total merged: ${state.statistics.total_merged}\n`;
|
|
1337
|
+
const successRate = state.statistics.total_spawned > 0
|
|
1338
|
+
? ((state.statistics.total_completed / state.statistics.total_spawned) * 100).toFixed(1)
|
|
1339
|
+
: '0.0';
|
|
1340
|
+
response += ` Success rate: ${successRate}%\n`;
|
|
1341
|
+
}
|
|
1342
|
+
return {
|
|
1343
|
+
content: [{ type: 'text', text: response }],
|
|
1344
|
+
};
|
|
1345
|
+
}
|
|
1346
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
1221
1347
|
// SCAFFOLD_CAPSULE
|
|
1222
1348
|
// ─────────────────────────────────────────────────────────────────────
|
|
1223
1349
|
case 'scaffold_capsule': {
|