theokit 0.72.1 → 0.74.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 (143) hide show
  1. package/README.md +2 -0
  2. package/dist/{actions-virtual-module-OHENNMQG.js → actions-virtual-module-J2HYO7QZ.js} +4 -4
  3. package/dist/{actions-virtual-module-EAKYEMGF.js → actions-virtual-module-JV7URROJ.js} +7 -7
  4. package/dist/adapters/agent-mount.js +3 -3
  5. package/dist/adapters/security-headers.d.ts +27 -11
  6. package/dist/adapters/security-headers.js +9 -4
  7. package/dist/adapters/security-headers.js.map +1 -1
  8. package/dist/{agent-VJTZ4DQ7.js → agent-GU6JIEFJ.js} +3 -3
  9. package/dist/{app-typed-client-ILLQYTXP.js → app-typed-client-EOA3A2AR.js} +5 -5
  10. package/dist/{app-typed-client-ILLQYTXP.js.map → app-typed-client-EOA3A2AR.js.map} +1 -1
  11. package/dist/{app-typed-client-LHH77QDB.js → app-typed-client-XD4DZBV7.js} +8 -8
  12. package/dist/app-typed-client-XD4DZBV7.js.map +1 -0
  13. package/dist/{aws-lambda-7AZNJGWU.js → aws-lambda-ZYSPTD3O.js} +61 -27
  14. package/dist/aws-lambda-ZYSPTD3O.js.map +1 -0
  15. package/dist/{build-23QF5FNQ.js → build-6FVZKORI.js} +81 -74
  16. package/dist/build-6FVZKORI.js.map +1 -0
  17. package/dist/{bun-NKVHOFSJ.js → bun-I7YM3RDB.js} +82 -21
  18. package/dist/bun-I7YM3RDB.js.map +1 -0
  19. package/dist/{chunk-WBB3MEEN.js → chunk-2NG5T77O.js} +47 -12
  20. package/dist/{chunk-WBB3MEEN.js.map → chunk-2NG5T77O.js.map} +1 -1
  21. package/dist/{chunk-NO6HA4FG.js → chunk-4WP7A7RX.js} +41 -35
  22. package/dist/chunk-4WP7A7RX.js.map +1 -0
  23. package/dist/chunk-4X43VTST.js +31 -0
  24. package/dist/chunk-4X43VTST.js.map +1 -0
  25. package/dist/{chunk-FHQP23Z5.js → chunk-6R5F5YF2.js} +17 -14
  26. package/dist/chunk-6R5F5YF2.js.map +1 -0
  27. package/dist/chunk-72RSCKMW.js +53 -0
  28. package/dist/chunk-72RSCKMW.js.map +1 -0
  29. package/dist/{chunk-V5SSTT3C.js → chunk-C43AHOHI.js} +1 -1
  30. package/dist/chunk-C43AHOHI.js.map +1 -0
  31. package/dist/{chunk-C5CAL3DX.js → chunk-EQJF2EH5.js} +8 -7
  32. package/dist/chunk-EQJF2EH5.js.map +1 -0
  33. package/dist/{chunk-QD5X56I3.js → chunk-FNJVSFEC.js} +1 -1
  34. package/dist/chunk-FNJVSFEC.js.map +1 -0
  35. package/dist/{chunk-6U67SO5U.js → chunk-HK57MPSZ.js} +2 -2
  36. package/dist/{chunk-R7G2B2WH.js → chunk-HKF6YNY4.js} +17 -14
  37. package/dist/{chunk-R7G2B2WH.js.map → chunk-HKF6YNY4.js.map} +1 -1
  38. package/dist/chunk-IJQQNHL7.js +34 -0
  39. package/dist/chunk-IJQQNHL7.js.map +1 -0
  40. package/dist/{chunk-RE2WE7CD.js → chunk-LOOOB46A.js} +2 -2
  41. package/dist/{chunk-PEL3MJLM.js → chunk-MX63AWEK.js} +1 -1
  42. package/dist/{chunk-PEL3MJLM.js.map → chunk-MX63AWEK.js.map} +1 -1
  43. package/dist/chunk-NPQ5A3RU.js +53 -0
  44. package/dist/chunk-NPQ5A3RU.js.map +1 -0
  45. package/dist/{chunk-DKX7LF5Q.js → chunk-ODYLKWRT.js} +3 -3
  46. package/dist/{chunk-L6UHMWXU.js → chunk-QAS5SKZP.js} +3 -3
  47. package/dist/chunk-QAS5SKZP.js.map +1 -0
  48. package/dist/{chunk-4EQEJ4PH.js → chunk-RFZ263XP.js} +68 -23
  49. package/dist/chunk-RFZ263XP.js.map +1 -0
  50. package/dist/{chunk-XLSJWKSP.js → chunk-S5QN3O22.js} +66 -21
  51. package/dist/{chunk-XLSJWKSP.js.map → chunk-S5QN3O22.js.map} +1 -1
  52. package/dist/{chunk-E2RC367T.js → chunk-SHIXTMQE.js} +49 -14
  53. package/dist/{chunk-E2RC367T.js.map → chunk-SHIXTMQE.js.map} +1 -1
  54. package/dist/{chunk-G7U7FQVC.js → chunk-UFBBFP75.js} +13 -3
  55. package/dist/chunk-UFBBFP75.js.map +1 -0
  56. package/dist/{chunk-4CIHLTSI.js → chunk-V7ISZGNS.js} +45 -39
  57. package/dist/chunk-V7ISZGNS.js.map +1 -0
  58. package/dist/{chunk-RCFD5W5V.js → chunk-WR5B2XNT.js} +6 -6
  59. package/dist/chunk-WR5B2XNT.js.map +1 -0
  60. package/dist/{chunk-IB5VIXLR.js → chunk-XLFDYTWO.js} +2 -2
  61. package/dist/cli/index.js +8 -8
  62. package/dist/client/index.d.ts +18 -1
  63. package/dist/client/index.js +15 -1
  64. package/dist/client/index.js.map +1 -1
  65. package/dist/{cloudflare-4M4XVNUH.js → cloudflare-AMH4TJNL.js} +104 -82
  66. package/dist/cloudflare-AMH4TJNL.js.map +1 -0
  67. package/dist/{config-support-SB5NDQZB.js → config-support-MOZYHRWG.js} +13 -2
  68. package/dist/{config-support-SB5NDQZB.js.map → config-support-MOZYHRWG.js.map} +1 -1
  69. package/dist/{deno-deploy-IVACZ62D.js → deno-deploy-6H354VRA.js} +17 -7
  70. package/dist/deno-deploy-6H354VRA.js.map +1 -0
  71. package/dist/{dev-JDJWMRLH.js → dev-HJUD6X3R.js} +9 -9
  72. package/dist/{dev-emit-7KZFUA7M.js → dev-emit-T3X6RR7M.js} +5 -5
  73. package/dist/{dev-emit-7KZFUA7M.js.map → dev-emit-T3X6RR7M.js.map} +1 -1
  74. package/dist/{dev-emit-JPJJFBXL.js → dev-emit-ZK5GCHXN.js} +6 -6
  75. package/dist/dev-emit-ZK5GCHXN.js.map +1 -0
  76. package/dist/index.js +5 -5
  77. package/dist/{internal-api-VDYOXOT7.js → internal-api-GKPJYL3G.js} +7 -7
  78. package/dist/{internal-api-6XNLCNI5.js → internal-api-ZUBUYGCQ.js} +4 -4
  79. package/dist/{mcp-WJNCTM7M.js → mcp-MVKDWZEQ.js} +3 -3
  80. package/dist/{netlify-3HEWV375.js → netlify-ALPCTQFO.js} +158 -48
  81. package/dist/netlify-ALPCTQFO.js.map +1 -0
  82. package/dist/{node-QUGTW6XV.js → node-4HQO6KKZ.js} +2 -2
  83. package/dist/{observability-bootstrap-FP6LMMJE.js → observability-bootstrap-DOWRMADT.js} +2 -2
  84. package/dist/{openapi-Q53YOBIU.js → openapi-C4UX2SFV.js} +5 -5
  85. package/dist/openapi-C4UX2SFV.js.map +1 -0
  86. package/dist/{preview-BARW75PN.js → preview-5HUID27O.js} +3 -3
  87. package/dist/registry-OMLCP4AS.js +34 -0
  88. package/dist/registry-OMLCP4AS.js.map +1 -0
  89. package/dist/{routes-FDF4SLOB.js → routes-3PTNISSO.js} +2 -2
  90. package/dist/server/index.js +2 -2
  91. package/dist/server/scan/index.d.ts +38 -2
  92. package/dist/server/scan/index.js +2 -2
  93. package/dist/{server-boundary-AO6EELRF.js → server-boundary-QCJNECJP.js} +7 -7
  94. package/dist/{server-boundary-E5GFVPLB.js → server-boundary-RTRPHX5I.js} +4 -4
  95. package/dist/{start-4JTYXQQJ.js → start-EREUCSN6.js} +10 -10
  96. package/dist/{static-NQPLPAB6.js → static-7LP7LPGN.js} +2 -2
  97. package/dist/{vercel-5PMYEEKF.js → vercel-VLR52RXT.js} +173 -73
  98. package/dist/vercel-VLR52RXT.js.map +1 -0
  99. package/dist/vite-plugin/index.js +5 -5
  100. package/dist/{vite-plugin-3ON45MQE.js → vite-plugin-JVGI6QUO.js} +9 -9
  101. package/package.json +4 -4
  102. package/dist/app-typed-client-LHH77QDB.js.map +0 -1
  103. package/dist/aws-lambda-7AZNJGWU.js.map +0 -1
  104. package/dist/build-23QF5FNQ.js.map +0 -1
  105. package/dist/bun-NKVHOFSJ.js.map +0 -1
  106. package/dist/chunk-4CIHLTSI.js.map +0 -1
  107. package/dist/chunk-4EQEJ4PH.js.map +0 -1
  108. package/dist/chunk-C5CAL3DX.js.map +0 -1
  109. package/dist/chunk-FHQP23Z5.js.map +0 -1
  110. package/dist/chunk-G7U7FQVC.js.map +0 -1
  111. package/dist/chunk-L6UHMWXU.js.map +0 -1
  112. package/dist/chunk-NO6HA4FG.js.map +0 -1
  113. package/dist/chunk-QD5X56I3.js.map +0 -1
  114. package/dist/chunk-RCFD5W5V.js.map +0 -1
  115. package/dist/chunk-V5SSTT3C.js.map +0 -1
  116. package/dist/cloudflare-4M4XVNUH.js.map +0 -1
  117. package/dist/deno-deploy-IVACZ62D.js.map +0 -1
  118. package/dist/dev-emit-JPJJFBXL.js.map +0 -1
  119. package/dist/netlify-3HEWV375.js.map +0 -1
  120. package/dist/openapi-Q53YOBIU.js.map +0 -1
  121. package/dist/registry-SDBODRU6.js +0 -23
  122. package/dist/registry-SDBODRU6.js.map +0 -1
  123. package/dist/vercel-5PMYEEKF.js.map +0 -1
  124. /package/dist/{actions-virtual-module-OHENNMQG.js.map → actions-virtual-module-J2HYO7QZ.js.map} +0 -0
  125. /package/dist/{actions-virtual-module-EAKYEMGF.js.map → actions-virtual-module-JV7URROJ.js.map} +0 -0
  126. /package/dist/{agent-VJTZ4DQ7.js.map → agent-GU6JIEFJ.js.map} +0 -0
  127. /package/dist/{chunk-6U67SO5U.js.map → chunk-HK57MPSZ.js.map} +0 -0
  128. /package/dist/{chunk-RE2WE7CD.js.map → chunk-LOOOB46A.js.map} +0 -0
  129. /package/dist/{chunk-DKX7LF5Q.js.map → chunk-ODYLKWRT.js.map} +0 -0
  130. /package/dist/{chunk-IB5VIXLR.js.map → chunk-XLFDYTWO.js.map} +0 -0
  131. /package/dist/{dev-JDJWMRLH.js.map → dev-HJUD6X3R.js.map} +0 -0
  132. /package/dist/{internal-api-VDYOXOT7.js.map → internal-api-GKPJYL3G.js.map} +0 -0
  133. /package/dist/{internal-api-6XNLCNI5.js.map → internal-api-ZUBUYGCQ.js.map} +0 -0
  134. /package/dist/{mcp-WJNCTM7M.js.map → mcp-MVKDWZEQ.js.map} +0 -0
  135. /package/dist/{node-QUGTW6XV.js.map → node-4HQO6KKZ.js.map} +0 -0
  136. /package/dist/{observability-bootstrap-FP6LMMJE.js.map → observability-bootstrap-DOWRMADT.js.map} +0 -0
  137. /package/dist/{preview-BARW75PN.js.map → preview-5HUID27O.js.map} +0 -0
  138. /package/dist/{routes-FDF4SLOB.js.map → routes-3PTNISSO.js.map} +0 -0
  139. /package/dist/{server-boundary-AO6EELRF.js.map → server-boundary-QCJNECJP.js.map} +0 -0
  140. /package/dist/{server-boundary-E5GFVPLB.js.map → server-boundary-RTRPHX5I.js.map} +0 -0
  141. /package/dist/{start-4JTYXQQJ.js.map → start-EREUCSN6.js.map} +0 -0
  142. /package/dist/{static-NQPLPAB6.js.map → static-7LP7LPGN.js.map} +0 -0
  143. /package/dist/{vite-plugin-3ON45MQE.js.map → vite-plugin-JVGI6QUO.js.map} +0 -0
