@mono-agent/operator-adapter 0.14.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # @mono-agent/operator-adapter
2
2
 
3
- Serve the two local operator protocols used by mono-agent consoles: a
4
- bidirectional NDJSON turn endpoint and a read-only SSE run-event relay.
3
+ Serve the local bidirectional NDJSON operator protocol used by mono-agent's
4
+ terminal and browser consoles.
5
5
 
6
6
  ## Category
7
7
 
@@ -10,28 +10,21 @@ bidirectional NDJSON turn endpoint and a read-only SSE run-event relay.
10
10
 
11
11
  Category: `communication`
12
12
  Tier: `core`
13
- Catalog responsibility: Exposes local operator endpoints: structured TUI NDJSON turns and read-only live SSE run-event streams.
13
+ Catalog responsibility: Exposes the structured local TUI NDJSON endpoint used by the terminal and browser operator consoles.
14
14
 
15
15
  <!-- package-metadata:end -->
16
16
 
17
17
  ## Responsibility
18
18
 
19
- This communication package exposes host-provided responders and run-event buses
20
- over deliberately separate HTTP lanes:
21
-
22
- - the `tui` lane accepts turns from `mono-agent tui` and `mono-agent web` and
23
- preserves structured `AgentStreamEvent` frames; and
24
- - the `live` lane replays and streams `RunEventFrame` telemetry to read-only
25
- consumers such as `@mono-agent/session-web`.
26
-
27
- Both lanes default to loopback, use independent config and bearer keys, and
28
- refuse non-loopback binds unless the host explicitly opts in.
19
+ This communication package exposes a host-provided responder over the `tui`
20
+ HTTP lane. It accepts turns from `mono-agent tui` and `mono-agent web` while
21
+ preserving structured `AgentStreamEvent` frames. The endpoint defaults to
22
+ loopback and refuses a non-loopback bind unless the host explicitly opts in.
29
23
 
30
24
  ## Install / Usage
31
25
 
32
26
  `@mono-agent/agent-app` already includes this package. In a config-first agent,
33
- the two operator lanes are enabled by default and can be narrowed or disabled
34
- independently:
27
+ the operator endpoint is enabled by default and can be narrowed or disabled:
35
28
 
36
29
  ```json
37
30
  {
@@ -40,12 +33,6 @@ independently:
40
33
  "host": "127.0.0.1",
41
34
  "port": 0,
42
35
  "basePath": "/gui"
43
- },
44
- "live": {
45
- "enabled": true,
46
- "host": "127.0.0.1",
47
- "port": 0,
48
- "basePath": "/live"
49
36
  }
50
37
  }
51
38
  ```
@@ -57,32 +44,25 @@ pnpm add @mono-agent/operator-adapter
57
44
  ```
58
45
 
59
46
  ```ts
60
- import {
61
- createLiveEventBus,
62
- startLiveAdapter,
63
- startTuiAdapter,
64
- } from "@mono-agent/operator-adapter";
47
+ import { startTuiAdapter } from "@mono-agent/operator-adapter";
65
48
 
66
49
  const tui = await startTuiAdapter({
67
50
  responder,
68
51
  info: { label: "personal-agent", model: "claude-fable-5" },
69
52
  });
70
53
 
71
- const bus = createLiveEventBus();
72
- const live = await startLiveAdapter({ bus, host: "127.0.0.1", port: 0 });
73
-
74
54
  await tui.stop();
75
- await live.stop();
76
55
  ```
77
56
 
78
57
  Keep bearer values out of source config when possible. Set
79
- `MONO_AGENT_TUI_API_KEY` and `MONO_AGENT_LIVE_API_KEY` in the agent's `.env`.
58
+ `MONO_AGENT_TUI_API_KEY` in the agent's `.env`.
80
59
 
81
60
  ### Conversational endpoints
82
61
 
83
62
  - `GET {basePath}/v1/info` returns the wire `schema`, process id, and attachment
84
- capability. `capabilities.historyAppend` and `capabilities.askUser` are
85
- advertised additively when their routes are supported. The response also
63
+ capability. `capabilities.liveInput`, `capabilities.historyAppend`, and
64
+ `capabilities.askUser` are advertised additively when their routes are
65
+ supported. The response also
86
66
  includes `label`, default `model`, default `effort`, candidate `models`, and
87
67
  per-model `modelOptions` when the host supplies them. `info` may be a function
88
68
  so local-model choices can refresh without restarting the endpoint.
@@ -100,16 +80,14 @@ Keep bearer values out of source config when possible. Set
100
80
  the same turn resumes after all questions are answered.
101
81
  - `POST {basePath}/v1/conversations/:id/cancel` - explicit cancel (202; 501
102
82
  when the responder has no `cancel`); pending AskUser state is cancelled too.
83
+ - `POST {basePath}/v1/conversations/:id/live-input` - offer bounded
84
+ `{ id, text, receivedAt }` guidance to the active turn. The response waits for
85
+ `applied`, `requeue`, or `discarded`; inactive/unsupported offers return
86
+ `unavailable` without inventing success.
103
87
  - `POST {basePath}/v1/conversations/:id/verbatim` - authenticated
104
88
  `{ text, idempotencyKey }` durable-history append with no model turn (200; 501
105
89
  when the responder has no `deliverVerbatim`).
106
90
 
107
- ### Read-only live endpoints
108
-
109
- - `GET {basePath}/v1/info` - `{ schema, pid, label? }`.
110
- - `GET {basePath}/v1/events` - `text/event-stream` replaying recent
111
- `RunEventFrame` values and streaming future frames.
112
-
113
91
  Event NDJSON lines are capped at 256 KiB. Oversized thought and tool payloads
114
92
  are reduced and remeasured; an event that still cannot fit becomes a bounded
115
93
  `oversized_event` marker. That size guard is not a redaction boundary.
@@ -120,21 +98,17 @@ are reduced and remeasured; an event that still cannot fit becomes a bounded
120
98
 
121
99
  1. The host passes an `AgentResponder` to `startTuiAdapter` and publishes the
122
100
  returned conversational base URL through its trace-source metadata.
123
- 2. A TUI or web client reads `/v1/info`, submits a turn, and consumes structured
124
- NDJSON frames until `finish` or `error`; disconnecting aborts that request.
125
- 3. Independently, the host publishes run frames to `createLiveEventBus`.
126
- 4. `startLiveAdapter` exposes the bus's bounded replay plus future frames as
127
- authenticated SSE without any turn-driving route.
101
+ 2. A TUI or web client reads `/v1/info`, submits a turn, consumes structured
102
+ NDJSON frames until `finish` or `error`, and may offer live input while that
103
+ turn is active; disconnecting the turn stream aborts the request.
128
104
 
129
105
  ### Package structure
130
106
 
131
107
  | Source module | Responsibility |
132
108
  | --- | --- |
133
- | [`tui/server.ts`](https://github.com/robertsreberski/mono-agent/blob/main/packages/operator-adapter/src/tui/server.ts) | Conversational info, turn, cancel, pending/submitted `AskUser`, history-append, attachment, and NDJSON framing routes. |
109
+ | [`tui/server.ts`](https://github.com/robertsreberski/mono-agent/blob/main/packages/operator-adapter/src/tui/server.ts) | Conversational info, turn, live-input, cancel, pending/submitted `AskUser`, history-append, attachment, and NDJSON framing routes. |
134
110
  | [`tui/config.ts`](https://github.com/robertsreberski/mono-agent/blob/main/packages/operator-adapter/src/tui/config.ts) | `tui.*` JSON/env layering, validation, and secret redaction. |
135
- | [`live/server.ts`](https://github.com/robertsreberski/mono-agent/blob/main/packages/operator-adapter/src/live/server.ts) | Read-only info and SSE event-relay routes. |
136
- | [`live/config.ts`](https://github.com/robertsreberski/mono-agent/blob/main/packages/operator-adapter/src/live/config.ts) | `live.*` JSON/env layering, validation, and secret redaction. |
137
- | [`index.ts`](https://github.com/robertsreberski/mono-agent/blob/main/packages/operator-adapter/src/index.ts) | Supported public package surface for both lanes. |
111
+ | [`index.ts`](https://github.com/robertsreberski/mono-agent/blob/main/packages/operator-adapter/src/index.ts) | Supported public package surface for the operator endpoint. |
138
112
 
139
113
  ## Public API
140
114
 
@@ -145,9 +119,6 @@ are reduced and remeasured; an event that still cannot fit becomes a bounded
145
119
  | `startTuiAdapter` | Expose a structural responder over the conversational operator protocol. |
146
120
  | `TuiAdapterInfo` | Advertise identity, model choices, model-specific effort support, and context windows. |
147
121
  | `loadTuiAdapterConfig` / `TUI_CONFIG_FIELDS` | Reuse the config-first host's `tui.*` validation and provenance metadata. |
148
- | `createLiveEventBus` | Create the bounded in-process publisher/replay bus for run frames. |
149
- | `startLiveAdapter` | Serve that bus over the read-only live SSE protocol. |
150
- | `loadLiveAdapterConfig` / `LIVE_CONFIG_FIELDS` | Reuse `live.*` config validation and provenance metadata. |
151
122
 
152
123
  <!-- public-api-inventory:start -->
153
124
  <!-- Generated by scripts/generate-public-api-docs.mjs. Do not edit by hand. -->
@@ -157,32 +128,12 @@ Every symbol exported by each public code entrypoint is listed below.
157
128
  **`@mono-agent/operator-adapter`**
158
129
 
159
130
  ```text
