@plurnk/plurnk-agui 3.0.0 → 4.0.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.
Files changed (74) hide show
  1. package/.env.defaults +17 -8
  2. package/README.md +37 -13
  3. package/SPEC.md +627 -268
  4. package/dist/AguiPlus.d.ts +24 -29
  5. package/dist/AguiPlus.d.ts.map +1 -1
  6. package/dist/AguiPlus.js +25 -36
  7. package/dist/AguiPlus.js.map +1 -1
  8. package/dist/AguiSurface.d.ts +2 -2
  9. package/dist/AguiSurface.d.ts.map +1 -1
  10. package/dist/AguiSurface.js +25 -16
  11. package/dist/AguiSurface.js.map +1 -1
  12. package/dist/AuthorizationDocuments.d.ts +33 -0
  13. package/dist/AuthorizationDocuments.d.ts.map +1 -0
  14. package/dist/AuthorizationDocuments.js +84 -0
  15. package/dist/AuthorizationDocuments.js.map +1 -0
  16. package/dist/BuiltinActions.d.ts +11 -5
  17. package/dist/BuiltinActions.d.ts.map +1 -1
  18. package/dist/BuiltinActions.js +84 -119
  19. package/dist/BuiltinActions.js.map +1 -1
  20. package/dist/EventRouter.d.ts +11 -3
  21. package/dist/EventRouter.d.ts.map +1 -1
  22. package/dist/EventRouter.js +17 -32
  23. package/dist/EventRouter.js.map +1 -1
  24. package/dist/MessageAddress.d.ts +7 -5
  25. package/dist/MessageAddress.d.ts.map +1 -1
  26. package/dist/MessageAddress.js +14 -12
  27. package/dist/MessageAddress.js.map +1 -1
  28. package/dist/Module.d.ts +5 -4
  29. package/dist/Module.d.ts.map +1 -1
  30. package/dist/Module.js +222 -83
  31. package/dist/Module.js.map +1 -1
  32. package/dist/OAuthServer.d.ts +30 -0
  33. package/dist/OAuthServer.d.ts.map +1 -0
  34. package/dist/OAuthServer.js +607 -0
  35. package/dist/OAuthServer.js.map +1 -0
  36. package/dist/Portal.d.ts +41 -9
  37. package/dist/Portal.d.ts.map +1 -1
  38. package/dist/Portal.js +497 -185
  39. package/dist/Portal.js.map +1 -1
  40. package/dist/ProposalHitl.d.ts +18 -4
  41. package/dist/ProposalHitl.d.ts.map +1 -1
  42. package/dist/ProposalHitl.js +31 -41
  43. package/dist/ProposalHitl.js.map +1 -1
  44. package/dist/RunHandler.d.ts +18 -8
  45. package/dist/RunHandler.d.ts.map +1 -1
  46. package/dist/RunHandler.js +256 -137
  47. package/dist/RunHandler.js.map +1 -1
  48. package/dist/ThreadAddress.d.ts +8 -0
  49. package/dist/ThreadAddress.d.ts.map +1 -0
  50. package/dist/ThreadAddress.js +18 -0
  51. package/dist/ThreadAddress.js.map +1 -0
  52. package/dist/Translator.d.ts +52 -2
  53. package/dist/Translator.d.ts.map +1 -1
  54. package/dist/Translator.js +391 -121
  55. package/dist/Translator.js.map +1 -1
  56. package/dist/client.d.ts +2 -0
  57. package/dist/client.d.ts.map +1 -0
  58. package/dist/client.js +2 -0
  59. package/dist/client.js.map +1 -0
  60. package/dist/config.d.ts +22 -2
  61. package/dist/config.d.ts.map +1 -1
  62. package/dist/config.js +65 -13
  63. package/dist/config.js.map +1 -1
  64. package/dist/index.d.ts +1 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +2 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/run-events.d.ts +2 -0
  69. package/dist/run-events.d.ts.map +1 -1
  70. package/dist/run-events.js +5 -2
  71. package/dist/run-events.js.map +1 -1
  72. package/dist/types.d.ts +4 -22
  73. package/dist/types.d.ts.map +1 -1
  74. package/package.json +12 -8
@@ -4,37 +4,44 @@ import {} from "node:http";
4
4
  import Portal from "./Portal.js";
5
5
  import Translator from "./Translator.js";
6
6
  import MessageAddress from "./MessageAddress.js";
