@plurnk/plurnk-agui 1.10.1 → 1.12.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/Portal.js CHANGED
@@ -1,71 +1,129 @@
1
1
  // {§agui-daemon-client} The in-process module's orchestration engine composes the seam +
2
2
  // the render router + the HITL core into the worker flow: subscribe ONCE to the event
3
- // source, fan each event to the bound thread for its workspace, drive/cancel loops via
3
+ // source, route each event to the Run that owns its worker/loop, drive/cancel loops via
4
4
  // the seam, and route standard resume entries to resolveProposal. Transport-agnostic —
5
5
  // the HTTP/SSE listener (the outward edge) and workspace establishment (workspace-lifecycle
6
6
  // hook, pending) wrap this; the engine is testable against a mock seam today.
7
+ var _a;
7
8
  import EventRouter from "./EventRouter.js";
8
9
  import ProposalHitl, {} from "./ProposalHitl.js";
9
10
  import { EventType } from "./types.js";
10
- export default class Portal {
11
+ class Portal {
11
12
  #seam;
12
- // Broadcast semantics (the WS wire fanned to every connection): a workspace fans to
13
- // all its open AG-UI Runs — concurrent action Runs must not clobber each other's gates.
13
+ // A workspace may have several simultaneous AG-UI Runs. The worker/loop carried by
14
+ // each notification selects its owner; a Run is not a second broadcast subscription.
14
15
  #threads = new Map();
15
16
  #hitl;
16
17
  #activeInterrupts = new Map();
18
+ #continuations = new Map();
19
+ #deliveryTails = new Map();
17
20
  #off = null;
18
21
  constructor(seam) {
19
22
  this.#seam = seam;
20
- this.#hitl = new ProposalHitl(seam, (workspaceId, workerId, loopId, batch) => this.#emitHitl(workspaceId, workerId, loopId, batch));
23
+ this.#hitl = new ProposalHitl(seam, (workspaceId, delivery) => this.#routeHitl(workspaceId, delivery));
21
24
  }
22
- // One subscription for the whole module: render each event to its workspace's thread.
25
+ // One subscription for the whole module: render each event only to its owning Run.
23
26
  start() {
24
27
  this.#hitl.start();
25
28
  this.#off = this.#seam.subscribeToEvents((workspaceId, method, params) => {
26
29
  if (workspaceId === null)
27
30
  return; // global (workspace/created) handled out-of-band
28
- const entryId = params.entryId;
29
- for (const thread of this.#threads.get(workspaceId) ?? []) {
30
- if (method === "loop/terminated") {
31
- const loopId = params.loopId;
32
- if (typeof loopId !== "number")
33
- continue;
34
- if (thread.loopId === null) {
35
- thread.pendingTerminations.push(params);
36
- continue;
37
- }
38
- if (thread.loopId !== loopId)
39
- continue;
40
- }
41
- if (method === "stream/event" && typeof entryId === "number")
42
- thread.openStreams.add(entryId);
43
- if (method === "stream/concluded" && typeof entryId === "number")
44
- thread.openStreams.delete(entryId);
45
- const out = thread.router.route(method, params);
46
- if (out.length > 0)
47
- thread.emit(out);
48
- if (method === "stream/concluded" && thread.openStreams.size === 0 && thread.deferredFinish !== null) {
49
- const deferred = thread.deferredFinish;
50
- thread.deferredFinish = null;
51
- this.#finishThread(thread, deferred);
52
- }
31
+ // {§agui-proposal-resolve} A descendant gate may require asynchronous
32
+ // topology lookup. A later terminal cannot close its controlling Run first.
33
+ if (method === "loop/terminated" && this.#deliveryTails.has(workspaceId)) {
34
+ this.#enqueueDelivery(workspaceId, async () => this.#routeNotification(workspaceId, method, params));
35
+ return;
53
36
  }
37
+ this.#routeNotification(workspaceId, method, params);
54
38
  });
55
39
  }
40
+ #routeNotification(workspaceId, method, params) {
41
+ const entryId = params.entryId;
42
+ for (const thread of this.#threads.get(workspaceId) ?? []) {
43
+ if (!_a.#ownsNotification(thread, method, params))
44
+ continue;
45
+ if (method === "loop/terminated") {
46
+ const loopId = params.loopId;
47
+ if (typeof loopId !== "number")
48
+ continue;
49
+ if (thread.loopId === null) {
50
+ thread.pendingTerminations.push(params);
51
+ continue;
52
+ }
53
+ if (thread.loopId !== loopId)
54
+ continue;
55
+ }
56
+ if (method === "stream/event" && typeof entryId === "number")
57
+ thread.openStreams.add(entryId);
58
+ if (method === "stream/concluded" && typeof entryId === "number")
59
+ thread.openStreams.delete(entryId);
60
+ const out = thread.router.route(method, params);
61
+ if (out.length > 0)
62
+ thread.emit(out);
63
+ if (method === "stream/concluded" && thread.openStreams.size === 0 && thread.deferredFinish !== null) {
64
+ const deferred = thread.deferredFinish;
65
+ thread.deferredFinish = null;
66
+ this.#finishThread(thread, deferred);
67
+ }
68
+ }
69
+ }
70
+ static #ownsNotification(thread, method, params) {
71
+ if (thread.notificationScope === "result")
72
+ return false;
73
+ const payload = params;
74
+ const owns = (workerId, loopId) => typeof workerId === "number"
75
+ && workerId === thread.workerId
76
+ && (thread.loopId === null || typeof loopId !== "number" || loopId === thread.loopId);
77
+ switch (method) {
78
+ case "log/entry": return owns(payload.entry?.worker_id, payload.entry?.loop_id);
79
+ case "loop/terminated":
80
+ case "loop/packet":
81
+ case "reasoning/event": return owns(payload.workerId, payload.loopId);
82
+ case "notice/event": return payload.workerId === null
83
+ ? thread.notificationScope === "conversation"
84
+ : owns(payload.workerId, payload.loopId);
85
+ case "stream/event":
86
+ case "stream/concluded": return owns(payload.workerId);
87
+ case "workspace/branch-batch": return thread.notificationScope === "conversation"
88
+ && (typeof payload.parentWorkerId !== "number" || payload.parentWorkerId === thread.workerId);
89
+ default: return false;
90
+ }
91
+ }
56
92
  stop() {
57
93
  this.#hitl.stop();
58
94
  this.#off?.();
59
95
  this.#off = null;
96
+ this.#continuations.clear();
60
97
  }
