theokit 0.68.0 → 0.69.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 (126) hide show
  1. package/README.md +21 -0
  2. package/dist/{actions-virtual-module-SE44BKR4.js → actions-virtual-module-DH3N34I6.js} +6 -6
  3. package/dist/{actions-virtual-module-3OPYLD76.js → actions-virtual-module-OMIFGXK6.js} +3 -3
  4. package/dist/adapters/agent-mount.d.ts +190 -2
  5. package/dist/adapters/agent-mount.js +18 -3
  6. package/dist/adapters/security-headers.d.ts +17 -1
  7. package/dist/adapters/security-headers.js +7 -0
  8. package/dist/adapters/security-headers.js.map +1 -1
  9. package/dist/{agent-UBDDP2L5.js → agent-7RPGAKTY.js} +3 -3
  10. package/dist/{app-typed-client-RAFEBA7S.js → app-typed-client-C4LRUSIS.js} +6 -6
  11. package/dist/{app-typed-client-BE3PV3JY.js → app-typed-client-R6OUJZEE.js} +3 -3
  12. package/dist/{aws-lambda-R76PWR27.js → aws-lambda-OCJM5YGB.js} +35 -23
  13. package/dist/aws-lambda-OCJM5YGB.js.map +1 -0
  14. package/dist/{build-U4HVYY6F.js → build-CGFKWZ73.js} +10 -5
  15. package/dist/build-CGFKWZ73.js.map +1 -0
  16. package/dist/{bun-NPBIAWSU.js → bun-KRUAWYRW.js} +51 -39
  17. package/dist/bun-KRUAWYRW.js.map +1 -0
  18. package/dist/{chunk-GQNBZDYK.js → chunk-2FHNJ7LI.js} +1 -1
  19. package/dist/{chunk-GQNBZDYK.js.map → chunk-2FHNJ7LI.js.map} +1 -1
  20. package/dist/chunk-3T5XLDOH.js +807 -0
  21. package/dist/chunk-3T5XLDOH.js.map +1 -0
  22. package/dist/{chunk-GDF2XQOO.js → chunk-425FJKKO.js} +5 -3
  23. package/dist/chunk-425FJKKO.js.map +1 -0
  24. package/dist/{chunk-7THO4PRL.js → chunk-4WB62S22.js} +7 -4
  25. package/dist/{chunk-7THO4PRL.js.map → chunk-4WB62S22.js.map} +1 -1
  26. package/dist/chunk-BDPD5HEO.js +554 -0
  27. package/dist/chunk-BDPD5HEO.js.map +1 -0
  28. package/dist/{chunk-UETVDZBE.js → chunk-BINRCILF.js} +4 -1
  29. package/dist/{chunk-UETVDZBE.js.map → chunk-BINRCILF.js.map} +1 -1
  30. package/dist/{chunk-AROOYXI5.js → chunk-BTDTHXUI.js} +2 -2
  31. package/dist/chunk-FFGP2LGQ.js +465 -0
  32. package/dist/chunk-FFGP2LGQ.js.map +1 -0
  33. package/dist/{chunk-CO7Q75IS.js → chunk-I2H6KRCQ.js} +8 -8
  34. package/dist/{chunk-ENRT6DAU.js → chunk-IDWN2OSG.js} +15 -2
  35. package/dist/chunk-IDWN2OSG.js.map +1 -0
  36. package/dist/{chunk-GAJOZJWD.js → chunk-MOGTMGGA.js} +5 -2
  37. package/dist/chunk-MOGTMGGA.js.map +1 -0
  38. package/dist/{chunk-LADTWXOB.js → chunk-QVXMAHZC.js} +40 -551
  39. package/dist/chunk-QVXMAHZC.js.map +1 -0
  40. package/dist/{chunk-G2NWAVGG.js → chunk-SJ4AW54X.js} +44 -3
  41. package/dist/chunk-SJ4AW54X.js.map +1 -0
  42. package/dist/{chunk-Q7T3UQ4L.js → chunk-SRJBH5E5.js} +16 -738
  43. package/dist/chunk-SRJBH5E5.js.map +1 -0
  44. package/dist/{chunk-QGNSZ2ZK.js → chunk-T2LDLVVV.js} +3 -3
  45. package/dist/{chunk-FYYKMPST.js → chunk-TJPENLGQ.js} +3 -3
  46. package/dist/chunk-V5SSTT3C.js +52 -0
  47. package/dist/chunk-V5SSTT3C.js.map +1 -0
  48. package/dist/chunk-XG6SQUEP.js +27 -0
  49. package/dist/chunk-XG6SQUEP.js.map +1 -0
  50. package/dist/cli/index.js +6 -6
  51. package/dist/client/index.d.ts +20 -0
  52. package/dist/client/index.js.map +1 -1
  53. package/dist/{cloudflare-5HU56XIH.js → cloudflare-GK4VD3EU.js} +36 -13
  54. package/dist/cloudflare-GK4VD3EU.js.map +1 -0
  55. package/dist/{define-middleware-D2n71Svm.d.ts → define-middleware-BOHpPOBs.d.ts} +1 -1
  56. package/dist/{deno-deploy-BXOQ45LD.js → deno-deploy-WMNXRVGL.js} +37 -36
  57. package/dist/deno-deploy-WMNXRVGL.js.map +1 -0
  58. package/dist/{dev-E3USPAWQ.js → dev-72ISY3BP.js} +5 -5
  59. package/dist/{index-B9iVBHJI.d.ts → index-DZ_G5iY2.d.ts} +31 -4
  60. package/dist/index.js +7 -6
  61. package/dist/index.js.map +1 -1
  62. package/dist/{internal-api-OOTVIOH2.js → internal-api-CEZSXGRB.js} +3 -3
  63. package/dist/{internal-api-VAKXXW6F.js → internal-api-XRIBUACB.js} +8 -7
  64. package/dist/match-DaKsL73w.d.ts +28 -0
  65. package/dist/{mcp-7UOQM4FW.js → mcp-S2AOB3RE.js} +3 -3
  66. package/dist/{match-Dw4CNXJH.d.ts → module-loader-DCip7NoL.d.ts} +1 -28
  67. package/dist/{netlify-LPJAPMQ2.js → netlify-VOL54SC7.js} +23 -20
  68. package/dist/netlify-VOL54SC7.js.map +1 -0
  69. package/dist/{preview-GPMF43QX.js → preview-WA4HORUQ.js} +3 -3
  70. package/dist/{registry-UOWTDUFL.js → registry-DDBXDHJ2.js} +7 -7
  71. package/dist/server/cost/index.d.ts +14 -1
  72. package/dist/server/cost/index.js +1 -1
  73. package/dist/server/define/index.d.ts +1 -1
  74. package/dist/server/define/index.js +2 -3
  75. package/dist/server/http/index.d.ts +4 -3
  76. package/dist/server/http/index.js +11 -8
  77. package/dist/server/index.d.ts +5 -4
  78. package/dist/server/index.js +13 -10
  79. package/dist/server/index.js.map +1 -1
  80. package/dist/server/scan/index.d.ts +3 -2
  81. package/dist/{server-boundary-A3HW27C7.js → server-boundary-S3G4CSNK.js} +3 -3
  82. package/dist/{server-boundary-V6PCM22J.js → server-boundary-YN5HAICY.js} +6 -6
  83. package/dist/{start-6WEPXA3X.js → start-ZTMQLNJI.js} +4 -4
  84. package/dist/{vercel-YUZADKGV.js → vercel-LZTDSDJF.js} +42 -28
  85. package/dist/vercel-LZTDSDJF.js.map +1 -0
  86. package/dist/vite-plugin/index.js +7 -6
  87. package/dist/{vite-plugin-WBF5NXGW.js → vite-plugin-Z7AJG3M2.js} +5 -5
  88. package/package.json +4 -4
  89. package/dist/aws-lambda-R76PWR27.js.map +0 -1
  90. package/dist/build-U4HVYY6F.js.map +0 -1
  91. package/dist/bun-NPBIAWSU.js.map +0 -1
  92. package/dist/chunk-6B3CMPE4.js +0 -192
  93. package/dist/chunk-6B3CMPE4.js.map +0 -1
  94. package/dist/chunk-7L7LQ2GU.js +0 -16
  95. package/dist/chunk-7L7LQ2GU.js.map +0 -1
  96. package/dist/chunk-ENRT6DAU.js.map +0 -1
  97. package/dist/chunk-G2NWAVGG.js.map +0 -1
  98. package/dist/chunk-GAJOZJWD.js.map +0 -1
  99. package/dist/chunk-GDF2XQOO.js.map +0 -1
  100. package/dist/chunk-LADTWXOB.js.map +0 -1
  101. package/dist/chunk-O55RLSGG.js +0 -127
  102. package/dist/chunk-O55RLSGG.js.map +0 -1
  103. package/dist/chunk-Q7T3UQ4L.js.map +0 -1
  104. package/dist/cloudflare-5HU56XIH.js.map +0 -1
  105. package/dist/deno-deploy-BXOQ45LD.js.map +0 -1
  106. package/dist/netlify-LPJAPMQ2.js.map +0 -1
  107. package/dist/vercel-YUZADKGV.js.map +0 -1
  108. /package/dist/{actions-virtual-module-SE44BKR4.js.map → actions-virtual-module-DH3N34I6.js.map} +0 -0
  109. /package/dist/{actions-virtual-module-3OPYLD76.js.map → actions-virtual-module-OMIFGXK6.js.map} +0 -0
  110. /package/dist/{agent-UBDDP2L5.js.map → agent-7RPGAKTY.js.map} +0 -0
  111. /package/dist/{app-typed-client-RAFEBA7S.js.map → app-typed-client-C4LRUSIS.js.map} +0 -0
  112. /package/dist/{app-typed-client-BE3PV3JY.js.map → app-typed-client-R6OUJZEE.js.map} +0 -0
  113. /package/dist/{chunk-AROOYXI5.js.map → chunk-BTDTHXUI.js.map} +0 -0
  114. /package/dist/{chunk-CO7Q75IS.js.map → chunk-I2H6KRCQ.js.map} +0 -0
  115. /package/dist/{chunk-QGNSZ2ZK.js.map → chunk-T2LDLVVV.js.map} +0 -0
  116. /package/dist/{chunk-FYYKMPST.js.map → chunk-TJPENLGQ.js.map} +0 -0
  117. /package/dist/{dev-E3USPAWQ.js.map → dev-72ISY3BP.js.map} +0 -0
  118. /package/dist/{internal-api-OOTVIOH2.js.map → internal-api-CEZSXGRB.js.map} +0 -0
  119. /package/dist/{internal-api-VAKXXW6F.js.map → internal-api-XRIBUACB.js.map} +0 -0
  120. /package/dist/{mcp-7UOQM4FW.js.map → mcp-S2AOB3RE.js.map} +0 -0
  121. /package/dist/{preview-GPMF43QX.js.map → preview-WA4HORUQ.js.map} +0 -0
  122. /package/dist/{registry-UOWTDUFL.js.map → registry-DDBXDHJ2.js.map} +0 -0
  123. /package/dist/{server-boundary-A3HW27C7.js.map → server-boundary-S3G4CSNK.js.map} +0 -0
  124. /package/dist/{server-boundary-V6PCM22J.js.map → server-boundary-YN5HAICY.js.map} +0 -0
  125. /package/dist/{start-6WEPXA3X.js.map → start-ZTMQLNJI.js.map} +0 -0
  126. /package/dist/{vite-plugin-WBF5NXGW.js.map → vite-plugin-Z7AJG3M2.js.map} +0 -0
