theokit 0.64.0 → 0.65.0-next.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.
Files changed (77) hide show
  1. package/dist/{actions-virtual-module-AD7HFFOF.js → actions-virtual-module-6QVMUINF.js} +2 -2
  2. package/dist/{actions-virtual-module-BKIT7HNS.js → actions-virtual-module-SYV4JN7B.js} +3 -3
  3. package/dist/{agent-PL3FR4HI.js → agent-FYXX5HZD.js} +2 -2
  4. package/dist/{app-typed-client-AJRW3JJV.js → app-typed-client-4S33OHT4.js} +2 -2
  5. package/dist/{app-typed-client-NOXQEEVF.js → app-typed-client-KH27ZGRT.js} +3 -3
  6. package/dist/{build-C7CVA5AK.js → build-ZTJOAOF2.js} +4 -4
  7. package/dist/{chunk-GPX7I5ZY.js → chunk-2XYKRS7Y.js} +69 -11
  8. package/dist/chunk-2XYKRS7Y.js.map +1 -0
  9. package/dist/{chunk-ELXOGRY5.js → chunk-3IIKKBOJ.js} +109 -20
  10. package/dist/chunk-3IIKKBOJ.js.map +1 -0
  11. package/dist/{chunk-BQJBFHAY.js → chunk-47OYUMXW.js} +2 -2
  12. package/dist/{chunk-2NARRZPP.js → chunk-4DSRX3CO.js} +2 -2
  13. package/dist/{chunk-4BQIJ4HE.js → chunk-5LRBIP4B.js} +7 -6
  14. package/dist/chunk-5LRBIP4B.js.map +1 -0
  15. package/dist/{chunk-JHUFPH7B.js → chunk-B7GGQQ3F.js} +17 -15
  16. package/dist/chunk-B7GGQQ3F.js.map +1 -0
  17. package/dist/{chunk-5AQRVWSU.js → chunk-HLIHQVNQ.js} +15 -13
  18. package/dist/{chunk-5AQRVWSU.js.map → chunk-HLIHQVNQ.js.map} +1 -1
  19. package/dist/chunk-O2KGDLA7.js +26 -0
  20. package/dist/chunk-O2KGDLA7.js.map +1 -0
  21. package/dist/{chunk-WNJTJRM6.js → chunk-QBGMDKJU.js} +1 -1
  22. package/dist/{chunk-GDZOWQV7.js → chunk-QD5X56I3.js} +44 -4
  23. package/dist/chunk-QD5X56I3.js.map +1 -0
  24. package/dist/{chunk-2PF3TDM2.js → chunk-RE2WE7CD.js} +2 -2
  25. package/dist/{chunk-A3EMTZR2.js → chunk-WAYUHS54.js} +44 -4
  26. package/dist/chunk-WAYUHS54.js.map +1 -0
  27. package/dist/{chunk-6EV6FC7X.js → chunk-ZE2UHAET.js} +3 -3
  28. package/dist/cli/index.js +6 -6
  29. package/dist/{dev-HPUCCB3E.js → dev-Z4GSTAHT.js} +5 -5
  30. package/dist/index.js +2 -2
  31. package/dist/{internal-api-TOUFX6VZ.js → internal-api-J6WBHES5.js} +2 -2
  32. package/dist/{internal-api-TZTO4VMP.js → internal-api-LSB5E7BR.js} +3 -3
  33. package/dist/{mcp-AFLDYTK5.js → mcp-KUICEEPZ.js} +2 -2
  34. package/dist/{preview-M3DWFVKB.js → preview-AH57XVSY.js} +3 -3
  35. package/dist/server/auth/index.d.ts +90 -1
  36. package/dist/server/auth/index.js +5 -1
  37. package/dist/server/http/index.js +2 -1
  38. package/dist/server/index.d.ts +3 -3
  39. package/dist/server/index.js +16 -4
  40. package/dist/server/index.js.map +1 -1
  41. package/dist/server/rate-limit/index.d.ts +131 -1
  42. package/dist/server/rate-limit/index.js +3 -1
  43. package/dist/server/security/index.d.ts +69 -1
  44. package/dist/server/security/index.js +7 -1
  45. package/dist/{server-boundary-Z5LSU7ZW.js → server-boundary-AS2UEMW5.js} +3 -3
  46. package/dist/{server-boundary-FBHI5NZP.js → server-boundary-PXJZNZAX.js} +2 -2
  47. package/dist/{start-QAPAZ2YC.js → start-AL3MJSPH.js} +24 -15
  48. package/dist/start-AL3MJSPH.js.map +1 -0
  49. package/dist/vite-plugin/index.js +2 -2
  50. package/dist/{vite-plugin-ZT2XNAGM.js → vite-plugin-HPBVQNCG.js} +5 -5
  51. package/package.json +16 -9
  52. package/dist/chunk-4BQIJ4HE.js.map +0 -1
  53. package/dist/chunk-A3EMTZR2.js.map +0 -1
  54. package/dist/chunk-ELXOGRY5.js.map +0 -1
  55. package/dist/chunk-GDZOWQV7.js.map +0 -1
  56. package/dist/chunk-GPX7I5ZY.js.map +0 -1
  57. package/dist/chunk-JHUFPH7B.js.map +0 -1
  58. package/dist/start-QAPAZ2YC.js.map +0 -1
  59. /package/dist/{actions-virtual-module-AD7HFFOF.js.map → actions-virtual-module-6QVMUINF.js.map} +0 -0
  60. /package/dist/{actions-virtual-module-BKIT7HNS.js.map → actions-virtual-module-SYV4JN7B.js.map} +0 -0
  61. /package/dist/{agent-PL3FR4HI.js.map → agent-FYXX5HZD.js.map} +0 -0
  62. /package/dist/{app-typed-client-AJRW3JJV.js.map → app-typed-client-4S33OHT4.js.map} +0 -0
  63. /package/dist/{app-typed-client-NOXQEEVF.js.map → app-typed-client-KH27ZGRT.js.map} +0 -0
  64. /package/dist/{build-C7CVA5AK.js.map → build-ZTJOAOF2.js.map} +0 -0
  65. /package/dist/{chunk-BQJBFHAY.js.map → chunk-47OYUMXW.js.map} +0 -0
  66. /package/dist/{chunk-2NARRZPP.js.map → chunk-4DSRX3CO.js.map} +0 -0
  67. /package/dist/{chunk-WNJTJRM6.js.map → chunk-QBGMDKJU.js.map} +0 -0
  68. /package/dist/{chunk-2PF3TDM2.js.map → chunk-RE2WE7CD.js.map} +0 -0
  69. /package/dist/{chunk-6EV6FC7X.js.map → chunk-ZE2UHAET.js.map} +0 -0
  70. /package/dist/{dev-HPUCCB3E.js.map → dev-Z4GSTAHT.js.map} +0 -0
  71. /package/dist/{internal-api-TOUFX6VZ.js.map → internal-api-J6WBHES5.js.map} +0 -0
  72. /package/dist/{internal-api-TZTO4VMP.js.map → internal-api-LSB5E7BR.js.map} +0 -0
  73. /package/dist/{mcp-AFLDYTK5.js.map → mcp-KUICEEPZ.js.map} +0 -0
  74. /package/dist/{preview-M3DWFVKB.js.map → preview-AH57XVSY.js.map} +0 -0
  75. /package/dist/{server-boundary-Z5LSU7ZW.js.map → server-boundary-AS2UEMW5.js.map} +0 -0
  76. /package/dist/{server-boundary-FBHI5NZP.js.map → server-boundary-PXJZNZAX.js.map} +0 -0
  77. /package/dist/{vite-plugin-ZT2XNAGM.js.map → vite-plugin-HPBVQNCG.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import "./chunk-A3EMTZR2.js";
1
+ import "./chunk-WAYUHS54.js";
2
2
  import "./chunk-2BYN7WTW.js";
3
3
  import "./chunk-EYRWD2AB.js";
4
4
  import "./chunk-5GZROLDV.js";
@@ -234,4 +234,4 @@ export const actions = manifest
234
234
  export {
235
235
  actionsVirtualModule
236
236
  };
237
- //# sourceMappingURL=actions-virtual-module-AD7HFFOF.js.map
237
+ //# sourceMappingURL=actions-virtual-module-6QVMUINF.js.map
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import "tsx/esm";
3
- import "./chunk-2NARRZPP.js";
3
+ import "./chunk-4DSRX3CO.js";
4
4
  import "./chunk-UETVDZBE.js";
5
- import "./chunk-GDZOWQV7.js";
5
+ import "./chunk-QD5X56I3.js";
6
6
  import "./chunk-VV2VU3LJ.js";
7
7
  import "./chunk-5VLP3GQ2.js";
8
8
  import "./chunk-C27VRUVN.js";
@@ -218,4 +218,4 @@ export const actions = manifest
218
218
  export {
219
219
  actionsVirtualModule
220
220
  };
221
- //# sourceMappingURL=actions-virtual-module-BKIT7HNS.js.map
221
+ //# sourceMappingURL=actions-virtual-module-SYV4JN7B.js.map
@@ -3,7 +3,7 @@ import "tsx/esm";
3
3
  import {
4
4
  agentCommand,
5
5
  createAgentSsrLoader
6
- } from "./chunk-BQJBFHAY.js";
6
+ } from "./chunk-47OYUMXW.js";
7
7
  import "./chunk-UETVDZBE.js";