160
- CreateLiveEventBusOptions
161
- DEFAULT_LIVE_BASE_PATH
162
- DEFAULT_LIVE_HOST
163
- DEFAULT_LIVE_PORT
164
131
  DEFAULT_TUI_BASE_PATH
165
132
  DEFAULT_TUI_HOST
166
133
  DEFAULT_TUI_PORT
167
- LIVE_ADAPTER_INFO_SCHEMA
168
- LIVE_CONFIG_FIELDS
169
- LIVE_EVENT_SCHEMA
170
- LIVE_HEARTBEAT_INTERVAL_MS
171
- LiveAdapterConfig
172
- LiveAdapterError
173
- LiveAdapterErrorCode
174
- LiveAdapterErrorDetails
175
- LiveAdapterHandle
176
- LiveAdapterLogger
177
- LiveAdapterOptions
178
- LoadLiveAdapterConfigInput
179
134
  LoadTuiAdapterConfigInput
180
135
  MAX_FRAME_BYTES
181
- RedactedLiveAdapterConfig
182
136
  RedactedTuiAdapterConfig
183
- RunEventBus
184
- RunEventFrame
185
- RunEventSink
186
137
  TUI_CONFIG_FIELDS
187
138
  TUI_WIRE_SCHEMA
188
139
  TuiAdapterConfig
@@ -193,12 +144,8 @@ TuiAdapterInfo
193
144
  TuiAdapterLogger
194
145
  TuiAdapterOptions
195
146
  TuiAdapterStartResult
196
- createLiveEventBus
197
- loadLiveAdapterConfig
198
147
  loadTuiAdapterConfig
199
- redactLiveAdapterConfig
200
148
  redactTuiAdapterConfig
201
- startLiveAdapter
202
149
  startTuiAdapter
