theokit 0.60.0 → 0.61.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 (70) hide show
  1. package/dist/{actions-virtual-module-DNOALUTX.js → actions-virtual-module-345YHSEB.js} +5 -5
  2. package/dist/{actions-virtual-module-UE5H42GP.js → actions-virtual-module-XI5IGBF4.js} +2 -2
  3. package/dist/adapters/agent-mount.d.ts +1 -1
  4. package/dist/adapters/agent-mount.js +2 -2
  5. package/dist/{agent-VWPSEDXD.js → agent-L45EZWPV.js} +2 -2
  6. package/dist/{app-typed-client-MKTSLES3.js → app-typed-client-B7QIRDSP.js} +5 -5
  7. package/dist/{app-typed-client-4KLNKET6.js → app-typed-client-GVP4V4X3.js} +2 -2
  8. package/dist/{build-RG54DH3F.js → build-22OMF3NG.js} +3 -3
  9. package/dist/{chunk-KQ27YDLG.js → chunk-4BQIJ4HE.js} +3 -3
  10. package/dist/{chunk-JW5UFKQ3.js → chunk-5AGNZXHJ.js} +2 -2
  11. package/dist/{chunk-ETKLM6UN.js → chunk-6R6UR64X.js} +7 -7
  12. package/dist/{chunk-YN4W7LCX.js → chunk-ENRT6DAU.js} +6 -1
  13. package/dist/chunk-ENRT6DAU.js.map +1 -0
  14. package/dist/{chunk-DMODPX7P.js → chunk-H2X5T45M.js} +2 -2
  15. package/dist/{chunk-GZ5YHD5H.js → chunk-KVZQJ3ZM.js} +6 -1
  16. package/dist/chunk-KVZQJ3ZM.js.map +1 -0
  17. package/dist/{chunk-XES7ZE2K.js → chunk-L2NSHQOY.js} +2 -2
  18. package/dist/{chunk-KZ3PXNPT.js → chunk-MIPHNT4J.js} +3 -3
  19. package/dist/chunk-MIPHNT4J.js.map +1 -0
  20. package/dist/{chunk-WOANPZBT.js → chunk-Q3UE7WIM.js} +2 -2
  21. package/dist/{chunk-IZTOGKLS.js → chunk-YXEKPMDK.js} +2 -2
  22. package/dist/{chunk-K3DUUEQ5.js → chunk-ZXJAI4J7.js} +9 -9
  23. package/dist/cli/index.js +6 -6
  24. package/dist/{dev-5ETOFKOP.js → dev-BDODXUEA.js} +4 -4
  25. package/dist/{index-ADEV6pen.d.ts → index-BXGSBlxf.d.ts} +1 -1
  26. package/dist/index.js +5 -5
  27. package/dist/{internal-api-UM77XDXN.js → internal-api-QKWTQ2Q7.js} +2 -2
  28. package/dist/{internal-api-3YDGG5FF.js → internal-api-VRUDDBEG.js} +5 -5
  29. package/dist/{mcp-B42ISIJG.js → mcp-WMZSXQQG.js} +2 -2
  30. package/dist/{preview-XP77EPTL.js → preview-GUEKVBGL.js} +3 -3
  31. package/dist/{route-config-Cm_ZMA1C.d.ts → route-config-B7FaTSby.d.ts} +1 -1
  32. package/dist/{route-policy-BxOycCDq.d.ts → route-policy-BHXQDzBF.d.ts} +20 -1
  33. package/dist/server/define/index.d.ts +5 -4
  34. package/dist/server/define/index.js +1 -1
  35. package/dist/server/http/index.d.ts +3 -3
  36. package/dist/server/http/index.js +3 -3
  37. package/dist/server/index.d.ts +4 -4
  38. package/dist/server/index.js +3 -3
  39. package/dist/{server-boundary-X52AMCKI.js → server-boundary-7BRS2CWI.js} +2 -2
  40. package/dist/{server-boundary-JG53VI6L.js → server-boundary-OEBKNBEP.js} +5 -5
  41. package/dist/{start-3FYIYTM7.js → start-AKMBT3DW.js} +4 -4
  42. package/dist/vite-plugin/index.js +5 -5
  43. package/dist/{vite-plugin-BG5K3L46.js → vite-plugin-37OQ5RDR.js} +4 -4
  44. package/package.json +3 -3
  45. package/dist/chunk-GZ5YHD5H.js.map +0 -1
  46. package/dist/chunk-KZ3PXNPT.js.map +0 -1
  47. package/dist/chunk-YN4W7LCX.js.map +0 -1
  48. /package/dist/{actions-virtual-module-DNOALUTX.js.map → actions-virtual-module-345YHSEB.js.map} +0 -0
  49. /package/dist/{actions-virtual-module-UE5H42GP.js.map → actions-virtual-module-XI5IGBF4.js.map} +0 -0
  50. /package/dist/{agent-VWPSEDXD.js.map → agent-L45EZWPV.js.map} +0 -0
  51. /package/dist/{app-typed-client-MKTSLES3.js.map → app-typed-client-B7QIRDSP.js.map} +0 -0
  52. /package/dist/{app-typed-client-4KLNKET6.js.map → app-typed-client-GVP4V4X3.js.map} +0 -0
  53. /package/dist/{build-RG54DH3F.js.map → build-22OMF3NG.js.map} +0 -0
  54. /package/dist/{chunk-KQ27YDLG.js.map → chunk-4BQIJ4HE.js.map} +0 -0
  55. /package/dist/{chunk-JW5UFKQ3.js.map → chunk-5AGNZXHJ.js.map} +0 -0
  56. /package/dist/{chunk-ETKLM6UN.js.map → chunk-6R6UR64X.js.map} +0 -0
  57. /package/dist/{chunk-DMODPX7P.js.map → chunk-H2X5T45M.js.map} +0 -0
  58. /package/dist/{chunk-XES7ZE2K.js.map → chunk-L2NSHQOY.js.map} +0 -0
  59. /package/dist/{chunk-WOANPZBT.js.map → chunk-Q3UE7WIM.js.map} +0 -0
  60. /package/dist/{chunk-IZTOGKLS.js.map → chunk-YXEKPMDK.js.map} +0 -0
  61. /package/dist/{chunk-K3DUUEQ5.js.map → chunk-ZXJAI4J7.js.map} +0 -0
  62. /package/dist/{dev-5ETOFKOP.js.map → dev-BDODXUEA.js.map} +0 -0
  63. /package/dist/{internal-api-UM77XDXN.js.map → internal-api-QKWTQ2Q7.js.map} +0 -0
  64. /package/dist/{internal-api-3YDGG5FF.js.map → internal-api-VRUDDBEG.js.map} +0 -0
  65. /package/dist/{mcp-B42ISIJG.js.map → mcp-WMZSXQQG.js.map} +0 -0
  66. /package/dist/{preview-XP77EPTL.js.map → preview-GUEKVBGL.js.map} +0 -0
  67. /package/dist/{server-boundary-X52AMCKI.js.map → server-boundary-7BRS2CWI.js.map} +0 -0
  68. /package/dist/{server-boundary-JG53VI6L.js.map → server-boundary-OEBKNBEP.js.map} +0 -0
  69. /package/dist/{start-3FYIYTM7.js.map → start-AKMBT3DW.js.map} +0 -0
  70. /package/dist/{vite-plugin-BG5K3L46.js.map → vite-plugin-37OQ5RDR.js.map} +0 -0
@@ -25,7 +25,7 @@ import {
25
25
  parseAgentRequestBody,
26
26
  readAgentPolicy,
27
27
  subjectFromContext
28
- } from "./chunk-GZ5YHD5H.js";
28
+ } from "./chunk-KVZQJ3ZM.js";
29
29
  import {
30
30
  getApprovalRegistry
31
31
  } from "./chunk-WFIAYPBH.js";
@@ -867,4 +867,4 @@ export {
867
867
  applyNonceToInlineScripts,
868
868
  setupSsrDevMiddleware
869
869
  };
870
- //# sourceMappingURL=chunk-XES7ZE2K.js.map
870
+ //# sourceMappingURL=chunk-L2NSHQOY.js.map
@@ -9,6 +9,7 @@ import "reflect-metadata";
9
9
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
10
10
  import { basename, dirname, join, relative, resolve } from "path";
11
11
  import { pathToFileURL } from "url";