61
- #emitInterrupt(workspaceId, workerId, loopId, events) {
62
- if (events.length === 0)
63
- return;
98
+ #exactThreads(workspaceId, binding) {
64
99
  const workerThreads = [...(this.#threads.get(workspaceId) ?? [])]
65
- .filter((thread) => thread.workerId === workerId);
66
- const loopThreads = workerThreads.filter((thread) => thread.loopId === loopId);
67
- for (const thread of loopThreads.length > 0 ? loopThreads : workerThreads)
68
- thread.emit(events);
100
+ .filter((thread) => thread.notificationScope !== "result" && thread.workerId === binding.workerId);
101
+ const loopThreads = workerThreads.filter((thread) => thread.loopId === binding.loopId);
102
+ return loopThreads.length > 0 ? loopThreads : workerThreads;
103
+ }
104
+ #emitDelivery(workspaceId, delivery, threads) {
105
+ if (delivery.batch.events.length === 0)
106
+ return;
107
+ for (const thread of threads) {
108
+ const controlLoopId = thread.loopId
109
+ ?? (thread.workerId === delivery.workerId ? delivery.loopId : null);
110
+ if (controlLoopId === null) {
111
+ throw new Error(`worker ${thread.workerId} cannot control worker ${delivery.workerId} without an active loop`);
112
+ }
113
+ const state = thread.router.continuation();
114
+ for (const interrupt of delivery.batch.interrupts) {
115
+ const key = interrupt.toolCallId ?? interrupt.id;
116
+ this.#continuations.set(key, {
117
+ workspaceId,
118
+ gate: { workerId: delivery.workerId, loopId: delivery.loopId },
119
+ control: { workerId: thread.workerId, loopId: controlLoopId },
120
+ threadId: thread.threadId,
121
+ notificationScope: thread.notificationScope,
122
+ state,
123
+ });
124
+ }
125
+ thread.emit(delivery.batch.events);
126
+ }
69
127
  }
