@cluesmith/codev 1.5.22 → 1.5.24
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orphan-handler.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/orphan-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"orphan-handler.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/orphan-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkFH;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,GAAE;IACpD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GAAG,OAAO,CAAC,MAAM,CAAC,CAqCvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB9D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAU9D"}
|
|
@@ -12,6 +12,19 @@ import { resolve } from 'node:path';
|
|
|
12
12
|
import { logger } from './logger.js';
|
|
13
13
|
import { run } from './shell.js';
|
|
14
14
|
import { getConfig } from './config.js';
|
|
15
|
+
import { loadState, setArchitect } from '../state.js';
|
|
16
|
+
/**
|
|
17
|
+
* Check if a process is still running
|
|
18
|
+
*/
|
|
19
|
+
function isProcessAlive(pid) {
|
|
20
|
+
try {
|
|
21
|
+
process.kill(pid, 0);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
15
28
|
/**
|
|
16
29
|
* Find tmux sessions that match THIS project's agent-farm patterns
|
|
17
30
|
* Only matches sessions with this project's port to avoid killing other projects
|
|
@@ -19,27 +32,32 @@ import { getConfig } from './config.js';
|
|
|
19
32
|
async function findOrphanedSessions() {
|
|
20
33
|
const config = getConfig();
|
|
21
34
|
const architectPort = config.architectPort;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
/^util-[A-Z0-9]+$/, // Util sessions (already unique)
|
|
27
|
-
/^af-architect$/, // Legacy pattern (no port) - safe to clean
|
|
28
|
-
];
|
|
35
|
+
const state = loadState();
|
|
36
|
+
// Project-specific patterns - only match THIS project's architect session
|
|
37
|
+
const architectPattern = new RegExp(`^af-architect-${architectPort}$`);
|
|
38
|
+
const legacyArchitectPattern = /^af-architect$/;
|
|
29
39
|
try {
|
|
30
40
|
const result = await run('tmux list-sessions -F "#{session_name}" 2>/dev/null');
|
|
31
41
|
const sessions = result.stdout.trim().split('\n').filter(Boolean);
|
|
32
42
|
const orphans = [];
|
|
33
43
|
for (const name of sessions) {
|
|
34
|
-
if
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
// Check architect sessions - only orphaned if PID is dead
|
|
45
|
+
if (architectPattern.test(name) || legacyArchitectPattern.test(name)) {
|
|
46
|
+
// If we have state for this architect, check if PID is still alive
|
|
47
|
+
if (state.architect) {
|
|
48
|
+
if (!isProcessAlive(state.architect.pid)) {
|
|
49
|
+
// PID is dead but session exists - this is orphaned
|
|
50
|
+
orphans.push({ name, type: 'architect' });
|
|
51
|
+
}
|
|
52
|
+
// If PID is alive, session is NOT orphaned - skip it
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// No state entry but session exists - orphaned
|
|
56
|
+
orphans.push({ name, type: 'architect' });
|
|
57
|
+
}
|
|
42
58
|
}
|
|
59
|
+
// Note: builder and util sessions use different naming now (af-shell-UXXXXXX)
|
|
60
|
+
// Those are managed by their own state entries and don't need orphan detection
|
|
43
61
|
}
|
|
44
62
|
return orphans;
|
|
45
63
|
}
|
|
@@ -81,6 +99,10 @@ export async function handleOrphanedSessions(options = {}) {
|
|
|
81
99
|
for (const orphan of orphans) {
|
|
82
100
|
if (await killSession(orphan.name)) {
|
|
83
101
|
killed++;
|
|
102
|
+
// Clear state entry for killed architects
|
|
103
|
+
if (orphan.type === 'architect') {
|
|
104
|
+
setArchitect(null);
|
|
105
|
+
}
|
|
84
106
|
if (!options.silent) {
|
|
85
107
|
logger.debug(` Killed: ${orphan.name}`);
|
|
86
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orphan-handler.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/orphan-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"orphan-handler.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/orphan-handler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -42,10 +42,7 @@ The `af` command orchestrates builders, manages worktrees, and coordinates devel
|
|
|
42
42
|
|
|
43
43
|
**Full reference:** See [codev/resources/agent-farm.md](../resources/agent-farm.md)
|
|
44
44
|
|
|
45
|
-
**
|
|
46
|
-
```bash
|
|
47
|
-
alias af='./codev/bin/agent-farm'
|
|
48
|
-
```
|
|
45
|
+
**Note:** `af`, `consult`, and `codev` are global commands installed via npm. They work from any directory - no aliases or paths needed.
|
|
49
46
|
|
|
50
47
|
### Consult Tool
|
|
51
48
|
|
|
@@ -182,8 +179,8 @@ The Architect uses SPIDER or TICK protocols. The Architect is responsible for th
|
|
|
182
179
|
4. Create a detailed specification (incorporating lessons learned)
|
|
183
180
|
5. **Consult external reviewers** using the consult tool:
|
|
184
181
|
```bash
|
|
185
|
-
|
|
186
|
-
|
|
182
|
+
consult --model gemini --type spec-review spec 0034
|
|
183
|
+
consult --model codex --type spec-review spec 0034
|
|
187
184
|
```
|
|
188
185
|
5. Address concerns raised by the reviewers
|
|
189
186
|
6. **Present to human** for final review:
|
|
@@ -199,8 +196,8 @@ The Architect uses SPIDER or TICK protocols. The Architect is responsible for th
|
|
|
199
196
|
4. Specify acceptance criteria
|
|
200
197
|
5. **Consult external reviewers** using the consult tool:
|
|
201
198
|
```bash
|
|
202
|
-
|
|
203
|
-
|
|
199
|
+
consult --model gemini --type plan-review plan 0034
|
|
200
|
+
consult --model codex --type plan-review plan 0034
|
|
204
201
|
```
|
|
205
202
|
5. Address concerns raised by the reviewers
|
|
206
203
|
6. **Present to human** for final review:
|
|
@@ -380,9 +377,9 @@ Focus on:
|
|
|
380
377
|
|
|
381
378
|
Give verdict: APPROVE or REQUEST_CHANGES with specific integration feedback."
|
|
382
379
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
380
|
+
consult --model gemini --type integration-review pr 35 &
|
|
381
|
+
consult --model codex --type integration-review pr 35 &
|
|
382
|
+
consult --model claude --type integration-review pr 35 &
|
|
386
383
|
wait
|
|
387
384
|
```
|
|
388
385
|
|