8
8
  import "./chunk-5NNFO7R7.js";
9
9
  import "./chunk-Z7CJHDLS.js";
@@ -12,4 +12,4 @@ export {
12
12
  agentCommand,
13
13
  createAgentSsrLoader
14
14
  };
15
- //# sourceMappingURL=agent-PL3FR4HI.js.map
15
+ //# sourceMappingURL=agent-FYXX5HZD.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  scanControllerModules
3
- } from "./chunk-A3EMTZR2.js";
3
+ } from "./chunk-WAYUHS54.js";
4
4
  import "./chunk-2BYN7WTW.js";
5
5
  import "./chunk-EYRWD2AB.js";
6
6
  import "./chunk-5GZROLDV.js";
@@ -427,4 +427,4 @@ export {
427
427
  generateClientDts,
428
428
  shouldReemitForFile
429
429
  };
430
- //# sourceMappingURL=app-typed-client-AJRW3JJV.js.map
430
+ //# sourceMappingURL=app-typed-client-4S33OHT4.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import "tsx/esm";
3
- import "./chunk-2NARRZPP.js";
3
+ import "./chunk-4DSRX3CO.js";
4
4
  import "./chunk-UETVDZBE.js";
5
5
  import {
6
6
  scanControllerModules
7
- } from "./chunk-GDZOWQV7.js";
7
+ } from "./chunk-QD5X56I3.js";
8
8
  import "./chunk-VV2VU3LJ.js";