12
+ import { PUBLIC_ROUTE_METADATA } from "@theokit/http";
12
13
  import {
13
14
  CONTROLLER_PREFIX,
14
15
  ROUTE_METHODS,
@@ -84,7 +85,6 @@ function assertControllerPathsReachable(loaded) {
84
85
  throw new UnreachableControllerPathError(cls.name || "a controller", prefix, sourceFile);
85
86
  }
86
87
  }
87
- var PUBLIC_ROUTE_METADATA = "theokit:public";
88
88
  var UndeclaredControllerAccessError = class extends Error {
89
89
  constructor(controller, method, verb, file) {
90
90
  super(
@@ -102,7 +102,7 @@ var UndeclaredControllerAccessError = class extends Error {
102
102
  ``,
103
103
  ` Or state that it is open on purpose \u2014 a health check, an OAuth callback:`,
104
104
  ``,
105
- ` @SetMetadata('${PUBLIC_ROUTE_METADATA}', true)`,
105
+ ` @Public() // from '@theokit/http'`,
106
106
  ``,
107
107
  ` Both are declarations. What is refused is neither.`
108
108
  ].join("\n")
@@ -186,4 +186,4 @@ export {
186
186
  emitControllerArtifacts,
187
187
  describeControllerArtifacts
188
188
  };
189
- //# sourceMappingURL=chunk-KZ3PXNPT.js.map
189
+ //# sourceMappingURL=chunk-MIPHNT4J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/build/emit-controllers.ts"],"sourcesContent":["import 'reflect-metadata'\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { basename, dirname, join, relative, resolve } from 'node:path'\nimport { pathToFileURL } from 'node:url'\n\nimport { PUBLIC_ROUTE_METADATA } from '@theokit/http'\nimport {\n CONTROLLER_PREFIX,\n ROUTE_METHODS,\n USE_GUARDS,\n getMeta,\n isControllerClass,\n transformControllerSource,\n} from '@theokit/http'\n\nimport { findControllerFiles } from '../../../server/http/controller-dispatch.js'\n\n/**\n * theokit#123 — compile `server/controllers/**` into `dist` so production can serve them.\n *\n * ## Why production needed anything at all\n *\n * #122 made decorator controllers first-class in `theokit dev`, where a Vite `enforce:'pre'` swc\n * transform compiles them on the fly — parameter decorators (`@Body`/`@Param`/`@Query`) emit\n * metadata esbuild cannot produce. `theokit start` has no Vite and no transform, so an uncompiled\n * `.controller.ts` simply cannot load, and controller routes 404'd in production while working in\n * dev. That split is the whole issue.\n *\n * ## Why compile at BUILD time rather than load with swc at runtime\n *\n * `loadControllerWithSwc` would work in production and was the smaller diff. It is refused on\n * purpose: `@swc/core` is a peer dependency and a native binary, so that path makes every deployed\n * app carry a compiler it only needs once, and turns a missing optional peer into a runtime 404\n * instead of a build failure. Compilation belongs where the rest of the build already is — and it\n * is what the issue's root-cause note asks for.\n *\n * ## Why NOT in `generateManifest`\n *\n * ADR-5 keeps controllers out of the manifest, and that is preserved here: the manifest is the\n * deploy-adapter contract, and adding a parallel route source to it would ripple through every\n * adapter. This emits a SEPARATE artifact (`dist/controllers.json` + `dist/controllers/*.mjs`) that\n * only the Node start path reads. An adapter that knows nothing about controllers keeps working\n * exactly as before.\n */\n\n/** The build artifact `theokit start` reads to find compiled controllers. */\ninterface ControllerBuildManifest {\n version: 1\n /** Emitted module paths, relative to `distDir`, in scan order. */\n modules: string[]\n}\n\nexport const CONTROLLER_MANIFEST_FILE = 'controllers.json'\nconst CONTROLLER_OUT_DIR = 'controllers'\n\n/**\n * Compile every controller under `<serverDir>/controllers` into `<distDir>/controllers`.\n *\n * No controllers ⇒ **no artifact at all** (not an empty one). `theokit start` treats a missing\n * manifest as \"this app has no controllers\" and skips the whole branch, so a routes-only app pays\n * nothing and its `dist` is byte-identical to before — the ADR-5 posture, kept.\n */\n/**\n * Point a compiled controller's RELATIVE imports back at the app's own source tree.\n *\n * theokit#516 — controllers are compiled into `<distDir>/controllers` because parameter decorators\n * need metadata only swc emits. File routes are never compiled: in production `importUserModule`\n * loads them straight from the source, which is why THEIR relative imports resolve. A controller's\n * did not — `../auth/index.js` resolved from `dist`, where the app does not exist — so a controller\n * that imported anything of the app's worked under `theokit dev` and failed the build.\n *\n * Rewriting to an ABSOLUTE path into the source tree is the smallest fix that keeps one definition\n * of every module. The alternatives each cost more than they buy: copying the app's modules beside\n * the controller duplicates them, and bundling inlines them, so in both a module with state exists\n * twice and the two copies drift.\n *\n * The extension is mapped back to what is on disk. TypeScript source writes `./x.js` for `./x.ts`\n * (NodeNext), and the emitted module has to name the file that exists, since it is loaded by the\n * same `importUserModule` path a file route takes — `.ts` included.\n *\n * BARE specifiers are left exactly as written. `@theokit/http`, `zod` and every other package\n * resolve through `node_modules` from any directory, so rewriting them would replace something that\n * works with a path that pins a version.\n */\nfunction rewriteLocalImports(code: string, sourceFile: string): string {\n const fromDir = dirname(sourceFile)\n return code.replace(\n /(\\bfrom\\s*|\\bimport\\s*\\(\\s*)(['\"])(\\.[^'\"]*)\\2/g,\n (whole, lead: string, quote: string, spec: string) => {\n const resolved = resolve(fromDir, spec)\n const onDisk = existingSourcePath(resolved)\n if (onDisk === undefined) return whole\n return `${lead}${quote}${pathToFileURL(onDisk).href}${quote}`\n },\n )\n}\n\n/**\n * The file a compiled specifier names, as it exists on disk — or `undefined` when nothing does.\n *\n * `./x.js` may be `x.ts`, `x.tsx`, a literal `x.js`, or a directory holding `index.*`. Returning\n * `undefined` for the rest is deliberate: a specifier this cannot resolve is left UNCHANGED, so the\n * runtime reports the missing module by the name the author wrote. Substituting a guess would move\n * the error somewhere the author never typed.\n */\nfunction existingSourcePath(resolved: string): string | undefined {\n const withoutExt = resolved.replace(/\\.(js|mjs|cjs)$/, '')\n const candidates = [\n ...(resolved === withoutExt ? [] : [`${withoutExt}.ts`, `${withoutExt}.tsx`, resolved]),\n ...(resolved === withoutExt ? [`${resolved}.ts`, `${resolved}.tsx`, `${resolved}.js`] : []),\n join(withoutExt, 'index.ts'),\n join(withoutExt, 'index.tsx'),\n join(withoutExt, 'index.js'),\n ]\n return candidates.find((c) => existsSync(c))\n}\n\n/**\n * The URL prefix both runtimes gate the controller fall-through on.\n *\n * `start/handlers.ts` and `vite-plugin/api-middleware.ts` each return early unless the request URL\n * starts with `/api/`, so a controller declaring anything else describes a path that branch never\n * visits. Written here as a constant rather than a literal in the check, because the day that gate\n * moves this is the line that has to move with it.\n */\nconst SERVED_PREFIX = 'api'\n\n/**\n * A controller compiled successfully and mounted at a path the runtime never routes to.\n *\n * Its own class so a caller can tell it from a compile failure: the source is fine, the decorators\n * are fine, and the app would start — the route simply answers 404 forever. That is the failure\n * this module's docblock already refuses for compile errors, reached by a different road.\n *\n * Measured against `theokit@0.56.0`: `@Controller('probe')` built clean, emitted a module, wrote\n * the manifest, and `/api/probe` returned 404. `/probe` returned **200** — the SPA fallback serving\n * `index.html`, so the status code agreed with success while the body was a web page. A defect that\n * survives a status-code check is exactly the kind a build gate has to catch instead.\n */\nexport class UnreachableControllerPathError extends Error {\n override readonly name = 'UnreachableControllerPathError'\n constructor(\n readonly controller: string,\n readonly declaredPath: string,\n readonly file: string,\n ) {\n super(\n [\n `${controller} declares \\`@Controller('${declaredPath}')\\`, which this runtime never routes to.`,\n ``,\n ` ${file}`,\n ``,\n ` Controller routes are served from a fall-through that runs only for URLs under`,\n ` \\`/${SERVED_PREFIX}/\\` — a file-route miss is what reaches it. A path outside that`,\n ` prefix compiles, emits, and then answers 404 for the life of the app.`,\n ``,\n ` Write it as:`,\n ``,\n ` @Controller('${SERVED_PREFIX}/${declaredPath.replace(/^\\/+/, '')}')`,\n ``,\n ` Refused at build rather than left to 404, for the reason this module already refuses a`,\n ` compile error: shipping a route nothing can reach, with nothing pointing back at why.`,\n ].join('\\n'),\n )\n }\n}\n\n/**\n * Is `prefix` reachable from the served path?\n *\n * `'api'`, `'/api'`, `'api/x'` and `'/api/x'` are the same URL written four ways, so all four pass:\n * the gate is about reachability, not spelling. A prefix that merely STARTS with the letters —\n * `'apiary'` — is not, which is why the check is segment-wise rather than a `startsWith`.\n */\nfunction isReachable(prefix: string): boolean {\n const segments = prefix.split('/').filter((s) => s.length > 0)\n return segments[0] === SERVED_PREFIX\n}\n\n/**\n * Refuse any emitted controller whose declared path the runtime cannot route to.\n *\n * Reads the prefix off the COMPILED module rather than the source: the decorator metadata is what\n * the runtime will actually match on, and a regex over source text would disagree with it the first\n * time someone writes the prefix as anything other than a literal.\n */\nfunction assertControllerPathsReachable(\n loaded: readonly { cls: ControllerClass; sourceFile: string }[],\n): void {\n for (const { cls, sourceFile } of loaded) {\n const meta = getMeta<{ prefix?: string }>(CONTROLLER_PREFIX, cls)\n const prefix = meta?.prefix ?? ''\n if (isReachable(prefix)) continue\n throw new UnreachableControllerPathError(cls.name || 'a controller', prefix, sourceFile)\n }\n}\n\n/**\n * The metadata key an explicitly-open controller route sets — IMPORTED, no longer redeclared.\n *\n * The counterpart of `'public'` on the file path, and it exists for the same routes: a health check\n * a load balancer calls with no session, an OAuth callback the provider redirects to.\n *\n * This was a local `const` under a docblock arguing that exporting it \"would publish a new surface\n * for a string that appears once per open route\". #574 measured the cost of that reasoning in the\n * first real adopter — 8 controllers, 6 hand-written copies of `'theokit:public'` — and\n * `@theokit/http` now exports both the key and `@Public()`. Keeping a second copy here would leave\n * the gate and the decorator agreeing by coincidence rather than by construction.\n *\n * It is an opt-out, never a default. A route that is open says so in the file, where review sees\n * it; a route nobody thought about is the one that ships open, which is the whole reason ADR 0001\n * made absence stop meaning open on the file path.\n */\n\n/**\n * A controller route that declares no access decision at all.\n *\n * Distinct from a guard REFUSING a request — that is the system working. This is a route where\n * nobody wrote down whether it should be reachable, which on the file path is a build failure and\n * on the decorator path was, until now, silence.\n *\n * Measured against theokit@0.56.0: a `@Controller` with no guard answered 200 to a request with no\n * session, while the file route it would replace answered 403, on the same server in the same\n * second. The mechanism was never missing — `@UseGuards` works and returns `403 FORBIDDEN`. Only\n * the refusal of absence was.\n */\nexport class UndeclaredControllerAccessError extends Error {\n override readonly name = 'UndeclaredControllerAccessError'\n constructor(\n readonly controller: string,\n readonly method: string,\n readonly verb: string,\n readonly file: string,\n ) {\n super(\n [\n `${controller}.${method}() serves ${verb} and declares no access decision.`,\n ``,\n ` ${file}`,\n ``,\n ` A file route with no \\`.policy\\` fails this build for the same reason (ADR 0001): a route`,\n ` nobody thought about is the one that ships open. The decorator path now says the same.`,\n ``,\n ` Require a session:`,\n ``,\n ` @UseGuards(AuthGuard) // on the method, or on the @Controller to cover all of them`,\n ``,\n ` Or state that it is open on purpose — a health check, an OAuth callback:`,\n ``,\n ` @Public() // from '@theokit/http'`,\n ``,\n ` Both are declarations. What is refused is neither.`,\n ].join('\\n'),\n )\n }\n}\n\n/**\n * Refuse any controller route whose access decision nobody wrote down.\n *\n * A guard on the CLASS covers every method under it, which is the shape most controllers want and\n * mirrors how `@UseGuards` already behaves at runtime — the gate must agree with the dispatcher or\n * it would refuse code that works.\n *\n * Read off the compiled module for the reason the prefix check is: decorator metadata is what the\n * runtime matches on. The per-method key lives on the CLASS with the property name, not on the\n * prototype and not on the descriptor — measured, after both of those returned `undefined`.\n */\nfunction assertControllerAccessDeclared(\n loaded: readonly { cls: ControllerClass; sourceFile: string }[],\n): void {\n for (const { cls, sourceFile } of loaded) {\n // Class level covers every method under it — for BOTH forms. A guard on the class already\n // behaves that way at runtime, and a controller whose routes are all open (a health group, an\n // OAuth callback group) must be declarable once for the same reason. Checking one at class\n // level and not the other would refuse code that is correct.\n if (getMeta<unknown[]>(USE_GUARDS, cls) !== undefined) continue\n if (Reflect.getMetadata(PUBLIC_ROUTE_METADATA, cls) === true) continue\n\n const routes = getMeta<{ verb: string; propertyKey: string }[]>(ROUTE_METHODS, cls) ?? []\n for (const { verb, propertyKey } of routes) {\n if (getMeta<unknown[]>(USE_GUARDS, cls, propertyKey) !== undefined) continue\n // `Reflect` directly, not `getMeta`: `@SetMetadata` writes through `Reflect.defineMetadata`\n // with the key as given, and `getMeta` is typed for the symbol keys this package defines.\n if (Reflect.getMetadata(PUBLIC_ROUTE_METADATA, cls, propertyKey) === true) continue\n throw new UndeclaredControllerAccessError(\n cls.name || 'a controller',\n propertyKey,\n verb,\n sourceFile,\n )\n }\n }\n}\n\n/**\n * Load every emitted controller class once, for both checks below.\n *\n * One pass rather than one per check: the alternative loads each module twice and doubles the\n * surface on which a stale import could fool a gate.\n *\n * The `?t=` is a cache-bust. `emitControllerArtifacts` runs once per build process today, so it\n * changes nothing now — it is here because these are SECURITY gates, and the failure mode if a\n * watch mode is ever added is one that reads metadata from a version of the file that no longer\n * exists and passes it. `parsimony-ladder.md` is explicit that security is not what the ladder\n * trims, and the cost is a query parameter.\n */\nasync function loadEmittedControllers(\n emitted: readonly { modulePath: string; sourceFile: string }[],\n): Promise<{ cls: ControllerClass; sourceFile: string }[]> {\n const out: { cls: ControllerClass; sourceFile: string }[] = []\n for (const { modulePath, sourceFile } of emitted) {\n const url = `${pathToFileURL(modulePath).href}?t=${Date.now()}`\n const mod: Record<string, unknown> = await import(url)\n for (const exported of Object.values(mod)) {\n if (typeof exported !== 'function' || !isControllerClass(exported)) continue\n out.push({ cls: exported as ControllerClass, sourceFile })\n }\n }\n return out\n}\n\n/** A class carrying `@Controller` metadata — narrowed once so both checks read the same shape. */\ntype ControllerClass = (new (...args: never[]) => unknown) & { name: string }\n\nexport async function emitControllerArtifacts(opts: {\n serverDir: string\n distDir: string\n}): Promise<ControllerBuildManifest | null> {\n const controllersDir = resolve(opts.serverDir, CONTROLLER_OUT_DIR)\n const files = findControllerFiles(controllersDir)\n if (files.length === 0) return null\n\n const outDir = resolve(opts.distDir, CONTROLLER_OUT_DIR)\n mkdirSync(outDir, { recursive: true })\n\n const modules: string[] = []\n const emitted: { modulePath: string; sourceFile: string }[] = []\n for (const file of files) {\n // Errors are NOT caught. A controller that fails to compile must fail the BUILD — swallowing it\n // here would ship an app whose routes 404 at runtime with nothing pointing back at the cause,\n // which is the exact failure mode this issue reports (error-handling.md § 2).\n const compiled = await transformControllerSource(readFileSync(file, 'utf-8'), file)\n const code = rewriteLocalImports(compiled, file)\n\n // Mirror the source tree under `dist/controllers` so two files with the same basename in\n // different folders cannot overwrite each other.\n const rel = relative(controllersDir, file).replace(/\\.controller\\.ts$/, '.controller.mjs')\n const outPath = join(outDir, rel)\n mkdirSync(dirname(outPath), { recursive: true })\n writeFileSync(outPath, code)\n modules.push(`${CONTROLLER_OUT_DIR}/${rel.split('\\\\').join('/')}`)\n emitted.push({ modulePath: outPath, sourceFile: file })\n }\n\n // AFTER writing, because reading the prefix means loading the compiled module — and a module that\n // failed to compile has already thrown above. Before the manifest, so a refused build leaves no\n // artifact claiming a route that does not answer.\n const loaded = await loadEmittedControllers(emitted)\n assertControllerPathsReachable(loaded)\n assertControllerAccessDeclared(loaded)\n\n const manifest: ControllerBuildManifest = { version: 1, modules }\n writeFileSync(\n resolve(opts.distDir, CONTROLLER_MANIFEST_FILE),\n JSON.stringify(manifest, null, 2) + '\\n',\n )\n return manifest\n}\n\n/** Human-facing summary for the build log (mirrors the cron/job emitters). */\nexport function describeControllerArtifacts(manifest: ControllerBuildManifest | null): string {\n if (manifest === null) return 'controllers: none'\n const names = manifest.modules.map((m) => basename(m, '.mjs')).join(', ')\n return `controllers: ${manifest.modules.length} compiled (${names})`\n}\n"],"mappings":"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","names":[]}
@@ -2,7 +2,7 @@ import {
2
2
  dispatchCsrfWarn,
3
3
  incomingMessageToWebRequest,
4
4
  sendError
5
- } from "./chunk-JW5UFKQ3.js";
5
+ } from "./chunk-5AGNZXHJ.js";
6
6
  import {
7
7
  enforceCsrf
8
8
  } from "./chunk-P6OS7652.js";
@@ -130,4 +130,4 @@ export {
130
130
  scanControllerModules,
131
131
  dispatchControllerRequest
132
132
  };
133
- //# sourceMappingURL=chunk-WOANPZBT.js.map
133
+ //# sourceMappingURL=chunk-Q3UE7WIM.js.map
@@ -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-BG5K3L46.js");
181
+ const { theoPluginAsync } = await import("./vite-plugin-37OQ5RDR.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-IZTOGKLS.js.map
215
+ //# sourceMappingURL=chunk-YXEKPMDK.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-SSYDEKWF.js";
8
8
  import {
9
9
  dispatchControllerRequest
10
- } from "./chunk-WOANPZBT.js";
10
+ } from "./chunk-Q3UE7WIM.js";
11
11
  import {
12
12
  RUN_ID_HEADER,
13
13
  SSE_BASE_HEADERS,
@@ -32,7 +32,7 @@ import {
32
32
  securitySchema,
33
33
  storageSchema,
34
34
  uploadSchema
35
- } from "./chunk-DMODPX7P.js";
35
+ } from "./chunk-H2X5T45M.js";
36
36
  import {
37
37
  broadcastToDevtools
38
38
  } from "./chunk-OIGJOYX6.js";
@@ -60,13 +60,13 @@ import {
60
60
  incomingMessageToHandlerRequest,
61
61
  sendError,
62
62
  writeWebResponseToServerResponse
63
- } from "./chunk-JW5UFKQ3.js";
63
+ } from "./chunk-5AGNZXHJ.js";
64
64
  import {
65
65
  validateCsrfRequest
66
66
  } from "./chunk-P6OS7652.js";
67
67
  import {
68
68
  subjectFromContext
69
- } from "./chunk-YN4W7LCX.js";
69
+ } from "./chunk-ENRT6DAU.js";
70
70
  import {
71
71
  findSuggestion
72
72
  } from "./chunk-NTDN54XO.js";
