theokit 0.50.2 → 0.51.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 (69) hide show
  1. package/dist/{actions-virtual-module-ESKVARP4.js → actions-virtual-module-D52G2ACL.js} +3 -3
  2. package/dist/{actions-virtual-module-2STC6RV3.js → actions-virtual-module-FJIFAQUA.js} +6 -6
  3. package/dist/adapters/agent-mount.js +1 -1
  4. package/dist/{agent-7RP3VTSI.js → agent-PLEYEX37.js} +4 -4
  5. package/dist/{app-typed-client-NYZ2PLNC.js → app-typed-client-MPQDKS35.js} +6 -6
  6. package/dist/{app-typed-client-CEW2KGXR.js → app-typed-client-XPYFYUPN.js} +3 -3
  7. package/dist/{build-4LPUE2H3.js → build-MGNDNTXH.js} +6 -6
  8. package/dist/{chunk-QNGS7EVS.js → chunk-575RV3CD.js} +2 -2
  9. package/dist/{chunk-EVZKNA2W.js → chunk-6AM7HIRM.js} +2 -2
  10. package/dist/{chunk-ECTUUAMR.js → chunk-75MWRZDP.js} +8 -8
  11. package/dist/{chunk-MLWETKFA.js → chunk-DY5W5OWQ.js} +2 -2
  12. package/dist/{chunk-L4VFNFDL.js → chunk-IRASEXOG.js} +29 -1
  13. package/dist/{chunk-L4VFNFDL.js.map → chunk-IRASEXOG.js.map} +1 -1
  14. package/dist/{chunk-LLMTORUY.js → chunk-MTWZ54OI.js} +10 -10
  15. package/dist/{chunk-6J4JWHDJ.js → chunk-VHB2FSPM.js} +16 -2
  16. package/dist/chunk-VHB2FSPM.js.map +1 -0
  17. package/dist/{chunk-KUZVRJ7M.js → chunk-XLLW46MB.js} +3 -3
  18. package/dist/{chunk-3MIGBPTW.js → chunk-YJDWSM4D.js} +3 -3
  19. package/dist/{chunk-XS7EX55U.js → chunk-YYOBMOO4.js} +16 -2
  20. package/dist/chunk-YYOBMOO4.js.map +1 -0
  21. package/dist/{chunk-FD4ZDTQ6.js → chunk-Z7CJHDLS.js} +29 -1
  22. package/dist/{chunk-FD4ZDTQ6.js.map → chunk-Z7CJHDLS.js.map} +1 -1
  23. package/dist/cli/index.js +8 -8
  24. package/dist/{dev-Z4YLROZD.js → dev-2NEKDLEY.js} +8 -8
  25. package/dist/{dev-emit-MVAJAFGX.js → dev-emit-G2E2U3NP.js} +3 -3
  26. package/dist/{dev-emit-BFNMDCPB.js → dev-emit-SPSV6UU7.js} +5 -5
  27. package/dist/index.js +3 -3
  28. package/dist/{internal-api-53L6FIQ2.js → internal-api-OOJT7L6I.js} +6 -6
  29. package/dist/{internal-api-IXSWWH2N.js → internal-api-PYWIJTLF.js} +3 -3
  30. package/dist/{mcp-RKD4QQFS.js → mcp-5AWKPETM.js} +4 -4
  31. package/dist/{openapi-VFPEZSRI.js → openapi-2IBBOS3Q.js} +5 -5
  32. package/dist/{preview-LB3YL6U5.js → preview-D2RKY5ZA.js} +3 -3
  33. package/dist/{routes-BPLU3ISV.js → routes-PP5PHHLR.js} +3 -3
  34. package/dist/server/index.js +2 -2
  35. package/dist/server/scan/index.js +2 -2
  36. package/dist/{server-boundary-RBMMPWCV.js → server-boundary-ITRJTWT4.js} +3 -3
  37. package/dist/{server-boundary-ACFCBLZ4.js → server-boundary-YIRMIYAS.js} +6 -6
  38. package/dist/{start-G2JS6422.js → start-DMOVSFBL.js} +7 -7
  39. package/dist/vite-plugin/index.js +3 -3
  40. package/dist/{vite-plugin-4VM5EUQL.js → vite-plugin-6KDMU3E2.js} +8 -8
  41. package/package.json +1 -1
  42. package/dist/chunk-6J4JWHDJ.js.map +0 -1
  43. package/dist/chunk-XS7EX55U.js.map +0 -1
  44. /package/dist/{actions-virtual-module-ESKVARP4.js.map → actions-virtual-module-D52G2ACL.js.map} +0 -0
  45. /package/dist/{actions-virtual-module-2STC6RV3.js.map → actions-virtual-module-FJIFAQUA.js.map} +0 -0
  46. /package/dist/{agent-7RP3VTSI.js.map → agent-PLEYEX37.js.map} +0 -0
  47. /package/dist/{app-typed-client-NYZ2PLNC.js.map → app-typed-client-MPQDKS35.js.map} +0 -0
  48. /package/dist/{app-typed-client-CEW2KGXR.js.map → app-typed-client-XPYFYUPN.js.map} +0 -0
  49. /package/dist/{build-4LPUE2H3.js.map → build-MGNDNTXH.js.map} +0 -0
  50. /package/dist/{chunk-QNGS7EVS.js.map → chunk-575RV3CD.js.map} +0 -0
  51. /package/dist/{chunk-EVZKNA2W.js.map → chunk-6AM7HIRM.js.map} +0 -0
  52. /package/dist/{chunk-ECTUUAMR.js.map → chunk-75MWRZDP.js.map} +0 -0
  53. /package/dist/{chunk-MLWETKFA.js.map → chunk-DY5W5OWQ.js.map} +0 -0
  54. /package/dist/{chunk-LLMTORUY.js.map → chunk-MTWZ54OI.js.map} +0 -0
  55. /package/dist/{chunk-KUZVRJ7M.js.map → chunk-XLLW46MB.js.map} +0 -0
  56. /package/dist/{chunk-3MIGBPTW.js.map → chunk-YJDWSM4D.js.map} +0 -0
  57. /package/dist/{dev-Z4YLROZD.js.map → dev-2NEKDLEY.js.map} +0 -0
  58. /package/dist/{dev-emit-MVAJAFGX.js.map → dev-emit-G2E2U3NP.js.map} +0 -0
  59. /package/dist/{dev-emit-BFNMDCPB.js.map → dev-emit-SPSV6UU7.js.map} +0 -0
  60. /package/dist/{internal-api-53L6FIQ2.js.map → internal-api-OOJT7L6I.js.map} +0 -0
  61. /package/dist/{internal-api-IXSWWH2N.js.map → internal-api-PYWIJTLF.js.map} +0 -0
  62. /package/dist/{mcp-RKD4QQFS.js.map → mcp-5AWKPETM.js.map} +0 -0
  63. /package/dist/{openapi-VFPEZSRI.js.map → openapi-2IBBOS3Q.js.map} +0 -0
  64. /package/dist/{preview-LB3YL6U5.js.map → preview-D2RKY5ZA.js.map} +0 -0
  65. /package/dist/{routes-BPLU3ISV.js.map → routes-PP5PHHLR.js.map} +0 -0
  66. /package/dist/{server-boundary-RBMMPWCV.js.map → server-boundary-ITRJTWT4.js.map} +0 -0
  67. /package/dist/{server-boundary-ACFCBLZ4.js.map → server-boundary-YIRMIYAS.js.map} +0 -0
  68. /package/dist/{start-G2JS6422.js.map → start-DMOVSFBL.js.map} +0 -0
  69. /package/dist/{vite-plugin-4VM5EUQL.js.map → vite-plugin-6KDMU3E2.js.map} +0 -0
@@ -11,9 +11,9 @@ import "./chunk-TNI4MARH.js";
11
11
  import "./chunk-OQCRCXCP.js";
12
12
  import {
13
13
  scanServerActionsEnriched
14
- } from "./chunk-6J4JWHDJ.js";
14
+ } from "./chunk-VHB2FSPM.js";
15
15
  import "./chunk-DV34VG3N.js";
16
- import "./chunk-L4VFNFDL.js";
16
+ import "./chunk-IRASEXOG.js";
17
17
  import "./chunk-BX6EUYHU.js";
18
18
  import "./chunk-BPYMC7SU.js";
19
19
  import "./chunk-IRQGAC4L.js";
@@ -233,4 +233,4 @@ export const actions = manifest
233
233
  export {
234
234
  actionsVirtualModule
235
235
  };
