@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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/predictive-echo.d.ts +204 -0
- package/dist/predictive-echo.d.ts.map +1 -0
- package/dist/predictive-echo.js +330 -0
- package/dist/predictive-echo.js.map +1 -0
- package/dist/transport.d.ts +16 -1
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +57 -29
- package/dist/transport.js.map +1 -1
- package/package.json +12 -7
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -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
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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"}
|
package/dist/transport.d.ts
CHANGED
|
@@ -49,17 +49,32 @@ export declare class PtyInputStream {
|
|
|
49
49
|
private openResolve?;
|
|
50
50
|
private openReject?;
|
|
51
51
|
private openTimer;
|
|
52
|
-
|
|
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;
|
package/dist/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEH,OAAO,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB;CAQF;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
this.inFlight
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
244
|
-
this.
|
|
245
|
-
|
|
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();
|
package/dist/transport.js.map
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
57
|
-
"@agent-relay/broker-darwin-x64": "8.1.
|
|
58
|
-
"@agent-relay/broker-linux-arm64": "8.1.
|
|
59
|
-
"@agent-relay/broker-linux-x64": "8.1.
|
|
60
|
-
"@agent-relay/broker-win32-x64": "8.1.
|
|
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"
|