@agent-relay/harness-driver 8.1.0 → 8.1.2

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/index.d.ts CHANGED
@@ -7,4 +7,5 @@ export * from './types.js';
7
7
  export * from './transport.js';
8
8
  export * from './broker-path.js';
9
9
  export * from './harness.js';
10
+ export * from './predictive-echo.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -7,4 +7,5 @@ export * from './types.js';
7
7
  export * from './transport.js';
8
8
  export * from './broker-path.js';
9
9
  export * from './harness.js';
10
+ export * from './predictive-echo.js';
10
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Mosh-style predictive (local) echo for interactive PTY attach sessions.
3
+ *
4
+ * On a remote broker, every keystroke's visual feedback is a full round trip:
5
+ * stdin → broker → agent PTY → echo back → display. With the local terminal
6
+ * in raw mode (no local echo), typing feels laggy because characters only
7
+ * appear after that trip completes. This engine masks the latency the way
8
+ * `mosh` does — it optimistically echoes printable characters locally
9
+ * (rendered underlined while unconfirmed), then reconciles against the
10
+ * authoritative server output as it arrives, dropping the underline on
11
+ * confirmation and rolling back mispredictions.
12
+ *
13
+ * The engine is host-agnostic: it depends only on a {@link ScreenModel}
14
+ * (confirmed cursor/screen state) and a `write` sink. The Agent Relay CLI
15
+ * backs the model with a headless `xterm` and writes to stdout; an Electron
16
+ * host (e.g. Pear) can back it with its live `@xterm/xterm` instance and
17
+ * write to that terminal. No Node-only APIs are used, so it runs in a
18
+ * browser/renderer as well as in Node.
19
+ *
20
+ * Design constraints that shape this implementation:
21
+ *
22
+ * - We keep passing server output straight through to the real terminal
23
+ * (the agent's screen must stay byte-for-byte correct). Optimistic echo
24
+ * moves the real cursor, so before each pass-through we erase our
25
+ * predicted glyphs, repaint the confirmed row tail from
26
+ * {@link ScreenModel}, and restore the cursor to the *confirmed*
27
+ * position; surviving predictions are re-rendered afterward. Erasing
28
+ * first (rather than after) means a chunk that moves off-regime can
29
+ * never strand an underline on the old row.
30
+ *
31
+ * - Predictions are confined to the simple, safe regime: printable
32
+ * characters appended at the end of the cursor's current row, on the
33
+ * normal (non-alternate) screen. That is exactly where `mosh` is most
34
+ * confident, and it keeps rollback to a bounded repaint of the
35
+ * predicted region (never touching confirmed content to its left).
36
+ * Anything outside that regime — alt-screen TUIs, row changes, cursor
37
+ * retreats, mid-line edits — suspends predictions and lets authoritative
38
+ * output drive the display.
39
+ *
40
+ * - Activation is adaptive (the `mosh` default): predictions only render
41
+ * once measured echo latency crosses a threshold, so on a local broker
42
+ * the engine is invisible and risk-free.
43
+ */
44
+ /**
45
+ * Authoritative confirmed-screen model. The host supplies an implementation:
46
+ * the CLI wraps a headless `xterm` terminal; an Electron host can back it
47
+ * with its live `@xterm/xterm` instance. All coordinates are 0-indexed.
48
+ */
49
+ export interface ScreenModel {
50
+ /** Feed confirmed server bytes; resolves once buffer state reflects them. */
51
+ write(data: string): Promise<void>;
52
+ /** Confirmed cursor position within the viewport. */
53
+ cursor(): {
54
+ row: number;
55
+ col: number;
56
+ };
57
+ /** Confirmed text of a viewport row, with trailing blanks trimmed. */
58
+ rowText(row: number): string;
59
+ /** True when the alternate screen buffer is active (full-screen TUI). */
60
+ isAltScreen(): boolean;
61
+ /** Viewport width in columns. */
62
+ cols(): number;
63
+ /** Resize the model's viewport. */
64
+ resize(cols: number, rows: number): void;
65
+ /** Release any underlying resources (e.g. a headless terminal). */
66
+ dispose?(): void;
67
+ }
68
+ export interface PredictionConfig {
69
+ /**
70
+ * Echo-latency threshold (ms) at or above which predictions render.
71
+ * Below it, the engine stays dormant and the (now fast) server echo
72
+ * provides feedback. Mirrors `mosh`'s adaptive default.
73
+ */
74
+ engageThresholdMs: number;
75
+ /** SGR applied to unconfirmed predicted glyphs. Default: underline. */
76
+ predictionSgr: string;
77
+ }
78
+ export declare const DEFAULT_PREDICTION_CONFIG: PredictionConfig;
79
+ /**
80
+ * Client-facing surface the attach sessions depend on, so a test (or an
81
+ * alternate host) can inject a fake. {@link PredictiveEchoEngine} satisfies it.
82
+ */
83
+ export interface PredictiveEcho {
84
+ /** Prime the confirmed model with already-painted bytes (e.g. the attach
85
+ * snapshot) so its cursor matches the real screen before predicting. */
86
+ seed(data: string): Promise<void>;
87
+ /** The user typed bytes destined for the agent PTY (post keybind parse). */
88
+ onUserInput(forward: string | Uint8Array): void;
89
+ /** A server output chunk; the engine owns its pass-through + reconcile. */
90
+ onServerOutput(chunk: string): Promise<void>;
91
+ /** Discard outstanding predictions (e.g. the input send failed); repaints
92
+ * the confirmed row so no stale optimistic glyphs remain. */
93
+ rollback(): void;
94
+ /** Local terminal resized. */
95
+ onResize(cols: number, rows: number): void;
96
+ /** Tear down; subsequent server output is plain pass-through. */
97
+ reset(): void;
98
+ }
99
+ export interface PredictiveEchoDeps {
100
+ /** Authoritative confirmed-screen model. */
101
+ model: ScreenModel;
102
+ /** Writes raw bytes/escape sequences to the real terminal. */
103
+ write: (data: string) => void;
104
+ /** Monotonic-ish clock in ms (injectable for tests). */
105
+ now: () => number;
106
+ /**
107
+ * Latest input→ack SRTT from the PTY input stream, or null. Used to
108
+ * bootstrap the adaptive decision before the first echo is confirmed.
109
+ */
110
+ getInputSrtt: () => number | null;
111
+ config?: Partial<PredictionConfig>;
112
+ }
113
+ /**
114
+ * Predictive-echo state machine. One instance per interactive attach
115
+ * session. Server output is processed through an internal promise chain so
116
+ * concurrent {@link onServerOutput} calls stay strictly ordered even though
117
+ * the model's `write` is async.
118
+ */
119
+ export declare class PredictiveEchoEngine implements PredictiveEcho {
120
+ private readonly model;
121
+ private readonly write;
122
+ private readonly now;
123
+ private readonly getInputSrtt;
124
+ private readonly config;
125
+ /** Outstanding predictions, left-to-right on {@link predRow}. */
126
+ private predictions;
127
+ /** Row the current prediction run lives on (0-indexed viewport row). */
128
+ private predRow;
129
+ /** Smoothed echo-confirmation latency (ms), or null before first sample. */
130
+ private echoSrttMs;
131
+ /** Serializes async server-output processing. */
132
+ private tail;
133
+ private disposed;
134
+ /**
135
+ * Streaming UTF-8 decoder for byte input. Per-instance and stateful so a
136
+ * multibyte sequence split across two stdin chunks is held (not decoded as
137
+ * U+FFFD and mispredicted) until the trailing bytes arrive.
138
+ */
139
+ private readonly decoder;
140
+ /**
141
+ * False only while an in-flight {@link seed} is still applying. Gates
142
+ * optimistic echo so we never predict from an unseeded (0,0) cursor when
143
+ * the user types before the snapshot finishes priming the model.
144
+ */
145
+ private seeded;
146
+ constructor(deps: PredictiveEchoDeps);
147
+ /**
148
+ * Prime the confirmed model with bytes already painted to the terminal
149
+ * (e.g. the attach snapshot) so its cursor/content match the real screen
150
+ * before any prediction is made. Does not re-write to the terminal.
151
+ */
152
+ seed(data: string): Promise<void>;
153
+ /**
154
+ * Whether predictions should currently render (adaptive on latency).
155
+ * Prefers the live input→ack SRTT so the engine re-engages promptly when
156
+ * latency spikes again after a recovery period; the slow-moving echo EWMA
157
+ * is only a fallback before the first ack.
158
+ */
159
+ private get engaged();
160
+ /** True while at least one optimistic glyph is on screen. */
161
+ get hasPredictions(): boolean;
162
+ /** Smoothed echo-confirmation latency in ms, or null. (Diagnostics.) */
163
+ get echoLatencyMs(): number | null;
164
+ /**
165
+ * The user typed `forward` (the bytes already destined for the agent's
166
+ * PTY, post keybind-parsing). Optimistically echoes the printable tail
167
+ * when engaged and in the safe end-of-line regime.
168
+ */
169
+ onUserInput(forward: string | Uint8Array): void;
170
+ /** Optimistically echo one printable char at the predicted cursor. */
171
+ private predictPrintable;
172
+ /** Roll back the most recent outstanding prediction (local backspace). */
173
+ private predictBackspace;
174
+ /** Predicted real-cursor column given the confirmed cursor. */
175
+ private predictedCursorCol;
176
+ /**
177
+ * Process one server output chunk: pass it through to the terminal and
178
+ * reconcile predictions against the new confirmed state. Ordered via the
179
+ * internal promise chain; callers may fire-and-forget.
180
+ */
181
+ onServerOutput(chunk: string): Promise<void>;
182
+ private processServerChunk;
183
+ /**
184
+ * Repaint the confirmed row from `startCol` to end-of-line, then restore
185
+ * the cursor to `restoreTo`. Replaces any optimistic glyphs at/after
186
+ * `startCol` with authoritative model content. Only touches columns
187
+ * `>= startCol`, so confirmed output to the left is never clobbered. No-op
188
+ * when the cursor has already left the prediction row (we can't safely
189
+ * repaint a row we no longer own).
190
+ */
191
+ private erasePredictionRegion;
192
+ /** Draw the outstanding predicted glyphs underlined, parking the cursor
193
+ * just past the last one. */
194
+ private renderPredictions;
195
+ /** Erase all outstanding predicted glyphs and forget them. */
196
+ private killPredictions;
197
+ /** Public rollback: discard predictions (e.g. an input send failed). */
198
+ rollback(): void;
199
+ private recordEchoLatency;
200
+ onResize(cols: number, rows: number): void;
201
+ /** Drop all state; subsequent server output is plain pass-through. */
202
+ reset(): void;
203
+ }
204
+ //# sourceMappingURL=predictive-echo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictive-echo.d.ts","sourceRoot":"","sources":["../src/predictive-echo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Mosh-style predictive (local) echo for interactive PTY attach sessions.
3
+ *
4
+ * On a remote broker, every keystroke's visual feedback is a full round trip:
5
+ * stdin → broker → agent PTY → echo back → display. With the local terminal
6
+ * in raw mode (no local echo), typing feels laggy because characters only
7
+ * appear after that trip completes. This engine masks the latency the way
8
+ * `mosh` does — it optimistically echoes printable characters locally
9
+ * (rendered underlined while unconfirmed), then reconciles against the
10
+ * authoritative server output as it arrives, dropping the underline on
11
+ * confirmation and rolling back mispredictions.
12
+ *
13
+ * The engine is host-agnostic: it depends only on a {@link ScreenModel}
14
+ * (confirmed cursor/screen state) and a `write` sink. The Agent Relay CLI
15
+ * backs the model with a headless `xterm` and writes to stdout; an Electron
16
+ * host (e.g. Pear) can back it with its live `@xterm/xterm` instance and
17
+ * write to that terminal. No Node-only APIs are used, so it runs in a
18
+ * browser/renderer as well as in Node.
19
+ *
20
+ * Design constraints that shape this implementation:
21
+ *
22
+ * - We keep passing server output straight through to the real terminal
23
+ * (the agent's screen must stay byte-for-byte correct). Optimistic echo
24
+ * moves the real cursor, so before each pass-through we erase our
25
+ * predicted glyphs, repaint the confirmed row tail from
26
+ * {@link ScreenModel}, and restore the cursor to the *confirmed*
27
+ * position; surviving predictions are re-rendered afterward. Erasing
28
+ * first (rather than after) means a chunk that moves off-regime can
29
+ * never strand an underline on the old row.
30
+ *
31
+ * - Predictions are confined to the simple, safe regime: printable
32
+ * characters appended at the end of the cursor's current row, on the
33
+ * normal (non-alternate) screen. That is exactly where `mosh` is most
34
+ * confident, and it keeps rollback to a bounded repaint of the
35
+ * predicted region (never touching confirmed content to its left).
36
+ * Anything outside that regime — alt-screen TUIs, row changes, cursor
37
+ * retreats, mid-line edits — suspends predictions and lets authoritative
38
+ * output drive the display.
39
+ *
40
+ * - Activation is adaptive (the `mosh` default): predictions only render
41
+ * once measured echo latency crosses a threshold, so on a local broker
42
+ * the engine is invisible and risk-free.
43
+ */
44
+ export const DEFAULT_PREDICTION_CONFIG = {
45
+ engageThresholdMs: 30,
46
+ predictionSgr: '\x1b[4m', // underline
47
+ };
48
+ /** ESC[<row>;<col>H — move cursor (1-indexed args). */
49
+ function cup(row0, col0) {
50
+ return `\x1b[${row0 + 1};${col0 + 1}H`;
51
+ }
52
+ /**
53
+ * Is this a single printable character we are willing to predict-echo?
54
+ *
55
+ * Restricted to single-column printable ASCII (0x20–0x7e). Wide glyphs
56
+ * (CJK, emoji) occupy two columns, which would desync the engine's
57
+ * one-column-per-char cursor math; non-ASCII input falls back to the
58
+ * server echo rather than risk a misplaced prediction.
59
+ */
60
+ function isPredictablePrintable(ch) {
61
+ if (ch.length !== 1)
62
+ return false;
63
+ const code = ch.charCodeAt(0);
64
+ return code >= 0x20 && code <= 0x7e;
65
+ }
66
+ /**
67
+ * Predictive-echo state machine. One instance per interactive attach
68
+ * session. Server output is processed through an internal promise chain so
69
+ * concurrent {@link onServerOutput} calls stay strictly ordered even though
70
+ * the model's `write` is async.
71
+ */
72
+ export class PredictiveEchoEngine {
73
+ model;
74
+ write;
75
+ now;
76
+ getInputSrtt;
77
+ config;
78
+ /** Outstanding predictions, left-to-right on {@link predRow}. */
79
+ predictions = [];
80
+ /** Row the current prediction run lives on (0-indexed viewport row). */
81
+ predRow = 0;
82
+ /** Smoothed echo-confirmation latency (ms), or null before first sample. */
83
+ echoSrttMs = null;
84
+ /** Serializes async server-output processing. */
85
+ tail = Promise.resolve();
86
+ disposed = false;
87
+ /**
88
+ * Streaming UTF-8 decoder for byte input. Per-instance and stateful so a
89
+ * multibyte sequence split across two stdin chunks is held (not decoded as
90
+ * U+FFFD and mispredicted) until the trailing bytes arrive.
91
+ */
92
+ decoder = new TextDecoder();
93
+ /**
94
+ * False only while an in-flight {@link seed} is still applying. Gates
95
+ * optimistic echo so we never predict from an unseeded (0,0) cursor when
96
+ * the user types before the snapshot finishes priming the model.
97
+ */
98
+ seeded = true;
99
+ constructor(deps) {
100
+ this.model = deps.model;
101
+ this.write = deps.write;
102
+ this.now = deps.now;
103
+ this.getInputSrtt = deps.getInputSrtt;
104
+ this.config = { ...DEFAULT_PREDICTION_CONFIG, ...deps.config };
105
+ }
106
+ /**
107
+ * Prime the confirmed model with bytes already painted to the terminal
108
+ * (e.g. the attach snapshot) so its cursor/content match the real screen
109
+ * before any prediction is made. Does not re-write to the terminal.
110
+ */
111
+ seed(data) {
112
+ this.seeded = false;
113
+ this.tail = this.tail
114
+ .then(() => this.model.write(data))
115
+ .then(() => {
116
+ this.seeded = true;
117
+ });
118
+ return this.tail;
119
+ }
120
+ /**
121
+ * Whether predictions should currently render (adaptive on latency).
122
+ * Prefers the live input→ack SRTT so the engine re-engages promptly when
123
+ * latency spikes again after a recovery period; the slow-moving echo EWMA
124
+ * is only a fallback before the first ack.
125
+ */
126
+ get engaged() {
127
+ const srtt = this.getInputSrtt() ?? this.echoSrttMs;
128
+ return srtt !== null && srtt >= this.config.engageThresholdMs;
129
+ }
130
+ /** True while at least one optimistic glyph is on screen. */
131
+ get hasPredictions() {
132
+ return this.predictions.length > 0;
133
+ }
134
+ /** Smoothed echo-confirmation latency in ms, or null. (Diagnostics.) */
135
+ get echoLatencyMs() {
136
+ return this.echoSrttMs;
137
+ }
138
+ /**
139
+ * The user typed `forward` (the bytes already destined for the agent's
140
+ * PTY, post keybind-parsing). Optimistically echoes the printable tail
141
+ * when engaged and in the safe end-of-line regime.
142
+ */
143
+ onUserInput(forward) {
144
+ if (this.disposed || !this.seeded || !this.engaged)
145
+ return;
146
+ if (this.model.isAltScreen()) {
147
+ this.killPredictions();
148
+ return;
149
+ }
150
+ const text = typeof forward === 'string' ? forward : this.decoder.decode(forward, { stream: true });
151
+ for (const ch of text) {
152
+ const code = ch.charCodeAt(0);
153
+ if (code === 0x7f || code === 0x08) {
154
+ this.predictBackspace();
155
+ continue;
156
+ }
157
+ if (isPredictablePrintable(ch)) {
158
+ this.predictPrintable(ch);
159
+ continue;
160
+ }
161
+ // Anything else (Enter, arrows, control bytes) leaves the simple
162
+ // append regime — stop predicting and let the server drive.
163
+ this.killPredictions();
164
+ return;
165
+ }
166
+ }
167
+ /** Optimistically echo one printable char at the predicted cursor. */
168
+ predictPrintable(ch) {
169
+ const confirmed = this.model.cursor();
170
+ const base = this.predictedCursorCol(confirmed);
171
+ // Only predict appends at the end of the current row's content — the
172
+ // regime where rollback is a safe clear-to-EOL.
173
+ if (this.predictions.length === 0) {
174
+ const rowLen = this.model.rowText(confirmed.row).length;
175
+ if (confirmed.col !== rowLen)
176
+ return; // mid-line; don't guess
177
+ if (confirmed.col >= this.model.cols() - 1)
178
+ return; // avoid wrap edge
179
+ this.predRow = confirmed.row;
180
+ }
181
+ else if (confirmed.row !== this.predRow) {
182
+ // Confirmed cursor wandered off the prediction row; bail.
183
+ this.killPredictions();
184
+ return;
185
+ }
186
+ if (base >= this.model.cols() - 1)
187
+ return; // would wrap; stay safe
188
+ this.predictions.push({ col: base, ch, at: this.now() });
189
+ // Render underlined glyph at `base`, leaving the real cursor after it.
190
+ this.write(`${cup(this.predRow, base)}${this.config.predictionSgr}${ch}\x1b[0m`);
191
+ }
192
+ /** Roll back the most recent outstanding prediction (local backspace). */
193
+ predictBackspace() {
194
+ const last = this.predictions.pop();
195
+ if (!last)
196
+ return; // nothing of ours to erase — let the server handle it
197
+ // Erase the glyph: move onto it, clear to end of line (safe — nothing
198
+ // confirmed lives to the right of our predictions in this regime).
199
+ this.write(`${cup(this.predRow, last.col)}\x1b[K`);
200
+ }
201
+ /** Predicted real-cursor column given the confirmed cursor. */
202
+ predictedCursorCol(confirmed) {
203
+ if (this.predictions.length === 0)
204
+ return confirmed.col;
205
+ return this.predictions[this.predictions.length - 1].col + 1;
206
+ }
207
+ /**
208
+ * Process one server output chunk: pass it through to the terminal and
209
+ * reconcile predictions against the new confirmed state. Ordered via the
210
+ * internal promise chain; callers may fire-and-forget.
211
+ */
212
+ onServerOutput(chunk) {
213
+ this.tail = this.tail.then(() => this.processServerChunk(chunk));
214
+ return this.tail;
215
+ }
216
+ async processServerChunk(chunk) {
217
+ if (this.disposed) {
218
+ this.write(chunk);
219
+ return;
220
+ }
221
+ const hadPredictions = this.predictions.length > 0;
222
+ const confirmedBefore = this.model.cursor();
223
+ const predStartCol = hadPredictions ? this.predictions[0].col : 0;
224
+ // 1. Erase our optimistic glyphs and repaint the confirmed row tail
225
+ // BEFORE the authoritative chunk lands. This both neutralizes the
226
+ // cursor advance (so cursor-relative server bytes land correctly) and
227
+ // guarantees we never strand an underline — if the chunk turns out to
228
+ // move off-regime (newline, alt-screen, cursor jump), there is nothing
229
+ // left on the old row to clean up.
230
+ if (hadPredictions) {
231
+ this.erasePredictionRegion(predStartCol, confirmedBefore);
232
+ }
233
+ // 2. Pass the authoritative chunk through to the real terminal.
234
+ this.write(chunk);
235
+ // 3. Advance the confirmed model.
236
+ await this.model.write(chunk);
237
+ if (this.disposed)
238
+ return;
239
+ if (!hadPredictions)
240
+ return;
241
+ const confirmedAfter = this.model.cursor();
242
+ // 4. Suspend on anything outside the simple append regime: alt-screen, a
243
+ // different row, or a cursor that retreated (e.g. `\r` + prompt
244
+ // redraw) rather than advancing through the predicted columns. The
245
+ // glyphs are already gone (step 1), so this is just dropping state.
246
+ if (this.model.isAltScreen() ||
247
+ confirmedAfter.row !== this.predRow ||
248
+ confirmedAfter.col < confirmedBefore.col) {
249
+ this.predictions = [];
250
+ return;
251
+ }
252
+ // 5. Drop predictions the server has now confirmed (its own echo
253
+ // repainted them during pass-through). A prediction at column <
254
+ // confirmedAfter.col has been overtaken.
255
+ const stillPending = this.predictions.filter((p) => p.col >= confirmedAfter.col);
256
+ const confirmedCount = this.predictions.length - stillPending.length;
257
+ if (confirmedCount > 0) {
258
+ this.recordEchoLatency(this.predictions[confirmedCount - 1].at);
259
+ }
260
+ // 6. Validate overtaken cells: if the server echoed something other than
261
+ // what we guessed, the remaining glyphs are suspect — drop them. The
262
+ // confirmed content is already on screen from step 2.
263
+ const rowText = this.model.rowText(this.predRow);
264
+ for (const p of this.predictions) {
265
+ if (p.col < confirmedAfter.col && rowText[p.col] !== p.ch) {
266
+ this.predictions = [];
267
+ return;
268
+ }
269
+ }
270
+ // 7. Re-render the survivors to the right of the confirmed cursor and
271
+ // park the real cursor at the predicted column.
272
+ this.predictions = stillPending;
273
+ this.renderPredictions();
274
+ }
275
+ /**
276
+ * Repaint the confirmed row from `startCol` to end-of-line, then restore
277
+ * the cursor to `restoreTo`. Replaces any optimistic glyphs at/after
278
+ * `startCol` with authoritative model content. Only touches columns
279
+ * `>= startCol`, so confirmed output to the left is never clobbered. No-op
280
+ * when the cursor has already left the prediction row (we can't safely
281
+ * repaint a row we no longer own).
282
+ */
283
+ erasePredictionRegion(startCol, restoreTo) {
284
+ if (restoreTo.row !== this.predRow)
285
+ return;
286
+ const tail = this.model.rowText(this.predRow).slice(startCol);
287
+ this.write(`${cup(this.predRow, startCol)}\x1b[K${tail}${cup(restoreTo.row, restoreTo.col)}`);
288
+ }
289
+ /** Draw the outstanding predicted glyphs underlined, parking the cursor
290
+ * just past the last one. */
291
+ renderPredictions() {
292
+ if (this.predictions.length === 0)
293
+ return;
294
+ let out = '';
295
+ for (const p of this.predictions) {
296
+ out += `${cup(this.predRow, p.col)}${this.config.predictionSgr}${p.ch}\x1b[0m`;
297
+ }
298
+ out += cup(this.predRow, this.predictions[this.predictions.length - 1].col + 1);
299
+ this.write(out);
300
+ }
301
+ /** Erase all outstanding predicted glyphs and forget them. */
302
+ killPredictions() {
303
+ if (this.predictions.length === 0)
304
+ return;
305
+ const startCol = this.predictions[0].col;
306
+ this.predictions = [];
307
+ this.erasePredictionRegion(startCol, this.model.cursor());
308
+ }
309
+ /** Public rollback: discard predictions (e.g. an input send failed). */
310
+ rollback() {
311
+ this.killPredictions();
312
+ }
313
+ recordEchoLatency(predictedAt) {
314
+ const sample = this.now() - predictedAt;
315
+ if (!Number.isFinite(sample) || sample < 0)
316
+ return;
317
+ this.echoSrttMs = this.echoSrttMs === null ? sample : this.echoSrttMs * 0.875 + sample * 0.125;
318
+ }
319
+ onResize(cols, rows) {
320
+ this.killPredictions();
321
+ this.model.resize(cols, rows);
322
+ }
323
+ /** Drop all state; subsequent server output is plain pass-through. */
324
+ reset() {
325
+ this.killPredictions();
326
+ this.disposed = true;
327
+ this.model.dispose?.();
328
+ }
329
+ }
330
+ //# sourceMappingURL=predictive-echo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictive-echo.js","sourceRoot":"","sources":["../src/predictive-echo.ts"],"names":[],"mappings":"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"}
@@ -49,17 +49,32 @@ export declare class PtyInputStream {
49
49
  private openResolve?;
50
50
  private openReject?;
51
51
  private openTimer;
52
- private inFlight;
52
+ /**
53
+ * Frames sent over the WebSocket and awaiting their `pty_input_ack`, in
54
+ * send order. Pipelined rather than stop-and-wait: queued keystrokes are
55
+ * all sent eagerly (TCP preserves order) and settled FIFO as acks arrive,
56
+ * so interactive input never pays one round-trip per keystroke.
57
+ */
58
+ private readonly inFlight;
53
59
  private bufferedBytes;
54
60
  private opened;
55
61
  private _closed;
56
62
  private flushing;
63
+ /** EWMA of input→ack round-trip in ms, or null before the first ack. */
64
+ private _srttMs;
57
65
  constructor(options: {
58
66
  url: string;
59
67
  apiKey?: string;
60
68
  } & PtyInputStreamOptions);
61
69
  get closed(): boolean;
62
70
  get bufferedAmountBytes(): number;
71
+ /**
72
+ * Smoothed input→ack round-trip in ms, or null before the first ack.
73
+ * Cheap latency signal for adaptive predictive echo to bootstrap from
74
+ * before it has measured its own echo-confirmation latency.
75
+ */
76
+ get srttMs(): number | null;
77
+ private recordAckRtt;
63
78
  waitUntilOpen(): Promise<void>;
64
79
  send(data: string): Promise<PtyInputWriteResult>;
65
80
  close(code?: number, reason?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
package/dist/transport.js CHANGED
@@ -32,11 +32,19 @@ export class PtyInputStream {
32
32
  openResolve;
33
33
  openReject;
34
34
  openTimer = null;
35
- inFlight = null;
35
+ /**
36
+ * Frames sent over the WebSocket and awaiting their `pty_input_ack`, in
37
+ * send order. Pipelined rather than stop-and-wait: queued keystrokes are
38
+ * all sent eagerly (TCP preserves order) and settled FIFO as acks arrive,
39
+ * so interactive input never pays one round-trip per keystroke.
40
+ */
41
+ inFlight = [];
36
42
  bufferedBytes = 0;
37
43
  opened = false;
38
44
  _closed = false;
39
45
  flushing = false;
46
+ /** EWMA of input→ack round-trip in ms, or null before the first ack. */
47
+ _srttMs = null;
40
48
  constructor(options) {
41
49
  this.highWaterMarkBytes = normalizePositiveIntegerOption(options.highWaterMarkBytes, DEFAULT_INPUT_HIGH_WATER_MARK_BYTES, 'highWaterMarkBytes');
42
50
  const openTimeoutMs = normalizePositiveIntegerOption(options.openTimeoutMs, DEFAULT_INPUT_OPEN_TIMEOUT_MS, 'openTimeoutMs');
@@ -96,6 +104,20 @@ export class PtyInputStream {
96
104
  get bufferedAmountBytes() {
97
105
  return this.bufferedBytes;
98
106
  }
107
+ /**
108
+ * Smoothed input→ack round-trip in ms, or null before the first ack.
109
+ * Cheap latency signal for adaptive predictive echo to bootstrap from
110
+ * before it has measured its own echo-confirmation latency.
111
+ */
112
+ get srttMs() {
113
+ return this._srttMs;
114
+ }
115
+ recordAckRtt(sampleMs) {
116
+ if (!Number.isFinite(sampleMs) || sampleMs < 0)
117
+ return;
118
+ // Standard RFC 6298-style EWMA (alpha = 1/8).
119
+ this._srttMs = this._srttMs === null ? sampleMs : this._srttMs * 0.875 + sampleMs * 0.125;
120
+ }
99
121
  waitUntilOpen() {
100
122
  return this.openPromise;
101
123
  }
@@ -145,7 +167,7 @@ export class PtyInputStream {
145
167
  this.failAll(error);
146
168
  }
147
169
  async flush() {
148
- if (this.flushing || this.inFlight || this.queue.length === 0 || this._closed) {
170
+ if (this.flushing || this.queue.length === 0 || this._closed) {
149
171
  return;
150
172
  }
151
173
  this.flushing = true;
@@ -159,28 +181,31 @@ export class PtyInputStream {
159
181
  finally {
160
182
  this.flushing = false;
161
183
  }
162
- if (this.inFlight || this.queue.length === 0 || this._closed) {
163
- return;
164
- }
165
- const next = this.queue.shift();
166
- if (!next)
167
- return;
168
- this.inFlight = next;
169
- this.ws.send(next.data, (error) => {
170
- if (!error)
171
- return;
172
- if (this.inFlight === next) {
173
- this.inFlight = null;
174
- }
175
- const protocolError = new HarnessDriverProtocolError({
176
- code: 'input_stream_send_failed',
177
- message: error.message,
178
- retryable: true,
179
- data: error,
184
+ // Drain the entire queue in one synchronous pass — no `await` between
185
+ // here and the loop's end, so a concurrent `flush()` can't interleave.
186
+ while (this.queue.length > 0 && !this._closed) {
187
+ const next = this.queue.shift();
188
+ if (!next)
189
+ break;
190
+ next.sentAt = Date.now();
191
+ this.inFlight.push(next);
192
+ this.ws.send(next.data, (error) => {
193
+ if (!error)
194
+ return;
195
+ const idx = this.inFlight.indexOf(next);
196
+ if (idx !== -1) {
197
+ this.inFlight.splice(idx, 1);
198
+ }
199
+ const protocolError = new HarnessDriverProtocolError({
200
+ code: 'input_stream_send_failed',
201
+ message: error.message,
202
+ retryable: true,
203
+ data: error,
204
+ });
205
+ this.settle(next, protocolError);
206
+ this.failAll(protocolError);
180
207
  });
181
- this.settle(next, protocolError);
182
- this.failAll(protocolError);
183
- });
208
+ }
184
209
  }
185
210
  handleMessage(data) {
186
211
  let payload;
@@ -203,15 +228,17 @@ export class PtyInputStream {
203
228
  return;
204
229
  }
205
230
  if (type === 'pty_input_ack') {
206
- const current = this.inFlight;
231
+ // Acks arrive in send order; settle the oldest outstanding frame.
232
+ const current = this.inFlight.shift();
207
233
  if (!current)
208
234
  return;
209
- this.inFlight = null;
235
+ if (typeof current.sentAt === 'number') {
236
+ this.recordAckRtt(Date.now() - current.sentAt);
237
+ }
210
238
  this.settle(current, {
211
239
  name: typeof message.name === 'string' ? message.name : '',
212
240
  bytes_written: typeof message.bytes_written === 'number' ? message.bytes_written : current.bytes,
213
241
  });
214
- this.flush();
215
242
  return;
216
243
  }
217
244
  if (type === 'pty_input_error' || type === 'error') {
@@ -240,9 +267,10 @@ export class PtyInputStream {
240
267
  }
241
268
  }
242
269
  failAll(error) {
243
- if (this.inFlight) {
244
- this.settle(this.inFlight, error);
245
- this.inFlight = null;
270
+ while (this.inFlight.length > 0) {
271
+ const item = this.inFlight.shift();
272
+ if (item)
273
+ this.settle(item, error);
246
274
  }
247
275
  while (this.queue.length > 0) {
248
276
  const item = this.queue.shift();
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/harness-driver",
3
- "version": "8.1.0",
3
+ "version": "8.1.2",
4
4
  "description": "Managed harness driver for Agent Relay — attach, wrap, spawn, inject, and observe agent runtimes",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -36,6 +36,11 @@
36
36
  "import": "./dist/harnesses.js",
37
37
  "default": "./dist/harnesses.js"
38
38
  },
39
+ "./predictive-echo": {
40
+ "types": "./dist/predictive-echo.d.ts",
41
+ "import": "./dist/predictive-echo.js",
42
+ "default": "./dist/predictive-echo.js"
43
+ },
39
44
  "./package.json": "./package.json"
40
45
  },
41
46
  "files": [
@@ -48,16 +53,16 @@
48
53
  "check": "tsc -p tsconfig.json --noEmit"
49
54
  },
50
55
  "dependencies": {
51
- "@agent-relay/sdk": "8.1.0",
56
+ "@agent-relay/sdk": "8.1.2",
52
57
  "ws": "^8.18.3",
53
58
  "zod": "^3.23.8"
54
59
  },
55
60
  "optionalDependencies": {
56
- "@agent-relay/broker-darwin-arm64": "8.1.0",
57
- "@agent-relay/broker-darwin-x64": "8.1.0",
58
- "@agent-relay/broker-linux-arm64": "8.1.0",
59
- "@agent-relay/broker-linux-x64": "8.1.0",
60
- "@agent-relay/broker-win32-x64": "8.1.0"
61
+ "@agent-relay/broker-darwin-arm64": "8.1.2",
62
+ "@agent-relay/broker-darwin-x64": "8.1.2",
63
+ "@agent-relay/broker-linux-arm64": "8.1.2",
64
+ "@agent-relay/broker-linux-x64": "8.1.2",
65
+ "@agent-relay/broker-win32-x64": "8.1.2"
61
66
  },
62
67
  "publishConfig": {
63
68
  "access": "public"