@moltzap/client 2026.803.0 → 2026.804.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/channel-base/index.d.ts +0 -2
- package/dist/channel-base/index.d.ts.map +1 -1
- package/dist/channel-base/index.js +0 -2
- package/dist/channel-base/index.js.map +1 -1
- package/dist/channel-core.d.ts +45 -19
- package/dist/channel-core.d.ts.map +1 -1
- package/dist/channel-core.js +45 -18
- package/dist/channel-core.js.map +1 -1
- package/dist/harness/client-runtime.d.ts +24 -0
- package/dist/harness/client-runtime.d.ts.map +1 -0
- package/dist/harness/client-runtime.js +107 -0
- package/dist/harness/client-runtime.js.map +1 -0
- package/dist/harness/index.d.ts +5 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +5 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/runtime.d.ts +149 -0
- package/dist/harness/runtime.d.ts.map +1 -0
- package/dist/harness/runtime.js +68 -0
- package/dist/harness/runtime.js.map +1 -0
- package/dist/harness-client.d.ts +43 -0
- package/dist/harness-client.d.ts.map +1 -0
- package/dist/harness-client.js +21 -0
- package/dist/harness-client.js.map +1 -0
- package/dist/harness-mcp-server.d.ts.map +1 -1
- package/dist/harness-mcp-server.js +107 -17
- package/dist/harness-mcp-server.js.map +1 -1
- package/dist/harness-mcp-subscription.d.ts +21 -0
- package/dist/harness-mcp-subscription.d.ts.map +1 -0
- package/dist/harness-mcp-subscription.js +324 -0
- package/dist/harness-mcp-subscription.js.map +1 -0
- package/dist/harness-mcp-wire.d.ts +9 -2
- package/dist/harness-mcp-wire.d.ts.map +1 -1
- package/dist/harness-mcp-wire.js +41 -10
- package/dist/harness-mcp-wire.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/moltzapd.d.ts +2 -1
- package/dist/moltzapd.d.ts.map +1 -1
- package/dist/moltzapd.js +19 -5
- package/dist/moltzapd.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -4
- package/dist/channel-base/reply-guard.d.ts +0 -52
- package/dist/channel-base/reply-guard.d.ts.map +0 -1
- package/dist/channel-base/reply-guard.js +0 -78
- package/dist/channel-base/reply-guard.js.map +0 -1
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/** @file Shared channel-adapter primitives for `@moltzap/client/channel-base`. */
|
|
2
2
|
/** Re-exports the public API from `../bounded-map.js`. */
|
|
3
3
|
export { BoundedMap } from "../bounded-map.js";
|
|
4
|
-
/** Re-exports the public API from `./reply-guard.js`. */
|
|
5
|
-
export { ReplyGuard } from "./reply-guard.js";
|
|
6
4
|
/** Re-exports the public API from `./format-cross-conv.js`. */
|
|
7
5
|
export { formatCrossConv, type CrossConvFormatter, type CrossConvMarkup, } from "./format-cross-conv.js";
|
|
8
6
|
/** Re-exports the public API from `./format-group-block.js`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channel-base/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,0DAA0D;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channel-base/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,0DAA0D;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,+DAA+D;AAC/D,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC;AAEhC,gEAAgE;AAChE,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AAEjC,2DAA2D;AAC3D,OAAO,EACL,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,sDAAsD;AACtD,OAAO,EACL,yBAAyB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC"}
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
// Channel adapters import per-key store primitives through channel-base.
|
|
3
3
|
/** Re-exports the public API from `../bounded-map.js`. */
|
|
4
4
|
export { BoundedMap } from "../bounded-map.js";
|
|
5
|
-
/** Re-exports the public API from `./reply-guard.js`. */
|
|
6
|
-
export { ReplyGuard } from "./reply-guard.js";
|
|
7
5
|
/** Re-exports the public API from `./format-cross-conv.js`. */
|
|
8
6
|
export { formatCrossConv, } from "./format-cross-conv.js";
|
|
9
7
|
/** Re-exports the public API from `./format-group-block.js`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channel-base/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channel-base/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,+DAA+D;AAC/D,OAAO,EACL,eAAe,GAGhB,MAAM,wBAAwB,CAAC;AAEhC,gEAAgE;AAChE,OAAO,EACL,gBAAgB,EAChB,cAAc,GAGf,MAAM,yBAAyB,CAAC;AAEjC,2DAA2D;AAC3D,OAAO,EACL,kBAAkB,GAUnB,MAAM,oBAAoB,CAAC;AAE5B,sDAAsD;AACtD,OAAO,EACL,yBAAyB,GAG1B,MAAM,eAAe,CAAC"}
|
package/dist/channel-core.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Channel core: serialized inbound turn delivery over a MoltZapService.
|
|
3
3
|
* Owns the inbound queue, same-conversation coalescing, the interceptor
|
|
4
|
-
* gate, the per-turn timeout, and channel teardown
|
|
5
|
-
* channel-core-enrichment.ts
|
|
4
|
+
* gate, the per-turn timeout, and channel teardown. Enriched adapter delivery
|
|
5
|
+
* uses channel-core-enrichment.ts; raw daemon delivery receives the coalesced
|
|
6
|
+
* Message batch without reading or committing presentation context.
|
|
6
7
|
*/
|
|
7
8
|
import { Effect } from "effect";
|
|
8
9
|
import type { ConversationId } from "@moltzap/protocol/conversation";
|
|
@@ -101,9 +102,9 @@ export interface ChannelCoreOptions {
|
|
|
101
102
|
*/
|
|
102
103
|
turnTimeoutMs?: number;
|
|
103
104
|
/**
|
|
104
|
-
* Endpoint-side gate consulted once per coalesced turn
|
|
105
|
-
*
|
|
106
|
-
*
|
|
105
|
+
* Endpoint-side gate consulted once per coalesced turn before the selected
|
|
106
|
+
* handler. The enriched path performs enrichment before the gate; the raw
|
|
107
|
+
* path deliberately does not enrich. Unset is passthrough.
|
|
107
108
|
*/
|
|
108
109
|
inboundInterceptor?: InboundInterceptor;
|
|
109
110
|
}
|
|
@@ -114,6 +115,13 @@ export interface ChannelCoreOptions {
|
|
|
114
115
|
* rejection would.
|
|
115
116
|
*/
|
|
116
117
|
export type InboundHandler<E = unknown> = (msg: EnrichedInboundMessage) => Effect.Effect<void, E>;
|
|
118
|
+
/**
|
|
119
|
+
* Handler for one coalesced raw inbound turn. The existing Message values are
|
|
120
|
+
* delivered in arrival order after the inbound interceptor admits the batch.
|
|
121
|
+
* Raw delivery does not enrich messages or read and commit presentation
|
|
122
|
+
* context.
|
|
123
|
+
*/
|
|
124
|
+
export type RawInboundHandler<E = unknown> = (messages: readonly Message[]) => Effect.Effect<void, E>;
|
|
117
125
|
/**
|
|
118
126
|
* Verdict an {@link InboundInterceptor} returns for one coalesced turn.
|
|
119
127
|
*
|
|
@@ -132,10 +140,11 @@ export type InboundInterceptDecision = {
|
|
|
132
140
|
readonly reason?: string;
|
|
133
141
|
};
|
|
134
142
|
/**
|
|
135
|
-
* Gate the embedder installs between
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
143
|
+
* Gate the embedder installs between coalescing and the selected handler. The
|
|
144
|
+
* enriched handler path performs enrichment before consulting the gate; the
|
|
145
|
+
* raw handler path does not enrich. The gate receives the newest message of
|
|
146
|
+
* the coalesced batch — a gate deciding whether a turn is still worth running
|
|
147
|
+
* cares about the latest thing said — and its verdict governs the whole batch.
|
|
139
148
|
*
|
|
140
149
|
* It runs on the single consumer fiber, so suspending inside it delays this
|
|
141
150
|
* turn and every message queued behind it, and `turnTimeoutMs` does not bound
|
|
@@ -149,10 +158,12 @@ export type InboundInterceptDecision = {
|
|
|
149
158
|
*/
|
|
150
159
|
export type InboundInterceptor = (message: Message) => Effect.Effect<InboundInterceptDecision>;
|
|
151
160
|
/**
|
|
152
|
-
* Wraps a `MoltZapService` with
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
161
|
+
* Wraps a `MoltZapService` with one-turn-at-a-time inbound delivery and a send
|
|
162
|
+
* helper. Adapter handlers receive enriched messages. A daemon handler may
|
|
163
|
+
* instead receive the admitted coalesced raw Message batch. One core per
|
|
164
|
+
* service — `getContextEntries()` is side-effectful (advances
|
|
165
|
+
* per-conversation markers), so a second core would consume entries the first
|
|
166
|
+
* expected.
|
|
156
167
|
*
|
|
157
168
|
* Turn-taking is entirely endpoint-local: the server delivers every message
|
|
158
169
|
* it accepts, and this core decides when the runtime sees them.
|
|
@@ -165,7 +176,8 @@ export type InboundInterceptor = (message: Message) => Effect.Effect<InboundInte
|
|
|
165
176
|
* participant ws as MoltZapAgentClient
|
|
166
177
|
* participant svc as MoltZapService
|
|
167
178
|
* participant core as MoltZapChannelCore
|
|
168
|
-
* participant
|
|
179
|
+
* participant raw as RawInboundHandler
|
|
180
|
+
* participant enriched as InboundHandler
|
|
169
181
|
*
|
|
170
182
|
* server->>ws: agent/message/received notification
|
|
171
183
|
* ws->>svc: subscribers.dispatch — fanout(message)
|
|
@@ -173,10 +185,17 @@ export type InboundInterceptor = (message: Message) => Effect.Effect<InboundInte
|
|
|
173
185
|
* Note over core: dedup via recordMessageIdIfNew, drop when stopped or no handler is installed, then Queue.unsafeOffer(inboundQueue, message)
|
|
174
186
|
* Note over core: consumer fiber — Queue.take
|
|
175
187
|
* Note over core: takeCoalescedConversationMessages drains same-conv backlog into one turn
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
188
|
+
* alt raw daemon handler
|
|
189
|
+
* Note over core: inboundInterceptor — deliver or drop this batch
|
|
190
|
+
* core->>raw: rawInboundHandler(messages)
|
|
191
|
+
* raw-->>core: Effect.void
|
|
192
|
+
* else enriched adapter handler
|
|
193
|
+
* Note over core: enrichMessage — sender name, conversation, context entries
|
|
194
|
+
* Note over core: inboundInterceptor — deliver or drop this turn
|
|
195
|
+
* core->>enriched: inboundHandler(enriched)
|
|
196
|
+
* enriched-->>core: Effect.void
|
|
197
|
+
* Note over core: completed handler commits presentation context
|
|
198
|
+
* end
|
|
180
199
|
* Note over core: handler exceeds turnTimeoutMs — turn abandoned, drain continues
|
|
181
200
|
* ```
|
|
182
201
|
*
|
|
@@ -208,6 +227,13 @@ export declare class MoltZapChannelCore {
|
|
|
208
227
|
* @param handler Handler invoked for matching requests.
|
|
209
228
|
*/
|
|
210
229
|
onInbound<E>(handler: InboundHandler<E>): void;
|
|
230
|
+
/**
|
|
231
|
+
* Replaces any previous handler with a raw coalesced-turn handler. The
|
|
232
|
+
* admitted batch passes the interceptor and reaches the handler without
|
|
233
|
+
* enrichment or presentation-context commits.
|
|
234
|
+
* @param handler Handler invoked for each admitted raw batch.
|
|
235
|
+
*/
|
|
236
|
+
onRawInbound<E>(handler: RawInboundHandler<E>): void;
|
|
211
237
|
onDisconnect(handler: () => void): void;
|
|
212
238
|
private fanout;
|
|
213
239
|
connect(): Effect.Effect<void, ServiceRpcError>;
|
|
@@ -250,7 +276,7 @@ export declare class MoltZapChannelCore {
|
|
|
250
276
|
/**
|
|
251
277
|
* Await the user handler, bounded by `turnTimeoutMs` when it is set.
|
|
252
278
|
* @param handler Installed inbound handler.
|
|
253
|
-
* @param
|
|
279
|
+
* @param input Value delivered to the selected handler.
|
|
254
280
|
* @param primary Message that opened this turn.
|
|
255
281
|
* @returns Whether the handler ran to completion.
|
|
256
282
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-core.d.ts","sourceRoot":"","sources":["../src/channel-core.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"channel-core.d.ts","sourceRoot":"","sources":["../src/channel-core.ts"],"names":[],"mappings":"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"}
|
package/dist/channel-core.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Channel core: serialized inbound turn delivery over a MoltZapService.
|
|
3
3
|
* Owns the inbound queue, same-conversation coalescing, the interceptor
|
|
4
|
-
* gate, the per-turn timeout, and channel teardown
|
|
5
|
-
* channel-core-enrichment.ts
|
|
4
|
+
* gate, the per-turn timeout, and channel teardown. Enriched adapter delivery
|
|
5
|
+
* uses channel-core-enrichment.ts; raw daemon delivery receives the coalesced
|
|
6
|
+
* Message batch without reading or committing presentation context.
|
|
6
7
|
*/
|
|
7
8
|
import { Cause, Chunk, Duration, Effect, Fiber, Option, Queue } from "effect";
|
|
8
9
|
import { enrichChannelMessage } from "./channel-core-enrichment.js";
|
|
@@ -31,10 +32,12 @@ function runBackgroundLog(effect) {
|
|
|
31
32
|
Effect.runFork(effect);
|
|
32
33
|
}
|
|
33
34
|
/**
|
|
34
|
-
* Wraps a `MoltZapService` with
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
* Wraps a `MoltZapService` with one-turn-at-a-time inbound delivery and a send
|
|
36
|
+
* helper. Adapter handlers receive enriched messages. A daemon handler may
|
|
37
|
+
* instead receive the admitted coalesced raw Message batch. One core per
|
|
38
|
+
* service — `getContextEntries()` is side-effectful (advances
|
|
39
|
+
* per-conversation markers), so a second core would consume entries the first
|
|
40
|
+
* expected.
|
|
38
41
|
*
|
|
39
42
|
* Turn-taking is entirely endpoint-local: the server delivers every message
|
|
40
43
|
* it accepts, and this core decides when the runtime sees them.
|
|
@@ -47,7 +50,8 @@ function runBackgroundLog(effect) {
|
|
|
47
50
|
* participant ws as MoltZapAgentClient
|
|
48
51
|
* participant svc as MoltZapService
|
|
49
52
|
* participant core as MoltZapChannelCore
|
|
50
|
-
* participant
|
|
53
|
+
* participant raw as RawInboundHandler
|
|
54
|
+
* participant enriched as InboundHandler
|
|
51
55
|
*
|
|
52
56
|
* server->>ws: agent/message/received notification
|
|
53
57
|
* ws->>svc: subscribers.dispatch — fanout(message)
|
|
@@ -55,10 +59,17 @@ function runBackgroundLog(effect) {
|
|
|
55
59
|
* Note over core: dedup via recordMessageIdIfNew, drop when stopped or no handler is installed, then Queue.unsafeOffer(inboundQueue, message)
|
|
56
60
|
* Note over core: consumer fiber — Queue.take
|
|
57
61
|
* Note over core: takeCoalescedConversationMessages drains same-conv backlog into one turn
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
+
* alt raw daemon handler
|
|
63
|
+
* Note over core: inboundInterceptor — deliver or drop this batch
|
|
64
|
+
* core->>raw: rawInboundHandler(messages)
|
|
65
|
+
* raw-->>core: Effect.void
|
|
66
|
+
* else enriched adapter handler
|
|
67
|
+
* Note over core: enrichMessage — sender name, conversation, context entries
|
|
68
|
+
* Note over core: inboundInterceptor — deliver or drop this turn
|
|
69
|
+
* core->>enriched: inboundHandler(enriched)
|
|
70
|
+
* enriched-->>core: Effect.void
|
|
71
|
+
* Note over core: completed handler commits presentation context
|
|
72
|
+
* end
|
|
62
73
|
* Note over core: handler exceeds turnTimeoutMs — turn abandoned, drain continues
|
|
63
74
|
* ```
|
|
64
75
|
*
|
|
@@ -134,7 +145,16 @@ export class MoltZapChannelCore {
|
|
|
134
145
|
* @param handler Handler invoked for matching requests.
|
|
135
146
|
*/
|
|
136
147
|
onInbound(handler) {
|
|
137
|
-
this.inboundHandler = handler;
|
|
148
|
+
this.inboundHandler = { _tag: "enriched", handler };
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Replaces any previous handler with a raw coalesced-turn handler. The
|
|
152
|
+
* admitted batch passes the interceptor and reaches the handler without
|
|
153
|
+
* enrichment or presentation-context commits.
|
|
154
|
+
* @param handler Handler invoked for each admitted raw batch.
|
|
155
|
+
*/
|
|
156
|
+
onRawInbound(handler) {
|
|
157
|
+
this.inboundHandler = { _tag: "raw", handler };
|
|
138
158
|
}
|
|
139
159
|
onDisconnect(handler) {
|
|
140
160
|
this.disconnectHandlers.push(handler);
|
|
@@ -209,15 +229,22 @@ export class MoltZapChannelCore {
|
|
|
209
229
|
runInboundTurn(primary) {
|
|
210
230
|
return Effect.gen(function* () {
|
|
211
231
|
const messages = yield* this.takeCoalescedConversationMessages(primary);
|
|
212
|
-
const
|
|
213
|
-
if (
|
|
232
|
+
const registered = this.inboundHandler;
|
|
233
|
+
if (registered === null) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (registered._tag === "raw") {
|
|
237
|
+
if (!(yield* this.interceptTurn(messages))) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
yield* this.awaitHandlerTurn(registered.handler, messages, primary);
|
|
214
241
|
return;
|
|
215
242
|
}
|
|
216
243
|
const { enriched, commitContext } = yield* MoltZapChannelCore.enrichMessage(this.service, messages);
|
|
217
244
|
if (!(yield* this.interceptTurn(messages))) {
|
|
218
245
|
return;
|
|
219
246
|
}
|
|
220
|
-
const completed = yield* this.awaitHandlerTurn(handler, enriched, primary);
|
|
247
|
+
const completed = yield* this.awaitHandlerTurn(registered.handler, enriched, primary);
|
|
221
248
|
// Context markers advance only for a turn the handler finished. A
|
|
222
249
|
// dropped or abandoned one leaves its entries for the next turn.
|
|
223
250
|
if (completed && commitContext) {
|
|
@@ -275,15 +302,15 @@ export class MoltZapChannelCore {
|
|
|
275
302
|
/**
|
|
276
303
|
* Await the user handler, bounded by `turnTimeoutMs` when it is set.
|
|
277
304
|
* @param handler Installed inbound handler.
|
|
278
|
-
* @param
|
|
305
|
+
* @param input Value delivered to the selected handler.
|
|
279
306
|
* @param primary Message that opened this turn.
|
|
280
307
|
* @returns Whether the handler ran to completion.
|
|
281
308
|
*/
|
|
282
|
-
awaitHandlerTurn(handler,
|
|
309
|
+
awaitHandlerTurn(handler, input, primary) {
|
|
283
310
|
// The handler is user code returning an Effect — yield it directly so its
|
|
284
311
|
// typed error channel propagates to the consumer fiber, which logs and
|
|
285
312
|
// continues. Awaiting it inline preserves arrival-order delivery.
|
|
286
|
-
const turn = handler(
|
|
313
|
+
const turn = handler(input);
|
|
287
314
|
const timeoutMs = this.turnTimeoutMs;
|
|
288
315
|
if (timeoutMs === undefined) {
|
|
289
316
|
return turn.pipe(Effect.as(true));
|
package/dist/channel-core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-core.js","sourceRoot":"","sources":["../src/channel-core.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"channel-core.js","sourceRoot":"","sources":["../src/channel-core.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAQ9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAsKpE,SAAS,YAAY,CAAC,GAAY;IAChC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO;YACL,SAAS,EAAE,GAAG,CAAC,IAAI;YACnB,YAAY,EAAE,GAAG,CAAC,OAAO;YACzB,UAAU,EAAE,GAAG,CAAC,KAAK;SACtB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,OAAe,EACf,WAAoC;IAEpC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAe,EACf,WAAoC;IAEpC,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,cAAc,CACrB,OAAe,EACf,WAAoC;IAEpC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,gBAAgB,CAAC,MAA2B;IACnD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,OAAO,kBAAkB;IACZ,OAAO,CAAiB;IACxB,aAAa,CAAU;IACvB,kBAAkB,CAAsB;IACjD,SAAS,GAAG,KAAK,CAAC;IAC1B,2EAA2E;IAC3E,0EAA0E;IAC1E,kEAAkE;IAClE,wEAAwE;IACxE,2EAA2E;IAC3E,2EAA2E;IACnE,OAAO,GAAG,KAAK,CAAC;IAChB,cAAc,GAAoC,IAAI,CAAC;IAE/D;;;;OAIG;IACc,YAAY,GAAyB,MAAM,CAAC,OAAO,CAClE,KAAK,CAAC,SAAS,EAAW,CAC3B,CAAC;IACe,aAAa,CAA2B;IACxC,kBAAkB,GAAsB,EAAE,CAAC;IAE5D,YAAY,IAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEO,uBAAuB;QAC7B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACzC,qEAAqE;YACrE,iEAAiE;YACjE,wEAAwE;YACxE,uEAAuE;YACvE,gEAAgE;YAChE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAChC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACzB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAC/B,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CACvC,CACF,CACF,CACF,CACF,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEO,iBAAiB,CACvB,OAAgB,EAChB,KAA2B;QAE3B,OAAO,cAAc,CAAC,4CAA4C,EAAE;YAClE,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YAChC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;IAEO,2BAA2B;QACjC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,SAAS,CAAI,OAA0B;QACrC,IAAI,CAAC,cAAc,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAI,OAA6B;QAC3C,IAAI,CAAC,cAAc,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,OAAmB;QAC9B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAEO,MAAM,CAAC,QAAmC,EAAE,KAAa;QAC/D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,CAAC,EAAE,CAAC;YACN,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,gBAAgB,CACd,cAAc,CAAC,uBAAuB,KAAK,gBAAgB,EAAE;oBAC3D,GAAG;oBACH,KAAK;iBACN,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,oEAAoE;QACpE,sEAAsE;QACtE,uEAAuE;QACvE,4DAA4D;QAC5D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,UAAU,CACtB,iHAAiH,CAClH,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAChC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CACd,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC,CACH,EACD,MAAM,CAAC,MAAM,CACd,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,UAAU;QACR,OAAO,MAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,kEAAkE;YAClE,gEAAgE;YAChE,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC3C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACrB,KAAK,CAAC,CAAC,YAAY,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE;gBAC1C,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,SAAS,CACP,cAA8B,EAC9B,IAAY;QAEZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEO,cAAc,CAAC,OAAgB;QACrC,OAAO,MAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;YACvC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBAC3C,OAAO;gBACT,CAAC;gBACD,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAC/B,KAAK,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC3C,OAAO;YACT,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAC5C,UAAU,CAAC,OAAO,EAClB,QAAQ,EACR,OAAO,CACR,CAAC;YACF,kEAAkE;YAClE,iEAAiE;YACjE,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;gBAC/B,aAAa,EAAE,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,aAAa,CACnB,QAA4B;QAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC5C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM;QACV,uEAAuE,CAAC,QAAQ,CAC9E,QAAQ,CAAC,MAAM,GAAG,CAAC,CACnB,CAAC;QACL,sEAAsE;QACtE,wEAAwE;QACxE,gDAAgD;QAChD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACnD,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC1B,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAC9C,EACD,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7B,qEAAqE;QACrE,sEAAsE;QACtE,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CACpE,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,sBAAsB,CAC5B,MAAe,EACf,QAAkC;QAElC,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,cAAc,CACnB,yDAAyD,EACzD;YACE,SAAS,EAAE,MAAM,CAAC,EAAE;YACpB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtE,CACF,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEO,qBAAqB,CAC3B,MAAe,EACf,KAA2B;QAE3B,OAAO,gBAAgB,CACrB,mEAAmE,EACnE;YACE,SAAS,EAAE,MAAM,CAAC,EAAE;YACpB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YAChC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACrC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,gBAAgB,CACtB,OAAmD,EACnD,KAAQ,EACR,OAAgB;QAEhB,0EAA0E;QAC1E,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;QACrC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CACd,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAChD,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YACrB,CAAC,CAAC,gBAAgB,CACd,0DAA0D,EAC1D;gBACE,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,SAAS;aACV,CACF;YACH,CAAC,CAAC,MAAM,CAAC,IAAI,CAChB,EACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAC1B,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,iCAAiC,CACvC,OAAgB;QAEhB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACtB,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAClC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CACjD,CAAC;YACF,MAAM,gBAAgB,GAAc,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAc,EAAE,CAAC;YAChC,KAAK,MAAM,aAAa,IAAI,MAAM,EAAE,CAAC;gBACnC,IAAI,aAAa,CAAC,cAAc,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC;oBAC5D,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;YACD,KAAK,MAAM,gBAAgB,IAAI,SAAS,EAAE,CAAC;gBACzC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,gBAAgB,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAClB,OAAuB,EACvB,iBAA+C;QAK/C,OAAO,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC1D,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Effect, Stream, type Scope } from "effect";
|
|
2
|
+
import type { ConversationId } from "@moltzap/protocol/conversation";
|
|
3
|
+
import { type HarnessTurnEvent } from "./runtime.js";
|
|
4
|
+
interface HarnessClientInternalOptions {
|
|
5
|
+
readonly url: string;
|
|
6
|
+
}
|
|
7
|
+
interface HarnessTurnInternal {
|
|
8
|
+
readonly conversationId: ConversationId;
|
|
9
|
+
readonly messages: HarnessTurnEvent["messages"];
|
|
10
|
+
readonly reply: (payload: string) => Effect.Effect<void, Error>;
|
|
11
|
+
}
|
|
12
|
+
interface HarnessClientInternalService {
|
|
13
|
+
readonly turns: Stream.Stream<HarnessTurnInternal, Error>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Acquires the private official-SDK adapter behind the public HarnessClient.
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
* @param options Package-owned loopback endpoint options.
|
|
20
|
+
* @returns The scoped structural service consumed by the public facade.
|
|
21
|
+
*/
|
|
22
|
+
export declare const acquireHarnessClientInternal: (options: HarnessClientInternalOptions) => Effect.Effect<HarnessClientInternalService, Error, Scope.Scope>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=client-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-runtime.d.ts","sourceRoot":"","sources":["../../src/harness/client-runtime.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAS,MAAM,EAAQ,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAQL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAEtB,UAAU,4BAA4B;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CACjE;AAED,UAAU,4BAA4B;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;CAC3D;AAsHD;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,YAC9B,4BAA4B,KACpC,MAAM,CAAC,MAAM,CAAC,4BAA4B,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAkDf,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/* eslint-disable agent-code-guard/promise-type, @typescript-eslint/no-invalid-void-type -- The official MCP client lifecycle is Promise-native and is converted to Effect at this private adapter edge. */
|
|
2
|
+
import { Client, fromJsonSchema, StreamableHTTPClientTransport, } from "@modelcontextprotocol/client";
|
|
3
|
+
import { Effect, Queue, Stream, Take } from "effect";
|
|
4
|
+
import packageJson from "../../package.json" with { type: "json" };
|
|
5
|
+
import { decodeHarnessTurnEvent, HARNESS_EVENTS_EXTENSION, HARNESS_REPLY_TOOL, HARNESS_TURN_READY_FILTER, HARNESS_TURN_READY_NOTIFICATION, harnessReplyRequestMeta, harnessTurnConversationId, } from "./runtime.js";
|
|
6
|
+
const MODERN_PROTOCOL_VERSION = "2026-07-28";
|
|
7
|
+
const CLIENT_IMPLEMENTATION = {
|
|
8
|
+
name: "moltzap-harness-client",
|
|
9
|
+
version: packageJson.version,
|
|
10
|
+
};
|
|
11
|
+
const TURN_READY_FILTER = {
|
|
12
|
+
[HARNESS_TURN_READY_FILTER]: true,
|
|
13
|
+
};
|
|
14
|
+
const unknownNotificationParams = fromJsonSchema({});
|
|
15
|
+
const asError = (cause) => cause instanceof Error ? cause : new Error(String(cause));
|
|
16
|
+
const closeQuietly = (close) => Effect.tryPromise({ try: close, catch: asError }).pipe(Effect.ignore);
|
|
17
|
+
const turnPayload = (params) => {
|
|
18
|
+
if (typeof params !== "object" || params === null || Array.isArray(params)) {
|
|
19
|
+
return params;
|
|
20
|
+
}
|
|
21
|
+
const payload = { ...params };
|
|
22
|
+
Reflect.deleteProperty(payload, "_meta");
|
|
23
|
+
return payload;
|
|
24
|
+
};
|
|
25
|
+
const callReply = (client, originatingConversationId, payload) => Effect.tryPromise({
|
|
26
|
+
try: (signal) => client.callTool({
|
|
27
|
+
name: HARNESS_REPLY_TOOL,
|
|
28
|
+
arguments: { payload },
|
|
29
|
+
_meta: harnessReplyRequestMeta(originatingConversationId),
|
|
30
|
+
}, { signal }),
|
|
31
|
+
catch: asError,
|
|
32
|
+
}).pipe(Effect.flatMap((result) => {
|
|
33
|
+
if (result.isError === true) {
|
|
34
|
+
// eslint-disable-next-line agent-code-guard/effect-error-erasure -- The raw MCP failure has no portable domain-error contract, so this boundary exposes an ordinary Error.
|
|
35
|
+
return Effect.fail(new Error("Harness reply tool failed"));
|
|
36
|
+
}
|
|
37
|
+
return Effect.void;
|
|
38
|
+
}), Effect.asVoid);
|
|
39
|
+
const makeTurn = (client, event) => {
|
|
40
|
+
const originatingConversationId = harnessTurnConversationId(event);
|
|
41
|
+
return {
|
|
42
|
+
conversationId: originatingConversationId,
|
|
43
|
+
messages: event.messages,
|
|
44
|
+
reply: (payload) => callReply(client, originatingConversationId, payload),
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
const connect = (client, url) => Effect.tryPromise({
|
|
48
|
+
try: (signal) => client.connect(new StreamableHTTPClientTransport(new URL(url)), {
|
|
49
|
+
signal,
|
|
50
|
+
}),
|
|
51
|
+
catch: asError,
|
|
52
|
+
}).pipe(Effect.onError(() => closeQuietly(() => client.close())), Effect.as(client));
|
|
53
|
+
const listen = (client) => Effect.tryPromise({
|
|
54
|
+
try: (signal) => client.listen(TURN_READY_FILTER, { signal }),
|
|
55
|
+
catch: asError,
|
|
56
|
+
});
|
|
57
|
+
const verifyServerExtension = (client) => {
|
|
58
|
+
const extensions = client.getServerCapabilities()?.extensions;
|
|
59
|
+
if (extensions !== undefined &&
|
|
60
|
+
Object.hasOwn(extensions, HARNESS_EVENTS_EXTENSION)) {
|
|
61
|
+
return Effect.void;
|
|
62
|
+
}
|
|
63
|
+
// eslint-disable-next-line agent-code-guard/effect-error-erasure -- An incompatible MCP peer is rejected at the public client boundary, whose existing error contract is Error.
|
|
64
|
+
return Effect.fail(new Error(`Harness MCP server does not advertise ${HARNESS_EVENTS_EXTENSION}`));
|
|
65
|
+
};
|
|
66
|
+
const observeSubscription = (subscription, queue) => Effect.tryPromise({
|
|
67
|
+
try: () => subscription.closed,
|
|
68
|
+
catch: asError,
|
|
69
|
+
}).pipe(
|
|
70
|
+
// The official MCP subscription contract states that `closed` never rejects.
|
|
71
|
+
Effect.orDie, Effect.flatMap(() => Queue.offer(queue, Take.end)), Effect.asVoid);
|
|
72
|
+
/**
|
|
73
|
+
* Acquires the private official-SDK adapter behind the public HarnessClient.
|
|
74
|
+
*
|
|
75
|
+
* @internal
|
|
76
|
+
* @param options Package-owned loopback endpoint options.
|
|
77
|
+
* @returns The scoped structural service consumed by the public facade.
|
|
78
|
+
*/
|
|
79
|
+
export const acquireHarnessClientInternal = (options) => Effect.gen(function* () {
|
|
80
|
+
const queue = yield* Queue.unbounded();
|
|
81
|
+
yield* Effect.addFinalizer(() => Queue.shutdown(queue));
|
|
82
|
+
const client = new Client(CLIENT_IMPLEMENTATION, {
|
|
83
|
+
capabilities: {
|
|
84
|
+
extensions: { [HARNESS_EVENTS_EXTENSION]: {} },
|
|
85
|
+
},
|
|
86
|
+
versionNegotiation: {
|
|
87
|
+
mode: { pin: MODERN_PROTOCOL_VERSION },
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
client.setNotificationHandler(HARNESS_TURN_READY_NOTIFICATION, { params: unknownNotificationParams }, (params) => Effect.runPromise(decodeHarnessTurnEvent(turnPayload(params)).pipe(Effect.matchEffect({
|
|
91
|
+
onFailure: (cause) => Queue.offer(queue, Take.fail(asError(cause))),
|
|
92
|
+
onSuccess: (event) => Queue.offer(queue, Take.of(makeTurn(client, event))),
|
|
93
|
+
}), Effect.asVoid)));
|
|
94
|
+
yield* (
|
|
95
|
+
// eslint-disable-next-line agent-code-guard/acquire-release-requires-scope -- The internal acquisition retains Scope in its return type and the public facade supplies that enclosing scope.
|
|
96
|
+
Effect.acquireRelease(connect(client, options.url), () => closeQuietly(() => client.close())));
|
|
97
|
+
yield* verifyServerExtension(client);
|
|
98
|
+
const subscription = yield* (
|
|
99
|
+
// eslint-disable-next-line agent-code-guard/acquire-release-requires-scope -- The internal acquisition retains Scope in its return type and the public facade supplies that enclosing scope.
|
|
100
|
+
Effect.acquireRelease(listen(client), (subscription) => closeQuietly(() => subscription.close())));
|
|
101
|
+
yield* Effect.forkScoped(observeSubscription(subscription, queue));
|
|
102
|
+
return {
|
|
103
|
+
turns: Stream.fromQueue(queue).pipe(Stream.flattenTake),
|
|
104
|
+
};
|
|
105
|
+
}).pipe(Effect.withSpan("acquireHarnessClient"));
|
|
106
|
+
/* eslint-enable agent-code-guard/promise-type, @typescript-eslint/no-invalid-void-type -- Restore strict defaults after the Promise-native MCP adapter edge. */
|
|
107
|
+
//# sourceMappingURL=client-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-runtime.js","sourceRoot":"","sources":["../../src/harness/client-runtime.ts"],"names":[],"mappings":"AAAA,2MAA2M;AAC3M,OAAO,EACL,MAAM,EACN,cAAc,EACd,6BAA6B,GAI9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAc,MAAM,QAAQ,CAAC;AACjE,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEnE,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,uBAAuB,EACvB,yBAAyB,GAE1B,MAAM,cAAc,CAAC;AAgBtB,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAC7C,MAAM,qBAAqB,GAAG;IAC5B,IAAI,EAAE,wBAAwB;IAC9B,OAAO,EAAE,WAAW,CAAC,OAAO;CACpB,CAAC;AAEX,MAAM,iBAAiB,GAEnB;IACF,CAAC,yBAAyB,CAAC,EAAE,IAAI;CAClC,CAAC;AAEF,MAAM,yBAAyB,GAAG,cAAc,CAAC,EAA2B,CAAC,CAAC;AAE9E,MAAM,OAAO,GAAG,CAAC,KAAc,EAAS,EAAE,CACxC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5D,MAAM,YAAY,GAAG,CAAC,KAA0B,EAAuB,EAAE,CACvE,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,GAAG,CAAC,MAAe,EAAW,EAAE;IAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACvD,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAChB,MAAc,EACd,yBAAyC,EACzC,OAAe,EACa,EAAE,CAC9B,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CACd,MAAM,CAAC,QAAQ,CACb;QACE,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,EAAE,OAAO,EAAE;QACtB,KAAK,EAAE,uBAAuB,CAAC,yBAAyB,CAAC;KAC1D,EACD,EAAE,MAAM,EAAE,CACX;IACH,KAAK,EAAE,OAAO;CACf,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;IACxB,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5B,2KAA2K;QAC3K,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC,EACF,MAAM,CAAC,MAAM,CACd,CAAC;AAEJ,MAAM,QAAQ,GAAG,CACf,MAAc,EACd,KAAuB,EACF,EAAE;IACvB,MAAM,yBAAyB,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACnE,OAAO;QACL,cAAc,EAAE,yBAAyB;QACzC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,yBAAyB,EAAE,OAAO,CAAC;KAC1E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,GAAW,EAAgC,EAAE,CAC5E,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CACd,MAAM,CAAC,OAAO,CAAC,IAAI,6BAA6B,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;QAC9D,MAAM;KACP,CAAC;IACJ,KAAK,EAAE,OAAO;CACf,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EACxD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAClB,CAAC;AAEJ,MAAM,MAAM,GAAG,CAAC,MAAc,EAAyC,EAAE,CACvE,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAAC;IAC7D,KAAK,EAAE,OAAO;CACf,CAAC,CAAC;AAEL,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAA8B,EAAE;IAC3E,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,UAAU,CAAC;IAC9D,IACE,UAAU,KAAK,SAAS;QACxB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,wBAAwB,CAAC,EACnD,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,gLAAgL;IAChL,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,KAAK,CACP,yCAAyC,wBAAwB,EAAE,CACpE,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,YAA6B,EAC7B,KAAyD,EACpC,EAAE,CACvB,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM;IAC9B,KAAK,EAAE,OAAO;CACf,CAAC,CAAC,IAAI;AACL,6EAA6E;AAC7E,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAClD,MAAM,CAAC,MAAM,CACd,CAAC;AAEJ;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,OAAqC,EAC4B,EAAE,CACnE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GACT,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,EAAyC,CAAC;IAClE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,EAAE;QAC/C,YAAY,EAAE;YACZ,UAAU,EAAE,EAAE,CAAC,wBAAwB,CAAC,EAAE,EAAE,EAAE;SAC/C;QACD,kBAAkB,EAAE;YAClB,IAAI,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE;SACvC;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,sBAAsB,CAC3B,+BAA+B,EAC/B,EAAE,MAAM,EAAE,yBAAyB,EAAE,EACrC,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,UAAU,CACf,sBAAsB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,WAAW,CAAC;QACjB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;KACvD,CAAC,EACF,MAAM,CAAC,MAAM,CACd,CACF,CACJ,CAAC;IAEF,KAAK,CAAC,CAAC;IACL,6LAA6L;IAC7L,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CACvD,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CACnC,CACF,CAAC;IACF,KAAK,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC;IAC1B,6LAA6L;IAC7L,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CACrD,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CACzC,CACF,CAAC;IACF,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnE,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;KACxD,CAAC;AACJ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAEnD,gKAAgK"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** @internal */
|
|
2
|
+
export { acquireHarnessClientInternal } from "./client-runtime.js";
|
|
3
|
+
/** @internal */
|
|
4
|
+
export { decodeHarnessReplyRoute, HARNESS_EVENTS_EXTENSION, HARNESS_REPLY_TOOL, HARNESS_TURN_READY_FILTER, HARNESS_TURN_READY_NOTIFICATION, harnessReplyInputJsonSchema, harnessReplyResultJsonSchema, type HarnessReplyInput, type HarnessReplyResult, type HarnessReplyRoute, type HarnessTurnEvent, } from "./runtime.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,gBAAgB;AAChB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** @internal */
|
|
2
|
+
export { acquireHarnessClientInternal } from "./client-runtime.js";
|
|
3
|
+
/** @internal */
|
|
4
|
+
export { decodeHarnessReplyRoute, HARNESS_EVENTS_EXTENSION, HARNESS_REPLY_TOOL, HARNESS_TURN_READY_FILTER, HARNESS_TURN_READY_NOTIFICATION, harnessReplyInputJsonSchema, harnessReplyResultJsonSchema, } from "./runtime.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,gBAAgB;AAChB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,GAK7B,MAAM,cAAc,CAAC"}
|