@@ -0,0 +1,554 @@
1
+ import {
2
+ RUN_ID_HEADER,
3
+ SSE_BASE_HEADERS,
4
+ SSE_DONE_FRAME,
5
+ admitAgentRequest,
6
+ agentAccessDenied,
7
+ encodeSse,
8
+ formatSseFrame,
9
+ getApprovalRegistry,
10
+ getRunEventCache,
11
+ makeThreadStartRun,
12
+ mintRunId,
13
+ parseAgentRequestBody,
14
+ readAgentPolicy
15
+ } from "./chunk-MOGTMGGA.js";
16
+ import {
17
+ createServerContext
18
+ } from "./chunk-3T5XLDOH.js";
19
+ import {
20
+ validateCsrfRequest
21
+ } from "./chunk-P6OS7652.js";
22
+ import {
23
+ subjectFromContext
24
+ } from "./chunk-IDWN2OSG.js";
25
+ import {
26
+ extractAppResources,
27
+ handleMcpJsonRpc,
28
+ isMcpPath
29
+ } from "./chunk-TQEE36VD.js";
30
+
31
+ // src/server/agent/agent-card-handler.ts
32
+ import { buildAgentCard, compileLoadedAgentModule } from "@theokit/agents";
33
+ var WELL_KNOWN = /^\/\.well-known\/([^/]+)\/agent-card\.json$/;
34
+ function isAgentCardPath(urlPath) {
35
+ const match = WELL_KNOWN.exec(urlPath);
36
+ return match ? decodeURIComponent(match[1]) : null;
37
+ }
38
+ function toManifestEntry(name, route, mod) {
39
+ const compiled = compileLoadedAgentModule(mod, `agent card for "${name}"`);
40
+ return {
41
+ name,
42
+ route,
43
+ stream: compiled.stream,
44
+ mainLoop: { method: "", strategy: "" },
45
+ guards: [],
46
+ interceptors: [],
47
+ tools: compiled.tools.map((t) => ({
48
+ name: t.name,
49
+ description: t.description,
50
+ approval: false,
51
+ trace: false,
52
+ audit: false
53
+ })),
54
+ subAgents: []
55
+ };
56
+ }
57
+ function handleAgentCard(mod, name, route, baseUrl) {
58
+ try {
59
+ const card = buildAgentCard(toManifestEntry(name, route, mod), { baseUrl });
60
+ return new Response(JSON.stringify(card), {
61
+ status: 200,
62
+ headers: { "content-type": "application/json; charset=utf-8" }
63
+ });
64
+ } catch (err) {
65
+ return new Response(
66
+ JSON.stringify({
67
+ error: {
68
+ code: "AGENT_CARD_FAILED",
69
+ message: err instanceof Error ? err.message : "card build failed"
70
+ }
71
+ }),
72
+ { status: 500, headers: { "content-type": "application/json; charset=utf-8" } }
73
+ );
74
+ }
75
+ }
76
+
77
+ // src/server/agent/handle-agent-run-reconnect.ts
78
+ var RUN_STREAM_PATH = /^\/api\/agents\/([^/]+)\/runs\/([^/]+)\/stream$/;
79
+ function isAgentRunStreamPath(urlPath) {
80
+ const m = RUN_STREAM_PATH.exec(urlPath);
81
+ return m ? { name: decodeURIComponent(m[1]), runId: decodeURIComponent(m[2]) } : null;
82
+ }
83
+ function parseLastEventId(raw) {
84
+ if (raw === null) return -1;
85
+ const n = Number.parseInt(raw, 10);
86
+ return Number.isInteger(n) && n >= 0 ? n : -1;
87
+ }
88
+ function handleAgentRunReconnect(runId, request, cache) {
89
+ if (!cache.has(runId)) {
90
+ return new Response(
91
+ JSON.stringify({ error: { code: "RUN_NOT_FOUND", message: `Unknown run '${runId}'.` } }),
92
+ {
93
+ status: 404,
94
+ headers: { "content-type": "application/json" }
95
+ }
96
+ );
97
+ }
98
+ const afterSeq = parseLastEventId(request.headers.get("last-event-id"));
99
+ const stream = new ReadableStream({
100
+ start(controller) {
101
+ let closed = false;
102
+ const safeEnqueue = (text) => {
103
+ if (closed) return;
104
+ try {
105
+ controller.enqueue(encodeSse(text));
106
+ } catch {
107
+ }
108
+ };
109
+ const close = () => {
110
+ if (closed) return;
111
+ safeEnqueue(SSE_DONE_FRAME);
112
+ closed = true;
113
+ try {
114
+ controller.close();
115
+ } catch {
116
+ }
117
+ };
118
+ const res = cache.attach(
119
+ runId,
120
+ afterSeq,
121
+ (frame) => {
122
+ safeEnqueue(formatSseFrame(frame.seq, frame.data));
123
+ },
124
+ () => {
125
+ close();
126
+ }
127
+ );
128
+ if (!res.known) {
129
+ close();
130
+ return;
131
+ }
132
+ for (const frame of res.replay) {
133
+ safeEnqueue(formatSseFrame(frame.seq, frame.data));
134
+ }
135
+ if (res.ended) {
136
+ close();
137
+ return;
138
+ }
139
+ request.signal.addEventListener("abort", () => {
140
+ res.unsubscribe();
141
+ close();
142
+ });
143
+ }
144
+ });
145
+ return new Response(stream, { headers: { ...SSE_BASE_HEADERS, [RUN_ID_HEADER]: runId } });
146
+ }
147
+
148
+ // src/server/agent/thread-dispatcher.ts
149
+ function postThreadFollowUp(deps, sessionId, message) {
150
+ if (deps.registry.getActive(sessionId) !== null) {
151
+ deps.registry.queue(sessionId, { message });
152
+ return { queued: true };
153
+ }
154
+ return { runId: startAndPump(deps, sessionId, message) };
155
+ }
156
+ function startAndPump(deps, sessionId, message) {
157
+ const runId = mintRunId();
158
+ deps.cache.begin(runId);
159
+ deps.registry.startRun(sessionId, runId);
160
+ pumpIntoCache(deps, sessionId, runId, deps.startRun(sessionId, message));
161
+ return runId;
162
+ }
163
+ function pumpIntoCache(deps, sessionId, runId, chunks) {
164
+ void (async () => {
165
+ try {
166
+ for await (const chunk of chunks) {
167
+ deps.cache.append(runId, JSON.stringify(chunk));
168
+ }
169
+ } catch {
170
+ } finally {
171
+ deps.cache.end(runId);
172
+ const next = deps.registry.endRun(sessionId, runId);
173
+ if (next !== void 0) startAndPump(deps, sessionId, next.message);
174
+ }
175
+ })();
176
+ }
177
+
178
+ // src/server/agent/thread-run-registry.ts
179
+ function createInProcessThreadRunRegistry() {
180
+ const threads = /* @__PURE__ */ new Map();
181
+ const ensure = (sessionId) => {
182
+ let s = threads.get(sessionId);
183
+ if (s === void 0) {
184
+ s = { activeRunId: null, queue: [], waiters: /* @__PURE__ */ new Set() };
185
+ threads.set(sessionId, s);
186
+ }
187
+ return s;
188
+ };
189
+ return {
190
+ getActive(sessionId) {
191
+ return threads.get(sessionId)?.activeRunId ?? null;
192
+ },
193
+ startRun(sessionId, runId) {
194
+ const s = ensure(sessionId);
195
+ s.activeRunId = runId;
196
+ const waiters = [...s.waiters];
197
+ s.waiters.clear();
198
+ for (const cb of waiters) cb(runId);
199
+ },
200
+ endRun(sessionId, runId) {
201
+ const s = threads.get(sessionId);
202
+ if (s?.activeRunId !== runId) return void 0;
203
+ s.activeRunId = null;
204
+ return s.queue.shift();
205
+ },
206
+ queue(sessionId, followUp) {
207
+ ensure(sessionId).queue.push(followUp);
208
+ },
209
+ onNextRun(sessionId, cb) {
210
+ const s = ensure(sessionId);
211
+ s.waiters.add(cb);
212
+ return () => {
213
+ s.waiters.delete(cb);
214
+ };
215
+ }
216
+ };
217
+ }
218
+ var serverRegistry;
219
+ function getThreadRunRegistry() {
220
+ serverRegistry ??= createInProcessThreadRunRegistry();
221
+ return serverRegistry;
222
+ }
223
+
224
+ // src/server/agent/handle-thread-routes.ts
225
+ var THREAD_MESSAGE_PATH = /^\/api\/agents\/([^/]+)\/threads\/([^/]+)\/message$/;
226
+ var THREAD_STREAM_PATH = /^\/api\/agents\/([^/]+)\/threads\/([^/]+)\/stream$/;
227
+ var DEFAULT_IDLE_WAIT_MS = 3e4;
228
+ function matchThread(re, urlPath) {
229
+ const m = re.exec(urlPath);
230
+ return m ? { name: decodeURIComponent(m[1]), sessionId: decodeURIComponent(m[2]) } : null;
231
+ }
232
+ var isThreadMessagePath = (urlPath) => matchThread(THREAD_MESSAGE_PATH, urlPath);
233
+ var isThreadStreamPath = (urlPath) => matchThread(THREAD_STREAM_PATH, urlPath);
234
+ function jsonError(status, code, message) {
235
+ return new Response(JSON.stringify({ error: { code, message } }), {
236
+ status,
237
+ headers: { "content-type": "application/json; charset=utf-8" }
238
+ });
239
+ }
240
+ async function handleThreadMessage(args) {
241
+ const { mod, apiKey, sessionId, request, source, agentName, csrfMode = "strict" } = args;
242
+ if (csrfMode === "strict") {
243
+ const csrf = validateCsrfRequest(request);
244
+ if (!csrf.valid) return jsonError(403, "CSRF_FAILED", `CSRF check failed: ${csrf.reason}`);
245
+ }
246
+ let body = null;
247
+ try {
248
+ body = await request.json();
249
+ } catch {
250
+ }
251
+ const input = parseAgentRequestBody(body);
252
+ if (input === null) {
253
+ return jsonError(400, "BAD_REQUEST", "Request must contain a non-empty message.");
254
+ }
255
+ const result = postThreadFollowUp(
256
+ {
257
+ registry: getThreadRunRegistry(),
258
+ cache: getRunEventCache(),
259
+ // usetheokit/theokit#381 — the request goes with it, so the run's spans join the trace of
260
+ // the caller that queued it instead of opening one of their own.
261
+ startRun: makeThreadStartRun(mod, apiKey, source, agentName, request)
262
+ },
263
+ sessionId,
264
+ input.message
265
+ );
266
+ const headers = { "content-type": "application/json; charset=utf-8" };
267
+ if ("runId" in result) headers[RUN_ID_HEADER] = result.runId;
268
+ return new Response(JSON.stringify(result), { status: 202, headers });
269
+ }
270
+ function handleThreadStream(sessionId, request, registry = getThreadRunRegistry(), cache = getRunEventCache(), idleWaitMs = DEFAULT_IDLE_WAIT_MS) {
271
+ const active = registry.getActive(sessionId);
272
+ if (active !== null && cache.has(active)) {
273
+ return handleAgentRunReconnect(active, request, cache);
274
+ }
275
+ return waitThenAttachStream(sessionId, request, registry, cache, idleWaitMs);
276
+ }
277
+ function waitThenAttachStream(sessionId, request, registry, cache, idleWaitMs) {
278
+ const stream = new ReadableStream({
279
+ start(controller) {
280
+ let closed = false;
281
+ const send = (text) => {
282
+ if (closed) return;
283
+ try {
284
+ controller.enqueue(encodeSse(text));
285
+ } catch {
286
+ }
287
+ };
288
+ let detachAttach;
289
+ const close = () => {
290
+ if (closed) return;
291
+ send(SSE_DONE_FRAME);
292
+ closed = true;
293
+ try {
294
+ controller.close();
295
+ } catch {
296
+ }
297
+ };
298
+ const offNext = registry.onNextRun(sessionId, (runId) => {
299
+ const res = cache.attach(
300
+ runId,
301
+ -1,
302
+ (frame) => {
303
+ send(formatSseFrame(frame.seq, frame.data));
304
+ },
305
+ () => {
306
+ close();
307
+ }
308
+ );
309
+ if (!res.known) {
310
+ close();
311
+ return;
312
+ }
313
+ for (const frame of res.replay) send(formatSseFrame(frame.seq, frame.data));
314
+ if (res.ended) {
315
+ close();
316
+ return;
317
+ }
318
+ detachAttach = res.unsubscribe;
319
+ });
320
+ const teardownWaiter = () => {
321
+ offNext();
322
+ detachAttach?.();
323
+ };
324
+ const timer = setTimeout(() => {
325
+ teardownWaiter();
326
+ close();
327
+ }, idleWaitMs);
328
+ timer.unref();
329
+ request.signal.addEventListener("abort", () => {
330
+ teardownWaiter();
331
+ clearTimeout(timer);
332
+ close();
333
+ });
334
+ }
335
+ });
336
+ return new Response(stream, { headers: { ...SSE_BASE_HEADERS } });
337
+ }
338
+
339
+ // src/server/agent/list-approvals-handler.ts
340
+ var LIST_PATH = /^\/api\/agents\/([^/]+)\/approvals$/;
341
+ function isListApprovalsPath(urlPath) {
342
+ const match = LIST_PATH.exec(urlPath);
343
+ return match ? decodeURIComponent(match[1]) : null;
344
+ }
345
+ function handleListApprovals(registry, subject) {
346
+ const visible = registry.list().filter((approval) => {
347
+ const owner = registry.ownerOf(approval.approvalId);
348
+ return owner === void 0 || owner === subject;
349
+ });
350
+ return new Response(JSON.stringify({ approvals: visible, scope: registry.scope ?? "instance" }), {
351
+ status: 200,
352
+ headers: { "content-type": "application/json; charset=utf-8" }
353
+ });
354
+ }
355
+
356
+ // src/server/agent/serve-aux-routes.ts
357
+ function jsonError2(status, code, message) {
358
+ return new Response(JSON.stringify({ error: { code, message } }), {
359
+ status,
360
+ headers: { "content-type": "application/json; charset=utf-8" }
361
+ });
362
+ }
363
+ function routeFor(deps, name, build) {
364
+ if (name === null) return null;
365
+ const agent = deps.agents.find((a) => a.name === name);
366
+ return agent === void 0 ? null : build(agent);
367
+ }
368
+ function matchGetAuxRoute(verb, urlPath, deps) {
369
+ if (verb !== "GET") return null;
370
+ const card = routeFor(
371
+ deps,
372
+ isAgentCardPath(urlPath),
373
+ (agent) => ({ kind: "card", agent })
374
+ );
375
+ if (card !== null) return card;
376
+ const approvals = routeFor(
377
+ deps,
378
+ isListApprovalsPath(urlPath),
379
+ (agent) => ({ kind: "approvals", agent })
380
+ );
381
+ if (approvals !== null) return approvals;
382
+ const run = isAgentRunStreamPath(urlPath);
383
+ if (run !== null) {
384
+ return routeFor(
385
+ deps,
386
+ run.name,
387
+ (agent) => ({ kind: "run-stream", agent, runId: run.runId })
388
+ );
389
+ }
390
+ const stream = isThreadStreamPath(urlPath);
391
+ if (stream === null) return null;
392
+ return routeFor(
393
+ deps,
394
+ stream.name,
395
+ (agent) => ({ kind: "thread-stream", agent, sessionId: stream.sessionId })
396
+ );
397
+ }
398
+ async function matchPostAuxRoute(verb, urlPath, deps) {
399
+ if (verb !== "POST") return null;
400
+ const msg = isThreadMessagePath(urlPath);
401
+ if (msg !== null) {
402
+ return routeFor(
403
+ deps,
404
+ msg.name,
405
+ (agent2) => ({ kind: "thread-message", agent: agent2, sessionId: msg.sessionId })
406
+ );
407
+ }
408
+ const agent = routeFor(deps, isMcpPath(urlPath), (found) => found);
409
+ if (agent === null) return null;
410
+ const mod = await deps.loadModule(agent.filePath);
411
+ return isMcpExposed(mod) ? { kind: "mcp", agent, mod } : null;
412
+ }
413
+ async function matchAgentAuxRoute(method, urlPath, deps) {
414
+ const verb = method.toUpperCase();
415
+ return matchGetAuxRoute(verb, urlPath, deps) ?? await matchPostAuxRoute(verb, urlPath, deps);
416
+ }
417
+ async function admitAux(deps, agent, params, body) {
418
+ const mod = await deps.loadModule(agent.filePath);
419
+ const resolve2 = deps.resolveSubject;
420
+ const admitted = { subject: null };
421
+ const recording = resolve2 === void 0 ? void 0 : async () => {
422
+ admitted.subject = await resolve2();
423
+ return admitted.subject;
424
+ };
425
+ const decision = await admitAgentRequest(
426
+ readAgentPolicy(mod, agent.filePath),
427
+ recording,
428
+ params,
429
+ body
430
+ );
431
+ const refusal = decision.allowed ? null : agentAccessDenied(decision, params);
432
+ return { refusal, subject: admitted.subject?.id };
433
+ }
434
+ async function serveMatchedAuxRoute(route, request, deps) {
435
+ if (route.kind === "card") {
436
+ const mod = await deps.loadModule(route.agent.filePath);
437
+ return handleAgentCard(mod, route.agent.name, route.agent.agentPath, deps.baseUrl);
438
+ }
439
+ if (route.kind === "approvals") {
440
+ const admission = await admitAux(deps, route.agent, {
441
+ agent: route.agent.name,
442
+ endpoint: "approvals"
443
+ });
444
+ if (admission.refusal !== null) return admission.refusal;
445
+ return handleListApprovals(getApprovalRegistry(), admission.subject);
446
+ }
447
+ if (route.kind === "run-stream") {
448
+ return handleAgentRunReconnect(route.runId, request, getRunEventCache());
449
+ }
450
+ if (route.kind === "mcp") return serveMcpRoute(route, request, deps);
451
+ return serveThreadRoute(route, request, deps);
452
+ }
453
+ async function serveThreadRoute(route, request, deps) {
454
+ const { agent, sessionId } = route;
455
+ if (route.kind === "thread-stream") {
456
+ const { refusal: refusal2 } = await admitAux(deps, agent, {
457
+ agent: agent.name,
458
+ endpoint: "thread-stream",
459
+ sessionId
460
+ });
461
+ return refusal2 ?? handleThreadStream(sessionId, request);
462
+ }
463
+ const { refusal } = await admitAux(deps, agent, {
464
+ agent: agent.name,
465
+ endpoint: "thread-message",
466
+ sessionId
467
+ });
468
+ if (refusal !== null) return refusal;
469
+ if (deps.resolveApiKey === void 0) {
470
+ return jsonError2(
471
+ 501,
472
+ "NOT_CONFIGURED",
473
+ "Thread follow-up requires a provider API key (resolveApiKey was not provided to serveMatchedAuxRoute)."
474
+ );
475
+ }
476
+ const mod = await deps.loadModule(agent.filePath);
477
+ return handleThreadMessage({
478
+ mod,
479
+ // Passed unresolved: `makeThreadStartRun` calls it once the module is compiled and the
480
+ // model is known (theokit#328).
481
+ apiKey: deps.resolveApiKey,
482
+ sessionId,
483
+ request,
484
+ source: `agent "${agent.name}"`,
485
+ // usetheokit/theokit#406 — the label above reads well in an `AgentDefinitionError` and is not
486
+ // a name; the spans get the name, so the same agent is one series whichever route started it.
487
+ agentName: agent.name,
488
+ csrfMode: deps.csrfMode ?? "strict"
489
+ });
490
+ }
491
+ async function serveMcpRoute(route, request, deps) {
492
+ const { agent, mod } = route;
493
+ const mcpParams = { agent: agent.name, endpoint: "mcp" };
494
+ const mcpDecision = await admitAgentRequest(
495
+ readAgentPolicy(mod, agent.filePath),
496
+ deps.resolveSubject,
497
+ mcpParams
498
+ );
499
+ if (!mcpDecision.allowed) return agentAccessDenied(mcpDecision, mcpParams);
500
+ const csrfMode = deps.csrfMode ?? "strict";
501
+ if (csrfMode === "strict") {
502
+ const csrf = validateCsrfRequest(request);
503
+ if (!csrf.valid) return jsonError2(403, "CSRF_FAILED", `CSRF check failed: ${csrf.reason}`);
504
+ }
505
+ let body = null;
506
+ try {
507
+ body = await request.json();
508
+ } catch {
509
+ }
510
+ return handleMcpJsonRpc(mod, agent.name, body, extractAppResources(mod));
511
+ }
512
+ function isMcpExposed(mod) {
513
+ return mod?.mcp === true;
514
+ }
515
+
516
+ // src/server/http/resolve-agent-subject.ts
517
+ function createAgentSubjectResolver(sources) {
518
+ let pending;
519
+ return () => {
520
+ pending ??= resolve(sources);
521
+ return pending;
522
+ };
523
+ }
524
+ async function resolve(sources) {
525
+ const { req, res, loadModule, serverDir, pluginRunner } = sources;
526
+ const produced = serverDir === void 0 ? {} : await createServerContext(req, res, loadModule, serverDir);
527
+ return subjectFrom(produced, pluginRunner);
528
+ }
529
+ function createSubjectResolverFromFactory(createContext, request, response, pluginRunner) {
530
+ let pending;
531
+ return () => {
532
+ pending ??= (async () => subjectFrom(
533
+ // An app with no `context.ts` bakes no factory, and an anonymous caller is the honest
534
+ // answer — not an error, and not a subject invented to fill the slot.
535
+ createContext === void 0 ? {} : await createContext({ request, response }),
536
+ pluginRunner
537
+ ))();
538
+ return pending;
539
+ };
540
+ }
541
+ function subjectFrom(produced, pluginRunner) {
542
+ const ctx = produced ?? {};
543
+ pluginRunner?.applyDecorations(ctx);
544
+ return subjectFromContext(ctx);
545
+ }
546
+
547
+ export {
548
+ isAgentCardPath,
549
+ matchAgentAuxRoute,
550
+ serveMatchedAuxRoute,
551
+ createAgentSubjectResolver,
552
+ createSubjectResolverFromFactory
553
+ };
554
+ //# sourceMappingURL=chunk-BDPD5HEO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/agent/agent-card-handler.ts","../src/server/agent/handle-agent-run-reconnect.ts","../src/server/agent/thread-dispatcher.ts","../src/server/agent/thread-run-registry.ts","../src/server/agent/handle-thread-routes.ts","../src/server/agent/list-approvals-handler.ts","../src/server/agent/serve-aux-routes.ts","../src/server/http/resolve-agent-subject.ts"],"mappings":"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","names":["jsonError","agent","resolve","refusal"]}
@@ -164,6 +164,9 @@ function getApprovalRegistry() {
164
164
  function createInProcessApprovalRegistry() {
165
165
  const pending = /* @__PURE__ */ new Map();
166
166
  return {
167
+ // B-236 — stated rather than left for a caller to infer from the name. This map is one
168
+ // process's, so every answer built from it is one process's.
169
+ scope: "instance",
167
170
  register(approvalId, opts) {
168
171
  return new Promise((resolve) => {
169
172
  const settle = (decision) => {
@@ -218,4 +221,4 @@ export {
218
221
  getApprovalRegistry,
219
222
  resolveProvider
220
223
  };
221
- //# sourceMappingURL=chunk-UETVDZBE.js.map
224
+ //# sourceMappingURL=chunk-BINRCILF.js.map