@aotter/mantle 0.2.0-alpha.6 → 0.2.0-alpha.8

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 (946) hide show
  1. package/README.md +157 -45
  2. package/dist/auth/adapter.d.ts +32 -0
  3. package/dist/auth/adapter.js +285 -0
  4. package/dist/auth/admin.d.ts +3 -0
  5. package/dist/auth/admin.js +21 -0
  6. package/dist/auth/caller.d.ts +86 -0
  7. package/dist/auth/caller.js +155 -0
  8. package/dist/auth/hardening.d.ts +24 -0
  9. package/dist/auth/hardening.js +40 -0
  10. package/dist/auth/identity.d.ts +121 -0
  11. package/dist/auth/identity.js +203 -0
  12. package/dist/auth/oauth.d.ts +63 -0
  13. package/dist/auth/oauth.js +217 -0
  14. package/dist/auth/resource-seeds.js +10 -0
  15. package/dist/auth/routes.d.ts +32 -0
  16. package/dist/auth/routes.js +225 -0
  17. package/dist/build/compiler.d.ts +712 -0
  18. package/dist/build/compiler.js +6896 -0
  19. package/dist/{spec → build/spec}/domain/model/ManifestGrammar.d.ts +30 -47
  20. package/dist/{spec → build/spec}/domain/model/RuntimePlan.d.ts +77 -3
  21. package/dist/{spec → build/spec}/domain/model/SqlIr.d.ts +37 -6
  22. package/dist/build/spec/domain/model/UserFields.d.ts +20 -0
  23. package/dist/{spec → build/spec}/domain/service/PlanFingerprint.d.ts +4 -1
  24. package/dist/{spec → build/spec}/kernel/diagnostic.d.ts +1 -30
  25. package/dist/bun/assets.d.ts +2 -0
  26. package/dist/bun/assets.js +24 -0
  27. package/dist/domain/adminOrder.js +24 -0
  28. package/dist/domain/columns.js +55 -0
  29. package/dist/domain/describe/chunk-ZVXBGP7Y.js +424 -0
  30. package/dist/domain/describe/index.d.ts +58 -0
  31. package/dist/domain/describe/index.js +115 -0
  32. package/dist/domain/describe/target-hash.d.ts +8 -0
  33. package/dist/domain/describe/target-hash.js +12 -0
  34. package/dist/domain/describe/targets.d.ts +40 -0
  35. package/dist/domain/entry.js +33 -0
  36. package/dist/domain/generated-tools.js +19 -0
  37. package/dist/domain/generation.d.ts +16 -0
  38. package/dist/domain/generation.js +1 -0
  39. package/dist/domain/input.js +17 -0
  40. package/dist/domain/model.js +1 -0
  41. package/dist/domain/paging.js +230 -0
  42. package/dist/domain/recipes.js +19 -0
  43. package/dist/domain/userReferences.js +5 -0
  44. package/dist/domain/wireScalars.js +47 -0
  45. package/dist/infrastructure/adminEntries.js +153 -0
  46. package/dist/infrastructure/adminPaging.js +72 -0
  47. package/dist/infrastructure/artifacts.js +71 -0
  48. package/dist/infrastructure/authSchema.js +83 -0
  49. package/dist/infrastructure/bundle.js +174 -0
  50. package/dist/infrastructure/cli.js +97 -0
  51. package/dist/infrastructure/generate.d.ts +12 -0
  52. package/dist/infrastructure/generate.js +174 -0
  53. package/dist/infrastructure/generateAuth.d.ts +8 -0
  54. package/dist/infrastructure/generateAuth.js +23 -0
  55. package/dist/infrastructure/inputs.js +41 -0
  56. package/dist/infrastructure/wrangler.js +94 -0
  57. package/dist/kernel/authorization.d.ts +4 -0
  58. package/dist/kernel/authorization.js +16 -0
  59. package/dist/kernel/binds.d.ts +51 -0
  60. package/dist/kernel/binds.js +45 -0
  61. package/dist/kernel/caller-identity.d.ts +24 -0
  62. package/dist/kernel/caller-identity.js +22 -0
  63. package/dist/kernel/contract-error.d.ts +12 -0
  64. package/dist/kernel/contract-error.js +14 -0
  65. package/dist/kernel/contracts.d.ts +139 -0
  66. package/dist/kernel/contracts.js +92 -0
  67. package/dist/{spec/domain/service/CloudflareCron.d.ts → kernel/cron.d.ts} +0 -1
  68. package/dist/{spec/domain/service/CloudflareCron.js → kernel/cron.js} +1 -6
  69. package/dist/kernel/dialect/common.d.ts +39 -0
  70. package/dist/kernel/dialect/common.js +6 -0
  71. package/dist/kernel/dialect/postgres.d.ts +16 -0
  72. package/dist/kernel/dialect/postgres.js +18 -0
  73. package/dist/kernel/dialect/sqlite.d.ts +20 -0
  74. package/dist/kernel/dialect/sqlite.js +34 -0
  75. package/dist/kernel/drain.d.ts +5 -0
  76. package/dist/kernel/drain.js +35 -0
  77. package/dist/kernel/driver/bun-sqlite.d.ts +19 -0
  78. package/dist/kernel/driver/bun-sqlite.js +77 -0
  79. package/dist/kernel/driver/d1.d.ts +24 -0
  80. package/dist/kernel/driver/d1.js +22 -0
  81. package/dist/kernel/driver/postgres.d.ts +25 -0
  82. package/dist/kernel/driver/postgres.js +98 -0
  83. package/dist/kernel/driver/transaction-context.d.ts +10 -0
  84. package/dist/kernel/driver/transaction-context.js +29 -0
  85. package/dist/kernel/email.d.ts +28 -0
  86. package/dist/{auth/emailTemplates.js → kernel/email.js} +13 -2
  87. package/dist/kernel/host-access.d.ts +10 -0
  88. package/dist/kernel/host-access.js +65 -0
  89. package/dist/kernel/host-caller.d.ts +39 -0
  90. package/dist/kernel/host-caller.js +56 -0
  91. package/dist/kernel/json-body.d.ts +4 -0
  92. package/dist/kernel/json-body.js +44 -0
  93. package/dist/kernel/mcp-apps.d.ts +69 -0
  94. package/dist/kernel/mcp-apps.js +40 -0
  95. package/dist/kernel/mcp-call.d.ts +5 -0
  96. package/dist/kernel/mcp-call.js +25 -0
  97. package/dist/kernel/mcp-handler.js +371 -0
  98. package/dist/kernel/mcp.d.ts +106 -0
  99. package/dist/kernel/mcp.js +49 -0
  100. package/dist/kernel/media.d.ts +27 -0
  101. package/dist/kernel/media.js +216 -0
  102. package/dist/kernel/paging.d.ts +55 -0
  103. package/dist/kernel/paging.js +95 -0
  104. package/dist/kernel/publishing.d.ts +4 -0
  105. package/dist/kernel/publishing.js +16 -0
  106. package/dist/{cloudflare/r2Media.d.ts → kernel/r2-media.d.ts} +4 -5
  107. package/dist/kernel/r2-media.js +78 -0
  108. package/dist/kernel/rest-dispatch.js +38 -0
  109. package/dist/kernel/rest-router.js +64 -0
  110. package/dist/kernel/rest.d.ts +58 -0
  111. package/dist/kernel/rest.js +41 -0
  112. package/dist/kernel/scalars.d.ts +6 -0
  113. package/dist/kernel/scalars.js +43 -0
  114. package/dist/kernel/search.js +5 -0
  115. package/dist/{core/site.d.ts → kernel/site-types.d.ts} +38 -9
  116. package/dist/kernel/site-types.js +1 -0
  117. package/dist/kernel/site.d.ts +39 -0
  118. package/dist/kernel/site.js +32 -0
  119. package/dist/kernel/store.d.ts +165 -0
  120. package/dist/kernel/store.js +257 -0
  121. package/dist/kernel/surface.d.ts +10 -0
  122. package/dist/kernel/surface.js +19 -0
  123. package/dist/kernel/sweep.d.ts +17 -0
  124. package/dist/kernel/sweep.js +27 -0
  125. package/dist/kernel/translations.d.ts +1 -0
  126. package/dist/kernel/translations.js +13 -0
  127. package/dist/kernel/user-caller.d.ts +31 -0
  128. package/dist/kernel/user-caller.js +67 -0
  129. package/dist/kernel/user-field-name.js +3 -0
  130. package/dist/kernel/user-fields.d.ts +34 -0
  131. package/dist/kernel/user-fields.js +71 -0
  132. package/dist/kernel/validation.d.ts +15 -0
  133. package/dist/kernel/validation.js +54 -0
  134. package/dist/kernel/web-gateway.js +68 -0
  135. package/dist/kernel/web-head.js +15 -0
  136. package/dist/kernel/web-response.js +8 -0
  137. package/dist/kernel/web.d.ts +77 -0
  138. package/dist/kernel/web.js +158 -0
  139. package/dist/kernel/where.js +27 -0
  140. package/dist/testing/index.d.ts +1 -37
  141. package/dist/testing/index.js +1 -43
  142. package/dist/usecase/adminBindings.js +141 -0
  143. package/dist/usecase/adminClient.js +87 -0
  144. package/dist/usecase/adminDescriptors.js +107 -0
  145. package/dist/usecase/generate.js +165 -0
  146. package/dist/usecase/handlers.js +21 -0
  147. package/dist/usecase/mcp-media.js +17 -0
  148. package/dist/usecase/mcp.js +100 -0
  149. package/dist/usecase/paging.js +71 -0
  150. package/dist/usecase/publishing.js +63 -0
  151. package/dist/usecase/refusals.js +27 -0
  152. package/dist/usecase/rest.js +54 -0
  153. package/dist/usecase/search.js +7 -0
  154. package/dist/usecase/site.js +40 -0
  155. package/dist/usecase/stores.js +62 -0
  156. package/dist/usecase/tool-version.js +9 -0
  157. package/dist/usecase/translations.js +78 -0
  158. package/dist/usecase/ttl.js +20 -0
  159. package/dist/usecase/validation.js +233 -0
  160. package/dist/usecase/web.js +23 -0
  161. package/docs/examples/README.md +31 -16
  162. package/docs/examples/app-shell/README.md +86 -0
  163. package/docs/examples/app-shell/package.json +42 -0
  164. package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
  165. package/docs/examples/app-shell/smoke-kit.mjs +154 -0
  166. package/docs/examples/app-shell/src/auth.ts +57 -0
  167. package/docs/examples/app-shell/src/handlers.ts +5 -0
  168. package/docs/examples/app-shell/src/index.ts +4 -0
  169. package/docs/examples/app-shell/src/routes.ts +13 -0
  170. package/docs/examples/app-shell/src/schedule.ts +8 -0
  171. package/docs/examples/app-shell/src/service.ts +70 -0
  172. package/docs/examples/app-shell/src/sign-in.ts +41 -0
  173. package/docs/examples/app-shell/src/signup.ts +8 -0
  174. package/docs/examples/{reference-service → app-shell}/tsconfig.json +6 -2
  175. package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
  176. package/docs/examples/app-shell/wrangler.jsonc +62 -0
  177. package/docs/examples/club-events/README.md +60 -0
  178. package/docs/examples/club-events/manifests/club-events.yaml +225 -0
  179. package/docs/examples/club-events/smoke.mjs +121 -0
  180. package/docs/examples/club-events/src/handlers.ts +25 -0
  181. package/docs/examples/club-events/src/signup.ts +9 -0
  182. package/docs/examples/generated-web/README.md +78 -0
  183. package/docs/examples/generated-web/posts.yaml +38 -0
  184. package/docs/examples/generated-web/seed.sql +6 -0
  185. package/docs/examples/generated-web/src/worker.ts +43 -0
  186. package/docs/examples/generated-web/tsconfig.json +8 -0
  187. package/docs/examples/generated-web/wrangler.jsonc +8 -0
  188. package/docs/examples/purchasing/.dev.vars.example +6 -0
  189. package/docs/examples/purchasing/README.md +90 -0
  190. package/docs/examples/purchasing/manifests/purchasing.yaml +341 -0
  191. package/docs/examples/purchasing/seed.sql +4 -0
  192. package/docs/examples/purchasing/smoke.mjs +177 -0
  193. package/docs/examples/purchasing/src/admin.tsx +13 -0
  194. package/docs/examples/purchasing/src/handlers.ts +33 -0
  195. package/docs/examples/purchasing/src/notify.ts +29 -0
  196. package/docs/examples/purchasing/src/requests-page.ts +57 -0
  197. package/docs/examples/purchasing/src/routes.ts +53 -0
  198. package/docs/examples/purchasing/src/schedule.ts +31 -0
  199. package/docs/examples/purchasing/src/signup.ts +5 -0
  200. package/docs/examples/purchasing/src/supplier.ts +32 -0
  201. package/docs/examples/purchasing/wrangler.jsonc +69 -0
  202. package/docs/examples/recipes/README.md +58 -0
  203. package/docs/examples/recipes/manifests/recipes.yaml +75 -0
  204. package/docs/examples/recipes/smoke.mjs +102 -0
  205. package/docs/examples/recipes/src/media.ts +13 -0
  206. package/docs/examples/recipes/src/pages.ts +99 -0
  207. package/docs/examples/recipes/src/routes.ts +71 -0
  208. package/docs/examples/recipes/src/site-config.ts +12 -0
  209. package/docs/examples/recipes/wrangler.jsonc +74 -0
  210. package/docs/handbook/cloudflare/authentication.md +164 -214
  211. package/docs/handbook/cloudflare/chatgpt-sites.md +4 -113
  212. package/docs/handbook/cloudflare/deploy-and-operate.md +38 -103
  213. package/docs/handbook/cloudflare/media-r2.md +62 -133
  214. package/docs/handbook/cloudflare/service-entry.md +210 -119
  215. package/docs/handbook/concepts/authorization.md +10 -123
  216. package/docs/handbook/concepts/four-atoms.md +9 -92
  217. package/docs/handbook/concepts/lifecycle-and-locales.md +9 -80
  218. package/docs/handbook/concepts/mcp-and-agents.md +24 -136
  219. package/docs/handbook/concepts/procedures-and-triggers.md +5 -162
  220. package/docs/handbook/concepts/runtime-and-adapters.md +15 -224
  221. package/docs/handbook/concepts/views.md +10 -109
  222. package/docs/handbook/examples/hub.md +2 -18
  223. package/docs/handbook/guides/adapter-guide.md +11 -0
  224. package/docs/handbook/guides/admin-ui.md +111 -164
  225. package/docs/handbook/guides/agent-setup.md +32 -27
  226. package/docs/handbook/guides/email.md +86 -0
  227. package/docs/handbook/guides/mcp-apps.md +483 -0
  228. package/docs/handbook/guides/native-admin.md +543 -0
  229. package/docs/handbook/guides/native-execution.md +132 -0
  230. package/docs/handbook/guides/oauth.md +161 -0
  231. package/docs/handbook/guides/postgres-adapters.md +56 -0
  232. package/docs/handbook/guides/public-pages.md +53 -0
  233. package/docs/handbook/guides/size-and-startup.md +9 -0
  234. package/docs/handbook/guides/typed-queries.md +39 -102
  235. package/docs/handbook/navigation.json +160 -31
  236. package/docs/handbook/reference/admin-descriptors.md +53 -0
  237. package/docs/handbook/reference/authorization.md +44 -52
  238. package/docs/handbook/reference/describe.md +56 -0
  239. package/docs/handbook/reference/diagnostics.md +15 -79
  240. package/docs/handbook/reference/features.md +45 -53
  241. package/docs/handbook/reference/manifest.md +6 -69
  242. package/docs/handbook/reference/procedure.md +11 -116
  243. package/docs/handbook/reference/schema.md +85 -185
  244. package/docs/handbook/reference/site-config.md +5 -65
  245. package/docs/handbook/reference/surface.md +389 -97
  246. package/docs/handbook/reference/trigger.md +54 -90
  247. package/docs/handbook/reference/view.md +32 -160
  248. package/docs/handbook/releases/index.md +120 -13
  249. package/docs/handbook/start/overview.md +9 -56
  250. package/docs/handbook/start/project-and-cli.md +40 -149
  251. package/docs/handbook/start/quickstart-worker.md +38 -116
  252. package/docs/skills/develop/SKILL.md +35 -123
  253. package/docs/skills/develop/mcp-app.md +37 -77
  254. package/docs/skills/integrate/SKILL.md +42 -84
  255. package/docs/skills/media-gc/SKILL.md +21 -8
  256. package/docs/skills/provision/SKILL.md +28 -91
  257. package/docs/skills/update/SKILL.md +19 -43
  258. package/docs/source/scripts/postgres-adapter.ts +101 -0
  259. package/docs/upgrade-0.1-to-0.2.md +25 -9
  260. package/package.json +97 -112
  261. package/skills/.keep +0 -0
  262. package/skills/README.md +67 -0
  263. package/skills/mantle/SKILL.md +135 -0
  264. package/skills/mantle/references/local-testing.md +15 -0
  265. package/skills/mantle/references/web.md +41 -0
  266. package/skills/mantle/references/website.md +49 -0
  267. package/dist/admin/consent.d.ts +0 -17
  268. package/dist/admin/consent.d.ts.map +0 -1
  269. package/dist/admin/consent.js +0 -17
  270. package/dist/admin/consent.js.map +0 -1
  271. package/dist/admin/createAdminSurface.d.ts +0 -25
  272. package/dist/admin/createAdminSurface.d.ts.map +0 -1
  273. package/dist/admin/createAdminSurface.js +0 -635
  274. package/dist/admin/createAdminSurface.js.map +0 -1
  275. package/dist/admin/design.d.ts +0 -7
  276. package/dist/admin/design.d.ts.map +0 -1
  277. package/dist/admin/design.js +0 -18
  278. package/dist/admin/design.js.map +0 -1
  279. package/dist/admin/developerConsole.d.ts +0 -267
  280. package/dist/admin/developerConsole.d.ts.map +0 -1
  281. package/dist/admin/developerConsole.js +0 -136
  282. package/dist/admin/developerConsole.js.map +0 -1
  283. package/dist/admin/extensions.d.ts +0 -290
  284. package/dist/admin/extensions.d.ts.map +0 -1
  285. package/dist/admin/extensions.js +0 -532
  286. package/dist/admin/extensions.js.map +0 -1
  287. package/dist/admin/identity.d.ts +0 -62
  288. package/dist/admin/identity.d.ts.map +0 -1
  289. package/dist/admin/identity.js +0 -7
  290. package/dist/admin/identity.js.map +0 -1
  291. package/dist/admin/index.d.ts +0 -7
  292. package/dist/admin/index.d.ts.map +0 -1
  293. package/dist/admin/index.js +0 -7
  294. package/dist/admin/index.js.map +0 -1
  295. package/dist/admin/procedureFlow.d.ts +0 -38
  296. package/dist/admin/procedureFlow.d.ts.map +0 -1
  297. package/dist/admin/procedureFlow.js +0 -188
  298. package/dist/admin/procedureFlow.js.map +0 -1
  299. package/dist/auth/ConsoleEmailSender.d.ts +0 -15
  300. package/dist/auth/ConsoleEmailSender.d.ts.map +0 -1
  301. package/dist/auth/ConsoleEmailSender.js +0 -19
  302. package/dist/auth/ConsoleEmailSender.js.map +0 -1
  303. package/dist/auth/appleClientSecret.d.ts +0 -75
  304. package/dist/auth/appleClientSecret.d.ts.map +0 -1
  305. package/dist/auth/appleClientSecret.js +0 -116
  306. package/dist/auth/appleClientSecret.js.map +0 -1
  307. package/dist/auth/buildAuth.d.ts +0 -4568
  308. package/dist/auth/buildAuth.d.ts.map +0 -1
  309. package/dist/auth/buildAuth.js +0 -312
  310. package/dist/auth/buildAuth.js.map +0 -1
  311. package/dist/auth/callerResolver.d.ts +0 -52
  312. package/dist/auth/callerResolver.d.ts.map +0 -1
  313. package/dist/auth/callerResolver.js +0 -52
  314. package/dist/auth/callerResolver.js.map +0 -1
  315. package/dist/auth/createAuthRoutes.d.ts +0 -22
  316. package/dist/auth/createAuthRoutes.d.ts.map +0 -1
  317. package/dist/auth/createAuthRoutes.js +0 -129
  318. package/dist/auth/createAuthRoutes.js.map +0 -1
  319. package/dist/auth/createMantleAuth.d.ts +0 -3
  320. package/dist/auth/createMantleAuth.d.ts.map +0 -1
  321. package/dist/auth/createMantleAuth.js +0 -504
  322. package/dist/auth/createMantleAuth.js.map +0 -1
  323. package/dist/auth/db.d.ts +0 -18
  324. package/dist/auth/db.d.ts.map +0 -1
  325. package/dist/auth/db.js +0 -27
  326. package/dist/auth/db.js.map +0 -1
  327. package/dist/auth/emailTemplates.d.ts +0 -7
  328. package/dist/auth/emailTemplates.d.ts.map +0 -1
  329. package/dist/auth/emailTemplates.js.map +0 -1
  330. package/dist/auth/index.d.ts +0 -9
  331. package/dist/auth/index.d.ts.map +0 -1
  332. package/dist/auth/index.js +0 -7
  333. package/dist/auth/index.js.map +0 -1
  334. package/dist/auth/methods.d.ts +0 -717
  335. package/dist/auth/methods.d.ts.map +0 -1
  336. package/dist/auth/methods.js +0 -321
  337. package/dist/auth/methods.js.map +0 -1
  338. package/dist/auth/oauthTokens.d.ts +0 -24
  339. package/dist/auth/oauthTokens.d.ts.map +0 -1
  340. package/dist/auth/oauthTokens.js +0 -146
  341. package/dist/auth/oauthTokens.js.map +0 -1
  342. package/dist/auth/setupIncomplete.d.ts +0 -16
  343. package/dist/auth/setupIncomplete.d.ts.map +0 -1
  344. package/dist/auth/setupIncomplete.js +0 -50
  345. package/dist/auth/setupIncomplete.js.map +0 -1
  346. package/dist/auth/types.d.ts +0 -440
  347. package/dist/auth/types.d.ts.map +0 -1
  348. package/dist/auth/types.js +0 -10
  349. package/dist/auth/types.js.map +0 -1
  350. package/dist/bun/index.d.ts +0 -21
  351. package/dist/bun/index.d.ts.map +0 -1
  352. package/dist/bun/index.js +0 -46
  353. package/dist/bun/index.js.map +0 -1
  354. package/dist/cli/emitModule.d.ts +0 -7
  355. package/dist/cli/emitModule.d.ts.map +0 -1
  356. package/dist/cli/emitModule.js +0 -127
  357. package/dist/cli/emitModule.js.map +0 -1
  358. package/dist/cli/generate.d.ts +0 -8
  359. package/dist/cli/generate.d.ts.map +0 -1
  360. package/dist/cli/generate.js +0 -391
  361. package/dist/cli/generate.js.map +0 -1
  362. package/dist/cli/main.d.ts +0 -3
  363. package/dist/cli/main.d.ts.map +0 -1
  364. package/dist/cli/main.js +0 -21
  365. package/dist/cli/main.js.map +0 -1
  366. package/dist/cli/preset.d.ts +0 -18
  367. package/dist/cli/preset.d.ts.map +0 -1
  368. package/dist/cli/preset.js +0 -405
  369. package/dist/cli/preset.js.map +0 -1
  370. package/dist/cloudflare/index.d.ts +0 -25
  371. package/dist/cloudflare/index.d.ts.map +0 -1
  372. package/dist/cloudflare/index.js +0 -16
  373. package/dist/cloudflare/index.js.map +0 -1
  374. package/dist/cloudflare/r2Media.d.ts.map +0 -1
  375. package/dist/cloudflare/r2Media.js +0 -69
  376. package/dist/cloudflare/r2Media.js.map +0 -1
  377. package/dist/core/caller.d.ts +0 -35
  378. package/dist/core/caller.d.ts.map +0 -1
  379. package/dist/core/caller.js +0 -3
  380. package/dist/core/caller.js.map +0 -1
  381. package/dist/core/createMantle.d.ts +0 -22
  382. package/dist/core/createMantle.d.ts.map +0 -1
  383. package/dist/core/createMantle.js +0 -117
  384. package/dist/core/createMantle.js.map +0 -1
  385. package/dist/core/dialect.d.ts +0 -53
  386. package/dist/core/dialect.d.ts.map +0 -1
  387. package/dist/core/dialect.js +0 -7
  388. package/dist/core/dialect.js.map +0 -1
  389. package/dist/core/driver.d.ts +0 -24
  390. package/dist/core/driver.d.ts.map +0 -1
  391. package/dist/core/driver.js +0 -2
  392. package/dist/core/driver.js.map +0 -1
  393. package/dist/core/email.d.ts +0 -17
  394. package/dist/core/email.d.ts.map +0 -1
  395. package/dist/core/email.js +0 -2
  396. package/dist/core/email.js.map +0 -1
  397. package/dist/core/index.d.ts +0 -16
  398. package/dist/core/index.d.ts.map +0 -1
  399. package/dist/core/index.js +0 -16
  400. package/dist/core/index.js.map +0 -1
  401. package/dist/core/invocation.d.ts +0 -66
  402. package/dist/core/invocation.d.ts.map +0 -1
  403. package/dist/core/invocation.js +0 -3
  404. package/dist/core/invocation.js.map +0 -1
  405. package/dist/core/observation.d.ts +0 -3
  406. package/dist/core/observation.d.ts.map +0 -1
  407. package/dist/core/observation.js +0 -10
  408. package/dist/core/observation.js.map +0 -1
  409. package/dist/core/runtime/auth.d.ts +0 -9
  410. package/dist/core/runtime/auth.d.ts.map +0 -1
  411. package/dist/core/runtime/auth.js +0 -39
  412. package/dist/core/runtime/auth.js.map +0 -1
  413. package/dist/core/runtime/createRuntime.d.ts +0 -23
  414. package/dist/core/runtime/createRuntime.d.ts.map +0 -1
  415. package/dist/core/runtime/createRuntime.js +0 -214
  416. package/dist/core/runtime/createRuntime.js.map +0 -1
  417. package/dist/core/runtime/verifyPlan.d.ts +0 -34
  418. package/dist/core/runtime/verifyPlan.d.ts.map +0 -1
  419. package/dist/core/runtime/verifyPlan.js +0 -301
  420. package/dist/core/runtime/verifyPlan.js.map +0 -1
  421. package/dist/core/service.d.ts +0 -45
  422. package/dist/core/service.d.ts.map +0 -1
  423. package/dist/core/service.js +0 -2
  424. package/dist/core/service.js.map +0 -1
  425. package/dist/core/sessionUser.d.ts +0 -14
  426. package/dist/core/sessionUser.d.ts.map +0 -1
  427. package/dist/core/sessionUser.js +0 -4
  428. package/dist/core/sessionUser.js.map +0 -1
  429. package/dist/core/site.d.ts.map +0 -1
  430. package/dist/core/site.js +0 -2
  431. package/dist/core/site.js.map +0 -1
  432. package/dist/core/siteConfig.d.ts +0 -5
  433. package/dist/core/siteConfig.d.ts.map +0 -1
  434. package/dist/core/siteConfig.js +0 -24
  435. package/dist/core/siteConfig.js.map +0 -1
  436. package/dist/core/sql/allowlist.d.ts +0 -67
  437. package/dist/core/sql/allowlist.d.ts.map +0 -1
  438. package/dist/core/sql/allowlist.js +0 -737
  439. package/dist/core/sql/allowlist.js.map +0 -1
  440. package/dist/core/sql/ast.d.ts +0 -24
  441. package/dist/core/sql/ast.d.ts.map +0 -1
  442. package/dist/core/sql/ast.js +0 -32
  443. package/dist/core/sql/ast.js.map +0 -1
  444. package/dist/core/sql/compile.d.ts +0 -50
  445. package/dist/core/sql/compile.d.ts.map +0 -1
  446. package/dist/core/sql/compile.js +0 -48
  447. package/dist/core/sql/compile.js.map +0 -1
  448. package/dist/core/sql/policy.d.ts +0 -123
  449. package/dist/core/sql/policy.d.ts.map +0 -1
  450. package/dist/core/sql/policy.js +0 -398
  451. package/dist/core/sql/policy.js.map +0 -1
  452. package/dist/core/sql/positions.d.ts +0 -30
  453. package/dist/core/sql/positions.d.ts.map +0 -1
  454. package/dist/core/sql/positions.js +0 -22
  455. package/dist/core/sql/positions.js.map +0 -1
  456. package/dist/core/sql/run.d.ts +0 -68
  457. package/dist/core/sql/run.d.ts.map +0 -1
  458. package/dist/core/sql/run.js +0 -384
  459. package/dist/core/sql/run.js.map +0 -1
  460. package/dist/core/store/createStore.d.ts +0 -49
  461. package/dist/core/store/createStore.d.ts.map +0 -1
  462. package/dist/core/store/createStore.js +0 -227
  463. package/dist/core/store/createStore.js.map +0 -1
  464. package/dist/core/store/cursor.d.ts +0 -4
  465. package/dist/core/store/cursor.d.ts.map +0 -1
  466. package/dist/core/store/cursor.js +0 -22
  467. package/dist/core/store/cursor.js.map +0 -1
  468. package/dist/core/store/json.d.ts +0 -80
  469. package/dist/core/store/json.d.ts.map +0 -1
  470. package/dist/core/store/json.js +0 -342
  471. package/dist/core/store/json.js.map +0 -1
  472. package/dist/core/store.d.ts +0 -160
  473. package/dist/core/store.d.ts.map +0 -1
  474. package/dist/core/store.js +0 -2
  475. package/dist/core/store.js.map +0 -1
  476. package/dist/core/wire.d.ts +0 -20
  477. package/dist/core/wire.d.ts.map +0 -1
  478. package/dist/core/wire.js +0 -84
  479. package/dist/core/wire.js.map +0 -1
  480. package/dist/core/withCaller.d.ts +0 -24
  481. package/dist/core/withCaller.d.ts.map +0 -1
  482. package/dist/core/withCaller.js +0 -35
  483. package/dist/core/withCaller.js.map +0 -1
  484. package/dist/d1/adapter.d.ts +0 -12
  485. package/dist/d1/adapter.d.ts.map +0 -1
  486. package/dist/d1/adapter.js +0 -23
  487. package/dist/d1/adapter.js.map +0 -1
  488. package/dist/d1/codec.d.ts +0 -14
  489. package/dist/d1/codec.d.ts.map +0 -1
  490. package/dist/d1/codec.js +0 -136
  491. package/dist/d1/codec.js.map +0 -1
  492. package/dist/d1/compile/index.d.ts +0 -9
  493. package/dist/d1/compile/index.d.ts.map +0 -1
  494. package/dist/d1/compile/index.js +0 -9
  495. package/dist/d1/compile/index.js.map +0 -1
  496. package/dist/d1/dialect.d.ts +0 -4
  497. package/dist/d1/dialect.d.ts.map +0 -1
  498. package/dist/d1/dialect.js +0 -13
  499. package/dist/d1/dialect.js.map +0 -1
  500. package/dist/d1/executor.d.ts +0 -15
  501. package/dist/d1/executor.d.ts.map +0 -1
  502. package/dist/d1/executor.js +0 -96
  503. package/dist/d1/executor.js.map +0 -1
  504. package/dist/d1/index.d.ts +0 -6
  505. package/dist/d1/index.d.ts.map +0 -1
  506. package/dist/d1/index.js +0 -6
  507. package/dist/d1/index.js.map +0 -1
  508. package/dist/d1/lower.d.ts +0 -8
  509. package/dist/d1/lower.d.ts.map +0 -1
  510. package/dist/d1/lower.js +0 -167
  511. package/dist/d1/lower.js.map +0 -1
  512. package/dist/d1/media.d.ts +0 -5
  513. package/dist/d1/media.d.ts.map +0 -1
  514. package/dist/d1/media.js +0 -157
  515. package/dist/d1/media.js.map +0 -1
  516. package/dist/d1/migrations.d.ts +0 -12
  517. package/dist/d1/migrations.d.ts.map +0 -1
  518. package/dist/d1/migrations.js +0 -111
  519. package/dist/d1/migrations.js.map +0 -1
  520. package/dist/d1/print.d.ts +0 -28
  521. package/dist/d1/print.d.ts.map +0 -1
  522. package/dist/d1/print.js +0 -54
  523. package/dist/d1/print.js.map +0 -1
  524. package/dist/d1/site.d.ts +0 -17
  525. package/dist/d1/site.d.ts.map +0 -1
  526. package/dist/d1/site.js +0 -63
  527. package/dist/d1/site.js.map +0 -1
  528. package/dist/d1/storage.d.ts +0 -34
  529. package/dist/d1/storage.d.ts.map +0 -1
  530. package/dist/d1/storage.js +0 -288
  531. package/dist/d1/storage.js.map +0 -1
  532. package/dist/d1/tz.d.ts +0 -21
  533. package/dist/d1/tz.d.ts.map +0 -1
  534. package/dist/d1/tz.js +0 -54
  535. package/dist/d1/tz.js.map +0 -1
  536. package/dist/d1/validator.d.ts +0 -10
  537. package/dist/d1/validator.d.ts.map +0 -1
  538. package/dist/d1/validator.js +0 -33
  539. package/dist/d1/validator.js.map +0 -1
  540. package/dist/mcp/apps.d.ts +0 -43
  541. package/dist/mcp/apps.d.ts.map +0 -1
  542. package/dist/mcp/apps.js +0 -57
  543. package/dist/mcp/apps.js.map +0 -1
  544. package/dist/mcp/catalog.d.ts +0 -55
  545. package/dist/mcp/catalog.d.ts.map +0 -1
  546. package/dist/mcp/catalog.js +0 -81
  547. package/dist/mcp/catalog.js.map +0 -1
  548. package/dist/mcp/createMcpSurface.d.ts +0 -60
  549. package/dist/mcp/createMcpSurface.d.ts.map +0 -1
  550. package/dist/mcp/createMcpSurface.js +0 -182
  551. package/dist/mcp/createMcpSurface.js.map +0 -1
  552. package/dist/mcp/index.d.ts +0 -4
  553. package/dist/mcp/index.d.ts.map +0 -1
  554. package/dist/mcp/index.js +0 -4
  555. package/dist/mcp/index.js.map +0 -1
  556. package/dist/mcp/media.d.ts +0 -9
  557. package/dist/mcp/media.d.ts.map +0 -1
  558. package/dist/mcp/media.js +0 -33
  559. package/dist/mcp/media.js.map +0 -1
  560. package/dist/postgres/adapter.d.ts +0 -23
  561. package/dist/postgres/adapter.d.ts.map +0 -1
  562. package/dist/postgres/adapter.js +0 -50
  563. package/dist/postgres/adapter.js.map +0 -1
  564. package/dist/postgres/codec.d.ts +0 -13
  565. package/dist/postgres/codec.d.ts.map +0 -1
  566. package/dist/postgres/codec.js +0 -110
  567. package/dist/postgres/codec.js.map +0 -1
  568. package/dist/postgres/compile/index.d.ts +0 -9
  569. package/dist/postgres/compile/index.d.ts.map +0 -1
  570. package/dist/postgres/compile/index.js +0 -9
  571. package/dist/postgres/compile/index.js.map +0 -1
  572. package/dist/postgres/driver.d.ts +0 -109
  573. package/dist/postgres/driver.d.ts.map +0 -1
  574. package/dist/postgres/driver.js +0 -186
  575. package/dist/postgres/driver.js.map +0 -1
  576. package/dist/postgres/executor.d.ts +0 -28
  577. package/dist/postgres/executor.d.ts.map +0 -1
  578. package/dist/postgres/executor.js +0 -96
  579. package/dist/postgres/executor.js.map +0 -1
  580. package/dist/postgres/index.d.ts +0 -8
  581. package/dist/postgres/index.d.ts.map +0 -1
  582. package/dist/postgres/index.js +0 -8
  583. package/dist/postgres/index.js.map +0 -1
  584. package/dist/postgres/lower.d.ts +0 -6
  585. package/dist/postgres/lower.d.ts.map +0 -1
  586. package/dist/postgres/lower.js +0 -152
  587. package/dist/postgres/lower.js.map +0 -1
  588. package/dist/postgres/print.d.ts +0 -11
  589. package/dist/postgres/print.d.ts.map +0 -1
  590. package/dist/postgres/print.js +0 -108
  591. package/dist/postgres/print.js.map +0 -1
  592. package/dist/postgres/session.d.ts +0 -9
  593. package/dist/postgres/session.d.ts.map +0 -1
  594. package/dist/postgres/session.js +0 -111
  595. package/dist/postgres/session.js.map +0 -1
  596. package/dist/postgres/storage.d.ts +0 -32
  597. package/dist/postgres/storage.d.ts.map +0 -1
  598. package/dist/postgres/storage.js +0 -283
  599. package/dist/postgres/storage.js.map +0 -1
  600. package/dist/postgres/validator.d.ts +0 -13
  601. package/dist/postgres/validator.d.ts.map +0 -1
  602. package/dist/postgres/validator.js +0 -53
  603. package/dist/postgres/validator.js.map +0 -1
  604. package/dist/spec/domain/index.d.ts +0 -3
  605. package/dist/spec/domain/index.d.ts.map +0 -1
  606. package/dist/spec/domain/index.js +0 -3
  607. package/dist/spec/domain/index.js.map +0 -1
  608. package/dist/spec/domain/model/ContentState.d.ts +0 -8
  609. package/dist/spec/domain/model/ContentState.d.ts.map +0 -1
  610. package/dist/spec/domain/model/ContentState.js +0 -7
  611. package/dist/spec/domain/model/ContentState.js.map +0 -1
  612. package/dist/spec/domain/model/Entry.d.ts +0 -29
  613. package/dist/spec/domain/model/Entry.d.ts.map +0 -1
  614. package/dist/spec/domain/model/Entry.js +0 -16
  615. package/dist/spec/domain/model/Entry.js.map +0 -1
  616. package/dist/spec/domain/model/Locale.d.ts +0 -30
  617. package/dist/spec/domain/model/Locale.d.ts.map +0 -1
  618. package/dist/spec/domain/model/Locale.js +0 -33
  619. package/dist/spec/domain/model/Locale.js.map +0 -1
  620. package/dist/spec/domain/model/ManifestGrammar.d.ts.map +0 -1
  621. package/dist/spec/domain/model/ManifestGrammar.js +0 -153
  622. package/dist/spec/domain/model/ManifestGrammar.js.map +0 -1
  623. package/dist/spec/domain/model/MediaMimeAccept.d.ts +0 -55
  624. package/dist/spec/domain/model/MediaMimeAccept.d.ts.map +0 -1
  625. package/dist/spec/domain/model/MediaMimeAccept.js +0 -90
  626. package/dist/spec/domain/model/MediaMimeAccept.js.map +0 -1
  627. package/dist/spec/domain/model/RuntimePlan.d.ts.map +0 -1
  628. package/dist/spec/domain/model/RuntimePlan.js +0 -4
  629. package/dist/spec/domain/model/RuntimePlan.js.map +0 -1
  630. package/dist/spec/domain/model/SiteConfig.d.ts +0 -173
  631. package/dist/spec/domain/model/SiteConfig.d.ts.map +0 -1
  632. package/dist/spec/domain/model/SiteConfig.js +0 -13
  633. package/dist/spec/domain/model/SiteConfig.js.map +0 -1
  634. package/dist/spec/domain/model/SqlIr.d.ts.map +0 -1
  635. package/dist/spec/domain/model/SqlIr.js +0 -95
  636. package/dist/spec/domain/model/SqlIr.js.map +0 -1
  637. package/dist/spec/domain/model/index.d.ts +0 -14
  638. package/dist/spec/domain/model/index.d.ts.map +0 -1
  639. package/dist/spec/domain/model/index.js +0 -14
  640. package/dist/spec/domain/model/index.js.map +0 -1
  641. package/dist/spec/domain/service/CloudflareCron.d.ts.map +0 -1
  642. package/dist/spec/domain/service/CloudflareCron.js.map +0 -1
  643. package/dist/spec/domain/service/CrossSchemaChecker.d.ts +0 -34
  644. package/dist/spec/domain/service/CrossSchemaChecker.d.ts.map +0 -1
  645. package/dist/spec/domain/service/CrossSchemaChecker.js +0 -114
  646. package/dist/spec/domain/service/CrossSchemaChecker.js.map +0 -1
  647. package/dist/spec/domain/service/EntryDataValidator.d.ts +0 -56
  648. package/dist/spec/domain/service/EntryDataValidator.d.ts.map +0 -1
  649. package/dist/spec/domain/service/EntryDataValidator.js +0 -88
  650. package/dist/spec/domain/service/EntryDataValidator.js.map +0 -1
  651. package/dist/spec/domain/service/JsonSchemaToZod.d.ts +0 -29
  652. package/dist/spec/domain/service/JsonSchemaToZod.d.ts.map +0 -1
  653. package/dist/spec/domain/service/JsonSchemaToZod.js +0 -156
  654. package/dist/spec/domain/service/JsonSchemaToZod.js.map +0 -1
  655. package/dist/spec/domain/service/LifecycleStateMachine.d.ts +0 -75
  656. package/dist/spec/domain/service/LifecycleStateMachine.d.ts.map +0 -1
  657. package/dist/spec/domain/service/LifecycleStateMachine.js +0 -76
  658. package/dist/spec/domain/service/LifecycleStateMachine.js.map +0 -1
  659. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts +0 -29
  660. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts.map +0 -1
  661. package/dist/spec/domain/service/LocaleCanonicalizer.js +0 -96
  662. package/dist/spec/domain/service/LocaleCanonicalizer.js.map +0 -1
  663. package/dist/spec/domain/service/ManifestFieldChecks.d.ts +0 -60
  664. package/dist/spec/domain/service/ManifestFieldChecks.d.ts.map +0 -1
  665. package/dist/spec/domain/service/ManifestFieldChecks.js +0 -116
  666. package/dist/spec/domain/service/ManifestFieldChecks.js.map +0 -1
  667. package/dist/spec/domain/service/ManifestGraphValidator.d.ts +0 -15
  668. package/dist/spec/domain/service/ManifestGraphValidator.d.ts.map +0 -1
  669. package/dist/spec/domain/service/ManifestGraphValidator.js +0 -225
  670. package/dist/spec/domain/service/ManifestGraphValidator.js.map +0 -1
  671. package/dist/spec/domain/service/ManifestLinker.d.ts +0 -45
  672. package/dist/spec/domain/service/ManifestLinker.d.ts.map +0 -1
  673. package/dist/spec/domain/service/ManifestLinker.js +0 -92
  674. package/dist/spec/domain/service/ManifestLinker.js.map +0 -1
  675. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts +0 -16
  676. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts.map +0 -1
  677. package/dist/spec/domain/service/ManifestLocaleTrimmer.js +0 -76
  678. package/dist/spec/domain/service/ManifestLocaleTrimmer.js.map +0 -1
  679. package/dist/spec/domain/service/ManifestParser.d.ts +0 -49
  680. package/dist/spec/domain/service/ManifestParser.d.ts.map +0 -1
  681. package/dist/spec/domain/service/ManifestParser.js +0 -203
  682. package/dist/spec/domain/service/ManifestParser.js.map +0 -1
  683. package/dist/spec/domain/service/ManifestPartition.d.ts +0 -9
  684. package/dist/spec/domain/service/ManifestPartition.d.ts.map +0 -1
  685. package/dist/spec/domain/service/ManifestPartition.js +0 -19
  686. package/dist/spec/domain/service/ManifestPartition.js.map +0 -1
  687. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts +0 -33
  688. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts.map +0 -1
  689. package/dist/spec/domain/service/ManifestPathDiagnoser.js +0 -43
  690. package/dist/spec/domain/service/ManifestPathDiagnoser.js.map +0 -1
  691. package/dist/spec/domain/service/ManifestSourceSpans.d.ts +0 -10
  692. package/dist/spec/domain/service/ManifestSourceSpans.d.ts.map +0 -1
  693. package/dist/spec/domain/service/ManifestSourceSpans.js +0 -76
  694. package/dist/spec/domain/service/ManifestSourceSpans.js.map +0 -1
  695. package/dist/spec/domain/service/McpToolNaming.d.ts +0 -25
  696. package/dist/spec/domain/service/McpToolNaming.d.ts.map +0 -1
  697. package/dist/spec/domain/service/McpToolNaming.js +0 -50
  698. package/dist/spec/domain/service/McpToolNaming.js.map +0 -1
  699. package/dist/spec/domain/service/PlanFingerprint.d.ts.map +0 -1
  700. package/dist/spec/domain/service/PlanFingerprint.js +0 -14
  701. package/dist/spec/domain/service/PlanFingerprint.js.map +0 -1
  702. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts +0 -4
  703. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts.map +0 -1
  704. package/dist/spec/domain/service/ProcedureViewSpecChecks.js +0 -211
  705. package/dist/spec/domain/service/ProcedureViewSpecChecks.js.map +0 -1
  706. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts +0 -44
  707. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +0 -1
  708. package/dist/spec/domain/service/SchemaAdminUiChecker.js +0 -333
  709. package/dist/spec/domain/service/SchemaAdminUiChecker.js.map +0 -1
  710. package/dist/spec/domain/service/SchemaIndexChecker.d.ts +0 -33
  711. package/dist/spec/domain/service/SchemaIndexChecker.d.ts.map +0 -1
  712. package/dist/spec/domain/service/SchemaIndexChecker.js +0 -256
  713. package/dist/spec/domain/service/SchemaIndexChecker.js.map +0 -1
  714. package/dist/spec/domain/service/SchemaSearchChecker.d.ts +0 -11
  715. package/dist/spec/domain/service/SchemaSearchChecker.d.ts.map +0 -1
  716. package/dist/spec/domain/service/SchemaSearchChecker.js +0 -78
  717. package/dist/spec/domain/service/SchemaSearchChecker.js.map +0 -1
  718. package/dist/spec/domain/service/SchemaSpecChecks.d.ts +0 -31
  719. package/dist/spec/domain/service/SchemaSpecChecks.d.ts.map +0 -1
  720. package/dist/spec/domain/service/SchemaSpecChecks.js +0 -445
  721. package/dist/spec/domain/service/SchemaSpecChecks.js.map +0 -1
  722. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts +0 -39
  723. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts.map +0 -1
  724. package/dist/spec/domain/service/SiteDefaultsValidator.js +0 -194
  725. package/dist/spec/domain/service/SiteDefaultsValidator.js.map +0 -1
  726. package/dist/spec/domain/service/SqlClassify.d.ts +0 -19
  727. package/dist/spec/domain/service/SqlClassify.d.ts.map +0 -1
  728. package/dist/spec/domain/service/SqlClassify.js +0 -42
  729. package/dist/spec/domain/service/SqlClassify.js.map +0 -1
  730. package/dist/spec/domain/service/SqlRefusal.d.ts +0 -16
  731. package/dist/spec/domain/service/SqlRefusal.d.ts.map +0 -1
  732. package/dist/spec/domain/service/SqlRefusal.js +0 -20
  733. package/dist/spec/domain/service/SqlRefusal.js.map +0 -1
  734. package/dist/spec/domain/service/SqlTypes.d.ts +0 -40
  735. package/dist/spec/domain/service/SqlTypes.d.ts.map +0 -1
  736. package/dist/spec/domain/service/SqlTypes.js +0 -110
  737. package/dist/spec/domain/service/SqlTypes.js.map +0 -1
  738. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts +0 -3
  739. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts.map +0 -1
  740. package/dist/spec/domain/service/StaffRoleHierarchy.js +0 -19
  741. package/dist/spec/domain/service/StaffRoleHierarchy.js.map +0 -1
  742. package/dist/spec/domain/service/TriggerGraphChecks.d.ts +0 -16
  743. package/dist/spec/domain/service/TriggerGraphChecks.d.ts.map +0 -1
  744. package/dist/spec/domain/service/TriggerGraphChecks.js +0 -337
  745. package/dist/spec/domain/service/TriggerGraphChecks.js.map +0 -1
  746. package/dist/spec/domain/service/TriggerSpecChecks.d.ts +0 -4
  747. package/dist/spec/domain/service/TriggerSpecChecks.d.ts.map +0 -1
  748. package/dist/spec/domain/service/TriggerSpecChecks.js +0 -89
  749. package/dist/spec/domain/service/TriggerSpecChecks.js.map +0 -1
  750. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts +0 -11
  751. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts.map +0 -1
  752. package/dist/spec/domain/service/ValidatedAdminUiProjection.js +0 -26
  753. package/dist/spec/domain/service/ValidatedAdminUiProjection.js.map +0 -1
  754. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts +0 -14
  755. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts.map +0 -1
  756. package/dist/spec/domain/service/ViewAdminUiChecker.js +0 -58
  757. package/dist/spec/domain/service/ViewAdminUiChecker.js.map +0 -1
  758. package/dist/spec/domain/service/index.d.ts +0 -24
  759. package/dist/spec/domain/service/index.d.ts.map +0 -1
  760. package/dist/spec/domain/service/index.js +0 -24
  761. package/dist/spec/domain/service/index.js.map +0 -1
  762. package/dist/spec/index.d.ts +0 -10
  763. package/dist/spec/index.d.ts.map +0 -1
  764. package/dist/spec/index.js +0 -12
  765. package/dist/spec/index.js.map +0 -1
  766. package/dist/spec/infrastructure/cli/parseArgsError.d.ts +0 -16
  767. package/dist/spec/infrastructure/cli/parseArgsError.d.ts.map +0 -1
  768. package/dist/spec/infrastructure/cli/parseArgsError.js +0 -34
  769. package/dist/spec/infrastructure/cli/parseArgsError.js.map +0 -1
  770. package/dist/spec/infrastructure/index.d.ts +0 -2
  771. package/dist/spec/infrastructure/index.d.ts.map +0 -1
  772. package/dist/spec/infrastructure/index.js +0 -2
  773. package/dist/spec/infrastructure/index.js.map +0 -1
  774. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts +0 -18
  775. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts.map +0 -1
  776. package/dist/spec/infrastructure/sql/PgQueryParser.js +0 -17
  777. package/dist/spec/infrastructure/sql/PgQueryParser.js.map +0 -1
  778. package/dist/spec/infrastructure/sql/compilePlan.d.ts +0 -37
  779. package/dist/spec/infrastructure/sql/compilePlan.d.ts.map +0 -1
  780. package/dist/spec/infrastructure/sql/compilePlan.js +0 -287
  781. package/dist/spec/infrastructure/sql/compilePlan.js.map +0 -1
  782. package/dist/spec/infrastructure/sql/compileSql.d.ts +0 -35
  783. package/dist/spec/infrastructure/sql/compileSql.d.ts.map +0 -1
  784. package/dist/spec/infrastructure/sql/compileSql.js +0 -92
  785. package/dist/spec/infrastructure/sql/compileSql.js.map +0 -1
  786. package/dist/spec/infrastructure/sql/frontEnd.d.ts +0 -8
  787. package/dist/spec/infrastructure/sql/frontEnd.d.ts.map +0 -1
  788. package/dist/spec/infrastructure/sql/frontEnd.js +0 -100
  789. package/dist/spec/infrastructure/sql/frontEnd.js.map +0 -1
  790. package/dist/spec/infrastructure/sql/index.d.ts +0 -4
  791. package/dist/spec/infrastructure/sql/index.d.ts.map +0 -1
  792. package/dist/spec/infrastructure/sql/index.js +0 -4
  793. package/dist/spec/infrastructure/sql/index.js.map +0 -1
  794. package/dist/spec/kernel/diagnostic.d.ts.map +0 -1
  795. package/dist/spec/kernel/diagnostic.js +0 -301
  796. package/dist/spec/kernel/diagnostic.js.map +0 -1
  797. package/dist/spec/kernel/index.d.ts +0 -8
  798. package/dist/spec/kernel/index.d.ts.map +0 -1
  799. package/dist/spec/kernel/index.js +0 -8
  800. package/dist/spec/kernel/index.js.map +0 -1
  801. package/dist/spec/usecase/EmitTypes.d.ts +0 -22
  802. package/dist/spec/usecase/EmitTypes.d.ts.map +0 -1
  803. package/dist/spec/usecase/EmitTypes.js +0 -182
  804. package/dist/spec/usecase/EmitTypes.js.map +0 -1
  805. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts +0 -8
  806. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts.map +0 -1
  807. package/dist/spec/usecase/ValidateManifestsUseCase.js +0 -101
  808. package/dist/spec/usecase/ValidateManifestsUseCase.js.map +0 -1
  809. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts +0 -27
  810. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts.map +0 -1
  811. package/dist/spec/usecase/dto/ValidateManifestsRequest.js +0 -2
  812. package/dist/spec/usecase/dto/ValidateManifestsRequest.js.map +0 -1
  813. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts +0 -14
  814. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts.map +0 -1
  815. package/dist/spec/usecase/dto/ValidateManifestsResponse.js +0 -2
  816. package/dist/spec/usecase/dto/ValidateManifestsResponse.js.map +0 -1
  817. package/dist/spec/usecase/dto/index.d.ts +0 -3
  818. package/dist/spec/usecase/dto/index.d.ts.map +0 -1
  819. package/dist/spec/usecase/dto/index.js +0 -3
  820. package/dist/spec/usecase/dto/index.js.map +0 -1
  821. package/dist/spec/usecase/index.d.ts +0 -10
  822. package/dist/spec/usecase/index.d.ts.map +0 -1
  823. package/dist/spec/usecase/index.js +0 -10
  824. package/dist/spec/usecase/index.js.map +0 -1
  825. package/dist/testing/cases/before-hook.d.ts +0 -4
  826. package/dist/testing/cases/before-hook.d.ts.map +0 -1
  827. package/dist/testing/cases/before-hook.js +0 -71
  828. package/dist/testing/cases/before-hook.js.map +0 -1
  829. package/dist/testing/cases/corpus.d.ts +0 -14
  830. package/dist/testing/cases/corpus.d.ts.map +0 -1
  831. package/dist/testing/cases/corpus.js +0 -93
  832. package/dist/testing/cases/corpus.js.map +0 -1
  833. package/dist/testing/cases/policy.d.ts +0 -87
  834. package/dist/testing/cases/policy.d.ts.map +0 -1
  835. package/dist/testing/cases/policy.js +0 -143
  836. package/dist/testing/cases/policy.js.map +0 -1
  837. package/dist/testing/cases/printer.d.ts +0 -4
  838. package/dist/testing/cases/printer.d.ts.map +0 -1
  839. package/dist/testing/cases/printer.js +0 -34
  840. package/dist/testing/cases/printer.js.map +0 -1
  841. package/dist/testing/cases/report-view.d.ts +0 -5
  842. package/dist/testing/cases/report-view.d.ts.map +0 -1
  843. package/dist/testing/cases/report-view.js +0 -51
  844. package/dist/testing/cases/report-view.js.map +0 -1
  845. package/dist/testing/cases/requisition.d.ts +0 -4
  846. package/dist/testing/cases/requisition.d.ts.map +0 -1
  847. package/dist/testing/cases/requisition.js +0 -38
  848. package/dist/testing/cases/requisition.js.map +0 -1
  849. package/dist/testing/cases/search-places.d.ts +0 -4
  850. package/dist/testing/cases/search-places.d.ts.map +0 -1
  851. package/dist/testing/cases/search-places.js +0 -60
  852. package/dist/testing/cases/search-places.js.map +0 -1
  853. package/dist/testing/cases/stock.d.ts +0 -4
  854. package/dist/testing/cases/stock.d.ts.map +0 -1
  855. package/dist/testing/cases/stock.js +0 -35
  856. package/dist/testing/cases/stock.js.map +0 -1
  857. package/dist/testing/cases/store.d.ts +0 -4
  858. package/dist/testing/cases/store.d.ts.map +0 -1
  859. package/dist/testing/cases/store.js +0 -100
  860. package/dist/testing/cases/store.js.map +0 -1
  861. package/dist/testing/harness.d.ts +0 -94
  862. package/dist/testing/harness.d.ts.map +0 -1
  863. package/dist/testing/harness.js +0 -168
  864. package/dist/testing/harness.js.map +0 -1
  865. package/dist/testing/index.d.ts.map +0 -1
  866. package/dist/testing/index.js.map +0 -1
  867. package/dist/testing/report.d.ts +0 -15
  868. package/dist/testing/report.d.ts.map +0 -1
  869. package/dist/testing/report.js +0 -22
  870. package/dist/testing/report.js.map +0 -1
  871. package/dist/web/createRestSurface.d.ts +0 -7
  872. package/dist/web/createRestSurface.d.ts.map +0 -1
  873. package/dist/web/createRestSurface.js +0 -41
  874. package/dist/web/createRestSurface.js.map +0 -1
  875. package/dist/web/index.d.ts +0 -2
  876. package/dist/web/index.d.ts.map +0 -1
  877. package/dist/web/index.js +0 -2
  878. package/dist/web/index.js.map +0 -1
  879. package/docs/adr/0001-four-atom-manifest-model.md +0 -440
  880. package/docs/adr/0002-closed-enums-for-bindings.md +0 -253
  881. package/docs/adr/0007-ai-as-primary-author.md +0 -473
  882. package/docs/adr/0008-structured-diagnostic-shape.md +0 -338
  883. package/docs/adr/0009-consumer-supplied-manifests.md +0 -149
  884. package/docs/adr/0010-locale-and-translates.md +0 -453
  885. package/docs/adr/0011-adapter-port-spec.md +0 -281
  886. package/docs/adr/0012-views-as-public-rest.md +0 -161
  887. package/docs/adr/0013-agent-provisioned-consumer-projects.md +0 -154
  888. package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +0 -939
  889. package/docs/adr/0016-site-semantic-layer.md +0 -70
  890. package/docs/adr/0017-media-multi-variant-agent-side-optimization.md +0 -181
  891. package/docs/adr/0018-core-starters-repository-boundary.md +0 -179
  892. package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +0 -244
  893. package/docs/adr/0020-builtin-handler-contracts-and-matched-upsert.md +0 -199
  894. package/docs/adr/0021-retire-starter-scaffolding.md +0 -30
  895. package/docs/adr/0022-caller-observed-version-occ.md +0 -212
  896. package/docs/adr/0023-port-failure-contract.md +0 -69
  897. package/docs/adr/0024-manifest-native-schema-tables.md +0 -264
  898. package/docs/adr/0025-reserved-native-columns-and-published-only-public-views.md +0 -105
  899. package/docs/adr/0026-progressive-generate.md +0 -36
  900. package/docs/adr/0027-scheduled-procedure-triggers.md +0 -31
  901. package/docs/adr/0028-schema-ttl-expiry.md +0 -33
  902. package/docs/adr/0029-mcp-apps-interaction-contracts.md +0 -324
  903. package/docs/adr/0030-store.md +0 -40
  904. package/docs/adr/0031-host-cloud-core-contract.md +0 -102
  905. package/docs/adr/0032-store-centric-core-and-service-contract.md +0 -384
  906. package/docs/adr/0033-storage-converges-to-the-plan.md +0 -92
  907. package/docs/adr/0034-store-is-authored-as-sql.md +0 -192
  908. package/docs/adr/0035-sql-dialects.md +0 -154
  909. package/docs/adr/0036-host-and-dialect.md +0 -65
  910. package/docs/adr/0037-postgresql-is-the-reference-dialect.md +0 -125
  911. package/docs/adr/0038-bun-native-host.md +0 -63
  912. package/docs/adr/0039-postgresql-is-native.md +0 -130
  913. package/docs/adr/README.md +0 -98
  914. package/docs/adr/adr-lite-1376-admin-extensions.md +0 -330
  915. package/docs/adr/adr-lite-803-request-diagnostics.md +0 -38
  916. package/docs/adr/adr-lite-808-route-readiness.md +0 -47
  917. package/docs/adr/adr-lite-809-bounded-public-content.md +0 -71
  918. package/docs/adr/adr-lite-812-native-parity.md +0 -150
  919. package/docs/adr/adr-lite-823-home-statistics.md +0 -64
  920. package/docs/adr/adr-lite-842-mcp-authoring.md +0 -30
  921. package/docs/adr/adr-lite-845-frontend-client.md +0 -38
  922. package/docs/adr/adr-lite-861-admin-webmcp.md +0 -48
  923. package/docs/adr/adr-lite-909-admin-ui-kit.md +0 -37
  924. package/docs/examples/commerce-inventory.md +0 -498
  925. package/docs/examples/commerce.md +0 -254
  926. package/docs/examples/guarded-api.md +0 -238
  927. package/docs/examples/intake-hooks.md +0 -237
  928. package/docs/examples/intake.md +0 -127
  929. package/docs/examples/legal-documents.md +0 -218
  930. package/docs/examples/procurement.md +0 -226
  931. package/docs/examples/publication.md +0 -211
  932. package/docs/examples/reference-service/.mantle/generated/mantle.ts +0 -174
  933. package/docs/examples/reference-service/.mantle/generated/plan.json +0 -1936
  934. package/docs/examples/reference-service/README.md +0 -33
  935. package/docs/examples/reference-service/manifests/catalog.yaml +0 -103
  936. package/docs/examples/reference-service/manifests/orders.yaml +0 -120
  937. package/docs/examples/reference-service/mantle.config.json +0 -1
  938. package/docs/examples/reference-service/package.json +0 -27
  939. package/docs/examples/reference-service/smoke.mjs +0 -160
  940. package/docs/examples/reference-service/src/handlers.ts +0 -36
  941. package/docs/examples/reference-service/src/index.ts +0 -33
  942. package/docs/examples/reference-service/src/service.ts +0 -78
  943. package/docs/examples/reference-service/wrangler.jsonc +0 -26
  944. package/docs/examples/reservation.md +0 -142
  945. package/docs/handbook/guides/admin-extensions.md +0 -191
  946. /package/docs/examples/{reference-service → app-shell}/.dev.vars.example +0 -0