236
- //# sourceMappingURL=actions-virtual-module-ESKVARP4.js.map
236
+ //# sourceMappingURL=actions-virtual-module-D52G2ACL.js.map
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import "tsx/esm";
3
- import "./chunk-QNGS7EVS.js";
3
+ import "./chunk-575RV3CD.js";
4
4
  import "./chunk-5YPXXSYY.js";
5
5
  import "./chunk-MWWFXYW3.js";
6
6
  import "./chunk-RPET332G.js";
7
7
  import "./chunk-GSIOWE5B.js";
8
8
  import "./chunk-C27VRUVN.js";
9
9
  import "./chunk-7UZZHCRN.js";
10
- import "./chunk-KUZVRJ7M.js";
11
- import "./chunk-EVZKNA2W.js";
10
+ import "./chunk-XLLW46MB.js";
11
+ import "./chunk-6AM7HIRM.js";
12
12
  import {
13
13
  scanServerActionsEnriched
14
- } from "./chunk-XS7EX55U.js";
15
- import "./chunk-FD4ZDTQ6.js";
14
+ } from "./chunk-YYOBMOO4.js";
15
+ import "./chunk-Z7CJHDLS.js";
16
16
  import "./chunk-U5PWXS3J.js";
17
17
  import "./chunk-VI7ZANB3.js";
18
18
  import "./chunk-VQIUTCK2.js";
@@ -218,4 +218,4 @@ export const actions = manifest
218
218
  export {
219
219
  actionsVirtualModule
220
220
  };
221
- //# sourceMappingURL=actions-virtual-module-2STC6RV3.js.map
221
+ //# sourceMappingURL=actions-virtual-module-FJIFAQUA.js.map
@@ -6,7 +6,7 @@ import "../chunk-BND4YZTQ.js";
6
6
  import "../chunk-CHTAWXC2.js";
7
7
  import {
8
8
  scanAgents
9
- } from "../chunk-L4VFNFDL.js";
9
+ } from "../chunk-IRASEXOG.js";
10
10
  import "../chunk-P6OS7652.js";
11
11
  import "../chunk-AVQU5CQF.js";
12
12
  import {
@@ -3,13 +3,13 @@ import "tsx/esm";
3
3
  import {
4
4
  agentCommand,
5
5
  createAgentSsrLoader
6
- } from "./chunk-3MIGBPTW.js";
6
+ } from "./chunk-YJDWSM4D.js";
7
7
  import "./chunk-5YPXXSYY.js";
8
- import "./chunk-EVZKNA2W.js";
9
- import "./chunk-FD4ZDTQ6.js";
8
+ import "./chunk-6AM7HIRM.js";
9
+ import "./chunk-Z7CJHDLS.js";
10
10
  import "./chunk-3QPVEJ7D.js";
11
11
  export {
12
12
  agentCommand,
13
13
  createAgentSsrLoader
14
14
  };
15
- //# sourceMappingURL=agent-7RP3VTSI.js.map
15
+ //# sourceMappingURL=agent-PLEYEX37.js.map
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import "tsx/esm";
3
- import "./chunk-QNGS7EVS.js";
3
+ import "./chunk-575RV3CD.js";
4
4
  import "./chunk-5YPXXSYY.js";
5
5
  import {
6
6
  scanControllerModules
@@ -11,12 +11,12 @@ import "./chunk-C27VRUVN.js";
11
11
  import "./chunk-7UZZHCRN.js";
12
12
  import {
13
13
  generateManifest
14
- } from "./chunk-KUZVRJ7M.js";
15
- import "./chunk-EVZKNA2W.js";
14
+ } from "./chunk-XLLW46MB.js";
15
+ import "./chunk-6AM7HIRM.js";
16
16
  import {
17
17
  HTTP_METHODS
18
- } from "./chunk-XS7EX55U.js";
19
- import "./chunk-FD4ZDTQ6.js";
18
+ } from "./chunk-YYOBMOO4.js";
19
+ import "./chunk-Z7CJHDLS.js";
20
20
  import "./chunk-U5PWXS3J.js";
21
21
  import "./chunk-VI7ZANB3.js";
22
22
  import "./chunk-VQIUTCK2.js";
@@ -420,4 +420,4 @@ export {
420
420
  generateClientDts,
421
421
  shouldReemitForFile
422
422
  };
423
- //# sourceMappingURL=app-typed-client-NYZ2PLNC.js.map
423
+ //# sourceMappingURL=app-typed-client-MPQDKS35.js.map
@@ -13,11 +13,11 @@ import "./chunk-TNI4MARH.js";
13
13
  import "./chunk-OQCRCXCP.js";
14
14
  import {
15
15
  generateManifest
16
- } from "./chunk-6J4JWHDJ.js";
16
+ } from "./chunk-VHB2FSPM.js";
17
17
  import {
18
18
  HTTP_METHODS
19
19
  } from "./chunk-DV34VG3N.js";
20
- import "./chunk-L4VFNFDL.js";
20
+ import "./chunk-IRASEXOG.js";
21
21
  import "./chunk-BX6EUYHU.js";
22
22
  import "./chunk-BPYMC7SU.js";
23
23
  import "./chunk-IRQGAC4L.js";
@@ -435,4 +435,4 @@ export {
435
435
  generateClientDts,
436
436
  shouldReemitForFile
437
437
  };
438
- //# sourceMappingURL=app-typed-client-CEW2KGXR.js.map
438
+ //# sourceMappingURL=app-typed-client-XPYFYUPN.js.map
@@ -20,18 +20,18 @@ import "./chunk-7UZZHCRN.js";
20
20
  import {
21
21
  generateManifest,
22
22
  writeManifest as writeManifest2
23
- } from "./chunk-KUZVRJ7M.js";
23
+ } from "./chunk-XLLW46MB.js";
24
24
  import {
25
25
  scanAgents
26
- } from "./chunk-EVZKNA2W.js";
26
+ } from "./chunk-6AM7HIRM.js";
27
27
  import {
28
28
  scanServerRoutes,
29
29
  scanWebSocketRoutes
30
- } from "./chunk-XS7EX55U.js";
30
+ } from "./chunk-YYOBMOO4.js";
31
31
  import {
32
32
  compareByCodeUnit,
33
33
  walkSourceFiles
34
- } from "./chunk-FD4ZDTQ6.js";
34
+ } from "./chunk-Z7CJHDLS.js";
35
35
  import {
36
36
  loadConfig
37
37
  } from "./chunk-QTHVHNJJ.js";