70
128
  #withHitl(batch, emit) {
71
129
  for (const interrupt of batch.interrupts) {
@@ -80,24 +138,125 @@ export default class Portal {
80
138
  }
81
139
  }
82
140
  }
83
- #emitHitl(workspaceId, workerId, loopId, batch) {
84
- this.#withHitl(batch, (events) => this.#emitInterrupt(workspaceId, workerId, loopId, events));
141
+ #routeHitl(workspaceId, delivery) {
142
+ const exact = this.#exactThreads(workspaceId, delivery);
143
+ if (exact.length > 0) {
144
+ this.#withHitl(delivery.batch, () => this.#emitDelivery(workspaceId, delivery, exact));
145
+ return;
146
+ }
147
+ this.#enqueueDelivery(workspaceId, async () => {
148
+ const workers = await this.#seam.listWorkers(workspaceId);
149
+ const byId = _a.#workerMap(workers);
150
+ const ancestors = _a.#ancestors(delivery.workerId, byId);
151
+ for (const ancestorId of ancestors) {
152
+ const threads = [...(this.#threads.get(workspaceId) ?? [])]
153
+ .filter((thread) => thread.notificationScope === "conversation"
154
+ && thread.workerId === ancestorId);
155
+ if (threads.length === 0)
156
+ continue;
157
+ await Promise.all(threads.map(async (thread) => {
158
+ if (thread.loopId === null) {
159
+ thread.loopId = await this.#activeLoopId(workspaceId, thread.workerId);
160
+ }
161
+ }));
162
+ this.#withHitl(delivery.batch, () => this.#emitDelivery(workspaceId, delivery, threads));
163
+ return;
164
+ }
165
+ });
166
+ }
167
+ #enqueueDelivery(workspaceId, task) {
168
+ const prior = this.#deliveryTails.get(workspaceId) ?? Promise.resolve();
169
+ const delivery = prior.then(task).catch((cause) => {
170
+ console.error("AG-UI stopped-world routing failed:", cause);
171
+ });
172
+ this.#deliveryTails.set(workspaceId, delivery);
173
+ void delivery.finally(() => {
174
+ if (this.#deliveryTails.get(workspaceId) === delivery) {
175
+ this.#deliveryTails.delete(workspaceId);
176
+ }
177
+ });
178
+ }
179
+ static #workerMap(workers) {
180
+ const byId = new Map();
181
+ for (const worker of workers) {
182
+ if (byId.has(worker.id))
183
+ throw new Error(`worker topology repeats worker ${worker.id}`);
184
+ byId.set(worker.id, worker);
185
+ }
186
+ for (const worker of workers) {
187
+ if (worker.parentWorkerId !== null && !byId.has(worker.parentWorkerId)) {
188
+ throw new Error(`worker topology omits parent ${worker.parentWorkerId} of worker ${worker.id}`);
189
+ }
190
+ }
191
+ return byId;
192
+ }
193
+ static #ancestors(workerId, byId) {
194
+ const worker = byId.get(workerId);
195
+ if (worker === undefined)
196
+ throw new Error(`worker topology omits worker ${workerId}`);
197
+ const ancestors = [];
198
+ const visited = new Set([workerId]);
199
+ let parentWorkerId = worker.parentWorkerId;
200
+ while (parentWorkerId !== null) {
201
+ if (visited.has(parentWorkerId))
202
+ throw new Error(`worker topology contains a cycle at ${parentWorkerId}`);
203
+ visited.add(parentWorkerId);
204
+ ancestors.push(parentWorkerId);
205
+ const parent = byId.get(parentWorkerId);
206
+ if (parent === undefined)
207
+ throw new Error(`worker topology omits worker ${parentWorkerId}`);
208
+ parentWorkerId = parent.parentWorkerId;
209
+ }
210
+ return ancestors;
211
+ }
212
+ async #controlledWorkerIds(workspaceId, workerId) {
213
+ const byId = _a.#workerMap(await this.#seam.listWorkers(workspaceId));
214
+ if (!byId.has(workerId))
215
+ throw new Error(`worker topology omits controlling worker ${workerId}`);
216
+ const controlled = new Set();
217
+ for (const candidate of byId.keys()) {
218
+ if (candidate === workerId || _a.#ancestors(candidate, byId).includes(workerId)) {
219
+ controlled.add(candidate);
220
+ }
221
+ }
222
+ return controlled;
223
+ }
224
+ async #activeLoopId(workspaceId, workerId) {
225
+ const active = (await this.#seam.listWorkerLoops({ workspaceId, workerId }))
226
+ .filter(({ terminatedAt, terminalResult }) => terminatedAt === null && terminalResult === null);
227
+ if (active.length !== 1) {
228
+ throw new Error(`controlling worker ${workerId} has ${active.length} active loops`);
229
+ }
230
+ return active[0].id;
85
231
  }