9
9
  import "./chunk-5VLP3GQ2.js";
10
10
  import "./chunk-C27VRUVN.js";
@@ -411,4 +411,4 @@ export {
411
411
  generateClientDts,
412
412
  shouldReemitForFile
413
413
  };
414
- //# sourceMappingURL=app-typed-client-NOXQEEVF.js.map
414
+ //# sourceMappingURL=app-typed-client-KH27ZGRT.js.map
@@ -3,7 +3,7 @@ import "tsx/esm";
3
3
  import {
4
4
  describeControllerArtifacts,
5
5
  emitControllerArtifacts
6
- } from "./chunk-2PF3TDM2.js";
6
+ } from "./chunk-RE2WE7CD.js";
7
7
  import {
8
8
  validateProjectStructure
9
9
  } from "./chunk-GEQJAFSV.js";
@@ -14,7 +14,7 @@ import {
14
14
  emitOpenApi,
15
15
  loadRoutesForOpenApi
16
16
  } from "./chunk-47VNWTL4.js";
17
- import "./chunk-GDZOWQV7.js";
17
+ import "./chunk-QD5X56I3.js";
18
18
  import "./chunk-C27VRUVN.js";
19
19
  import "./chunk-7UZZHCRN.js";
20
20
  import {
@@ -554,7 +554,7 @@ async function buildCommand(options) {
554
554
  `);
555
555
  }
556
556
  async function runAdapterBuild(target, config, cwd) {
557
- const { theoPluginAsync } = await import("./vite-plugin-ZT2XNAGM.js");
557
+ const { theoPluginAsync } = await import("./vite-plugin-HPBVQNCG.js");
558
558
  const { default: react } = await import("@vitejs/plugin-react");
559
559
  const ctx = {
560
560
  // `react()` may return Plugin or Plugin[] depending on version; spread the
@@ -676,4 +676,4 @@ function relativize3(absPath, root) {
676
676
  export {
677
677
  buildCommand
678
678
  };
679
- //# sourceMappingURL=build-C7CVA5AK.js.map
679
+ //# sourceMappingURL=build-ZTJOAOF2.js.map
@@ -16,19 +16,31 @@ function headerValue(req, name) {
16
16
  if (Array.isArray(raw)) return raw[raw.length - 1];
17
17
  return raw;
18
18
  }
19
- function resolveClientIp(req, trustProxy = false) {
20
- const socketAddress = req.socket?.remoteAddress ?? "unknown";
19
+ function addressFromForwardedHeaders(header, realIpHeader, trustProxy) {
21
20
  const hops = hopCount(trustProxy);
22
- if (hops < 1) return socketAddress;
23
- const forwarded = headerValue(req, "x-forwarded-for");
24
- if (forwarded) {
25
- const entries = forwarded.split(",").map((entry) => entry.trim()).filter(Boolean);
21
+ if (hops < 1) return void 0;
22
+ if (header) {
23
+ const entries = header.split(",").map((entry) => entry.trim()).filter(Boolean);
26
24
  const index = entries.length - hops;
27
25
  if (index >= 0 && index < entries.length) return entries[index];
28
26
  }
29
- const realIp = headerValue(req, "x-real-ip");
30
- if (realIp) return realIp.trim();
31
- return socketAddress;
27
+ const realIp = realIpHeader?.trim();
28
+ return realIp === void 0 || realIp === "" ? void 0 : realIp;
29
+ }
30
+ function resolveClientIp(req, trustProxy = false) {
31
+ const socketAddress = req.socket?.remoteAddress ?? "unknown";
32
+ return addressFromForwardedHeaders(
33
+ headerValue(req, "x-forwarded-for"),
34
+ headerValue(req, "x-real-ip"),
35
+ trustProxy
36
+ ) ?? socketAddress;
37
+ }
38
+ function resolveClientIpFromRequest(request, trustProxy = false) {
39
+ return addressFromForwardedHeaders(
40
+ request.headers.get("x-forwarded-for") ?? void 0,
41
+ request.headers.get("x-real-ip") ?? void 0,
42
+ trustProxy
43
+ );
32
44
  }
33
45
 
34
46
  // src/server/rate-limit/rate-limit-per-route.ts
@@ -202,11 +214,57 @@ function createRouteRateLimiterWeb(config) {
202
214
  };
203
215
  }
204
216
 
217
+ // src/server/rate-limit/rate-limited-guard.ts
218
+ import { TooManyRequestsException } from "@theokit/http";
219
+ function assertCanBucket(options, keyBy) {
220
+ if (options.identify) return;
221
+ if (keyBy === "ip" && (options.trustProxy === void 0 || options.trustProxy === false)) {
222
+ throw new Error(
223
+ "RateLimited: keyBy: 'ip' needs a way to learn the caller's address \u2014 a Web Request has no socket. Declare `trustProxy: <number of proxies in front of the app>` so the address is read from x-forwarded-for, or pass `identify: (request) => ({ clientIp })` for a runtime that knows it another way (e.g. Cloudflare's cf-connecting-ip). Without either, every caller shares one bucket and the first few requests each window refuse everybody."
224
+ );
225
+ }
226
+ if (keyBy === "user") {
227
+ throw new Error(
228
+ "RateLimited: keyBy: 'user' needs `identify: (request) => ({ userId })` \u2014 the framework cannot read your app's notion of a user from a Request. Use keyBy: \"session\" to bucket on the session cookie instead."
229
+ );
230
+ }
231
+ }
232
+ function RateLimited(options) {
233
+ const keyBy = options.keyBy ?? "session";
234
+ assertCanBucket(options, keyBy);
235
+ const config = { max: options.max, windowMs: options.windowMs };
236
+ const limiter = createRouteRateLimiterWeb(
237
+ options.scope === "shared" ? { default: config, keyBy, cookieName: options.cookieName, store: options.store } : {
238
+ routePatterns: [[/^\//, config]],
239
+ keyBy,
240
+ cookieName: options.cookieName,
241
+ store: options.store
242
+ }
243
+ );
244
+ const message = options.message ?? "Rate limit exceeded";
245
+ async function contextFor(request) {
246
+ if (options.identify) return options.identify(request);
247
+ const clientIp = resolveClientIpFromRequest(request, options.trustProxy ?? false);
248
+ return clientIp === void 0 ? {} : { clientIp };
249
+ }
250
+ return class RateLimitedGuard {
251
+ async canActivate(context) {
252
+ const request = context.getRequest();
253
+ const { limited, headers } = await limiter(request, await contextFor(request));
254
+ if (limited) {
255
+ throw new TooManyRequestsException(message, { headers });
256
+ }
257
+ return true;
258
+ }
259
+ };
260
+ }
261
+
205
262
  export {
206
263
  matchRoutePattern,
207
264
  deriveKey,
208
265
  createRouteRateLimiter,
209
266
  deriveKeyFromRequest,
210
- createRouteRateLimiterWeb
267
+ createRouteRateLimiterWeb,
268
+ RateLimited
211
269
  };
212
- //# sourceMappingURL=chunk-GPX7I5ZY.js.map
270
+ //# sourceMappingURL=chunk-2XYKRS7Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/rate-limit/client-ip.ts","../src/server/rate-limit/rate-limit-per-route.ts","../src/server/rate-limit/rate-limited-guard.ts"],"mappings":"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","names":[]}
@@ -88,6 +88,105 @@ function _resetKeyCacheForTests() {
88
88
  keyCache.clear();
89
89
  }
90
90
 
91
+ // src/server/auth/secret-strength.ts
92
+ var MIN_SECRET_LENGTH = 32;
93
+ var MIN_DISTINCT_CHARS = 8;
94
+ var PLACEHOLDER_TERMS = [
95
+ /change[-_ ]?me/i,
96
+ /placeholder/i,
97
+ /\bsecret/i,
98
+ /passw(or)?d/i,
99
+ /insecure/i,
100
+ /example/i,
101
+ /sample/i,
102
+ /dummy/i,
103
+ /replace/i,
104
+ /generate/i,
105
+ /notasecret/i,
106
+ /foobar/i,
107
+ /hunter2/i,
108
+ /lorem/i
109
+ ];
110
+ var DELIMITED_PLACEHOLDER_TERMS = [
111
+ "dev",
112
+ "test",
113
+ "demo",
114
+ "temp",
115
+ "fake",
116
+ "local",
117
+ "mine",
118
+ "todo",
119
+ "none",
120
+ "null",
121
+ "key",
122
+ "seed",
123
+ "value",
124
+ "here",
125
+ "your",
126
+ "xxx",
127
+ "yyy",
128
+ "zzz"
129
+ ];
130
+ var WORD_CHARACTER = /[a-z0-9]/i;
131
+ function isWordCharacter(char) {
132
+ return char !== void 0 && WORD_CHARACTER.test(char);
133
+ }
134
+ function containsDelimitedTerm(secret, term) {
135
+ const haystack = secret.toLowerCase();
136
+ for (let from = 0; from <= haystack.length - term.length; ) {
137
+ const at = haystack.indexOf(term, from);
138
+ if (at === -1) return false;
139
+ if (!isWordCharacter(haystack[at - 1]) && !isWordCharacter(haystack[at + term.length])) {
140
+ return true;
141
+ }
142
+ from = at + 1;
143
+ }
144
+ return false;
145
+ }
146
+ var RULES = [
147
+ {
148
+ code: "too_short",
149
+ check: (secret) => secret.length < MIN_SECRET_LENGTH ? `is ${secret.length} characters; the minimum is ${MIN_SECRET_LENGTH}` : null
150
+ },
151
+ {
152
+ code: "placeholder",
153
+ check: (secret) => {
154
+ const matched = PLACEHOLDER_TERMS.find((term) => term.test(secret));
155
+ if (matched) {
156
+ return `contains placeholder wording (matching ${String(matched)}); a generated secret contains no words`;
157
+ }
158
+ const delimited = DELIMITED_PLACEHOLDER_TERMS.find(
159
+ (term) => containsDelimitedTerm(secret, term)
160
+ );
161
+ if (delimited) {
162
+ return `contains the placeholder word "${delimited}" as a standalone term; a generated secret contains no words`;
163
+ }
164
+ return null;
165
+ }
166
+ },
167
+ {
168
+ code: "low_variety",
169
+ check: (secret) => {
170
+ const distinct = new Set(secret).size;
171
+ return distinct < MIN_DISTINCT_CHARS ? `uses only ${distinct} distinct characters; a generated secret of this length uses at least ${MIN_DISTINCT_CHARS}` : null;
172
+ }
173
+ },
174
+ {
175
+ code: "repeated_pattern",
176
+ check: (secret) => {
177
+ const period = (secret + secret).indexOf(secret, 1);
178
+ return period > 0 && period * 3 <= secret.length ? `is a ${period}-character block repeated ${Math.round(secret.length / period)} times` : null;
179
+ }
180
+ }
181
+ ];
182
+ function inspectSecret(secret) {
183
+ for (const rule of RULES) {
184
+ const reason = rule.check(secret);
185
+ if (reason !== null) return { code: rule.code, reason };
186
+ }
187
+ return null;
188
+ }
189
+
91
190
  // src/server/auth/session.ts
92
191
  var MAX_SECRETS = 5;
93
192
  function normalizeSecrets(input) {
@@ -240,33 +339,21 @@ async function rotateIfNeeded(sm, req, res) {
240
339
  }
241
340
  return data;
242
341
  }
243
- var PLACEHOLDER_PATTERN = /CHANGE_ME|demo[-_]|placeholder/i;
244
342
  function assertProductionSecret(secret) {
245
343
  const arr = Array.isArray(secret) ? secret : [secret];
246
344
  const isProd = process.env.NODE_ENV === "production";
247
345
  for (let i = 0; i < arr.length; i++) {
248
- const s = arr[i];
249
- const isPlaceholder = PLACEHOLDER_PATTERN.test(s);
250
- const isTooShort = s.length < 32;
346
+ const weakness = inspectSecret(arr[i]);
347
+ if (!weakness) continue;
251
348
  const prefix = arr.length > 1 ? `Session secret at index ${i}` : "Session secret";
252
349
  if (isProd) {
253
- if (isTooShort) {
254
- throw new Error(
255
- `${prefix} too short for production (${s.length} chars; minimum 32). Set a 32+ random char secret in your env (e.g., \`openssl rand -hex 32\`).`
256
- );
257
- }
258
- if (isPlaceholder) {
259
- throw new Error(
260
- `${prefix} looks like a placeholder ("${s.slice(0, 16)}\u2026") and NODE_ENV is "production". Replace it with a 32+ random char secret (e.g., \`openssl rand -hex 32\`) before deploying.`
261
- );
262
- }
263
- continue;
264
- }
265
- if (isPlaceholder || isTooShort) {
266
- console.warn(
267
- `[theokit] WARNING: ${prefix.toLowerCase()} is a placeholder or too short. This is OK for dev, but the production server will REFUSE to boot until you replace it.`
350
+ throw new Error(
351
+ `${prefix} ${weakness.reason}, and NODE_ENV is "production". Generate one with \`openssl rand -hex 32\` and read it from the environment.`
268
352
  );
269
353
  }
354
+ console.warn(
355
+ `[theokit] WARNING: ${prefix.toLowerCase()} ${weakness.reason}. This is OK for dev, but the production server will REFUSE to boot until you replace it.`
356
+ );
270
357
  }