203
150
  ```
204
151
 
@@ -209,15 +156,14 @@ startTuiAdapter
209
156
  This adapter depends on Express plus shared `@mono-agent/agent-contracts`
210
157
  primitives. It must not depend on the agent harness, runtime adapter, operator
211
158
  surfaces, memory, observability, other communication adapters, or host/demo
212
- code. Hosts compose it with structural responders and an optional run-event bus.
159
+ code. Hosts compose it with structural responders.
213
160
 
214
161
  ## What This Package Does Not Own
215
162
 
216
163
  It does not build prompts, run models, persist conversations, discover running
217
- agents, render operator UIs, interpret live events, implement replay/config
218
- views, or own TLS/public deployment policy. Both servers bind loopback-only by
219
- default; exposing either endpoint beyond loopback is a host decision guarded by
220
- `allowNonLoopback`.
164
+ agents, render operator UIs, implement replay/config views, or own TLS/public
165
+ deployment policy. The server binds loopback-only by default; exposing it beyond
166
+ loopback is a host decision guarded by `allowNonLoopback`.
221
167
 
222
168
  ## Related Documentation
223
169
 
package/dist/index.d.ts CHANGED
@@ -5,13 +5,4 @@ export type { TuiAdapterInfo, TuiAdapterLogger, TuiAdapterOptions, TuiAdapterSta
5
5
  export { loadTuiAdapterConfig, redactTuiAdapterConfig, TUI_CONFIG_FIELDS, } from "./tui/index.js";
6
6
  export type { LoadTuiAdapterConfigInput, RedactedTuiAdapterConfig, TuiAdapterConfig, } from "./tui/index.js";
7
7
  export { DEFAULT_BASE_PATH as DEFAULT_TUI_BASE_PATH, DEFAULT_HOST as DEFAULT_TUI_HOST, DEFAULT_PORT as DEFAULT_TUI_PORT, MAX_FRAME_BYTES, TUI_WIRE_SCHEMA, } from "./tui/constants.js";
8
- export { startLiveAdapter } from "./live/index.js";
9
- export type { LiveAdapterHandle, LiveAdapterLogger, LiveAdapterOptions, } from "./live/index.js";
10
- export { LiveAdapterError } from "./live/index.js";
11
- export type { LiveAdapterErrorCode, LiveAdapterErrorDetails } from "./live/index.js";
12
- export { loadLiveAdapterConfig, redactLiveAdapterConfig, LIVE_CONFIG_FIELDS } from "./live/index.js";
13
- export type { LiveAdapterConfig, RedactedLiveAdapterConfig, LoadLiveAdapterConfigInput, } from "./live/index.js";
14
- export { DEFAULT_LIVE_BASE_PATH, DEFAULT_LIVE_HOST, DEFAULT_LIVE_PORT, LIVE_ADAPTER_INFO_SCHEMA, LIVE_HEARTBEAT_INTERVAL_MS, } from "./live/index.js";
15
- export { LIVE_EVENT_SCHEMA, createLiveEventBus } from "./live/index.js";
16
- export type { CreateLiveEventBusOptions, RunEventBus, RunEventFrame, RunEventSink, } from "./live/index.js";
17
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,IAAI,qBAAqB,EAC1C,YAAY,IAAI,gBAAgB,EAChC,YAAY,IAAI,gBAAgB,EAChC,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrG,YAAY,EACV,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACxE,YAAY,EACV,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,YAAY,GACb,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,IAAI,qBAAqB,EAC1C,YAAY,IAAI,gBAAgB,EAChC,YAAY,IAAI,gBAAgB,EAChC,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -2,9 +2,4 @@ export { TuiAdapterError } from "./tui/index.js";
2
2
  export { startTuiAdapter } from "./tui/index.js";
3
3
  export { loadTuiAdapterConfig, redactTuiAdapterConfig, TUI_CONFIG_FIELDS, } from "./tui/index.js";
4
4
  export { DEFAULT_BASE_PATH as DEFAULT_TUI_BASE_PATH, DEFAULT_HOST as DEFAULT_TUI_HOST, DEFAULT_PORT as DEFAULT_TUI_PORT, MAX_FRAME_BYTES, TUI_WIRE_SCHEMA, } from "./tui/constants.js";
5
- export { startLiveAdapter } from "./live/index.js";
6
- export { LiveAdapterError } from "./live/index.js";
7
- export { loadLiveAdapterConfig, redactLiveAdapterConfig, LIVE_CONFIG_FIELDS } from "./live/index.js";
8
- export { DEFAULT_LIVE_BASE_PATH, DEFAULT_LIVE_HOST, DEFAULT_LIVE_PORT, LIVE_ADAPTER_INFO_SCHEMA, LIVE_HEARTBEAT_INTERVAL_MS, } from "./live/index.js";
9
- export { LIVE_EVENT_SCHEMA, createLiveEventBus } from "./live/index.js";
10
5
  //# 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,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOjD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EACL,iBAAiB,IAAI,qBAAqB,EAC1C,YAAY,IAAI,gBAAgB,EAChC,YAAY,IAAI,gBAAgB,EAChC,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAMrG,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOjD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EACL,iBAAiB,IAAI,qBAAqB,EAC1C,YAAY,IAAI,gBAAgB,EAChC,YAAY,IAAI,gBAAgB,EAChC,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/tui/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAWL,KAAK,cAAc,EAKnB,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AAgBrC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAClE,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACnE;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,qEAAqE;QACrE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAClF;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,iFAAiF;IACjF,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC;CAC9C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAYD,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA+PhG"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/tui/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAeL,KAAK,cAAc,EAKnB,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AAerC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAClE,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACnE;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,qEAAqE;QACrE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAClF;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,iFAAiF;IACjF,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC;CAC9C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAaD,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAiUhG"}
@@ -1,7 +1,7 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { createServer } from "node:http";
3
- import { DEFAULT_AGENT_ATTACHMENT_MAX_BYTES, DEFAULT_AGENT_ATTACHMENT_MIME_ALLOWLIST, agentAttachmentKindFromMimeType, createChannelUserCancelReason, decodeAgentAttachmentText, isAgentResponseCancelledError, serializeAgentStreamFrame, } from "@mono-agent/agent-contracts";
4
- import { assertSafeBind, bearerTokensEqual, close, hostForUrl, isLoopbackHost, listen, normalizeOptionalString, readAuthorizationBearer, } from "@mono-agent/agent-contracts";
3
+ import { AGENT_LIVE_INPUT_MAX_CHARACTERS, DEFAULT_AGENT_ATTACHMENT_MAX_BYTES, DEFAULT_AGENT_ATTACHMENT_MIME_ALLOWLIST, BoundedHttpResponseWriter, agentAttachmentKindFromMimeType, closeServerBounded, createChannelUserCancelReason, decodeAgentAttachmentText, isAgentResponseCancelledError, serializeAgentStreamFrame, } from "@mono-agent/agent-contracts";
4
+ import { assertSafeBind, bearerTokensEqual, hostForUrl, isLoopbackHost, listen, normalizeOptionalString, readAuthorizationBearer, } from "@mono-agent/agent-contracts";
5
5
  import express, {} from "express";
6
6
  import { DEFAULT_BASE_PATH, DEFAULT_HOST, DEFAULT_PORT, MAX_FRAME_BYTES, TUI_WIRE_SCHEMA } from "./constants.js";
7
7
  import { TuiAdapterError } from "./errors.js";
@@ -9,6 +9,7 @@ const MAX_TURN_BODY_BYTES = 96 * 1024 * 1024;
9
9
  const MAX_VERBATIM_BODY_BYTES = 2 * 1024 * 1024;
10
10
  const MAX_VERBATIM_TEXT_CHARACTERS = 200_000;
11
11
  const MAX_VERBATIM_TEXT_BYTES = 1024 * 1024;
12
+ const MAX_LIVE_INPUT_BODY_BYTES = 32 * 1024;
12
13
  const MAX_WEB_ATTACHMENTS = 10;
13
14
  const MAX_WEB_ATTACHMENT_BYTES = 64 * 1024 * 1024;
14
15
  const ALLOWED_ATTACHMENT_MIME_TYPES = new Set(DEFAULT_AGENT_ATTACHMENT_MIME_ALLOWLIST.map((mimeType) => mimeType.toLowerCase()));
@@ -23,10 +24,14 @@ export async function startTuiAdapter(options) {
23
24
  assertSafeBind(host, options.allowNonLoopback === true, (boundHost) => new TuiAdapterError("unsafe_host", "TUI adapter refuses to bind a non-loopback host unless allowNonLoopback is true.", { host: boundHost }));
24
25
  const app = express();
25
26
  const server = createServer(app);
27
+ const activeTurns = new Set();
28
+ let stopping = false;
29
+ let stopPromise;
26
30
  const infoPath = `${basePath}/v1/info`;
27
31
  const turnsPath = `${basePath}/v1/turns`;
28
32
  const cancelPath = `${basePath}/v1/conversations/:conversationId/cancel`;
29
33
  const verbatimPath = `${basePath}/v1/conversations/:conversationId/verbatim`;
34
+ const liveInputPath = `${basePath}/v1/conversations/:conversationId/live-input`;
30
35
  const askPath = `${basePath}/v1/conversations/:conversationId/ask`;
31
36
  app.get(infoPath, (req, res) => {
32
37
  if (!authorize(req, res, apiKey)) {
@@ -39,6 +44,7 @@ export async function startTuiAdapter(options) {
39
44
  pid: process.pid,
40
45
  capabilities: {
41
46
  attachments: true,
47
+ ...(typeof options.responder.offerLiveInput === "function" ? { liveInput: true } : {}),
42
48
  ...(typeof options.responder.deliverVerbatim === "function" ? { historyAppend: true } : {}),
43
49
  ...(options.interaction === undefined ? {} : { askUser: true }),
44
50
  },
@@ -109,6 +115,49 @@ export async function startTuiAdapter(options) {
109
115
  res.status(200).json({ recorded: true, conversationId: body.conversationId });
110
116
  }).catch(next);
111
117
  });
118
+ app.post(liveInputPath, express.json({ limit: MAX_LIVE_INPUT_BODY_BYTES, strict: true }), (req, res, next) => {
119
+ if (!authorize(req, res, apiKey))
120
+ return;
121
+ const conversationId = normalizeOptionalString(typeof req.params.conversationId === "string" ? req.params.conversationId : undefined);
122
+ const body = typeof req.body === "object" && req.body !== null
123
+ ? req.body
124
+ : {};
125
+ if (conversationId === undefined
126
+ || typeof body.id !== "string"
127
+ || body.id.trim().length === 0
128
+ || typeof body.text !== "string"
129
+ || body.text.trim().length === 0
130
+ || body.text.length > AGENT_LIVE_INPUT_MAX_CHARACTERS
131
+ || typeof body.receivedAt !== "string"
132
+ || Number.isNaN(Date.parse(body.receivedAt))) {
133
+ next(new TuiAdapterError("invalid_request", `Live input requires id, receivedAt, and 1-${String(AGENT_LIVE_INPUT_MAX_CHARACTERS)} text characters.`));
134
+ return;
135
+ }
136
+ if (typeof options.responder.offerLiveInput !== "function") {
137
+ res.status(200).json({ status: "unavailable", reason: "unsupported" });
138
+ return;
139
+ }
140
+ let offer;
141
+ try {
142
+ offer = options.responder.offerLiveInput({
143
+ conversationId,
144
+ id: body.id,
145
+ text: body.text,
146
+ receivedAt: body.receivedAt,
147
+ });
148
+ }
149
+ catch (error) {
150
+ next(error);
151
+ return;
152
+ }
153
+ if (offer.status === "unavailable") {
154
+ res.status(200).json(offer);
155
+ return;
156
+ }
157
+ void offer.settled.then((settlement) => {
158
+ res.status(200).json(settlement);
159
+ }).catch(next);
160
+ });
112
161
  app.get(askPath, (req, res) => {
113
162
  if (!authorize(req, res, apiKey))
114
163
  return;
@@ -163,7 +212,11 @@ export async function startTuiAdapter(options) {
163
212
  noAddress: () => new TuiAdapterError("start_failed", "TUI adapter did not receive a TCP address."),
164
213
  });
165
214
  async function closeRejectedServer() {
166
- await close(server);
215
+ stopping = true;
216
+ for (const controller of activeTurns)
217
+ controller.abort(new Error("TUI adapter rejected its actual bound address."));
218
+ await closeServerBounded(server);
219
+ activeTurns.clear();
167
220
  }
168
221
  const boundNonLoopback = !isLoopbackHost(address.address);
169
222
  if (boundNonLoopback && options.allowNonLoopback !== true) {
@@ -178,6 +231,9 @@ export async function startTuiAdapter(options) {
178
231
  async function handleTurn(req, res) {
179
232
  const body = normalizeTurnBody(req.body);
180
233
  const controller = new AbortController();
234
+ activeTurns.add(controller);
235
+ if (stopping)
236
+ controller.abort(new Error("TUI adapter is stopping."));
181
237
  const requestId = randomUUID();
182
238
  const request = {
183
239
  conversationId: body.conversationId,
@@ -198,10 +254,10 @@ export async function startTuiAdapter(options) {
198
254
  controller.abort(new Error("TUI client disconnected."));
199
255
  }
200
256
  });
201
- const stream = new NdjsonMessageStream(res);
257
+ const stream = new NdjsonMessageStream(res, (error) => controller.abort(error));
202
258
  try {
203
259
  const response = await options.responder.respond(request, stream);
204
- stream.writeFrame({
260
+ await stream.writeFrame({
205
261
  kind: "finish",
206
262
  ...(response.text === undefined ? {} : { finalText: response.text }),
207
263
  ...(response.metadata === undefined ? {} : { metadata: response.metadata }),
@@ -210,14 +266,15 @@ export async function startTuiAdapter(options) {
210
266
  catch (error) {
211
267
  const cancelled = isAgentResponseCancelledError(error) || controller.signal.aborted;
212
268
  const code = codeOf(error);
213
- stream.writeFrame({
269
+ await stream.writeFrame({
214
270
  kind: "error",
215
271
  message: errorToMessage(error),
216
272
  ...(code === undefined ? {} : { code }),
217
273
  cancelled,
218
- });
274
+ }).catch(() => undefined);
219
275
  }
220
276
  finally {
277
+ activeTurns.delete(controller);
221
278
  res.end();
222
279
  }
223
280
  }
@@ -228,24 +285,33 @@ export async function startTuiAdapter(options) {
228
285
  turnsUrl: `${url}${turnsPath}`,
229
286
  host,
230
287
  port: boundPort,
231
- async stop() {
232
- await close(server);
288
+ stop() {
289
+ stopPromise ??= (async () => {
290
+ stopping = true;
291
+ for (const controller of activeTurns)
292
+ controller.abort(new Error("TUI adapter stopped."));
293
+ await closeServerBounded(server);
294
+ activeTurns.clear();
295
+ })();
296
+ return stopPromise;
233
297
  },
234
298
  };
235
299
  }
236
300
  /**
237
- * Serializes each AgentMessageStream callback as one NDJSON frame. Writes are
238
- * fire-and-forget: a slow TUI must never stall the harness, so backpressure is
239
- * absorbed by the socket buffer. Oversized event frames are reduced or replaced
240
- * with a marker to meet the exported UTF-8 byte cap; non-event frames retain
241
- * their existing behavior.
301
+ * Serializes each AgentMessageStream callback as one NDJSON frame. Writes honor
302
+ * the response's backpressure signal and carry a bounded pending-byte budget,
303
+ * so a slow client cannot grow the process heap without limit. Oversized event
304
+ * frames are reduced or replaced with a marker to meet the exported UTF-8 byte
305
+ * cap; non-event frames retain their existing behavior.
242
306
  */
243
307
  class NdjsonMessageStream {
244
308
  res;
245
- constructor(res) {
309
+ writer;
310
+ constructor(res, onWriteFailure) {
246
311
  this.res = res;
312
+ this.writer = new BoundedHttpResponseWriter(res, { onFailure: onWriteFailure });
247
313
  }
248
- writeFrame(frame) {
314
+ async writeFrame(frame) {
249
315
  if (this.res.writableEnded) {
250
316
  return;
251
317
  }
@@ -253,19 +319,19 @@ class NdjsonMessageStream {
253
319
  if (Buffer.byteLength(line, "utf8") > MAX_FRAME_BYTES && frame.kind === "event") {
254
320
  line = serializeCappedEventFrame(frame.event, line);
255
321
  }
256
- this.res.write(line);
322
+ await this.writer.write(line);
257
323
  }
258
324
  async status(text) {
259
- this.writeFrame({ kind: "status", text });
325
+ await this.writeFrame({ kind: "status", text });
260
326
  }
261
327
  async append(delta) {
262
- this.writeFrame({ kind: "append", delta });
328
+ await this.writeFrame({ kind: "append", delta });
263
329
  }
264
330
  async replace(text) {
265
- this.writeFrame({ kind: "replace", text });
331
+ await this.writeFrame({ kind: "replace", text });
266
332
  }
267
333
  async event(event) {
268
- this.writeFrame({ kind: "event", event });
334
+ await this.writeFrame({ kind: "event", event });
269
335
  }
270
336
  async finish() {
271
337
  // The terminal "finish" frame is written by handleTurn from the responder's
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/tui/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/tui/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mono-agent/operator-adapter",
3
- "version": "0.14.0",
4
- "description": "Loopback operator adapters for mono-agent: structured TUI NDJSON turns and read-only live SSE run-event streams.",
3
+ "version": "0.15.1",
4
+ "description": "Loopback operator adapter for mono-agent structured TUI and web NDJSON turns.",
5
5
  "type": "module",
6
6
  "license": "GPL-3.0-only",
7
7
  "repository": {
@@ -26,7 +26,7 @@
26
26
  "README.md"
27
27
  ],
28
28
  "dependencies": {
29
- "@mono-agent/agent-contracts": "0.14.0",
29
+ "@mono-agent/agent-contracts": "0.15.1",
30
30
  "express": "^5.1.0"
31
31
  },
32
32
  "devDependencies": {
@@ -38,6 +38,6 @@
38
38
  "scripts": {
39
39
  "build": "tsc -p tsconfig.build.json",
40
40
  "typecheck": "tsc -p tsconfig.json --noEmit",
41
- "test": "vitest run --passWithNoTests"
41
+ "test": "vitest run"
42
42
  }
43
43
  }
@@ -1,28 +0,0 @@
1
- import type { JsonEnvFieldSpec, RedactedSecretValue, SettingsJson } from "@mono-agent/agent-contracts";
2
- export interface LiveAdapterConfig {
3
- readonly enabled: boolean;
4
- readonly host: string;
5
- readonly port: number;
6
- readonly basePath: string;
7
- readonly allowNonLoopback: boolean;
8
- readonly apiKey?: string;
9
- }
10
- export interface RedactedLiveAdapterConfig extends Omit<LiveAdapterConfig, "apiKey"> {
11
- readonly apiKey: RedactedSecretValue;
12
- }
13
- export interface LoadLiveAdapterConfigInput {
14
- readonly env: Record<string, string | undefined>;
15
- readonly json?: SettingsJson;
16
- readonly jsonPath?: string;
17
- }
18
- export declare function loadLiveAdapterConfig(input: LoadLiveAdapterConfigInput): Promise<LiveAdapterConfig>;
19
- export declare function redactLiveAdapterConfig(config: LiveAdapterConfig): RedactedLiveAdapterConfig;
20
- /**
21
- * The `live` section's field registry: the single source of truth for JSON→env
22
- * layering and the app's config provenance view. The `live.apiKey` id doubles as
23
- * a cross-package contract — `@mono-agent/session-web` resolves a running
24
- * agent's key by reading this field from the agent's config file (the registry
25
- * carries no secrets).
26
- */
27
- export declare const LIVE_CONFIG_FIELDS: readonly JsonEnvFieldSpec[];
28
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/live/config.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKvG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yBAA0B,SAAQ,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IAClF,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAcD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAoB5B;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,yBAAyB,CAS5F;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAOzD,CAAC"}
@@ -1,68 +0,0 @@
1
- import { fieldSpecMappings, layerJsonOntoEnv, normalizeOptionalString, readBoolean, readInteger, readJsonSection, readSettingsJson, readString, redactedSecret, } from "@mono-agent/agent-contracts";
2
- import { DEFAULT_LIVE_BASE_PATH, DEFAULT_LIVE_HOST, DEFAULT_LIVE_PORT } from "./constants.js";
3
- import { LiveAdapterError } from "./errors.js";
4
- /**
5
- * Like the TUI endpoint (and unlike every chat channel, default OFF), the live
6
- * event relay is ON by default: it is a read-only operator surface, binds
7
- * loopback-only on an ephemeral port, and needs no credentials — so read-only
8
- * consumers such as `@mono-agent/session-web` can observe any running agent
9
- * without a per-agent config edit. Set `"live": { "enabled": false }` to opt out.
10
- */
11
- const DEFAULT_ENABLED = true;
12
- const invalidConfig = (message, details) => new LiveAdapterError("invalid_config", message, details);
13
- export async function loadLiveAdapterConfig(input) {
14
- const json = input.json ?? (input.jsonPath === undefined ? {} : (await readSettingsJson(input.jsonPath)).json);
15
- const env = layerLiveJsonOntoEnv(json, input.env);
16
- const apiKey = normalizeOptionalString(env.MONO_AGENT_LIVE_API_KEY);
17
- return {
18
- enabled: readBoolean(env.MONO_AGENT_LIVE_ENABLED, "MONO_AGENT_LIVE_ENABLED", DEFAULT_ENABLED, invalidConfig),
19
- host: readString(env.MONO_AGENT_LIVE_HOST, DEFAULT_LIVE_HOST),
20
- port: readInteger(env.MONO_AGENT_LIVE_PORT, "MONO_AGENT_LIVE_PORT", DEFAULT_LIVE_PORT, invalidConfig, {
21
- min: 0,
22
- max: 65535,
23
- }),
24
- basePath: readBasePath(env.MONO_AGENT_LIVE_BASE_PATH),
25
- allowNonLoopback: readBoolean(env.MONO_AGENT_LIVE_ALLOW_NON_LOOPBACK, "MONO_AGENT_LIVE_ALLOW_NON_LOOPBACK", false, invalidConfig),
26
- ...(apiKey === undefined ? {} : { apiKey }),
27
- };
28
- }
29
- export function redactLiveAdapterConfig(config) {
30
- return {
31
- enabled: config.enabled,
32
- host: config.host,
33
- port: config.port,
34
- basePath: config.basePath,
35
- allowNonLoopback: config.allowNonLoopback,
36
- apiKey: redactedSecret(config.apiKey),
37
- };
38
- }
39
- /**
40
- * The `live` section's field registry: the single source of truth for JSON→env
41
- * layering and the app's config provenance view. The `live.apiKey` id doubles as
42
- * a cross-package contract — `@mono-agent/session-web` resolves a running
43
- * agent's key by reading this field from the agent's config file (the registry
44
- * carries no secrets).
45
- */
46
- export const LIVE_CONFIG_FIELDS = [
47
- { id: "live.enabled", env: "MONO_AGENT_LIVE_ENABLED", kind: "boolean", fromJson: (s) => s.enabled },
48
- { id: "live.host", env: "MONO_AGENT_LIVE_HOST", fromJson: (s) => s.host },
49
- { id: "live.port", env: "MONO_AGENT_LIVE_PORT", kind: "integer", fromJson: (s) => s.port },
50
- { id: "live.basePath", env: "MONO_AGENT_LIVE_BASE_PATH", fromJson: (s) => s.basePath },
51
- { id: "live.allowNonLoopback", env: "MONO_AGENT_LIVE_ALLOW_NON_LOOPBACK", kind: "boolean", fromJson: (s) => s.allowNonLoopback },
52
- { id: "live.apiKey", env: "MONO_AGENT_LIVE_API_KEY", secret: true, fromJson: (s) => s.apiKey },
53
- ];
54
- function layerLiveJsonOntoEnv(json, env) {
55
- return layerJsonOntoEnv(env, fieldSpecMappings(readJsonSection(json, "live"), LIVE_CONFIG_FIELDS));
56
- }
57
- function readBasePath(raw) {
58
- const value = readString(raw, DEFAULT_LIVE_BASE_PATH);
59
- if (!isLiteralBasePath(value)) {
60
- throw invalidConfig("MONO_AGENT_LIVE_BASE_PATH must be an absolute literal path made of slash-separated URL path segments.");
61
- }
62
- const stripped = value.replace(/\/+$/u, "");
63
- return stripped.length === 0 ? "/" : stripped;
64
- }
65
- function isLiteralBasePath(basePath) {
66
- return basePath === "/" || /^\/[A-Za-z0-9._~-]+(?:\/[A-Za-z0-9._~-]+)*\/?$/u.test(basePath);
67
- }
68
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/live/config.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /** Loopback-only default bind host — the adapter refuses non-loopback unless explicitly allowed. */
2
- export declare const DEFAULT_LIVE_HOST = "127.0.0.1";
3
- /** Default TCP port. `0` lets the OS pick a free ephemeral port (read back from the handle's baseUrl). */
4
- export declare const DEFAULT_LIVE_PORT = 0;
5
- /** Default URL prefix under which the adapter mounts `/v1/info` and `/v1/events`. */
6
- export declare const DEFAULT_LIVE_BASE_PATH = "/live";
7
- /**
8
- * Schema tag surfaced by GET /v1/info so a discovery probe can identify the
9
- * adapter and its wire version before subscribing to the event stream.
10
- */
11
- export declare const LIVE_ADAPTER_INFO_SCHEMA = "live-adapter.v1";
12
- /**
13
- * Interval between SSE heartbeat comment lines (`: ping\n\n`). Heartbeats keep
14
- * idle proxies/clients from dropping the connection between runs; the comment
15
- * form carries no data and is ignored by SSE parsers.
16
- */
17
- export declare const LIVE_HEARTBEAT_INTERVAL_MS = 15000;
18
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/live/constants.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,0GAA0G;AAC1G,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAC"}
@@ -1,18 +0,0 @@
1
- /** Loopback-only default bind host — the adapter refuses non-loopback unless explicitly allowed. */
2
- export const DEFAULT_LIVE_HOST = "127.0.0.1";
3
- /** Default TCP port. `0` lets the OS pick a free ephemeral port (read back from the handle's baseUrl). */
4
- export const DEFAULT_LIVE_PORT = 0;
5
- /** Default URL prefix under which the adapter mounts `/v1/info` and `/v1/events`. */
6
- export const DEFAULT_LIVE_BASE_PATH = "/live";
7
- /**
8
- * Schema tag surfaced by GET /v1/info so a discovery probe can identify the
9
- * adapter and its wire version before subscribing to the event stream.
10
- */
11
- export const LIVE_ADAPTER_INFO_SCHEMA = "live-adapter.v1";
12
- /**
13
- * Interval between SSE heartbeat comment lines (`: ping\n\n`). Heartbeats keep
14
- * idle proxies/clients from dropping the connection between runs; the comment
15
- * form carries no data and is ignored by SSE parsers.
16
- */
17
- export const LIVE_HEARTBEAT_INTERVAL_MS = 15_000;
18
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/live/constants.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAE7C,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAE9C;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC"}
@@ -1,12 +0,0 @@
1
- import { CodedError } from "@mono-agent/agent-contracts";
2
- export type LiveAdapterErrorCode = "invalid_config" | "unsafe_host" | "start_failed";
3
- export interface LiveAdapterErrorDetails {
4
- readonly code?: LiveAdapterErrorCode;
5
- readonly reason?: string;
6
- readonly [key: string]: unknown;
7
- }
8
- export declare class LiveAdapterError extends CodedError<LiveAdapterErrorCode> {
9
- readonly details: LiveAdapterErrorDetails;
10
- constructor(code: LiveAdapterErrorCode, message: string, details?: LiveAdapterErrorDetails);
11
- }
12
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/live/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,MAAM,oBAAoB,GAC5B,gBAAgB,GAChB,aAAa,GACb,cAAc,CAAC;AAEnB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,oBAAoB,CAAC;IACpE,SAAiB,OAAO,EAAE,uBAAuB,CAAC;gBAGhD,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B;CAIxC"}
@@ -1,7 +0,0 @@
1
- import { CodedError } from "@mono-agent/agent-contracts";
2
- export class LiveAdapterError extends CodedError {
3
- constructor(code, message, details = {}) {
4
- super(code, message, details);
5
- }
6
- }
7
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/live/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAazD,MAAM,OAAO,gBAAiB,SAAQ,UAAgC;IAGpE,YACE,IAA0B,EAC1B,OAAe,EACf,UAAmC,EAAE;QAErC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -1,10 +0,0 @@
1
- export { startLiveAdapter } from "./server.js";
2
- export type { LiveAdapterHandle, LiveAdapterLogger, LiveAdapterOptions, } from "./server.js";
3
- export { LiveAdapterError } from "./errors.js";
4
- export type { LiveAdapterErrorCode, LiveAdapterErrorDetails } from "./errors.js";
5
- export { loadLiveAdapterConfig, redactLiveAdapterConfig, LIVE_CONFIG_FIELDS } from "./config.js";
6
- export type { LiveAdapterConfig, RedactedLiveAdapterConfig, LoadLiveAdapterConfigInput, } from "./config.js";
7
- export { DEFAULT_LIVE_BASE_PATH, DEFAULT_LIVE_HOST, DEFAULT_LIVE_PORT, LIVE_ADAPTER_INFO_SCHEMA, LIVE_HEARTBEAT_INTERVAL_MS, } from "./constants.js";
8
- export { LIVE_EVENT_SCHEMA, createLiveEventBus } from "@mono-agent/agent-contracts";
9
- export type { CreateLiveEventBusOptions, RunEventBus, RunEventFrame, RunEventSink, } from "@mono-agent/agent-contracts";
10
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/live/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EACV,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACpF,YAAY,EACV,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,YAAY,GACb,MAAM,6BAA6B,CAAC"}
@@ -1,8 +0,0 @@
1
- export { startLiveAdapter } from "./server.js";
2
- export { LiveAdapterError } from "./errors.js";
3
- export { loadLiveAdapterConfig, redactLiveAdapterConfig, LIVE_CONFIG_FIELDS } from "./config.js";
4
- export { DEFAULT_LIVE_BASE_PATH, DEFAULT_LIVE_HOST, DEFAULT_LIVE_PORT, LIVE_ADAPTER_INFO_SCHEMA, LIVE_HEARTBEAT_INTERVAL_MS, } from "./constants.js";
5
- // Re-export the shared live-event contract + the in-process bus factory (both live
6
- // in core) so consumers can build/type producers and subscribers from one import.
7
- export { LIVE_EVENT_SCHEMA, createLiveEventBus } from "@mono-agent/agent-contracts";
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/live/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAM/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAMjG,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,mFAAmF;AACnF,kFAAkF;AAClF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -1,40 +0,0 @@
1
- import { type RunEventBus } from "@mono-agent/agent-contracts";
2
- export interface LiveAdapterLogger {
3
- debug?(message: string, metadata?: Record<string, unknown>): void;
4
- info?(message: string, metadata?: Record<string, unknown>): void;
5
- warn?(message: string, metadata?: Record<string, unknown>): void;
6
- error?(message: string, metadata?: Record<string, unknown>): void;
7
- }
8
- export interface LiveAdapterOptions {
9
- /** In-process bus the adapter subscribes to and replays. Read-only — never written. */
10
- readonly bus: RunEventBus;
11
- readonly host?: string;
12
- readonly port?: number;
13
- readonly basePath?: string;
14
- readonly allowNonLoopback?: boolean;
15
- /** When set, both routes require `Authorization: Bearer <apiKey>`; a mismatch is a 401. */
16
- readonly apiKey?: string;
17
- /** Human label surfaced by GET /v1/info so a discovery probe can name the instance. */
18
- readonly label?: string;
19
- /**
20
- * Invoked when the already-listening HTTP server dies (e.g. a socket-level
21
- * failure appearing later). The hosting channel driver maps this to its
22
- * onFailure hook so the channel flips to "failed" instead of silently serving
23
- * nothing.
24
- */
25
- readonly onServerError?: (reason: string) => void;
26
- readonly logger?: LiveAdapterLogger;
27
- }
28
- export interface LiveAdapterHandle {
29
- /** SSE root: `http://<host>:<actualPort><basePath>`. `/v1/events` and `/v1/info` hang off it. */
30
- readonly baseUrl: string;
31
- /** Tear down every open SSE connection and close the HTTP server. */
32
- stop(): Promise<void>;
33
- }
34
- /**
35
- * Start a loopback, read-only SSE server that relays a {@link RunEventBus} to
36
- * operator surfaces. It observes only: there is no turn-driving endpoint and no
37
- * reference to a responder.
38
- */
39
- export declare function startLiveAdapter(options: LiveAdapterOptions): Promise<LiveAdapterHandle>;
40
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/live/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqC,KAAK,WAAW,EAAsB,MAAM,6BAA6B,CAAC;AAyBtH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAClE,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACnE;AAED,MAAM,WAAW,kBAAkB;IACjC,uFAAuF;IACvF,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,uFAAuF;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,iGAAiG;IACjG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AASD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyM9F"}
@@ -1,234 +0,0 @@
1
- import { createServer } from "node:http";
2
- import { DEFAULT_RUN_EVENT_MAX_FRAME_BYTES } from "@mono-agent/agent-contracts";
3
- import { assertSafeBind, bearerTokensEqual, close, hostForUrl, isLoopbackHost, listen, normalizeOptionalString, readAuthorizationBearer, } from "@mono-agent/agent-contracts";
4
- import express, {} from "express";
5
- import { DEFAULT_LIVE_BASE_PATH, DEFAULT_LIVE_HOST, DEFAULT_LIVE_PORT, LIVE_ADAPTER_INFO_SCHEMA, LIVE_HEARTBEAT_INTERVAL_MS, } from "./constants.js";
6
- import { LiveAdapterError } from "./errors.js";
7
- const MAX_SSE_QUEUE_FRAMES = 1_000;
8
- const FRAME_ENCODER = new TextEncoder();
9
- /**
10
- * Start a loopback, read-only SSE server that relays a {@link RunEventBus} to
11
- * operator surfaces. It observes only: there is no turn-driving endpoint and no
12
- * reference to a responder.
13
- */
14
- export async function startLiveAdapter(options) {
15
- if (options.bus === undefined || typeof options.bus.subscribe !== "function") {
16
- throw new LiveAdapterError("invalid_config", "startLiveAdapter requires a RunEventBus.");
17
- }
18
- const host = options.host ?? DEFAULT_LIVE_HOST;
19
- const port = options.port ?? DEFAULT_LIVE_PORT;
20
- const basePath = normalizeBasePath(options.basePath ?? DEFAULT_LIVE_BASE_PATH);
21
- const apiKey = normalizeOptionalString(options.apiKey);
22
- const label = normalizeOptionalString(options.label);
23
- assertSafeBind(host, options.allowNonLoopback === true, (boundHost) => new LiveAdapterError("unsafe_host", "Live adapter refuses to bind a non-loopback host unless allowNonLoopback is true.", { host: boundHost }));
24
- const app = express();
25
- const server = createServer(app);
26
- const infoPath = `${basePath}/v1/info`;
27
- const eventsPath = `${basePath}/v1/events`;
28
- const connections = new Set();
29
- app.get(infoPath, (req, res) => {
30
- if (!authorize(req, res, apiKey)) {
31
- return;
32
- }
33
- res.status(200).json({
34
- schema: LIVE_ADAPTER_INFO_SCHEMA,
35
- pid: process.pid,
36
- ...(label === undefined ? {} : { label }),
37
- });
38
- });
39
- app.get(eventsPath, (req, res) => {
40
- if (!authorize(req, res, apiKey)) {
41
- return;
42
- }
43
- handleEvents(res);
44
- });
45
- const address = await listen(server, port, host, {
46
- listenFailed: (reason) => new LiveAdapterError("start_failed", "Live adapter failed to listen.", { reason }),
47
- noAddress: () => new LiveAdapterError("start_failed", "Live adapter did not receive a TCP address."),
48
- });
49
- async function closeRejectedServer() {
50
- for (const connection of [...connections]) {
51
- connection.teardown();
52
- if (!connection.res.writableEnded) {
53
- connection.res.end();
54
- }
55
- }
56
- connections.clear();
57
- await close(server);
58
- }
59
- const boundNonLoopback = !isLoopbackHost(address.address);
60
- if (boundNonLoopback && options.allowNonLoopback !== true) {
61
- await closeRejectedServer();
62
- throw new LiveAdapterError("unsafe_host", "Live adapter resolved a loopback host to a non-loopback bind address.", { host, boundAddress: address.address, boundPort: address.port });
63
- }
64
- server.on("error", (error) => {
65
- options.onServerError?.(errorToMessage(error));
66
- });
67
- const baseUrl = `http://${hostForUrl(host)}:${address.port}${basePath}`;
68
- function handleEvents(res) {
69
- // SSE handshake. Mirror the openai-api-adapter header set; disable Nagle so
70
- // each frame flushes immediately, and flush headers before subscribing so
71
- // the client sees the stream open promptly.
72
- res.status(200);
73
- res.setHeader("Content-Type", "text/event-stream");
74
- res.setHeader("Cache-Control", "no-cache, no-transform");
75
- res.setHeader("Connection", "keep-alive");
76
- res.setHeader("X-Accel-Buffering", "no");
77
- res.socket?.setNoDelay(true);
78
- res.flushHeaders();
79
- const queue = [];
80
- let draining = false;
81
- let closed = false;
82
- let teardown;
83
- const flush = () => {
84
- while (!closed && !draining && queue.length > 0) {
85
- const payload = queue.shift();
86
- if (payload === undefined) {
87
- break;
88
- }
89
- if (res.writableEnded) {
90
- closed = true;
91
- return;
92
- }
93
- const ok = res.write(payload);
94
- if (!ok) {
95
- draining = true;
96
- res.once("drain", () => {
97
- draining = false;
98
- flush();
99
- });
100
- return;
101
- }
102
- }
103
- };
104
- const closeSlowClient = () => {
105
- if (closed) {
106
- return;
107
- }
108
- options.logger?.warn?.("Closing slow live SSE client after queue overflow.", {
109
- queuedFrames: queue.length,
110
- maxQueuedFrames: MAX_SSE_QUEUE_FRAMES,
111
- });
112
- teardown?.();
113
- closed = true;
114
- queue.length = 0;
115
- if (!res.writableEnded) {
116
- res.end();
117
- }
118
- };
119
- const enqueue = (payload) => {
120
- if (closed || res.writableEnded) {
121
- return;
122
- }
123
- queue.push(payload);
124
- if (queue.length > MAX_SSE_QUEUE_FRAMES) {
125
- closeSlowClient();
126
- return;
127
- }
128
- flush();
129
- };
130
- const write = (frame) => {
131
- const payload = serializeFrame(frame, options.logger);
132
- if (payload !== undefined) {
133
- enqueue(payload);
134
- }
135
- };
136
- // Replay the ring buffer (oldest-first) so a late joiner can reconstruct
137
- // in-flight runs, then stream every subsequent frame the same way.
138
- for (const frame of options.bus.recentFrames()) {
139
- write(frame);
140
- }
141
- if (closed) {
142
- return;
143
- }
144
- const unsubscribe = options.bus.subscribe(write);
145
- const heartbeat = setInterval(() => {
146
- if (closed || draining || res.writableEnded) {
147
- return;
148
- }
149
- enqueue(": ping\n\n");
150
- }, LIVE_HEARTBEAT_INTERVAL_MS);
151
- // Never keep the process alive solely for the heartbeat timer.
152
- heartbeat.unref?.();
153
- let torn = false;
154
- teardown = () => {
155
- if (torn) {
156
- return;
157
- }
158
- torn = true;
159
- closed = true;
160
- clearInterval(heartbeat);
161
- unsubscribe();
162
- queue.length = 0;
163
- };
164
- const connection = { res, teardown };
165
- connections.add(connection);
166
- res.once("close", () => {
167
- connections.delete(connection);
168
- teardown();
169
- });
170
- }
171
- return {
172
- baseUrl,
173
- async stop() {
174
- // SSE connections never end on their own, so `server.close()` would hang
175
- // waiting for them — tear each down and end the response first.
176
- for (const connection of [...connections]) {
177
- connection.teardown();
178
- if (!connection.res.writableEnded) {
179
- connection.res.end();
180
- }
181
- }
182
- connections.clear();
183
- await close(server);
184
- },
185
- };
186
- }
187
- function authorize(req, res, apiKey) {
188
- if (apiKey === undefined) {
189
- return true;
190
- }
191
- const presented = readAuthorizationBearer(req.header("authorization"));
192
- if (presented !== undefined && bearerTokensEqual(presented, apiKey)) {
193
- return true;
194
- }
195
- res.status(401).json({ error: { message: "Invalid API key.", code: "invalid_api_key" } });
196
- return false;
197
- }
198
- function errorToMessage(error) {
199
- if (error instanceof Error && error.message.length > 0) {
200
- return error.message;
201
- }
202
- return String(error);
203
- }
204
- function normalizeBasePath(basePath) {
205
- if (!isLiteralBasePath(basePath)) {
206
- throw new LiveAdapterError("invalid_config", "basePath must be an absolute literal path made of slash-separated URL path segments.");
207
- }
208
- return basePath.length === 1 ? "" : basePath.replace(/\/+$/u, "");
209
- }
210
- function serializeFrame(frame, logger) {
211
- try {
212
- // JSON.stringify is single-line, so the only newlines are the SSE terminator.
213
- const json = JSON.stringify(frame);
214
- if (FRAME_ENCODER.encode(json).length > DEFAULT_RUN_EVENT_MAX_FRAME_BYTES) {
215
- logger?.warn?.("Dropped oversized live event frame.", {
216
- maxFrameBytes: DEFAULT_RUN_EVENT_MAX_FRAME_BYTES,
217
- runId: "runId" in frame ? frame.runId : undefined,
218
- });
219
- return undefined;
220
- }
221
- return `data: ${json}\n\n`;
222
- }
223
- catch (error) {
224
- logger?.warn?.("Dropped unserializable live event frame.", {
225
- reason: error instanceof Error ? error.message : String(error),
226
- runId: "runId" in frame ? frame.runId : undefined,
227
- });
228
- return undefined;
229
- }
230
- }
231
- function isLiteralBasePath(basePath) {
232
- return basePath === "/" || /^\/[A-Za-z0-9._~-]+(?:\/[A-Za-z0-9._~-]+)*\/?$/u.test(basePath);
233
- }
234
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/live/server.ts"],"names":[],"mappings":"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"}