@@ -11,22 +11,22 @@ import {
11
11
  } from "./chunk-KTMQUYED.js";
12
12
  import {
13
13
  theoPluginAsync
14
- } from "./chunk-4EQEJ4PH.js";
15
- import "./chunk-L6UHMWXU.js";
14
+ } from "./chunk-RFZ263XP.js";
15
+ import "./chunk-QAS5SKZP.js";
16
16
  import "./chunk-BDH5GKFZ.js";
17
17
  import "./chunk-3PWQQWT6.js";
18
18
  import "./chunk-FDOOBTXJ.js";
19
- import "./chunk-E2RC367T.js";
19
+ import "./chunk-SHIXTMQE.js";
20
20
  import "./chunk-BINRCILF.js";
21
- import "./chunk-QD5X56I3.js";
21
+ import "./chunk-FNJVSFEC.js";
22
22
  import "./chunk-WSMLSIS5.js";
23
- import "./chunk-PEL3MJLM.js";
23
+ import "./chunk-MX63AWEK.js";
24
24
  import "./chunk-C27VRUVN.js";
25
25
  import "./chunk-7UZZHCRN.js";
26
26
  import "./chunk-47MM2JUK.js";
27
- import "./chunk-RCFD5W5V.js";
28
- import "./chunk-R7G2B2WH.js";
29
- import "./chunk-NO6HA4FG.js";
27
+ import "./chunk-WR5B2XNT.js";
28
+ import "./chunk-HKF6YNY4.js";
29
+ import "./chunk-4WP7A7RX.js";
30
30
  import "./chunk-Z7CJHDLS.js";
