agent-relay 10.1.0 → 10.2.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/cli/lib/attach-drive.d.ts +72 -9
- package/dist/cli/lib/attach-drive.d.ts.map +1 -1
- package/dist/cli/lib/attach-drive.js +390 -94
- package/dist/cli/lib/attach-drive.js.map +1 -1
- package/dist/cli/lib/attach-passthrough.d.ts +22 -0
- package/dist/cli/lib/attach-passthrough.d.ts.map +1 -1
- package/dist/cli/lib/attach-passthrough.js +260 -58
- package/dist/cli/lib/attach-passthrough.js.map +1 -1
- package/dist/cli/lib/attach-view.d.ts +23 -4
- package/dist/cli/lib/attach-view.d.ts.map +1 -1
- package/dist/cli/lib/attach-view.js +77 -33
- package/dist/cli/lib/attach-view.js.map +1 -1
- package/dist/cli/lib/attach.d.ts +292 -10
- package/dist/cli/lib/attach.d.ts.map +1 -1
- package/dist/cli/lib/attach.js +496 -15
- package/dist/cli/lib/attach.js.map +1 -1
- package/package.json +7 -7
|
@@ -11,16 +11,26 @@
|
|
|
11
11
|
* mode, and leaves the agent running under the broker — `drive` never kills the
|
|
12
12
|
* worker.
|
|
13
13
|
*
|
|
14
|
-
* Sequence of operations on attach
|
|
14
|
+
* Sequence of operations on attach (subscribe-first, so no output around
|
|
15
|
+
* attach time is lost and none is double-painted):
|
|
15
16
|
*
|
|
16
17
|
* 1. Discover broker connection (CLI flag → env → connection.json).
|
|
17
18
|
* 2. `GET /api/spawned/{name}/delivery-mode` → remember the previous mode.
|
|
18
19
|
* 3. `PUT /api/spawned/{name}/delivery-mode` → switch to `manual_flush`.
|
|
19
|
-
* 4. `
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
20
|
+
* 4. `GET /api/events/replay` → capture the durable-event `sinceSeq` cutoff,
|
|
21
|
+
* then `GET /api/spawned/{name}/pending` → seed the status-line counter
|
|
22
|
+
* and the set of already-queued `event_id`s. Cutoff-first + id-dedupe
|
|
23
|
+
* keeps the counter exact across the attach race (no under/over-count).
|
|
24
|
+
* 5. Open `/ws?sinceSeq=<cutoff>`, subscribe, and buffer live output. The
|
|
25
|
+
* cutoff stops the broker replaying historical durable events that would
|
|
26
|
+
* inflate the pending counter; any replayed `delivery_queued` already in
|
|
27
|
+
* the seed is deduped by `event_id`.
|
|
28
|
+
* 6. On subscribe: `captureAndRenderSnapshot` repaints the agent's current
|
|
29
|
+
* screen; buffered chunks are reconciled against the snapshot's stream
|
|
30
|
+
* offset (drop what the snapshot already shows, apply the rest).
|
|
31
|
+
* 7. Forward the initial terminal size (resize now lands in the live stream,
|
|
32
|
+
* not a dead zone), then open the SDK PTY input stream and switch local
|
|
33
|
+
* stdin to raw mode.
|
|
24
34
|
*
|
|
25
35
|
* On detach (clean or abnormal), best-effort `PUT .../delivery-mode` restores the
|
|
26
36
|
* previous mode so the queue doesn't fill up indefinitely.
|
|
@@ -93,6 +103,13 @@ export interface DriveDependencies {
|
|
|
93
103
|
createWebSocket: DriveWebSocketFactory;
|
|
94
104
|
/** Where the PTY chunks get written. Defaults to `process.stdout.write`. */
|
|
95
105
|
writeChunk: (chunk: string) => void;
|
|
106
|
+
/**
|
|
107
|
+
* Tear down the backpressure-aware writer on detach: drop its pending queue
|
|
108
|
+
* and unhook its `'drain'` listener so nothing flushes to stdout after the
|
|
109
|
+
* session settles. Defaults to the writer created in {@link withDefaults};
|
|
110
|
+
* tests that inject their own `writeChunk` can omit it (no-op).
|
|
111
|
+
*/
|
|
112
|
+
disposeWriter?: () => void;
|
|
96
113
|
/** Signal registration (so tests can drive SIGINT without killing the test). */
|
|
97
114
|
onSignal: DriveSignalRegistrar;
|
|
98
115
|
log: (...args: unknown[]) => void;
|
|
@@ -113,6 +130,20 @@ export interface DriveDependencies {
|
|
|
113
130
|
* it (degenerate terminal). Omitted by tests that want plain pass-through.
|
|
114
131
|
*/
|
|
115
132
|
createPredictiveEcho?: (opts: CreatePredictiveEchoOptions) => PredictiveEcho | null;
|
|
133
|
+
/**
|
|
134
|
+
* Minimum ms between status-line repaints (coalescing window). Defaults to a
|
|
135
|
+
* small positive value in production to shrink the per-chunk splice window;
|
|
136
|
+
* tests set `0` for immediate, deterministic paints.
|
|
137
|
+
*/
|
|
138
|
+
statusRepaintCoalesceMs?: number;
|
|
139
|
+
/**
|
|
140
|
+
* Interval (ms) at which the session re-asserts PTY resize ownership by
|
|
141
|
+
* re-sending its current size (single-resizer policy, #1247). Keeps an
|
|
142
|
+
* idle-but-live session from being superseded after the broker's
|
|
143
|
+
* stale-owner window; the broker treats a same-size re-assert as a no-op
|
|
144
|
+
* refresh (no SIGWINCH). Defaults to 60000. Set `0` to disable (tests).
|
|
145
|
+
*/
|
|
146
|
+
ownershipReassertMs?: number;
|
|
116
147
|
}
|
|
117
148
|
/** ----- HTTP helpers ----- */
|
|
118
149
|
/** `GET /api/spawned/{name}/delivery-mode` → `'manual_flush' | 'auto_inject'` or `null` on failure. */
|
|
@@ -127,8 +158,30 @@ export interface SetInboundDeliveryModeResult {
|
|
|
127
158
|
message?: string;
|
|
128
159
|
}
|
|
129
160
|
export declare function setInboundDeliveryMode(connection: BrokerConnection, name: string, mode: InboundDeliveryMode, fetchFn: typeof globalThis.fetch): Promise<SetInboundDeliveryModeResult>;
|
|
130
|
-
/** `
|
|
131
|
-
|
|
161
|
+
/** Seed for the `drive` pending counter: the current queue depth plus the
|
|
162
|
+
* set of `event_id`s already in the queue. The id set lets the WS handler
|
|
163
|
+
* dedupe replayed `delivery_queued` frames against deliveries already
|
|
164
|
+
* counted in `count` (see {@link runDriveSession}). */
|
|
165
|
+
export interface PendingSeed {
|
|
166
|
+
count: number;
|
|
167
|
+
eventIds: Set<string>;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* `GET /api/spawned/{name}/pending` → `{ count, eventIds }`, or an empty seed
|
|
171
|
+
* on failure (best-effort). The `eventIds` set carries every pending
|
|
172
|
+
* delivery's `event_id` (deliveries without one are still counted but can't
|
|
173
|
+
* be deduped) so a replayed `delivery_queued` frame for an already-seeded
|
|
174
|
+
* delivery doesn't inflate the counter.
|
|
175
|
+
*/
|
|
176
|
+
export declare function getPendingSeed(connection: BrokerConnection, name: string, fetchFn: typeof globalThis.fetch): Promise<PendingSeed>;
|
|
177
|
+
/**
|
|
178
|
+
* Current durable-event sequence cutoff, used as the event WS `sinceSeq` so
|
|
179
|
+
* the broker does not replay historical durable events (old `delivery_queued`
|
|
180
|
+
* frames) that would otherwise inflate the freshly-seeded pending counter.
|
|
181
|
+
* Returns `0` on failure (best-effort) — the caller then omits `sinceSeq`
|
|
182
|
+
* and behaves as before.
|
|
183
|
+
*/
|
|
184
|
+
export declare function getCurrentEventSeq(connection: BrokerConnection, fetchFn: typeof globalThis.fetch): Promise<number>;
|
|
132
185
|
/** `POST /api/spawned/{name}/flush` → server returns `{ flushed: N }`. */
|
|
133
186
|
export declare function flushPending(connection: BrokerConnection, name: string, fetchFn: typeof globalThis.fetch): Promise<{
|
|
134
187
|
ok: boolean;
|
|
@@ -148,16 +201,26 @@ export declare function openPtyInputStream(connection: BrokerConnection, name: s
|
|
|
148
201
|
* running in it) sees the size the human is actually looking at.
|
|
149
202
|
* Called once on attach and again on every local-terminal resize.
|
|
150
203
|
*/
|
|
151
|
-
export declare function resizeWorker(connection: BrokerConnection, name: string, rows: number, cols: number, fetchFn: typeof globalThis.fetch
|
|
204
|
+
export declare function resizeWorker(connection: BrokerConnection, name: string, rows: number, cols: number, fetchFn: typeof globalThis.fetch, options?: {
|
|
205
|
+
sessionId?: string;
|
|
206
|
+
}): Promise<{
|
|
152
207
|
ok: boolean;
|
|
153
208
|
message?: string;
|
|
154
209
|
}>;
|
|
210
|
+
/**
|
|
211
|
+
* Release this session's PTY resize ownership on detach (single-resizer
|
|
212
|
+
* policy, #1247), so the next client that attaches can resize the shared PTY.
|
|
213
|
+
* Best-effort: the broker also supersedes a crashed owner after an idle window.
|
|
214
|
+
*/
|
|
215
|
+
export declare function releaseResizeOwnership(connection: BrokerConnection, name: string, sessionId: string, fetchFn: typeof globalThis.fetch): Promise<void>;
|
|
155
216
|
/** Discriminated union of the broker events `drive` cares about. */
|
|
156
217
|
export type DriveWsEvent = {
|
|
157
218
|
kind: 'worker_stream';
|
|
158
219
|
chunk: string;
|
|
220
|
+
offset?: number;
|
|
159
221
|
} | {
|
|
160
222
|
kind: 'delivery_queued';
|
|
223
|
+
eventId?: string;
|
|
161
224
|
} | {
|
|
162
225
|
kind: 'agent_pending_drained';
|
|
163
226
|
count?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attach-drive.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/attach-drive.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"attach-drive.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/attach-drive.ts"],"names":[],"mappings":"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"}
|