@plurnk/plurnk-agui 3.1.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.
- package/.env.defaults +17 -8
- package/README.md +33 -13
- package/SPEC.md +589 -268
- package/dist/AguiPlus.d.ts +24 -29
- package/dist/AguiPlus.d.ts.map +1 -1
- package/dist/AguiPlus.js +25 -36
- package/dist/AguiPlus.js.map +1 -1
- package/dist/AguiSurface.d.ts +1 -2
- package/dist/AguiSurface.d.ts.map +1 -1
- package/dist/AguiSurface.js +23 -16
- package/dist/AguiSurface.js.map +1 -1
- package/dist/AuthorizationDocuments.d.ts +33 -0
- package/dist/AuthorizationDocuments.d.ts.map +1 -0
- package/dist/AuthorizationDocuments.js +84 -0
- package/dist/AuthorizationDocuments.js.map +1 -0
- package/dist/BuiltinActions.d.ts +11 -5
- package/dist/BuiltinActions.d.ts.map +1 -1
- package/dist/BuiltinActions.js +73 -125
- package/dist/BuiltinActions.js.map +1 -1
- package/dist/EventRouter.d.ts +11 -3
- package/dist/EventRouter.d.ts.map +1 -1
- package/dist/EventRouter.js +17 -32
- package/dist/EventRouter.js.map +1 -1
- package/dist/MessageAddress.d.ts +7 -5
- package/dist/MessageAddress.d.ts.map +1 -1
- package/dist/MessageAddress.js +14 -12
- package/dist/MessageAddress.js.map +1 -1
- package/dist/Module.d.ts +5 -4
- package/dist/Module.d.ts.map +1 -1
- package/dist/Module.js +221 -82
- package/dist/Module.js.map +1 -1
- package/dist/OAuthServer.d.ts +30 -0
- package/dist/OAuthServer.d.ts.map +1 -0
- package/dist/OAuthServer.js +607 -0
- package/dist/OAuthServer.js.map +1 -0
- package/dist/Portal.d.ts +39 -9
- package/dist/Portal.d.ts.map +1 -1
- package/dist/Portal.js +414 -141
- package/dist/Portal.js.map +1 -1
- package/dist/ProposalHitl.d.ts +17 -4
- package/dist/ProposalHitl.d.ts.map +1 -1
- package/dist/ProposalHitl.js +30 -43
- package/dist/ProposalHitl.js.map +1 -1
- package/dist/RunHandler.d.ts +18 -8
- package/dist/RunHandler.d.ts.map +1 -1
- package/dist/RunHandler.js +214 -96
- package/dist/RunHandler.js.map +1 -1
- package/dist/ThreadAddress.d.ts +8 -0
- package/dist/ThreadAddress.d.ts.map +1 -0
- package/dist/ThreadAddress.js +18 -0
- package/dist/ThreadAddress.js.map +1 -0
- package/dist/Translator.d.ts +52 -2
- package/dist/Translator.d.ts.map +1 -1
- package/dist/Translator.js +390 -117
- package/dist/Translator.js.map +1 -1
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +22 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +65 -13
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/run-events.d.ts +1 -0
- package/dist/run-events.d.ts.map +1 -1
- package/dist/run-events.js +4 -2
- package/dist/run-events.js.map +1 -1
- package/dist/types.d.ts +4 -22
- package/dist/types.d.ts.map +1 -1
- package/package.json +12 -8
package/dist/RunHandler.js
CHANGED
|
@@ -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 {
|
|
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
|
-
#
|
|
24
|
+
#conversation;
|
|
25
|
+
#boundWorker;
|
|
26
|
+
#actionBinding;
|
|
24
27
|
#workerStatus;
|
|
25
28
|
#action;
|
|
26
|
-
constructor({ seam, opts, portal, requiresWorkspace, controlRun, envelope,
|
|
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.#
|
|
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
|
-
|
|
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,59 +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
|
-
|
|
62
|
-
|
|
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
|
-
|
|
71
|
-
|
|
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
|
-
|
|
74
|
-
|
|
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 (
|
|
79
|
-
|
|
80
|
-
|
|
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 =
|
|
88
|
-
currentUser =
|
|
92
|
+
prompt = fresh.content;
|
|
93
|
+
currentUser = fresh;
|
|
89
94
|
}
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
//
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
146
|
let finished = false;
|
|
113
|
-
const interrupts = [];
|
|
114
147
|
const finish = () => {
|
|
115
148
|
if (finished)
|
|
116
149
|
return;
|
|
@@ -120,18 +153,13 @@ export default class RunHandler {
|
|
|
120
153
|
this.#portal().closeRun(workspaceId, boundRun);
|
|
121
154
|
res.end();
|
|
122
155
|
};
|
|
123
|
-
|
|
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 = []) => {
|
|
124
159
|
if (finished)
|
|
125
160
|
return;
|
|
126
161
|
for (const e of events) {
|
|
127
162
|
res.write(`data: ${JSON.stringify(e)}\n\n`);
|
|
128
|
-
// Terminate-resume, the terminate half: a stopped-world tool call
|
|
129
|
-
// ends this AG-UI Run while its core owner remains paused.
|
|
130
|
-
if (e.type === "TOOL_CALL_END") {
|
|
131
|
-
const interrupt = this.#portal().interruptForToolCall(e.toolCallId);
|
|
132
|
-
if (interrupt !== null)
|
|
133
|
-
interrupts.push(interrupt);
|
|
134
|
-
}
|
|
135
163
|
if (e.type === "RUN_FINISHED" || e.type === "RUN_ERROR")
|
|
136
164
|
finish();
|
|
137
165
|
}
|
|
@@ -140,27 +168,43 @@ export default class RunHandler {
|
|
|
140
168
|
type: EventType.RUN_FINISHED,
|
|
141
169
|
threadId: input.threadId,
|
|
142
170
|
runId: input.runId,
|
|
143
|
-
outcome: { type: "interrupt", interrupts
|
|
171
|
+
outcome: { type: "interrupt", interrupts },
|
|
144
172
|
})}\n\n`);
|
|
145
173
|
finish();
|
|
146
174
|
}
|
|
147
175
|
};
|
|
148
|
-
|
|
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
|
+
};
|
|
149
190
|
const notificationScope = action === null
|
|
150
|
-
? "
|
|
191
|
+
? "worker"
|
|
151
192
|
: action.kind === "op.exec" || action.kind === "op.parse"
|
|
152
193
|
? "operation"
|
|
153
194
|
: "result";
|
|
154
|
-
// {§agui-delegation-observation} — a
|
|
195
|
+
// {§agui-delegation-observation} — a message Run may ask for its descendants' rows.
|
|
155
196
|
const descendants = action === null && forwarded?.descendants === true;
|
|
156
197
|
const boundRun = this.#portal().openThread({
|
|
157
198
|
workspaceId,
|
|
158
|
-
|
|
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,
|
|
159
201
|
threadId: input.threadId,
|
|
202
|
+
replyThreads,
|
|
160
203
|
notificationScope,
|
|
161
|
-
|
|
204
|
+
owner: address,
|
|
205
|
+
family,
|
|
162
206
|
descendants,
|
|
163
|
-
emit,
|
|
207
|
+
emit: routed,
|
|
164
208
|
modelWorkerId: workerId,
|
|
165
209
|
inputRunId: input.runId,
|
|
166
210
|
cancelOnDisconnect: prompt !== null || notificationScope === "operation",
|
|
@@ -185,7 +229,8 @@ export default class RunHandler {
|
|
|
185
229
|
return;
|
|
186
230
|
}
|
|
187
231
|
try {
|
|
188
|
-
|
|
232
|
+
// A Run that binds no worker has no worker status to report.
|
|
233
|
+
const status = workerId === undefined ? undefined : await this.#workerStatus(workspaceId, workerId);
|
|
189
234
|
if (finished)
|
|
190
235
|
return;
|
|
191
236
|
let providers;
|
|
@@ -198,45 +243,61 @@ export default class RunHandler {
|
|
|
198
243
|
if (catalogProblem === null)
|
|
199
244
|
throw cause;
|
|
200
245
|
}
|
|
201
|
-
emit(this.#portal().runStarted(boundRun, stateSnapshot({
|
|
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
|
+
}
|
|
202
260
|
if (catalogProblem !== undefined)
|
|
203
261
|
emit([{ type: EventType.CUSTOM, name: "plurnk.problem", value: catalogProblem }]);
|
|
204
262
|
if (finished)
|
|
205
263
|
return;
|
|
206
|
-
// {§agui-
|
|
207
|
-
//
|
|
264
|
+
// {§agui-sync} — the existing Run endpoint can project the
|
|
265
|
+
// bound worker's durable log without admitting a prompt or starting inference.
|
|
208
266
|
// A live Loop remains observed; an idle one settles after its snapshot.
|
|
209
267
|
if (synchronize) {
|
|
210
268
|
for (const notice of this.#seam().configurationNotices()) {
|
|
211
269
|
emit([{ type: EventType.CUSTOM, name: "plurnk.notice", value: notice }]);
|
|
212
270
|
}
|
|
213
|
-
|
|
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));
|
|
214
275
|
if (finished)
|
|
215
276
|
return;
|
|
216
|
-
emit(this.#portal().replay(boundRun, history));
|
|
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);
|
|
217
284
|
if (finished)
|
|
218
285
|
return;
|
|
219
286
|
await this.#portal().synchronize(workspaceId, boundRun, connect);
|
|
220
287
|
return;
|
|
221
288
|
}
|
|
222
|
-
//
|
|
223
|
-
//
|
|
224
|
-
//
|
|
225
|
-
// 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}).
|
|
226
292
|
if (action !== null) {
|
|
227
293
|
const finishAction = (outcome) => {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
// actions share a workspace, and the workspace binding is whoever bound last
|
|
231
|
-
// (results would cross streams). Only a proposal-pause (this stream already
|
|
232
|
-
// terminated) hands off to the workspace binding, which the resume AG-UI Run rebinds.
|
|
233
|
-
if (!finished) {
|
|
234
|
-
this.#portal().finishThread(boundRun, events);
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
this.#portal().finishRun(workspaceId, lifecycleWorkerId, input.threadId, events);
|
|
294
|
+
if (!finished)
|
|
295
|
+
this.#portal().finishThread(boundRun, [], actionRunResult(action.kind, outcome));
|
|
238
296
|
};
|
|
239
|
-
|
|
297
|
+
const onLoop = notificationScope === "operation"
|
|
298
|
+
? (loop) => { this.#portal().bindOperation(boundRun, loop); }
|
|
299
|
+
: undefined;
|
|
300
|
+
void this.#action(action, input, env, workerId, principal, onLoop)
|
|
240
301
|
// One queue barrier: a dispatch's channel notifies are enqueued but not yet
|
|
241
302
|
// delivered when its promise resolves — drain them so Portal's stream
|
|
242
303
|
// bookkeeping arms BEFORE the finish decision (then stream/concluded,
|
|
@@ -257,20 +318,23 @@ export default class RunHandler {
|
|
|
257
318
|
await this.#portal().resolve(workspaceId, boundRun, input.resume);
|
|
258
319
|
return;
|
|
259
320
|
}
|
|
260
|
-
if (prompt === null || currentUser === null)
|
|
261
|
-
throw new Error("
|
|
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");
|
|
262
323
|
if (reattached) {
|
|
263
|
-
const history = await this.#
|
|
324
|
+
const history = await this.#history(workspaceId, workerId);
|
|
264
325
|
if (finished)
|
|
265
326
|
return;
|
|
266
|
-
if (
|
|
327
|
+
if (!RunHandler.#isOriented(input, history, replyThreads)) {
|
|
267
328
|
const replayUser = currentUser ?? undefined;
|
|
268
|
-
|
|
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));
|
|
269
333
|
}
|
|
270
334
|
}
|
|
271
335
|
const started = await this.#portal().run(boundRun, {
|
|
272
336
|
workspaceId, workerId, prompt,
|
|
273
|
-
...MessageAddress.submission(input, currentUser),
|
|
337
|
+
...MessageAddress.submission(principal, input, currentUser),
|
|
274
338
|
...(forwarded !== undefined && Object.hasOwn(forwarded, "maxTurns")
|
|
275
339
|
? { maxTurns: forwarded.maxTurns }
|
|
276
340
|
: this.#opts().maxTurns !== undefined ? { maxTurns: this.#opts().maxTurns } : {}),
|
|
@@ -290,13 +354,8 @@ export default class RunHandler {
|
|
|
290
354
|
});
|
|
291
355
|
if (started !== null && !finished) {
|
|
292
356
|
const currentStatus = await this.#workerStatus(workspaceId, workerId);
|
|
293
|
-
if (!finished)
|
|
294
|
-
emit(
|
|
295
|
-
op: "replace",
|
|
296
|
-
path: "/plurnk/status",
|
|
297
|
-
value: currentStatus,
|
|
298
|
-
}])]);
|
|
299
|
-
}
|
|
357
|
+
if (!finished)
|
|
358
|
+
emit(this.#portal().replaceStatus(boundRun, currentStatus));
|
|
300
359
|
}
|
|
301
360
|
}
|
|
302
361
|
catch (err) {
|
|
@@ -314,9 +373,68 @@ export default class RunHandler {
|
|
|
314
373
|
this.#portal().failThread(boundRun, runErrorEvents(problem));
|
|
315
374
|
}
|
|
316
375
|
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
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)]
|
|
320
438
|
: []));
|
|
321
439
|
return input.messages.some(({ id }) => durableMessageIds.has(id));
|
|
322
440
|
}
|
package/dist/RunHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunHandler.js","sourceRoot":"","sources":["../src/RunHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,yJAAyJ;AACzJ,OAAO,EAA6C,MAAM,WAAW,CAAC;AACtE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAgE,MAAM,eAAe,CAAC;AACnJ,OAAO,EAAE,SAAS,EAAwD,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAkB,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAA6C,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAA8B,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;AAK5F,MAAM,CAAC,OAAO,OAAO,UAAU;IAClB,KAAK,CAAgB;IACrB,KAAK,CAA8B;IACnC,OAAO,CAAe;IACtB,kBAAkB,CAA4B;IAC9C,WAAW,CAAsF;IACjG,SAAS,CAA4J;IACrK,mBAAmB,CAA6D;IAChF,aAAa,CAAsE;IACnF,OAAO,CAAgI;IAEhJ,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,EAUlH;QACG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAoB,EAAE,GAAmB,EAAE,OAAO,GAAG,KAAK;QAChE,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAClC,cAAc,EACd,GAAG,EACH,qCAAqC,EACrC,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,EAAE,CACpD,CAAC,CAAC;QACP,CAAC;QACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAClC,mBAAmB,EACnB,GAAG,EACH,qEAAqE,EACrE;gBACI,KAAK,EAAE,oBAAoB;gBAC3B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;gBAC3B,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC,CAAC;QACP,CAAC;QACD,MAAM,KAAK,GAAkB,MAAM,CAAC,IAAI,CAAC;QACzC,MAAM,SAAS,GAAI,KAAK,CAAC,cAAmE,EAAE,MAAM,CAAC;QACrG,IAAI,SAAS,EAAE,OAAO,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC7E,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,4BAA4B,EACvF,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,SAAS,EAAE,WAAW,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrF,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAAC,qBAAqB,EAAE,GAAG,EAAE,gCAAgC,EAC/F,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,IAAI,GAAG,SAAS,EAAE,IAAI,CAAC;QAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAClC,sBAAsB,EACtB,GAAG,EACH,yDAAyD,EACzD,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,EAAE,CACpD,CAAC,CAAC;QACP,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC;QAE/C,gFAAgF;QAChF,oFAAoF;QACpF,gFAAgF;QAChF,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,WAAW,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9F,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAClC,oBAAoB,EACpB,GAAG,EACH,0FAA0F,EAC1F,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,EAAE,CACpD,CAAC,CAAC;QACP,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,WAAW,GAAuB,IAAI,CAAC;QAC3C,IAAI,CAAC,WAAW,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChE,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAC1F,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClG,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAClC,uBAAuB,EACvB,GAAG,EACH,4DAA4D,EAC5D;oBACI,KAAK,EAAE,oBAAoB;oBAC3B,QAAQ,EAAE,mCAAmC;oBAC7C,SAAS,EAAE,KAAK;iBACnB,CACJ,CAAC,CAAC;YACP,CAAC;YACD,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;YAC1B,WAAW,GAAG,QAAQ,CAAC;QAC3B,CAAC;QAED,0FAA0F;QAC1F,kFAAkF;QAClF,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrJ,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QACpC,mEAAmE;QACnE,uFAAuF;QACvF,2EAA2E;QAC3E,qEAAqE;QACrE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,KAAK,IAAI,CAAC;eACzE,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,MAAM,EAAE,IAAI,KAAK,UAAU,CAAC;QACjE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,iFAAiF;YACjF,sEAAsE;YACtE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE;gBAChD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,KAAK,IAAI;aACzH,CAAC,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACjF,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,GAAS,EAAE;YACtB,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,SAAS,KAAK,IAAI;gBAAE,aAAa,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC/C,GAAG,CAAC,GAAG,EAAE,CAAC;QACd,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,MAAmB,EAAQ,EAAE;YACvC,IAAI,QAAQ;gBAAE,OAAO;YACrB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACrB,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC5C,kEAAkE;gBAClE,2DAA2D;gBAC3D,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,oBAAoB,CAChD,CAA4B,CAAC,UAAU,CAC3C,CAAC;oBACF,IAAI,SAAS,KAAK,IAAI;wBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvD,CAAC;gBACD,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;oBAAE,MAAM,EAAE,CAAC;YACtE,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC;oBAC9B,IAAI,EAAE,SAAS,CAAC,YAAY;oBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;iBACnE,CAAC,MAAM,CAAC,CAAC;gBACV,MAAM,EAAE,CAAC;YACb,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,iBAAiB,GAAG,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,MAAM,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9G,MAAM,iBAAiB,GAAG,MAAM,KAAK,IAAI;YACrC,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;gBACrD,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,QAAQ,CAAC;QACnB,yFAAyF;QACzF,MAAM,WAAW,GAAG,MAAM,KAAK,IAAI,IAAI,SAAS,EAAE,WAAW,KAAK,IAAI,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC;YACvC,WAAW;YACX,QAAQ,EAAE,iBAAiB;YAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,iBAAiB;YACjB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACzC,WAAW;YACX,IAAI;YACJ,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,kBAAkB,EAAE,MAAM,KAAK,IAAI,IAAI,iBAAiB,KAAK,WAAW;YACxE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;SAClE,CAAC,CAAC;QACH,6EAA6E;QAC7E,+CAA+C;QAC/C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;QACrH,uEAAuE;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9F,4EAA4E;QAC5E,MAAM,YAAY,GAAG,GAAS,EAAE;YAC5B,IAAI,QAAQ;gBAAE,OAAO;YACrB,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,EAAE,CAAC;QACb,CAAC,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAChC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAAC,YAAY,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAC9C,IAAI,CAAC;YACL,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC/D,IAAI,QAAQ;gBAAE,OAAO;YACrB,IAAI,SAAS,CAAC;YACd,IAAI,cAAc,CAAC;YACnB,IAAI,CAAC;gBAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC;YAAC,CAAC;YACzD,OAAO,KAAK,EAAE,CAAC;gBACX,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC3C,IAAI,cAAc,KAAK,IAAI;oBAAE,MAAM,KAAK,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAC1B,QAAQ,EACR,aAAa,CAAC,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CACtK,CAAC,CAAC;YACH,IAAI,cAAc,KAAK,SAAS;gBAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;YACpH,IAAI,QAAQ;gBAAE,OAAO;YAErB,wEAAwE;YACxE,kFAAkF;YAClF,wEAAwE;YACxE,IAAI,WAAW,EAAE,CAAC;gBACd,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,oBAAoB,EAAE,EAAE,CAAC;oBACvD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC7E,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBACtG,IAAI,QAAQ;oBAAE,OAAO;gBACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC/C,IAAI,QAAQ;oBAAE,OAAO;gBACrB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YAED,qFAAqF;YACrF,qFAAqF;YACrF,+EAA+E;YAC/E,yEAAyE;YACzE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAQ,EAAE;oBAClD,MAAM,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;oBACpD,0EAA0E;oBAC1E,6EAA6E;oBAC7E,4EAA4E;oBAC5E,sFAAsF;oBACtF,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACZ,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;wBAC9C,OAAO;oBACX,CAAC;oBACD,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACrF,CAAC,CAAC;gBACF,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC;oBAC3C,4EAA4E;oBAC5E,sEAAsE;oBACtE,sEAAsE;oBACtE,uCAAuC;qBACtC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC9F,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBACpB,OAAO,CAAC,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,WAAW,EAAE,GAAG,CAAC,CAAC;oBAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACxC,YAAY,CAAC,OAAO,KAAK,IAAI;wBACzB,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,iCAAiC,EAAE,GAAG,CAAC;wBACxE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACP,OAAO;YACX,CAAC;YAED,8EAA8E;YAC9E,oEAAoE;YACpE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClE,OAAO;YACX,CAAC;YAED,IAAI,MAAM,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YAEnI,IAAI,UAAU,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBACxH,IAAI,QAAQ;oBAAE,OAAO;gBACrB,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC9D,MAAM,UAAU,GAAG,WAAW,IAAI,SAAS,CAAC;oBAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACL,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE;gBAC/C,WAAW,EAAE,QAAQ,EAAE,MAAM;gBAC7B,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC;gBAChD,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC;oBAC/D,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAkB,EAAE;oBAC5C,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrF,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;oBAChE,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,SAAqB,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC;gBACT,sEAAsE;gBACtE,+CAA+C;gBAC/C,yEAAyE;gBACzE,kEAAkE;gBAClE,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC;oBAC/D,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAkB,EAAE;oBAC5C,CAAC,CAAC,EAAE,CAAC;gBACT,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC;oBACpE,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,aAA8B,EAAE;oBAC7D,CAAC,CAAC,EAAE,CAAC;aACZ,CAAC,CAAC;YACH,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;gCACd,EAAE,EAAE,SAAS;gCACb,IAAI,EAAE,gBAAgB;gCACtB,KAAK,EAAE,aAAa;6BACvB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACV,CAAC;YACL,CAAC;QACD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,yDAAyD;YACzD,6EAA6E;YAC7E,+EAA+E;YAC/E,wEAAwE;YACxE,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,YAAY,KAAK,IAAI;gBAAE,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,YAAY,IAAI,WAAW,CACvC,YAAY,EACZ,GAAG,EACH,oCAAoC,EACpC;gBACI,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,KAAoB,EAAE,OAA+C;QACpF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACxD,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;YACpC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACf,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAGD,MAAM,CAAC,KAAK,CAAC,GAAoB;QAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThreadAddress.d.ts","sourceRoot":"","sources":["../src/ThreadAddress.ts"],"names":[],"mappings":"AAIA,iGAAiG;AACjG,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAWjF;CACJ"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { WORKER_NAME } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import { HttpProblemError } from "./action-results.js";
|
|
3
|
+
import { httpProblem } from "./run-events.js";
|
|
4
|
+
/** {§agui-thread-address} Qualified identity is syntax, never a database-existence heuristic. */
|
|
5
|
+
export default class ThreadAddress {
|
|
6
|
+
static parse(threadId) {
|
|
7
|
+
const match = /^([0-9]+)#(.*)$/su.exec(threadId);
|
|
8
|
+
if (match === null)
|
|
9
|
+
return null;
|
|
10
|
+
const workspaceId = Number(match[1]);
|
|
11
|
+
const workerName = match[2];
|
|
12
|
+
if (String(workspaceId) !== match[1] || !Number.isSafeInteger(workspaceId) || workspaceId < 1 || !WORKER_NAME.test(workerName)) {
|
|
13
|
+
throw new HttpProblemError(httpProblem("thread-address-invalid", 400, "The qualified thread address is not <workspace ID>#<worker name>.", { threadId, stage: "request-validation", retryable: false }));
|
|
14
|
+
}
|
|
15
|
+
return { workspaceId, workerName };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=ThreadAddress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThreadAddress.js","sourceRoot":"","sources":["../src/ThreadAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,iGAAiG;AACjG,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,MAAM,CAAC,KAAK,CAAC,QAAgB;QACzB,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7H,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAAC,wBAAwB,EAAE,GAAG,EAChE,mEAAmE,EACnE,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;IACvC,CAAC;CACJ"}
|