31
31
  import {
32
32
  loadConfig
@@ -128,4 +128,4 @@ export {
128
128
  devCommand,
129
129
  startDevServer
130
130
  };
131
- //# sourceMappingURL=dev-JDJWMRLH.js.map
131
+ //# sourceMappingURL=dev-HJUD6X3R.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateManifest
3
- } from "./chunk-4CIHLTSI.js";
4
- import "./chunk-FHQP23Z5.js";
3
+ } from "./chunk-V7ISZGNS.js";
4
+ import "./chunk-6R5F5YF2.js";
5
5
  import "./chunk-DV34VG3N.js";
6
6
  import "./chunk-SOYOYGWY.js";
7
7
  import "./chunk-ZWN3AODA.js";
@@ -311,7 +311,7 @@ async function createDefaultLoader(serverDir) {
311
311
 
312
312
  // src/vite-plugin/openapi-emit/dev-emit.ts
313
313
  var inFlight = false;
314
- async function reEmitOpenApi(serverDir, distDir, openApiConfig) {
314
+ async function reEmitOpenApi(serverDir, distDir, openApiConfig, projectRoot, agentsDir) {
315
315
  if (inFlight) {
316
316
  console.warn(
317
317
  "[openapi-emit] previous emit still running; skipping watcher event (EC-8 single-flight guard)"
@@ -320,7 +320,7 @@ async function reEmitOpenApi(serverDir, distDir, openApiConfig) {
320
320
  }
321
321
  inFlight = true;
322
322
  try {
323
- const manifest = generateManifest(serverDir);
323
+ const manifest = generateManifest(serverDir, projectRoot, agentsDir);
324
324
  const hydrated = await loadRoutesForOpenApi({ serverDir, routes: manifest.routes });
325
325
  emitOpenApi({
326
326
  manifest: hydrated,
@@ -339,4 +339,4 @@ export {
339
339
  _resetInFlightForTests,
340
340
  reEmitOpenApi
341
341
  };
342
- //# sourceMappingURL=dev-emit-7KZFUA7M.js.map
342
+ //# sourceMappingURL=dev-emit-T3X6RR7M.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/vite-plugin/openapi-emit/emit.ts","../src/vite-plugin/openapi-emit/zod-to-openapi.ts","../src/vite-plugin/openapi-emit/load-routes.ts","../src/vite-plugin/openapi-emit/dev-emit.ts"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/vite-plugin/openapi-emit/emit.ts","../src/vite-plugin/openapi-emit/zod-to-openapi.ts","../src/vite-plugin/openapi-emit/load-routes.ts","../src/vite-plugin/openapi-emit/dev-emit.ts"],"mappings":"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","names":[]}
@@ -6,14 +6,14 @@ import {
6
6
  } from "./chunk-47VNWTL4.js";
7
7
  import {
8
8
  generateManifest
9
- } from "./chunk-RCFD5W5V.js";
10
- import "./chunk-R7G2B2WH.js";
11
- import "./chunk-NO6HA4FG.js";
9
+ } from "./chunk-WR5B2XNT.js";
10
+ import "./chunk-HKF6YNY4.js";
11
+ import "./chunk-4WP7A7RX.js";
12
12
  import "./chunk-Z7CJHDLS.js";
13
13
 
14
14
  // src/vite-plugin/openapi-emit/dev-emit.ts
15
15
  var inFlight = false;
16
- async function reEmitOpenApi(serverDir, distDir, openApiConfig) {
16
+ async function reEmitOpenApi(serverDir, distDir, openApiConfig, projectRoot, agentsDir) {
17
17
  if (inFlight) {
18
18
  console.warn(
19
19
  "[openapi-emit] previous emit still running; skipping watcher event (EC-8 single-flight guard)"
@@ -22,7 +22,7 @@ async function reEmitOpenApi(serverDir, distDir, openApiConfig) {
22
22
  }
23
23
  inFlight = true;
24
24
  try {
25
- const manifest = generateManifest(serverDir);
25
+ const manifest = generateManifest(serverDir, projectRoot, agentsDir);
26
26
  const hydrated = await loadRoutesForOpenApi({ serverDir, routes: manifest.routes });
27
27
  emitOpenApi({
28
28
  manifest: hydrated,
@@ -41,4 +41,4 @@ export {
41
41
  _resetInFlightForTests,
42
42
  reEmitOpenApi
43
43
  };
44
- //# sourceMappingURL=dev-emit-JPJJFBXL.js.map
44
+ //# sourceMappingURL=dev-emit-ZK5GCHXN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/vite-plugin/openapi-emit/dev-emit.ts"],"sourcesContent":["/**\n * Dev-mode OpenAPI emit helper for `theokit dev`.\n *\n * Per P#3 plan v1.3 T1.1 (ADRs D3 + D4 + EC-8). Called once on `theokit dev`\n * boot AND on every chokidar 'change'/'add'/'unlink' watcher event for\n * route files when `config.openapi !== undefined`. Re-runs G2's\n * `emitOpenApi()` orchestrator to keep `<distDir>/openapi.json` always\n * fresh in dev.\n *\n * EC-8 absorbed (single-flight guard): if a previous invocation is still\n * awaiting `loadRoutesForOpenApi` (Vite SSR loader can hang on circular\n * imports or syntax errors), skip the new call and emit a `console.warn`\n * so watcher events don't pile up + dev server doesn't deadlock.\n *\n * Best-effort: ALL errors caught + warned. Never throws out of the\n * exported function (would crash Vite dev's chokidar handler).\n *\n * NEVER ship to runtime — dev-only artifact gated on `config.openapi`.\n */\nimport { generateManifest } from '../../server/scan/manifest.js'\n\nimport { emitOpenApi } from './emit.js'\nimport { loadRoutesForOpenApi } from './load-routes.js'\n\ninterface DevEmitConfig {\n servers: { url: string; description?: string }[]\n specVersion: '3.1.0' | '3.0.3'\n title: string\n version: string\n}\n\nlet inFlight = false\n\nexport async function reEmitOpenApi(\n serverDir: string,\n distDir: string,\n openApiConfig: DevEmitConfig,\n /** The project root. B-313 — `generateManifest` guessed it as the server dir's parent. */\n projectRoot: string,\n /** The agents dir NAME relative to the root, passed through undefaulted. */\n agentsDir: string | undefined,\n): Promise<void> {\n if (inFlight) {\n console.warn(\n '[openapi-emit] previous emit still running; skipping watcher event (EC-8 single-flight guard)',\n )\n return\n }\n inFlight = true\n try {\n const manifest = generateManifest(serverDir, projectRoot, agentsDir)\n const hydrated = await loadRoutesForOpenApi({ serverDir, routes: manifest.routes })\n emitOpenApi({\n manifest: hydrated,\n config: { ...openApiConfig, outDir: distDir },\n })\n } catch (err) {\n console.warn(`[openapi-emit] re-emit failed: ${(err as Error).message}`)\n } finally {\n inFlight = false\n }\n}\n\n/** Test seam — resets the inFlight flag between tests. NOT for production use. */\nexport function _resetInFlightForTests(): void {\n inFlight = false\n}\n"],"mappings":";;;;;;;;;;;;;;AA+BA,IAAI,WAAW;AAEf,eAAsB,cACpB,WACA,SACA,eAEA,aAEA,WACe;AACf,MAAI,UAAU;AACZ,YAAQ;AAAA,MACN;AAAA,IACF;AACA;AAAA,EACF;AACA,aAAW;AACX,MAAI;AACF,UAAM,WAAW,iBAAiB,WAAW,aAAa,SAAS;AACnE,UAAM,WAAW,MAAM,qBAAqB,EAAE,WAAW,QAAQ,SAAS,OAAO,CAAC;AAClF,gBAAY;AAAA,MACV,UAAU;AAAA,MACV,QAAQ,EAAE,GAAG,eAAe,QAAQ,QAAQ;AAAA,IAC9C,CAAC;AAAA,EACH,SAAS,KAAK;AACZ,YAAQ,KAAK,kCAAmC,IAAc,OAAO,EAAE;AAAA,EACzE,UAAE;AACA,eAAW;AAAA,EACb;AACF;AAGO,SAAS,yBAA+B;AAC7C,aAAW;AACb;","names":[]}
package/dist/index.js CHANGED
@@ -8,12 +8,12 @@ import {
8
8
  scanRoutes,
9
9
  theoConfigSchema,
10
10
  theoPlugin
11
- } from "./chunk-XLSJWKSP.js";
11
+ } from "./chunk-S5QN3O22.js";
12
12
  import "./chunk-7NRFZBAL.js";
13
13
  import "./chunk-SSYDEKWF.js";
14
14
  import "./chunk-D7STTNQN.js";
15
- import "./chunk-6U67SO5U.js";
16
- import "./chunk-WBB3MEEN.js";
15
+ import "./chunk-HK57MPSZ.js";
16
+ import "./chunk-2NG5T77O.js";
17
17
  import "./chunk-OIGJOYX6.js";
18
18
  import "./chunk-U3SPBLJF.js";
19
19
  import "./chunk-WSOAN4KN.js";
@@ -33,8 +33,8 @@ import "./chunk-AVQU5CQF.js";
33
33
  import "./chunk-VSLTKX5L.js";
34
34
  import "./chunk-SFGGRC35.js";
35
35
  import "./chunk-4ERYQBL6.js";
36
- import "./chunk-4CIHLTSI.js";
37
- import "./chunk-FHQP23Z5.js";
36
+ import "./chunk-V7ISZGNS.js";
37
+ import "./chunk-6R5F5YF2.js";
38
38
  import "./chunk-DV34VG3N.js";
39
39
  import "./chunk-V6Y2SMRG.js";
40
40
  import "./chunk-ACKBVBUI.js";
@@ -16,7 +16,7 @@ import {
16
16
  handleCspReport,
17
17
  handleCsrfReadiness,
18
18
  mountAgent
19
- } from "./chunk-E2RC367T.js";
19
+ } from "./chunk-SHIXTMQE.js";
20
20
  import {
21
21
  resolveProvider
22
22
  } from "./chunk-BINRCILF.js";
@@ -24,24 +24,24 @@ import {
24
24
  dispatchControllerRequest,
25
25
  incomingMessageToHandlerRequest,
26
26
  sendError
27
- } from "./chunk-QD5X56I3.js";
27
+ } from "./chunk-FNJVSFEC.js";
28
28
  import {
29
29
  generateNonce
30
30
  } from "./chunk-WSMLSIS5.js";
31
31
  import {
32
32
  TRACE_HEADER,
33
33
  extractTraceId
34
- } from "./chunk-PEL3MJLM.js";
34
+ } from "./chunk-MX63AWEK.js";
35
35
  import {
36
36
  logRequest
37
37
  } from "./chunk-C27VRUVN.js";
38
38
  import "./chunk-7UZZHCRN.js";
39
39
  import {
40
40
  generateManifest
41
- } from "./chunk-RCFD5W5V.js";
41
+ } from "./chunk-WR5B2XNT.js";
42
42
  import {
43
43
  scanAgents
44
- } from "./chunk-R7G2B2WH.js";
44
+ } from "./chunk-HKF6YNY4.js";
45
45
  import {
46
46
  ACTION_SCHEMAS_DIR,
47
47
  matchRoute,
@@ -49,7 +49,7 @@ import {
49
49
  scanServerActionsEnriched,
50
50
  scanServerRoutes,
51
51
  scanWebSocketRoutes
52
- } from "./chunk-NO6HA4FG.js";
52
+ } from "./chunk-4WP7A7RX.js";
53
53
  import "./chunk-Z7CJHDLS.js";
54
54
  import "./chunk-U5PWXS3J.js";
55
55
  import "./chunk-D2R5SJEL.js";
@@ -87,4 +87,4 @@ export {
87
87
  scanWebSocketRoutes,
88
88
  sendError
89
89
  };
90
- //# sourceMappingURL=internal-api-VDYOXOT7.js.map
90
+ //# sourceMappingURL=internal-api-GKPJYL3G.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-D7STTNQN.js";
4
4
  import {
5
5
  mountAgent
6
- } from "./chunk-WBB3MEEN.js";
6
+ } from "./chunk-2NG5T77O.js";
7
7
  import {
8
8
  CSP_REPORT_PATH,
9
9
  CsrfReadinessStore,
@@ -55,10 +55,10 @@ import {
55
55
  scanServerActionsEnriched,
56
56
  scanServerRoutes,
57
57
  scanWebSocketRoutes
58
- } from "./chunk-4CIHLTSI.js";
58
+ } from "./chunk-V7ISZGNS.js";
59
59
  import {
60
60
  scanAgents
61
- } from "./chunk-FHQP23Z5.js";
61
+ } from "./chunk-6R5F5YF2.js";
62
62
  import "./chunk-DV34VG3N.js";
63
63
  import "./chunk-V6Y2SMRG.js";
64
64
  import "./chunk-ACKBVBUI.js";
@@ -108,4 +108,4 @@ export {
108
108
  scanWebSocketRoutes,
109
109
  sendError
110
110
  };
111
- //# sourceMappingURL=internal-api-6XNLCNI5.js.map
111
+ //# sourceMappingURL=internal-api-ZUBUYGCQ.js.map
@@ -2,7 +2,7 @@
2
2
  import "tsx/esm";
3
3
  import {
4
4
  createAgentSsrLoader
5
- } from "./chunk-DKX7LF5Q.js";
5
+ } from "./chunk-ODYLKWRT.js";
6
6
  import {
7
7
  extractAppResources,
8
8
  handleMcpJsonRpc
@@ -10,7 +10,7 @@ import {
10
10
  import "./chunk-BINRCILF.js";
11
11
  import {
12
12
  scanAgents
13
- } from "./chunk-R7G2B2WH.js";
13
+ } from "./chunk-HKF6YNY4.js";
14
14
  import "./chunk-Z7CJHDLS.js";
15
15
  import "./chunk-3QPVEJ7D.js";
16
16
 
@@ -75,4 +75,4 @@ async function mcpCommand(name, deps = {}) {
75
75
  export {
76
76
  mcpCommand
77
77
  };
78
- //# sourceMappingURL=mcp-WJNCTM7M.js.map
78
+ //# sourceMappingURL=mcp-MVKDWZEQ.js.map
@@ -1,22 +1,28 @@
1
1
  #!/usr/bin/env node
2
2
  import "tsx/esm";
3
+ import {
4
+ bundleDeployedFunction
5
+ } from "./chunk-NPQ5A3RU.js";
6
+ import {
7
+ renderBakedRoutes,
8
+ routeRuntimeLines
9
+ } from "./chunk-72RSCKMW.js";
3
10
  import {
4
11
  deployedEntryPreamble
5
- } from "./chunk-IB5VIXLR.js";
12
+ } from "./chunk-XLFDYTWO.js";
6
13
  import {
7
14
  JSON_NOT_FOUND_RESPONSE,
8
- agentsDirLiteral,
9
15
  deployedAgentsFragment,
10
16
  deployedRateLimitFragment,
11
17
  deployedRuntimeConfigFragment,
12
18
  deployedTraceFragment,
13
19
  describeDeployedSecurityHeaders,
14
20
  rateLimitCheckFragment,
15
- scannedFromLoaderCache
16
- } from "./chunk-C5CAL3DX.js";
21
+ serverDirLiteral
22
+ } from "./chunk-EQJF2EH5.js";
17
23
  import {
18
24
  nodeAdapter
19
- } from "./chunk-G7U7FQVC.js";
25
+ } from "./chunk-UFBBFP75.js";
20
26
  import {
21
27
  buildSecurityHeaders
22
28
  } from "./chunk-WSMLSIS5.js";
@@ -36,24 +42,43 @@ var NetlifyConflictError = class extends Error {
36
42
  this.name = "NetlifyConflictError";
37
43
  }
38
44
  };
45
+ var NetlifyFunctionsConflictError = class extends Error {
46
+ constructor(key, declared, required) {
47
+ super(
48
+ `netlify.toml declares \`[functions] ${key} = "${declared}"\`, and this adapter needs "${required}". Measured on the Netlify emulator: \`directory\` is what makes the generated function discoverable at all (without it the redirect answers "Function not found"), and \`node_bundler = "none"\` is what stops Netlify re-bundling a function theokit already bundled \u2014 which produces a SyntaxError. Change the value, or remove the key and let this adapter write it.`
49
+ );
50
+ this.name = "NetlifyFunctionsConflictError";
51
+ }
52
+ };
39
53
  function renderNetlifyFunction(opts = {}) {
54
+ const { routeImports, routeModuleEntries, routeTableEntries } = renderBakedRoutes(
55
+ opts.routes ?? []
56
+ );
40
57
  const runtimeConfig = deployedRuntimeConfigFragment(opts);
41
- const agentsFragment = deployedAgentsFragment(scannedFromLoaderCache(agentsDirLiteral(opts)), {
42
- // Netlify answers its own 404 inline rather than through a helper, so the fragment is given
43
- // the expression instead of a call it would have to declare.
44
- notFound: `new Response('Not Found', { status: 404 })`
45
- });
58
+ const agentsFragment = deployedAgentsFragment(
59
+ { kind: "baked", agents: opts.agents ?? [], contextModule: opts.contextModule },
60
+ {
61
+ // Netlify answers its own 404 inline rather than through a helper, so the fragment is given
62
+ // the expression instead of a call it would have to declare.
63
+ notFound: `new Response('Not Found', { status: 404 })`
64
+ }
65
+ );
46
66
  return [
47
67
  `// Generated by Theo \u2014 Netlify Functions adapter`,
48
68
  `import { resolve } from 'node:path'`,
49
- `import { scanServerRoutes, matchRoute, executeRoute, createProductionLoader, extractTraceIdFromRequest, TRACE_HEADER, createCorsWebHandler } from 'theokit/server'`,
69
+ `import { matchRoute, compilePattern } from 'theokit/server/scan'
70
+ import { executeRoute, extractTraceIdFromRequest, TRACE_HEADER, createCorsWebHandler } from 'theokit/server/http'`,
71
+ ...routeImports,
50
72
  `import { createWebShim } from 'theokit/adapters/web-shim'`,
51
73
  `import { buildSecurityHeaders, withSecurityHeaders } from 'theokit/adapters/security-headers'`,
52
74
  ``,
53
75
  `const cwd = process.cwd()`,
54
- `const serverDir = resolve(cwd, 'server')`,
55
- `let routesCache = null`,
56
- `let loaderCache = null`,
76
+ // B-338 — was `resolve(cwd, 'server')`, a literal. A project declaring `src/server` got a function
77
+ // scanning a directory that does not exist, and every `/api/*` answered 404 — measured on the Netlify
78
+ // emulator. The FOURTH target with this shape: B-185 (bun, deno), B-235 (agentsDir here), B-315
79
+ // (vercel, aws-lambda, cloudflare), and this file's own call site already names two of them.
80
+ `const serverDir = resolve(cwd, ${serverDirLiteral(opts)})`,
81
+ ...routeRuntimeLines(routeModuleEntries, routeTableEntries, "netlify"),
57
82
  ``,
58
83
  `// #410 \u2014 the security baseline \`theokit start\` puts on every response,`,
59
84
  `// carried here as a literal because the deployed function has no`,
@@ -64,7 +89,11 @@ function renderNetlifyFunction(opts = {}) {
64
89
  ``,
65
90
  // B-027 — emitted only when a limit is declared.
66
91
  ...opts.rateLimit === void 0 ? [] : [
67
- `import { createRateLimiterWeb } from 'theokit/server'`,
92
+ // B-338 — the sub-path, not the umbrella. The umbrella re-exports the whole server half and
93
+ // @swc/core's native .node addon is down that graph; the guard against it could not see this
94
+ // adapter, because the shared comment stripper read this file's "/*" redirect glob as a
95
+ // comment opener and deleted 36% of it before the sweep looked.
96
+ `import { createRateLimiterWeb } from 'theokit/server/rate-limit'`,
68
97
  `import { resolveClientIpFromRequest } from 'theokit/server/rate-limit'`,
69
98
  ``
70
99
  ],
@@ -96,12 +125,10 @@ function renderNetlifyFunction(opts = {}) {
96
125
  ` return new Response('Not Found', { status: 404 })`,
97
126
  ` }`,
98
127
  ``,
99
- ` if (!routesCache) routesCache = scanServerRoutes(serverDir)`,
100
- ` if (!loaderCache) loaderCache = createProductionLoader()`,
101
128
  ``,
102
129
  ...agentsFragment.branch,
103
130
  ``,
104
- ` const match = matchRoute(url.pathname, routesCache)`,
131
+ ` const match = matchRoute(url.pathname, routes)`,
105
132
  ` if (!match) return ${JSON_NOT_FOUND_RESPONSE}`,
106
133
  ``,
107
134
  ` const { req, res, toResponse } = createWebShim(request)`,
@@ -109,7 +136,7 @@ function renderNetlifyFunction(opts = {}) {
109
136
  ` const method = request.method.toUpperCase()`,
110
137
  ` // #382 \u2014 the run is not awaited: toResponse() settles at the headers and`,
111
138
  ` // carries a live body, so Netlify streams while the handler writes.`,
112
- ` return toResponse(executeRoute({ route: match.route, method, params: match.params, req, res, loadModule: loaderCache, serverDir, requestId, ...CSRF_CONFIG, ${runtimeConfig.executeRouteSpread} }))`,
139
+ ` return toResponse(executeRoute({ route: match.route, method, params: match.params, req, res, loadModule, serverDir, requestId, ...CSRF_CONFIG, ${runtimeConfig.executeRouteSpread} }))`,
113
140
  `}`
114
141
  ].join("\n");
115
142
  }
@@ -144,6 +171,16 @@ function parseRedirectBlocks(lines) {
144
171
  if (current) blocks.push(current);
145
172
  return blocks;
146
173
  }
174
+ var THEO_FUNCTIONS_DIR = ".netlify/functions";
175
+ var THEO_FUNCTION_NAME = "theo";
176
+ var THEO_FUNCTIONS_KEYS = [
177
+ ["directory", THEO_FUNCTIONS_DIR],
178
+ ["node_bundler", "none"]
179
+ ];
180
+ var THEO_FUNCTIONS_TARGET = [
181
+ "[functions]",
182
+ ...THEO_FUNCTIONS_KEYS.map(([key, value]) => ` ${key} = "${value}"`)
183
+ ].join("\n");
147
184
  var THEO_REDIRECT_TARGET = [
148
185
  "[[redirects]]",
149
186
  ' from = "/api/*"',
@@ -173,13 +210,54 @@ function withoutGeneratedHeaders(source) {
173
210
  while (end < lines.length && !opensSection(lines[end])) end += 1;
174
211
  return [...lines.slice(0, start), ...lines.slice(end)].join("\n").replace(/\n{3,}/gu, "\n\n");
175
212
  }
213
+ function readTomlScalar(raw) {
214
+ for (const quote of ['"', "'"]) {
215
+ if (!raw.startsWith(quote)) continue;
216
+ const close = raw.indexOf(quote, 1);
217
+ return close < 0 ? raw.slice(1) : raw.slice(1, close);
218
+ }
219
+ const hash = raw.indexOf("#");
220
+ return (hash < 0 ? raw : raw.slice(0, hash)).trim();
221
+ }
222
+ function declaredIn(lines, from, to, key) {
223
+ for (let i = from; i < to; i += 1) {
224
+ const line = lines[i] ?? "";
225
+ const eq = line.indexOf("=");
226
+ if (eq < 0 || line.slice(0, eq).trim() !== key) continue;
227
+ return readTomlScalar(line.slice(eq + 1).trim());
228
+ }
229
+ return null;
230
+ }
231
+ function withFunctionsDeclared(source) {
232
+ const lines = source.split(/\r?\n/);
233
+ const at = lines.findIndex((line) => line.trimEnd() === "[functions]");
234
+ if (at < 0) {
235
+ const sep = source.endsWith("\n") ? "" : "\n";
236
+ return `${source}${sep}
237
+ ${THEO_FUNCTIONS_TARGET}
238
+ `;
239
+ }
240
+ let end = at + 1;
241
+ while (end < lines.length && !(lines[end] ?? "").startsWith("[")) end += 1;
242
+ const missing = [];
243
+ for (const [key, required] of THEO_FUNCTIONS_KEYS) {
244
+ const declared = declaredIn(lines, at + 1, end, key);
245
+ if (declared === null) {
246
+ missing.push(` ${key} = "${required}"`);
247
+ continue;
248
+ }
249
+ if (declared !== required) throw new NetlifyFunctionsConflictError(key, declared, required);
250
+ }
251
+ if (missing.length === 0) return source;
252
+ return [...lines.slice(0, at + 1), ...missing, ...lines.slice(at + 1)].join("\n");
253
+ }
176
254
  function mergeNetlifyToml(existing, securityHeaders) {
177
255
  const headersBlock = renderHeadersBlock(securityHeaders);
178
256
  if (existing === null || existing.trim().length === 0) {
179
- return `${THEO_REDIRECT_TARGET}
257
+ return withFunctionsDeclared(`${THEO_REDIRECT_TARGET}
180
258
 
181
259
  ${headersBlock}
182
- `;
260
+ `);
183
261
  }
184
262
  existing = withoutGeneratedHeaders(existing);
185
263
  const blocks = parseRedirectBlocks(existing.split(/\r?\n/));
@@ -187,52 +265,78 @@ ${headersBlock}
187
265
  if (b.from !== THEO_REDIRECT_FROM) continue;
188
266
  if (b.to === THEO_REDIRECT_TO) {
189
267
  const sep2 = existing.endsWith("\n") ? "" : "\n";
190
- return `${existing}${sep2}
268
+ return withFunctionsDeclared(`${existing}${sep2}
191
269
  ${headersBlock}
192
- `;
270
+ `);
193
271
  }
194
272
  throw new NetlifyConflictError(b.from, b.to ?? "(unknown)");
195
273
  }
196
274
  const sep = existing.endsWith("\n") ? "" : "\n";
197
- return `${existing}${sep}
275
+ return withFunctionsDeclared(`${existing}${sep}
198
276
  ${THEO_REDIRECT_TARGET}
199
277
 
200
278
  ${headersBlock}
201
- `;
279
+ `);
280
+ }
281
+ function resolveNetlifyDeps(cwd, deps) {
282
+ return {
283
+ runNodeBuild: deps.runNodeBuild ?? nodeAdapter.build.bind(nodeAdapter),
284
+ writeFile: deps.writeFile ?? ((path, content) => {
285
+ writeFileSync(path, content);
286
+ }),
287
+ ensureDir: deps.ensureDir ?? ((path) => mkdirSync(path, { recursive: true })),
288
+ readTomlIfExists: deps.readTomlIfExists ?? (() => {
289
+ const path = resolve(cwd, "netlify.toml");
290
+ return existsSync(path) ? readFileSync(path, "utf-8") : null;
291
+ }),
292
+ bundleFunction: deps.bundleFunction ?? bundleDeployedFunction
293
+ };
202
294
  }
203
295
  async function buildNetlify(config, cwd, deps = {}, ctx) {
204
296
  assertServicesUnsupported("netlify", readManifest(cwd));
205
- const runNodeBuild = deps.runNodeBuild ?? nodeAdapter.build.bind(nodeAdapter);
297
+ const { runNodeBuild, writeFile, ensureDir, readTomlIfExists, bundleFunction } = resolveNetlifyDeps(cwd, deps);
298
+ const merged = mergeNetlifyToml(readTomlIfExists(), config.security?.headers);
206
299
  await runNodeBuild(config, cwd, ctx);
207
- const ensureDir = deps.ensureDir ?? ((p) => mkdirSync(p, { recursive: true }));
208
- const writeFile = deps.writeFile ?? ((p, c) => {
209
- writeFileSync(p, c);
210
- });
211
- const readTomlIfExists = deps.readTomlIfExists ?? (() => {
212
- const p = resolve(cwd, "netlify.toml");
213
- return existsSync(p) ? readFileSync(p, "utf-8") : null;
214
- });
215
- const fnDir = resolve(cwd, ".netlify/functions");
300
+ const scanned = ctx?.scanRoutes?.(config.serverDir);
301
+ const fnDir = resolve(cwd, THEO_FUNCTIONS_DIR);
216
302
  ensureDir(fnDir);
217
- writeFile(
218
- resolve(fnDir, "theo.mjs"),
219
- renderNetlifyFunction({
303
+ await bundleFunction({
304
+ projectRoot: cwd,
305
+ entrySource: renderNetlifyFunction({
306
+ routes: scanned?.routes,
307
+ // B-339 — from the same scan as the routes, for the same reason: this target bundles, so a
308
+ // runtime agents scan has no source tree to read.
309
+ agents: scanned?.agents,
310
+ contextModule: scanned?.contextModule,
220
311
  securityHeaders: config.security?.headers,
221
- // B-235 — pillar (a): the option existed and no build passed it, so a project with a
222
- // configured agents directory got the default `agents` on this target. Same defect
223
- // B-185 fixed for bun and deno, one target over.
224
- agentsDir: config.agentsDir,
312
+ // B-235 wired `agentsDir` through to this renderer, and B-339 made it unreadable here: the
313
+ // agents are baked from the BUILD's scan now, so the entry never resolves a directory. An
314
+ // option a renderer accepts and ignores is the defect `rules/foreign-config-surfaces.md` is
315
+ // about, so it is dropped rather than left looking wired. The scan the build performs still
316
+ // honours `config.agentsDir` — that is where the option belongs.
317
+ // B-338 — the same pillar as the comment above, one option over. The sweep in
318
+ // `every-deployed-entry-is-told-its-server-dir.test.ts` could not see this adapter: its
319
+ // population was the adapters that CALL `serverDirLiteral(opts)`, so the one that never
320
+ // adopted it was outside the population the case iterates.
321
+ serverDir: config.serverDir,
225
322
  csrf: config.security?.csrf,
226
323
  disallowed: config.security?.disallowed,
227
324
  cors: config.security?.cors,
228
325
  // #425 — a selector, not a transformer, so it rides as a literal like the values above.
229
326
  serialization: config.serialization
230
- })
231
- );
232
- const existingToml = readTomlIfExists();
233
- const merged = mergeNetlifyToml(existingToml, config.security?.headers);
327
+ }),
328
+ stagePath: ".theokit/netlify/entry.mjs",
329
+ // A DIRECTORY, not a bare file. The bundler code-splits: this project emitted `theo.mjs` plus
330
+ // 40 chunks under `assets/`, which `theo.mjs` imports. Netlify zips a directory-shaped function
331
+ // whole, so the chunks travel; a bare `theo.mjs` with a sibling `assets/` loads in `netlify dev`
332
+ // (it reads from disk) and would reach a deploy without them. Vercel already uses a dedicated
333
+ // `functions/api.func` for the same reason.
334
+ outDir: resolve(fnDir, THEO_FUNCTION_NAME),
335
+ entryFileName: `${THEO_FUNCTION_NAME}.mjs`
336
+ });
234
337
  writeFile(resolve(cwd, "netlify.toml"), merged);
235
- console.log("\n \u2713 Netlify output \u2192 .netlify/functions/theo.mjs + netlify.toml");
338
+ console.log(`
339
+ \u2713 Netlify output \u2192 ${THEO_FUNCTIONS_DIR}/${THEO_FUNCTION_NAME}/ + netlify.toml`);
236
340
  console.log(
237
341
  `${describeDeployedSecurityHeaders({
238
342
  target: "netlify",
@@ -244,6 +348,11 @@ async function buildNetlify(config, cwd, deps = {}, ctx) {
244
348
  );
245
349
  }
246
350
  var netlifyAdapter = {
351
+ // B-339 / B-341 / B-343 — measured on the Netlify emulator. Its own bundler turned the raw
352
+ // source into a `ReferenceError`, and re-bundled an already-bundled file into a `SyntaxError`;
353
+ // the toml declares `node_bundler = "none"` so the bundle this adapter produces ships intact.
354
+ readsSourceAtRunTime: false,
355
+ specifiersResolvedBy: "this-adapter",
247
356
  name: "netlify",
248
357
  streamsResponses: true,
249
358
  // #409 / #410 — the generated entry calls `executeRoute` with routes, loader
@@ -264,9 +373,10 @@ var netlifyAdapter = {
264
373
  };
265
374
  export {
266
375
  NetlifyConflictError,
376
+ NetlifyFunctionsConflictError,
267
377
  buildNetlify,
268
378
  mergeNetlifyToml,
269
379
  netlifyAdapter,
270
380
  renderNetlifyFunction
271
381
  };
272
- //# sourceMappingURL=netlify-3HEWV375.js.map
382
+ //# sourceMappingURL=netlify-ALPCTQFO.js.map