teamshare-bridge 0.26.21 → 0.26.23
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/bridge/daemon.js +32 -0
- package/dist/bridge/daemon.js.map +1 -1
- package/dist/bridge/local-server.d.ts +29 -0
- package/dist/bridge/local-server.js +202 -12
- package/dist/bridge/local-server.js.map +1 -1
- package/dist/cli/commands/blog.js +31 -16
- package/dist/cli/commands/blog.js.map +1 -1
- package/dist/cli/commands/build.js +2 -2
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/chat.js +2 -3
- package/dist/cli/commands/chat.js.map +1 -1
- package/dist/cli/commands/cleanup.js +98 -27
- package/dist/cli/commands/cleanup.js.map +1 -1
- package/dist/cli/commands/plan.d.ts +4 -0
- package/dist/cli/commands/plan.js +33 -10
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/planner.js +15 -5
- package/dist/cli/commands/planner.js.map +1 -1
- package/dist/cli/commands/research.js +26 -20
- package/dist/cli/commands/research.js.map +1 -1
- package/dist/cli/commands/run.js +2 -5
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/worker.js +2 -3
- package/dist/cli/commands/worker.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/cache-cleaner.js +226 -205
- package/dist/lib/cache-cleaner.js.map +1 -1
- package/dist/lib/git/git-auto.js +46 -4
- package/dist/lib/git/git-auto.js.map +1 -1
- package/dist/lib/git/git-core.d.ts +11 -0
- package/dist/lib/git/git-core.js +14 -0
- package/dist/lib/git/git-core.js.map +1 -1
- package/dist/lib/git/git-finalize.d.ts +4 -0
- package/dist/lib/git/git-finalize.js +46 -10
- package/dist/lib/git/git-finalize.js.map +1 -1
- package/dist/lib/git/git-runner.js +2 -5
- package/dist/lib/git/git-runner.js.map +1 -1
- package/dist/lib/git/index.d.ts +2 -1
- package/dist/lib/git/index.js +5 -4
- package/dist/lib/git/index.js.map +1 -1
- package/dist/lib/git/pr-token.d.ts +29 -0
- package/dist/lib/git/pr-token.js +102 -0
- package/dist/lib/git/pr-token.js.map +1 -0
- package/dist/lib/harness/activity.d.ts +95 -0
- package/dist/lib/harness/activity.js +110 -0
- package/dist/lib/harness/activity.js.map +1 -0
- package/dist/lib/harness/opencode-control.d.ts +22 -0
- package/dist/lib/harness/opencode-control.js +47 -2
- package/dist/lib/harness/opencode-control.js.map +1 -1
- package/dist/lib/harness/run-scope.d.ts +23 -4
- package/dist/lib/harness/run-scope.js +237 -48
- package/dist/lib/harness/run-scope.js.map +1 -1
- package/dist/lib/harness/spawn.js +237 -12
- package/dist/lib/harness/spawn.js.map +1 -1
- package/dist/lib/llm/usage-reader.js +2 -1
- package/dist/lib/llm/usage-reader.js.map +1 -1
- package/dist/lib/orchestrator/worktree.d.ts +7 -1
- package/dist/lib/orchestrator/worktree.js +18 -1
- package/dist/lib/orchestrator/worktree.js.map +1 -1
- package/dist/lib/workspace/bus.d.ts +9 -0
- package/dist/lib/workspace/bus.js +25 -0
- package/dist/lib/workspace/bus.js.map +1 -1
- package/dist/lib/workspace/mirror.js +51 -5
- package/dist/lib/workspace/mirror.js.map +1 -1
- package/dist/lib/workspace/state-root.d.ts +44 -0
- package/dist/lib/workspace/state-root.js +266 -0
- package/dist/lib/workspace/state-root.js.map +1 -0
- package/dist/lib/workspace/workspace-audit.d.ts +20 -0
- package/dist/lib/workspace/workspace-audit.js +339 -0
- package/dist/lib/workspace/workspace-audit.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ghAuthToken = ghAuthToken;
|
|
4
|
+
exports.backendRunToken = backendRunToken;
|
|
5
|
+
exports.resolvePrToken = resolvePrToken;
|
|
6
|
+
/**
|
|
7
|
+
* PR/push token resolution for the task-run git pipeline (2026-10).
|
|
8
|
+
*
|
|
9
|
+
* WHY THIS EXISTS: finalize only knew a local PAT file (`git-tokens.json`)
|
|
10
|
+
* and `GITHUB_TOKEN`, so a linked GitHub App sat unused and every run ended
|
|
11
|
+
* with "PR: not opened - no credential found" while its push had succeeded.
|
|
12
|
+
* The App lives on the SERVER, so the bridge asks for a one-shot
|
|
13
|
+
* installation token via `POST /git-connections/run-token` with the run's
|
|
14
|
+
* own identity. Precedence mirrors the documented order:
|
|
15
|
+
*
|
|
16
|
+
* 1. project Repository PAT (stored locally from an orchestrator
|
|
17
|
+
* create_worktree command) — explicit per-repo credential, wins;
|
|
18
|
+
* 2. `GITHUB_TOKEN` / `GITEA_TOKEN` env — ambient machine credential;
|
|
19
|
+
* 3. `gh auth token` — ambient GitHub CLI credential (best-effort);
|
|
20
|
+
* 4. the backend run-token endpoint — the run caller's own App connection,
|
|
21
|
+
* verified against the exact repo before it is handed out.
|
|
22
|
+
*
|
|
23
|
+
* An installation token is MEMORY-ONLY: it expires in ~1h, is repo-scoped,
|
|
24
|
+
* and must never be written to `git-tokens.json` (that file is for durable
|
|
25
|
+
* PATs). Callers use the returned token transiently and drop it.
|
|
26
|
+
*/
|
|
27
|
+
const node_child_process_1 = require("node:child_process");
|
|
28
|
+
const shims_1 = require("../workspace/shims");
|
|
29
|
+
const git_auth_1 = require("./git-auth");
|
|
30
|
+
/**
|
|
31
|
+
* Hub base URL default. This mirrors `DEFAULT_API_URL` in `../api-core`
|
|
32
|
+
* WITHOUT importing it: `api-core` requires the `./api` barrel, which pulls
|
|
33
|
+
* `api-content` → `api-tasks` → `api-agents` → back to `api-core`, and that
|
|
34
|
+
* cycle crashes standalone loads ("Class extends value undefined"). The
|
|
35
|
+
* bridge commands always pass their own `apiBaseUrl` anyway; this is only the
|
|
36
|
+
* direct-library-use fallback.
|
|
37
|
+
*/
|
|
38
|
+
const DEFAULT_API_BASE_URL = process.env.TEAMSHARE_API_URL ?? 'https://api.teamshare.name.ng';
|
|
39
|
+
/** Best-effort ambient GitHub CLI token (null when gh is absent/logged-out). */
|
|
40
|
+
function ghAuthToken() {
|
|
41
|
+
try {
|
|
42
|
+
const out = (0, node_child_process_1.execFileSync)('gh', ['auth', 'token'], {
|
|
43
|
+
encoding: 'utf-8',
|
|
44
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
45
|
+
windowsHide: true,
|
|
46
|
+
env: (0, shims_1.envWithoutShims)(),
|
|
47
|
+
timeout: 10_000,
|
|
48
|
+
});
|
|
49
|
+
const token = out.trim();
|
|
50
|
+
return token || null;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Ask the hub for a one-shot token for this run (step 4). Returns null when
|
|
58
|
+
* there is no project, no run identity, no App connection — every one of
|
|
59
|
+
* those is a normal "not connected" state, never an error.
|
|
60
|
+
*/
|
|
61
|
+
async function backendRunToken(opts) {
|
|
62
|
+
const { remoteUrl, projectId, apiKey, apiBaseUrl } = opts;
|
|
63
|
+
if (!remoteUrl || !projectId || !apiKey)
|
|
64
|
+
return null;
|
|
65
|
+
try {
|
|
66
|
+
const res = await fetch(`${(apiBaseUrl ?? DEFAULT_API_BASE_URL).replace(/\/+$/, '')}/git-connections/run-token`, {
|
|
67
|
+
method: 'POST',
|
|
68
|
+
headers: {
|
|
69
|
+
'Content-Type': 'application/json',
|
|
70
|
+
'X-Api-Key': apiKey,
|
|
71
|
+
},
|
|
72
|
+
body: JSON.stringify({ projectId, repoUrl: remoteUrl }),
|
|
73
|
+
signal: AbortSignal.timeout(15_000),
|
|
74
|
+
});
|
|
75
|
+
const raw = (await res.json().catch(() => null));
|
|
76
|
+
const token = raw?.data?.token;
|
|
77
|
+
if (!res.ok || raw?.success !== true || !token)
|
|
78
|
+
return null;
|
|
79
|
+
return { token, source: 'github_app' };
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Full precedence chain. Pure except for the env/process reads and the
|
|
87
|
+
* optional backend call — `gh` and the network are only touched when every
|
|
88
|
+
* earlier step missed, so the common PAT/env path stays side-effect free.
|
|
89
|
+
*/
|
|
90
|
+
async function resolvePrToken(opts) {
|
|
91
|
+
const local = (0, git_auth_1.tokenForUrl)(opts.remoteUrl);
|
|
92
|
+
if (local)
|
|
93
|
+
return { token: local, source: 'project' };
|
|
94
|
+
const env = process.env.GITHUB_TOKEN ?? process.env.GITEA_TOKEN;
|
|
95
|
+
if (env)
|
|
96
|
+
return { token: env, source: 'env' };
|
|
97
|
+
const cli = ghAuthToken();
|
|
98
|
+
if (cli)
|
|
99
|
+
return { token: cli, source: 'gh-cli' };
|
|
100
|
+
return backendRunToken(opts);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=pr-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-token.js","sourceRoot":"","sources":["../../../src/lib/git/pr-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run activity clock (2026-10-27).
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS - the data-collector incident.
|
|
5
|
+
* ----------------------------------------------
|
|
6
|
+
* The harness kill-switch was an IDLE timer, but the idle signal was the child
|
|
7
|
+
* process's stdout/stderr and nothing else. That is wrong for OpenCode V2 in
|
|
8
|
+
* three ways, and all three are silent:
|
|
9
|
+
*
|
|
10
|
+
* 1. V2 is a client/server product. While the SERVICE runs a tool call the
|
|
11
|
+
* CLI client prints nothing, so one long `execute` looks exactly like a
|
|
12
|
+
* dead harness. Live case: `navigate` to a LinkedIn job posting never
|
|
13
|
+
* returned, the console was silent for 60 minutes, and the run was killed
|
|
14
|
+
* with "the harness went silent" at 60m03s.
|
|
15
|
+
* 2. Subagent output is relayed by US (`startSubagentRelay`), not printed by
|
|
16
|
+
* the child, so a working subagent never reset the timer either.
|
|
17
|
+
* 3. A background shell runs on the service too; its output never reaches the
|
|
18
|
+
* parent pipe.
|
|
19
|
+
*
|
|
20
|
+
* So "silence on the pipe" is not "no work". This module makes the run's
|
|
21
|
+
* liveness ONE clock fed by every channel we can actually observe:
|
|
22
|
+
*
|
|
23
|
+
* stdout - a chunk on the child's stdout/stderr (the old signal)
|
|
24
|
+
* subagent - a NEW assistant message in a child session
|
|
25
|
+
* shell - a running background shell in the run's location
|
|
26
|
+
* mcp - a relayed MCP request from this run (see the daemon's
|
|
27
|
+
* `/internal/session-activity`)
|
|
28
|
+
*
|
|
29
|
+
* The idle kill fires only when EVERY channel has been quiet for the budget.
|
|
30
|
+
* The decision stays pure so the regression cannot come back unnoticed.
|
|
31
|
+
*/
|
|
32
|
+
/** Every observable sign that the run is doing something. */
|
|
33
|
+
export type ActivityKind = 'stdout' | 'subagent' | 'shell' | 'mcp';
|
|
34
|
+
export interface ActivitySnapshot {
|
|
35
|
+
/** When this clock was created (the harness was spawned). */
|
|
36
|
+
spawnedAt: number;
|
|
37
|
+
/** Newest activity on ANY channel. */
|
|
38
|
+
lastActivityAt: number;
|
|
39
|
+
/** Newest stdout/stderr chunk, or null when the child never printed. */
|
|
40
|
+
lastOutputAt: number | null;
|
|
41
|
+
/** Channel of the newest activity. */
|
|
42
|
+
lastKind: ActivityKind | 'none';
|
|
43
|
+
/** Short label: a subagent id, a shell command, an MCP tool name. */
|
|
44
|
+
lastDetail: string | null;
|
|
45
|
+
/** False only when the child has never printed anything at all. */
|
|
46
|
+
everOutput: boolean;
|
|
47
|
+
}
|
|
48
|
+
/** How long the newest activity has been quiet, in ms. */
|
|
49
|
+
export interface IdleVerdict {
|
|
50
|
+
kill: boolean;
|
|
51
|
+
/** True when the child produced NOTHING at all (a boot/silent hang). */
|
|
52
|
+
cold: boolean;
|
|
53
|
+
/** How long every channel has been quiet. */
|
|
54
|
+
silentMs: number;
|
|
55
|
+
/** Human label for what spoke last ("mcp (browser_action)"). */
|
|
56
|
+
actor: string;
|
|
57
|
+
}
|
|
58
|
+
/** One clock per harness invocation. Never shared across runs. */
|
|
59
|
+
export declare class ActivityClock {
|
|
60
|
+
private readonly spawnedAt;
|
|
61
|
+
private lastActivityAt;
|
|
62
|
+
private lastOutputAt;
|
|
63
|
+
private lastKind;
|
|
64
|
+
private lastDetail;
|
|
65
|
+
constructor(now?: number);
|
|
66
|
+
/**
|
|
67
|
+
* Record activity. `detail` is the thing that spoke, and it is what the idle
|
|
68
|
+
* kill message names - a bare "no output" is what made the original failure
|
|
69
|
+
* impossible to diagnose.
|
|
70
|
+
*/
|
|
71
|
+
note(kind: ActivityKind, detail?: string | null): void;
|
|
72
|
+
snapshot(): ActivitySnapshot;
|
|
73
|
+
}
|
|
74
|
+
/** Human label for the newest activity ("mcp (browser_action)"). */
|
|
75
|
+
export declare function activityActor(snapshot: ActivitySnapshot): string;
|
|
76
|
+
/**
|
|
77
|
+
* The idle decision. Pure on purpose: a test can pin every branch without a
|
|
78
|
+
* child process, a service or a clock.
|
|
79
|
+
*/
|
|
80
|
+
export declare function decideIdleKill(input: {
|
|
81
|
+
snapshot: ActivitySnapshot;
|
|
82
|
+
now: number;
|
|
83
|
+
idleMs: number;
|
|
84
|
+
}): IdleVerdict;
|
|
85
|
+
/**
|
|
86
|
+
* "It has been quiet long enough to warn" - the early console line that turns
|
|
87
|
+
* a 60-minute mystery into a named stall. The caller keeps `lastWarnAt` so a
|
|
88
|
+
* warning is emitted at most once per window.
|
|
89
|
+
*/
|
|
90
|
+
export declare function shouldWarnStall(input: {
|
|
91
|
+
snapshot: ActivitySnapshot;
|
|
92
|
+
now: number;
|
|
93
|
+
warnMs: number;
|
|
94
|
+
lastWarnAt: number;
|
|
95
|
+
}): boolean;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Run activity clock (2026-10-27).
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS - the data-collector incident.
|
|
6
|
+
* ----------------------------------------------
|
|
7
|
+
* The harness kill-switch was an IDLE timer, but the idle signal was the child
|
|
8
|
+
* process's stdout/stderr and nothing else. That is wrong for OpenCode V2 in
|
|
9
|
+
* three ways, and all three are silent:
|
|
10
|
+
*
|
|
11
|
+
* 1. V2 is a client/server product. While the SERVICE runs a tool call the
|
|
12
|
+
* CLI client prints nothing, so one long `execute` looks exactly like a
|
|
13
|
+
* dead harness. Live case: `navigate` to a LinkedIn job posting never
|
|
14
|
+
* returned, the console was silent for 60 minutes, and the run was killed
|
|
15
|
+
* with "the harness went silent" at 60m03s.
|
|
16
|
+
* 2. Subagent output is relayed by US (`startSubagentRelay`), not printed by
|
|
17
|
+
* the child, so a working subagent never reset the timer either.
|
|
18
|
+
* 3. A background shell runs on the service too; its output never reaches the
|
|
19
|
+
* parent pipe.
|
|
20
|
+
*
|
|
21
|
+
* So "silence on the pipe" is not "no work". This module makes the run's
|
|
22
|
+
* liveness ONE clock fed by every channel we can actually observe:
|
|
23
|
+
*
|
|
24
|
+
* stdout - a chunk on the child's stdout/stderr (the old signal)
|
|
25
|
+
* subagent - a NEW assistant message in a child session
|
|
26
|
+
* shell - a running background shell in the run's location
|
|
27
|
+
* mcp - a relayed MCP request from this run (see the daemon's
|
|
28
|
+
* `/internal/session-activity`)
|
|
29
|
+
*
|
|
30
|
+
* The idle kill fires only when EVERY channel has been quiet for the budget.
|
|
31
|
+
* The decision stays pure so the regression cannot come back unnoticed.
|
|
32
|
+
*/
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.ActivityClock = void 0;
|
|
35
|
+
exports.activityActor = activityActor;
|
|
36
|
+
exports.decideIdleKill = decideIdleKill;
|
|
37
|
+
exports.shouldWarnStall = shouldWarnStall;
|
|
38
|
+
const MAX_DETAIL = 120;
|
|
39
|
+
/** One clock per harness invocation. Never shared across runs. */
|
|
40
|
+
class ActivityClock {
|
|
41
|
+
spawnedAt;
|
|
42
|
+
lastActivityAt;
|
|
43
|
+
lastOutputAt = null;
|
|
44
|
+
lastKind = 'none';
|
|
45
|
+
lastDetail = null;
|
|
46
|
+
constructor(now = Date.now()) {
|
|
47
|
+
this.spawnedAt = now;
|
|
48
|
+
this.lastActivityAt = now;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Record activity. `detail` is the thing that spoke, and it is what the idle
|
|
52
|
+
* kill message names - a bare "no output" is what made the original failure
|
|
53
|
+
* impossible to diagnose.
|
|
54
|
+
*/
|
|
55
|
+
note(kind, detail) {
|
|
56
|
+
const now = Date.now();
|
|
57
|
+
this.lastActivityAt = now;
|
|
58
|
+
this.lastKind = kind;
|
|
59
|
+
const cleaned = typeof detail === 'string' ? detail.trim() : '';
|
|
60
|
+
this.lastDetail = cleaned ? cleaned.slice(0, MAX_DETAIL) : null;
|
|
61
|
+
if (kind === 'stdout')
|
|
62
|
+
this.lastOutputAt = now;
|
|
63
|
+
}
|
|
64
|
+
snapshot() {
|
|
65
|
+
return {
|
|
66
|
+
spawnedAt: this.spawnedAt,
|
|
67
|
+
lastActivityAt: this.lastActivityAt,
|
|
68
|
+
lastOutputAt: this.lastOutputAt,
|
|
69
|
+
lastKind: this.lastKind,
|
|
70
|
+
lastDetail: this.lastDetail,
|
|
71
|
+
everOutput: this.lastOutputAt !== null,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.ActivityClock = ActivityClock;
|
|
76
|
+
/** Human label for the newest activity ("mcp (browser_action)"). */
|
|
77
|
+
function activityActor(snapshot) {
|
|
78
|
+
if (snapshot.lastKind === 'none')
|
|
79
|
+
return 'nothing yet';
|
|
80
|
+
return snapshot.lastDetail
|
|
81
|
+
? `${snapshot.lastKind} (${snapshot.lastDetail})`
|
|
82
|
+
: snapshot.lastKind;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The idle decision. Pure on purpose: a test can pin every branch without a
|
|
86
|
+
* child process, a service or a clock.
|
|
87
|
+
*/
|
|
88
|
+
function decideIdleKill(input) {
|
|
89
|
+
const silentMs = Math.max(0, input.now - input.snapshot.lastActivityAt);
|
|
90
|
+
const kill = silentMs >= Math.max(1, input.idleMs);
|
|
91
|
+
return {
|
|
92
|
+
kill,
|
|
93
|
+
// "Cold" means NOTHING has ever spoken on ANY channel - the boot-hang case
|
|
94
|
+
// (an expired token waiting for interactive re-auth). A run that produced
|
|
95
|
+
// tools but no stdout is not cold, and must not be described as one.
|
|
96
|
+
cold: input.snapshot.lastKind === 'none',
|
|
97
|
+
silentMs,
|
|
98
|
+
actor: activityActor(input.snapshot),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* "It has been quiet long enough to warn" - the early console line that turns
|
|
103
|
+
* a 60-minute mystery into a named stall. The caller keeps `lastWarnAt` so a
|
|
104
|
+
* warning is emitted at most once per window.
|
|
105
|
+
*/
|
|
106
|
+
function shouldWarnStall(input) {
|
|
107
|
+
const quietSince = Math.max(input.snapshot.lastActivityAt, input.lastWarnAt);
|
|
108
|
+
return input.now - quietSince >= Math.max(1, input.warnMs);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/lib/harness/activity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;;AAyEH,sCAKC;AAMD,wCAgBC;AAOD,0CAQC;AApFD,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,kEAAkE;AAClE,MAAa,aAAa;IACP,SAAS,CAAS;IAC3B,cAAc,CAAS;IACvB,YAAY,GAAkB,IAAI,CAAC;IACnC,QAAQ,GAA0B,MAAM,CAAC;IACzC,UAAU,GAAkB,IAAI,CAAC;IAEzC,YAAY,MAAc,IAAI,CAAC,GAAG,EAAE;QAClC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,IAAkB,EAAE,MAAsB;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,IAAI,IAAI,KAAK,QAAQ;YAAE,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IACjD,CAAC;IAED,QAAQ;QACN,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,YAAY,KAAK,IAAI;SACvC,CAAC;IACJ,CAAC;CACF;AApCD,sCAoCC;AAED,oEAAoE;AACpE,SAAgB,aAAa,CAAC,QAA0B;IACtD,IAAI,QAAQ,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,aAAa,CAAC;IACvD,OAAO,QAAQ,CAAC,UAAU;QACxB,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,UAAU,GAAG;QACjD,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAI9B;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO;QACL,IAAI;QACJ,2EAA2E;QAC3E,0EAA0E;QAC1E,qEAAqE;QACrE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM;QACxC,QAAQ;QACR,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;KACrC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAK/B;IACC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -79,9 +79,31 @@ export declare function listSubagentSessions(parentId: string, cwd: string, time
|
|
|
79
79
|
export declare function listSessionMessages(sessionId: string, cwd: string, limit?: number, timeoutMs?: number): Promise<Array<Record<string, unknown>>>;
|
|
80
80
|
/** Human-readable line for a subagent assistant message (text or tool). */
|
|
81
81
|
export declare function formatSubagentMessage(message: Record<string, unknown>): string;
|
|
82
|
+
/**
|
|
83
|
+
* Every DESCENDANT of a run's main session, breadth-first (2026-10-27).
|
|
84
|
+
*
|
|
85
|
+
* `listSubagentSessions` is one level deep, which left "processes that spin up
|
|
86
|
+
* others" completely invisible: a subagent that spawned its own subagent was
|
|
87
|
+
* never relayed to the console, never counted as run activity, and never
|
|
88
|
+
* interrupted when the run ended - it could keep driving the debug browser
|
|
89
|
+
* after "finished". Depth and session count are BOUNDED so a runaway tree
|
|
90
|
+
* cannot turn the poll into an unbounded fan-out.
|
|
91
|
+
*/
|
|
92
|
+
export interface SubagentTreeEntry extends SubagentSessionInfo {
|
|
93
|
+
/** 1 = a direct child, 2 = a grandchild, ... */
|
|
94
|
+
depth: number;
|
|
95
|
+
}
|
|
96
|
+
export declare function listSubagentTree(parentId: string, cwd: string, opts?: {
|
|
97
|
+
maxDepth?: number;
|
|
98
|
+
maxSessions?: number;
|
|
99
|
+
}): Promise<SubagentTreeEntry[]>;
|
|
82
100
|
/**
|
|
83
101
|
* Interrupt every child session of `parentId` (and any already-known child
|
|
84
102
|
* ids). Returns the number of children found. Best-effort: a child that
|
|
85
103
|
* cannot be interrupted is logged, never thrown.
|
|
104
|
+
*
|
|
105
|
+
* 2026-10-27: walks the WHOLE TREE (`listSubagentTree`), not just direct
|
|
106
|
+
* children - a grandchild kept running after its parent was interrupted and
|
|
107
|
+
* outlived the run.
|
|
86
108
|
*/
|
|
87
109
|
export declare function interruptSubagentSessions(parentId: string, cwd: string, knownIds?: string[]): Promise<number>;
|
|
@@ -16,6 +16,7 @@ exports.buildSessionMessagesArgs = buildSessionMessagesArgs;
|
|
|
16
16
|
exports.listSubagentSessions = listSubagentSessions;
|
|
17
17
|
exports.listSessionMessages = listSessionMessages;
|
|
18
18
|
exports.formatSubagentMessage = formatSubagentMessage;
|
|
19
|
+
exports.listSubagentTree = listSubagentTree;
|
|
19
20
|
exports.interruptSubagentSessions = interruptSubagentSessions;
|
|
20
21
|
/**
|
|
21
22
|
* OpenCode V2 session control (2026-10).
|
|
@@ -363,17 +364,61 @@ function formatSubagentMessage(message) {
|
|
|
363
364
|
}
|
|
364
365
|
return parts.join(' ').replace(/\s+/g, ' ').trim().slice(0, 2000);
|
|
365
366
|
}
|
|
367
|
+
async function listSubagentTree(parentId, cwd, opts = {}) {
|
|
368
|
+
if (!OPENCODE_SESSION_ID.test(parentId) || !cwd)
|
|
369
|
+
return [];
|
|
370
|
+
const maxDepth = Math.max(1, Math.min(5, opts.maxDepth ?? 3));
|
|
371
|
+
const maxSessions = Math.max(1, Math.min(200, opts.maxSessions ?? 50));
|
|
372
|
+
// Each level is one `opencode api` PROCESS PER PARENT, so the traversal needs
|
|
373
|
+
// a probe budget as well as a session cap: a wide tree must not turn a 2.5 s
|
|
374
|
+
// relay poll into hundreds of subprocesses.
|
|
375
|
+
const maxProbes = Math.max(maxSessions, 60);
|
|
376
|
+
const out = [];
|
|
377
|
+
const seen = new Set([parentId]);
|
|
378
|
+
let frontier = [parentId];
|
|
379
|
+
let probes = 0;
|
|
380
|
+
for (let depth = 1; depth <= maxDepth && frontier.length > 0; depth += 1) {
|
|
381
|
+
const next = [];
|
|
382
|
+
for (const id of frontier) {
|
|
383
|
+
if (probes >= maxProbes)
|
|
384
|
+
return out;
|
|
385
|
+
probes += 1;
|
|
386
|
+
for (const child of await listSubagentSessions(id, cwd)) {
|
|
387
|
+
if (seen.has(child.id))
|
|
388
|
+
continue;
|
|
389
|
+
seen.add(child.id);
|
|
390
|
+
out.push({ ...child, depth });
|
|
391
|
+
next.push(child.id);
|
|
392
|
+
if (out.length >= maxSessions)
|
|
393
|
+
return out;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
frontier = next;
|
|
397
|
+
}
|
|
398
|
+
return out;
|
|
399
|
+
}
|
|
366
400
|
/**
|
|
367
401
|
* Interrupt every child session of `parentId` (and any already-known child
|
|
368
402
|
* ids). Returns the number of children found. Best-effort: a child that
|
|
369
403
|
* cannot be interrupted is logged, never thrown.
|
|
404
|
+
*
|
|
405
|
+
* 2026-10-27: walks the WHOLE TREE (`listSubagentTree`), not just direct
|
|
406
|
+
* children - a grandchild kept running after its parent was interrupted and
|
|
407
|
+
* outlived the run.
|
|
370
408
|
*/
|
|
371
409
|
async function interruptSubagentSessions(parentId, cwd, knownIds = []) {
|
|
372
410
|
const ids = new Set(knownIds.filter((id) => OPENCODE_SESSION_ID.test(id)));
|
|
373
|
-
|
|
411
|
+
const tree = await listSubagentTree(parentId, cwd);
|
|
412
|
+
for (const child of tree)
|
|
374
413
|
ids.add(child.id);
|
|
375
|
-
|
|
414
|
+
// Leaves first: interrupting a parent can end its subtree, and the child ids
|
|
415
|
+
// we already know are still safe to interrupt afterwards (idempotent).
|
|
416
|
+
const ordered = [...tree].sort((a, b) => b.depth - a.depth).map((c) => c.id);
|
|
417
|
+
for (const id of ordered)
|
|
418
|
+
await interruptOpencodeSession(id);
|
|
376
419
|
for (const id of ids) {
|
|
420
|
+
if (ordered.includes(id))
|
|
421
|
+
continue;
|
|
377
422
|
await interruptOpencodeSession(id);
|
|
378
423
|
}
|
|
379
424
|
return ids.size;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-control.js","sourceRoot":"","sources":["../../../src/lib/harness/opencode-control.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"opencode-control.js","sourceRoot":"","sources":["../../../src/lib/harness/opencode-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,8 +28,11 @@ export declare function createRunScope(projectRoot: string, runId: string): RunS
|
|
|
28
28
|
/**
|
|
29
29
|
* Remove a scope directory. The links are unlinked EXPLICITLY first: a
|
|
30
30
|
* recursive delete of a directory holding junctions must never follow them
|
|
31
|
-
* into the user's project.
|
|
32
|
-
|
|
31
|
+
* into the user's project. Hardened (2026-10-27): `.opencode` first (it holds
|
|
32
|
+
* the identity config), then links, then copies; EBUSY on Windows is retried,
|
|
33
|
+
* and a survivor is left for `sweepStaleScopes` rather than half-deleted.
|
|
34
|
+
*/
|
|
35
|
+
export declare function removeRunScope(dir: string): void;
|
|
33
36
|
/**
|
|
34
37
|
* The block the agent sees when its session runs in a scope. Without it the
|
|
35
38
|
* agent would guess that the scope IS the project root and write a top-level
|
|
@@ -37,7 +40,23 @@ export declare function createRunScope(projectRoot: string, runId: string): RunS
|
|
|
37
40
|
*/
|
|
38
41
|
export declare function scopeWorkingDirectoryNotice(scope: RunScope): string;
|
|
39
42
|
/**
|
|
40
|
-
* Keep the scope out of the human's git status. LOCAL only
|
|
41
|
-
* exclude`) - the user's own `.gitignore` is never touched.
|
|
43
|
+
* Keep the scope out of the human's git status while it exists. LOCAL only
|
|
44
|
+
* (`.git/info/exclude`) - the user's own `.gitignore` is never touched.
|
|
45
|
+
* The entry is a MARKED block so cleanup can strip exactly what it added and
|
|
46
|
+
* leave every other line (including older unmarked bridge lines) alone.
|
|
42
47
|
*/
|
|
43
48
|
export declare function excludeRunScopeFromGit(gitRoot: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Strip the marked scope block added by `excludeRunScopeFromGit`. Removes the
|
|
51
|
+
* block ONLY - every other line is preserved byte-for-byte. Safe to call when
|
|
52
|
+
* no scopes remain; also restores the file to zero-length difference when the
|
|
53
|
+
* block was the only addition.
|
|
54
|
+
*/
|
|
55
|
+
export declare function unexcludeRunScopeFromGit(gitRoot: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Reap crash-leftover scopes: `<projectRoot>/.teamshare-runs/*` with no live
|
|
58
|
+
* harness record. A scope whose `scopeDir` is still claimed by
|
|
59
|
+
* `~/.teamshare/sessions/harness-*.json` is SKIPPED - a question pause, an
|
|
60
|
+
* idle kill or a stop-in-flight resume reuses the same tree.
|
|
61
|
+
*/
|
|
62
|
+
export declare function sweepStaleScopes(projectRoots: string[]): string[];
|