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/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
- constructor(onToolStep: (step: string) => void, onText?: (text: string) => void);
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
- export declare function buildClaudeArgs(cfg: RuntimeConfig, opts: RunOpts): string[];
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 per conversation turn.
1
+ // Runtime exec: spawn a coding-agent CLI headlessly.
2
2
  //
3
- // Claude runtime (primary): `claude -p --output-format stream-json --verbose`
4
- // with `--session-id <uuid>` on the first turn and `--resume <uuid>` after.
5
- // Tool calls stream by as stream-json events surfaced as thinking steps.
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
- constructor(onToolStep, onText = () => { }) {
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)
@@ -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
+ }