flow-agent-bridge 0.33.0 → 0.34.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/README.md +9 -0
- package/dist/bridge.d.ts +19 -0
- package/dist/bridge.js +136 -27
- package/dist/bridge.js.map +1 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.js +6 -1
- package/dist/config.js.map +1 -1
- package/dist/runtime.d.ts +73 -2
- package/dist/runtime.js +110 -8
- package/dist/runtime.js.map +1 -1
- package/dist/session.d.ts +152 -0
- package/dist/session.js +480 -0
- package/dist/session.js.map +1 -0
- package/package.json +1 -1
package/dist/runtime.d.ts
CHANGED
|
@@ -45,6 +45,19 @@ export interface RunResult {
|
|
|
45
45
|
}
|
|
46
46
|
/** One line per tool call, latest step shown: "Bash: pnpm test". */
|
|
47
47
|
export declare function formatToolStep(name: string, input: unknown): string;
|
|
48
|
+
/**
|
|
49
|
+
* Turn-scoped signals a persistent session needs and a one-shot run doesn't:
|
|
50
|
+
* where one turn ends and the next begins, and whether the agent still has
|
|
51
|
+
* background work running (which is what holds the idle reaper off).
|
|
52
|
+
*/
|
|
53
|
+
export interface StreamHooks {
|
|
54
|
+
/** A turn began — `system`/`init`, which the CLI re-emits for every turn. */
|
|
55
|
+
onTurnStart?(): void;
|
|
56
|
+
/** The turn's terminal `result` event; the parser's per-turn fields are set. */
|
|
57
|
+
onResult?(): void;
|
|
58
|
+
/** The count of open background tasks changed. */
|
|
59
|
+
onPendingChange?(pending: number): void;
|
|
60
|
+
}
|
|
48
61
|
/**
|
|
49
62
|
* Feed stream-json stdout lines; emits tool steps and captures the final
|
|
50
63
|
* result. Tolerant of non-JSON noise on stdout.
|
|
@@ -52,6 +65,7 @@ export declare function formatToolStep(name: string, input: unknown): string;
|
|
|
52
65
|
export declare class StreamJsonParser {
|
|
53
66
|
private readonly onToolStep;
|
|
54
67
|
private readonly onText;
|
|
68
|
+
private readonly hooks;
|
|
55
69
|
private buf;
|
|
56
70
|
finalText: string;
|
|
57
71
|
isError: boolean;
|
|
@@ -76,17 +90,74 @@ export declare class StreamJsonParser {
|
|
|
76
90
|
* (#162). A block identical to the one before it is swallowed: relaying the
|
|
77
91
|
* same sentence twice reads as a glitch, never as progress.
|
|
78
92
|
*/
|
|
79
|
-
|
|
93
|
+
/**
|
|
94
|
+
* Background work the agent started and has not finished — the reason a
|
|
95
|
+
* session with no turn in flight is still not idle. Keyed by
|
|
96
|
+
* `tool:<tool_use_id>` until the CLI gives the task an id of its own, then by
|
|
97
|
+
* `task:<task_id>`; the value is a human description for the logs.
|
|
98
|
+
*/
|
|
99
|
+
readonly pending: Map<string, string>;
|
|
100
|
+
constructor(onToolStep: (step: string) => void, onText?: (text: string) => void, hooks?: StreamHooks);
|
|
101
|
+
/**
|
|
102
|
+
* Forget the last turn so the next one is judged on its own events. Only the
|
|
103
|
+
* per-turn verdict is cleared: `sawEvent` (the session exists, so a respawn
|
|
104
|
+
* can `--resume`) and `pending` (background work outlives the turn that
|
|
105
|
+
* started it) are properties of the session, not of any one turn.
|
|
106
|
+
*/
|
|
107
|
+
resetTurn(): void;
|
|
80
108
|
feed(chunk: string): void;
|
|
81
109
|
private handleLine;
|
|
110
|
+
/**
|
|
111
|
+
* `system` events carry the session's out-of-band state: `init` opens every
|
|
112
|
+
* turn (including the ones the SDK starts by itself when a background task
|
|
113
|
+
* finishes), and the task events say what is still running.
|
|
114
|
+
*
|
|
115
|
+
* `background_tasks_changed` is a full snapshot and therefore authoritative —
|
|
116
|
+
* it is what stops a task that never really started from pinning a session
|
|
117
|
+
* open forever. The narrower events keep the count honest in between.
|
|
118
|
+
*/
|
|
119
|
+
private handleSystem;
|
|
120
|
+
/**
|
|
121
|
+
* A `run_in_background` tool call opens a pending entry straight away, keyed
|
|
122
|
+
* by the tool_use id: the task's own id only arrives with `task_started`, and
|
|
123
|
+
* between those two events the reaper must already know work is starting.
|
|
124
|
+
*/
|
|
125
|
+
private openIfBackgrounded;
|
|
82
126
|
}
|
|
83
|
-
|
|
127
|
+
/** Just the fields the argv depends on — `RunOpts` satisfies it structurally. */
|
|
128
|
+
export interface ClaudeArgsOpts {
|
|
129
|
+
sessionId: string;
|
|
130
|
+
resume: boolean;
|
|
131
|
+
prompt: string;
|
|
132
|
+
systemPrompt: string;
|
|
133
|
+
mcpConfigPath?: string | undefined;
|
|
134
|
+
stdinPrompt?: boolean | undefined;
|
|
135
|
+
/**
|
|
136
|
+
* Persistent session: turns arrive as stream-json user messages on stdin, so
|
|
137
|
+
* there is no prompt on the command line at all and the process outlives the
|
|
138
|
+
* turn (see session.ts).
|
|
139
|
+
*/
|
|
140
|
+
streamInput?: boolean | undefined;
|
|
141
|
+
}
|
|
142
|
+
export declare function buildClaudeArgs(cfg: RuntimeConfig, opts: ClaudeArgsOpts): string[];
|
|
84
143
|
export declare function buildCodexArgs(cfg: RuntimeConfig, opts: RunOpts): string[];
|
|
85
144
|
/** Demo mode: static canned reply, no CLI spawn. */
|
|
86
145
|
export declare const DEMO_REPLY = "Your message was received";
|
|
146
|
+
/**
|
|
147
|
+
* Take down a runtime and everything it started. The negative pid targets the
|
|
148
|
+
* whole process group: a bare `child.kill()` reaches only the CLI, leaving its
|
|
149
|
+
* Bash-tool grandchildren (builds, test runs, dev servers) orphaned and running
|
|
150
|
+
* unsupervised. SIGTERM first so the CLI can flush its session transcript —
|
|
151
|
+
* that transcript is what makes the next turn resumable.
|
|
152
|
+
*/
|
|
153
|
+
export declare function killGroup(pid: number, graceMs: number): void;
|
|
154
|
+
/** Persistent sessions join the same registry, so shutdown reaches them too. */
|
|
155
|
+
export declare function registerGroup(pid: number): void;
|
|
156
|
+
export declare function unregisterGroup(pid: number): void;
|
|
87
157
|
/**
|
|
88
158
|
* Shutdown hook: runtimes are spawned detached (own process group), so they no
|
|
89
159
|
* longer die with the bridge on Ctrl-C — the daemon has to end them itself.
|
|
160
|
+
* Covers persistent sessions as well as one-shot runs (AC 6 of #519).
|
|
90
161
|
*/
|
|
91
162
|
export declare function killAllRuntimes(): void;
|
|
92
163
|
/**
|
package/dist/runtime.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
// Runtime exec: spawn a coding-agent CLI headlessly
|
|
1
|
+
// Runtime exec: spawn a coding-agent CLI headlessly.
|
|
2
2
|
//
|
|
3
|
-
// Claude runtime (primary)
|
|
4
|
-
//
|
|
5
|
-
//
|
|
3
|
+
// Claude runtime (primary) runs as a *persistent* process per conversation —
|
|
4
|
+
// see session.ts, which owns the lifecycle; this module supplies the pieces
|
|
5
|
+
// both paths share: the argv builder, the stream-json parser, and process-group
|
|
6
|
+
// bookkeeping. `runRuntime` below is the one-shot path, still used by the codex
|
|
7
|
+
// and demo runtimes and by voice calls (whose lifetime is the call, not the
|
|
8
|
+
// conversation).
|
|
6
9
|
// Codex runtime: baseline "prompt in, stdout out" contract, no session resume
|
|
7
10
|
// or thinking steps yet. The system prompt is folded into each invocation.
|
|
8
11
|
import { spawn } from 'node:child_process';
|
|
@@ -49,6 +52,7 @@ export function formatToolStep(name, input) {
|
|
|
49
52
|
export class StreamJsonParser {
|
|
50
53
|
onToolStep;
|
|
51
54
|
onText;
|
|
55
|
+
hooks;
|
|
52
56
|
buf = '';
|
|
53
57
|
finalText = '';
|
|
54
58
|
isError = false;
|
|
@@ -73,9 +77,30 @@ export class StreamJsonParser {
|
|
|
73
77
|
* (#162). A block identical to the one before it is swallowed: relaying the
|
|
74
78
|
* same sentence twice reads as a glitch, never as progress.
|
|
75
79
|
*/
|
|
76
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Background work the agent started and has not finished — the reason a
|
|
82
|
+
* session with no turn in flight is still not idle. Keyed by
|
|
83
|
+
* `tool:<tool_use_id>` until the CLI gives the task an id of its own, then by
|
|
84
|
+
* `task:<task_id>`; the value is a human description for the logs.
|
|
85
|
+
*/
|
|
86
|
+
pending = new Map();
|
|
87
|
+
constructor(onToolStep, onText = () => { }, hooks = {}) {
|
|
77
88
|
this.onToolStep = onToolStep;
|
|
78
89
|
this.onText = onText;
|
|
90
|
+
this.hooks = hooks;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Forget the last turn so the next one is judged on its own events. Only the
|
|
94
|
+
* per-turn verdict is cleared: `sawEvent` (the session exists, so a respawn
|
|
95
|
+
* can `--resume`) and `pending` (background work outlives the turn that
|
|
96
|
+
* started it) are properties of the session, not of any one turn.
|
|
97
|
+
*/
|
|
98
|
+
resetTurn() {
|
|
99
|
+
this.finalText = '';
|
|
100
|
+
this.isError = false;
|
|
101
|
+
this.sawResult = false;
|
|
102
|
+
this.errorSubtype = '';
|
|
103
|
+
this.lastText = '';
|
|
79
104
|
}
|
|
80
105
|
feed(chunk) {
|
|
81
106
|
this.buf += chunk;
|
|
@@ -98,10 +123,14 @@ export class StreamJsonParser {
|
|
|
98
123
|
}
|
|
99
124
|
if (typeof ev.type === 'string')
|
|
100
125
|
this.sawEvent = true;
|
|
126
|
+
if (ev.type === 'system')
|
|
127
|
+
return this.handleSystem(ev);
|
|
101
128
|
if (ev.type === 'assistant') {
|
|
102
129
|
for (const block of ev.message?.content ?? []) {
|
|
103
|
-
if (block.type === 'tool_use' && block.name)
|
|
130
|
+
if (block.type === 'tool_use' && block.name) {
|
|
131
|
+
this.openIfBackgrounded(block.id, block.name, block.input);
|
|
104
132
|
this.onToolStep(formatToolStep(block.name, block.input));
|
|
133
|
+
}
|
|
105
134
|
else if (block.type === 'text' && block.text?.trim()) {
|
|
106
135
|
const text = block.text.trim();
|
|
107
136
|
if (text !== this.lastText)
|
|
@@ -116,11 +145,76 @@ export class StreamJsonParser {
|
|
|
116
145
|
this.isError = ev.is_error === true || (ev.subtype !== undefined && ev.subtype !== 'success');
|
|
117
146
|
this.errorSubtype = this.isError ? (ev.subtype ?? '') : '';
|
|
118
147
|
this.finalText = ev.result ?? '';
|
|
148
|
+
this.hooks.onResult?.();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* `system` events carry the session's out-of-band state: `init` opens every
|
|
153
|
+
* turn (including the ones the SDK starts by itself when a background task
|
|
154
|
+
* finishes), and the task events say what is still running.
|
|
155
|
+
*
|
|
156
|
+
* `background_tasks_changed` is a full snapshot and therefore authoritative —
|
|
157
|
+
* it is what stops a task that never really started from pinning a session
|
|
158
|
+
* open forever. The narrower events keep the count honest in between.
|
|
159
|
+
*/
|
|
160
|
+
handleSystem(ev) {
|
|
161
|
+
const before = this.pending.size;
|
|
162
|
+
switch (ev.subtype) {
|
|
163
|
+
case 'init':
|
|
164
|
+
this.hooks.onTurnStart?.();
|
|
165
|
+
return;
|
|
166
|
+
case 'background_tasks_changed': {
|
|
167
|
+
for (const key of [...this.pending.keys()])
|
|
168
|
+
if (key.startsWith('task:'))
|
|
169
|
+
this.pending.delete(key);
|
|
170
|
+
for (const t of ev.tasks ?? [])
|
|
171
|
+
if (t.task_id)
|
|
172
|
+
this.pending.set(`task:${t.task_id}`, t.description ?? t.task_id);
|
|
173
|
+
// Nothing is running, so no tool_use can still be waiting to start.
|
|
174
|
+
if ((ev.tasks ?? []).length === 0)
|
|
175
|
+
this.pending.clear();
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
case 'task_started': {
|
|
179
|
+
if (ev.tool_use_id)
|
|
180
|
+
this.pending.delete(`tool:${ev.tool_use_id}`);
|
|
181
|
+
if (ev.is_backgrounded && ev.task_id)
|
|
182
|
+
this.pending.set(`task:${ev.task_id}`, ev.description ?? ev.task_id);
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
case 'task_notification': {
|
|
186
|
+
// Anything but "running" is terminal — completed, failed, killed.
|
|
187
|
+
if (ev.status === 'running')
|
|
188
|
+
break;
|
|
189
|
+
if (ev.task_id)
|
|
190
|
+
this.pending.delete(`task:${ev.task_id}`);
|
|
191
|
+
if (ev.tool_use_id)
|
|
192
|
+
this.pending.delete(`tool:${ev.tool_use_id}`);
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
default:
|
|
196
|
+
return;
|
|
119
197
|
}
|
|
198
|
+
if (this.pending.size !== before)
|
|
199
|
+
this.hooks.onPendingChange?.(this.pending.size);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* A `run_in_background` tool call opens a pending entry straight away, keyed
|
|
203
|
+
* by the tool_use id: the task's own id only arrives with `task_started`, and
|
|
204
|
+
* between those two events the reaper must already know work is starting.
|
|
205
|
+
*/
|
|
206
|
+
openIfBackgrounded(id, name, input) {
|
|
207
|
+
const i = (input ?? {});
|
|
208
|
+
if (i.run_in_background !== true || !id)
|
|
209
|
+
return;
|
|
210
|
+
this.pending.set(`tool:${id}`, formatToolStep(name, input));
|
|
211
|
+
this.hooks.onPendingChange?.(this.pending.size);
|
|
120
212
|
}
|
|
121
213
|
}
|
|
122
214
|
export function buildClaudeArgs(cfg, opts) {
|
|
123
215
|
const args = ['-p', '--output-format', 'stream-json', '--verbose'];
|
|
216
|
+
if (opts.streamInput)
|
|
217
|
+
args.push('--input-format', 'stream-json');
|
|
124
218
|
args.push(opts.resume ? '--resume' : '--session-id', opts.sessionId);
|
|
125
219
|
args.push('--append-system-prompt', opts.systemPrompt);
|
|
126
220
|
args.push('--max-turns', String(cfg.maxTurns));
|
|
@@ -143,7 +237,7 @@ export function buildClaudeArgs(cfg, opts) {
|
|
|
143
237
|
if (allowed.length)
|
|
144
238
|
args.push(`--allowedTools=${allowed.join(',')}`);
|
|
145
239
|
args.push(...cfg.extraArgs);
|
|
146
|
-
if (!opts.stdinPrompt)
|
|
240
|
+
if (!opts.stdinPrompt && !opts.streamInput)
|
|
147
241
|
args.push(opts.prompt);
|
|
148
242
|
return args;
|
|
149
243
|
}
|
|
@@ -166,7 +260,7 @@ const liveGroups = new Set();
|
|
|
166
260
|
* unsupervised. SIGTERM first so the CLI can flush its session transcript —
|
|
167
261
|
* that transcript is what makes the next turn resumable.
|
|
168
262
|
*/
|
|
169
|
-
function killGroup(pid, graceMs) {
|
|
263
|
+
export function killGroup(pid, graceMs) {
|
|
170
264
|
const send = (sig) => {
|
|
171
265
|
try {
|
|
172
266
|
process.kill(-pid, sig);
|
|
@@ -183,9 +277,17 @@ function killGroup(pid, graceMs) {
|
|
|
183
277
|
const t = setTimeout(() => send('SIGKILL'), graceMs);
|
|
184
278
|
t.unref();
|
|
185
279
|
}
|
|
280
|
+
/** Persistent sessions join the same registry, so shutdown reaches them too. */
|
|
281
|
+
export function registerGroup(pid) {
|
|
282
|
+
liveGroups.add(pid);
|
|
283
|
+
}
|
|
284
|
+
export function unregisterGroup(pid) {
|
|
285
|
+
liveGroups.delete(pid);
|
|
286
|
+
}
|
|
186
287
|
/**
|
|
187
288
|
* Shutdown hook: runtimes are spawned detached (own process group), so they no
|
|
188
289
|
* longer die with the bridge on Ctrl-C — the daemon has to end them itself.
|
|
290
|
+
* Covers persistent sessions as well as one-shot runs (AC 6 of #519).
|
|
189
291
|
*/
|
|
190
292
|
export function killAllRuntimes() {
|
|
191
293
|
for (const pid of liveGroups)
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { RuntimeConfig } from './config.js';
|
|
2
|
+
import { type RunResult } from './runtime.js';
|
|
3
|
+
/** Everything the CLI needs at spawn time and cannot be changed afterwards. */
|
|
4
|
+
export interface SessionSpawn {
|
|
5
|
+
systemPrompt: string;
|
|
6
|
+
mcpConfigPath?: string | undefined;
|
|
7
|
+
/** Drop the scratch files this spawn owns (the per-session MCP config). */
|
|
8
|
+
cleanup?: (() => void) | undefined;
|
|
9
|
+
}
|
|
10
|
+
export interface SessionHooks {
|
|
11
|
+
/** Tool calls and text for whichever turn is running — solicited or not. */
|
|
12
|
+
onToolStep(step: string): void;
|
|
13
|
+
onText(text: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* A turn began that no Flow message asked for: the SDK re-invoked the agent
|
|
16
|
+
* because a background task finished. The bridge opens a progress row for it.
|
|
17
|
+
*/
|
|
18
|
+
onAmbientStart(): void;
|
|
19
|
+
/** …and it ended — post its reply to the conversation like any other. */
|
|
20
|
+
onAmbientEnd(result: RunResult): void;
|
|
21
|
+
log(msg: string): void;
|
|
22
|
+
}
|
|
23
|
+
export interface SessionOpts {
|
|
24
|
+
cfg: RuntimeConfig;
|
|
25
|
+
/** The CLI session id this conversation owns; stable across respawns. */
|
|
26
|
+
sessionId: string;
|
|
27
|
+
/** true → the CLI already has a transcript under that id, so `--resume` it. */
|
|
28
|
+
resume: boolean;
|
|
29
|
+
/** Called for every spawn, so a respawn picks up current conversation context. */
|
|
30
|
+
makeSpawn(): SessionSpawn;
|
|
31
|
+
hooks: SessionHooks;
|
|
32
|
+
/** Override the interrupt→kill grace. Tests only; production takes the default. */
|
|
33
|
+
interruptGraceMs?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* One conversation's CLI process. Turns are serialised: a message arriving
|
|
37
|
+
* while a turn (of either kind) is running waits for it, exactly as messages
|
|
38
|
+
* queued behind a running turn did before.
|
|
39
|
+
*/
|
|
40
|
+
export declare class RuntimeSession {
|
|
41
|
+
private readonly cfg;
|
|
42
|
+
private readonly hooks;
|
|
43
|
+
private readonly makeSpawn;
|
|
44
|
+
private readonly sessionId;
|
|
45
|
+
private readonly interruptGraceMs;
|
|
46
|
+
private child;
|
|
47
|
+
private parser;
|
|
48
|
+
private resume;
|
|
49
|
+
private spawnCleanup;
|
|
50
|
+
private turn;
|
|
51
|
+
private stderrTail;
|
|
52
|
+
/** Set by the close handler when the CLI refused our `--session-id`. */
|
|
53
|
+
private collided;
|
|
54
|
+
private disposed;
|
|
55
|
+
/** Serialises runTurn callers against each other. */
|
|
56
|
+
private gate;
|
|
57
|
+
private idleWaiters;
|
|
58
|
+
/** When the last turn of any kind ended — what both reaper clocks measure. */
|
|
59
|
+
private lastTurnEndAt;
|
|
60
|
+
constructor(opts: SessionOpts);
|
|
61
|
+
/** The CLI has produced events under this session id, so a respawn resumes it. */
|
|
62
|
+
get sawSession(): boolean;
|
|
63
|
+
get turnInFlight(): boolean;
|
|
64
|
+
/** Background work the agent started and hasn't finished. */
|
|
65
|
+
get pendingTasks(): number;
|
|
66
|
+
get pid(): number | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Idle = nothing to wait for: no turn running and no background task open.
|
|
69
|
+
* Only an idle session is reapable on the short clock.
|
|
70
|
+
*/
|
|
71
|
+
get idle(): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Reap when the session has been quiet past its clock. A pending background
|
|
74
|
+
* task buys time — up to the hard cap, so a wedged task cannot pin a session
|
|
75
|
+
* open forever — but a turn in flight is never interrupted by the reaper.
|
|
76
|
+
*/
|
|
77
|
+
reapReason(now: number, idleMs: number, hardCapMs: number): string | null;
|
|
78
|
+
/**
|
|
79
|
+
* Run one turn. Spawns the process if this conversation hasn't got one (first
|
|
80
|
+
* message, or the first after a reap or a crash), then writes the message and
|
|
81
|
+
* resolves when that turn's `result` arrives.
|
|
82
|
+
*/
|
|
83
|
+
runTurn(prompt: string, signal?: AbortSignal): Promise<RunResult>;
|
|
84
|
+
/** Interrupt button / `/stop`: end the turn, keep the session. */
|
|
85
|
+
interrupt(): void;
|
|
86
|
+
/** Reap or shut down: the process and everything it started go away. */
|
|
87
|
+
dispose(reason: string, graceMs?: number): void;
|
|
88
|
+
private newParser;
|
|
89
|
+
/** Resolves once no turn is running — ambient turns queue new messages too. */
|
|
90
|
+
private waitForNoTurn;
|
|
91
|
+
private attempt;
|
|
92
|
+
private startTurn;
|
|
93
|
+
/**
|
|
94
|
+
* `system`/`init` with nothing in flight means the SDK started a turn on its
|
|
95
|
+
* own — a background task finished and it re-invoked the agent. Announce it
|
|
96
|
+
* so the conversation gets a progress row and, at the end, a reply.
|
|
97
|
+
*/
|
|
98
|
+
private onTurnStart;
|
|
99
|
+
private onResult;
|
|
100
|
+
/** Shape a finished turn's result exactly as the per-turn runtime did. */
|
|
101
|
+
private buildResult;
|
|
102
|
+
private settleTurn;
|
|
103
|
+
/**
|
|
104
|
+
* Ask the CLI to end the current turn. The control request is the good path —
|
|
105
|
+
* it stops the turn and leaves the session, and its background tasks, alive.
|
|
106
|
+
* If no `result` follows within the grace we fall back to the process-group
|
|
107
|
+
* kill this used to do unconditionally.
|
|
108
|
+
*/
|
|
109
|
+
private endTurnEarly;
|
|
110
|
+
/** The interrupt didn't take. Kill the group; the close handler settles. */
|
|
111
|
+
private killForStuckTurn;
|
|
112
|
+
/**
|
|
113
|
+
* Rearmed by every byte the session emits *while a turn is running*. A turn
|
|
114
|
+
* that is still working narrates itself, so it never expires however long it
|
|
115
|
+
* runs; only genuine mid-turn silence does.
|
|
116
|
+
*/
|
|
117
|
+
private bumpIdle;
|
|
118
|
+
/** Spawn if needed. Returns an error string when the spawn itself failed. */
|
|
119
|
+
private ensureProcess;
|
|
120
|
+
/**
|
|
121
|
+
* The process is gone. Any turn waiting on it fails as it did before; the
|
|
122
|
+
* next message respawns and `--resume`s, so the conversation carries on.
|
|
123
|
+
*/
|
|
124
|
+
private onExit;
|
|
125
|
+
}
|
|
126
|
+
export interface SessionManagerOpts {
|
|
127
|
+
cfg: RuntimeConfig;
|
|
128
|
+
/** Reap a session with nothing in flight and nothing pending after this long. */
|
|
129
|
+
idleMs: number;
|
|
130
|
+
/** …and reap one held open only by background tasks after this long. */
|
|
131
|
+
hardCapMs: number;
|
|
132
|
+
log(msg: string): void;
|
|
133
|
+
/** Overridable for tests; the reaper otherwise wakes on its own timer. */
|
|
134
|
+
sweepMs?: number;
|
|
135
|
+
}
|
|
136
|
+
/** The live sessions, one per conversation, plus the reaper that ends them. */
|
|
137
|
+
export declare class SessionManager {
|
|
138
|
+
private readonly opts;
|
|
139
|
+
private readonly sessions;
|
|
140
|
+
private sweepTimer;
|
|
141
|
+
constructor(opts: SessionManagerOpts);
|
|
142
|
+
/** The session for a conversation, created (not spawned) on first use. */
|
|
143
|
+
session(key: string, make: () => SessionOpts): RuntimeSession;
|
|
144
|
+
get(key: string): RuntimeSession | undefined;
|
|
145
|
+
get size(): number;
|
|
146
|
+
/** `/reset`, or a conversation going away: end the process and forget it. */
|
|
147
|
+
dispose(key: string, reason: string): void;
|
|
148
|
+
/** Bridge shutdown: every live session process dies with us (AC 6). */
|
|
149
|
+
killAll(): void;
|
|
150
|
+
/** One reaper pass — exported behaviour, so tests can drive it directly. */
|
|
151
|
+
sweep(now?: number): void;
|
|
152
|
+
}
|