@cluesmith/codev 3.3.5 → 3.3.6
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/dashboard-dist/assets/{index-r3bZzLmX.css → index-BjcqV9Vv.css} +1 -1
- package/dashboard-dist/assets/{index-BuflRUi6.js → index-b7GnZV2i.js} +55 -55
- package/dashboard-dist/assets/index-b7GnZV2i.js.map +1 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +50 -17
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +5 -1
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +1 -1
- package/dist/agent-farm/commands/attach.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +2 -1
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/decisions.d.ts +25 -0
- package/dist/agent-farm/commands/decisions.d.ts.map +1 -0
- package/dist/agent-farm/commands/decisions.js +54 -0
- package/dist/agent-farm/commands/decisions.js.map +1 -0
- package/dist/agent-farm/commands/ide.d.ts +32 -3
- package/dist/agent-farm/commands/ide.d.ts.map +1 -1
- package/dist/agent-farm/commands/ide.js +180 -19
- package/dist/agent-farm/commands/ide.js.map +1 -1
- package/dist/agent-farm/commands/reset/context.d.ts +4 -2
- package/dist/agent-farm/commands/reset/context.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/context.js +12 -4
- package/dist/agent-farm/commands/reset/context.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +13 -18
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +7 -0
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +51 -18
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +17 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +41 -19
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/lib/builder-lookup.d.ts +3 -2
- package/dist/agent-farm/lib/builder-lookup.d.ts.map +1 -1
- package/dist/agent-farm/lib/builder-lookup.js +24 -9
- package/dist/agent-farm/lib/builder-lookup.js.map +1 -1
- package/dist/agent-farm/lib/ide-extensions.d.ts +82 -0
- package/dist/agent-farm/lib/ide-extensions.d.ts.map +1 -0
- package/dist/agent-farm/lib/ide-extensions.js +179 -0
- package/dist/agent-farm/lib/ide-extensions.js.map +1 -0
- package/dist/agent-farm/lib/ide-record.d.ts +6 -1
- package/dist/agent-farm/lib/ide-record.d.ts.map +1 -1
- package/dist/agent-farm/lib/ide-record.js +8 -1
- package/dist/agent-farm/lib/ide-record.js.map +1 -1
- package/dist/agent-farm/lib/ide-version.d.ts +97 -0
- package/dist/agent-farm/lib/ide-version.d.ts.map +1 -0
- package/dist/agent-farm/lib/ide-version.js +224 -0
- package/dist/agent-farm/lib/ide-version.js.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +7 -3
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/agent-state/broadcast.d.ts +19 -0
- package/dist/agent-farm/servers/agent-state/broadcast.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/broadcast.js +30 -0
- package/dist/agent-farm/servers/agent-state/broadcast.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/identity.d.ts +50 -0
- package/dist/agent-farm/servers/agent-state/identity.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/identity.js +120 -0
- package/dist/agent-farm/servers/agent-state/identity.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/liveness.d.ts +107 -0
- package/dist/agent-farm/servers/agent-state/liveness.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/liveness.js +224 -0
- package/dist/agent-farm/servers/agent-state/liveness.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/route.d.ts +38 -0
- package/dist/agent-farm/servers/agent-state/route.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/route.js +170 -0
- package/dist/agent-farm/servers/agent-state/route.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/serve.d.ts +31 -0
- package/dist/agent-farm/servers/agent-state/serve.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/serve.js +49 -0
- package/dist/agent-farm/servers/agent-state/serve.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/store.d.ts +76 -0
- package/dist/agent-farm/servers/agent-state/store.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/store.js +157 -0
- package/dist/agent-farm/servers/agent-state/store.js.map +1 -0
- package/dist/agent-farm/servers/decisions/parse.d.ts.map +1 -1
- package/dist/agent-farm/servers/decisions/parse.js +45 -15
- package/dist/agent-farm/servers/decisions/parse.js.map +1 -1
- package/dist/agent-farm/servers/decisions/stamp.d.ts +6 -2
- package/dist/agent-farm/servers/decisions/stamp.d.ts.map +1 -1
- package/dist/agent-farm/servers/decisions/stamp.js +53 -29
- package/dist/agent-farm/servers/decisions/stamp.js.map +1 -1
- package/dist/agent-farm/servers/decisions/template.d.ts +2 -0
- package/dist/agent-farm/servers/decisions/template.d.ts.map +1 -0
- package/dist/agent-farm/servers/decisions/template.js +15 -0
- package/dist/agent-farm/servers/decisions/template.js.map +1 -0
- package/dist/agent-farm/servers/ide-server.d.ts +28 -8
- package/dist/agent-farm/servers/ide-server.d.ts.map +1 -1
- package/dist/agent-farm/servers/ide-server.js +147 -50
- package/dist/agent-farm/servers/ide-server.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts +27 -1
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +184 -31
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts +14 -1
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +51 -9
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +50 -9
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +35 -1
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +25 -0
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +128 -4
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +18 -5
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/utils/builder-worktree-identity.d.ts +39 -0
- package/dist/agent-farm/utils/builder-worktree-identity.d.ts.map +1 -0
- package/dist/agent-farm/utils/builder-worktree-identity.js +42 -0
- package/dist/agent-farm/utils/builder-worktree-identity.js.map +1 -0
- package/dist/agent-farm/utils/harness.d.ts +71 -0
- package/dist/agent-farm/utils/harness.d.ts.map +1 -1
- package/dist/agent-farm/utils/harness.js +153 -0
- package/dist/agent-farm/utils/harness.js.map +1 -1
- package/dist/agent-farm/utils/lifecycle-reporter.d.ts +79 -0
- package/dist/agent-farm/utils/lifecycle-reporter.d.ts.map +1 -0
- package/dist/agent-farm/utils/lifecycle-reporter.js +347 -0
- package/dist/agent-farm/utils/lifecycle-reporter.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +16 -2
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +67 -23
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/bootstrap-docs.d.ts +132 -0
- package/dist/commands/bootstrap-docs.d.ts.map +1 -0
- package/dist/commands/bootstrap-docs.js +725 -0
- package/dist/commands/bootstrap-docs.js.map +1 -0
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +14 -1
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/consult/tree-tripwire.d.ts +2 -75
- package/dist/commands/consult/tree-tripwire.d.ts.map +1 -1
- package/dist/commands/consult/tree-tripwire.js +7 -184
- package/dist/commands/consult/tree-tripwire.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +36 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/porch/state.d.ts +0 -4
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +23 -10
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/update.d.ts +5 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +73 -18
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/agent-env.d.ts +22 -1
- package/dist/lib/agent-env.d.ts.map +1 -1
- package/dist/lib/agent-env.js +27 -1
- package/dist/lib/agent-env.js.map +1 -1
- package/dist/lib/agent-process.d.ts +23 -0
- package/dist/lib/agent-process.d.ts.map +1 -0
- package/dist/lib/agent-process.js +24 -0
- package/dist/lib/agent-process.js.map +1 -0
- package/dist/lib/forge-contracts.d.ts +9 -3
- package/dist/lib/forge-contracts.d.ts.map +1 -1
- package/dist/lib/forge-contracts.js.map +1 -1
- package/dist/lib/forge.d.ts +8 -5
- package/dist/lib/forge.d.ts.map +1 -1
- package/dist/lib/forge.js +57 -1
- package/dist/lib/forge.js.map +1 -1
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +38 -0
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/governance-bootstrap.d.ts +155 -0
- package/dist/lib/governance-bootstrap.d.ts.map +1 -0
- package/dist/lib/governance-bootstrap.js +469 -0
- package/dist/lib/governance-bootstrap.js.map +1 -0
- package/dist/lib/issue-id.d.ts +34 -0
- package/dist/lib/issue-id.d.ts.map +1 -0
- package/dist/lib/issue-id.js +61 -0
- package/dist/lib/issue-id.js.map +1 -0
- package/dist/lib/scaffold.d.ts +4 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +29 -5
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/lib/shipped-skill-hashes.d.ts +10 -0
- package/dist/lib/shipped-skill-hashes.d.ts.map +1 -0
- package/dist/lib/shipped-skill-hashes.js +197 -0
- package/dist/lib/shipped-skill-hashes.js.map +1 -0
- package/dist/lib/skill-refresh.d.ts +90 -0
- package/dist/lib/skill-refresh.d.ts.map +1 -0
- package/dist/lib/skill-refresh.js +267 -0
- package/dist/lib/skill-refresh.js.map +1 -0
- package/dist/lib/tree-snapshot.d.ts +172 -0
- package/dist/lib/tree-snapshot.d.ts.map +1 -0
- package/dist/lib/tree-snapshot.js +393 -0
- package/dist/lib/tree-snapshot.js.map +1 -0
- package/dist/terminal/pty-session.d.ts +5 -0
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +7 -0
- package/dist/terminal/pty-session.js.map +1 -1
- package/ide-extension/codev-vscode.vsix +0 -0
- package/ide-extension/manifest.json +7 -0
- package/package.json +8 -6
- package/scripts/forge/jira/_lib.sh +113 -0
- package/scripts/forge/jira/auth-status.sh +29 -0
- package/scripts/forge/jira/issue-comment.sh +23 -0
- package/scripts/forge/jira/issue-list.sh +32 -0
- package/scripts/forge/jira/issue-search.sh +40 -0
- package/scripts/forge/jira/issue-view.sh +41 -0
- package/scripts/forge/jira/recently-closed.sh +81 -0
- package/scripts/forge/jira/user-identity.sh +18 -0
- package/skeleton/.claude/skills/afx/SKILL.md +36 -0
- package/skeleton/.claude/skills/codev/SKILL.md +18 -2
- package/skeleton/.claude/skills/update-arch-docs/SKILL.md +28 -2
- package/skeleton/.codex/skills/afx/SKILL.md +36 -0
- package/skeleton/.codex/skills/codev/SKILL.md +18 -2
- package/skeleton/.codex/skills/update-arch-docs/SKILL.md +28 -2
- package/skeleton/resources/commands/agent-farm.md +112 -0
- package/skeleton/resources/commands/codev.md +47 -0
- package/skeleton/resources/commands/overview.md +1 -0
- package/skeleton/resources/decision-protocol.md +215 -0
- package/skeleton/resources/workflow-reference.md +12 -0
- package/skeleton/roles/architect.md +6 -0
- package/skeleton/templates/bootstrap-docs-prompt.md +16 -0
- package/skeleton/templates/bootstrap-docs-review-prompt.md +19 -0
- package/skeleton/templates/cheatsheet.md +1 -0
- package/dashboard-dist/assets/index-BuflRUi6.js.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// The decisions file a workspace starts from (Issue #1840). `afx decisions init` writes
|
|
2
|
+
// it; section 4 of resources/decision-protocol.md shows it, and a test pins the two equal.
|
|
3
|
+
export const DECISIONS_FILE_TEMPLATE = `# Pending owner decisions — all architects (hub: main)
|
|
4
|
+
|
|
5
|
+
Rule inline: one word on the line under an item's **Your word:** line, or in the Decisions tab.
|
|
6
|
+
Newest first. Only main edits this file; architects send items with \`afx send architect:main 'DECISION …'\`.
|
|
7
|
+
|
|
8
|
+
_Status: 0 open._
|
|
9
|
+
_Zone: UTC_
|
|
10
|
+
|
|
11
|
+
## Open
|
|
12
|
+
|
|
13
|
+
## Ruled
|
|
14
|
+
`;
|
|
15
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/agent-farm/servers/decisions/template.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,2FAA2F;AAE3F,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;CAWtC,CAAC"}
|
|
@@ -7,10 +7,18 @@
|
|
|
7
7
|
* Runtime state lives in the `~/.agent-farm/ide-server.json` record (Issue
|
|
8
8
|
* #1668 §D3) — no config file, no `global.db` change. Liveness is discovered by
|
|
9
9
|
* port (`getProcessesOnPort`), the same way Tower finds its own process.
|
|
10
|
+
*
|
|
11
|
+
* Every spawn runs a preflight first (Spec 1789): the server version floor and
|
|
12
|
+
* the embedded sidebar install into the Tower-owned extensions directory. The
|
|
13
|
+
* preflight throws before anything is stopped, replaced or recorded, so a
|
|
14
|
+
* refused start leaves a live server and its record untouched. Lifecycle
|
|
15
|
+
* operations are serialized by `withIdeLock`, taken only at the entry points
|
|
16
|
+
* (`spawnIdeServer`, `stopIdeServer`, the respawn in `ensureIdeServerLive`);
|
|
17
|
+
* the unlocked bodies call each other freely, so the nesting cannot deadlock.
|
|
10
18
|
*/
|
|
11
19
|
import http from 'node:http';
|
|
12
20
|
import { type IdeServerRecord } from '../lib/ide-record.js';
|
|
13
|
-
type LogFn
|
|
21
|
+
import { type LogFn } from '../lib/ide-version.js';
|
|
14
22
|
/**
|
|
15
23
|
* The recorded IDE server port, or null if none — the forward's hot-path target
|
|
16
24
|
* resolution. A plain record read, no port scan (Issue #1668): a dead server
|
|
@@ -21,18 +29,31 @@ export declare function getRecordedIdePort(): number | null;
|
|
|
21
29
|
export interface SpawnIdeOptions {
|
|
22
30
|
serverPath: string;
|
|
23
31
|
port?: number;
|
|
24
|
-
|
|
32
|
+
}
|
|
33
|
+
export interface SpawnIdeResult {
|
|
34
|
+
record: IdeServerRecord;
|
|
35
|
+
/**
|
|
36
|
+
* True when an already-live server was adopted that is not running what
|
|
37
|
+
* this start asked for: the sidebar just changed, the recorded server path,
|
|
38
|
+
* sidebar version or extensions directory differs from the current one
|
|
39
|
+
* (including a legacy record with neither), or its launch arguments are
|
|
40
|
+
* unknown (no prior record). The live server is never killed; the user
|
|
41
|
+
* restarts it.
|
|
42
|
+
*/
|
|
43
|
+
restartRequired: boolean;
|
|
25
44
|
}
|
|
26
45
|
/**
|
|
27
46
|
* Spawn the IDE server detached (so it survives a Tower restart, like a
|
|
28
|
-
* shellper) and write the runtime record. Resolves
|
|
29
|
-
*
|
|
47
|
+
* shellper) and write the runtime record. Resolves once the server is
|
|
48
|
+
* listening, or throws if the binary is missing, fails the preflight, or never
|
|
49
|
+
* binds. Serialized with every other lifecycle operation.
|
|
30
50
|
*/
|
|
31
|
-
export declare function spawnIdeServer(opts: SpawnIdeOptions, log: LogFn): Promise<
|
|
51
|
+
export declare function spawnIdeServer(opts: SpawnIdeOptions, log: LogFn): Promise<SpawnIdeResult>;
|
|
32
52
|
/**
|
|
33
53
|
* Stop the IDE server on the recorded port: SIGTERM, wait for exit, escalate to
|
|
34
54
|
* SIGKILL for survivors (mirrors `towerStop`, #1668 plan §4), then delete the
|
|
35
|
-
* record. Cold path — `getProcessesOnPort` is fine here.
|
|
55
|
+
* record. Cold path — `getProcessesOnPort` is fine here. Serialized with every
|
|
56
|
+
* other lifecycle operation.
|
|
36
57
|
*/
|
|
37
58
|
export declare function stopIdeServer(log: LogFn): Promise<{
|
|
38
59
|
stopped: boolean;
|
|
@@ -59,10 +80,9 @@ export declare function ensureIdeServerLive(log?: LogFn): Promise<number | null>
|
|
|
59
80
|
export declare function reconcileIdeServer(log: LogFn): Promise<void>;
|
|
60
81
|
/**
|
|
61
82
|
* Local-only `/api/ide` management endpoint driving the lifecycle above:
|
|
62
|
-
* `POST` starts (body `{ serverPath, port
|
|
83
|
+
* `POST` starts (body `{ serverPath, port? }`), `DELETE` stops,
|
|
63
84
|
* `GET` reports status. Reached only post-`isRequestAllowed` (key required) and
|
|
64
85
|
* blocked from the tunnel like `/api/tunnel/*` — it spawns/kills a process.
|
|
65
86
|
*/
|
|
66
87
|
export declare function handleIdeApi(req: http.IncomingMessage, res: http.ServerResponse, log: LogFn): Promise<void>;
|
|
67
|
-
export {};
|
|
68
88
|
//# sourceMappingURL=ide-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-server.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/ide-server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ide-server.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/ide-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,OAAO,EAGL,KAAK,eAAe,EAMrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,KAAK,EAGX,MAAM,uBAAuB,CAAC;AA2B/B;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAElD;AAwBD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB;;;;;;;OAOG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AA4BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,CAEzF;AAoID;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAE5F;AAsCD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,IAAI,SAAS,CAK3C;AAKD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,GAAE,KAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUvF;AAwBD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlE;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAE,KAAK,GACT,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
|
|
@@ -7,16 +7,23 @@
|
|
|
7
7
|
* Runtime state lives in the `~/.agent-farm/ide-server.json` record (Issue
|
|
8
8
|
* #1668 §D3) — no config file, no `global.db` change. Liveness is discovered by
|
|
9
9
|
* port (`getProcessesOnPort`), the same way Tower finds its own process.
|
|
10
|
+
*
|
|
11
|
+
* Every spawn runs a preflight first (Spec 1789): the server version floor and
|
|
12
|
+
* the embedded sidebar install into the Tower-owned extensions directory. The
|
|
13
|
+
* preflight throws before anything is stopped, replaced or recorded, so a
|
|
14
|
+
* refused start leaves a live server and its record untouched. Lifecycle
|
|
15
|
+
* operations are serialized by `withIdeLock`, taken only at the entry points
|
|
16
|
+
* (`spawnIdeServer`, `stopIdeServer`, the respawn in `ensureIdeServerLive`);
|
|
17
|
+
* the unlocked bodies call each other freely, so the nesting cannot deadlock.
|
|
10
18
|
*/
|
|
11
19
|
import { spawn } from 'node:child_process';
|
|
12
20
|
import { existsSync } from 'node:fs';
|
|
13
21
|
import { getProcessesOnPort } from '../utils/port.js';
|
|
14
|
-
import { sanitizeAgentEnv } from '../../lib/agent-env.js';
|
|
15
22
|
import { parseJsonBody } from '../utils/server-utils.js';
|
|
16
23
|
import { IDE_DEFAULT_PREFIX, IDE_DEFAULT_PORT, readIdeRecord, writeIdeRecord, deleteIdeRecord, ensureIdeConnectionToken, getIdeConnectionTokenPath, } from '../lib/ide-record.js';
|
|
17
|
-
|
|
24
|
+
import { IDE_READY_TIMEOUT_MS, IDE_STOP_EXIT_TIMEOUT_MS, buildIdeServerEnv, checkIdeServerVersion, } from '../lib/ide-version.js';
|
|
25
|
+
import { ensureSidebarInstalled, getIdeExtensionsDir } from '../lib/ide-extensions.js';
|
|
18
26
|
const READY_POLL_MS = 200;
|
|
19
|
-
const STOP_EXIT_TIMEOUT_MS = 5_000;
|
|
20
27
|
const STOP_POLL_MS = 200;
|
|
21
28
|
/**
|
|
22
29
|
* True if some process is listening on the port. Uses `lsof` (`getProcessesOnPort`),
|
|
@@ -57,12 +64,43 @@ async function waitForPort(port, timeoutMs) {
|
|
|
57
64
|
}
|
|
58
65
|
return isPortLive(port);
|
|
59
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Tail of the lifecycle lock: a non-reentrant promise chain. Taken only at the
|
|
69
|
+
* entry points, never inside the unlocked bodies.
|
|
70
|
+
*/
|
|
71
|
+
let ideLockTail = Promise.resolve();
|
|
72
|
+
function withIdeLock(fn) {
|
|
73
|
+
const run = ideLockTail.then(fn);
|
|
74
|
+
ideLockTail = run.catch(() => { });
|
|
75
|
+
return run;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Version floor, then the sidebar install (which validates or creates the
|
|
79
|
+
* extensions directory first). Throws before any side effect on the server or
|
|
80
|
+
* the record. A missing embedded sidebar only warns: the server still gets
|
|
81
|
+
* `--extensions-dir`.
|
|
82
|
+
*/
|
|
83
|
+
async function runIdePreflight(serverPath, log) {
|
|
84
|
+
const { version } = await checkIdeServerVersion(serverPath);
|
|
85
|
+
const extensionsDir = getIdeExtensionsDir();
|
|
86
|
+
const sidebar = await ensureSidebarInstalled(serverPath, { extensionsDir, log });
|
|
87
|
+
return {
|
|
88
|
+
serverVersion: version,
|
|
89
|
+
extensionsDir,
|
|
90
|
+
sidebarVersion: sidebar.version,
|
|
91
|
+
sidebarChanged: sidebar.outcome === 'installed',
|
|
92
|
+
};
|
|
93
|
+
}
|
|
60
94
|
/**
|
|
61
95
|
* Spawn the IDE server detached (so it survives a Tower restart, like a
|
|
62
|
-
* shellper) and write the runtime record. Resolves
|
|
63
|
-
*
|
|
96
|
+
* shellper) and write the runtime record. Resolves once the server is
|
|
97
|
+
* listening, or throws if the binary is missing, fails the preflight, or never
|
|
98
|
+
* binds. Serialized with every other lifecycle operation.
|
|
64
99
|
*/
|
|
65
|
-
export
|
|
100
|
+
export function spawnIdeServer(opts, log) {
|
|
101
|
+
return withIdeLock(() => spawnIdeServerUnlocked(opts, log));
|
|
102
|
+
}
|
|
103
|
+
async function spawnIdeServerUnlocked(opts, log) {
|
|
66
104
|
const port = opts.port ?? IDE_DEFAULT_PORT;
|
|
67
105
|
if (!opts.serverPath) {
|
|
68
106
|
throw new Error('IDE server path is required (no default — set --server-path)');
|
|
@@ -70,28 +108,20 @@ export async function spawnIdeServer(opts, log) {
|
|
|
70
108
|
if (!existsSync(opts.serverPath)) {
|
|
71
109
|
throw new Error(`IDE server binary not found at ${opts.serverPath}`);
|
|
72
110
|
}
|
|
111
|
+
// Before anything is stopped or replaced: a refused server or a failed
|
|
112
|
+
// install must leave the current server and its record exactly as they are.
|
|
113
|
+
const preflight = await runIdePreflight(opts.serverPath, log);
|
|
73
114
|
// Start-collision: a prior server recorded on a DIFFERENT port would be orphaned
|
|
74
115
|
// (still running, no longer tracked) if we just overwrote the singleton record.
|
|
75
116
|
// Stop it first so "start on a new port" never leaves a detached stray (#1668).
|
|
76
117
|
const existing = readIdeRecord();
|
|
77
118
|
if (existing && existing.port !== port && isPortLive(existing.port)) {
|
|
78
119
|
log('WARN', `IDE server already recorded on port ${existing.port}; stopping it before starting on ${port}`);
|
|
79
|
-
await
|
|
120
|
+
await stopIdeServerUnlocked(log);
|
|
80
121
|
}
|
|
81
|
-
// Already live on the port
|
|
122
|
+
// Already live on the port: idempotent, adopt and record, never kill or double-spawn.
|
|
82
123
|
if (isPortLive(port)) {
|
|
83
|
-
|
|
84
|
-
const pid = getProcessesOnPort(port)[0] ?? 0;
|
|
85
|
-
const record = {
|
|
86
|
-
prefix: IDE_DEFAULT_PREFIX,
|
|
87
|
-
port,
|
|
88
|
-
serverPath: opts.serverPath,
|
|
89
|
-
pid,
|
|
90
|
-
defaultFolder: opts.defaultFolder,
|
|
91
|
-
startedAt: new Date().toISOString(),
|
|
92
|
-
};
|
|
93
|
-
writeIdeRecord(record);
|
|
94
|
-
return record;
|
|
124
|
+
return adoptLiveIdeServer(opts, port, existing, preflight, log);
|
|
95
125
|
}
|
|
96
126
|
const basePath = IDE_DEFAULT_PREFIX.replace(/\/$/, ''); // "/ide"
|
|
97
127
|
const tokenFile = getIdeConnectionTokenPath();
|
|
@@ -101,15 +131,13 @@ export async function spawnIdeServer(opts, log) {
|
|
|
101
131
|
'--port', String(port),
|
|
102
132
|
'--server-base-path', basePath,
|
|
103
133
|
'--connection-token-file', tokenFile,
|
|
134
|
+
'--extensions-dir', preflight.extensionsDir,
|
|
104
135
|
'--accept-server-license-terms',
|
|
105
136
|
];
|
|
106
|
-
|
|
107
|
-
args.push('--default-folder', opts.defaultFolder);
|
|
108
|
-
}
|
|
109
|
-
log('INFO', `Spawning IDE server: ${opts.serverPath} ${args.join(' ')}`);
|
|
137
|
+
log('INFO', `Spawning IDE server ${preflight.serverVersion}: ${opts.serverPath} ${args.join(' ')}`);
|
|
110
138
|
const child = spawn(opts.serverPath, args, {
|
|
111
139
|
cwd: process.cwd(),
|
|
112
|
-
env:
|
|
140
|
+
env: buildIdeServerEnv(),
|
|
113
141
|
detached: true,
|
|
114
142
|
stdio: 'ignore',
|
|
115
143
|
});
|
|
@@ -117,28 +145,88 @@ export async function spawnIdeServer(opts, log) {
|
|
|
117
145
|
throw new Error('Failed to spawn IDE server process');
|
|
118
146
|
}
|
|
119
147
|
child.unref();
|
|
120
|
-
const ready = await waitForPort(port,
|
|
148
|
+
const ready = await waitForPort(port, IDE_READY_TIMEOUT_MS);
|
|
121
149
|
if (!ready) {
|
|
122
|
-
throw new Error(`IDE server did not start listening on port ${port} within ${
|
|
150
|
+
throw new Error(`IDE server did not start listening on port ${port} within ${IDE_READY_TIMEOUT_MS / 1000}s`);
|
|
123
151
|
}
|
|
124
152
|
const record = {
|
|
125
153
|
prefix: IDE_DEFAULT_PREFIX,
|
|
126
154
|
port,
|
|
127
155
|
serverPath: opts.serverPath,
|
|
128
156
|
pid: child.pid,
|
|
129
|
-
defaultFolder: opts.defaultFolder,
|
|
130
157
|
startedAt: new Date().toISOString(),
|
|
158
|
+
serverVersion: preflight.serverVersion,
|
|
159
|
+
extensionsDir: preflight.extensionsDir,
|
|
160
|
+
sidebarVersion: preflight.sidebarVersion ?? undefined,
|
|
131
161
|
};
|
|
132
162
|
writeIdeRecord(record);
|
|
133
163
|
log('INFO', `IDE server listening on port ${port} (pid ${child.pid})`);
|
|
134
|
-
return record;
|
|
164
|
+
return { record, restartRequired: false };
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Record a server already listening on `port` without touching it. The record
|
|
168
|
+
* keeps what the live process was actually spawned with (the prior record's
|
|
169
|
+
* server path, version, extensions directory and sidebar; absent stays absent):
|
|
170
|
+
* the version just checked describes `opts.serverPath`, which need not be the
|
|
171
|
+
* binary the live process came from. With no prior record on that port the live
|
|
172
|
+
* binary is unknown, so the requested path is recorded and a restart is flagged.
|
|
173
|
+
*/
|
|
174
|
+
function adoptLiveIdeServer(opts, port, existing, preflight, log) {
|
|
175
|
+
let prior = null;
|
|
176
|
+
if (existing && existing.port === port) {
|
|
177
|
+
prior = existing;
|
|
178
|
+
}
|
|
179
|
+
const restartRequired = prior === null || !liveServerIsCurrent(prior, opts.serverPath, preflight);
|
|
180
|
+
const record = {
|
|
181
|
+
prefix: IDE_DEFAULT_PREFIX,
|
|
182
|
+
port,
|
|
183
|
+
serverPath: prior?.serverPath ?? opts.serverPath,
|
|
184
|
+
pid: getProcessesOnPort(port)[0] ?? 0,
|
|
185
|
+
startedAt: prior?.startedAt ?? new Date().toISOString(),
|
|
186
|
+
serverVersion: prior?.serverVersion,
|
|
187
|
+
extensionsDir: prior?.extensionsDir,
|
|
188
|
+
sidebarVersion: prior?.sidebarVersion,
|
|
189
|
+
};
|
|
190
|
+
writeIdeRecord(record);
|
|
191
|
+
let note = '';
|
|
192
|
+
if (restartRequired) {
|
|
193
|
+
note = '; restart it to load the current Codev sidebar';
|
|
194
|
+
}
|
|
195
|
+
log('INFO', `IDE server already listening on port ${port}; adopted${note}`);
|
|
196
|
+
return { record, restartRequired };
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* True when the live server recorded in `prior` already runs what this start
|
|
200
|
+
* prepared: the same server binary at the same version, the same extensions
|
|
201
|
+
* directory and, when a sidebar is embedded, the same sidebar version. Compared
|
|
202
|
+
* against the record rather than this preflight's outcome, so a server left
|
|
203
|
+
* running after an earlier start upgraded the server (in place, as `npm i -g`
|
|
204
|
+
* does, or at a new path) or the sidebar is still reported stale on every later
|
|
205
|
+
* start. An unknown recorded version is not treated as stale on its own.
|
|
206
|
+
*/
|
|
207
|
+
function liveServerIsCurrent(prior, serverPath, preflight) {
|
|
208
|
+
if (prior.serverPath !== serverPath)
|
|
209
|
+
return false;
|
|
210
|
+
if (prior.serverVersion !== undefined && prior.serverVersion !== preflight.serverVersion)
|
|
211
|
+
return false;
|
|
212
|
+
if (preflight.sidebarChanged)
|
|
213
|
+
return false;
|
|
214
|
+
if (prior.extensionsDir !== preflight.extensionsDir)
|
|
215
|
+
return false;
|
|
216
|
+
if (preflight.sidebarVersion === null)
|
|
217
|
+
return true;
|
|
218
|
+
return prior.sidebarVersion === preflight.sidebarVersion;
|
|
135
219
|
}
|
|
136
220
|
/**
|
|
137
221
|
* Stop the IDE server on the recorded port: SIGTERM, wait for exit, escalate to
|
|
138
222
|
* SIGKILL for survivors (mirrors `towerStop`, #1668 plan §4), then delete the
|
|
139
|
-
* record. Cold path — `getProcessesOnPort` is fine here.
|
|
223
|
+
* record. Cold path — `getProcessesOnPort` is fine here. Serialized with every
|
|
224
|
+
* other lifecycle operation.
|
|
140
225
|
*/
|
|
141
|
-
export
|
|
226
|
+
export function stopIdeServer(log) {
|
|
227
|
+
return withIdeLock(() => stopIdeServerUnlocked(log));
|
|
228
|
+
}
|
|
229
|
+
async function stopIdeServerUnlocked(log) {
|
|
142
230
|
const record = readIdeRecord();
|
|
143
231
|
if (!record) {
|
|
144
232
|
return { stopped: false, port: null };
|
|
@@ -154,7 +242,7 @@ export async function stopIdeServer(log) {
|
|
|
154
242
|
}
|
|
155
243
|
// Wait for the SIGTERMed processes to actually exit before deleting the record;
|
|
156
244
|
// escalate any survivors to SIGKILL, so a lingering process can't be re-adopted.
|
|
157
|
-
const deadline = Date.now() +
|
|
245
|
+
const deadline = Date.now() + IDE_STOP_EXIT_TIMEOUT_MS;
|
|
158
246
|
let survivors = pids.filter(isPidAlive);
|
|
159
247
|
while (survivors.length > 0 && Date.now() < deadline) {
|
|
160
248
|
await new Promise((r) => setTimeout(r, STOP_POLL_MS));
|
|
@@ -197,22 +285,32 @@ export async function ensureIdeServerLive(log = () => { }) {
|
|
|
197
285
|
return record.port;
|
|
198
286
|
if (respawnInFlight)
|
|
199
287
|
return respawnInFlight;
|
|
200
|
-
respawnInFlight = (
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
const fresh = await spawnIdeServer({ serverPath: record.serverPath, port: record.port, defaultFolder: record.defaultFolder }, log);
|
|
204
|
-
return fresh.port;
|
|
205
|
-
}
|
|
206
|
-
catch (err) {
|
|
207
|
-
log('WARN', `IDE server respawn failed: ${err.message}`);
|
|
208
|
-
return null;
|
|
209
|
-
}
|
|
210
|
-
finally {
|
|
211
|
-
respawnInFlight = null;
|
|
212
|
-
}
|
|
213
|
-
})();
|
|
288
|
+
respawnInFlight = withIdeLock(() => respawnRecordedIdeServer(log)).finally(() => {
|
|
289
|
+
respawnInFlight = null;
|
|
290
|
+
});
|
|
214
291
|
return respawnInFlight;
|
|
215
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* The respawn body, run under the lock. It re-reads the record first: a start
|
|
295
|
+
* or stop queued ahead of it may have changed or removed the record, or
|
|
296
|
+
* already brought the server up.
|
|
297
|
+
*/
|
|
298
|
+
async function respawnRecordedIdeServer(log) {
|
|
299
|
+
try {
|
|
300
|
+
const current = readIdeRecord();
|
|
301
|
+
if (!current)
|
|
302
|
+
return null;
|
|
303
|
+
if (isPortLive(current.port))
|
|
304
|
+
return current.port;
|
|
305
|
+
log('INFO', `IDE server on port ${current.port} is down; respawning from ${current.serverPath}`);
|
|
306
|
+
const fresh = await spawnIdeServerUnlocked({ serverPath: current.serverPath, port: current.port }, log);
|
|
307
|
+
return fresh.record.port;
|
|
308
|
+
}
|
|
309
|
+
catch (err) {
|
|
310
|
+
log('WARN', `IDE server respawn failed: ${err.message}`);
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
216
314
|
/**
|
|
217
315
|
* Boot-time reconcile: adopt a live server (no orphan) or respawn a recorded
|
|
218
316
|
* but dead one. Best-effort — never throws into Tower boot.
|
|
@@ -229,7 +327,7 @@ export async function reconcileIdeServer(log) {
|
|
|
229
327
|
}
|
|
230
328
|
/**
|
|
231
329
|
* Local-only `/api/ide` management endpoint driving the lifecycle above:
|
|
232
|
-
* `POST` starts (body `{ serverPath, port
|
|
330
|
+
* `POST` starts (body `{ serverPath, port? }`), `DELETE` stops,
|
|
233
331
|
* `GET` reports status. Reached only post-`isRequestAllowed` (key required) and
|
|
234
332
|
* blocked from the tunnel like `/api/tunnel/*` — it spawns/kills a process.
|
|
235
333
|
*/
|
|
@@ -258,16 +356,15 @@ export async function handleIdeApi(req, res, log) {
|
|
|
258
356
|
}
|
|
259
357
|
const serverPath = typeof body.serverPath === 'string' ? body.serverPath : '';
|
|
260
358
|
const port = typeof body.port === 'number' ? body.port : undefined;
|
|
261
|
-
const defaultFolder = typeof body.defaultFolder === 'string' ? body.defaultFolder : undefined;
|
|
262
359
|
if (!serverPath) {
|
|
263
360
|
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
264
361
|
res.end(JSON.stringify({ error: 'serverPath is required' }));
|
|
265
362
|
return;
|
|
266
363
|
}
|
|
267
364
|
try {
|
|
268
|
-
const record = await spawnIdeServer({ serverPath, port
|
|
365
|
+
const { record, restartRequired } = await spawnIdeServer({ serverPath, port }, log);
|
|
269
366
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
270
|
-
res.end(JSON.stringify({ ok: true, ...record }));
|
|
367
|
+
res.end(JSON.stringify({ ok: true, ...record, restartRequired }));
|
|
271
368
|
}
|
|
272
369
|
catch (err) {
|
|
273
370
|
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-server.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/ide-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAEhB,aAAa,EACb,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAI9B,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,oDAAoD;AACpD,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,aAAa,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC;AACvC,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,SAAiB;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAQD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAqB,EAAE,GAAU;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAC;IAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,iFAAiF;IACjF,gFAAgF;IAChF,gFAAgF;IAChF,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;IACjC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,MAAM,EAAE,uCAAuC,QAAQ,CAAC,IAAI,oCAAoC,IAAI,EAAE,CAAC,CAAC;QAC5G,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,+EAA+E;IAC/E,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,MAAM,EAAE,wCAAwC,IAAI,YAAY,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAoB;YAC9B,MAAM,EAAE,kBAAkB;YAC1B,IAAI;YACJ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG;YACH,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;IACjE,MAAM,SAAS,GAAG,yBAAyB,EAAE,CAAC;IAC9C,wBAAwB,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG;QACX,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;QACtB,oBAAoB,EAAE,QAAQ;QAC9B,yBAAyB,EAAE,SAAS;QACpC,+BAA+B;KAChC,CAAC;IACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,MAAM,EAAE,wBAAwB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;QACzC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;QAClC,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,WAAW,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,MAAM,GAAoB;QAC9B,MAAM,EAAE,kBAAkB;QAC1B,IAAI;QACJ,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,GAAG,CAAC,MAAM,EAAE,gCAAgC,IAAI,SAAS,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IACvE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAU;IAC5C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,iFAAiF;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,oBAAoB,CAAC;IACnD,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QACrD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QACtD,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAED,eAAe,EAAE,CAAC;IAClB,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7F,GAAG,CAAC,MAAM,EAAE,8BAA8B,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,eAAe,UAAU,GAAG,CAAC,CAAC;IACnG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AACzD,CAAC;AAQD,6EAA6E;AAC7E,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,4EAA4E;AAC5E,IAAI,eAAe,GAAkC,IAAI,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAa,GAAG,EAAE,GAAE,CAAC;IAC7D,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAEhD,IAAI,eAAe;QAAE,OAAO,eAAe,CAAC;IAC5C,eAAe,GAAG,CAAC,KAAK,IAAI,EAAE;QAC5B,IAAI,CAAC;YACH,GAAG,CAAC,MAAM,EAAE,sBAAsB,MAAM,CAAC,IAAI,6BAA6B,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/F,MAAM,KAAK,GAAG,MAAM,cAAc,CAChC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,EACzF,GAAG,CACJ,CAAC;YACF,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,EAAE,8BAA+B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAU;IACjD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,MAAM,EAAE,sCAAsC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IACD,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAyB,EACzB,GAAwB,EACxB,GAAU;IAEV,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;QACxC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,IAA6B,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,MAAM,aAAa,GAAG,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC;YAC9E,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO;IACT,CAAC;IAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"ide-server.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/ide-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,6 +112,15 @@ export declare function derivePrReady(parsed: ParsedStatus): boolean;
|
|
|
112
112
|
* any currently-pending gate wait (requested_at → now).
|
|
113
113
|
*/
|
|
114
114
|
export declare function computeIdleMs(parsed: ParsedStatus): number;
|
|
115
|
+
/** What global.db records for a builder, by worktree path (#1740). */
|
|
116
|
+
export interface StoredBuilderIdentity {
|
|
117
|
+
/** The builder id, which is its terminal role id. */
|
|
118
|
+
roleId: string;
|
|
119
|
+
/** The issue it was spawned for, or null for task/protocol/worktree builders. */
|
|
120
|
+
issueNumber: string | null;
|
|
121
|
+
/** The architect that spawned it (Spec 823), or null. */
|
|
122
|
+
spawnedByArchitect: string | null;
|
|
123
|
+
}
|
|
115
124
|
/**
|
|
116
125
|
* Map a worktree directory name to its expected terminal role_id.
|
|
117
126
|
* Must match what buildAgentName() produces during spawn so we can
|
|
@@ -126,7 +135,11 @@ export declare function computeIdleMs(parsed: ParsedStatus): number;
|
|
|
126
135
|
* task-NAvW → "builder-task-navw"
|
|
127
136
|
* worktree-foIg → "worktree-foig"
|
|
128
137
|
* 0110-legacy → "builder-spir-110"
|
|
138
|
+
* pir-ENG-123-slug → "builder-pir-eng-123" (tracker key, #1740)
|
|
129
139
|
* experiment-AbCd → "builder-experiment-abcd"
|
|
140
|
+
*
|
|
141
|
+
* This is the fallback: discoverBuilders prefers the builder id stored in
|
|
142
|
+
* global.db, which is the role id itself.
|
|
130
143
|
*/
|
|
131
144
|
export declare function worktreeNameToRoleId(dirName: string): string | null;
|
|
132
145
|
/**
|
|
@@ -136,10 +149,23 @@ export declare function worktreeNameToRoleId(dirName: string): string | null;
|
|
|
136
149
|
* Returns the project dir prefix (to match `{ID}-*`) or null for soft-mode builders.
|
|
137
150
|
*/
|
|
138
151
|
export declare function extractProjectIdFromWorktreeName(dirName: string): string | null;
|
|
152
|
+
/**
|
|
153
|
+
* A builder's lowercased role id: the stored builder id when it has the role-id
|
|
154
|
+
* shape, else the id derived from its worktree directory name; `null` when
|
|
155
|
+
* neither yields one. The one derivation shared by overview discovery and
|
|
156
|
+
* Tower's agent-state key (Spec 1595), so the two cannot diverge.
|
|
157
|
+
*/
|
|
158
|
+
export declare function builderRoleId(storedId: string | undefined, worktreeDirName: string): string | null;
|
|
159
|
+
/**
|
|
160
|
+
* Read each builder's stored identity (builder id, issue) from global.db for
|
|
161
|
+
* this workspace, keyed by worktree path. Empty when the DB is missing or
|
|
162
|
+
* unreadable, so discovery falls back to parsing directory names.
|
|
163
|
+
*/
|
|
164
|
+
export declare function loadStoredBuilderIdentities(workspaceRoot: string): Map<string, StoredBuilderIdentity>;
|
|
139
165
|
/**
|
|
140
166
|
* Discover builders by scanning .builders/ directory and reading status.yaml.
|
|
141
167
|
*/
|
|
142
|
-
export declare function discoverBuilders(workspaceRoot: string): OverviewBuilder[];
|
|
168
|
+
export declare function discoverBuilders(workspaceRoot: string, stored?: ReadonlyMap<string, StoredBuilderIdentity>): OverviewBuilder[];
|
|
143
169
|
/**
|
|
144
170
|
* Count a builder's pending review-comments by reading its queue file
|
|
145
171
|
* (`<worktree>/.codev/pending-comments.json`, the single source of truth the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/overview.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,OAAO,KAAK,EAAW,kBAAkB,EAAmB,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGpG,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EAEf,mBAAmB,EAEnB,YAAY,
|
|
1
|
+
{"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/overview.ts"],"names":[],"mappings":"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"}
|