86
232
  interruptForToolCall(toolCallId) {
87
233
  return this.#activeInterrupts.get(toolCallId) ?? null;
88
234
  }
89
235
  // Bind a client's SSE to a workspace and AG-UI Run. The emit consumer ends its stream when it
90
236
  // sees RUN_FINISHED / RUN_ERROR (the router's terminal projection) — the engine
91
- // just fans; the edge owns the socket lifecycle. `workerId` is the lifecycle actor
237
+ // owns notification routing; the edge owns the socket lifecycle. `workerId` is the lifecycle actor
92
238
  // (client worker for client ops, conversation worker otherwise); `modelWorkerId`
93
239
  // binds the render (null → the router lazily
94
240
  // adopts the first model-origin row's worker — a fresh workspace's model worker is born
95
241
  // at the drain).
96
242
  openThread(args) {
97
- const router = new EventRouter({ threadId: args.threadId, runId: args.inputRunId ?? String(args.workerId), modelWorkerId: args.modelWorkerId ?? null, workspaceId: args.workspaceId });
243
+ const candidates = args.resume
244
+ ?.map(({ interruptId }) => this.#continuations.get(interruptId)) ?? [];
245
+ const restored = candidates.find((candidate) => candidate !== undefined
246
+ && candidate.workspaceId === args.workspaceId
247
+ && candidate.threadId === args.threadId);
248
+ const continuation = restored?.state;
249
+ const router = new EventRouter({
250
+ threadId: args.threadId,
251
+ runId: args.inputRunId ?? String(args.workerId),
252
+ modelWorkerId: args.modelWorkerId ?? null,
253
+ workspaceId: args.workspaceId,
254
+ ...(continuation === undefined ? {} : { continuation }),
255
+ });
98
256
  const t = {
99
- workerId: args.workerId,
100
- loopId: null,
257
+ workerId: restored?.control.workerId ?? args.workerId,
258
+ loopId: restored?.control.loopId ?? null,
259
+ notificationScope: restored?.notificationScope ?? args.notificationScope,
101
260
  router,
102
261
  emit: args.emit,
103
262
  threadId: args.threadId,
@@ -129,25 +288,43 @@ export default class Portal {
129
288
  }
130
289
  this.#finishThread(bound, events);
131
290
  }
132
- // Emit extra events + RUN_FINISHED through the workspace's CURRENT thread binding —
291
+ // Emit extra events + RUN_FINISHED through the resumed Run that owns the
292
+ // original action's worker and client thread —
133
293
  // an action that paused on a proposal completes after the resume AG-UI Run rebound the
134
294
  // stream, so its result must ride whichever response is live now, never the
135
295
  // closure of the request that spawned it.
136
- finishRun(workspaceId, events) {
296
+ finishRun(workspaceId, workerId, threadId, events) {
137
297
  for (const t of this.#threads.get(workspaceId) ?? []) {
298
+ if (t.notificationScope === "result" || t.workerId !== workerId || t.threadId !== threadId)
299
+ continue;
138
300
  this.finishThread(t, events);
139
301
  }
140
302
  }
303
+ async #resurfaceControlled(workspaceId, thread) {
304
+ const deliveries = await this.#hitl.resurface(workspaceId);
305
+ if (deliveries.length === 0)
306
+ return false;
307
+ const workerIds = thread.notificationScope === "conversation"
308
+ ? await this.#controlledWorkerIds(workspaceId, thread.workerId)
309
+ : new Set([thread.workerId]);
310
+ const delivery = deliveries.find(({ workerId }) => workerIds.has(workerId));
311
+ if (delivery === undefined)
312
+ return false;
313
+ if (thread.loopId === null) {
314
+ thread.loopId = delivery.workerId === thread.workerId
315
+ ? delivery.loopId
316
+ : await this.#activeLoopId(workspaceId, thread.workerId);
317
+ }
318
+ this.#withHitl(delivery.batch, () => this.#emitDelivery(workspaceId, delivery, [thread]));
319
+ return true;
320
+ }
141
321
  // Drive a prompt through the loop (fire-and-forget — the outcome streams via the
142
322
  // subscription as loop/terminated). Re-surface any pending stopped-world first.
143
323
  async run(thread, args) {
144
- const pending = await this.#hitl.resurface(args.workspaceId, args.workerId);
145
- if (pending.events.length > 0) {
146
- this.#withHitl(pending, (events) => thread.emit(events));
324
+ const bound = thread;
325
+ if (await this.#resurfaceControlled(args.workspaceId, bound))
147
326
  return null;
148
- }
149
327
  const ack = await this.#seam.runLoop(args);
150
- const bound = thread;
151
328
  bound.loopId = ack.loopId;
152
329
  const terminal = bound.pendingTerminations.find((params) => params.loopId === ack.loopId);
153
330
  bound.pendingTerminations = [];
@@ -162,10 +339,66 @@ export default class Portal {
162
339
  // A standard resume AG-UI Run binds to the persisted continuation before
163
340
  // releasing every addressed interrupt.
164
341
  async resolve(workspaceId, thread, entries) {
165
- const resolution = await this.#hitl.resolve(workspaceId, entries);
166
342
  const bound = thread;
167
- bound.workerId = resolution.workerId;
168
- bound.loopId = resolution.loopId;
343
+ const continuations = entries.map(({ interruptId }) => this.#continuations.get(interruptId));
344
+ const persisted = continuations.filter((continuation) => continuation !== undefined);
345
+ if (persisted.length > 0 && persisted.length !== entries.length) {
346
+ throw new Error("resume mixes persisted and unbound interrupts");
347
+ }
348
+ const continuation = persisted[0];
349
+ if (continuation !== undefined) {
350
+ for (const candidate of persisted) {
351
+ if (candidate.workspaceId !== continuation.workspaceId
352
+ || candidate.threadId !== continuation.threadId
353
+ || candidate.gate.workerId !== continuation.gate.workerId
354
+ || candidate.gate.loopId !== continuation.gate.loopId
355
+ || candidate.control.workerId !== continuation.control.workerId
356
+ || candidate.control.loopId !== continuation.control.loopId) {
357
+ throw new Error("resume interrupts do not share one persisted control binding");
358
+ }
359
+ }
360
+ }
361
+ await this.#hitl.resolve(workspaceId, entries, async (resolution) => {
362
+ if (continuation !== undefined) {
363
+ if (continuation.workspaceId !== workspaceId
364
+ || continuation.threadId !== bound.threadId
365
+ || continuation.gate.workerId !== resolution.workerId
366
+ || continuation.gate.loopId !== resolution.loopId) {
367
+ throw new Error("resume does not match its persisted interrupt binding");
368
+ }
369
+ bound.workerId = continuation.control.workerId;
370
+ bound.loopId = continuation.control.loopId;
371
+ bound.notificationScope = continuation.notificationScope;
372
+ }
373
+ else {
374
+ const exact = resolution.workerId === bound.workerId;
375
+ const controlled = exact
376
+ ? true
377
+ : bound.notificationScope === "conversation"
378
+ && (await this.#controlledWorkerIds(workspaceId, bound.workerId))
379
+ .has(resolution.workerId);
380
+ if (!controlled) {
381
+ throw new Error(`worker ${bound.workerId} does not control pending worker ${resolution.workerId}`);
382
+ }
383
+ bound.loopId = exact
384
+ ? resolution.loopId
385
+ : await this.#activeLoopId(workspaceId, bound.workerId);
386
+ }
387
+ const terminal = bound.pendingTerminations.find((params) => params.loopId === bound.loopId);
388
+ bound.pendingTerminations = [];
389
+ if (terminal !== undefined) {
390
+ const out = bound.router.route("loop/terminated", terminal);
391
+ if (out.length > 0)
392
+ bound.emit(out);
393
+ }
394
+ });
395
+ for (const { interruptId } of entries)
396
+ this.#continuations.delete(interruptId);
397
+ if (this.#threads.get(workspaceId)?.has(bound)) {
398
+ await this.#resurfaceControlled(workspaceId, bound);
399
+ }
169
400
  }
170
401
  }
402
+ _a = Portal;
403
+ export default Portal;
171
404
  //# sourceMappingURL=Portal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Portal.js","sourceRoot":"","sources":["../src/Portal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Portal.js","sourceRoot":"","sources":["../src/Portal.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,21 @@ export interface HitlBatch {
6
6
  readonly events: AguiEvent[];
7
7
  readonly interrupts: Interrupt[];
8
8
  }
9
+ export interface HitlDelivery {
10
+ readonly workerId: number;
11
+ readonly loopId: number;
12
+ readonly batch: HitlBatch;
13
+ }
9
14
  export default class ProposalHitl {
10
15
  #private;
11
- constructor(seam: HitlSeam, emit: (workspaceId: number, workerId: number, loopId: number, batch: HitlBatch) => void);
16
+ constructor(seam: HitlSeam, emit: (workspaceId: number, delivery: HitlDelivery) => void);
12
17
  start(): void;
13
18
  stop(): void;
14
- resurface(workspaceId: number, workerId?: number): Promise<HitlBatch>;
15
- resolve(workspaceId: number, entries: ResumeEntry[]): Promise<{
19
+ resurface(workspaceId: number): Promise<HitlDelivery[]>;
20
+ resolve(workspaceId: number, entries: ResumeEntry[], beforeRelease?: (binding: {
21
+ loopId: number;
22
+ workerId: number;
23
+ }) => void | Promise<void>): Promise<{
16
24
  loopId: number;
17
25
  workerId: number;
18
26
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"ProposalHitl.d.ts","sourceRoot":"","sources":["../src/ProposalHitl.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAGH,KAAK,eAAe,EAIvB,MAAM,0BAA0B,CAAC;AASlC,OAAO,KAAK,EAAE,SAAS,EAAwB,MAAM,YAAY,CAAC;AAElE,KAAK,QAAQ,GAAG,IAAI,CAChB,eAAe,EACb,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,2BAA2B,GAC3B,0BAA0B,CAC/B,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;CACpC;AA4HD,MAAM,CAAC,OAAO,OAAO,YAAY;;IAK7B,YACI,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,IAAI,EAI1F;IAED,KAAK,IAAI,IAAI,CAcZ;IAED,IAAI,IAAI,IAAI,CAGX;IAiBK,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAE1E;IAEK,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAkFxG;CACJ"}
1
+ {"version":3,"file":"ProposalHitl.d.ts","sourceRoot":"","sources":["../src/ProposalHitl.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAGH,KAAK,eAAe,EAIvB,MAAM,0BAA0B,CAAC;AASlC,OAAO,KAAK,EAAE,SAAS,EAAwB,MAAM,YAAY,CAAC;AAElE,KAAK,QAAQ,GAAG,IAAI,CAChB,eAAe,EACb,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,2BAA2B,GAC3B,0BAA0B,CAC/B,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC7B;AA4HD,MAAM,CAAC,OAAO,OAAO,YAAY;;IAK7B,YACI,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,EAI9D;IAED,KAAK,IAAI,IAAI,CAsBZ;IAED,IAAI,IAAI,IAAI,CAGX;IAgBK,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgB5D;IAEK,OAAO,CACT,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EAAE,EACtB,aAAa,GAAE,CACX,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAC5C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAY,GACrC,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAoF/C;CACJ"}
@@ -98,12 +98,20 @@ export default class ProposalHitl {
98
98
  const item = proposalItem(params);
99
99
  if (item.kind !== "proposal" || item.projection.disposition.owner !== "client")
100
100
  return;
101
- this.#emit(workspaceId, item.workerId, item.loopId, render(item));
101
+ this.#emit(workspaceId, {
102
+ workerId: item.workerId,
103
+ loopId: item.loopId,
104
+ batch: render(item),
105
+ });
102
106
  return;
103
107
  }
104
108
  if (method === "loop/interaction") {
105
109
  const item = interactionItem(params);
106
- this.#emit(workspaceId, item.workerId, item.loopId, render(item));
110
+ this.#emit(workspaceId, {
111
+ workerId: item.workerId,
112
+ loopId: item.loopId,
113
+ batch: render(item),
114
+ });
107
115
  }
108
116
  });
109
117
  }