@@ -3507,19 +3507,19 @@ async function theoPluginAsync(rootOrOptions) {
3507
3507
  })
3508
3508
  );
3509
3509
  }
3510
- const { appTypedClientPlugin } = await import("./app-typed-client-MKTSLES3.js");
3510
+ const { appTypedClientPlugin } = await import("./app-typed-client-B7QIRDSP.js");
3511
3511
  const appClientPlugin = appTypedClientPlugin({
3512
3512
  cwd: projectRoot,
3513
3513
  serverDir: serverDirAbs,
3514
3514
  distDir: resolve10(projectRoot, ".theokit")
3515
3515
  });
3516
- const { actionsVirtualModule } = await import("./actions-virtual-module-DNOALUTX.js");
3516
+ const { actionsVirtualModule } = await import("./actions-virtual-module-345YHSEB.js");
3517
3517
  const actionsPlugin = actionsVirtualModule({
3518
3518
  serverDir: serverDirAbs,
3519
3519
  distDir: resolve10(projectRoot, ".theokit")
3520
3520
  });
3521
3521
  const { agentsTypedClientPlugin } = await import("./agents-typed-client-PVUZU65B.js");
3522
- const { generateManifest } = await import("./internal-api-3YDGG5FF.js");
3522
+ const { generateManifest } = await import("./internal-api-VRUDDBEG.js");
3523
3523
  const agentsClientPlugin = agentsTypedClientPlugin({
3524
3524
  projectRoot,
3525
3525
  agentsDir: agentsDirName,
@@ -3536,7 +3536,7 @@ async function theoPluginAsync(rootOrOptions) {
3536
3536
  const controllerTransformPlugin = controllerSwcTransformPlugin({
3537
3537
  serverDir: serverDirAbs
3538
3538
  });
3539
- const { serverOnlyImportBoundary } = await import("./server-boundary-JG53VI6L.js");
3539
+ const { serverOnlyImportBoundary } = await import("./server-boundary-OEBKNBEP.js");
3540
3540
  const serverBoundaryPlugin = serverOnlyImportBoundary({
3541
3541
  projectRoot,
3542
3542
  serverDir: serverDirAbs
@@ -3719,4 +3719,4 @@ export {
3719
3719
  theoPluginAsync,
3720
3720
  theoPlugin
3721
3721
  };
3722
- //# sourceMappingURL=chunk-K3DUUEQ5.js.map
3722
+ //# sourceMappingURL=chunk-ZXJAI4J7.js.map
package/dist/cli/index.js CHANGED
@@ -15,12 +15,12 @@ function cliVersion() {
15
15
  // src/cli/index.ts
16
16
  var cli = cac("theokit");
17
17
  cli.command("dev", "Start development server").option("--port <port>", "Port number").action(async (options) => {
18
- const { devCommand } = await import("../dev-5ETOFKOP.js");
18
+ const { devCommand } = await import("../dev-BDODXUEA.js");
19
19
  await devCommand({ port: options.port ? Number(options.port) : void 0 });
20
20
  });
21
21
  cli.command("build", "Build for production").option("--target <target>", "Deploy target (node, vercel, cloudflare)").action(async (options) => {
22
22
  try {
23
- const { buildCommand } = await import("../build-RG54DH3F.js");
23
+ const { buildCommand } = await import("../build-22OMF3NG.js");
24
24
  await buildCommand({ target: options.target });
25
25
  } catch (err) {
26
26
  const msg = err instanceof Error ? err.message : String(err);
@@ -32,7 +32,7 @@ cli.command("build", "Build for production").option("--target <target>", "Deploy
32
32
  });
33
33
  cli.command("start", "Start production server").option("--port <port>", "Port number").action(async (options) => {
34
34
  try {
35
- const { startCommand } = await import("../start-3FYIYTM7.js");
35
+ const { startCommand } = await import("../start-AKMBT3DW.js");
36
36
  await startCommand({ port: options.port ? Number(options.port) : void 0 });
37
37
  } catch (err) {
38
38
  const msg = err instanceof Error ? err.message : String(err);
@@ -44,7 +44,7 @@ cli.command("start", "Start production server").option("--port <port>", "Port nu
44
44
  });
45
45
  cli.command("preview", "Build for production, then serve it \u2014 one step (B-030)").option("--port <port>", "Port number").option("--target <target>", "Deploy target (node, vercel, cloudflare)").action(async (options) => {
46
46
  try {
47
- const { previewCommand } = await import("../preview-XP77EPTL.js");
47
+ const { previewCommand } = await import("../preview-GUEKVBGL.js");
48
48
  await previewCommand({
49
49
  port: options.port ? Number(options.port) : void 0,
50
50
  target: options.target
@@ -77,7 +77,7 @@ cli.command(
77
77
  "Run an agent in the terminal (stream + tool calls + approval)"
78
78
  ).action(async (name, message) => {
79
79
  try {
80
- const { agentCommand } = await import("../agent-VWPSEDXD.js");
80
+ const { agentCommand } = await import("../agent-L45EZWPV.js");
81
81
  const { sawError } = await agentCommand(name, message);
82
82
  if (sawError) process.exit(1);
83
83
  } catch (err) {
@@ -108,7 +108,7 @@ cli.command("agent sessions gc", "Collect old transcripts for this project (dry
108
108
  });
109
109
  cli.command("mcp <agent>", "Serve an agent as an MCP server over stdio (for desktop MCP clients)").action(async (agent) => {
110
110
  try {
111
- const { mcpCommand } = await import("../mcp-B42ISIJG.js");
111
+ const { mcpCommand } = await import("../mcp-WMZSXQQG.js");
112
112
  await mcpCommand(agent);
113
113
  } catch (err) {
114
114
  const msg = err instanceof Error ? err.message : String(err);
@@ -11,13 +11,13 @@ import {
11
11
  } from "./chunk-KTMQUYED.js";
12
12
  import {
13
13
  theoPluginAsync
14
- } from "./chunk-ETKLM6UN.js";
15
- import "./chunk-XES7ZE2K.js";
14
+ } from "./chunk-6R6UR64X.js";
15
+ import "./chunk-L2NSHQOY.js";
16
16
  import "./chunk-2CVV6CNN.js";
17
17
  import "./chunk-3PWQQWT6.js";
18
18
  import "./chunk-FDOOBTXJ.js";
19
19
  import "./chunk-47MM2JUK.js";
20
- import "./chunk-GZ5YHD5H.js";
20
+ import "./chunk-KVZQJ3ZM.js";
21
21
  import "./chunk-WFIAYPBH.js";
22
22
  import "./chunk-L4TB6FXQ.js";
23
23
  import "./chunk-VV2VU3LJ.js";
@@ -128,4 +128,4 @@ export {
128
128
  devCommand,
129
129
  startDevServer
130
130
  };
131
- //# sourceMappingURL=dev-5ETOFKOP.js.map
131
+ //# sourceMappingURL=dev-BDODXUEA.js.map
@@ -6,7 +6,7 @@ import { J as JobBackend } from './job-backend-CgC8Xf33.js';
6
6
  import { L as LoadModule, S as ServerRouteNode } from './match-Dw4CNXJH.js';
7
7
  import { C as CsrfMode, D as DisallowedConfig } from './csrf-Dgot9qSM.js';
8
8
  import { z } from 'zod';
9
- import { R as RouteConfig } from './route-config-Cm_ZMA1C.js';
9
+ import { R as RouteConfig } from './route-config-B7FaTSby.js';
10
10
  import './action-protocol-tGm3NKRg.js';
11
11
 
12
12
  interface ExecuteActionOptions {
package/dist/index.js CHANGED
@@ -8,21 +8,21 @@ import {
8
8
  scanRoutes,
9
9
  theoConfigSchema,
10
10
  theoPlugin
11
- } from "./chunk-K3DUUEQ5.js";
11
+ } from "./chunk-ZXJAI4J7.js";
12
12
  import "./chunk-7NRFZBAL.js";
13
13
  import "./chunk-SSYDEKWF.js";
14
- import "./chunk-WOANPZBT.js";
15
- import "./chunk-DMODPX7P.js";
14
+ import "./chunk-Q3UE7WIM.js";
15
+ import "./chunk-H2X5T45M.js";
16
16
  import "./chunk-OIGJOYX6.js";
17
17
  import "./chunk-U3SPBLJF.js";
18
18
  import "./chunk-EYRWD2AB.js";
19
19
  import "./chunk-5GZROLDV.js";
20
20
  import "./chunk-OGLS76RN.js";
21
- import "./chunk-JW5UFKQ3.js";
21
+ import "./chunk-5AGNZXHJ.js";
22
22
  import "./chunk-P6OS7652.js";
23
23
  import "./chunk-ZDUO4IYN.js";
24
24
  import "./chunk-D4VP2QPR.js";
25
- import "./chunk-YN4W7LCX.js";
25
+ import "./chunk-ENRT6DAU.js";
26
26
  import "./chunk-47FFT43U.js";
27
27
  import "./chunk-NTDN54XO.js";
28
28
  import "./chunk-PVNMLZ5G.js";
@@ -16,7 +16,7 @@ import {
16
16
  handleCspReport,
17
17
  handleCsrfReadiness,
18
18
  mountAgent
19
- } from "./chunk-GZ5YHD5H.js";
19
+ } from "./chunk-KVZQJ3ZM.js";
20
20
  import {
21
21
  resolveProvider
22
22
  } from "./chunk-WFIAYPBH.js";
@@ -87,4 +87,4 @@ export {
87
87
  scanWebSocketRoutes,
88
88
  sendError
89
89
  };
90
- //# sourceMappingURL=internal-api-UM77XDXN.js.map
90
+ //# sourceMappingURL=internal-api-QKWTQ2Q7.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  dispatchControllerRequest
3
- } from "./chunk-WOANPZBT.js";
3
+ } from "./chunk-Q3UE7WIM.js";
4
4
  import {
5
5
  mountAgent
6
- } from "./chunk-DMODPX7P.js";
6
+ } from "./chunk-H2X5T45M.js";
7
7
  import {
8
8
  CSP_REPORT_PATH,
9
9
  CsrfReadinessStore,
@@ -20,11 +20,11 @@ import {
20
20
  handleBatchRequest,
21
21
  incomingMessageToHandlerRequest,
22
22
  sendError
23
- } from "./chunk-JW5UFKQ3.js";
23
+ } from "./chunk-5AGNZXHJ.js";
24
24
  import "./chunk-P6OS7652.js";
25
25
  import "./chunk-ZDUO4IYN.js";
26
26
  import "./chunk-D4VP2QPR.js";
27
- import "./chunk-YN4W7LCX.js";
27
+ import "./chunk-ENRT6DAU.js";
28
28
  import "./chunk-47FFT43U.js";
29
29
  import {
30
30
  findSuggestion
@@ -107,4 +107,4 @@ export {
107
107
  scanWebSocketRoutes,
108
108
  sendError
109
109
  };
110
- //# sourceMappingURL=internal-api-3YDGG5FF.js.map
110
+ //# sourceMappingURL=internal-api-VRUDDBEG.js.map
@@ -2,7 +2,7 @@
2
2
  import "tsx/esm";
3
3
  import {
4
4
  createAgentSsrLoader
5
- } from "./chunk-IZTOGKLS.js";
5
+ } from "./chunk-YXEKPMDK.js";
6
6
  import {
7
7
  extractAppResources,
8
8
  handleMcpJsonRpc
@@ -75,4 +75,4 @@ async function mcpCommand(name, deps = {}) {
75
75
  export {
76
76
  mcpCommand
77
77
  };
78
- //# sourceMappingURL=mcp-B42ISIJG.js.map
78
+ //# sourceMappingURL=mcp-WMZSXQQG.js.map
@@ -4,8 +4,8 @@ import "tsx/esm";
4
4
  // src/cli/commands/preview.ts
5
5
  async function defaultSteps() {
6
6
  const [{ buildCommand }, { startCommand }] = await Promise.all([
7
- import("./build-RG54DH3F.js"),
8
- import("./start-3FYIYTM7.js")
7
+ import("./build-22OMF3NG.js"),
8
+ import("./start-AKMBT3DW.js")
9
9
  ]);
10
10
  return {
11
11
  build: (opts) => buildCommand(opts),
@@ -20,4 +20,4 @@ async function previewCommand(options = {}, steps) {
20
20
  export {
21
21
  previewCommand
22
22
  };
23
- //# sourceMappingURL=preview-XP77EPTL.js.map
23
+ //# sourceMappingURL=preview-GUEKVBGL.js.map
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { R as RoutePolicy } from './route-policy-BxOycCDq.js';
2
+ import { R as RoutePolicy } from './route-policy-BHXQDzBF.js';
3
3
 
4
4
  /**
5
5
  * core/contracts/route-config.ts
@@ -32,7 +32,26 @@ interface RoutePolicyInput<TQuery = unknown, TBody = unknown, TParams = unknown>
32
32
  * like a route nobody thought about (ADR 0001 section Consequences, Risks).
33
33
  */
34
34
  type RoutePolicy<TQuery = unknown, TBody = unknown, TParams = unknown> = 'public' | ((input: RoutePolicyInput<TQuery, TBody, TParams>) => boolean | AccessDecision | Promise<boolean | AccessDecision>);
35
- /** Narrow a run-context to the subject it carries, if it carries one. */
35
+ /**
36
+ * Narrow a RUN-CONTEXT to the subject it carries, if it carries one.
37
+ *
38
+ * The argument is the object `server/context.ts` builds — the one with `subject` on it. It is NOT a
39
+ * controller guard's `ExecutionContext`, and telling a caller so is the whole reason for the throw
40
+ * below (usetheokit/theokit#574).
41
+ *
42
+ * An `ExecutionContext` carries `getRequest`, `getUrl`, `getClass` and `getMethodName` and nothing
43
+ * else, so this function used to answer `null` for it — indistinguishable from "an anonymous
44
+ * caller". A guard written as `subjectFromContext(context) !== null` therefore denied EVERYONE, and
45
+ * passed the only test aimed at it, because that test asserted an unauthenticated request is
46
+ * refused. A guard that always denies is indistinguishable from a working one until somebody tries
47
+ * to get in.
48
+ *
49
+ * That is a silent, fail-CLOSED defect, which is the worst combination: nothing errors, nothing
50
+ * logs, and the failure looks like the feature. `error-handling.md` § 2 is unambiguous here — fail
51
+ * fast, fail loud, and never return a magic value for a caller mistake.
52
+ *
53
+ * @throws TypeError when handed an `ExecutionContext` instead of a run-context.
54
+ */
36
55
  declare function subjectFromContext(context: unknown): RouteSubject | null;
37
56
  /**
38
57
  * Evaluate a route policy. THE single implementation - the HTTP executors and
@@ -1,12 +1,13 @@
1
- import { R as RouteConfig } from '../../route-config-Cm_ZMA1C.js';
1
+ import { R as RouteConfig } from '../../route-config-B7FaTSby.js';
2
2
  import { z } from 'zod';
3
3
  import { W as WebSocketHandler, b as WebSocketLike } from '../../define-websocket-DzPn1sR6.js';
4
4
  export { a as WebSocketHandlerWeb } from '../../define-websocket-DzPn1sR6.js';
5
5
  import { b as ToolTransform, C as CustomTool } from '../../define-agent-tool-aYYLpMeo.js';
6
6
  export { D as DefineAgentToolSpec, T as ToolContextMessage, a as ToolHandlerContext, c as applyTransform } from '../../define-agent-tool-aYYLpMeo.js';
7
- import { R as RoutePolicy } from '../../route-policy-BxOycCDq.js';
8
- export { A as AccessDecision, b as RoutePolicyInput, a as RouteSubject, e as evaluateRoutePolicy, r as requireOwner, s as subjectFromContext } from '../../route-policy-BxOycCDq.js';
7
+ import { R as RoutePolicy } from '../../route-policy-BHXQDzBF.js';
8
+ export { A as AccessDecision, b as RoutePolicyInput, a as RouteSubject, e as evaluateRoutePolicy, r as requireOwner, s as subjectFromContext } from '../../route-policy-BHXQDzBF.js';
9
9
  import { c as OnRequestHook, f as PreHandlerHook, d as OnResponseHook, O as OnErrorHook, T as TheoPlugin } from '../../plugin-types-BUVfUQ0V.js';
10
+ export { b as HookName, P as PluginContext, e as PluginErrorContext } from '../../plugin-types-BUVfUQ0V.js';
10
11
  import { WireChunk } from '@theokit/presenter/wire';
11
12
  import { IncomingMessage } from 'node:http';
12
13
  export { H as HEALTH_PATH, a as HealthRouteConfig, b as READY_PATH, c as ReadyRouteConfig, d as ReservedResponse, R as ReservedRoutes, e as defineHealthRoute, f as defineReadyRoute, s as serveReservedRoute } from '../../health-route-C0hk64_U.js';
@@ -402,4 +403,4 @@ interface WebChannelHandler<TMessage = unknown> {
402
403
  */
403
404
  declare function defineWebChannel<TMessage = unknown>(handler: WebChannelHandler<TMessage>): WebChannelHandler<TMessage>;
404
405
 
405
- export { type ActionAccept, type ActionBuilder, type ActionConfig, type ChannelHandler, CustomTool, type MiddlewareBuilder, type MiddlewareHandler, type PluginBuilder, type RouteBuilder, RouteConfig, RoutePolicy, type ToolBuilder, ToolTransform, type WebChannelHandler, type WebSocketBuilder, WebSocketHandler, WebSocketLike, action, defineChannel, defineWebChannel, middleware, plugin, route, tool, uiMessageStreamResponse, websocket };
406
+ export { type ActionAccept, type ActionBuilder, type ActionConfig, type ChannelHandler, CustomTool, type MiddlewareBuilder, type MiddlewareHandler, OnErrorHook, OnRequestHook, OnResponseHook, type PluginBuilder, PreHandlerHook, type RouteBuilder, RouteConfig, RoutePolicy, TheoPlugin, type ToolBuilder, ToolTransform, type WebChannelHandler, type WebSocketBuilder, WebSocketHandler, WebSocketLike, action, defineChannel, defineWebChannel, middleware, plugin, route, tool, uiMessageStreamResponse, websocket };
@@ -14,7 +14,7 @@ import {
14
14
  evaluateRoutePolicy,
15
15
  requireOwner,
16
16
  subjectFromContext
17
- } from "../../chunk-YN4W7LCX.js";
17
+ } from "../../chunk-ENRT6DAU.js";
18
18
  import {
19
19
  HEALTH_PATH,
20
20
  READY_PATH,
@@ -1,4 +1,4 @@
1
- export { B as BATCH_PATH, a as BatchExecuteFn, b as BatchPathConflictError, c as BatchPayload, d as BatchRequestItem, e as BatchResponse, f as BatchResultItem, C as CookieOptions, h as CorsConfig, i as CorsHandler, j as CorsOrigin, k as CorsWebHandler, l as CustomErrorPages, E as ExecuteActionOptions, m as ExecuteRouteContext, F as FileTooLargeError, H as HandleBatchOptions, M as MAX_ERROR_HTML_BYTES, n as MiddlewareResult, N as NotFoundError, p as ProcedureInputError, q as ProcedureOutputError, S as STRIPPED_HEADERS, u as SendErrorInput, v as SendErrorOptions, T as TRACE_HEADER, w as TRACE_PARENT_HEADER, x as TheoError, W as W3CTraceContext, _ as _resetMiddlewareCacheForTests, z as appendCookieToHeaders, A as appendDeleteCookieToHeaders, D as callProcedure, G as createCorsHandler, I as createCorsWebHandler, J as createOpenApiHandler, K as createServerContext, L as deleteCookie, Q as envelopeCodeToStatus, V as executeAction, X as executeRoute, Y as executeWebRequest, Z as extractTraceId, $ as extractTraceIdFromRequest, a0 as extractW3CTraceContext, a1 as fromUnknown, a2 as getCookie, a3 as getCookieFromRequest, a4 as handleBatchRequest, a5 as handleRequestError, a6 as handleWebRequestError, a7 as jsonTransformer, a8 as loadCustomErrorPages, a9 as matchesOrigin, aa as parseCookieHeader, ab as parseRequestBody, ac as parseTraceparent, ad as parseTraceparentContext, ae as resolveTransformer, af as runMiddlewareAndContext, ag as sendError, ah as sendJson, ai as serializeCookie, aj as serveStaticFile, ak as serverErrorToEnvelope, al as setCookie, am as superjsonTransformer, an as validateRouteInput } from '../../index-ADEV6pen.js';
1
+ export { B as BATCH_PATH, a as BatchExecuteFn, b as BatchPathConflictError, c as BatchPayload, d as BatchRequestItem, e as BatchResponse, f as BatchResultItem, C as CookieOptions, h as CorsConfig, i as CorsHandler, j as CorsOrigin, k as CorsWebHandler, l as CustomErrorPages, E as ExecuteActionOptions, m as ExecuteRouteContext, F as FileTooLargeError, H as HandleBatchOptions, M as MAX_ERROR_HTML_BYTES, n as MiddlewareResult, N as NotFoundError, p as ProcedureInputError, q as ProcedureOutputError, S as STRIPPED_HEADERS, u as SendErrorInput, v as SendErrorOptions, T as TRACE_HEADER, w as TRACE_PARENT_HEADER, x as TheoError, W as W3CTraceContext, _ as _resetMiddlewareCacheForTests, z as appendCookieToHeaders, A as appendDeleteCookieToHeaders, D as callProcedure, G as createCorsHandler, I as createCorsWebHandler, J as createOpenApiHandler, K as createServerContext, L as deleteCookie, Q as envelopeCodeToStatus, V as executeAction, X as executeRoute, Y as executeWebRequest, Z as extractTraceId, $ as extractTraceIdFromRequest, a0 as extractW3CTraceContext, a1 as fromUnknown, a2 as getCookie, a3 as getCookieFromRequest, a4 as handleBatchRequest, a5 as handleRequestError, a6 as handleWebRequestError, a7 as jsonTransformer, a8 as loadCustomErrorPages, a9 as matchesOrigin, aa as parseCookieHeader, ab as parseRequestBody, ac as parseTraceparent, ad as parseTraceparentContext, ae as resolveTransformer, af as runMiddlewareAndContext, ag as sendError, ah as sendJson, ai as serializeCookie, aj as serveStaticFile, ak as serverErrorToEnvelope, al as setCookie, am as superjsonTransformer, an as validateRouteInput } from '../../index-BXGSBlxf.js';
2
2
  export { A as ActionError, b as ActionInputError, f as extractUniversalIssues, i as isActionError, d as isInputError } from '../../action-protocol-tGm3NKRg.js';
3
3
  import '../../error-envelope-DG47lt8E.js';
4
4
  import 'node:http';
@@ -10,5 +10,5 @@ import 'vite';
10
10
  import '../../csrf-Dgot9qSM.js';
11
11
  import '../../audit-log-BQWM5YLG.js';
12
12
  import 'zod';
13
- import '../../route-config-Cm_ZMA1C.js';
14
- import '../../route-policy-BxOycCDq.js';
13
+ import '../../route-config-B7FaTSby.js';
14
+ import '../../route-policy-BHXQDzBF.js';
@@ -6,7 +6,7 @@ import {
6
6
  createOpenApiHandler,
7
7
  loadCustomErrorPages,
8
8
  serveStaticFile
9
- } from "../../chunk-KQ27YDLG.js";
9
+ } from "../../chunk-4BQIJ4HE.js";
10
10
  import {
11
11
  jsonTransformer,
12
12
  resolveTransformer,
@@ -31,7 +31,7 @@ import {
31
31
  sendError,
32
32
  sendJson,
33
33
  validateRouteInput
34
- } from "../../chunk-JW5UFKQ3.js";
34
+ } from "../../chunk-5AGNZXHJ.js";
35
35
  import "../../chunk-P6OS7652.js";
36
36
  import {
37
37
  ActionError,
@@ -41,7 +41,7 @@ import {
41
41
  isInputError
42
42
  } from "../../chunk-ZDUO4IYN.js";
43
43
  import "../../chunk-D4VP2QPR.js";
44
- import "../../chunk-YN4W7LCX.js";
44
+ import "../../chunk-ENRT6DAU.js";
45
45
  import "../../chunk-47FFT43U.js";
46
46
  import {
47
47
  FileTooLargeError,
@@ -1,10 +1,11 @@
1
- import { R as RouteConfig } from '../route-config-Cm_ZMA1C.js';
1
+ import { R as RouteConfig } from '../route-config-B7FaTSby.js';
2
2
  export { ActionAccept, ActionBuilder, ActionConfig, ChannelHandler, MiddlewareBuilder, MiddlewareHandler, PluginBuilder, RouteBuilder, ToolBuilder, WebChannelHandler, WebSocketBuilder, action, defineChannel, defineWebChannel, middleware, plugin, route, tool, uiMessageStreamResponse, websocket } from './define/index.js';
3
3
  export { W as WebSocketHandler, a as WebSocketHandlerWeb, b as WebSocketLike } from '../define-websocket-DzPn1sR6.js';
4
4
  export { C as CustomTool, D as DefineAgentToolSpec, T as ToolContextMessage, a as ToolHandlerContext, b as ToolTransform, c as applyTransform } from '../define-agent-tool-aYYLpMeo.js';
5
- export { A as AccessDecision, R as RoutePolicy, b as RoutePolicyInput, a as RouteSubject, e as evaluateRoutePolicy, r as requireOwner, s as subjectFromContext } from '../route-policy-BxOycCDq.js';
5
+ export { A as AccessDecision, R as RoutePolicy, b as RoutePolicyInput, a as RouteSubject, e as evaluateRoutePolicy, r as requireOwner, s as subjectFromContext } from '../route-policy-BHXQDzBF.js';
6
+ export { b as HookName, H as HookResult, O as OnErrorHook, c as OnRequestHook, d as OnResponseHook, P as PluginContext, e as PluginErrorContext, f as PreHandlerHook, R as RunHookOptions, a as TheoApp, T as TheoPlugin } from '../plugin-types-BUVfUQ0V.js';
6
7
  export { H as HEALTH_PATH, a as HealthRouteConfig, b as READY_PATH, c as ReadyRouteConfig, d as ReservedResponse, R as ReservedRoutes, e as defineHealthRoute, f as defineReadyRoute, s as serveReservedRoute } from '../health-route-C0hk64_U.js';
7
- export { B as BATCH_PATH, a as BatchExecuteFn, b as BatchPathConflictError, c as BatchPayload, d as BatchRequestItem, e as BatchResponse, f as BatchResultItem, g as BodyParserOptions, C as CookieOptions, h as CorsConfig, i as CorsHandler, j as CorsOrigin, k as CorsWebHandler, l as CustomErrorPages, E as ExecuteActionOptions, m as ExecuteRouteContext, F as FileTooLargeError, H as HandleBatchOptions, M as MAX_ERROR_HTML_BYTES, n as MiddlewareResult, N as NotFoundError, O as OpenApiDocsOptions, P as ParsedBody, o as ProcedureInput, p as ProcedureInputError, q as ProcedureOutputError, R as RawRouteInput, r as RouteInputChannel, s as RouteInputSchemas, t as RouteInputValidation, S as STRIPPED_HEADERS, u as SendErrorInput, v as SendErrorOptions, T as TRACE_HEADER, w as TRACE_PARENT_HEADER, x as TheoError, y as TheoTransformer, U as UploadedFile, W as W3CTraceContext, _ as _resetMiddlewareCacheForTests, z as appendCookieToHeaders, A as appendDeleteCookieToHeaders, D as callProcedure, G as createCorsHandler, I as createCorsWebHandler, J as createOpenApiHandler, K as createServerContext, L as deleteCookie, Q as envelopeCodeToStatus, V as executeAction, X as executeRoute, Y as executeWebRequest, Z as extractTraceId, $ as extractTraceIdFromRequest, a0 as extractW3CTraceContext, a1 as fromUnknown, a2 as getCookie, a3 as getCookieFromRequest, a4 as handleBatchRequest, a5 as handleRequestError, a6 as handleWebRequestError, a7 as jsonTransformer, a8 as loadCustomErrorPages, a9 as matchesOrigin, aa as parseCookieHeader, ab as parseRequestBody, ac as parseTraceparent, ad as parseTraceparentContext, ae as resolveTransformer, af as runMiddlewareAndContext, ag as sendError, ah as sendJson, ai as serializeCookie, aj as serveStaticFile, ak as serverErrorToEnvelope, al as setCookie, am as superjsonTransformer, an as validateRouteInput } from '../index-ADEV6pen.js';
8
+ export { B as BATCH_PATH, a as BatchExecuteFn, b as BatchPathConflictError, c as BatchPayload, d as BatchRequestItem, e as BatchResponse, f as BatchResultItem, g as BodyParserOptions, C as CookieOptions, h as CorsConfig, i as CorsHandler, j as CorsOrigin, k as CorsWebHandler, l as CustomErrorPages, E as ExecuteActionOptions, m as ExecuteRouteContext, F as FileTooLargeError, H as HandleBatchOptions, M as MAX_ERROR_HTML_BYTES, n as MiddlewareResult, N as NotFoundError, O as OpenApiDocsOptions, P as ParsedBody, o as ProcedureInput, p as ProcedureInputError, q as ProcedureOutputError, R as RawRouteInput, r as RouteInputChannel, s as RouteInputSchemas, t as RouteInputValidation, S as STRIPPED_HEADERS, u as SendErrorInput, v as SendErrorOptions, T as TRACE_HEADER, w as TRACE_PARENT_HEADER, x as TheoError, y as TheoTransformer, U as UploadedFile, W as W3CTraceContext, _ as _resetMiddlewareCacheForTests, z as appendCookieToHeaders, A as appendDeleteCookieToHeaders, D as callProcedure, G as createCorsHandler, I as createCorsWebHandler, J as createOpenApiHandler, K as createServerContext, L as deleteCookie, Q as envelopeCodeToStatus, V as executeAction, X as executeRoute, Y as executeWebRequest, Z as extractTraceId, $ as extractTraceIdFromRequest, a0 as extractW3CTraceContext, a1 as fromUnknown, a2 as getCookie, a3 as getCookieFromRequest, a4 as handleBatchRequest, a5 as handleRequestError, a6 as handleWebRequestError, a7 as jsonTransformer, a8 as loadCustomErrorPages, a9 as matchesOrigin, aa as parseCookieHeader, ab as parseRequestBody, ac as parseTraceparent, ad as parseTraceparentContext, ae as resolveTransformer, af as runMiddlewareAndContext, ag as sendError, ah as sendJson, ai as serializeCookie, aj as serveStaticFile, ak as serverErrorToEnvelope, al as setCookie, am as superjsonTransformer, an as validateRouteInput } from '../index-BXGSBlxf.js';
8
9
  export { A as ActionError, a as ActionErrorCode, b as ActionInputError, e as ActionManifestEntry, c as ActionResult, S as SerializedActionResult, U as UniversalZodIssue, f as extractUniversalIssues, i as isActionError, d as isInputError } from '../action-protocol-tGm3NKRg.js';
9
10
  export { ACTION_SCHEMAS_DIR, ActionNode, ActionScanError, LoadedManifest, ManifestAction, ManifestAgent, ManifestRoute, ManifestWebSocket, TheoManifest, WebSocketRouteNode, _resetRouteScanCacheForTests, compareRouteSpecificity, generateManifest, loadManifest, scanMiddlewares, scanServerActions, scanServerActionsEnriched, scanServerRoutes, scanWebSocketRoutes, writeManifest } from './scan/index.js';
10
11
  export { L as LoadModule, S as ServerRouteNode, c as compilePattern, a as createProductionLoader, b as createViteLoader, m as matchRoute } from '../match-Dw4CNXJH.js';
@@ -36,7 +37,6 @@ export { G as GenericFactory, b as PoolLike, P as PostgresDatabaseConfig, d as R
36
37
  export { BodyTooLargeError, DEFAULT_MAX_BODY_BYTES, DiscordWebhookOptions, GitHubWebhookOptions, RawBodyResult, ReadRawBodyOptions, SlackWebhookOptions, StripeWebhookOptions, TelegramWebhookOptions, defineWebhook, discord, dispatchWebhook, github, readRawBody, slack, stripe, telegram, timingSafeEqual } from './webhook/index.js';
37
38
  export { D as DefineWebhookOptions, S as SubscribeFn, a as SubscribeResult, V as VerifyFn, b as VerifyResult, W as WebhookContext, c as WebhookDefinition, d as WhatsAppSubscribeOptions, e as WhatsAppWebhookOptions, w as whatsapp, f as whatsappSubscribe } from '../whatsapp-D_Fnl1LX.js';
38
39
  import { z } from 'zod';
39
- export { b as HookName, H as HookResult, O as OnErrorHook, c as OnRequestHook, d as OnResponseHook, P as PluginContext, e as PluginErrorContext, f as PreHandlerHook, R as RunHookOptions, a as TheoApp, T as TheoPlugin } from '../plugin-types-BUVfUQ0V.js';
40
40
  export { ComposeInstructionsOptions, ComposedInstructions, ConfigLayer, ContextPressure, ContextPressureThresholdError, ContextPressureThresholds, CustomCommand, CustomCommandsResult, DEFAULT_CONTEXT_PRESSURE_THRESHOLDS, InstructionBlock, InstructionSource, InstructionTree, InstructionTreeBudget, LayerOutOfOrderError, LayeredConfig, LayeredConfigInput, LayeredConfigResult, LoadCustomCommandsInput, LoadInstructionTreeInput, ParsedFrontmatter, PrecedenceReport, ProvenancePerKey, TrustRecord, TrustStore, TrustStorePermissionsError, composeInstructions, contextPressure, effectiveContextWindow, frontmatterValue, loadCustomCommands, loadInstructionTree, splitFrontmatter } from '@theokit/agents/config';
41
41
  export { a as ServiceDefinition, S as ServicesConfig, b as ServicesConfigInput, c as ServicesConfigOutput } from '../schema-BdakLtuC.js';
42
42
  export { C as CspMode, D as DEFAULT_CSP, a as DEFAULT_PERMISSIONS_POLICY, c as SecurityEnv, S as SecurityHeadersConfig, d as SecurityHeadersOptions, b as buildSecurityHeaders } from '../security-headers-C2cByfJn.js';
@@ -43,7 +43,7 @@ import {
43
43
  createOpenApiHandler,
44
44
  loadCustomErrorPages,
45
45
  serveStaticFile
46
- } from "../chunk-KQ27YDLG.js";
46
+ } from "../chunk-4BQIJ4HE.js";
47
47
  import {
48
48
  DuplicateJobNameError,
49
49
  InMemoryJobBackend,
@@ -117,7 +117,7 @@ import {
117
117
  sendError,
118
118
  sendJson,
119
119
  validateRouteInput
120
- } from "../chunk-JW5UFKQ3.js";
120
+ } from "../chunk-5AGNZXHJ.js";
121
121
  import {
122
122
  CSRF_WARN_CODE,
123
123
  CSRF_WARN_DOCS_URL,
@@ -138,7 +138,7 @@ import {
138
138
  evaluateRoutePolicy,
139
139
  requireOwner,
140
140
  subjectFromContext
141
- } from "../chunk-YN4W7LCX.js";
141
+ } from "../chunk-ENRT6DAU.js";
142
142
  import {
143
143
  DuplicateContextKeyError,
144
144
  createOutbox,
@@ -3,7 +3,7 @@ import "tsx/esm";
3
3
  import {
4
4
  resolveTheoRootDir
5
5
  } from "./chunk-FDOOBTXJ.js";
6
- import "./chunk-GZ5YHD5H.js";
6
+ import "./chunk-KVZQJ3ZM.js";
7
7
  import "./chunk-WFIAYPBH.js";
8
8
  import "./chunk-L4TB6FXQ.js";
9
9
  import "./chunk-VV2VU3LJ.js";
@@ -131,4 +131,4 @@ export {
131
131
  ServerOnlyImportError,
132
132
  serverOnlyImportBoundary
133
133
  };
134
- //# sourceMappingURL=server-boundary-X52AMCKI.js.map
134
+ //# sourceMappingURL=server-boundary-7BRS2CWI.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  resolveTheoRootDir
3
3
  } from "./chunk-7NRFZBAL.js";
4
- import "./chunk-WOANPZBT.js";
5
- import "./chunk-DMODPX7P.js";
4
+ import "./chunk-Q3UE7WIM.js";
5
+ import "./chunk-H2X5T45M.js";
6
6
  import "./chunk-EYRWD2AB.js";
7
7
  import "./chunk-5GZROLDV.js";
8
- import "./chunk-JW5UFKQ3.js";
8
+ import "./chunk-5AGNZXHJ.js";
9
9
  import "./chunk-P6OS7652.js";
10
10
  import "./chunk-ZDUO4IYN.js";
11
11
  import "./chunk-D4VP2QPR.js";
12
- import "./chunk-YN4W7LCX.js";
12
+ import "./chunk-ENRT6DAU.js";
13
13
  import "./chunk-47FFT43U.js";
14
14
  import "./chunk-NTDN54XO.js";
15
15
  import "./chunk-PVNMLZ5G.js";
@@ -147,4 +147,4 @@ export {
147
147
  ServerOnlyImportError,
148
148
  serverOnlyImportBoundary
149
149
  };
150
- //# sourceMappingURL=server-boundary-JG53VI6L.js.map
150
+ //# sourceMappingURL=server-boundary-OEBKNBEP.js.map