@plurnk/plurnk-agui 3.1.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.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 +13 -9
package/dist/Module.js
CHANGED
|
@@ -4,107 +4,135 @@
|
|
|
4
4
|
//
|
|
5
5
|
// This is the single external client interface:
|
|
6
6
|
// POST /agui — a Run; POST /agui/connect — an observer that also waits while idle.
|
|
7
|
-
// A worker streams SSE. HITL is terminate-resume: a
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
7
|
+
// A worker streams SSE. HITL is terminate-resume: a stopped-world presents the call it
|
|
8
|
+
// gates (the operation's own, or a client interaction's) and finishes with an AG-UI
|
|
9
|
+
// interrupt outcome (the loop stays paused in-engine); the next AG-UI Run's standard
|
|
10
|
+
// resume entries resolve the durable gate and continue the exact loop.
|
|
11
11
|
// Reads ride STATE_SNAPSHOT on RUN_STARTED; there are no side-channel action
|
|
12
12
|
// or proposal-resolution endpoints.
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
var _a;
|
|
13
|
+
// A thread resolves to a model worker through {§agui-thread-binding}; core retains
|
|
14
|
+
// opaque external references, while this adapter interprets qualified addresses.
|
|
16
15
|
import Portal, {} from "./Portal.js";
|
|
17
|
-
import { aliveChildren,
|
|
16
|
+
import { aliveChildren, spendState, statusState, actionRunResult } from "./AguiPlus.js";
|
|
18
17
|
import { EventType } from "./types.js";
|
|
19
18
|
import { aguiRouteTemplate, observed } from "./observe.js";
|
|
20
|
-
import { Problems, Validator, selectWorkerLoop } from "@plurnk/plurnk-contracts";
|
|
19
|
+
import { Problems, Validator, requestOrigin, selectWorkerLoop } from "@plurnk/plurnk-contracts";
|
|
21
20
|
import { AGUI_BUILTIN_ACTIONS, AGUI_NOTIFICATIONS } from "./AguiSurface.js";
|
|
22
21
|
import { resolveModuleOptions } from "./config.js";
|
|
23
22
|
import { HttpProblemError, actionFailure } from "./action-results.js";
|
|
24
23
|
import BuiltinActions, {} from "./BuiltinActions.js";
|
|
25
|
-
import { httpProblem, runErrorEvents, serviceStoppingProblem } from "./run-events.js";
|
|
24
|
+
import { credentialRevokedProblem, httpProblem, runErrorEvents, serviceStoppingProblem } from "./run-events.js";
|
|
25
|
+
import OAuthServer from "./OAuthServer.js";
|
|
26
26
|
import RunHandler, {} from "./RunHandler.js";
|
|
27
|
+
import ThreadAddress from "./ThreadAddress.js";
|
|
27
28
|
import { MessageScheme } from "@plurnk/plurnk-schemes";
|
|
28
29
|
const writeHttpProblem = (res, problem) => {
|
|
29
30
|
res.writeHead(problem.status, { "content-type": "application/problem+json" });
|
|
30
31
|
res.end(JSON.stringify(problem));
|
|
31
32
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
// {§agui-action-binding} The builtin actions addressed to the thread's worker: those that set its durable
|
|
34
|
+
// policy create it, the rest require it, and the readers that take an explicit `workerId` require it only
|
|
35
|
+
// without one.
|
|
36
|
+
const WORKER_CREATING_ACTIONS = new Set(["worker.model.set", "worker.child.set", "worker.effort.set"]);
|
|
37
|
+
const WORKER_ACTIONS = new Set(["loop.inject", "loop.cancel", "run.fork", "worker.model.get", "worker.effort.get"]);
|
|
38
|
+
const WORKER_READING_ACTIONS = new Set(["log.read", "entry.read", "workspace.prompts", "workspace.rollback"]);
|
|
39
|
+
export default class Module {
|
|
40
|
+
// {§module-http-mounts} — the client protocol owns its own prefix and, when it authenticates, the
|
|
41
|
+
// authorization server's ({§agui-oauth-endpoints}).
|
|
42
|
+
mounts;
|
|
35
43
|
#seam;
|
|
44
|
+
#listener;
|
|
36
45
|
#opts;
|
|
37
46
|
#portal;
|
|
38
|
-
#
|
|
47
|
+
#oauth = null;
|
|
48
|
+
#offRevoked = null;
|
|
49
|
+
#workspaceEnvelopes = new Map();
|
|
39
50
|
#threadWorkers = new Map();
|
|
40
51
|
#workspaceAcquisitions = new Map();
|
|
41
52
|
#actions = new Map();
|
|
42
53
|
#activated = false;
|
|
43
54
|
#stopped = false;
|
|
44
|
-
#builtins = new BuiltinActions({ seam: () => this.#seam, capabilities: this.#capabilities.bind(this),
|
|
45
|
-
#runs = new RunHandler({ seam: () => this.#seam, opts: () => this.#opts, portal: () => this.#portal, requiresWorkspace: this.#requiresWorkspace.bind(this), controlRun: this.#controlRun.bind(this), envelope: this.#envelope.bind(this),
|
|
55
|
+
#builtins = new BuiltinActions({ seam: () => this.#seam, capabilities: this.#capabilities.bind(this), namedWorkspace: this.#namedWorkspace.bind(this), threadWorker: this.#threadWorker.bind(this), requireWorkspace: Module.#requireWorkspace });
|
|
56
|
+
#runs = new RunHandler({ seam: () => this.#seam, opts: () => this.#opts, portal: () => this.#portal, stopping: () => this.#stopped, requiresWorkspace: this.#requiresWorkspace.bind(this), controlRun: this.#controlRun.bind(this), envelope: this.#envelope.bind(this), conversation: this.#conversation.bind(this), boundWorker: this.#boundWorker.bind(this), actionBinding: this.#actionBinding.bind(this), workerStatus: this.#workerStatus.bind(this), action: this.#action.bind(this) });
|
|
46
57
|
constructor(opts) {
|
|
47
58
|
this.#opts = resolveModuleOptions(opts);
|
|
59
|
+
this.mounts = Object.freeze(this.#opts.authenticates
|
|
60
|
+
? ["/agui", "/oauth", "/.well-known/oauth-authorization-server", "/.well-known/oauth-protected-resource"]
|
|
61
|
+
: ["/agui"]);
|
|
62
|
+
}
|
|
63
|
+
// {§agui-oauth-endpoints} — the issuer: the configured public origin, else the origin the request
|
|
64
|
+
// reached this daemon at, else, with no request in hand, the listener's own ({§http-request-origin}).
|
|
65
|
+
// The host binds its listener before any module sets up ({§http-host}), so the face published at
|
|
66
|
+
// setup answers from publication.
|
|
67
|
+
#issuer(req = { headers: {} }) {
|
|
68
|
+
return this.#opts.issuer.length > 0 ? this.#opts.issuer : requestOrigin(req, this.#listener());
|
|
48
69
|
}
|
|
49
70
|
// {§agui-configuration} — the module reads its settings from the assembled environment;
|
|
50
71
|
// explicit options override them.
|
|
51
72
|
static create(opts = {}) {
|
|
52
|
-
return new
|
|
73
|
+
return new Module(opts);
|
|
53
74
|
}
|
|
54
75
|
#registerActions() {
|
|
55
76
|
for (const [name, contract] of Object.entries(AGUI_BUILTIN_ACTIONS)) {
|
|
56
77
|
this.#actions.set(name, {
|
|
57
78
|
...contract,
|
|
58
|
-
execute: (params, input, env,
|
|
79
|
+
execute: (params, input, env, boundWorkerId, principal, onLoop) => this.#builtins.executeBuiltin(name, params, input, env, boundWorkerId, principal, onLoop),
|
|
59
80
|
});
|
|
60
81
|
}
|
|
61
82
|
for (const descriptor of this.#seam.listModuleActions()) {
|
|
62
83
|
const { name, scope, inputSchema, outputSchema } = descriptor;
|
|
63
84
|
if (this.#actions.has(name))
|
|
64
85
|
throw new Error(`AG-UI action '${name}' is registered more than once`);
|
|
65
|
-
if (scope !== "
|
|
86
|
+
if (scope !== "daemon" && scope !== "workspace" && scope !== "worker") {
|
|
66
87
|
throw new Error(`module action '${name}' has invalid scope '${String(scope)}'`);
|
|
67
88
|
}
|
|
68
89
|
this.#actions.set(name, {
|
|
69
90
|
scope,
|
|
70
91
|
inputSchema,
|
|
71
92
|
outputSchema,
|
|
72
|
-
execute: async (params, _input, env,
|
|
73
|
-
if (scope === "
|
|
93
|
+
execute: async (params, _input, env, boundWorkerId) => {
|
|
94
|
+
if (scope === "daemon") {
|
|
74
95
|
return {
|
|
75
96
|
ok: true,
|
|
76
97
|
result: await this.#seam.invokeModuleAction(name, params, { scope }),
|
|
77
98
|
};
|
|
78
99
|
}
|
|
79
|
-
const { workspaceId } =
|
|
100
|
+
const { workspaceId } = Module.#requireWorkspace(name, env);
|
|
80
101
|
if (scope === "workspace") {
|
|
81
102
|
return {
|
|
82
103
|
ok: true,
|
|
83
104
|
result: await this.#seam.invokeModuleAction(name, params, { scope, workspaceId }),
|
|
84
105
|
};
|
|
85
106
|
}
|
|
86
|
-
|
|
107
|
+
if (boundWorkerId === undefined)
|
|
108
|
+
throw new Error(`worker action '${name}' reached execution without its worker`);
|
|
87
109
|
return {
|
|
88
110
|
ok: true,
|
|
89
|
-
result: await this.#seam.invokeModuleAction(name, params, { scope, workspaceId, workerId }),
|
|
111
|
+
result: await this.#seam.invokeModuleAction(name, params, { scope, workspaceId, workerId: boundWorkerId }),
|
|
90
112
|
};
|
|
91
113
|
},
|
|
92
114
|
});
|
|
93
115
|
}
|
|
94
116
|
}
|
|
95
|
-
|
|
96
|
-
|
|
117
|
+
// {§agui-action-binding} An action the module does not register, or whose input its schema refuses, binds
|
|
118
|
+
// nothing and creates nothing: like a daemon one, it is answered on the control path.
|
|
119
|
+
#requiresWorkspace({ kind, params }) {
|
|
120
|
+
const action = this.#actions.get(kind);
|
|
121
|
+
return action !== undefined && action.scope !== "daemon"
|
|
122
|
+
&& Validator.validateJsonSchemaInstance(action.inputSchema, params).valid;
|
|
97
123
|
}
|
|
98
124
|
static #requireWorkspace(kind, env) {
|
|
99
125
|
if (env === null)
|
|
100
126
|
throw new Error(`action '${kind}' operates within a workspace, but none is bound`);
|
|
101
127
|
return env;
|
|
102
128
|
}
|
|
103
|
-
static #threadKey(workspace, threadId) {
|
|
104
|
-
return JSON.stringify([workspace, threadId]);
|
|
105
|
-
}
|
|
106
129
|
async setup(seam) {
|
|
107
130
|
await seam.registerScheme("agui", new MessageScheme("agui"));
|
|
131
|
+
this.#listener = () => seam.httpAddress();
|
|
132
|
+
// {§agui-oauth} — under PLURNK_AUTH=1 the face says so to every mounted resource before any
|
|
133
|
+
// module starts ({§module-phases}); the daemon refuses to run authenticating without one.
|
|
134
|
+
if (this.#opts.authenticates)
|
|
135
|
+
seam.credentials.publish({ issuer: (req) => this.#issuer(req) });
|
|
108
136
|
}
|
|
109
137
|
// {§agui-listener-admission} — the host admits traffic after every module has started.
|
|
110
138
|
async start(seam) {
|
|
@@ -114,9 +142,20 @@ class Module {
|
|
|
114
142
|
throw new Error("plurnk-agui: module already activated");
|
|
115
143
|
seam.registerHttpRoute("/agui", (req, res) => this.#route(req, res));
|
|
116
144
|
this.#seam = seam;
|
|
145
|
+
this.#listener = () => seam.httpAddress();
|
|
117
146
|
this.#registerActions();
|
|
118
147
|
this.#portal = new Portal(seam);
|
|
119
148
|
this.#portal.start();
|
|
149
|
+
if (this.#opts.authenticates) {
|
|
150
|
+
// {§agui-oauth} — the authority's issuing face mounts beside the resource it protects.
|
|
151
|
+
this.#oauth = new OAuthServer({ credentials: seam.credentials, opts: this.#opts, issuer: (req) => this.#issuer(req) });
|
|
152
|
+
for (const prefix of this.mounts) {
|
|
153
|
+
if (prefix !== "/agui")
|
|
154
|
+
seam.registerHttpRoute(prefix, (req, res) => this.#oauthRoute(req, res));
|
|
155
|
+
}
|
|
156
|
+
// {§agui-oauth-revocation} — a revoked family's open Runs end; their loops continue.
|
|
157
|
+
this.#offRevoked = seam.credentials.onRevoked((family) => this.#portal.failFamily(family, runErrorEvents(credentialRevokedProblem())));
|
|
158
|
+
}
|
|
120
159
|
this.#activated = true;
|
|
121
160
|
}
|
|
122
161
|
stop() {
|
|
@@ -127,8 +166,28 @@ class Module {
|
|
|
127
166
|
if (!this.#activated)
|
|
128
167
|
return;
|
|
129
168
|
this.#activated = false;
|
|
169
|
+
this.#offRevoked?.();
|
|
130
170
|
this.#portal.stop();
|
|
131
171
|
}
|
|
172
|
+
async #oauthRoute(req, res) {
|
|
173
|
+
if (this.#stopped) {
|
|
174
|
+
writeHttpProblem(res, serviceStoppingProblem());
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (this.#opts.allowOrigin.length > 0) {
|
|
178
|
+
res.setHeader("access-control-allow-origin", this.#opts.allowOrigin);
|
|
179
|
+
res.setHeader("access-control-allow-headers", "content-type, authorization");
|
|
180
|
+
}
|
|
181
|
+
if (req.method === "OPTIONS") {
|
|
182
|
+
res.writeHead(204).end();
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (this.#oauth === null || !(await this.#oauth.handle(req, res))) {
|
|
186
|
+
writeHttpProblem(res, httpProblem("route-not-found", 404, "The requested HTTP route does not exist.", {
|
|
187
|
+
method: req.method ?? null, path: req.url ?? null, stage: "routing", retryable: false,
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
132
191
|
async #route(req, res) {
|
|
133
192
|
if (this.#stopped) {
|
|
134
193
|
writeHttpProblem(res, serviceStoppingProblem());
|
|
@@ -148,20 +207,22 @@ class Module {
|
|
|
148
207
|
res.writeHead(204).end();
|
|
149
208
|
return;
|
|
150
209
|
}
|
|
151
|
-
// The perimeter ({§agui-http-authorization}): bearer
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
210
|
+
// The perimeter ({§agui-http-authorization}): bearer admission before any body read.
|
|
211
|
+
let principal = "anonymous";
|
|
212
|
+
let family = null;
|
|
213
|
+
if (this.#oauth !== null) {
|
|
214
|
+
const admission = this.#oauth.admit(req, "agui");
|
|
215
|
+
if (!admission.ok) {
|
|
216
|
+
res.setHeader("www-authenticate", admission.challenge);
|
|
217
|
+
writeHttpProblem(res, admission.problem);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
({ principal, family } = admission);
|
|
160
221
|
}
|
|
161
222
|
if (req.method === "POST" && req.url === "/agui")
|
|
162
|
-
return await this.#runs.run(req, res);
|
|
223
|
+
return await this.#runs.run(req, res, false, principal, family);
|
|
163
224
|
if (req.method === "POST" && req.url === "/agui/connect")
|
|
164
|
-
return await this.#runs.run(req, res, true);
|
|
225
|
+
return await this.#runs.run(req, res, true, principal, family);
|
|
165
226
|
writeHttpProblem(res, httpProblem("route-not-found", 404, "The requested HTTP route does not exist.", {
|
|
166
227
|
method: req.method ?? null,
|
|
167
228
|
path: req.url ?? null,
|
|
@@ -191,18 +252,21 @@ class Module {
|
|
|
191
252
|
res.end();
|
|
192
253
|
}
|
|
193
254
|
}
|
|
194
|
-
//
|
|
195
|
-
// ({§agui-thread-binding}) — selected by name via
|
|
196
|
-
// `forwardedProps.plurnk.workspace`; attach it if it exists, create it with EXACTLY that
|
|
197
|
-
// name if it doesn't. No prefixes, no forged names, no dual lookup. The workspace is
|
|
198
|
-
// REQUIRED: a worker has no existence without a world, so its absence is a contract
|
|
199
|
-
// violation the client must fix — never a workspace forged from the threadId.
|
|
200
|
-
// The threadId is the CONVERSATION over that world — resolved to a worker by
|
|
201
|
-
// #conversationWorker ({§agui-thread-binding}: the three doors are ensureModelWorker, forkWorker,
|
|
202
|
-
// createConversationWorker; a name resolves among model-origin workers only, so a client
|
|
203
|
-
// connection's worker or the runtime actor is never a conversation).
|
|
255
|
+
// {§agui-thread-binding} Opaque references, qualified IDs, and explicit workspace selection.
|
|
204
256
|
async #envelope(threadId, forwarded, options = {}) {
|
|
257
|
+
const qualified = ThreadAddress.parse(threadId);
|
|
258
|
+
if (qualified !== null)
|
|
259
|
+
return { env: await this.#seam.attachWorkspace(qualified), reattached: true };
|
|
205
260
|
const workspace = forwarded?.workspace;
|
|
261
|
+
if (workspace === undefined) {
|
|
262
|
+
const reference = { namespace: "agui", reference: threadId };
|
|
263
|
+
const binding = options.worker === true
|
|
264
|
+
? await this.#seam.ensureWorkerReference(reference)
|
|
265
|
+
: await this.#seam.readWorkerReference(reference);
|
|
266
|
+
if (binding === null)
|
|
267
|
+
throw new HttpProblemError(httpProblem("thread-not-found", 404, "The thread has no conversation.", { threadId, stage: "request-validation", retryable: false }));
|
|
268
|
+
return { env: await this.#seam.attachWorkspace(binding), reattached: true };
|
|
269
|
+
}
|
|
206
270
|
if (typeof workspace !== "string" || workspace.length === 0) {
|
|
207
271
|
throw new HttpProblemError(httpProblem("workspace-required", 400, "forwardedProps.plurnk.workspace must name a workspace.", {
|
|
208
272
|
stage: "request-validation",
|
|
@@ -210,8 +274,11 @@ class Module {
|
|
|
210
274
|
retryable: false,
|
|
211
275
|
}));
|
|
212
276
|
}
|
|
213
|
-
|
|
214
|
-
|
|
277
|
+
return await this.#namedWorkspace(workspace, forwarded, options);
|
|
278
|
+
}
|
|
279
|
+
// {§agui-thread-binding} Workspace labels are selected literally, never parsed as thread addresses.
|
|
280
|
+
async #namedWorkspace(workspace, forwarded, options = {}) {
|
|
281
|
+
const cached = await this.#currentEnvelope(workspace);
|
|
215
282
|
if (cached !== undefined)
|
|
216
283
|
return { env: cached, reattached: true };
|
|
217
284
|
const previous = this.#workspaceAcquisitions.get(workspace);
|
|
@@ -219,11 +286,11 @@ class Module {
|
|
|
219
286
|
this.#workspaceAcquisitions.set(workspace, acquisition.promise);
|
|
220
287
|
try {
|
|
221
288
|
await previous;
|
|
222
|
-
const acquired = this.#
|
|
289
|
+
const acquired = await this.#currentEnvelope(workspace);
|
|
223
290
|
if (acquired !== undefined)
|
|
224
291
|
return { env: acquired, reattached: true };
|
|
225
292
|
const result = await this.#openWorkspace(workspace, forwarded, options);
|
|
226
|
-
this.#
|
|
293
|
+
this.#workspaceEnvelopes.set(workspace, result.env);
|
|
227
294
|
return result;
|
|
228
295
|
}
|
|
229
296
|
finally {
|
|
@@ -232,6 +299,17 @@ class Module {
|
|
|
232
299
|
this.#workspaceAcquisitions.delete(workspace);
|
|
233
300
|
}
|
|
234
301
|
}
|
|
302
|
+
// {§agui-thread-binding} A rename retires name selection; stable thread addresses do not use this cache.
|
|
303
|
+
async #currentEnvelope(workspace) {
|
|
304
|
+
const cached = this.#workspaceEnvelopes.get(workspace);
|
|
305
|
+
if (cached === undefined)
|
|
306
|
+
return undefined;
|
|
307
|
+
const current = (await this.#seam.listWorkspaces()).find(({ id }) => id === cached.workspaceId);
|
|
308
|
+
if (current?.name === workspace)
|
|
309
|
+
return cached;
|
|
310
|
+
this.#workspaceEnvelopes.delete(workspace);
|
|
311
|
+
return undefined;
|
|
312
|
+
}
|
|
235
313
|
async #openWorkspace(workspace, forwarded, options) {
|
|
236
314
|
const known = (await this.#seam.listWorkspaces()).find((s) => s.name === workspace);
|
|
237
315
|
let env;
|
|
@@ -241,13 +319,12 @@ class Module {
|
|
|
241
319
|
reattached = true;
|
|
242
320
|
}
|
|
243
321
|
else if (options.create === false) {
|
|
244
|
-
// {§agui-
|
|
245
|
-
//
|
|
246
|
-
|
|
247
|
-
throw new HttpProblemError(httpProblem("workspace-not-found", 404, `No workspace named ${JSON.stringify(workspace)} exists; an action never creates one.`, {
|
|
322
|
+
// {§agui-action-binding} — a Run that attaches only addresses a workspace that exists; a name that
|
|
323
|
+
// does not is the client's error, never a workspace minted on its behalf.
|
|
324
|
+
throw new HttpProblemError(httpProblem("workspace-not-found", 404, `No workspace named ${JSON.stringify(workspace)} exists.`, {
|
|
248
325
|
stage: "request-validation",
|
|
249
326
|
workspace,
|
|
250
|
-
recovery: "Name the existing workspace in forwardedProps.plurnk.workspace, or create it with workspace.create or a
|
|
327
|
+
recovery: "Name the existing workspace in forwardedProps.plurnk.workspace, or create it with workspace.create or a message Run.",
|
|
251
328
|
retryable: false,
|
|
252
329
|
}));
|
|
253
330
|
}
|
|
@@ -268,18 +345,37 @@ class Module {
|
|
|
268
345
|
}
|
|
269
346
|
return { env, reattached };
|
|
270
347
|
}
|
|
271
|
-
//
|
|
272
|
-
//
|
|
273
|
-
//
|
|
274
|
-
|
|
275
|
-
|
|
348
|
+
// {§agui-thread-binding} {§agui-action-binding} — the threadId names its worker by its immutable name,
|
|
349
|
+
// never compared with the workspace's; only an act addressed to the worker creates it, and every other
|
|
350
|
+
// binding requires it. Cached per workspace identity and threadId: worker names are immutable, so a
|
|
351
|
+
// binding never rots. Durable capability changes use workspace.capabilities.set; approval ownership is
|
|
352
|
+
// durable in Core.
|
|
353
|
+
async #boundWorker(threadId, env, binding, forwarded) {
|
|
354
|
+
const qualified = ThreadAddress.parse(threadId);
|
|
355
|
+
if (qualified === null && forwarded?.workspace === undefined) {
|
|
356
|
+
const reference = await this.#seam.readWorkerReference({ namespace: "agui", reference: threadId });
|
|
357
|
+
if (reference === null || reference.workspaceId !== env.workspaceId)
|
|
358
|
+
throw new Error("Thread reference is absent from its resolved workspace.");
|
|
359
|
+
return reference.workerId;
|
|
360
|
+
}
|
|
361
|
+
const workerName = qualified?.workerName ?? threadId;
|
|
362
|
+
const key = JSON.stringify([env.workspaceId, workerName]);
|
|
276
363
|
const cached = this.#threadWorkers.get(key);
|
|
277
364
|
if (cached !== undefined)
|
|
278
|
-
return cached;
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
365
|
+
return await cached;
|
|
366
|
+
if (binding === "required") {
|
|
367
|
+
const id = await this.#modelWorker(workerName, env.workspaceId);
|
|
368
|
+
if (id === undefined) {
|
|
369
|
+
throw new HttpProblemError(httpProblem("worker-not-found", 404, `No model worker named ${JSON.stringify(workerName)} exists in workspace ${JSON.stringify(env.workspaceName)}.`, {
|
|
370
|
+
stage: "request-validation", workspace: env.workspaceName, worker: threadId,
|
|
371
|
+
recovery: "Name an existing model worker, or create one by sending it a message.", retryable: false,
|
|
372
|
+
}));
|
|
373
|
+
}
|
|
374
|
+
this.#threadWorkers.set(key, Promise.resolve(id));
|
|
375
|
+
return id;
|
|
376
|
+
}
|
|
377
|
+
const pending = (async () => await this.#modelWorker(workerName, env.workspaceId)
|
|
378
|
+
?? (await this.#seam.createWorker({ workspaceId: env.workspaceId, name: workerName })).workerId)();
|
|
283
379
|
this.#threadWorkers.set(key, pending);
|
|
284
380
|
try {
|
|
285
381
|
return await pending;
|
|
@@ -289,6 +385,52 @@ class Module {
|
|
|
289
385
|
throw cause;
|
|
290
386
|
}
|
|
291
387
|
}
|
|
388
|
+
// {§agui-thread-binding} The model worker the thread resolves to, when it exists; reading creates nothing. It is
|
|
389
|
+
// also the worker a person's client operation acts for ({§actor-boundary-client-operations}).
|
|
390
|
+
async #threadWorker(threadId, workspaceId, forwarded) {
|
|
391
|
+
const qualified = ThreadAddress.parse(threadId);
|
|
392
|
+
if (qualified !== null && qualified.workspaceId !== workspaceId)
|
|
393
|
+
return undefined;
|
|
394
|
+
if (qualified === null && forwarded?.workspace === undefined) {
|
|
395
|
+
const reference = await this.#seam.readWorkerReference({ namespace: "agui", reference: threadId });
|
|
396
|
+
return reference?.workspaceId === workspaceId ? reference.workerId : undefined;
|
|
397
|
+
}
|
|
398
|
+
return this.#modelWorker(qualified?.workerName ?? threadId, workspaceId);
|
|
399
|
+
}
|
|
400
|
+
async #modelWorker(name, workspaceId) {
|
|
401
|
+
const worker = await this.#seam.readWorker({ workspaceId, identity: { name } });
|
|
402
|
+
return worker?.origin === "model" ? worker.id : undefined;
|
|
403
|
+
}
|
|
404
|
+
// {§agui-run-input} Resolve retained identity without creating a conversation or claiming its owner.
|
|
405
|
+
async #conversation(threadId, forwarded) {
|
|
406
|
+
const qualified = ThreadAddress.parse(threadId);
|
|
407
|
+
if (qualified !== null) {
|
|
408
|
+
const workerId = await this.#threadWorker(threadId, qualified.workspaceId, forwarded);
|
|
409
|
+
return workerId === undefined ? null : { workspaceId: qualified.workspaceId, workerId };
|
|
410
|
+
}
|
|
411
|
+
const workspaceName = forwarded?.workspace;
|
|
412
|
+
if (workspaceName === undefined)
|
|
413
|
+
return this.#seam.readWorkerReference({ namespace: "agui", reference: threadId });
|
|
414
|
+
if (typeof workspaceName !== "string")
|
|
415
|
+
return null;
|
|
416
|
+
const workspace = (await this.#seam.listWorkspaces()).find(({ name }) => name === workspaceName);
|
|
417
|
+
if (workspace === undefined)
|
|
418
|
+
return null;
|
|
419
|
+
const workerId = await this.#threadWorker(threadId, workspace.id, forwarded);
|
|
420
|
+
return workerId === undefined ? null : { workspaceId: workspace.id, workerId };
|
|
421
|
+
}
|
|
422
|
+
// {§agui-action-binding} — what an action binds of the thread's worker. Reached only for a registered
|
|
423
|
+
// action whose input its schema admits: any other is answered on the control path.
|
|
424
|
+
#actionBinding({ kind, params }) {
|
|
425
|
+
const action = this.#actions.get(kind);
|
|
426
|
+
if (WORKER_CREATING_ACTIONS.has(kind))
|
|
427
|
+
return "create";
|
|
428
|
+
if (WORKER_READING_ACTIONS.has(kind))
|
|
429
|
+
return typeof params.workerId === "number" ? "attach" : "required";
|
|
430
|
+
if (WORKER_ACTIONS.has(kind))
|
|
431
|
+
return "required";
|
|
432
|
+
return action.scope === "worker" ? "required" : "none";
|
|
433
|
+
}
|
|
292
434
|
async #workerStatus(workspaceId, workerId) {
|
|
293
435
|
const [{ model }, loops, children] = await Promise.all([
|
|
294
436
|
this.#seam.readWorkerModel({ workspaceId, workerId }),
|
|
@@ -296,12 +438,12 @@ class Module {
|
|
|
296
438
|
this.#seam.listWorkers(workspaceId, { parentWorkerId: workerId }),
|
|
297
439
|
]);
|
|
298
440
|
const loop = selectWorkerLoop(loops);
|
|
299
|
-
const
|
|
300
|
-
return statusState(model, loop,
|
|
441
|
+
const spend = await this.#seam.workerAccounting({ workspaceId, workerId });
|
|
442
|
+
return statusState(model, loop, spendState(spend), aliveChildren(children));
|
|
301
443
|
}
|
|
302
|
-
// A control-plane AG-UI Run: no
|
|
444
|
+
// A control-plane AG-UI Run: no workspace bound. Open the SSE, execute the daemon verb, answer on
|
|
303
445
|
// our own stream. No Portal thread, no model worker, and no ephemeral workspace.
|
|
304
|
-
async #controlRun(action, input, res) {
|
|
446
|
+
async #controlRun(action, input, res, principal) {
|
|
305
447
|
res.writeHead(200, { "content-type": "text/event-stream", "cache-control": "no-cache", "connection": "keep-alive" });
|
|
306
448
|
const emit = (e) => { res.write(`data: ${JSON.stringify(e)}\n\n`); };
|
|
307
449
|
emit({ type: EventType.RUN_STARTED, threadId: input.threadId, runId: input.runId });
|
|
@@ -310,7 +452,7 @@ class Module {
|
|
|
310
452
|
emit({ type: EventType.CUSTOM, name: "plurnk.notice", value: notice });
|
|
311
453
|
}
|
|
312
454
|
}
|
|
313
|
-
const outcome = await this.#action(action, input, null)
|
|
455
|
+
const outcome = await this.#action(action, input, null, undefined, principal, undefined)
|
|
314
456
|
.catch((err) => {
|
|
315
457
|
console.error(`AG-UI action '${action.kind}' failed:`, err);
|
|
316
458
|
const problem = Problems.fromError(err);
|
|
@@ -318,8 +460,7 @@ class Module {
|
|
|
318
460
|
? actionFailure("action-failed", "The action failed unexpectedly.", 500)
|
|
319
461
|
: { ok: false, problem };
|
|
320
462
|
});
|
|
321
|
-
emit(
|
|
322
|
-
emit({ type: EventType.RUN_FINISHED, threadId: input.threadId, runId: input.runId, outcome: { type: "success" } });
|
|
463
|
+
emit({ type: EventType.RUN_FINISHED, threadId: input.threadId, runId: input.runId, outcome: { type: "success" }, result: actionRunResult(action.kind, outcome) });
|
|
323
464
|
res.end();
|
|
324
465
|
}
|
|
325
466
|
// Discovery is a projection of the executable registry, not a second inventory.
|
|
@@ -340,7 +481,7 @@ class Module {
|
|
|
340
481
|
display,
|
|
341
482
|
});
|
|
342
483
|
}
|
|
343
|
-
async #action(a, input, env,
|
|
484
|
+
async #action(a, input, env, boundWorkerId, principal, onLoop) {
|
|
344
485
|
const action = this.#actions.get(a.kind);
|
|
345
486
|
if (action === undefined) {
|
|
346
487
|
return actionFailure("unknown-action", `Action '${a.kind}' is not registered.`, 404, {
|
|
@@ -359,9 +500,9 @@ class Module {
|
|
|
359
500
|
});
|
|
360
501
|
}
|
|
361
502
|
try {
|
|
362
|
-
if (action.scope !== "
|
|
363
|
-
|
|
364
|
-
const outcome = await action.execute(a.params, input, env,
|
|
503
|
+
if (action.scope !== "daemon")
|
|
504
|
+
Module.#requireWorkspace(a.kind, env);
|
|
505
|
+
const outcome = await action.execute(a.params, input, env, boundWorkerId, principal, onLoop);
|
|
365
506
|
if (!outcome.ok)
|
|
366
507
|
return outcome;
|
|
367
508
|
const projected = Validator.validateJsonSchemaInstance(action.outputSchema, outcome.result);
|
|
@@ -379,6 +520,4 @@ class Module {
|
|
|
379
520
|
}
|
|
380
521
|
}
|
|
381
522
|
}
|
|
382
|
-
_a = Module;
|
|
383
|
-
export default Module;
|
|
384
523
|
//# sourceMappingURL=Module.js.map
|
package/dist/Module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Module.js","sourceRoot":"","sources":["../src/Module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Module.js","sourceRoot":"","sources":["../src/Module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import type { CredentialAuthority, ProblemDetails } from "@plurnk/plurnk-contracts";
|
|
3
|
+
import { type ResolvedModuleOptions } from "./config.ts";
|
|
4
|
+
export type Admission = {
|
|
5
|
+
readonly ok: true;
|
|
6
|
+
readonly principal: string;
|
|
7
|
+
readonly family: string | null;
|
|
8
|
+
} | {
|
|
9
|
+
readonly ok: false;
|
|
10
|
+
readonly problem: ProblemDetails;
|
|
11
|
+
readonly challenge: string;
|
|
12
|
+
};
|
|
13
|
+
export default class OAuthServer {
|
|
14
|
+
#private;
|
|
15
|
+
constructor({ credentials, opts, issuer, now }: {
|
|
16
|
+
readonly credentials: CredentialAuthority;
|
|
17
|
+
readonly opts: ResolvedModuleOptions;
|
|
18
|
+
readonly issuer: (req: Pick<IncomingMessage, "headers">) => string;
|
|
19
|
+
readonly now?: () => number;
|
|
20
|
+
});
|
|
21
|
+
resource(req: Pick<IncomingMessage, "headers">): string;
|
|
22
|
+
/** {§agui-oauth-endpoints} RFC 8414 */
|
|
23
|
+
metadata(req: Pick<IncomingMessage, "headers">): Record<string, unknown>;
|
|
24
|
+
/** {§agui-oauth-endpoints} RFC 9728 */
|
|
25
|
+
resourceMetadata(req: Pick<IncomingMessage, "headers">): Record<string, unknown>;
|
|
26
|
+
admit(req: IncomingMessage, scope: string): Admission;
|
|
27
|
+
/** Routes one request under `/oauth` or a well-known document; answers true when it was one of ours. */
|
|
28
|
+
handle(req: IncomingMessage, res: ServerResponse): Promise<boolean>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=OAuthServer.d.ts.map
|