7
- import { stateDelta, stateSnapshot, parseAction, actionResult } from "./AguiPlus.js";
7
+ import { stateSnapshot, parseAction, actionRunResult, derivationActivity } from "./AguiPlus.js";
8
8
  import { EventType } from "./types.js";
9
9
  import {} from "@ag-ui/core";
10
10
  import { RunAgentInputSchema } from "@ag-ui/core/schemas";
11
11
  import {} from "@plurnk/plurnk-contracts";
12
12
  import {} from "./config.js";
13
+ import {} from "./BuiltinActions.js";
13
14
  import { HttpProblemError, actionFailure } from "./action-results.js";
14
15
  import { httpProblem, runErrorEvents } from "./run-events.js";
15
- const LOOP_ADDRESSED_ACTIONS = new Set(["loop.inject", "loop.cancel"]);
16
16
  export default class RunHandler {
17
17
  #seam;
18
18
  #opts;
19
19
  #portal;
20
+ #stopping;
20
21
  #requiresWorkspace;
21
22
  #controlRun;
22
23
  #envelope;
23
- #conversationWorker;
24
+ #conversation;
25
+ #boundWorker;
26
+ #actionBinding;
24
27
  #workerStatus;
25
28
  #action;
26
- constructor({ seam, opts, portal, requiresWorkspace, controlRun, envelope, conversationWorker, workerStatus, action }) {
29
+ constructor({ seam, opts, portal, stopping, requiresWorkspace, controlRun, envelope, conversation, boundWorker, actionBinding, workerStatus, action }) {
27
30
  this.#seam = seam;
28
31
  this.#opts = opts;
29
32
  this.#portal = portal;
33
+ this.#stopping = stopping;
30
34
  this.#requiresWorkspace = requiresWorkspace;
31
35
  this.#controlRun = controlRun;
32
36
  this.#envelope = envelope;
33
- this.#conversationWorker = conversationWorker;
37
+ this.#conversation = conversation;
38
+ this.#boundWorker = boundWorker;
39
+ this.#actionBinding = actionBinding;
34
40
  this.#workerStatus = workerStatus;
35
41
  this.#action = action;
36
42
  }
37
- async run(req, res, connect = false) {
43
+ // {§agui-http-authorization} — the principal and credential family the perimeter admitted this request under.
44
+ async run(req, res, connect = false, principal = "anonymous", family = null) {
38
45
  let decoded;
39
46
  try {
40
47
  decoded = JSON.parse(await RunHandler.#body(req));
@@ -58,64 +65,85 @@ export default class RunHandler {
58
65
  if (forwarded?.interactive !== undefined && typeof forwarded.interactive !== "boolean") {
59
66
  throw new HttpProblemError(httpProblem("interactive-invalid", 400, "interactive must be a boolean.", { stage: "request-validation", retryable: false }));
60
67
  }
61
- const mode = forwarded?.mode;
62
- if (mode !== undefined && mode !== "sync") {
63
- throw new HttpProblemError(httpProblem("unsupported-run-mode", 400, 'forwardedProps.plurnk.mode must be "sync" when present.', { stage: "request-validation", retryable: false }));
64
- }
65
- const synchronize = connect || mode === "sync";
66
- // Control plane FIRST: a management action that doesn't live in a world (and an
67
- // unknown kind, which is no worker at all) answers without binding — or forging — a
68
- // workspace. Only world-scoped actions and conversations reach #envelope below.
68
+ // {§agui-run-input} A Run does one thing, chosen by its input before anything binds: a resume resolves, an
69
+ // action acts, a new message submits, and a Run that carries none of them synchronizes ({§agui-sync}).
69
70
  const action = parseAction(input.forwardedProps);
70
- if (synchronize && (action !== null || input.resume !== undefined || input.messages.length > 0)) {
71
- throw new HttpProblemError(httpProblem("invalid-sync-input", 400, "Conversation synchronization cannot include messages, an action, or an interrupt resume.", { stage: "request-validation", retryable: false }));
71
+ const fresh = await this.#newMessage(input, forwarded, principal);
72
+ const asks = Number(input.resume !== undefined) + Number(action !== null) + Number(fresh !== null);
73
+ if (connect && asks > 0) {
74
+ throw new HttpProblemError(httpProblem("invalid-connect-input", 400, "A connection cannot include a new message, an action, or an interrupt resume.", { stage: "request-validation", retryable: false }));
75
+ }
76
+ if (asks > 1) {
77
+ throw new HttpProblemError(httpProblem("ambiguous-run-input", 400, "The Run carries more than one of a new message, an action, and an interrupt resume.", { stage: "request-validation", recovery: "Send each in its own Run.", retryable: false }));
72
78
  }
73
- if (action !== null && !this.#requiresWorkspace(action.kind)) {
74
- return await this.#controlRun(action, input, res);
79
+ const synchronize = connect || asks === 0;
80
+ // Control plane FIRST: a management action that doesn't live in a workspace, and one the module does not
81
+ // register or whose input it refuses, answers without binding — or forging — a workspace
82
+ // ({§agui-action-binding}). Only admitted workspace-scoped actions, message Runs and sync Runs reach #envelope below.
83
+ if (action !== null && !this.#requiresWorkspace(action)) {
84
+ return await this.#controlRun(action, input, res, principal);
75
85
  }
76
86
  let prompt = null;
77
87
  let currentUser = null;
78
- if (!synchronize && action === null && input.resume === undefined) {
79
- const lastUser = [...input.messages].reverse().find((message) => message.role === "user");
80
- if (lastUser === undefined || typeof lastUser.content !== "string" || lastUser.content.length === 0) {
81
- throw new HttpProblemError(httpProblem("user-message-required", 400, "A new AG-UI Run requires a non-empty textual user message.", {
82
- stage: "request-validation",
83
- recovery: "Provide a non-empty user message.",
84
- retryable: false,
85
- }));
88
+ if (fresh !== null) {
89
+ if (typeof fresh.content !== "string" || fresh.content.length === 0) {
90
+ throw new HttpProblemError(httpProblem("user-message-text-required", 400, "A new user message must be non-empty text.", { stage: "request-validation", recovery: "Send the message as non-empty text.", retryable: false }));
86
91
  }
87
- prompt = lastUser.content;
88
- currentUser = lastUser;
92
+ prompt = fresh.content;
93
+ currentUser = fresh;
89
94
  }
90
- // A loop-addressed action steers a loop already running in a world; a world that does not
91
- // exist has no loop to steer, so the action never mints one. Everything else may.
92
- const { env, reattached } = await this.#envelope(input.threadId, forwarded, { create: action === null || !LOOP_ADDRESSED_ACTIONS.has(action.kind) });
95
+ // {§agui-thread-binding} {§agui-action-binding} The thread resolves to its worker. A message,
96
+ // a setting, or its owner's session attaching creates it; watching passively
97
+ // or reading never does. A Run that requires an existing worker, or creates nothing, attaches to an
98
+ // existing workspace: a workspace that does not exist has no worker. A resume continues the Run whose interrupt it
99
+ // answers: it binds the worker that Run bound, if any.
100
+ const binding = input.resume !== undefined ? "attach"
101
+ : synchronize ? forwarded?.control === true ? "create" : "required"
102
+ : action === null ? "create" : this.#actionBinding(action);
103
+ const { env, reattached } = await this.#envelope(input.threadId, forwarded, {
104
+ create: binding === "create" || binding === "none",
105
+ worker: binding === "create",
106
+ });
93
107
  const workspaceId = env.workspaceId;
94
- // {§agui-thread-binding} The threadId is the conversation over the
95
- // world. threadId == workspace name binds the model worker (the default conversation);
96
- // a distinct threadId names its own worker: found by name, else minted via
97
- // createConversationWorker. The name is the identity at BOTH levels.
98
- const workerId = await this.#conversationWorker(input.threadId, env);
99
- const control = forwarded?.control === true || (!synchronize && action === null)
100
- || action?.kind === "op.exec" || action?.kind === "op.parse";
101
- const owner = control ? MessageAddress.owner(input.threadId) : undefined;
108
+ const workerId = binding === "create" || binding === "required"
109
+ ? await this.#boundWorker(input.threadId, env, binding, forwarded)
110
+ : input.resume === undefined ? undefined : this.#portal().resumedWorker(workspaceId, input.threadId, input.resume);
111
+ // {§agui-thread-address} Routing identity and the spelling a client used are separate from reply delivery.
112
+ const replyThreads = [input.threadId];
113
+ let address = MessageAddress.owner(principal, input.threadId);
114
+ if (workerId !== undefined) {
115
+ const worker = await this.#seam().readWorker({ workspaceId, identity: { id: workerId } });
116
+ if (worker === null)
117
+ throw new Error("The bound worker is absent.");
118
+ replyThreads.push(worker.name, `${workspaceId}#${worker.name}`, ...await this.#seam().listWorkerReferences({ workspaceId, workerId, namespace: "agui" }));
119
+ // {§agui-worker-owner} An address alias for this worker is not a different owner.
120
+ if (replyThreads.some((threadId) => MessageAddress.owner(principal, threadId) === worker.owner))
121
+ address = worker.owner;
122
+ }
123
+ // {§agui-sync} A passive observation claims nothing; an owner's control connection claims as a message Run does.
124
+ // Either presents the gates addressed to its thread ({§agui-proposal-resolve}).
125
+ const control = forwarded?.control === true || (!synchronize && action === null);
126
+ const owner = control ? address : undefined;
102
127
  if (owner !== undefined) {
103
128
  // {§agui-worker-owner} The Run declares the owner's capability set: the tools it
104
129
  // implements, and whether a person attends it. Unstated, nobody does.
130
+ // An AG-UI owner answers a gate's interrupt ({§agui-proposal-resolve}), so the module declares its review for it:
131
+ // a client declares only the tools it implements.
105
132
  await this.#seam().registerWorkerOwner(workspaceId, {
106
- address: owner, tools: [...new Set(input.tools.map(({ name }) => name))], interactive: forwarded?.interactive === true,
133
+ address: owner, tools: [...new Set(["request_approval", ...input.tools.map(({ name }) => name)])], interactive: forwarded?.interactive === true,
134
+ });
135
+ if (workerId !== undefined)
136
+ await this.#seam().claimWorkerOwner({ workspaceId, workerId, owner });
137
+ // {§agui-owner-activation} — an owner's arrival is the workspace's demand: activation starts now,
138
+ // so a first prompt finds it under way or done, and nothing waits for it here.
139
+ void this.#seam().activateWorkspace({ workspaceId }).catch((cause) => {
140
+ // {§functionality-preparation-cancellation} Shutdown owns and joins this cancellation.
141
+ if (this.#stopping() && cause instanceof DOMException && cause.name === "AbortError")
142
+ return;
143
+ console.error(`AG-UI: activating workspace ${workspaceId} for its owner failed:`, cause);
107
144
  });
108
- for (const claim of [workerId, env.workerId]) {
109
- await this.#seam().claimWorkerOwner({ workspaceId, workerId: claim, owner });
110
- }
111
145
  }
112
- res.writeHead(200, { "content-type": "text/event-stream", "cache-control": "no-cache", "connection": "keep-alive" });
113
146
  let finished = false;
114
- const interrupts = [];
115
- // {§agui-configuration}: long generations can emit no events; SSE comments keep
116
- // consumers fed without adding protocol events.
117
- const cadence = this.#opts().heartbeatMs;
118
- const heartbeat = cadence > 0 ? setInterval(() => { res.write(": hb\n\n"); }, cadence) : null;
119
147
  const finish = () => {
120
148
  if (finished)
121
149
  return;
@@ -125,16 +153,13 @@ export default class RunHandler {
125
153
  this.#portal().closeRun(workspaceId, boundRun);
126
154
  res.end();
127
155
  };
128
- const emit = (events) => {
156
+ // Terminate-resume, the terminate half ({§agui-proposal-resolve}): the interrupts a gate presents end this AG-UI Run
157
+ // after its events, while their core owner remains paused.
158
+ const emit = (events, interrupts = []) => {
159
+ if (finished)
160
+ return;
129
161
  for (const e of events) {
130
162
  res.write(`data: ${JSON.stringify(e)}\n\n`);
131
- // Terminate-resume, the terminate half: a stopped-world tool call
132
- // ends this AG-UI Run while its core owner remains paused.
133
- if (e.type === "TOOL_CALL_END") {
134
- const interrupt = this.#portal().interruptForToolCall(e.toolCallId);
135
- if (interrupt !== null)
136
- interrupts.push(interrupt);
137
- }
138
163
  if (e.type === "RUN_FINISHED" || e.type === "RUN_ERROR")
139
164
  finish();
140
165
  }
@@ -143,85 +168,136 @@ export default class RunHandler {
143
168
  type: EventType.RUN_FINISHED,
144
169
  threadId: input.threadId,
145
170
  runId: input.runId,
146
- outcome: { type: "interrupt", interrupts: interrupts.splice(0) },
171
+ outcome: { type: "interrupt", interrupts },
147
172
  })}\n\n`);
148
173
  finish();
149
174
  }
150
175
  };
151
- const lifecycleWorkerId = action?.kind === "op.exec" || action?.kind === "op.parse" ? env.workerId : workerId;
176
+ // {§agui-run-start} The Portal routes to this Run from the moment it is bound; what reaches it
177
+ // before RUN_STARTED and the snapshot are written follows them, in order. A terminal ends it at once.
178
+ // Each notification's events are held together, so a sync Run can tell the rows its snapshot holds.
179
+ let presented = false;
180
+ const held = [];
181
+ const routed = (events, interrupts = []) => {
182
+ if (presented)
183
+ return emit(events, interrupts);
184
+ const terminal = events.filter(({ type }) => type === EventType.RUN_ERROR || type === EventType.RUN_FINISHED);
185
+ if (terminal.length === 0)
186
+ return void held.push({ events, interrupts });
187
+ held.length = 0;
188
+ emit(terminal);
189
+ };
152
190
  const notificationScope = action === null
153
- ? "conversation"
191
+ ? "worker"
154
192
  : action.kind === "op.exec" || action.kind === "op.parse"
155
193
  ? "operation"
156
194
  : "result";
157
- // {§agui-delegation-observation} — a conversation Run may ask for its descendants' rows.
195
+ // {§agui-delegation-observation} — a message Run may ask for its descendants' rows.
158
196
  const descendants = action === null && forwarded?.descendants === true;
159
197
  const boundRun = this.#portal().openThread({
160
198
  workspaceId,
161
- workerId: lifecycleWorkerId,
199
+ // {§agui-broadcast-fan} An operation Run learns its Worker and Loop from the dispatch that opens them.
200
+ workerId: notificationScope === "operation" ? null : workerId ?? null,
162
201
  threadId: input.threadId,
202
+ replyThreads,
163
203
  notificationScope,
164
- ...(owner === undefined ? {} : { owner }),
204
+ owner: address,
205
+ family,
165
206
  descendants,
166
- emit,
207
+ emit: routed,
167
208
  modelWorkerId: workerId,
168
209
  inputRunId: input.runId,
210
+ cancelOnDisconnect: prompt !== null || notificationScope === "operation",
169
211
  ...(input.resume === undefined ? {} : { resume: input.resume }),
170
212
  });
171
- const status = await this.#workerStatus(workspaceId, workerId);
172
- let providers;
173
- let catalogProblem;
174
- try {
175
- providers = this.#seam().listProviders().aliases;
176
- }
177
- catch (cause) {
178
- catalogProblem = Problems.fromError(cause);
179
- if (catalogProblem === null)
180
- throw cause;
181
- }
182
- emit(this.#portal().runStarted(boundRun, stateSnapshot({ ...(providers === undefined ? {} : { providers }), workspace: { id: workspaceId, name: env.workspaceName, projectRoot: env.projectRoot }, status })));
183
- if (catalogProblem !== undefined)
184
- emit([{ type: EventType.CUSTOM, name: "plurnk.problem", value: catalogProblem }]);
185
- if (finished)
213
+ // {§agui-shutdown} Acquire the Run before committing headers or a heartbeat:
214
+ // preparation may have crossed module closure.
215
+ res.writeHead(200, { "content-type": "text/event-stream", "cache-control": "no-cache", "connection": "keep-alive" });
216
+ // {§agui-configuration} SSE comments keep quiet generations connected.
217
+ const cadence = this.#opts().heartbeatMs;
218
+ const heartbeat = cadence > 0 ? setInterval(() => { res.write(": hb\n\n"); }, cadence) : null;
219
+ // {§agui-run-disconnect} Install once, before any asynchronous preparation.
220
+ const disconnected = () => {
221
+ if (finished)
222
+ return;
223
+ this.#portal().disconnect(boundRun);
224
+ finish();
225
+ };
226
+ res.once("close", disconnected);
227
+ if (res.destroyed) {
228
+ disconnected();
186
229
  return;
230
+ }
187
231
  try {
188
- // {§agui-conversation-sync} — the existing Run endpoint can project the
189
- // daemon's durable conversation without admitting a prompt or starting inference.
232
+ // A Run that binds no worker has no worker status to report.
233
+ const status = workerId === undefined ? undefined : await this.#workerStatus(workspaceId, workerId);
234
+ if (finished)
235
+ return;
236
+ let providers;
237
+ let catalogProblem;
238
+ try {
239
+ providers = this.#seam().listProviders().aliases;
240
+ }
241
+ catch (cause) {
242
+ catalogProblem = Problems.fromError(cause);
243
+ if (catalogProblem === null)
244
+ throw cause;
245
+ }
246
+ emit(this.#portal().runStarted(boundRun, stateSnapshot({
247
+ ...(providers === undefined ? {} : { providers }),
248
+ workspace: {
249
+ id: workspaceId, name: env.workspaceName, projectRoot: env.projectRoot, projectLabel: env.projectLabel,
250
+ preparation: this.#seam().workspacePreparationStatus(workspaceId),
251
+ activity: derivationActivity(this.#seam().workspaceDerivationStatus(workspaceId)),
252
+ },
253
+ ...(status === undefined ? {} : { status }),
254
+ })));
255
+ if (!synchronize) {
256
+ presented = true;
257
+ for (const batch of held.splice(0))
258
+ emit(batch.events, batch.interrupts);
259
+ }
260
+ if (catalogProblem !== undefined)
261
+ emit([{ type: EventType.CUSTOM, name: "plurnk.problem", value: catalogProblem }]);
262
+ if (finished)
263
+ return;
264
+ // {§agui-sync} — the existing Run endpoint can project the
265
+ // bound worker's durable log without admitting a prompt or starting inference.
190
266
  // A live Loop remains observed; an idle one settles after its snapshot.
191
267
  if (synchronize) {
192
268
  for (const notice of this.#seam().configurationNotices()) {
193
269
  emit([{ type: EventType.CUSTOM, name: "plurnk.notice", value: notice }]);
194
270
  }
195
- const history = await this.#seam().readLog({ workspaceId, workerId, limit: Number.MAX_SAFE_INTEGER });
196
- emit(this.#portal().replay(boundRun, history));
271
+ // A sync Run requires its worker ({§agui-action-binding}), so one is bound here.
272
+ const history = await this.#history(workspaceId, workerId);
273
+ // {§agui-subagents} A Run that observes its delegation replays it too.
274
+ const subagents = await this.#portal().subagentHistory(boundRun, (descendant) => this.#history(workspaceId, descendant));
197
275
  if (finished)
198
276
  return;
199
- const observing = await this.#portal().synchronize(workspaceId, boundRun, connect);
200
- if (observing) {
201
- // This Run observes work it did not start. Disconnect detaches the
202
- // observer; it must not cancel the independently-owned Loop.
203
- res.on("close", finish);
204
- }
277
+ emit(this.#portal().replay(boundRun, history, undefined, subagents));
278
+ // {§agui-sync} What reached the Run while its log was read follows its snapshot, and a row the snapshot
279
+ // already holds as it arrived is not built a second time.
280
+ const replayed = new Map([...history, ...subagents.flatMap(({ entries }) => entries)].map((row) => [row.id, RunHandler.#version(row)]));
281
+ presented = true;
282
+ for (const batch of held.splice(0))
283
+ emit(RunHandler.#unreplayed(batch.events, replayed), batch.interrupts);
284
+ if (finished)
285
+ return;
286
+ await this.#portal().synchronize(workspaceId, boundRun, connect);
205
287
  return;
206
288
  }
207
- // §3 — a management-action AG-UI Run (forwardedProps.plurnk.action): execute via the
208
- // seam; the outcome rides the workspace's CURRENT thread binding (Portal.finishRun),
209
- // never this closure — a proposal-gated action (op.exec → 202) terminates THIS
210
- // AG-UI Run and completes after the resume AG-UI Run rebinds the stream.
289
+ // A management-action AG-UI Run (forwardedProps.plurnk.action): executed via the seam and answered on
290
+ // this Run's own stream; concurrent actions share a workspace, and a result never rides another Run.
291
+ // A client operation's Run observes the loop its dispatch opens ({§agui-broadcast-fan}).
211
292
  if (action !== null) {
212
293
  const finishAction = (outcome) => {
213
- const events = [actionResult(action.kind, outcome)];
214
- // Plain action (stream still open): answer on OUR OWN stream — concurrent
215
- // actions share a workspace, and the workspace binding is whoever bound last
216
- // (results would cross streams). Only a proposal-pause (this stream already
217
- // terminated) hands off to the workspace binding, which the resume AG-UI Run rebinds.
218
- if (!finished) {
219
- this.#portal().finishThread(boundRun, events);
220
- return;
221
- }
222
- this.#portal().finishRun(workspaceId, lifecycleWorkerId, input.threadId, events);
294
+ if (!finished)
295
+ this.#portal().finishThread(boundRun, [], actionRunResult(action.kind, outcome));
223
296
  };
224
- void this.#action(action, input, env, workerId)
297
+ const onLoop = notificationScope === "operation"
298
+ ? (loop) => { this.#portal().bindOperation(boundRun, loop); }
299
+ : undefined;
300
+ void this.#action(action, input, env, workerId, principal, onLoop)
225
301
  // One queue barrier: a dispatch's channel notifies are enqueued but not yet
226
302
  // delivered when its promise resolves — drain them so Portal's stream
227
303
  // bookkeeping arms BEFORE the finish decision (then stream/concluded,
@@ -234,33 +310,31 @@ export default class RunHandler {
234
310
  ? actionFailure("action-failed", "The action failed unexpectedly.", 500)
235
311
  : { ok: false, problem });
236
312
  });
237
- res.on("close", () => {
238
- if (finished)
239
- return;
240
- this.#seam().cancelDrain(lifecycleWorkerId, "client_disconnected");
241
- finish();
242
- });
243
313
  return;
244
314
  }
245
315
  // AG-UI interrupt resume: this is a new AG-UI Run on the same thread. Bind it
246
- // to the durable continuation before releasing the proposal.
316
+ // to its presentation's continuation before releasing the proposal.
247
317
  if (input.resume !== undefined) {
248
318
  await this.#portal().resolve(workspaceId, boundRun, input.resume);
249
- res.on("close", finish); // client hangup on a resume just detaches; the loop is already active
250
319
  return;
251
320
  }
252
- if (prompt === null || currentUser === null)
253
- throw new Error("conversation AG-UI Run reached dispatch without a validated prompt");
321
+ if (prompt === null || currentUser === null || workerId === undefined)
322
+ throw new Error("message AG-UI Run reached dispatch without a validated prompt and its worker");
254
323
  if (reattached) {
255
- const history = await this.#seam().readLog({ workspaceId, workerId, limit: Number.MAX_SAFE_INTEGER }).catch(() => null);
256
- if (history !== null && !RunHandler.#isOriented(input, history)) {
324
+ const history = await this.#history(workspaceId, workerId);
325
+ if (finished)
326
+ return;
327
+ if (!RunHandler.#isOriented(input, history, replyThreads)) {
257
328
  const replayUser = currentUser ?? undefined;
258
- emit(this.#portal().replay(boundRun, history, replayUser));
329
+ const subagents = await this.#portal().subagentHistory(boundRun, (descendant) => this.#history(workspaceId, descendant));
330
+ if (finished)
331
+ return;
332
+ emit(this.#portal().replay(boundRun, history, replayUser, subagents));
259
333
  }
260
334
  }
261
335
  const started = await this.#portal().run(boundRun, {
262
336
  workspaceId, workerId, prompt,
263
- ...MessageAddress.submission(input, currentUser),
337
+ ...MessageAddress.submission(principal, input, currentUser),
264
338
  ...(forwarded !== undefined && Object.hasOwn(forwarded, "maxTurns")
265
339
  ? { maxTurns: forwarded.maxTurns }
266
340
  : this.#opts().maxTurns !== undefined ? { maxTurns: this.#opts().maxTurns } : {}),
@@ -280,23 +354,9 @@ export default class RunHandler {
280
354
  });
281
355
  if (started !== null && !finished) {
282
356
  const currentStatus = await this.#workerStatus(workspaceId, workerId);
283
- if (!finished) {
284
- emit([stateDelta([{
285
- op: "replace",
286
- path: "/plurnk/status",
287
- value: currentStatus,
288
- }])]);
289
- }
357
+ if (!finished)
358
+ emit(this.#portal().replaceStatus(boundRun, currentStatus));
290
359
  }
291
- // A dropped SSE on a live AG-UI Run cancels the loop (hangup is the abort). A stream we
292
- // finished ourselves — terminal event or proposal-terminate — leaves the engine
293
- // alone (the paused loop is exactly what the resume AG-UI Run needs).
294
- res.on("close", () => {
295
- if (finished)
296
- return;
297
- this.#seam().cancelDrain(workerId, "client_disconnected");
298
- finish();
299
- });
300
360
  }
301
361
  catch (err) {
302
362
  // {§agui-http-failure} After headers, the frame alone is
@@ -313,9 +373,68 @@ export default class RunHandler {
313
373
  this.#portal().failThread(boundRun, runErrorEvents(problem));
314
374
  }
315
375
  }
316
- static #isOriented(input, history) {
317
- const durableMessageIds = new Set(history.flatMap((entry) => Translator.isResponse(entry, input.threadId)
318
- ? [String(entry.coordinate ?? entry.id)]
376
+ // {§agui-run-input} The Run's new message: its last message, when that is a user message of the thread's own
377
+ // conversation that is neither one the daemon presented, its id a coordinate the worker's log holds, nor one a
378
+ // client already sent, its address an idempotency key core decides ({§message-idempotency}). Both are keyed reads.
379
+ async #newMessage(input, forwarded, principal) {
380
+ const last = input.messages.at(-1);
381
+ if (last?.role !== "user" || last.subagentRunId !== undefined)
382
+ return null;
383
+ const conversation = await this.#conversation(input.threadId, forwarded);
384
+ if (conversation === null)
385
+ return last;
386
+ const coordinate = /^(\d+)\/(\d+)\/(\d+)$/u.exec(last.id);
387
+ if (coordinate !== null) {
388
+ const [loopSeq, turnSeq, sequence] = coordinate.slice(1).map(Number);
389
+ if ((await this.#seam().readLog({ ...conversation, loopSeq, turnSeq, sequence })).length > 0)
390
+ return null;
391
+ }
392
+ if (typeof last.content !== "string")
393
+ return last;
394
+ const admission = await this.#seam().messageAdmission({
395
+ workspaceId: conversation.workspaceId, address: MessageAddress.render(principal, input.threadId, last.id), body: last.content,
396
+ });
397
+ return admission === "new" ? last : null;
398
+ }
399
+ // {§agui-snapshot} A snapshot is every message the live projection built, so it reads the whole log, page by page.
400
+ async #history(workspaceId, workerId) {
401
+ const rows = [];
402
+ for (let beforeId;;) {
403
+ const cursor = beforeId;
404
+ const page = await this.#seam().readLog({ workspaceId, workerId, limit: Number.MAX_SAFE_INTEGER, ...(cursor === undefined ? {} : { beforeId: cursor }) });
405
+ const older = cursor === undefined ? page : page.filter(({ id }) => id < cursor);
406
+ if (older.length === 0)
407
+ return rows;
408
+ rows.push(...older);
409
+ beforeId = Math.min(...older.map(({ id }) => id));
410
+ }
411
+ }
412
+ // {§agui-sync} A row's version: what a later delivery of the same row can change.
413
+ static #version(row) {
414
+ return JSON.stringify([row.status_rx ?? null, row.signal ?? null, row.attrs ?? null]);
415
+ }
416
+ // {§agui-sync} One notification's events, without the parts of a row the snapshot already holds: none of them when it
417
+ // holds the row as it arrived; when it holds an earlier version, whose call it holds, the later facts folded onto that
418
+ // call, a repeated START and END without arguments ({§agui-proposal-resolve}), and the call's result.
419
+ static #unreplayed(events, replayed) {
420
+ const facts = events.map((event) => event.metadata?.plurnk)
421
+ .find((plurnk) => plurnk?.id !== undefined);
422
+ const whole = events.find((event) => event.type === EventType.CUSTOM && event.name === "plurnk.ambient");
423
+ const row = facts !== undefined ? { id: facts.id, version: RunHandler.#version({ status_rx: facts.status, signal: facts.signal, attrs: facts.attrs }) }
424
+ : whole?.value !== undefined ? { id: whole.value.id, version: RunHandler.#version(whole.value) } : null;
425
+ if (row === null || !replayed.has(row.id))
426
+ return events;
427
+ const held = (event) => (event.type.startsWith("TOOL_CALL_") && event.type !== EventType.TOOL_CALL_RESULT)
428
+ || event.type.startsWith("TEXT_MESSAGE_") || event.type.startsWith("REASONING_");
429
+ if (replayed.get(row.id) !== row.version) {
430
+ return events.filter((event) => !held(event) || event.type === EventType.TOOL_CALL_START || event.type === EventType.TOOL_CALL_END);
431
+ }
432
+ return events.filter((event) => !(held(event) || event.type === EventType.TOOL_CALL_RESULT
433
+ || (event.type === EventType.CUSTOM && event.name === "plurnk.ambient")));
434
+ }
435
+ static #isOriented(input, history, replyThreads) {
436
+ const durableMessageIds = new Set(history.flatMap((entry) => Translator.isResponse(entry, replyThreads)
437
+ ? [Translator.idOf(entry)]
319
438
  : []));
320
439
  return input.messages.some(({ id }) => durableMessageIds.has(id));
321
440
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RunHandler.js","sourceRoot":"","sources":["../src/RunHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RunHandler.js","sourceRoot":"","sources":["../src/RunHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** {§agui-thread-address} Qualified identity is syntax, never a database-existence heuristic. */
2
+ export default class ThreadAddress {
3
+ static parse(threadId: string): {
4
+ workspaceId: number;
5
+ workerName: string;
6
+ } | null;
7
+ }
8
+ //# sourceMappingURL=ThreadAddress.d.ts.map