271
358
  }
272
359
 
@@ -615,6 +702,8 @@ export {
615
702
  encrypt,
616
703
  decrypt,
617
704
  _resetKeyCacheForTests,
705
+ MIN_SECRET_LENGTH,
706
+ inspectSecret,
618
707
  createSessionManager,
619
708
  createSessionManagerWeb,
620
709
  rotateIfNeededWeb,
@@ -636,4 +725,4 @@ export {
636
725
  clearOidcCache,
637
726
  discoverOidcProvider
638
727
  };
639
- //# sourceMappingURL=chunk-ELXOGRY5.js.map
728
+ //# sourceMappingURL=chunk-3IIKKBOJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/auth/auth.ts","../src/server/auth/crypto.ts","../src/server/auth/secret-strength.ts","../src/server/auth/session.ts","../src/server/auth/authenticated-guard.ts","../src/server/_internal/encoding.ts","../src/server/auth/auth-totp.ts","../src/server/auth/auth-backup-codes.ts","../src/server/auth/auth-throttle.ts","../src/server/auth/oauth-pkce.ts","../src/server/auth/oauth-state.ts","../src/server/auth/oidc-discovery.ts"],"mappings":"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","names":["constantTimeEquals"]}
@@ -178,7 +178,7 @@ async function agentCommand(name, message, deps = {}) {
178
178
  async function createAgentSsrLoader(projectRoot) {
179
179
  const { createServer } = await import("vite");
180
180
  const react = (await import("@vitejs/plugin-react")).default;
181
- const { theoPluginAsync } = await import("./vite-plugin-ZT2XNAGM.js");
181
+ const { theoPluginAsync } = await import("./vite-plugin-HPBVQNCG.js");
182
182
  const { loadConfig } = await import("./load-config-VMKOV44Y.js");
183
183
  const config = await loadConfig(projectRoot);
184
184
  const theoPlugins = await theoPluginAsync({
@@ -212,4 +212,4 @@ export {
212
212
  agentCommand,
213
213
  createAgentSsrLoader
214
214
  };
215
- //# sourceMappingURL=chunk-BQJBFHAY.js.map
215
+ //# sourceMappingURL=chunk-47OYUMXW.js.map
@@ -12,7 +12,7 @@ import {
12
12
  sendError,
13
13
  sendJson,
14
14
  validateCsrfRequest
15
- } from "./chunk-GDZOWQV7.js";
15
+ } from "./chunk-QD5X56I3.js";
16
16
  import {
17
17
  buildSecurityHeaders
18
18
  } from "./chunk-VV2VU3LJ.js";
@@ -2633,4 +2633,4 @@ export {
2633
2633
  CsrfReadinessStore,
2634
2634
  applySecurityHeaders
2635
2635
  };
2636
- //# sourceMappingURL=chunk-2NARRZPP.js.map
2636
+ //# sourceMappingURL=chunk-4DSRX3CO.js.map
@@ -1,3 +1,7 @@
1
+ import {
2
+ escapeHtml,
3
+ escapeHtmlAttribute
4
+ } from "./chunk-O2KGDLA7.js";
1
5
  import {
2
6
  validateRouteInput
3
7
  } from "./chunk-5AGNZXHJ.js";
@@ -197,9 +201,6 @@ function createOpenApiHandler(opts = {}) {
197
201
  function hasDotDotSegment(p) {
198
202
  return p.split(/[/\\]/).includes("..");
199
203
  }
200
- function escapeHtml(s) {
201
- return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
202
- }
203
204
  function renderScalarHtml(title, specUrl, cdnUrl) {
204
205
  return `<!DOCTYPE html>
205
206
  <html>
@@ -209,8 +210,8 @@ function renderScalarHtml(title, specUrl, cdnUrl) {
209
210
  <meta name="viewport" content="width=device-width,initial-scale=1">
210
211
  </head>
211
212
  <body>
212
- <script id="api-reference" data-url="${escapeHtml(specUrl)}"></script>
213
- <script src="${escapeHtml(cdnUrl)}"></script>
213
+ <script id="api-reference" data-url="${escapeHtmlAttribute(specUrl)}"></script>
214
+ <script src="${escapeHtmlAttribute(cdnUrl)}"></script>
214
215
  </body>
215
216
  </html>`;
216
217
  }
@@ -270,4 +271,4 @@ export {
270
271
  callProcedure,
271
272
  createOpenApiHandler
272
273
  };
273
- //# sourceMappingURL=chunk-4BQIJ4HE.js.map
274
+ //# sourceMappingURL=chunk-5LRBIP4B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/http/error-pages.ts","../src/server/http/static.ts","../src/server/http/in-process-caller.ts","../src/server/openapi/serve-docs.ts"],"mappings":"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","names":["closeSync","fstatSync","openSync","readFileSync","resolve","closeSync","fstatSync","openSync","readFileSync","resolve","resolve","openSync","fstatSync","readFileSync","closeSync"]}
@@ -12,7 +12,7 @@ import {
12
12
  serveMatchedAuxRoute,
13
13
  serveThroughPluginLifecycle,
14
14
  setupSsrDevMiddleware
15
- } from "./chunk-6EV6FC7X.js";
15
+ } from "./chunk-ZE2UHAET.js";
16
16
  import {
17
17
  resolveTheoRootDir
18
18
  } from "./chunk-FDOOBTXJ.js";
@@ -38,7 +38,7 @@ import {
38
38
  mountAgent,
39
39
  readAgentPolicy,
40
40
  writeWebResponseToServerResponse
41
- } from "./chunk-2NARRZPP.js";
41
+ } from "./chunk-4DSRX3CO.js";
42
42
  import {
43
43
  getApprovalRegistry,
44
44
  resolveProvider
@@ -48,7 +48,7 @@ import {
48
48
  dispatchControllerRequest,
49
49
  incomingMessageToHandlerRequest,
50
50
  sendError
51
- } from "./chunk-GDZOWQV7.js";
51
+ } from "./chunk-QD5X56I3.js";
52
52
  import {
53
53
  TRACE_HEADER,
54
54
  createObservabilityPluginFromConfig,
@@ -776,6 +776,7 @@ async function tryControllerFallthrough(ctx) {
776
776
  csrfMode: ctx.csrfMode,
777
777
  disallowed: ctx.disallowed,
778
778
  requestId: ctx.requestId,
779
+ pluginRunner: ctx.pluginRunner,
779
780
  // M47 — serve @Expose-bound agent routes via the ONE runtime (mountAgent). CSRF is already enforced
780
781
  // once at the controller-dispatch boundary (G5), so mountAgent runs with csrfMode 'off' (no double gate).
781
782
  //
@@ -846,12 +847,6 @@ function createApiMiddleware(vite, serverDir, rateLimitConfigOrOptions) {
846
847
  if (applyRateLimitOr429(req, res, { rateLimiter, requestId, url, start })) {
847
848
  return;
848
849
  }
849
- if (pluginRunner && await runPluginsBeforeRouteMatch(pluginRunner, { req, res, requestId, start, url })) {
850
- return;
851
- }
852
- if (await handleBatchIfMatch(req, res, { url, batching, requestId, start })) {
853
- return;
854
- }
855
850
  const routes = scanServerRoutes(serverDir);
856
851
  const match = matchRoute(url, routes);
857
852
  if (!match) {
@@ -864,10 +859,17 @@ function createApiMiddleware(vite, serverDir, rateLimitConfigOrOptions) {
864
859
  disallowed,
865
860
  requestId,
866
861
  url,
867
- start
862
+ start,
863
+ pluginRunner
868
864
  })) {
869
865
  return;
870
866
  }
867
+ if (pluginRunner && await runPluginsBeforeRouteMatch(pluginRunner, { req, res, requestId, start, url })) {
868
+ return;
869
+ }
870
+ if (await handleBatchIfMatch(req, res, { url, batching, requestId, start })) {
871
+ return;
872
+ }
871
873
  const urlPath = url.split("?")[0];
872
874
  const routePaths = routes.map((r) => r.routePath);
873
875
  const suggestion = findSuggestion(urlPath, routePaths);
@@ -2179,19 +2181,19 @@ async function theoPluginAsync(rootOrOptions) {
2179
2181
  })
2180
2182
  );
2181
2183
  }
2182
- const { appTypedClientPlugin } = await import("./app-typed-client-NOXQEEVF.js");
2184
+ const { appTypedClientPlugin } = await import("./app-typed-client-KH27ZGRT.js");
2183
2185
  const appClientPlugin = appTypedClientPlugin({
2184
2186
  cwd: projectRoot,
2185
2187
  serverDir: serverDirAbs,
2186
2188
  distDir: resolve5(projectRoot, ".theokit")
2187
2189
  });
2188
- const { actionsVirtualModule } = await import("./actions-virtual-module-BKIT7HNS.js");
2190
+ const { actionsVirtualModule } = await import("./actions-virtual-module-SYV4JN7B.js");
2189
2191
  const actionsPlugin = actionsVirtualModule({
2190
2192
  serverDir: serverDirAbs,
2191
2193
  distDir: resolve5(projectRoot, ".theokit")
2192
2194
  });
2193
2195
  const { agentsTypedClientPlugin } = await import("./agents-typed-client-D4OA2TXB.js");
2194
- const { generateManifest } = await import("./internal-api-TZTO4VMP.js");
2196
+ const { generateManifest } = await import("./internal-api-LSB5E7BR.js");
2195
2197
  const agentsClientPlugin = agentsTypedClientPlugin({
2196
2198
  projectRoot,
2197
2199
  agentsDir: agentsDirName,
@@ -2208,7 +2210,7 @@ async function theoPluginAsync(rootOrOptions) {
2208
2210
  const controllerTransformPlugin = controllerSwcTransformPlugin({
2209
2211
  serverDir: serverDirAbs
2210
2212
  });
2211
- const { serverOnlyImportBoundary } = await import("./server-boundary-Z5LSU7ZW.js");
2213
+ const { serverOnlyImportBoundary } = await import("./server-boundary-AS2UEMW5.js");
2212
2214
  const serverBoundaryPlugin = serverOnlyImportBoundary({
2213
2215
  projectRoot,
2214
2216
  serverDir: serverDirAbs
@@ -2383,4 +2385,4 @@ export {
2383
2385
  theoPluginAsync,
2384
2386
  theoPlugin
2385
2387
  };
2386
- //# sourceMappingURL=chunk-JHUFPH7B.js.map
2388
+ //# sourceMappingURL=chunk-B7GGQQ3F.js.map