@@ -1,97 +1,389 @@
1
- ---
2
- description: Every HTTP route the generated Mantle 0.2.0 service mounts (REST, auth, MCP, Admin), the package subpaths and their exports, and the CLI.
3
- ---
4
- # HTTP, MCP, CLI and packages
5
-
6
- ## Routes of the generated service
7
-
8
- `src/service.ts` mounts, in this order. Each surface runs behind
9
- `withCaller(resolver, …)`; with identity `none`, every caller is anonymous.
10
-
11
- | Path | Surface | Mounted when |
12
- |---|---|---|
13
- | `/api/auth/*`, `/.well-known/oauth-authorization-server/*`, `/.well-known/oauth-protected-resource[/*]`, `/oauth/consent[/data]`, `/oauth/consents[/data\|/revoke]` | `createAuthRoutes` | identity `mantle` |
14
- | `/admin/*` | `createAdminSurface`: the console (from `ASSETS`) and `/admin/api/*` | feature `admin` |
15
- | `/mcp/staff` | `createMcpSurface`, `surface: staff`, with `planApp`'s MCP App | feature `mcp` and an identity |
16
- | `/mcp` | `createMcpSurface`, `surface: public` | feature `mcp` |
17
- | everything else | `createRestSurface` at `/api` | always |
18
-
19
- ### REST
20
-
21
- | Route | |
22
- |---|---|
23
- | `GET /api/views/<name>` | a `public` View; query parameters are its `input` plus `limit` and `cursor`. Answers `{ rows, nextCursor? }` |
24
- | `<METHOD> <path>` | each `http` Trigger; the JSON body and path parameters are the input. Answers the Procedure's output |
25
-
26
- A failure is `{ "error": <diagnostic> }` with the code's status
27
- ([Diagnostics](./diagnostics.md)). A cookie session cannot mutate across
28
- origins.
29
-
30
- ### Auth (identity `mantle`)
31
-
32
- | Route | |
33
- |---|---|
34
- | `GET /api/auth/methods` | the sign-in methods this service offers |
35
- | `/api/auth/*` | Better Auth: email OTP (`/email-otp/send-verification-otp`, `/sign-in/email-otp`), magic link, social and generic OAuth sign-in, sessions, sign-out, the OAuth provider |
36
- | `/.well-known/oauth-authorization-server/*`, `/.well-known/oauth-protected-resource[/mcp]` | OAuth metadata, served by Better Auth |
37
- | `/oauth/consent`, `/oauth/consents` | consent and connected apps, session only; with Admin, consent renders at `/admin/oauth/consent` and posts here |
38
-
39
- ### MCP
40
-
41
- | Route | |
42
- |---|---|
43
- | `POST /mcp` | the public surface (Streamable HTTP, JSON-RPC) |
44
- | `POST /mcp/staff` | the staff surface: staff only, the same token as `/mcp`; see [MCP and agents](../concepts/mcp-and-agents.md) |
45
-
46
- ### Admin API
47
-
48
- Every route needs a staff caller; the column names the least role.
49
-
50
- | Route | Role | |
51
- |---|---|---|
52
- | `GET /admin/api/me`, `GET /admin/api/bootstrap` | contributor | the caller; the console's first load |
53
- | `GET /admin/api/collections`, `GET …/collections/{name}/statistics` | contributor | Schemas; statistics answer 501 in 0.2.0 |
54
- | `GET /admin/api/entries?collection=`, `GET …/entries/export`, `GET …/entries/{id}` | contributor | list (with `search`, `limit`, `cursor`), CSV, one row |
55
- | `POST /admin/api/entries`, `PATCH …/entries/{id}` (with `expectedVersion`) | contributor | create, edit (contributors: drafts only) |
56
- | `POST …/entries/{id}/publish`, `…/unpublish`, `DELETE …/entries/{id}` | editor | |
57
- | `GET /admin/api/views-manifest`, `GET …/views/{name}`, `GET …/views/{name}/export` | contributor | staff Views (`{ name, title, description, input, list: { columns, searchFields, filterFields }, columns }`); rows by `limit`/`cursor` with `search` and `filter.<output>`; CSV |
58
- | `GET /admin/api/operations`, `POST …/operations/{name}` | contributor | Procedures bound to the staff MCP surface |
59
- | `GET /admin/api/site` | contributor | site metadata, `mcpEndpoints`, `capabilities: { siteSettings, media, invitationEmail, statistics }` (what this deployment turned on; the console hides what is off), and `extensions` (the Admin extension declarations the caller's role reaches, never handlers or integrity) |
60
- | `GET`, `PATCH /admin/api/site-settings` | owner | 501 `SITE_NOT_CONFIGURED` without `runtime.site` |
61
- | `POST /admin/api/media/uploads`, `POST …/media/uploads/{groupId}/commit`, `GET …/media`, `GET`, `PATCH`, `DELETE …/media/{id}` | editor | with `media` and `runtime.site` |
62
- | `GET /admin/api/webmcp`, `POST …/webmcp/{tool}` | contributor | the staff tools for a browser agent (`{ tools, routes }`); a call runs one as `/mcp/staff` does and answers `{ output }` |
63
- | `GET /admin/api/staff`, `PATCH …/staff/{id}/role`, `POST …/staff/invitations`, `DELETE …/staff/invitations/{id}` | owner | with an `AdminIdentity` that has `directory` / `roles` |
64
- | `GET /admin/api/members` | editor | with `directory` |
65
- | `GET /admin/api/developer-console` | owner | the plan's data model, logic and schedules |
66
- | `GET`, `PATCH /admin/api/x/{extension}/settings/{id}` | the settings' `role` | load and save an extension's settings; `PATCH { value }` is checked against its `schema` (400 with `error.fields`) |
67
- | `POST /admin/api/x/{extension}/actions/{id}` | the action's `role` | run a `run` or `confirm` action with `{ record }`, `{ selection }` or `{ schema }` for its target; `when.schema` is enforced |
68
- | `… /admin/api/x/{extension}/api/{path}` | the extension's lowest contribution role | the extension's own API (`handlers.api`); `null` answers 404; answers are `no-store` unless the handler sets `cache-control` |
69
- | `GET /admin/extensions/{id}.js` | the extension's lowest contribution role | a `source` extension's module; its integrity is in the shell's import map ([Extend Admin](../guides/admin-extensions.md)) |
70
-
71
- ## Packages
72
-
73
- Two npm packages, always published together at one version.
74
-
75
- | Import | Exports |
76
- |---|---|
77
- | `@aotter/mantle` | `createMantle`, `createMantleRuntime`, `verifyPlan` and its `PLAN_LIMITS`, `withCaller`, `systemCaller`, the `Caller`, `CallerResolver`, `MantleService`, `HandlerContext`, `Invocation` and Store types, `EmailSender`, `DiagnosticError`, `makeDiagnostic`, `runtimeDiagnostic`, `STAFF_ROLES`, `isStaffRole` |
78
- | `@aotter/mantle/spec` | the grammar types, `compilePlan`, `mcpTools` (the CLI side; it bundles the SQL parser, so a Worker or handler imports `DiagnosticError` from the root) |
79
- | `@aotter/mantle/d1`, `/d1/compile` | the `sqlite` dialect: `sqliteStorage` over any `DatabaseDriver`; its compile side |
80
- | `@aotter/mantle/postgres`, `/postgres/compile` | the `postgres` dialect: `postgresStorage`, `postgresDialect`, `pgDatabaseDriver`, `pgPool`, the `PgClient` and `PgConnect` types; its compile side |
81
- | `@aotter/mantle/cloudflare` | `d1Storage`, `d1Driver`, `r2MediaStorage`, `toCloudflareCron` |
82
- | `@aotter/mantle/auth` | `createMantleAuth`, `createSetupIncompleteAuth`, `createCallerResolver`, `createAuthRoutes`, `ConsoleEmailSender`, `appleClientSecret` |
83
- | `@aotter/mantle/admin` | `createAdminSurface`, `AdminIdentity` |
84
- | `@aotter/mantle/mcp` | `createMcpSurface`, `planApp` and `appCatalog` (the MCP App's catalog) |
85
- | `@aotter/mantle/web` | `createRestSurface` |
86
- | `@aotter/mantle/bun` | `bunSqliteStorage`, `bunSqliteDriver`, `bunAdminAssets` |
87
- | `@aotter/mantle/testing` | `runStorageConformance`, the dialect compliance suite |
88
- | `@aotter/mantle-ui` | the root (React operation components and the controller), `/controller`, `/kit`, `/kit.css`, `/tokens.css`, `/mcp-app` (`mantleAppHtml`, the App `planApp` serves), and the prebuilt Admin console in `dist/admin` (exported as `./admin/index.html`), which the preset serves at `/admin` |
89
-
90
- A subpath that is not imported is never loaded: a service with identity
91
- `none` bundles no Better Auth, and no Worker bundles the SQL parser.
92
-
93
- ## CLI
94
-
95
- `mantle generate [--manifests <dir>] [--features <list>] [--identity <kind>] [--host <host>] [--dialect <name>]`
96
- and `mantle generate --check [--database <file>]`. See
97
- [Project layout and CLI](../start/project-and-cli.md).
1
+ # Generated surfaces
2
+
3
+ - The app mounts generated modules and passes `{ db, caller }`; `caller(request, env, { readOnly })`
4
+ is the app's own `resolveCaller(...)` call. There is no generated `service.ts`,
5
+ routing framework or Better Auth wrapper.
6
+ - REST retains public `GET /api/views/<name>` (and bodyless HEAD) with declared query input plus
7
+ `limit` and `cursor`, answering `{ rows, nextCursor? }`. HTTP Triggers retain
8
+ their own method/path; JSON bodies and path parameters form the Procedure
9
+ input and responses contain its result. Errors remain
10
+ `{ error: { code, message, path } }` with the 0.2 status. Cookie sessions cannot
11
+ mutate across origins.
12
+ - MCP retains public `POST /mcp`, admin `POST /mcp/admin`,
13
+ snake-cased View names on each declared surface, and snake-cased Procedure
14
+ names per MCP Trigger. Its SDK loads only through a request-time dynamic import.
15
+ - HTTP/MCP Triggers declare exposure only. `mantle generate` refuses schedule
16
+ and lifecycle Triggers; Cloud scheduling is a separate capability.
17
+ - Native Admin retains selected 0.2 paths and the console contracts; see
18
+ [Native Admin](../guides/native-admin.md) for app-mounted
19
+ `adminBindings()` and `entries(bindings.schemas, bindings.adapter)`.
20
+
21
+ Generated `rest.ts`, `mcp.ts`, `web.ts`, `paged/views/*` and `validation/*` hold
22
+ only the app's tables: routes, tools, pages, operation bindings, compiled input
23
+ checks and types. Request handling (matching, body and query decoding, dispatch,
24
+ challenges, JSON-RPC, web rendering, keyset paging) lives in the package's
25
+ `rest`, `mcp`, `web`, `paging` and `validation` kernel modules, so a runtime fix
26
+ ships as a package update instead of a regeneration.
27
+
28
+ The generated `validation/views/<name>.ts` and
29
+ `validation/procedures/<name>.ts` export `validate(unknown)`. View validators
30
+ also export `query(URLSearchParams)` returning `{ input, limit?, cursor? }`.
31
+ REST and MCP use the same generated checks, with no runtime schema interpreter.
32
+ Supported checks are types/unions and nullable, required/properties/additionalProperties,
33
+ arrays/items and length bounds, enum, `const`, local `$defs`/`$ref`, string length/pattern,
34
+ numeric bounds/`multipleOf`, and the formats `date`, `date-time`, `email` and `uri`. The deliberately permissive
35
+ email check requires exactly one `@`, non-empty local and domain parts, and no
36
+ whitespace; it does not require a dot, verify deliverability, or implement full
37
+ RFC mailbox syntax. `uri` means an absolute `http:` or `https:` URL, stricter than
38
+ JSON Schema's any-scheme URI, so `javascript:` and `data:` links fail. Integers must be safe; fractional
39
+ `multipleOf` uses a 1e-9 quotient tolerance. Defaults remain
40
+ annotations and are not inserted into request input.
41
+
42
+ View and Procedure input objects (not Schemas or outputs) also take three rules
43
+ between their declared properties, each failing with one `INPUT_VALIDATION_FAILED`
44
+ error whose message names the rule:
45
+
46
+ - `dependentRequired: { weight: [unit] }`: "'unit' is required when 'weight' is
47
+ present.", at the missing field.
48
+ - `anyOf` whose every branch is exactly `{ required: [...] }`: "At least one of
49
+ 'weight', 'heightCm' is required.", at the object.
50
+ - `if: { properties: { undo: { const: true } }, required: [undo] }` with `then`
51
+ and/or `else` each exactly `{ required: [...] }`: "'item' is required unless
52
+ 'undo' is true.", at the missing field. `if` must list its field in `required`:
53
+ otherwise an absent field would satisfy it.
54
+
55
+ Any other `anyOf`/`if`/`then`/`else`, `oneOf`, `uniqueItems`, object property-count
56
+ bounds and other keywords and formats are refused at generation. The rules only
57
+ validate: types, SQL binds and Admin forms keep the declared fields, and Admin
58
+ shows the server's error at its field. `describe` keeps them as written; MCP and
59
+ WebMCP tools advertise the schema without them and append each rule's sentence to
60
+ the tool description, since some model APIs refuse these keywords in a tool's
61
+ input schema. [Trigger](trigger.md#input-rules) has an example.
62
+
63
+ Native `paged/views/<name>.ts` has a default export, callable as
64
+ `page(db, caller, input, { limit?, cursor? })` after importing it as `page`,
65
+ answering `{ rows, nextCursor? }`.
66
+ Bare `views/<name>.ts` retains native row arrays and accepts app-validated input;
67
+ selecting neither boundary adds no validation or paging work to that query.
68
+ Selected REST/MCP/Admin responses convert declared integer columns on every target
69
+ to safe numbers or exact decimal strings. Their SQL reads integers as text before
70
+ driver conversion; integer cursor keys retain that precision without changing native
71
+ sort order. `views/<name>.ts` also exports `WireRow` for selected transport
72
+ boundaries; declared wire fields agree across targets. Declared SQLite/D1
73
+ JSON/boolean columns become JSON values and booleans. Aliases follow generated
74
+ source-column lineage; computed values and Procedure/ref results retain
75
+ their contracts. Native integer bigint cursor keys are serialized separately.
76
+ REST/MCP use separate `paged/wire/views/<name>.ts` SQL when declared integers
77
+ require exact transport projections. Web pages and internal paged Views keep
78
+ driver-native rows. Internal paging creates no public route/tool.
79
+ Authored SQL `LIMIT` bounds the complete ordered row set, including across cursor pages.
80
+ Use `limit` in the paging options to choose each page size (up to 500); it does not expand the View's declared result set.
81
+ An MCP View page keeps the `limit` of 1 to 500 but holds only as many of those rows
82
+ as fit 60,000 characters of JSON, so a result stays under host truncation limits. It
83
+ is cut before the first row that overflows and its next cursor resumes at that row.
84
+ A single row over the budget is returned alone with the cursor, and a View without an
85
+ order stays one whole page; a page still over the budget carries a notice that hosts
86
+ may truncate it.
87
+ A pageable Schema View has a complete NOT NULL scalar tuple ending in the
88
+ compiler's `id` tiebreak. Its ordered columns must match an index after fixed
89
+ equality prefixes; a user-field `IN` scope or restrict is not one (see
90
+ [index prefixes](schema.md#index-prefixes-for-paged-views)); multiple columns and mixed directions
91
+ retain the authored order. CTE projections preserve the proof; joins must have a
92
+ proved singleton side, or equality on the joined Schema's `id` or single-field
93
+ unique key, so the base id cannot fan out. LEFT JOIN accepts nullable or missing
94
+ base references while preserving the base order/key tuple; joined fields remain
95
+ nullable cursor keys. Refusals identify the nullable key, missing ORDER BY index,
96
+ or fanning join and state a remedy. Relation aliases and nested CTE
97
+ bindings keep their own identity; same-Schema aliases are not interchangeable.
98
+
99
+ Grouped Views use every GROUP BY key as the tiebreak, with known non-null scalar
100
+ keys; unfiltered, non-windowed `min`/`max` of a non-null column retain its native cursor type. Paging a
101
+ grouped result does not avoid the native grouping/source scan. Authors own source
102
+ predicate indexes and should inspect EXPLAIN for their workload. Nullable,
103
+ unknown and JSON order expressions and unproved fanout remain refused.
104
+ Trusted system reads retain their all-scope SQL: without an actual scope
105
+ predicate, a scope-first index is not a proved range scan and native sorting or
106
+ scanning may be needed. Caller equality-prefix proofs do not claim otherwise.
107
+
108
+ Proved singletons (scalar/aggregate queries, unique-id lookups and singleton
109
+ sources) run bounded first-page SQL, reject cursors and refuse overflow.
110
+ Internal Views receive directly imported paged modules only when the same proofs
111
+ hold; they gain no public route or tool. Their bare modules remain available for
112
+ other native SQL and return full authored-query arrays.
113
+
114
+ Cursors reuse the Store's percent-encoded JSON keyset codec. Selected View
115
+ cursors include operation provenance; malformed, foreign and
116
+ null-key cursors fail with `INPUT_VALIDATION_FAILED`. Each generated key has a
117
+ scalar check; temporal keys keep database microseconds. Existing one/two-key
118
+ formats and Store cursors are preserved; larger View tuples contain their full
119
+ key list followed by operation provenance. They are opaque navigation
120
+ values, not credentials; authorization and row predicates run on every page.
121
+
122
+ ## Mounting REST
123
+
124
+ `rest.ts` exports `rest({ db, caller })`, returning an async
125
+ `(request, env) => Response | undefined`. The app supplies its native handle and
126
+ verified Caller; requests outside `/api` fall through to the app. Public Views
127
+ use `/api/views/<name>`; HTTP Triggers keep their declared method and path.
128
+ Known paths with another method return 405 with an `Allow` header. All responses use
129
+ `cache-control: private, no-store`. JSON bodies and decoded path parameters
130
+ are validated together, with path parameters taking precedence. Bodies larger
131
+ than 1,000,000 bytes are refused; `content-length` is checked before reading.
132
+ A resolver's `ContractError` keeps its status (an expired token is 401 with its challenge); any other resolver exception returns a redacted 500. Cookie-origin refusals retain
133
+ `path: "request:origin"`; REST and MCP share the kernel check.
134
+
135
+ When the manifest declares ref Procedures, pass the generated `Handlers` as
136
+ `rest({ db, caller, handlers })`; the option is type-required. Handler dispatch
137
+ uses the generated Store, preserving the Procedure's authorization contract.
138
+ Publishing visibility belongs to generated SQL; the REST module adds no status
139
+ filter. The app retains ownership of authentication and its other routes.
140
+
141
+ ## Optional web output
142
+
143
+ `web.ts` exports `web({ db, caller, origin, title, description, locales?, pages,
144
+ cacheControl? })`. `db` is the application-owned native handle, including callable
145
+ PostgreSQL handles. `caller` is a verified Caller or the app's
146
+ `(request, env, { readOnly }) => Caller | Promise<Caller>` resolver, evaluated once per request.
147
+ Generated REST/MCP/web callbacks classify reads; forward the third argument to
148
+ `resolveCaller` to permit an enabled cookie cache, as documented in
149
+ [authentication](../cloudflare/authentication.md#explicit-read-only-cookie-snapshots).
150
+ The module dispatches public Views only; it never invokes Procedures or needs handlers.
151
+
152
+ ```ts
153
+ import { web } from './generated/web.js';
154
+ const site = web({ db, caller, origin: 'https://example.com', title: 'Blog',
155
+ description: 'Articles', locales: ['en'],
156
+ pages: { '/posts/{slug}': { view: 'post-by-slug', list: 'posts', markdown: 'body' } }
157
+ });
158
+ const response = await site.fetch(request, env); // Response | undefined
159
+ const tags = await site.head(request, env); // HTML string, empty for unknown/missing pages
160
+ ```
161
+
162
+ Page parameter names must exactly match the View's declared input properties.
163
+ Page and list Views must return the page parameters; list Views must accept empty input: no
164
+ `required`, no root `anyOf`, `enum` or `const`, no `else` rule, and a root `type`, when given, that includes `object`.
165
+ These conditions also apply to each schema a root `$ref` chain reaches, and an unresolved or cyclic chain fails them.
166
+ `web()` throws a `TypeError` for any other list View. Markdown
167
+ must name a textual output column. HTML remains application-owned.
168
+
169
+ `/llms.txt` and `/sitemap.xml` traverse each list's `nextCursor`; `.md` and head
170
+ read the current page View. SQL alone controls visibility, including publication.
171
+ GET/HEAD responses include content-derived SHA-256 ETags. Anonymous responses use
172
+ `cacheControl` or `public, max-age=60`; authenticated responses use
173
+ `private, no-store`. `If-None-Match` returns 304 only after current content is read.
174
+ Canonical URLs use the configured origin, independently of the request host.
175
+ The current implementation adds hreflang only for `locales[0]`; translation-aware
176
+ indexes and head tags are a follow-up below. Importing another generated entry
177
+ does not import web output.
178
+
179
+ Web indexes scan at most 50,000 rows for one sitemap and 5,000 for `llms.txt`,
180
+ across all configured lists. Skipped `.`/`..` path segments consume the scan
181
+ budget too. Output stops before exceeding 50 MiB of UTF-8 sitemap XML (including
182
+ its closing tag) or 1 MiB of `llms.txt`; a sitemap index can be added separately.
183
+ Each request also stops after 100 sitemap queries or 10 `llms.txt` queries,
184
+ across all templates. Small authored SQL LIMITs or many templates can truncate
185
+ output sooner. A sitemap index remains separate future work.
186
+
187
+ `head` normalizes URLs from the queried row's page parameters, matching sitemap
188
+ URLs; malformed paths, failed validation and unavailable rows return an empty
189
+ string. A NULL Markdown field answers 404. Errors and missing Markdown responses
190
+ use `cache-control: no-store`. A matching HTML page takes precedence over a `.md`
191
+ alternate, including slugs ending in `.md`; a Markdown alternate may read the
192
+ exact HTML candidate first and therefore performs at most two View queries.
193
+
194
+ ## Mounting MCP
195
+
196
+ Mount the generated `mcp({ db: env => env.DB, caller })` handler in the app's
197
+ Fetch entry. It returns `undefined` outside `/mcp` and `/mcp/admin`. Install the
198
+ optional official `@modelcontextprotocol/server` peer when selecting MCP; its
199
+ transport loads on the first matching request. Pass `handlers` when ref
200
+ Procedures are declared, as for REST. Admin tools are listed only on the admin
201
+ endpoint, and publishing visibility belongs to the generated SQL.
202
+
203
+ `apps.public` and `apps.admin` accept a `McpAppsSource` or an array mixing static
204
+ contributors with async `({ env, request }) => McpApps` factories. Static resources
205
+ are checked once at construction; factories resolve only after the endpoint's
206
+ origin and caller gates, and their resource identities and ownership are checked
207
+ on each request even when the tool names are unchanged.
208
+
209
+ Discovery is caller-independent by default (ADR-0014); listing a tool grants no
210
+ execution authority. Configure `authorize` to filter `tools/list` and the tool
211
+ names supplied to resource HTML loaders: that mode also excludes tools refused
212
+ by declared identity, scope and `check` requirements. Without `authorize`, the
213
+ complete endpoint catalogue is not a permission-filtered catalogue. Operation
214
+ validation, guards and credential checks still apply to calls.
215
+
216
+ The app resolves bearer tokens with `resolveCaller(request, auth, { audience:
217
+ new URL('/mcp', request.url).href })` (both surfaces use `<origin>/mcp`). The app
218
+ must also mount Better Auth's `/.well-known/oauth-protected-resource/mcp`
219
+ metadata route. Auth challenges point to that route. Presented bearer credentials
220
+ need the `mcp` scope; cookie sessions use the same-origin mutation checks.
221
+
222
+ Generation emits `mcp.ts` only for a non-internal View or MCP Trigger. These
223
+ surfaces typecheck without the optional `@modelcontextprotocol/server` peer;
224
+ install the exact version declared in the installed SDK's `peerDependencies`.
225
+ The peer loads by dynamic import on the first matching `/mcp` request; if
226
+ missing, that request fails at runtime. Publishing alone does not select MCP;
227
+ on a selected
228
+ surface its generated `publish_<schema>`, `unpublish_<schema>` and
229
+ `archive_<schema>` tools use the same snake-case naming rule, are admin-only
230
+ and take `{ id, expectedVersion }` through the shared generated validation.
231
+
232
+ `/mcp/admin` admits only admins: `isAdmin(caller)` must hold. Better Auth’s admin plugin `adminRoles` defines this layer (default `["admin"]`); the application supplies its verified Caller. MCP bodies are limited
233
+ to 1 MiB (1,048,576 bytes). Resource metadata challenges use the origin of
234
+ `request.url`; behind a proxy, the app must pass a Request with its public
235
+ origin so the audience and metadata URL point to the client-visible service.
236
+
237
+ Selected integer cursor keys may be exact canonical decimal strings on either dialect; SQLite cursor binds are cast to INTEGER so grouped expressions and native columns compare the same value; they are bounded to the declared integer range. This applies to cursor metadata only and does not change bare query or Store integer outputs, or recover integers already rounded by a native driver. `validCursor` is shared with selected boundary adapters.
238
+
239
+ Cursor casts target only proved AST bind nodes, preserving authored SQL literals. Paging proofs respect the compiler's lexical table/CTE identity. Explicit CTE or relation column renaming is currently refused for paging because uniqueness has not been proved through those aliases; internal bare queries remain available.
240
+
241
+ A paged View's output names must not collide with its actual hidden cursor keys (`_k0` through `_kN-1`); SQLite compares aliases without case sensitivity. Such internal Views keep their bare entry but receive no paged entry. Other output names remain available.
242
+
243
+ ## Selected Admin bindings
244
+
245
+ See [Native Admin](../guides/native-admin.md) for the single
246
+ current contract: three packages, explicit generation and app mounting, shared
247
+ whitelisted get/page/statistics templates, native Procedure fragments, generated
248
+ input checks, exact OCC and optional capabilities. These features are implemented
249
+ as an explicit option.
250
+
251
+
252
+ ### MCP catalogue and callbacks
253
+
254
+ `mcp({ db, caller, handlers?, locale?, instructions?, serverInfo?, requiredScopes?,
255
+ resourceMetadata?, allowedOrigins?, onObservation?, onRefusal? })` keeps the SDK behind its first
256
+ request. Locale defaults to `en`; localized titles/descriptions fall back to
257
+ English, then their first entry. Tools carry the [tool hints](procedure.md#mcp-tool-hints). `instructions` is returned by initialize.
258
+ The scope floor defaults to `["mcp"]` for every credential except cookie sessions;
259
+ `requiredScopes: []` disables that floor. An anonymous closed surface challenges
260
+ from initialize, and every call in a batch is checked before any call runs.
261
+ `resourceMetadata` overrides the challenge URL for reverse proxies.
262
+
263
+ Both endpoints answer a request without `Origin`, which is what server-side MCP
264
+ clients send; a bearer credential needs none. A cookie session is ambient authority, so
265
+ `checkOrigin` also guards it: on a request that is not GET, HEAD or OPTIONS, at least one of
266
+ `Origin` and `Sec-Fetch-Site` must be present and every present one must agree (`Origin` equal
267
+ to the request's own origin; `Sec-Fetch-Site` `same-origin` or `none`), else `AUTH_DENIED` at
268
+ `request:origin`. On MCP it runs only for a tool call that executes (not a read-only call from an
269
+ App host), not for initialize or `tools/list`; `allowedOrigins` does not lift it. A present `Origin` marks a browser: it must name a loopback host
270
+ (`localhost`, `127.0.0.1`, `[::1]`, any port) or an `allowedOrigins` entry, else
271
+ 403 before authentication on every credential; `Origin: null` is refused. The
272
+ site's own origin is not implied, because a DNS-rebinding page sends an `Origin`
273
+ equal to the `Host` it rebound, so a browser client served from your deployed
274
+ site lists that origin: `allowedOrigins: ["https://app.example"]`. Entries are
275
+ compared by hostname as the official SDK does (not scheme or port); each is a
276
+ full origin (`https://console.example`) or the SDK's bare host
277
+ (`console.example`, `localhost:8787`), and anything else, such as a path, throws
278
+ when `mcp(...)` is configured; so does a wildcard such as `*` or
279
+ `https://*.example.com`, since entries are matched by exact hostname. `Host` is
280
+ not checked. Cookie writes also need the full same-origin check.
281
+
282
+ `/mcp` sends no CORS headers. `allowedOrigins` therefore serves pages on the
283
+ same origin as the endpoint, or clients behind a proxy that forwards their
284
+ `Origin`; a browser client on another origin also needs the app to answer
285
+ preflight and add CORS headers itself. Under `wrangler dev` with `routes` or
286
+ `dev.host`, Miniflare rewrites an `Origin` equal to the request's own origin to
287
+ the route or `dev.host` origin, and a DNS-rebinding request always has that
288
+ shape. Listing that host would admit rebinding against the local server, so keep
289
+ the route and `dev.host` hosts out of `allowedOrigins` in local development.
290
+
291
+ `onObservation` receives request refusals and invocation attempt/completion
292
+ metadata, including duration and outcome. Its Caller and scopes are frozen copies.
293
+ `onRefusal` receives credential/origin refusals. Neither callback receives request
294
+ headers, bodies or tokens; delivery failures never change the business response
295
+ and promises are not awaited. The application owns callback delivery.
296
+
297
+ **Procedure output:** SQL Procedures retain the native `{ results }`
298
+ contract rather than 0.2's authored output projection/validation; MCP advertises
299
+ that object envelope, not the incompatible authored schema. Ref Procedures expose
300
+ the application's typed return value and advertise their authored object output
301
+ schema. The application owns ref output validation. MCP does not decode or
302
+ revalidate native database rows. Business failures carry diagnostics in text;
303
+ with an output schema they omit `structuredContent` to avoid validating an error
304
+ against a success schema. Without one they also expose diagnostic structured
305
+ content. MCP adds no prompts or non-UI resources.
306
+
307
+ ### Tool versions
308
+
309
+ Each generated tool (MCP, media, publishing and WebMCP) carries `version`, a
310
+ short hash computed by `mantle generate` of the definition as listed: name,
311
+ title, description without the marker, input schema (a View tool's with its
312
+ `limit` and `cursor` paging properties), output schema and annotations. A
313
+ localized title or description is hashed with all its locales. The description
314
+ ends with `(tool version <version>)`, so an unchanged tool keeps a
315
+ byte-identical description across deploys.
316
+
317
+ MCP results of a call that reaches the tool add a second text block,
318
+ `tool version <version>`; failures other than authorization refusals append
319
+ `; input schema <JSON>`, the input schema the tool is listed with.
320
+ `structuredContent` is unchanged. A `tools/call` naming a tool the endpoint
321
+ serves but the caller may not use is answered by the authentication or
322
+ authorization challenge (HTTP 401 or 403) before the SDK's transport and
323
+ request checks, even though that caller's `tools/list` omits the tool. A
324
+ `tools/call` naming a tool not in the endpoint's catalogue, in a batch or not
325
+ and from a host caller too, is answered with JSON-RPC error `-32602` and the
326
+ message
327
+ `No tool named "<name>" exists in the current catalogue (catalogue version <serverInfo.version>).`
328
+ For such a name the SDK's transport and request checks (headers, protocol
329
+ version, JSON-RPC shape) answer first, so a malformed request gets the same
330
+ refusal as one naming a served tool the caller may use.
331
+ Unless `serverInfo.version` is given, the kernel's `mcp()` sets it to
332
+ a hash of the `surface:name:version` of every tool the endpoint serves, before
333
+ per-caller filtering, so `/mcp` and `/mcp/admin` each report their own catalogue
334
+ version, and it changes when a generated tool's definition changes or a tool is
335
+ added or removed, however the tools are wired.
336
+
337
+ `POST /admin/api/webmcp/{tool}` returns `{ output, version }`. A refusal's
338
+ diagnostic adds `toolVersion`, and `inputSchema` unless it is an authorization
339
+ refusal; internal errors and refusals before the call carry neither. Admin's
340
+ WebMCP results repeat these as the same text block MCP adds. The navigation
341
+ tools `admin_get_context` and `admin_navigate` have no version. Tools an
342
+ application adds itself carry a version only if it sets one. Why: [MCP and
343
+ agents](../concepts/mcp-and-agents.md#when-a-host-shows-old-tools).
344
+
345
+ ### Declared View scalars on the wire
346
+
347
+ REST and MCP View pages expose declared JSON columns as JSON values and declared
348
+ boolean columns as booleans, including explicitly authored SQL aliases. SQLite
349
+ and D1 conversions are compiled into only the selected boundary pages;
350
+ PostgreSQL already-native JSON/boolean values pass through. SQL NULL stays null and absent
351
+ fields stay absent. Expressions without declared column lineage stay native.
352
+ Malformed persisted JSON becomes a redacted internal failure. The conversion
353
+ adds no database operations and does not mutate native query rows.
354
+
355
+ Bare Views, Store rows, native SQL Procedure `{ results }` and application-owned
356
+ ref outputs retain their native contracts. Use the generated `rest()` / `mcp()`
357
+ module for this client wire contract; do not duplicate JSON/boolean decoding in
358
+ application route handlers or decode PostgreSQL JSON strings a second time.
359
+
360
+ Declared integer columns (including a selected system `version`) on every target
361
+ use the wire form: safe integers become JSON numbers; unsafe values remain exact
362
+ decimal text. Selected-boundary SQL casts integers to text before driver conversion,
363
+ preserving stored int64 values on D1 too. Values already rounded when written
364
+ (e.g. by a JavaScript number) cannot be recovered. Computed outputs and native
365
+ SQL Procedure/ref results retain their native values.
366
+ Unexpected surface failures log only a stable wire classification.
367
+
368
+ MCP locale fallback reads only own locale entries, then English, then the first
369
+ own entry; inherited property names never become titles or descriptions.
370
+
371
+ ### Admin media MCP tools
372
+
373
+ With generated site configuration, `mcp({ db, caller, media: env => storage })`
374
+ loads the media module only on a configured admin MCP request and
375
+ adds `get_media_upload_policy`, `create_media_upload`, `commit_media_upload`,
376
+ `list_media_assets`, `get_media_asset`, `update_media_asset` and
377
+ `delete_media_asset` to `/mcp/admin` only. `storage` is the same `MediaStorage`
378
+ used by the Admin media library. Omitting `media` omits all seven tools.
379
+ Admins can invoke them; cookie writes retain the origin check.
380
+ Generated boundary code checks each input and advertises the 0.2 schemas and
381
+ read-only/destructive/open-world hints. Image bytes are PUT directly to the
382
+ returned short-lived URLs with their required headers, then committed; bytes
383
+ never enter MCP. Store permanent asset ids, never upload URLs.
384
+
385
+ Generation always emits a `Handlers` type (empty when no Procedure uses `handler: { ref }`), so every app wires the
386
+ same way: `const handlers: Handlers = {...}`, then `store(db, caller, { handlers })`, `adminBindings({ handlers })`,
387
+ `rest({ ...options, handlers })`, `mcp({ ...options, handlers })` and `webmcpRoutes(catalogue, tools, handlers)`.
388
+ Type extra hand-written tools as `Tool<Handle, Handlers>` with the generated `Handlers` before combining them with
389
+ the generated `tools`. Handler-less apps may still omit `{ handlers }` at `store()` and `adminBindings()`.