theokit 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{actions-virtual-module-SQDY3V5X.js → actions-virtual-module-3CDQTWOC.js} +6 -6
- package/dist/{actions-virtual-module-PNPRCEOS.js → actions-virtual-module-EIPXX4ZB.js} +3 -3
- package/dist/adapters/web-shim.d.ts +67 -0
- package/dist/adapters/ws-shim.d.ts +55 -0
- package/dist/agent-events-DosDXkSV.d.ts +94 -0
- package/dist/agents-typed-client-SAWAAH7K.js +142 -0
- package/dist/agents-typed-client-SAWAAH7K.js.map +1 -0
- package/dist/agents-typed-client-UTEQUA63.js +143 -0
- package/dist/agents-typed-client-UTEQUA63.js.map +1 -0
- package/dist/{app-typed-client-5GYEOYP3.js → app-typed-client-7PBFWZUE.js} +3 -3
- package/dist/{app-typed-client-QG7BVZYW.js → app-typed-client-CSOK7NPC.js} +6 -6
- package/dist/audit-log-BQWM5YLG.d.ts +60 -0
- package/dist/body-parser-web-FV5HWCY3.js +71 -0
- package/dist/body-parser-web-FV5HWCY3.js.map +1 -0
- package/dist/boot/index.d.ts +39 -0
- package/dist/{build-QFRLSEZ4.js → build-HXND27XG.js} +11 -11
- package/dist/{chunk-223EFY5X.js → chunk-2J7XU3PW.js} +68 -27
- package/dist/chunk-2J7XU3PW.js.map +1 -0
- package/dist/{chunk-RESN62GB.js → chunk-2KZQPDYR.js} +5 -48
- package/dist/chunk-2KZQPDYR.js.map +1 -0
- package/dist/chunk-3S3BNW5K.js +445 -0
- package/dist/chunk-3S3BNW5K.js.map +1 -0
- package/dist/{chunk-6FYD34NX.js → chunk-BQDGES7C.js} +28 -28
- package/dist/{chunk-6FYD34NX.js.map → chunk-BQDGES7C.js.map} +1 -1
- package/dist/chunk-EXP56GFQ.js +52 -0
- package/dist/chunk-EXP56GFQ.js.map +1 -0
- package/dist/chunk-F4YUPDJ2.js +115 -0
- package/dist/chunk-F4YUPDJ2.js.map +1 -0
- package/dist/{chunk-NAZ4E2GT.js → chunk-KXA37ONC.js} +2 -2
- package/dist/chunk-NHJMZCAS.js +32 -0
- package/dist/chunk-NHJMZCAS.js.map +1 -0
- package/dist/{chunk-43D6XNDR.js → chunk-O62MW4MT.js} +91 -18
- package/dist/chunk-O62MW4MT.js.map +1 -0
- package/dist/chunk-RSVN727G.js +1 -0
- package/dist/{chunk-7CBRKNQA.js → chunk-RYTZYFSD.js} +198 -6
- package/dist/chunk-RYTZYFSD.js.map +1 -0
- package/dist/chunk-UNLA45FY.js +235 -0
- package/dist/chunk-UNLA45FY.js.map +1 -0
- package/dist/{chunk-GFMQJHXX.js → chunk-WR4F4EEZ.js} +1082 -1074
- package/dist/chunk-WR4F4EEZ.js.map +1 -0
- package/dist/{chunk-AD74EAK3.js → chunk-ZSTZXR2D.js} +1 -30
- package/dist/chunk-ZSTZXR2D.js.map +1 -0
- package/dist/cli/index.js +5 -5
- package/dist/client/index.d.ts +418 -0
- package/dist/client/index.js +84 -3
- package/dist/client/index.js.map +1 -1
- package/dist/csrf-BBrEZSBW.d.ts +107 -0
- package/dist/csrf-readiness-store-CjIoub3U.d.ts +43 -0
- package/dist/define-websocket-CdK94O-D.d.ts +64 -0
- package/dist/{dev-GBXOTXUP.js → dev-OWW4XVIH.js} +10 -10
- package/dist/{dev-emit-FEFEDLZF.js → dev-emit-5MDSBP5D.js} +3 -3
- package/dist/{dev-emit-O4EGOSNV.js → dev-emit-QH2YGZXN.js} +2 -2
- package/dist/devtools/entry.d.ts +5 -0
- package/dist/error-envelope-BsNzzAV5.d.ts +62 -0
- package/dist/health-route-C0hk64_U.d.ts +57 -0
- package/dist/index-B40qUSrQ.d.ts +575 -0
- package/dist/index.d.ts +361 -0
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/internal-api-4YTJDITC.js +83 -0
- package/dist/internal-api-EFKZWIYZ.js +66 -0
- package/dist/internal-api-EFKZWIYZ.js.map +1 -0
- package/dist/job-backend-CgC8Xf33.d.ts +68 -0
- package/dist/match-CfbEFRG4.d.ts +26 -0
- package/dist/{openapi-VR6AFBLJ.js → openapi-FHY6HC6I.js} +7 -7
- package/dist/plugin-runner-BGBkzgi0.d.ts +95 -0
- package/dist/plugin-types-DNJGxr4Z.d.ts +79 -0
- package/dist/rate-limit-BdNDZ3vt.d.ts +58 -0
- package/dist/rate-limit-store-BEJnhWdw.d.ts +72 -0
- package/dist/react-query/index.d.ts +33 -0
- package/dist/{registry-Q2TZQLUH.js → registry-34LL7NF4.js} +1 -1
- package/dist/{routes-LRYOIIAI.js → routes-EW7TP7NJ.js} +2 -2
- package/dist/schema-BpH6ivDY.d.ts +74 -0
- package/dist/server/agent/index.d.ts +229 -0
- package/dist/server/agent/index.js +2 -1
- package/dist/server/auth/index.d.ts +419 -0
- package/dist/server/cost/index.d.ts +177 -0
- package/dist/server/cron/index.d.ts +208 -0
- package/dist/server/define/index.d.ts +313 -0
- package/dist/server/define/index.js +4 -2
- package/dist/server/http/index.d.ts +11 -0
- package/dist/server/index.d.ts +848 -0
- package/dist/server/index.js +9 -294
- package/dist/server/index.js.map +1 -1
- package/dist/server/jobs/index.d.ts +348 -0
- package/dist/server/observability/index.d.ts +324 -0
- package/dist/server/plugins/index.d.ts +17 -0
- package/dist/server/rate-limit/index.d.ts +105 -0
- package/dist/server/realtime/index.d.ts +15 -0
- package/dist/server/scan/index.d.ts +126 -0
- package/dist/server/scan/index.js +1 -1
- package/dist/server/security/index.d.ts +193 -0
- package/dist/server/storage/index.d.ts +22 -0
- package/dist/server/webhook/index.d.ts +148 -0
- package/dist/{start-3ZHAXSJE.js → start-KIQ5TTLR.js} +76 -13
- package/dist/start-KIQ5TTLR.js.map +1 -0
- package/dist/storage-manager-C4jsO0Tp.d.ts +89 -0
- package/dist/storage-types-DsDTCPbp.d.ts +96 -0
- package/dist/vite-plugin/index.d.ts +115 -0
- package/dist/vite-plugin/index.js +6 -4
- package/dist/{vite-plugin-WO72VLYR.js → vite-plugin-RK66K26Z.js} +7 -7
- package/dist/vite-plugin-RK66K26Z.js.map +1 -0
- package/package.json +4 -4
- package/dist/chunk-223EFY5X.js.map +0 -1
- package/dist/chunk-3LVRAGAZ.js +0 -73
- package/dist/chunk-3LVRAGAZ.js.map +0 -1
- package/dist/chunk-43D6XNDR.js.map +0 -1
- package/dist/chunk-7CBRKNQA.js.map +0 -1
- package/dist/chunk-AD74EAK3.js.map +0 -1
- package/dist/chunk-GFMQJHXX.js.map +0 -1
- package/dist/chunk-PBEH6NXR.js +0 -44
- package/dist/chunk-PBEH6NXR.js.map +0 -1
- package/dist/chunk-PIVX3DYW.js +0 -142
- package/dist/chunk-PIVX3DYW.js.map +0 -1
- package/dist/chunk-PPPR5DGR.js +0 -1
- package/dist/chunk-RESN62GB.js.map +0 -1
- package/dist/start-3ZHAXSJE.js.map +0 -1
- /package/dist/{actions-virtual-module-SQDY3V5X.js.map → actions-virtual-module-3CDQTWOC.js.map} +0 -0
- /package/dist/{actions-virtual-module-PNPRCEOS.js.map → actions-virtual-module-EIPXX4ZB.js.map} +0 -0
- /package/dist/{app-typed-client-5GYEOYP3.js.map → app-typed-client-7PBFWZUE.js.map} +0 -0
- /package/dist/{app-typed-client-QG7BVZYW.js.map → app-typed-client-CSOK7NPC.js.map} +0 -0
- /package/dist/{build-QFRLSEZ4.js.map → build-HXND27XG.js.map} +0 -0
- /package/dist/{chunk-NAZ4E2GT.js.map → chunk-KXA37ONC.js.map} +0 -0
- /package/dist/{chunk-PPPR5DGR.js.map → chunk-RSVN727G.js.map} +0 -0
- /package/dist/{dev-GBXOTXUP.js.map → dev-OWW4XVIH.js.map} +0 -0
- /package/dist/{dev-emit-FEFEDLZF.js.map → dev-emit-5MDSBP5D.js.map} +0 -0
- /package/dist/{dev-emit-O4EGOSNV.js.map → dev-emit-QH2YGZXN.js.map} +0 -0
- /package/dist/{vite-plugin-WO72VLYR.js.map → internal-api-4YTJDITC.js.map} +0 -0
- /package/dist/{openapi-VR6AFBLJ.js.map → openapi-FHY6HC6I.js.map} +0 -0
- /package/dist/{registry-Q2TZQLUH.js.map → registry-34LL7NF4.js.map} +0 -0
- /package/dist/{routes-LRYOIIAI.js.map → routes-EW7TP7NJ.js.map} +0 -0
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
loadEnv,
|
|
10
10
|
resolveTransformer
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-3S3BNW5K.js";
|
|
12
12
|
import {
|
|
13
13
|
BATCH_PATH,
|
|
14
14
|
TRACE_HEADER,
|
|
@@ -36,10 +36,11 @@ import {
|
|
|
36
36
|
} from "./chunk-JQSKBMXP.js";
|
|
37
37
|
import {
|
|
38
38
|
matchRoute,
|
|
39
|
+
scanAgents,
|
|
39
40
|
scanServerActions,
|
|
40
41
|
scanServerRoutes,
|
|
41
42
|
scanWebSocketRoutes
|
|
42
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-2J7XU3PW.js";
|
|
43
44
|
import {
|
|
44
45
|
CSP_REPORT_PATH,
|
|
45
46
|
CsrfReadinessStore,
|
|
@@ -47,12 +48,21 @@ import {
|
|
|
47
48
|
handleCspReport,
|
|
48
49
|
handleCsrfReadiness
|
|
49
50
|
} from "./chunk-JBCHWRKF.js";
|
|
51
|
+
import {
|
|
52
|
+
validateCsrfRequest
|
|
53
|
+
} from "./chunk-TSLSIRBR.js";
|
|
54
|
+
import {
|
|
55
|
+
resolveProvider
|
|
56
|
+
} from "./chunk-EXP56GFQ.js";
|
|
50
57
|
import {
|
|
51
58
|
generateNonce
|
|
52
59
|
} from "./chunk-C3ZZ56YZ.js";
|
|
53
60
|
import {
|
|
54
61
|
importUserModule
|
|
55
62
|
} from "./chunk-7MQOHNHE.js";
|
|
63
|
+
import {
|
|
64
|
+
uiMessageStreamResponse
|
|
65
|
+
} from "./chunk-NHJMZCAS.js";
|
|
56
66
|
|
|
57
67
|
// src/vite-plugin/index.ts
|
|
58
68
|
import { existsSync as existsSync9 } from "fs";
|
|
@@ -974,6 +984,177 @@ function createActionMiddleware(vite, serverDir, options) {
|
|
|
974
984
|
};
|
|
975
985
|
}
|
|
976
986
|
|
|
987
|
+
// src/vite-plugin/agent-middleware.ts
|
|
988
|
+
import { randomUUID as randomUUID2 } from "crypto";
|
|
989
|
+
|
|
990
|
+
// src/server/agent/mount-agent.ts
|
|
991
|
+
import { compileAgentModule, streamAgentUIMessages } from "@theokit/agents";
|
|
992
|
+
function partText(part) {
|
|
993
|
+
if (typeof part !== "object" || part === null) return "";
|
|
994
|
+
const p = part;
|
|
995
|
+
return p.type === "text" && typeof p.text === "string" ? p.text : "";
|
|
996
|
+
}
|
|
997
|
+
function jsonError(status, code, message) {
|
|
998
|
+
return new Response(JSON.stringify({ error: { code, message } }), {
|
|
999
|
+
status,
|
|
1000
|
+
headers: { "content-type": "application/json" }
|
|
1001
|
+
});
|
|
1002
|
+
}
|
|
1003
|
+
function parseAgentRequestBody(body) {
|
|
1004
|
+
if (typeof body !== "object" || body === null) return null;
|
|
1005
|
+
const b = body;
|
|
1006
|
+
if (Array.isArray(b.messages) && b.messages.length > 0) {
|
|
1007
|
+
const last = b.messages[b.messages.length - 1];
|
|
1008
|
+
const parts = Array.isArray(last.parts) ? last.parts : [];
|
|
1009
|
+
const text = parts.map(partText).join("");
|
|
1010
|
+
if (text.length === 0) return null;
|
|
1011
|
+
const sessionId = typeof b.id === "string" && b.id.length > 0 ? b.id : crypto.randomUUID();
|
|
1012
|
+
return { message: text, sessionId };
|
|
1013
|
+
}
|
|
1014
|
+
if (typeof b.message === "string" && b.message.length > 0) {
|
|
1015
|
+
const sessionId = typeof b.sessionId === "string" && b.sessionId.length > 0 ? b.sessionId : crypto.randomUUID();
|
|
1016
|
+
return { message: b.message, sessionId };
|
|
1017
|
+
}
|
|
1018
|
+
return null;
|
|
1019
|
+
}
|
|
1020
|
+
async function mountAgent(mod, request, apiKey, source = "agent module", csrfMode = "strict") {
|
|
1021
|
+
if (csrfMode !== "off") {
|
|
1022
|
+
const csrf = validateCsrfRequest(request);
|
|
1023
|
+
if (!csrf.valid && csrfMode === "strict") {
|
|
1024
|
+
return jsonError(403, "CSRF_FAILED", `CSRF check failed: ${csrf.reason}`);
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
const compiled = compileAgentModule(mod, source);
|
|
1028
|
+
let body = null;
|
|
1029
|
+
try {
|
|
1030
|
+
body = await request.json();
|
|
1031
|
+
} catch {
|
|
1032
|
+
}
|
|
1033
|
+
const input = parseAgentRequestBody(body);
|
|
1034
|
+
if (input === null) {
|
|
1035
|
+
return jsonError(400, "BAD_REQUEST", "Request must contain a non-empty message or messages[].");
|
|
1036
|
+
}
|
|
1037
|
+
return uiMessageStreamResponse(streamAgentUIMessages(compiled, apiKey, input));
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
// src/server/http/node-web-adapter.ts
|
|
1041
|
+
import { Readable } from "stream";
|
|
1042
|
+
function incomingMessageToWebRequest(req) {
|
|
1043
|
+
const host = pickHeaderString(req.headers.host) ?? "localhost";
|
|
1044
|
+
const url = `http://${host}${req.url ?? "/"}`;
|
|
1045
|
+
const headers = new Headers();
|
|
1046
|
+
for (const [key, value] of Object.entries(req.headers)) {
|
|
1047
|
+
if (value === void 0) continue;
|
|
1048
|
+
if (Array.isArray(value)) {
|
|
1049
|
+
headers.set(key, value.join(", "));
|
|
1050
|
+
} else {
|
|
1051
|
+
headers.set(key, value);
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
const method = (req.method ?? "GET").toUpperCase();
|
|
1055
|
+
const hasBody = method !== "GET" && method !== "HEAD";
|
|
1056
|
+
if (!hasBody) {
|
|
1057
|
+
return new Request(url, { method, headers });
|
|
1058
|
+
}
|
|
1059
|
+
const webStream = Readable.toWeb(req);
|
|
1060
|
+
return new Request(url, {
|
|
1061
|
+
method,
|
|
1062
|
+
headers,
|
|
1063
|
+
body: webStream,
|
|
1064
|
+
// EC-2: Node 18+ requires `duplex: 'half'` when body is a stream.
|
|
1065
|
+
// The `RequestInit` type omits it (Web spec gap); cast accordingly.
|
|
1066
|
+
...{ duplex: "half" }
|
|
1067
|
+
});
|
|
1068
|
+
}
|
|
1069
|
+
async function writeWebResponseToServerResponse(response, res) {
|
|
1070
|
+
const setCookies = response.headers.getSetCookie();
|
|
1071
|
+
if (setCookies.length > 0) {
|
|
1072
|
+
res.setHeader("Set-Cookie", setCookies);
|
|
1073
|
+
}
|
|
1074
|
+
const otherHeaders = {};
|
|
1075
|
+
for (const [key, value] of response.headers.entries()) {
|
|
1076
|
+
if (key.toLowerCase() === "set-cookie") continue;
|
|
1077
|
+
otherHeaders[key] = value;
|
|
1078
|
+
}
|
|
1079
|
+
res.writeHead(response.status, response.statusText, otherHeaders);
|
|
1080
|
+
if (response.body === null) {
|
|
1081
|
+
res.end();
|
|
1082
|
+
return;
|
|
1083
|
+
}
|
|
1084
|
+
const reader = response.body.getReader();
|
|
1085
|
+
try {
|
|
1086
|
+
for (; ; ) {
|
|
1087
|
+
const { done, value } = await reader.read();
|
|
1088
|
+
if (done) break;
|
|
1089
|
+
res.write(value);
|
|
1090
|
+
}
|
|
1091
|
+
res.end();
|
|
1092
|
+
} finally {
|
|
1093
|
+
reader.releaseLock();
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
function pickHeaderString(value) {
|
|
1097
|
+
if (typeof value === "string") return value;
|
|
1098
|
+
if (Array.isArray(value)) {
|
|
1099
|
+
for (const v of value) if (typeof v === "string" && v.length > 0) return v;
|
|
1100
|
+
}
|
|
1101
|
+
return void 0;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
// src/vite-plugin/agent-middleware.ts
|
|
1105
|
+
var PREFIX2 = "/api/agents/";
|
|
1106
|
+
function createAgentMiddleware(vite, projectRoot, csrfMode = "strict") {
|
|
1107
|
+
const loadModule = createViteLoader(vite);
|
|
1108
|
+
return (req, res, next) => {
|
|
1109
|
+
void (async () => {
|
|
1110
|
+
const url = req.url ?? "";
|
|
1111
|
+
if (!url.startsWith(PREFIX2)) {
|
|
1112
|
+
next();
|
|
1113
|
+
return;
|
|
1114
|
+
}
|
|
1115
|
+
const requestId = randomUUID2();
|
|
1116
|
+
const start = Date.now();
|
|
1117
|
+
res.setHeader("x-request-id", requestId);
|
|
1118
|
+
const urlPath = url.split("?")[0];
|
|
1119
|
+
const agent = scanAgents(projectRoot).find((a) => a.agentPath === urlPath);
|
|
1120
|
+
if (!agent) {
|
|
1121
|
+
next();
|
|
1122
|
+
return;
|
|
1123
|
+
}
|
|
1124
|
+
const method = (req.method ?? "POST").toUpperCase();
|
|
1125
|
+
if (method !== "POST") {
|
|
1126
|
+
sendError(
|
|
1127
|
+
res,
|
|
1128
|
+
"METHOD_NOT_ALLOWED",
|
|
1129
|
+
"Agent endpoints accept POST",
|
|
1130
|
+
405,
|
|
1131
|
+
void 0,
|
|
1132
|
+
requestId
|
|
1133
|
+
);
|
|
1134
|
+
logRequest({ method, url, status: 405, duration: Date.now() - start, requestId });
|
|
1135
|
+
return;
|
|
1136
|
+
}
|
|
1137
|
+
try {
|
|
1138
|
+
const mod = await loadModule(agent.filePath);
|
|
1139
|
+
const apiKey = resolveProvider().apiKey;
|
|
1140
|
+
const request = incomingMessageToWebRequest(req);
|
|
1141
|
+
const response = await mountAgent(mod, request, apiKey, agent.filePath, csrfMode);
|
|
1142
|
+
await writeWebResponseToServerResponse(response, res);
|
|
1143
|
+
} catch (err) {
|
|
1144
|
+
sendError(
|
|
1145
|
+
res,
|
|
1146
|
+
"INTERNAL",
|
|
1147
|
+
err instanceof Error ? err.message : "Agent handler failed",
|
|
1148
|
+
500,
|
|
1149
|
+
void 0,
|
|
1150
|
+
requestId
|
|
1151
|
+
);
|
|
1152
|
+
}
|
|
1153
|
+
logRequest({ method, url, status: res.statusCode, duration: Date.now() - start, requestId });
|
|
1154
|
+
})();
|
|
1155
|
+
};
|
|
1156
|
+
}
|
|
1157
|
+
|
|
977
1158
|
// src/vite-plugin/api-middleware.ts
|
|
978
1159
|
function shouldBypassApiMiddleware(url, prefixes) {
|
|
979
1160
|
if (!url.startsWith("/api/")) return true;
|
|
@@ -1303,6 +1484,7 @@ async function runConfigureServer(server, ctx) {
|
|
|
1303
1484
|
disallowed: ctx.disallowed
|
|
1304
1485
|
})
|
|
1305
1486
|
);
|
|
1487
|
+
server.middlewares.use(createAgentMiddleware(server, ctx.projectRoot, ctx.csrfMode));
|
|
1306
1488
|
const servicesProxyPrefixes = ctx.services && Object.keys(ctx.services).length > 0 ? Object.values(ctx.services).map((s) => s.proxy) : [];
|
|
1307
1489
|
const csrfReadinessStore = ctx.csrfReadinessStoreOverride ?? new CsrfReadinessStore();
|
|
1308
1490
|
server.middlewares.use(
|
|
@@ -1348,7 +1530,7 @@ async function runConfigureServer(server, ctx) {
|
|
|
1348
1530
|
server.watcher.on("unlink", handleRouteChange);
|
|
1349
1531
|
if (ctx.resolvedOpenApi !== void 0) {
|
|
1350
1532
|
const openApiCfg = ctx.resolvedOpenApi;
|
|
1351
|
-
const { reEmitOpenApi } = await import("./dev-emit-
|
|
1533
|
+
const { reEmitOpenApi } = await import("./dev-emit-QH2YGZXN.js");
|
|
1352
1534
|
const openApiServerDir = resolve6(ctx.projectRoot, "server");
|
|
1353
1535
|
const openApiDistDir = resolve6(ctx.projectRoot, ctx.resolvedDistDir);
|
|
1354
1536
|
const isRouteFileForOpenApi = (file) => file.startsWith(openApiServerDir) && /\.(ts|tsx|js|mjs)$/.test(file);
|
|
@@ -2334,17 +2516,26 @@ async function theoPluginAsync(rootOrOptions) {
|
|
|
2334
2516
|
})
|
|
2335
2517
|
);
|
|
2336
2518
|
}
|
|
2337
|
-
const { appTypedClientPlugin } = await import("./app-typed-client-
|
|
2519
|
+
const { appTypedClientPlugin } = await import("./app-typed-client-7PBFWZUE.js");
|
|
2338
2520
|
const appClientPlugin = appTypedClientPlugin({
|
|
2339
2521
|
cwd: projectRoot,
|
|
2340
2522
|
serverDir: resolve9(projectRoot, "server"),
|
|
2341
2523
|
distDir: resolve9(projectRoot, ".theokit")
|
|
2342
2524
|
});
|
|
2343
|
-
const { actionsVirtualModule } = await import("./actions-virtual-module-
|
|
2525
|
+
const { actionsVirtualModule } = await import("./actions-virtual-module-EIPXX4ZB.js");
|
|
2344
2526
|
const actionsPlugin = actionsVirtualModule({
|
|
2345
2527
|
serverDir: resolve9(projectRoot, "server"),
|
|
2346
2528
|
distDir: resolve9(projectRoot, ".theokit")
|
|
2347
2529
|
});
|
|
2530
|
+
const { agentsTypedClientPlugin } = await import("./agents-typed-client-SAWAAH7K.js");
|
|
2531
|
+
const { generateManifest } = await import("./internal-api-4YTJDITC.js");
|
|
2532
|
+
const agentsClientPlugin = agentsTypedClientPlugin({
|
|
2533
|
+
projectRoot,
|
|
2534
|
+
distDir: resolve9(projectRoot, ".theokit"),
|
|
2535
|
+
// Agents live at <projectRoot>/agents; generateManifest scans them via the server dir's
|
|
2536
|
+
// parent, which is projectRoot for the canonical layout.
|
|
2537
|
+
scanManifest: () => generateManifest(resolve9(projectRoot, "server"), projectRoot)
|
|
2538
|
+
});
|
|
2348
2539
|
const { serverRoutesHmrPlugin } = await import("./server-routes-hmr-PBHSKCQJ.js");
|
|
2349
2540
|
const routesHmrPlugin = serverRoutesHmrPlugin({
|
|
2350
2541
|
serverDir: resolve9(projectRoot, "server")
|
|
@@ -2355,6 +2546,7 @@ async function theoPluginAsync(rootOrOptions) {
|
|
|
2355
2546
|
...servicesPlugins,
|
|
2356
2547
|
appClientPlugin,
|
|
2357
2548
|
actionsPlugin,
|
|
2549
|
+
agentsClientPlugin,
|
|
2358
2550
|
routesHmrPlugin
|
|
2359
2551
|
];
|
|
2360
2552
|
}
|
|
@@ -2514,4 +2706,4 @@ export {
|
|
|
2514
2706
|
theoPluginAsync,
|
|
2515
2707
|
theoPlugin
|
|
2516
2708
|
};
|
|
2517
|
-
//# sourceMappingURL=chunk-
|
|
2709
|
+
//# sourceMappingURL=chunk-RYTZYFSD.js.map
|