@@ -111,7 +119,7 @@ export default class ProposalHitl {
111
119
  this.#off?.();
112
120
  this.#off = null;
113
121
  }
114
- async #pending(workspaceId, workerId) {
122
+ async #pending(workspaceId) {
115
123
  const [proposals, interactions] = await Promise.all([
116
124
  this.#seam.pendingProposals(workspaceId),
117
125
  this.#seam.pendingClientInteractions(workspaceId),
@@ -122,13 +130,26 @@ export default class ProposalHitl {
122
130
  .filter((item) => item.kind === "proposal" && item.projection.disposition.owner === "client"),
123
131
  ...interactions.map(interactionItem),
124
132
  ]
125
- .filter((item) => workerId === undefined || item.workerId === workerId)
126
133
  .sort(comparePending);
127
134
  }
128
- async resurface(workspaceId, workerId) {
129
- return combine(await this.#pending(workspaceId, workerId));
135
+ async resurface(workspaceId) {
136
+ const pending = await this.#pending(workspaceId);
137
+ const workerIds = [...new Set(pending.map(({ workerId }) => workerId))];
138
+ return workerIds.map((workerId) => {
139
+ const workerPending = pending.filter((item) => item.workerId === workerId);
140
+ const first = workerPending[0];
141
+ const loopIds = new Set(workerPending.map(({ loopId }) => loopId));
142
+ if (loopIds.size !== 1 || first === undefined) {
143
+ throw new Error(`worker ${workerId} has pending interrupts across multiple loops`);
144
+ }
145
+ return {
146
+ workerId,
147
+ loopId: first.loopId,
148
+ batch: combine(workerPending),
149
+ };
150
+ });
130
151
  }
131
- async resolve(workspaceId, entries) {
152
+ async resolve(workspaceId, entries, beforeRelease = () => { }) {
132
153
  const allPending = await this.#pending(workspaceId);
133
154
  const entryKeys = entries.map(({ interruptId }) => interruptId);
134
155
  if (new Set(entryKeys).size !== entryKeys.length) {
@@ -173,6 +194,8 @@ export default class ProposalHitl {
173
194
  if (loopIds.size !== 1) {
174
195
  throw new Error(`worker ${workerId} has pending interrupts across multiple loops`);
175
196
  }
197
+ const binding = { loopId: [...loopIds][0], workerId };
198
+ await beforeRelease(binding);
176
199
  await Promise.all(resolved.map(async (resolution) => {
177
200
  if (resolution.kind === "proposal") {
178
201
  this.#seam.resolveProposal(resolution.id, {
@@ -183,7 +206,7 @@ export default class ProposalHitl {
183
206
  }
184
207
  await this.#seam.resolveClientInteraction(resolution.id, resolution.resolution);
185
208
  }));
186
- return { loopId: [...loopIds][0], workerId };
209
+ return binding;
187
210
  }
188
211
  }
189
212
  //# sourceMappingURL=ProposalHitl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProposalHitl.js","sourceRoot":"","sources":["../src/ProposalHitl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProposalHitl.js","sourceRoot":"","sources":["../src/ProposalHitl.ts"],"names":[],"mappings":"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"}