@@ -554,7 +554,7 @@ async function buildCommand(options) {
554
554
  `);
555
555
  }
556
556
  async function runAdapterBuild(target, config, cwd) {
557
- const { theoPluginAsync } = await import("./vite-plugin-4VM5EUQL.js");
557
+ const { theoPluginAsync } = await import("./vite-plugin-6KDMU3E2.js");
558
558
  const { default: react } = await import("@vitejs/plugin-react");
559
559
  const ctx = {
560
560
  // `react()` may return Plugin or Plugin[] depending on version; spread the
@@ -675,4 +675,4 @@ function relativize3(absPath, root) {
675
675
  export {
676
676
  buildCommand
677
677
  };
678
- //# sourceMappingURL=build-4LPUE2H3.js.map
678
+ //# sourceMappingURL=build-MGNDNTXH.js.map
@@ -30,7 +30,7 @@ import {
30
30
  } from "./chunk-C27VRUVN.js";
31
31
  import {
32
32
  compareByCodeUnit
33
- } from "./chunk-FD4ZDTQ6.js";
33
+ } from "./chunk-Z7CJHDLS.js";
34
34
  import {
35
35
  importUserModule
36
36
  } from "./chunk-U5PWXS3J.js";
@@ -2616,4 +2616,4 @@ export {
2616
2616
  CsrfReadinessStore,
2617
2617
  applySecurityHeaders
2618
2618
  };
2619
- //# sourceMappingURL=chunk-QNGS7EVS.js.map
2619
+ //# sourceMappingURL=chunk-575RV3CD.js.map
@@ -4,7 +4,7 @@ import {
4
4
  MissingAgentPolicyError,
5
5
  createFileStampCache,
6
6
  walkSourceFiles
7
- } from "./chunk-FD4ZDTQ6.js";
7
+ } from "./chunk-Z7CJHDLS.js";
8
8
 
9
9
  // src/server/scan/agent-scan.ts
10
10
  import { existsSync, readFileSync, statSync } from "fs";
@@ -107,4 +107,4 @@ function assertAgentDeclaresPolicy(filePath, agentPath) {
107
107
  export {
108
108
  scanAgents
109
109
  };
110
- //# sourceMappingURL=chunk-EVZKNA2W.js.map
110
+ //# sourceMappingURL=chunk-6AM7HIRM.js.map
@@ -76,10 +76,10 @@ import {
76
76
  scanServerActions,
77
77
  scanServerRoutes,
78
78
  scanWebSocketRoutes
79
- } from "./chunk-6J4JWHDJ.js";
79
+ } from "./chunk-VHB2FSPM.js";
80
80
  import {
81
81
  scanAgents
82
- } from "./chunk-L4VFNFDL.js";
82
+ } from "./chunk-IRASEXOG.js";
83
83
  import {
84
84
  CSP_REPORT_PATH,
85
85
  CsrfReadinessStore,
@@ -2325,7 +2325,7 @@ async function runConfigureServer(server, ctx) {
2325
2325
  server.watcher.on("unlink", handleRouteChange);
2326
2326
  if (ctx.resolvedOpenApi !== void 0) {
2327
2327
  const openApiCfg = ctx.resolvedOpenApi;
2328
- const { reEmitOpenApi } = await import("./dev-emit-MVAJAFGX.js");
2328
+ const { reEmitOpenApi } = await import("./dev-emit-G2E2U3NP.js");
2329
2329
  const openApiServerDir = ctx.serverDir;
2330
2330
  const openApiDistDir = resolve8(ctx.projectRoot, ctx.resolvedDistDir);
2331
2331
  const isRouteFileForOpenApi = (file) => file.startsWith(openApiServerDir) && /\.(ts|tsx|js|mjs)$/.test(file);
@@ -3476,19 +3476,19 @@ async function theoPluginAsync(rootOrOptions) {
3476
3476
  })
3477
3477
  );
3478
3478
  }
3479
- const { appTypedClientPlugin } = await import("./app-typed-client-CEW2KGXR.js");
3479
+ const { appTypedClientPlugin } = await import("./app-typed-client-XPYFYUPN.js");
3480
3480
  const appClientPlugin = appTypedClientPlugin({
3481
3481
  cwd: projectRoot,
3482
3482
  serverDir: serverDirAbs,
3483
3483
  distDir: resolve10(projectRoot, ".theokit")
3484
3484
  });
3485
- const { actionsVirtualModule } = await import("./actions-virtual-module-ESKVARP4.js");
3485
+ const { actionsVirtualModule } = await import("./actions-virtual-module-D52G2ACL.js");
3486
3486
  const actionsPlugin = actionsVirtualModule({
3487
3487
  serverDir: serverDirAbs,
3488
3488
  distDir: resolve10(projectRoot, ".theokit")
3489
3489
  });
3490
3490
  const { agentsTypedClientPlugin } = await import("./agents-typed-client-INR2E7B3.js");
3491
- const { generateManifest } = await import("./internal-api-IXSWWH2N.js");
3491
+ const { generateManifest } = await import("./internal-api-PYWIJTLF.js");
3492
3492
  const agentsClientPlugin = agentsTypedClientPlugin({
3493
3493
  projectRoot,
3494
3494
  agentsDir: agentsDirName,
@@ -3505,7 +3505,7 @@ async function theoPluginAsync(rootOrOptions) {
3505
3505
  const controllerTransformPlugin = controllerSwcTransformPlugin({
3506
3506
  serverDir: serverDirAbs
3507
3507
  });
3508
- const { serverOnlyImportBoundary } = await import("./server-boundary-RBMMPWCV.js");
3508
+ const { serverOnlyImportBoundary } = await import("./server-boundary-ITRJTWT4.js");
3509
3509
  const serverBoundaryPlugin = serverOnlyImportBoundary({
3510
3510
  projectRoot,
3511
3511
  serverDir: serverDirAbs
@@ -3688,4 +3688,4 @@ export {
3688
3688
  theoPluginAsync,
3689
3689
  theoPlugin
3690
3690
  };
3691
- //# sourceMappingURL=chunk-ECTUUAMR.js.map
3691
+ //# sourceMappingURL=chunk-75MWRZDP.js.map
@@ -25,7 +25,7 @@ import {
25
25
  parseAgentRequestBody,
26
26
  readAgentPolicy,
27
27
  subjectFromContext
28
- } from "./chunk-QNGS7EVS.js";
28
+ } from "./chunk-575RV3CD.js";
29
29
  import {
30
30
  getApprovalRegistry
31
31
  } from "./chunk-5YPXXSYY.js";
@@ -867,4 +867,4 @@ export {
867
867
  applyNonceToInlineScripts,
868
868
  setupSsrDevMiddleware
869
869
  };
870
- //# sourceMappingURL=chunk-MLWETKFA.js.map
870
+ //# sourceMappingURL=chunk-DY5W5OWQ.js.map
@@ -166,6 +166,33 @@ var MissingAgentPolicyError = class extends Error {
166
166
  this.migrationUrl = migrationUrl;
167
167
  }
168
168
  };
169
+ var RedundantApiSegmentError = class extends Error {
170
+ name = "RedundantApiSegmentError";
171
+ file;
172
+ doubledRoutePath;
173
+ suggestion;
174
+ constructor(opts) {
175
+ const message = [
176
+ `Redundant 'api' directory: routes/ is already served under /api.`,
177
+ ``,
178
+ ` File: ${opts.file}`,
179
+ ` Answers: ${opts.doubledRoutePath}`,
180
+ ` Client: ${opts.doubledClientChain}`,
181
+ ``,
182
+ `Move it up one level:`,
183
+ ``,
184
+ ` ${opts.suggestion}`,
185
+ ``,
186
+ `Both halves are wrong from one cause. The URL is not the one you would register with an`,
187
+ `identity provider or call from anywhere, and the generated typed client in`,
188
+ `.theokit/client.d.ts carries the same redundant segment.`
189
+ ].join("\n");
190
+ super(message);
191
+ this.file = opts.file;
192
+ this.doubledRoutePath = opts.doubledRoutePath;
193
+ this.suggestion = opts.suggestion;
194
+ }
195
+ };
169
196
 
170
197
  // src/server/scan/file-stamp-cache.ts
171
198
  import { statSync } from "fs";
@@ -242,7 +269,8 @@ function assertAgentDeclaresPolicy(filePath, agentPath) {
242
269
  export {
243
270
  RouterConventionError,
244
271
  MissingRoutePolicyError,
272
+ RedundantApiSegmentError,
245
273
  createFileStampCache,
246
274
  scanAgents
247
275
  };
248
- //# sourceMappingURL=chunk-L4VFNFDL.js.map
276
+ //# sourceMappingURL=chunk-IRASEXOG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/scan/agent-scan.ts","../src/server/scan/detect-agent-policy.ts","../src/server/scan/errors.ts","../src/server/scan/file-stamp-cache.ts"],"mappings":"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","names":["statSync","statSync"]}
1
+ {"version":3,"sources":["../src/server/scan/agent-scan.ts","../src/server/scan/detect-agent-policy.ts","../src/server/scan/errors.ts","../src/server/scan/file-stamp-cache.ts"],"mappings":"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","names":["statSync","statSync"]}
@@ -12,7 +12,7 @@ import {
12
12
  serveMatchedAuxRoute,
13
13
  serveThroughPluginLifecycle,
14
14
  setupSsrDevMiddleware
15
- } from "./chunk-MLWETKFA.js";
15
+ } from "./chunk-DY5W5OWQ.js";
16
16
  import {
17
17
  resolveTheoRootDir
18
18
  } from "./chunk-FDOOBTXJ.js";
@@ -38,7 +38,7 @@ import {
38
38
  mountAgent,
39
39
  readAgentPolicy,
40
40
  writeWebResponseToServerResponse
41
- } from "./chunk-QNGS7EVS.js";
41
+ } from "./chunk-575RV3CD.js";
42
42
  import {
43
43
  getApprovalRegistry,
44
44
  resolveProvider
@@ -59,13 +59,13 @@ import {
59
59
  } from "./chunk-C27VRUVN.js";
60
60
  import {
61
61
  scanAgents
62
- } from "./chunk-EVZKNA2W.js";
62
+ } from "./chunk-6AM7HIRM.js";
63
63
  import {
64
64
  matchRoute,
65
65
  scanServerActions,
66
66
  scanServerRoutes,
67
67
  scanWebSocketRoutes
68
- } from "./chunk-XS7EX55U.js";
68
+ } from "./chunk-YYOBMOO4.js";
69
69
  import {
70
70
  loadConfig
71
71
  } from "./chunk-QTHVHNJJ.js";
@@ -1028,7 +1028,7 @@ async function runConfigureServer(server, ctx) {
1028
1028
  server.watcher.on("unlink", handleRouteChange);
1029
1029
  if (ctx.resolvedOpenApi !== void 0) {
1030
1030
  const openApiCfg = ctx.resolvedOpenApi;
1031
- const { reEmitOpenApi } = await import("./dev-emit-BFNMDCPB.js");
1031
+ const { reEmitOpenApi } = await import("./dev-emit-SPSV6UU7.js");
1032
1032
  const openApiServerDir = ctx.serverDir;
1033
1033
  const openApiDistDir = resolve3(ctx.projectRoot, ctx.resolvedDistDir);
1034
1034
  const isRouteFileForOpenApi = (file) => file.startsWith(openApiServerDir) && /\.(ts|tsx|js|mjs)$/.test(file);
@@ -2179,19 +2179,19 @@ async function theoPluginAsync(rootOrOptions) {
2179
2179
  })
2180
2180
  );
2181
2181
  }
2182
- const { appTypedClientPlugin } = await import("./app-typed-client-NYZ2PLNC.js");
2182
+ const { appTypedClientPlugin } = await import("./app-typed-client-MPQDKS35.js");
2183
2183
  const appClientPlugin = appTypedClientPlugin({
2184
2184
  cwd: projectRoot,
2185
2185
  serverDir: serverDirAbs,
2186
2186
  distDir: resolve5(projectRoot, ".theokit")
2187
2187
  });
2188
- const { actionsVirtualModule } = await import("./actions-virtual-module-2STC6RV3.js");
2188
+ const { actionsVirtualModule } = await import("./actions-virtual-module-FJIFAQUA.js");
2189
2189
  const actionsPlugin = actionsVirtualModule({
2190
2190
  serverDir: serverDirAbs,
2191
2191
  distDir: resolve5(projectRoot, ".theokit")
2192
2192
  });
2193
2193
  const { agentsTypedClientPlugin } = await import("./agents-typed-client-D4OA2TXB.js");
2194
- const { generateManifest } = await import("./internal-api-53L6FIQ2.js");
2194
+ const { generateManifest } = await import("./internal-api-OOJT7L6I.js");
2195
2195
  const agentsClientPlugin = agentsTypedClientPlugin({
2196
2196
  projectRoot,
2197
2197
  agentsDir: agentsDirName,
@@ -2208,7 +2208,7 @@ async function theoPluginAsync(rootOrOptions) {
2208
2208
  const controllerTransformPlugin = controllerSwcTransformPlugin({
2209
2209
  serverDir: serverDirAbs
2210
2210
  });
2211
- const { serverOnlyImportBoundary } = await import("./server-boundary-ACFCBLZ4.js");
2211
+ const { serverOnlyImportBoundary } = await import("./server-boundary-YIRMIYAS.js");
2212
2212
  const serverBoundaryPlugin = serverOnlyImportBoundary({
2213
2213
  projectRoot,
2214
2214
  serverDir: serverDirAbs
@@ -2383,4 +2383,4 @@ export {
2383
2383
  theoPluginAsync,
2384
2384
  theoPlugin
2385
2385
  };
2386
- //# sourceMappingURL=chunk-LLMTORUY.js.map
2386
+ //# sourceMappingURL=chunk-MTWZ54OI.js.map
@@ -3,10 +3,11 @@ import {
3
3
  } from "./chunk-DV34VG3N.js";
4
4
  import {
5
5
  MissingRoutePolicyError,
6
+ RedundantApiSegmentError,
6
7
  RouterConventionError,
7
8
  createFileStampCache,
8
9
  scanAgents
9
- } from "./chunk-L4VFNFDL.js";
10
+ } from "./chunk-IRASEXOG.js";
10
11
  import {
11
12
  walkSourceFiles
12
13
  } from "./chunk-5K4TDLRG.js";
@@ -395,6 +396,18 @@ function buildDirectoryNestedSuggestion(filePath, routesDir) {
395
396
  const segments = withoutExt.split("/").flatMap(splitDottedSegmentOutsideBrackets);
396
397
  return `routes/${segments.join("/")}${ext}`;
397
398
  }
399
+ function assertNoRedundantApiSegment(filePath, routesDir) {
400
+ const rel = relative2(routesDir, filePath).replace(/\\/g, "/");
401
+ const [first, ...rest] = rel.split("/");
402
+ if (first !== "api" || rest.length === 0) return;
403
+ const withoutExt = rel.slice(0, -extname2(rel).length);
404
+ throw new RedundantApiSegmentError({
405
+ file: filePath,
406
+ doubledRoutePath: `/api/${withoutExt}`,
407
+ doubledClientChain: `client.${withoutExt.split("/").join(".")}`,
408
+ suggestion: `routes/${rest.join("/")}`
409
+ });
410
+ }
398
411
  function assertNoDottedSegment(filePath, routesDir) {
399
412
  const rel = relative2(routesDir, filePath).replace(/\\/g, "/");
400
413
  const ext = extname2(rel);
@@ -449,6 +462,7 @@ function scanServerRoutes(serverDir) {
449
462
  const results = [];
450
463
  walkSourceFiles(routesDir, { extensions: ROUTE_EXTENSIONS }, (absPath) => {
451
464
  if (isTestOrSpecFile(absPath)) return;
465
+ assertNoRedundantApiSegment(absPath, routesDir);
452
466
  assertNoDottedSegment(absPath, routesDir);
453
467
  const routePath = fileToRoutePath(absPath, routesDir);
454
468
  const { pattern, paramNames } = compilePattern(routePath);
@@ -603,4 +617,4 @@ export {
603
617
  writeManifest,
604
618
  loadManifest
605
619
  };
606
- //# sourceMappingURL=chunk-6J4JWHDJ.js.map
620
+ //# sourceMappingURL=chunk-VHB2FSPM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/scan/action-scan.ts","../src/server/scan/match.ts","../src/server/scan/scan.ts","../src/server/scan/detect-http-methods.ts","../src/server/scan/detect-route-policy.ts","../src/server/scan/ws-scan.ts","../src/server/scan/manifest.ts"],"mappings":";;;;;;;;;;;;;;;;;;AAIA,SAAS,YAAY,cAAc,gBAAgB;AACnD,SAAS,SAAS,MAAM,gBAAgB;AAuBjC,IAAM,qBAAqB;AA8B3B,IAAM,kBAAN,cAA8B,MAAM;AAAA,EAChC;AAAA,EACA;AAAA,EAET,YACE,MACA,SACA,kBACA;AACA,UAAM,OAAO;AAIb,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,mBAAmB;AAAA,EAC1B;AACF;AAEA,IAAM,oBAAoB,oBAAI,IAAI,CAAC,OAAO,QAAQ,OAAO,MAAM,CAAC;AAChE,IAAM,eAAe;AACrB,IAAM,iBAAiB,oBAAI,IAAI,CAAC,SAAS,eAAe,aAAa,aAAa,gBAAgB,CAAC;AAO5F,SAAS,kBAAkB,WAAiC;AACjE,QAAM,aAAa,KAAK,WAAW,SAAS;AAC5C,MAAI,CAAC,WAAW,UAAU,KAAK,CAAC,SAAS,UAAU,EAAE,YAAY,GAAG;AAClE,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,UAAwB,CAAC;AAC/B,kBAAgB,YAAY,EAAE,YAAY,kBAAkB,GAAG,CAAC,YAAY;AAC1E,QAAI,aAAa,KAAK,OAAO,EAAG;AAChC,QAAI,MAAM,SAAS,YAAY,OAAO;AACtC,UAAM,IAAI,QAAQ,OAAO,GAAG;AAC5B,UAAM,IAAI,MAAM,GAAG,CAAC,QAAQ,GAAG,EAAE,MAAM;AACvC,YAAQ,KAAK;AAAA,MACX,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;AAUO,SAAS,0BAA0B,WAA0C;AAClF,QAAM,aAAa,KAAK,WAAW,SAAS;AAC5C,MAAI,CAAC,WAAW,UAAU,KAAK,CAAC,SAAS,UAAU,EAAE,YAAY,GAAG;AAClE,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,YAAY,oBAAI,IAAY;AAClC,QAAM,UAAiC,CAAC;AAGxC,kBAAgB,YAAY,EAAE,YAAY,kBAAkB,GAAG,CAAC,YAAY;AAC1E,QAAI,aAAa,KAAK,OAAO,EAAG;AAChC,UAAM,MAAM,SAAS,YAAY,OAAO,EAAE,QAAQ,OAAO,GAAG;AAG5D,QAAI,IAAI,WAAW,GAAG,kBAAkB,GAAG,EAAG;AAC9C,UAAM,OAAO,IAAI,MAAM,GAAG,CAAC,QAAQ,GAAG,EAAE,MAAM;AAE9C,UAAMA,YAAW,KAAK,SAAS,GAAG,IAAK,KAAK,MAAM,GAAG,EAAE,IAAI,KAAK,OAAQ;AACxE,QAAI,eAAe,IAAIA,SAAQ,GAAG;AAChC,YAAM,IAAI;AAAA,QACR;AAAA,QACA,2BAA2BA,SAAQ,+BAA+B,OAAO;AAAA,QACzE,CAAC,OAAO;AAAA,MACV;AAAA,IACF;AAGA,UAAM,SAAS,aAAa,SAAS,MAAM;AAC3C,UAAM,WAAW,cAAc,MAAM;AACrC,UAAM,SAAS,8BAA8B,KAAK,QAAQ,IAAI,SAAS;AACvE,UAAM,WAAW,oBAAoB,KAAK,QAAQ,KAAK,sBAAsB,KAAK,QAAQ;AAS1F,UAAM,cAAc,yBAAyB,QAAQ;AAIrD,UAAM,iBAAiB,KAAK,SAAS,GAAG,IAAI,SAAY,iBAAiB,YAAYA,SAAQ;AAC7F,eAAW,cAAc,aAAa;AACpC,YAAM,WAAW,eAAe,YAAY,OAAO;AACnD,UAAI,UAAU,IAAI,QAAQ,GAAG;AAC3B,cAAM,IAAI;AAAA,UACR;AAAA,UACA,+BAA+B,QAAQ;AAAA,UACvC,CAAC,OAAO;AAAA,QACV;AAAA,MACF;AACA,gBAAU,IAAI,QAAQ;AACtB,YAAM,QAA6B;AAAA,QACjC,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS,kBAAkB,IAAI,IAAI,UAAU;AAAA,QAC7C;AAAA,QACA;AAAA,MACF;AACA,UAAI,mBAAmB,QAAW;AAChC,cAAM,iBAAiB;AAAA,MACzB;AACA,cAAQ,KAAK,KAAK;AAAA,IACpB;AAAA,EACF,CAAC;AAID,aAAW,SAAS,SAAS;AAC3B,UAAM,cAAc,GAAG,MAAM,IAAI;AACjC,UAAM,mBAAmB,QAAQ,KAAK,CAAC,UAAU,MAAM,KAAK,WAAW,WAAW,CAAC;AACnF,QAAI,kBAAkB;AACpB,YAAM,IAAI;AAAA,QACR;AAAA,QACA,WAAW,MAAM,IAAI,uDAAuD,iBAAiB,IAAI;AAAA,QACjG,CAAC,MAAM,UAAU,iBAAiB,QAAQ;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAEA,UAAQ,KAAK,CAAC,GAAG,MAAM;AACrB,QAAI,EAAE,OAAO,EAAE,KAAM,QAAO;AAC5B,QAAI,EAAE,OAAO,EAAE,KAAM,QAAO;AAC5B,WAAO;AAAA,EACT,CAAC;AACD,SAAO;AACT;AAeA,SAAS,yBAAyB,UAA4B;AAC5D,QAAM,QAAQ,oBAAI,IAAY;AAC9B,QAAM,UAAU;AAChB,MAAI;AACJ,UAAQ,IAAI,QAAQ,KAAK,QAAQ,OAAO,MAAM;AAC5C,UAAM,OAAO,EAAE,CAAC;AAChB,QAAI,OAAO,SAAS,YAAY,KAAK,SAAS,EAAG,OAAM,IAAI,IAAI;AAAA,EACjE;AACA,MAAI,sCAAsC,KAAK,QAAQ,GAAG;AACxD,UAAM,IAAI,SAAS;AAAA,EACrB;AACA,MAAI,MAAM,SAAS,EAAG,OAAM,IAAI,SAAS;AACzC,SAAO,CAAC,GAAG,KAAK;AAClB;AAOA,SAAS,iBAAiB,YAAoBA,WAAsC;AAClF,QAAM,aAAa,KAAK,YAAY,kBAAkB;AACtD,MAAI,CAAC,WAAW,UAAU,EAAG,QAAO;AACpC,aAAW,OAAO,CAAC,OAAO,QAAQ,OAAO,MAAM,GAAG;AAChD,UAAM,YAAY,KAAK,YAAY,GAAGA,SAAQ,GAAG,GAAG,EAAE;AACtD,QAAI,WAAW,SAAS,EAAG,QAAO;AAAA,EACpC;AACA,SAAO;AACT;AAEA,SAAS,cAAc,QAAwB;AAC7C,MAAI,MAAM;AACV,MAAI,IAAI;AACR,SAAO,IAAI,OAAO,QAAQ;AACxB,UAAM,KAAK,OAAO,CAAC;AACnB,UAAM,OAAO,OAAO,IAAI,CAAC;AACzB,QAAI,OAAO,OAAO,SAAS,KAAK;AAE9B,aAAO,IAAI,OAAO,UAAU,OAAO,CAAC,MAAM,KAAM;AAChD;AAAA,IACF;AACA,QAAI,OAAO,OAAO,SAAS,KAAK;AAE9B,WAAK;AACL,aAAO,IAAI,OAAO,SAAS,KAAK,EAAE,OAAO,CAAC,MAAM,OAAO,OAAO,IAAI,CAAC,MAAM,KAAM;AAC/E,WAAK;AACL;AAAA,IACF;AACA,WAAO;AACP;AAAA,EACF;AACA,SAAO;AACT;;;ACnQO,SAAS,eAAe,WAG7B;AACA,QAAM,aAAuB,CAAC;AAE9B,QAAM,WAAW,UAAU,QAAQ,wBAAwB,CAAC,OAAe,SAAiB;AAC1F,eAAW,KAAK,IAAI;AAEpB,WAAO,MAAM,WAAW,MAAM,IAAI,SAAS;AAAA,EAC7C,CAAC;AAKD,SAAO,EAAE,SAAS,IAAI,OAAO,IAAI,QAAQ,GAAG,GAAG,WAAW;AAC5D;AAEO,SAAS,WACd,KACA,QACmE;AAEnE,MAAI,OAAO,IAAI,MAAM,GAAG,EAAE,CAAC;AAC3B,MAAI,KAAK,SAAS,KAAK,KAAK,SAAS,GAAG,GAAG;AACzC,WAAO,KAAK,MAAM,GAAG,EAAE;AAAA,EACzB;AAEA,aAAW,SAAS,QAAQ;AAC1B,UAAM,QAAQ,MAAM,QAAQ,KAAK,IAAI;AACrC,QAAI,OAAO;AACT,YAAM,SAAiC,CAAC;AACxC,YAAM,WAAW,QAAQ,CAAC,MAAM,MAAM;AACpC,eAAO,IAAI,IAAI,MAAM,IAAI,CAAC;AAAA,MAC5B,CAAC;AACD,aAAO,EAAE,OAAO,OAAO;AAAA,IACzB;AAAA,EACF;AACA,SAAO;AACT;;;AC9CA,SAAS,cAAAC,aAAY,gBAAAC,eAAc,YAAAC,iBAAgB;AACnD,SAAS,UAAU,WAAAC,UAAS,QAAAC,OAAM,YAAAC,iBAAgB;;;ACYlD,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,qBAAqB;AAO9B,IAAM,WAAW,cAAc,YAAY,GAAG;AAE9C,IAAM,KAAK,SAAS,YAAY;AAEhC,IAAM,oBAAoB,IAAI,IAAY,YAAY;AAEtD,SAAS,kBAAkB,WAAwD;AACjF,MAAI,CAAC,UAAW,QAAO;AACvB,aAAW,KAAK,WAAW;AACzB,QAAI,EAAE,SAAS,GAAG,WAAW,cAAe,QAAO;AAAA,EACrD;AACA,SAAO;AACT;AAMA,SAAS,qBAAqB,MAAoB,OAA8B;AAE9E,MAAI,GAAG,oBAAoB,IAAI,KAAK,kBAAkB,GAAG,aAAa,IAAI,CAAC,GAAG;AAC5E,eAAW,QAAQ,KAAK,gBAAgB,cAAc;AACpD,UAAI,GAAG,aAAa,KAAK,IAAI,KAAK,kBAAkB,IAAI,KAAK,KAAK,IAAI,GAAG;AACvE,cAAM,IAAI,KAAK,KAAK,IAAkB;AAAA,MACxC;AAAA,IACF;AACA;AAAA,EACF;AAEA,OACG,GAAG,sBAAsB,IAAI,KAAK,GAAG,mBAAmB,IAAI,MAC7D,kBAAkB,GAAG,aAAa,IAAI,CAAC,GACvC;AACA,QAAI,KAAK,QAAQ,kBAAkB,IAAI,KAAK,KAAK,IAAI,GAAG;AACtD,YAAM,IAAI,KAAK,KAAK,IAAkB;AAAA,IACxC;AACA;AAAA,EACF;AAGA,MAAI,GAAG,oBAAoB,IAAI,KAAK,KAAK,gBAAgB,GAAG,eAAe,KAAK,YAAY,GAAG;AAC7F,eAAW,QAAQ,KAAK,aAAa,UAAU;AAE7C,UAAI,kBAAkB,IAAI,KAAK,KAAK,IAAI,GAAG;AACzC,cAAM,IAAI,KAAK,KAAK,IAAkB;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,0BAA0B,UAAkB,SAAgC;AAI1F,QAAM,MAAM,WAAWC,cAAa,UAAU,OAAO;AACrD,QAAM,aAAa,GAAG;AAAA,IACpB;AAAA,IACA;AAAA,IACA,GAAG,aAAa;AAAA;AAAA,IACK;AAAA,IACrB,GAAG,WAAW;AAAA,EAChB;AACA,QAAM,QAAQ,oBAAI,IAAgB;AAClC,aAAW,QAAQ,WAAW,YAAY;AACxC,yBAAqB,MAAM,KAAK;AAAA,EAClC;AAKA,SAAO,CAAC,GAAG,KAAK,EAAE,KAAK,iBAAiB;AAC1C;;;AC1DA,SAAS,iBAAAC,sBAAqB;AAM9B,IAAMC,YAAWC,eAAc,YAAY,GAAG;AAE9C,IAAMC,MAAKF,UAAS,YAAY;AAEhC,IAAMG,qBAAoB,IAAI,IAAY,YAAY;AAEtD,IAAM,aAAa;AAEnB,SAASC,mBAAkB,WAAwD;AACjF,MAAI,CAAC,UAAW,QAAO;AACvB,aAAW,KAAK,WAAW;AACzB,QAAI,EAAE,SAASF,IAAG,WAAW,cAAe,QAAO;AAAA,EACrD;AACA,SAAO;AACT;AAGA,SAAS,OAAO,YAA0C;AACxD,MAAI,UAAU;AACd,aAAS;AACP,QACEA,IAAG,0BAA0B,OAAO,KACpCA,IAAG,eAAe,OAAO,KACzBA,IAAG,sBAAsB,OAAO,KAChCA,IAAG,oBAAoB,OAAO,GAC9B;AACA,gBAAU,QAAQ;AAClB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,qBAAqB,MAA4C;AACxE,MAAI,SAAS,OAAW,QAAO;AAC/B,MAAIA,IAAG,aAAa,IAAI,EAAG,QAAO,KAAK,SAAS;AAChD,MAAIA,IAAG,gBAAgB,IAAI,EAAG,QAAO,KAAK,SAAS;AACnD,SAAO;AACT;AAGA,SAAS,qBAAqB,SAA8C;AAC1E,aAAW,YAAY,QAAQ,YAAY;AACzC,QAAIA,IAAG,mBAAmB,QAAQ,EAAG;AACrC,QAAI,qBAAqB,SAAS,IAAI,EAAG,QAAO;AAAA,EAClD;AACA,SAAO;AACT;AASA,SAAS,eAAe,YAAoC;AAC1D,QAAM,OAAO,OAAO,UAAU;AAE9B,MAAIA,IAAG,0BAA0B,IAAI,EAAG,QAAO,qBAAqB,IAAI;AAExE,MAAI,CAACA,IAAG,iBAAiB,IAAI,EAAG,QAAO;AAEvC,QAAM,SAAS,OAAO,KAAK,UAAU;AAErC,MAAIA,IAAG,2BAA2B,MAAM,KAAK,OAAO,KAAK,SAAS,WAAY,QAAO;AAErF,aAAW,YAAY,KAAK,WAAW;AACrC,UAAM,MAAM,OAAO,QAAQ;AAC3B,QAAIA,IAAG,0BAA0B,GAAG,KAAK,qBAAqB,GAAG,EAAG,QAAO;AAAA,EAC7E;AAIA,MAAIA,IAAG,2BAA2B,MAAM,EAAG,QAAO,eAAe,OAAO,UAAU;AAElF,SAAO;AACT;AAGA,SAAS,yBAAyB,YAAuD;AACvF,QAAM,SAAS,oBAAI,IAA2B;AAC9C,aAAW,QAAQ,WAAW,YAAY;AACxC,QAAI,CAACA,IAAG,oBAAoB,IAAI,EAAG;AACnC,eAAW,QAAQ,KAAK,gBAAgB,cAAc;AACpD,UAAIA,IAAG,aAAa,KAAK,IAAI,KAAK,KAAK,gBAAgB,QAAW;AAChE,eAAO,IAAI,KAAK,KAAK,MAAM,KAAK,WAAW;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAGA,SAAS,6BAA6B,MAA4B,UAAiC;AACjG,MAAI,CAACE,mBAAkBF,IAAG,aAAa,IAAI,CAAC,EAAG;AAC/C,aAAW,QAAQ,KAAK,gBAAgB,cAAc;AACpD,QAAI,CAACA,IAAG,aAAa,KAAK,IAAI,KAAK,CAACC,mBAAkB,IAAI,KAAK,KAAK,IAAI,EAAG;AAC3E,QAAI,KAAK,gBAAgB,UAAa,eAAe,KAAK,WAAW,GAAG;AACtE,eAAS,IAAI,KAAK,KAAK,IAAkB;AAAA,IAC3C;AAAA,EACF;AACF;AAMA,SAAS,6BACP,MACA,QACA,UACM;AACN,MAAI,KAAK,oBAAoB,OAAW;AACxC,MAAI,CAAC,KAAK,gBAAgB,CAACD,IAAG,eAAe,KAAK,YAAY,EAAG;AACjE,aAAW,QAAQ,KAAK,aAAa,UAAU;AAC7C,QAAI,CAACC,mBAAkB,IAAI,KAAK,KAAK,IAAI,EAAG;AAC5C,UAAM,QAAQ,OAAO,KAAK,KAAK,gBAAgB,KAAK,MAAM,IAAI;AAC9D,QAAI,UAAU,UAAa,eAAe,KAAK,GAAG;AAChD,eAAS,IAAI,KAAK,KAAK,IAAkB;AAAA,IAC3C;AAAA,EACF;AACF;AAEA,SAASE,sBACP,MACA,QACA,UACM;AACN,MAAIH,IAAG,oBAAoB,IAAI,GAAG;AAChC,iCAA6B,MAAM,QAAQ;AAC3C;AAAA,EACF;AACA,MAAIA,IAAG,oBAAoB,IAAI,GAAG;AAChC,iCAA6B,MAAM,QAAQ,QAAQ;AAAA,EACrD;AAGF;AAQO,SAAS,gCACd,UACA,SACiB;AACjB,QAAM,aAAaA,IAAG;AAAA,IACpB;AAAA,IACA;AAAA,IACAA,IAAG,aAAa;AAAA;AAAA,IACK;AAAA,IACrBA,IAAG,WAAW;AAAA,EAChB;AACA,QAAM,SAAS,yBAAyB,UAAU;AAClD,QAAM,WAAW,oBAAI,IAAgB;AACrC,aAAW,QAAQ,WAAW,YAAY;AACxC,IAAAG,sBAAqB,MAAM,QAAQ,QAAQ;AAAA,EAC7C;AACA,SAAO;AACT;;;AF3LA,IAAM,mBAAmB,oBAAI,IAAI,CAAC,OAAO,QAAQ,OAAO,MAAM,CAAC;AAK/D,IAAM,kBAAkB;AAExB,SAAS,iBAAiB,UAA2B;AACnD,SAAO,gBAAgB,KAAK,SAAS,QAAQ,CAAC;AAChD;AAEA,SAAS,sBAAsB,SAA0B;AACvD,MAAI,QAAQ;AACZ,aAAW,MAAM,SAAS;AACxB,QAAI,OAAO,IAAK;AAAA,aACP,OAAO,IAAK;AAAA,aACZ,OAAO,OAAO,UAAU,EAAG,QAAO;AAAA,EAC7C;AACA,SAAO;AACT;AAEA,SAAS,kCAAkC,SAA2B;AACpE,QAAM,QAAkB,CAAC;AACzB,MAAI,UAAU;AACd,MAAI,QAAQ;AACZ,aAAW,MAAM,SAAS;AACxB,QAAI,OAAO,KAAK;AACd;AACA,iBAAW;AAAA,IACb,WAAW,OAAO,KAAK;AACrB;AACA,iBAAW;AAAA,IACb,WAAW,OAAO,OAAO,UAAU,GAAG;AACpC,UAAI,QAAS,OAAM,KAAK,OAAO;AAC/B,gBAAU;AAAA,IACZ,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF;AACA,MAAI,QAAS,OAAM,KAAK,OAAO;AAC/B,SAAO;AACT;AAEA,SAAS,+BAA+B,UAAkB,WAA2B;AACnF,QAAM,MAAMC,UAAS,WAAW,QAAQ,EAAE,QAAQ,OAAO,GAAG;AAC5D,QAAM,MAAMC,SAAQ,GAAG;AACvB,QAAM,aAAa,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM;AAC3C,QAAM,WAAW,WAAW,MAAM,GAAG,EAAE,QAAQ,iCAAiC;AAChF,SAAO,UAAU,SAAS,KAAK,GAAG,CAAC,GAAG,GAAG;AAC3C;AASA,SAAS,4BAA4B,UAAkB,WAAyB;AAC9E,QAAM,MAAMD,UAAS,WAAW,QAAQ,EAAE,QAAQ,OAAO,GAAG;AAC5D,QAAM,CAAC,OAAO,GAAG,IAAI,IAAI,IAAI,MAAM,GAAG;AACtC,MAAI,UAAU,SAAS,KAAK,WAAW,EAAG;AAE1C,QAAM,aAAa,IAAI,MAAM,GAAG,CAACC,SAAQ,GAAG,EAAE,MAAM;AACpD,QAAM,IAAI,yBAAyB;AAAA,IACjC,MAAM;AAAA,IACN,kBAAkB,QAAQ,UAAU;AAAA,IACpC,oBAAoB,UAAU,WAAW,MAAM,GAAG,EAAE,KAAK,GAAG,CAAC;AAAA,IAC7D,YAAY,UAAU,KAAK,KAAK,GAAG,CAAC;AAAA,EACtC,CAAC;AACH;AAEA,SAAS,sBAAsB,UAAkB,WAAyB;AACxE,QAAM,MAAMD,UAAS,WAAW,QAAQ,EAAE,QAAQ,OAAO,GAAG;AAC5D,QAAM,MAAMC,SAAQ,GAAG;AACvB,QAAM,aAAa,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM;AAC3C,QAAM,WAAW,WAAW,MAAM,GAAG;AACrC,aAAW,OAAO,UAAU;AAC1B,QAAI,sBAAsB,GAAG,GAAG;AAC9B,YAAM,IAAI,sBAAsB;AAAA,QAC9B,MAAM;AAAA,QACN,YAAY,+BAA+B,UAAU,SAAS;AAAA,MAChE,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAoBA,SAAS,gCACP,UACA,WACA,EAAE,SAAS,eAAe,GACpB;AACN,MAAI,QAAQ,WAAW,EAAG;AAC1B,QAAM,UAAU,QAAQ,OAAO,CAAC,WAAW,CAAC,eAAe,IAAI,MAAM,CAAC;AACtE,MAAI,QAAQ,WAAW,EAAG;AAC1B,QAAM,IAAI,wBAAwB,EAAE,MAAM,UAAU,WAAW,SAAS,QAAQ,CAAC;AACnF;AAsBA,IAAM,kBAAkB,qBAAuC;AAGxD,SAAS,+BAAqC;AACnD,kBAAgB,MAAM;AACxB;AAEA,SAAS,iBAAiB,SAAmC;AAC3D,SAAO,gBAAgB,IAAI,SAAS,MAAM;AACxC,UAAM,SAASC,cAAa,SAAS,OAAO;AAC5C,UAAM,UAAU,0BAA0B,SAAS,MAAM;AAIzD,UAAM,iBACJ,QAAQ,WAAW,IACf,oBAAI,IAAgB,IACpB,gCAAgC,SAAS,MAAM;AACrD,WAAO,EAAE,SAAS,eAAe;AAAA,EACnC,CAAC;AACH;AAEA,SAAS,gBAAgB,UAAkB,WAA2B;AACpE,MAAI,MAAMF,UAAS,WAAW,QAAQ;AAEtC,QAAM,MAAMC,SAAQ,GAAG;AACvB,QAAM,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM;AAE9B,QAAM,IAAI,QAAQ,OAAO,GAAG;AAE5B,MAAI,IAAI,SAAS,QAAQ,GAAG;AAC1B,UAAM,IAAI,MAAM,GAAG,EAAE;AAAA,EACvB,WAAW,QAAQ,SAAS;AAC1B,UAAM;AAAA,EACR;AAIA,QAAM,IAAI,QAAQ,uBAAuB,QAAQ;AAEjD,QAAM,IAAI,QAAQ,iBAAiB,KAAK;AACxC,SAAO,QAAQ,GAAG;AACpB;AAEO,SAAS,iBAAiB,WAAsC;AACrE,QAAM,YAAYE,MAAK,WAAW,QAAQ;AAC1C,MAAI,CAACC,YAAW,SAAS,KAAK,CAACC,UAAS,SAAS,EAAE,YAAY,GAAG;AAChE,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,UAA6B,CAAC;AACpC,kBAAgB,WAAW,EAAE,YAAY,iBAAiB,GAAG,CAAC,YAAY;AAExE,QAAI,iBAAiB,OAAO,EAAG;AAI/B,gCAA4B,SAAS,SAAS;AAC9C,0BAAsB,SAAS,SAAS;AAExC,UAAM,YAAY,gBAAgB,SAAS,SAAS;AACpD,UAAM,EAAE,SAAS,WAAW,IAAI,eAAe,SAAS;AACxD,UAAM,QAAQ,iBAAiB,OAAO;AACtC,UAAM,EAAE,QAAQ,IAAI;AACpB,oCAAgC,SAAS,WAAW,KAAK;AACzD,YAAQ,KAAK;AAAA,MACX,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAID,QAAM,cAAc,QAAQ,KAAK,CAAC,MAAM,EAAE,cAAc,qBAAqB;AAC7E,MAAI,aAAa;AACf,UAAM,IAAI;AAAA,MACR,gBAAgB,YAAY,QAAQ;AAAA,IACtC;AAAA,EACF;AAEA,UAAQ,KAAK,CAAC,GAAG,MAAM,wBAAwB,EAAE,WAAW,EAAE,SAAS,CAAC;AAExE,SAAO;AACT;AAGA,IAAM,iBAAiB;AACvB,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAE1B,SAAS,mBAAmB,SAAyB;AACnD,MAAI,QAAQ,WAAW,MAAM,EAAG,QAAO;AACvC,MAAI,QAAQ,WAAW,GAAG,EAAG,QAAO;AACpC,SAAO;AACT;AA4BO,SAAS,wBAAwB,GAAW,GAAmB;AACpE,QAAM,YAAY,EAAE,MAAM,GAAG;AAC7B,QAAM,YAAY,EAAE,MAAM,GAAG;AAC7B,QAAM,SAAS,KAAK,IAAI,UAAU,QAAQ,UAAU,MAAM;AAE1D,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,UAAM,aAAa,mBAAmB,UAAU,CAAC,CAAC,IAAI,mBAAmB,UAAU,CAAC,CAAC;AACrF,QAAI,eAAe,EAAG,QAAO;AAAA,EAC/B;AAEA,MAAI,IAAI,EAAG,QAAO;AAClB,MAAI,IAAI,EAAG,QAAO;AAClB,SAAO;AACT;;;AGlSA,SAAS,cAAAC,aAAY,YAAAC,iBAAgB;AACrC,SAAS,WAAAC,UAAS,QAAAC,OAAM,YAAAC,iBAAgB;AAIxC,IAAM,gBAAgB,oBAAI,IAAI,CAAC,OAAO,QAAQ,OAAO,MAAM,CAAC;AAOrD,SAAS,oBAAoB,WAAyC;AAC3E,QAAM,QAAQC,MAAK,WAAW,IAAI;AAClC,MAAI,CAACC,YAAW,KAAK,KAAK,CAACC,UAAS,KAAK,EAAE,YAAY,GAAG;AACxD,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,UAAgC,CAAC;AACvC,kBAAgB,OAAO,EAAE,YAAY,cAAc,GAAG,CAAC,YAAY;AACjE,QAAI,MAAMC,UAAS,OAAO,OAAO;AACjC,UAAM,IAAI,QAAQ,OAAO,GAAG;AAC5B,UAAM,IAAI,MAAM,GAAG,CAACC,SAAQ,GAAG,EAAE,MAAM;AACvC,QAAI,IAAI,SAAS,QAAQ,EAAG,OAAM,IAAI,MAAM,GAAG,EAAE;AAAA,aACxC,QAAQ,QAAS,OAAM;AAChC,YAAQ,KAAK;AAAA,MACX,UAAU;AAAA,MACV,QAAQ,OAAO,GAAG;AAAA,IACpB,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;;;AC/BA,SAAS,cAAAC,aAAY,gBAAAC,eAAc,eAAe,iBAAiB;AACnE,SAAS,QAAAC,OAAM,SAAS,YAAAC,WAAU,eAAe;AA4D1C,SAAS,iBACd,WAGA,cAAsB,QAAQ,SAAS,GAEvC,YAAY,UACE;AACd,QAAM,SAAS,iBAAiB,SAAS;AACzC,QAAM,UAAU,kBAAkB,SAAS;AAC3C,QAAM,aAAa,oBAAoB,SAAS;AAChD,QAAM,SAAS,WAAW,aAAa,SAAS;AAEhD,SAAO;AAAA,IACL,SAAS;AAAA,IACT,cAAa,oBAAI,KAAK,GAAE,YAAY;AAAA,IACpC,QAAQ,OAAO,IAAI,CAAC,OAAO;AAAA,MACzB,UAAUC,UAAS,WAAW,EAAE,QAAQ;AAAA,MACxC,WAAW,EAAE;AAAA,MACb,YAAY,EAAE;AAAA,MACd,GAAI,EAAE,YAAY,SAAY,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC1D,EAAE;AAAA,IACF,SAAS,QAAQ,IAAI,CAAC,OAAO;AAAA,MAC3B,UAAUA,UAAS,WAAW,EAAE,QAAQ;AAAA,MACxC,YAAY,EAAE;AAAA,IAChB,EAAE;AAAA,IACF,YAAY,WAAW,IAAI,CAAC,OAAO;AAAA,MACjC,UAAUA,UAAS,WAAW,EAAE,QAAQ;AAAA,MACxC,QAAQ,EAAE;AAAA,IACZ,EAAE;AAAA,IACF,QAAQ,OAAO,IAAI,CAAC,OAAO;AAAA;AAAA,MAEzB,UAAUA,UAAS,aAAa,EAAE,QAAQ;AAAA,MAC1C,WAAW,EAAE;AAAA,MACb,MAAM,EAAE;AAAA,IACV,EAAE;AAAA,EACJ;AACF;AAIO,SAAS,cAAc,UAAwB,WAAyB;AAC7E,YAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AACxC,QAAM,eAAeC,MAAK,WAAW,eAAe;AACpD,gBAAc,cAAc,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAC/D;AAIO,SAAS,aAAa,SAAiB,WAAmC;AAC/E,QAAM,eAAeA,MAAK,SAAS,eAAe;AAElD,MAAI,CAACC,YAAW,YAAY,GAAG;AAC7B,UAAM,IAAI,MAAM,wBAAwB,YAAY,2BAA2B;AAAA,EACjF;AAEA,QAAM,MAAM,KAAK,MAAMC,cAAa,cAAc,OAAO,CAAC;AAE1D,QAAM,SAA4B,IAAI,OAAO,IAAI,CAAC,MAAM;AACtD,UAAM,EAAE,SAAS,WAAW,IAAI,eAAe,EAAE,SAAS;AAC1D,WAAO;AAAA,MACL,UAAU,QAAQ,WAAW,EAAE,QAAQ;AAAA,MACvC,WAAW,EAAE;AAAA,MACb;AAAA,MACA;AAAA,MACA,GAAI,EAAE,YAAY,SAAY,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC1D;AAAA,EACF,CAAC;AAED,QAAM,UAAwB,IAAI,QAAQ,IAAI,CAAC,OAAO;AAAA,IACpD,UAAU,QAAQ,WAAW,EAAE,QAAQ;AAAA,IACvC,YAAY,EAAE;AAAA,EAChB,EAAE;AAEF,QAAM,aAAmC,IAAI,WAAW,IAAI,CAAC,OAAO;AAAA,IAClE,UAAU,QAAQ,WAAW,EAAE,QAAQ;AAAA,IACvC,QAAQ,EAAE;AAAA,EACZ,EAAE;AAIF,QAAM,cAAc,QAAQ,SAAS;AACrC,QAAM,UAAuB,IAAI,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO;AAAA,IACzD,UAAU,QAAQ,aAAa,EAAE,QAAQ;AAAA,IACzC,WAAW,EAAE;AAAA,IACb,MAAM,EAAE;AAAA,EACV,EAAE;AAEF,SAAO,EAAE,QAAQ,SAAS,YAAY,OAAO;AAC/C;","names":["basename","existsSync","readFileSync","statSync","extname","join","relative","readFileSync","readFileSync","createRequire","require_","createRequire","ts","HTTP_METHOD_NAMES","hasExportModifier","collectFromStatement","relative","extname","readFileSync","join","existsSync","statSync","existsSync","statSync","extname","join","relative","join","existsSync","statSync","relative","extname","existsSync","readFileSync","join","relative","relative","join","existsSync","readFileSync"]}
@@ -2,13 +2,13 @@
2
2
  import "tsx/esm";
3
3
  import {
4
4
  scanAgents
5
- } from "./chunk-EVZKNA2W.js";
5
+ } from "./chunk-6AM7HIRM.js";
6
6
  import {
7
7
  compilePattern,
8
8
  scanServerActions,
9
9
  scanServerRoutes,
10
10
  scanWebSocketRoutes
11
- } from "./chunk-XS7EX55U.js";
11
+ } from "./chunk-YYOBMOO4.js";
12
12
 
13
13
  // src/server/scan/manifest.ts
14
14
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
@@ -86,4 +86,4 @@ export {
86
86
  writeManifest,
87
87
  loadManifest
88
88
  };
89
- //# sourceMappingURL=chunk-KUZVRJ7M.js.map
89
+ //# sourceMappingURL=chunk-XLLW46MB.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-5YPXXSYY.js";
7
7
  import {
8
8
  scanAgents
9
- } from "./chunk-EVZKNA2W.js";
9
+ } from "./chunk-6AM7HIRM.js";
10
10
  import {
11
11
  loadEnv
12
12
  } from "./chunk-3QPVEJ7D.js";
@@ -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-4VM5EUQL.js");
181
+ const { theoPluginAsync } = await import("./vite-plugin-6KDMU3E2.js");
182
182
  const { loadConfig } = await import("./load-config-4ATXQUN3.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-3MIGBPTW.js.map
215
+ //# sourceMappingURL=chunk-YJDWSM4D.js.map
@@ -2,11 +2,12 @@
2
2
  import "tsx/esm";
3
3
  import {
4
4
  MissingRoutePolicyError,
5
+ RedundantApiSegmentError,
5
6
  RouterConventionError,
6
7
  compareByCodeUnit,
7
8
  createFileStampCache,
8
9
  walkSourceFiles
9
- } from "./chunk-FD4ZDTQ6.js";
10
+ } from "./chunk-Z7CJHDLS.js";
10
11
 
11
12
  // src/server/scan/action-scan.ts
12
13
  import { existsSync, readFileSync, statSync } from "fs";
@@ -393,6 +394,18 @@ function buildDirectoryNestedSuggestion(filePath, routesDir) {
393
394
  const segments = withoutExt.split("/").flatMap(splitDottedSegmentOutsideBrackets);
394
395
  return `routes/${segments.join("/")}${ext}`;
395
396
  }
397
+ function assertNoRedundantApiSegment(filePath, routesDir) {
398
+ const rel = relative2(routesDir, filePath).replace(/\\/g, "/");
399
+ const [first, ...rest] = rel.split("/");
400
+ if (first !== "api" || rest.length === 0) return;
401
+ const withoutExt = rel.slice(0, -extname2(rel).length);
402
+ throw new RedundantApiSegmentError({
403
+ file: filePath,
404
+ doubledRoutePath: `/api/${withoutExt}`,
405
+ doubledClientChain: `client.${withoutExt.split("/").join(".")}`,
406
+ suggestion: `routes/${rest.join("/")}`
407
+ });
408
+ }
396
409
  function assertNoDottedSegment(filePath, routesDir) {
397
410
  const rel = relative2(routesDir, filePath).replace(/\\/g, "/");
398
411
  const ext = extname2(rel);
@@ -444,6 +457,7 @@ function scanServerRoutes(serverDir) {
444
457
  const results = [];
445
458
  walkSourceFiles(routesDir, { extensions: ROUTE_EXTENSIONS }, (absPath) => {
446
459
  if (isTestOrSpecFile(absPath)) return;
460
+ assertNoRedundantApiSegment(absPath, routesDir);
447
461
  assertNoDottedSegment(absPath, routesDir);
448
462
  const routePath = fileToRoutePath(absPath, routesDir);
449
463
  const { pattern, paramNames } = compilePattern(routePath);
@@ -522,4 +536,4 @@ export {
522
536
  scanServerRoutes,
523
537
  scanWebSocketRoutes
524
538
  };
525
- //# sourceMappingURL=chunk-XS7EX55U.js.map
539
+ //# sourceMappingURL=chunk-YYOBMOO4.js.map