@aotter/mantle 0.2.0-alpha.5 → 0.2.0-alpha.7

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 (932) hide show
  1. package/README.md +152 -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 +154 -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 +31 -0
  13. package/dist/auth/oauth.js +124 -0
  14. package/dist/auth/resource-seeds.js +10 -0
  15. package/dist/auth/routes.d.ts +32 -0
  16. package/dist/auth/{createAuthRoutes.js → routes.js} +130 -35
  17. package/dist/build/compiler.d.ts +790 -0
  18. package/dist/build/compiler.js +6971 -0
  19. package/dist/{spec → build/spec}/domain/model/ManifestGrammar.d.ts +28 -42
  20. package/dist/{spec → build/spec}/domain/model/RuntimePlan.d.ts +77 -3
  21. package/dist/{spec → build/spec}/domain/model/SqlIr.d.ts +35 -6
  22. package/dist/build/spec/domain/model/UserFields.d.ts +20 -0
  23. package/dist/{spec → build/spec}/domain/service/PlanFingerprint.d.ts +2 -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-ZIQVLA7X.js +363 -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 +17 -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 +204 -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 +84 -0
  50. package/dist/infrastructure/cli.js +101 -0
  51. package/dist/infrastructure/generate.d.ts +14 -0
  52. package/dist/infrastructure/generate.js +174 -0
  53. package/dist/infrastructure/generateAuth.d.ts +8 -0
  54. package/dist/infrastructure/generateAuth.js +17 -0
  55. package/dist/infrastructure/inputs.js +36 -0
  56. package/dist/infrastructure/wrangler.js +71 -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/driver/bun-sqlite.d.ts +19 -0
  76. package/dist/kernel/driver/bun-sqlite.js +77 -0
  77. package/dist/kernel/driver/d1.d.ts +24 -0
  78. package/dist/kernel/driver/d1.js +22 -0
  79. package/dist/kernel/driver/postgres.d.ts +25 -0
  80. package/dist/kernel/driver/postgres.js +95 -0
  81. package/dist/kernel/driver/transaction-context.d.ts +10 -0
  82. package/dist/kernel/driver/transaction-context.js +29 -0
  83. package/dist/kernel/email.d.ts +28 -0
  84. package/dist/{auth/emailTemplates.js → kernel/email.js} +13 -2
  85. package/dist/kernel/host-access.d.ts +10 -0
  86. package/dist/kernel/host-access.js +65 -0
  87. package/dist/kernel/host-caller.d.ts +38 -0
  88. package/dist/kernel/host-caller.js +55 -0
  89. package/dist/kernel/json-body.d.ts +4 -0
  90. package/dist/kernel/json-body.js +44 -0
  91. package/dist/kernel/mcp-apps.d.ts +49 -0
  92. package/dist/kernel/mcp-apps.js +40 -0
  93. package/dist/kernel/mcp-call.d.ts +5 -0
  94. package/dist/kernel/mcp-call.js +25 -0
  95. package/dist/kernel/mcp-handler.js +288 -0
  96. package/dist/kernel/mcp.d.ts +101 -0
  97. package/dist/kernel/mcp.js +25 -0
  98. package/dist/kernel/media.d.ts +27 -0
  99. package/dist/kernel/media.js +216 -0
  100. package/dist/kernel/paging.d.ts +55 -0
  101. package/dist/kernel/paging.js +95 -0
  102. package/dist/kernel/publishing.d.ts +4 -0
  103. package/dist/kernel/publishing.js +16 -0
  104. package/dist/{cloudflare/r2Media.d.ts → kernel/r2-media.d.ts} +4 -5
  105. package/dist/kernel/r2-media.js +78 -0
  106. package/dist/kernel/rest-dispatch.js +38 -0
  107. package/dist/kernel/rest-router.js +63 -0
  108. package/dist/kernel/rest.d.ts +58 -0
  109. package/dist/kernel/rest.js +41 -0
  110. package/dist/kernel/scalars.d.ts +6 -0
  111. package/dist/kernel/scalars.js +43 -0
  112. package/dist/kernel/search.js +5 -0
  113. package/dist/{core/site.d.ts → kernel/site-types.d.ts} +38 -9
  114. package/dist/kernel/site-types.js +1 -0
  115. package/dist/kernel/site.d.ts +41 -0
  116. package/dist/kernel/site.js +32 -0
  117. package/dist/kernel/store.d.ts +165 -0
  118. package/dist/kernel/store.js +257 -0
  119. package/dist/kernel/surface.d.ts +10 -0
  120. package/dist/kernel/surface.js +19 -0
  121. package/dist/kernel/sweep.d.ts +17 -0
  122. package/dist/kernel/sweep.js +27 -0
  123. package/dist/kernel/translations.d.ts +1 -0
  124. package/dist/kernel/translations.js +13 -0
  125. package/dist/kernel/user-caller.d.ts +31 -0
  126. package/dist/kernel/user-caller.js +67 -0
  127. package/dist/kernel/user-field-name.js +3 -0
  128. package/dist/kernel/user-fields.d.ts +34 -0
  129. package/dist/kernel/user-fields.js +71 -0
  130. package/dist/kernel/validation.d.ts +15 -0
  131. package/dist/kernel/validation.js +54 -0
  132. package/dist/kernel/web-gateway.js +68 -0
  133. package/dist/kernel/web-head.js +15 -0
  134. package/dist/kernel/web-response.js +8 -0
  135. package/dist/kernel/web.d.ts +75 -0
  136. package/dist/kernel/web.js +155 -0
  137. package/dist/kernel/where.js +27 -0
  138. package/dist/testing/index.d.ts +1 -37
  139. package/dist/testing/index.js +1 -43
  140. package/dist/usecase/adminBindings.js +142 -0
  141. package/dist/usecase/adminDescriptors.js +153 -0
  142. package/dist/usecase/generate.js +164 -0
  143. package/dist/usecase/handlers.js +21 -0
  144. package/dist/usecase/mcp-media.js +17 -0
  145. package/dist/usecase/mcp.js +96 -0
  146. package/dist/usecase/paging.js +72 -0
  147. package/dist/usecase/publishing.js +63 -0
  148. package/dist/usecase/refusals.js +27 -0
  149. package/dist/usecase/rest.js +54 -0
  150. package/dist/usecase/search.js +7 -0
  151. package/dist/usecase/site.js +40 -0
  152. package/dist/usecase/stores.js +62 -0
  153. package/dist/usecase/translations.js +78 -0
  154. package/dist/usecase/ttl.js +20 -0
  155. package/dist/usecase/validation.js +132 -0
  156. package/dist/usecase/web.js +22 -0
  157. package/docs/examples/README.md +31 -16
  158. package/docs/examples/app-shell/README.md +48 -0
  159. package/docs/examples/app-shell/package.json +34 -0
  160. package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
  161. package/docs/examples/app-shell/smoke-kit.mjs +100 -0
  162. package/docs/examples/app-shell/src/admin.ts +10 -0
  163. package/docs/examples/app-shell/src/auth.ts +55 -0
  164. package/docs/examples/app-shell/src/handlers.ts +5 -0
  165. package/docs/examples/app-shell/src/index.ts +4 -0
  166. package/docs/examples/app-shell/src/routes.ts +13 -0
  167. package/docs/examples/app-shell/src/schedule.ts +8 -0
  168. package/docs/examples/app-shell/src/service.ts +70 -0
  169. package/docs/examples/app-shell/src/sign-in.ts +41 -0
  170. package/docs/examples/app-shell/src/signup.ts +8 -0
  171. package/docs/examples/{reference-service → app-shell}/tsconfig.json +2 -1
  172. package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
  173. package/docs/examples/app-shell/wrangler.jsonc +61 -0
  174. package/docs/examples/club-events/README.md +60 -0
  175. package/docs/examples/club-events/manifests/club-events.yaml +225 -0
  176. package/docs/examples/club-events/smoke.mjs +121 -0
  177. package/docs/examples/club-events/src/handlers.ts +25 -0
  178. package/docs/examples/club-events/src/signup.ts +9 -0
  179. package/docs/examples/generated-web/README.md +74 -0
  180. package/docs/examples/generated-web/posts.yaml +38 -0
  181. package/docs/examples/generated-web/seed.sql +6 -0
  182. package/docs/examples/generated-web/src/worker.ts +43 -0
  183. package/docs/examples/generated-web/tsconfig.json +8 -0
  184. package/docs/examples/generated-web/wrangler.jsonc +7 -0
  185. package/docs/examples/purchasing/.dev.vars.example +6 -0
  186. package/docs/examples/purchasing/README.md +90 -0
  187. package/docs/examples/purchasing/manifests/purchasing.yaml +341 -0
  188. package/docs/examples/purchasing/seed.sql +4 -0
  189. package/docs/examples/purchasing/smoke.mjs +171 -0
  190. package/docs/examples/purchasing/src/admin.ts +12 -0
  191. package/docs/examples/purchasing/src/handlers.ts +33 -0
  192. package/docs/examples/purchasing/src/notify.ts +29 -0
  193. package/docs/examples/purchasing/src/requests-page.ts +57 -0
  194. package/docs/examples/purchasing/src/routes.ts +53 -0
  195. package/docs/examples/purchasing/src/schedule.ts +31 -0
  196. package/docs/examples/purchasing/src/signup.ts +5 -0
  197. package/docs/examples/purchasing/src/supplier.ts +32 -0
  198. package/docs/examples/purchasing/wrangler.jsonc +68 -0
  199. package/docs/examples/recipes/README.md +58 -0
  200. package/docs/examples/recipes/manifests/recipes.yaml +75 -0
  201. package/docs/examples/recipes/smoke.mjs +102 -0
  202. package/docs/examples/recipes/src/media.ts +13 -0
  203. package/docs/examples/recipes/src/pages.ts +99 -0
  204. package/docs/examples/recipes/src/routes.ts +71 -0
  205. package/docs/examples/recipes/src/site-config.ts +12 -0
  206. package/docs/examples/recipes/wrangler.jsonc +73 -0
  207. package/docs/handbook/cloudflare/authentication.md +142 -212
  208. package/docs/handbook/cloudflare/chatgpt-sites.md +4 -113
  209. package/docs/handbook/cloudflare/deploy-and-operate.md +20 -103
  210. package/docs/handbook/cloudflare/media-r2.md +62 -133
  211. package/docs/handbook/cloudflare/service-entry.md +180 -116
  212. package/docs/handbook/concepts/authorization.md +10 -123
  213. package/docs/handbook/concepts/four-atoms.md +9 -92
  214. package/docs/handbook/concepts/lifecycle-and-locales.md +9 -80
  215. package/docs/handbook/concepts/mcp-and-agents.md +10 -141
  216. package/docs/handbook/concepts/procedures-and-triggers.md +5 -162
  217. package/docs/handbook/concepts/runtime-and-adapters.md +15 -183
  218. package/docs/handbook/concepts/views.md +10 -109
  219. package/docs/handbook/examples/hub.md +2 -18
  220. package/docs/handbook/guides/adapter-guide.md +11 -0
  221. package/docs/handbook/guides/admin-extensions.md +20 -0
  222. package/docs/handbook/guides/admin-ui.md +5 -163
  223. package/docs/handbook/guides/agent-setup.md +5 -18
  224. package/docs/handbook/guides/email.md +86 -0
  225. package/docs/handbook/guides/mcp-apps.md +44 -0
  226. package/docs/handbook/guides/native-admin.md +298 -0
  227. package/docs/handbook/guides/native-execution.md +132 -0
  228. package/docs/handbook/guides/oauth.md +105 -0
  229. package/docs/handbook/guides/postgres-adapters.md +56 -0
  230. package/docs/handbook/guides/public-pages.md +53 -0
  231. package/docs/handbook/guides/size-and-startup.md +9 -0
  232. package/docs/handbook/guides/typed-queries.md +39 -102
  233. package/docs/handbook/navigation.json +164 -30
  234. package/docs/handbook/reference/admin-descriptors.md +88 -0
  235. package/docs/handbook/reference/authorization.md +44 -52
  236. package/docs/handbook/reference/describe.md +56 -0
  237. package/docs/handbook/reference/diagnostics.md +15 -78
  238. package/docs/handbook/reference/features.md +45 -53
  239. package/docs/handbook/reference/manifest.md +6 -69
  240. package/docs/handbook/reference/procedure.md +9 -117
  241. package/docs/handbook/reference/schema.md +65 -172
  242. package/docs/handbook/reference/site-config.md +5 -65
  243. package/docs/handbook/reference/surface.md +279 -93
  244. package/docs/handbook/reference/trigger.md +24 -93
  245. package/docs/handbook/reference/view.md +32 -158
  246. package/docs/handbook/releases/index.md +124 -15
  247. package/docs/handbook/start/overview.md +9 -56
  248. package/docs/handbook/start/project-and-cli.md +40 -141
  249. package/docs/handbook/start/quickstart-worker.md +38 -116
  250. package/docs/skills/develop/SKILL.md +34 -117
  251. package/docs/skills/develop/mcp-app.md +37 -77
  252. package/docs/skills/integrate/SKILL.md +42 -84
  253. package/docs/skills/media-gc/SKILL.md +14 -3
  254. package/docs/skills/provision/SKILL.md +25 -88
  255. package/docs/skills/update/SKILL.md +19 -40
  256. package/docs/source/scripts/postgres-adapter.ts +101 -0
  257. package/docs/upgrade-0.1-to-0.2.md +26 -10
  258. package/package.json +97 -112
  259. package/skills/.keep +0 -0
  260. package/skills/README.md +72 -0
  261. package/skills/mantle/SKILL.md +135 -0
  262. package/skills/mantle/references/local-testing.md +11 -0
  263. package/skills/mantle/references/web.md +41 -0
  264. package/skills/mantle/references/website.md +47 -0
  265. package/dist/admin/consent.d.ts +0 -17
  266. package/dist/admin/consent.d.ts.map +0 -1
  267. package/dist/admin/consent.js +0 -17
  268. package/dist/admin/consent.js.map +0 -1
  269. package/dist/admin/createAdminSurface.d.ts +0 -22
  270. package/dist/admin/createAdminSurface.d.ts.map +0 -1
  271. package/dist/admin/createAdminSurface.js +0 -592
  272. package/dist/admin/createAdminSurface.js.map +0 -1
  273. package/dist/admin/design.d.ts +0 -7
  274. package/dist/admin/design.d.ts.map +0 -1
  275. package/dist/admin/design.js +0 -18
  276. package/dist/admin/design.js.map +0 -1
  277. package/dist/admin/developerConsole.d.ts +0 -267
  278. package/dist/admin/developerConsole.d.ts.map +0 -1
  279. package/dist/admin/developerConsole.js +0 -136
  280. package/dist/admin/developerConsole.js.map +0 -1
  281. package/dist/admin/identity.d.ts +0 -62
  282. package/dist/admin/identity.d.ts.map +0 -1
  283. package/dist/admin/identity.js +0 -7
  284. package/dist/admin/identity.js.map +0 -1
  285. package/dist/admin/index.d.ts +0 -6
  286. package/dist/admin/index.d.ts.map +0 -1
  287. package/dist/admin/index.js +0 -6
  288. package/dist/admin/index.js.map +0 -1
  289. package/dist/admin/procedureFlow.d.ts +0 -38
  290. package/dist/admin/procedureFlow.d.ts.map +0 -1
  291. package/dist/admin/procedureFlow.js +0 -188
  292. package/dist/admin/procedureFlow.js.map +0 -1
  293. package/dist/auth/ConsoleEmailSender.d.ts +0 -15
  294. package/dist/auth/ConsoleEmailSender.d.ts.map +0 -1
  295. package/dist/auth/ConsoleEmailSender.js +0 -19
  296. package/dist/auth/ConsoleEmailSender.js.map +0 -1
  297. package/dist/auth/appleClientSecret.d.ts +0 -75
  298. package/dist/auth/appleClientSecret.d.ts.map +0 -1
  299. package/dist/auth/appleClientSecret.js +0 -116
  300. package/dist/auth/appleClientSecret.js.map +0 -1
  301. package/dist/auth/buildAuth.d.ts +0 -4566
  302. package/dist/auth/buildAuth.d.ts.map +0 -1
  303. package/dist/auth/buildAuth.js +0 -311
  304. package/dist/auth/buildAuth.js.map +0 -1
  305. package/dist/auth/callerResolver.d.ts +0 -48
  306. package/dist/auth/callerResolver.d.ts.map +0 -1
  307. package/dist/auth/callerResolver.js +0 -49
  308. package/dist/auth/callerResolver.js.map +0 -1
  309. package/dist/auth/createAuthRoutes.d.ts +0 -22
  310. package/dist/auth/createAuthRoutes.d.ts.map +0 -1
  311. package/dist/auth/createAuthRoutes.js.map +0 -1
  312. package/dist/auth/createMantleAuth.d.ts +0 -3
  313. package/dist/auth/createMantleAuth.d.ts.map +0 -1
  314. package/dist/auth/createMantleAuth.js +0 -503
  315. package/dist/auth/createMantleAuth.js.map +0 -1
  316. package/dist/auth/db.d.ts +0 -17
  317. package/dist/auth/db.d.ts.map +0 -1
  318. package/dist/auth/db.js +0 -24
  319. package/dist/auth/db.js.map +0 -1
  320. package/dist/auth/emailTemplates.d.ts +0 -7
  321. package/dist/auth/emailTemplates.d.ts.map +0 -1
  322. package/dist/auth/emailTemplates.js.map +0 -1
  323. package/dist/auth/index.d.ts +0 -9
  324. package/dist/auth/index.d.ts.map +0 -1
  325. package/dist/auth/index.js +0 -7
  326. package/dist/auth/index.js.map +0 -1
  327. package/dist/auth/methods.d.ts +0 -717
  328. package/dist/auth/methods.d.ts.map +0 -1
  329. package/dist/auth/methods.js +0 -321
  330. package/dist/auth/methods.js.map +0 -1
  331. package/dist/auth/oauthTokens.d.ts +0 -24
  332. package/dist/auth/oauthTokens.d.ts.map +0 -1
  333. package/dist/auth/oauthTokens.js +0 -146
  334. package/dist/auth/oauthTokens.js.map +0 -1
  335. package/dist/auth/setupIncomplete.d.ts +0 -16
  336. package/dist/auth/setupIncomplete.d.ts.map +0 -1
  337. package/dist/auth/setupIncomplete.js +0 -50
  338. package/dist/auth/setupIncomplete.js.map +0 -1
  339. package/dist/auth/types.d.ts +0 -440
  340. package/dist/auth/types.d.ts.map +0 -1
  341. package/dist/auth/types.js +0 -10
  342. package/dist/auth/types.js.map +0 -1
  343. package/dist/bun/index.d.ts +0 -65
  344. package/dist/bun/index.d.ts.map +0 -1
  345. package/dist/bun/index.js +0 -130
  346. package/dist/bun/index.js.map +0 -1
  347. package/dist/cli/emitModule.d.ts +0 -7
  348. package/dist/cli/emitModule.d.ts.map +0 -1
  349. package/dist/cli/emitModule.js +0 -127
  350. package/dist/cli/emitModule.js.map +0 -1
  351. package/dist/cli/generate.d.ts +0 -8
  352. package/dist/cli/generate.d.ts.map +0 -1
  353. package/dist/cli/generate.js +0 -391
  354. package/dist/cli/generate.js.map +0 -1
  355. package/dist/cli/main.d.ts +0 -3
  356. package/dist/cli/main.d.ts.map +0 -1
  357. package/dist/cli/main.js +0 -21
  358. package/dist/cli/main.js.map +0 -1
  359. package/dist/cli/preset.d.ts +0 -18
  360. package/dist/cli/preset.d.ts.map +0 -1
  361. package/dist/cli/preset.js +0 -353
  362. package/dist/cli/preset.js.map +0 -1
  363. package/dist/cloudflare/index.d.ts +0 -21
  364. package/dist/cloudflare/index.d.ts.map +0 -1
  365. package/dist/cloudflare/index.js +0 -14
  366. package/dist/cloudflare/index.js.map +0 -1
  367. package/dist/cloudflare/r2Media.d.ts.map +0 -1
  368. package/dist/cloudflare/r2Media.js +0 -69
  369. package/dist/cloudflare/r2Media.js.map +0 -1
  370. package/dist/core/caller.d.ts +0 -35
  371. package/dist/core/caller.d.ts.map +0 -1
  372. package/dist/core/caller.js +0 -3
  373. package/dist/core/caller.js.map +0 -1
  374. package/dist/core/createMantle.d.ts +0 -22
  375. package/dist/core/createMantle.d.ts.map +0 -1
  376. package/dist/core/createMantle.js +0 -117
  377. package/dist/core/createMantle.js.map +0 -1
  378. package/dist/core/dialect.d.ts +0 -41
  379. package/dist/core/dialect.d.ts.map +0 -1
  380. package/dist/core/dialect.js +0 -7
  381. package/dist/core/dialect.js.map +0 -1
  382. package/dist/core/driver.d.ts +0 -17
  383. package/dist/core/driver.d.ts.map +0 -1
  384. package/dist/core/driver.js +0 -2
  385. package/dist/core/driver.js.map +0 -1
  386. package/dist/core/email.d.ts +0 -17
  387. package/dist/core/email.d.ts.map +0 -1
  388. package/dist/core/email.js +0 -2
  389. package/dist/core/email.js.map +0 -1
  390. package/dist/core/index.d.ts +0 -16
  391. package/dist/core/index.d.ts.map +0 -1
  392. package/dist/core/index.js +0 -16
  393. package/dist/core/index.js.map +0 -1
  394. package/dist/core/invocation.d.ts +0 -66
  395. package/dist/core/invocation.d.ts.map +0 -1
  396. package/dist/core/invocation.js +0 -3
  397. package/dist/core/invocation.js.map +0 -1
  398. package/dist/core/observation.d.ts +0 -3
  399. package/dist/core/observation.d.ts.map +0 -1
  400. package/dist/core/observation.js +0 -10
  401. package/dist/core/observation.js.map +0 -1
  402. package/dist/core/runtime/auth.d.ts +0 -9
  403. package/dist/core/runtime/auth.d.ts.map +0 -1
  404. package/dist/core/runtime/auth.js +0 -39
  405. package/dist/core/runtime/auth.js.map +0 -1
  406. package/dist/core/runtime/createRuntime.d.ts +0 -23
  407. package/dist/core/runtime/createRuntime.d.ts.map +0 -1
  408. package/dist/core/runtime/createRuntime.js +0 -214
  409. package/dist/core/runtime/createRuntime.js.map +0 -1
  410. package/dist/core/runtime/verifyPlan.d.ts +0 -34
  411. package/dist/core/runtime/verifyPlan.d.ts.map +0 -1
  412. package/dist/core/runtime/verifyPlan.js +0 -301
  413. package/dist/core/runtime/verifyPlan.js.map +0 -1
  414. package/dist/core/service.d.ts +0 -45
  415. package/dist/core/service.d.ts.map +0 -1
  416. package/dist/core/service.js +0 -2
  417. package/dist/core/service.js.map +0 -1
  418. package/dist/core/site.d.ts.map +0 -1
  419. package/dist/core/site.js +0 -2
  420. package/dist/core/site.js.map +0 -1
  421. package/dist/core/siteConfig.d.ts +0 -5
  422. package/dist/core/siteConfig.d.ts.map +0 -1
  423. package/dist/core/siteConfig.js +0 -24
  424. package/dist/core/siteConfig.js.map +0 -1
  425. package/dist/core/sql/allowlist.d.ts +0 -65
  426. package/dist/core/sql/allowlist.d.ts.map +0 -1
  427. package/dist/core/sql/allowlist.js +0 -705
  428. package/dist/core/sql/allowlist.js.map +0 -1
  429. package/dist/core/sql/ast.d.ts +0 -24
  430. package/dist/core/sql/ast.d.ts.map +0 -1
  431. package/dist/core/sql/ast.js +0 -32
  432. package/dist/core/sql/ast.js.map +0 -1
  433. package/dist/core/sql/compile.d.ts +0 -50
  434. package/dist/core/sql/compile.d.ts.map +0 -1
  435. package/dist/core/sql/compile.js +0 -48
  436. package/dist/core/sql/compile.js.map +0 -1
  437. package/dist/core/sql/policy.d.ts +0 -121
  438. package/dist/core/sql/policy.d.ts.map +0 -1
  439. package/dist/core/sql/policy.js +0 -379
  440. package/dist/core/sql/policy.js.map +0 -1
  441. package/dist/core/sql/positions.d.ts +0 -30
  442. package/dist/core/sql/positions.d.ts.map +0 -1
  443. package/dist/core/sql/positions.js +0 -22
  444. package/dist/core/sql/positions.js.map +0 -1
  445. package/dist/core/sql/run.d.ts +0 -76
  446. package/dist/core/sql/run.d.ts.map +0 -1
  447. package/dist/core/sql/run.js +0 -267
  448. package/dist/core/sql/run.js.map +0 -1
  449. package/dist/core/store/createStore.d.ts +0 -49
  450. package/dist/core/store/createStore.d.ts.map +0 -1
  451. package/dist/core/store/createStore.js +0 -227
  452. package/dist/core/store/createStore.js.map +0 -1
  453. package/dist/core/store/cursor.d.ts +0 -4
  454. package/dist/core/store/cursor.d.ts.map +0 -1
  455. package/dist/core/store/cursor.js +0 -22
  456. package/dist/core/store/cursor.js.map +0 -1
  457. package/dist/core/store/json.d.ts +0 -80
  458. package/dist/core/store/json.d.ts.map +0 -1
  459. package/dist/core/store/json.js +0 -342
  460. package/dist/core/store/json.js.map +0 -1
  461. package/dist/core/store.d.ts +0 -160
  462. package/dist/core/store.d.ts.map +0 -1
  463. package/dist/core/store.js +0 -2
  464. package/dist/core/store.js.map +0 -1
  465. package/dist/core/wire.d.ts +0 -20
  466. package/dist/core/wire.d.ts.map +0 -1
  467. package/dist/core/wire.js +0 -84
  468. package/dist/core/wire.js.map +0 -1
  469. package/dist/core/withCaller.d.ts +0 -24
  470. package/dist/core/withCaller.d.ts.map +0 -1
  471. package/dist/core/withCaller.js +0 -35
  472. package/dist/core/withCaller.js.map +0 -1
  473. package/dist/d1/adapter.d.ts +0 -12
  474. package/dist/d1/adapter.d.ts.map +0 -1
  475. package/dist/d1/adapter.js +0 -23
  476. package/dist/d1/adapter.js.map +0 -1
  477. package/dist/d1/codec.d.ts +0 -14
  478. package/dist/d1/codec.d.ts.map +0 -1
  479. package/dist/d1/codec.js +0 -136
  480. package/dist/d1/codec.js.map +0 -1
  481. package/dist/d1/compile/index.d.ts +0 -9
  482. package/dist/d1/compile/index.d.ts.map +0 -1
  483. package/dist/d1/compile/index.js +0 -9
  484. package/dist/d1/compile/index.js.map +0 -1
  485. package/dist/d1/dialect.d.ts +0 -4
  486. package/dist/d1/dialect.d.ts.map +0 -1
  487. package/dist/d1/dialect.js +0 -13
  488. package/dist/d1/dialect.js.map +0 -1
  489. package/dist/d1/executor.d.ts +0 -13
  490. package/dist/d1/executor.d.ts.map +0 -1
  491. package/dist/d1/executor.js +0 -91
  492. package/dist/d1/executor.js.map +0 -1
  493. package/dist/d1/index.d.ts +0 -6
  494. package/dist/d1/index.d.ts.map +0 -1
  495. package/dist/d1/index.js +0 -6
  496. package/dist/d1/index.js.map +0 -1
  497. package/dist/d1/lower.d.ts +0 -8
  498. package/dist/d1/lower.d.ts.map +0 -1
  499. package/dist/d1/lower.js +0 -167
  500. package/dist/d1/lower.js.map +0 -1
  501. package/dist/d1/media.d.ts +0 -5
  502. package/dist/d1/media.d.ts.map +0 -1
  503. package/dist/d1/media.js +0 -157
  504. package/dist/d1/media.js.map +0 -1
  505. package/dist/d1/migrations.d.ts +0 -12
  506. package/dist/d1/migrations.d.ts.map +0 -1
  507. package/dist/d1/migrations.js +0 -111
  508. package/dist/d1/migrations.js.map +0 -1
  509. package/dist/d1/print.d.ts +0 -28
  510. package/dist/d1/print.d.ts.map +0 -1
  511. package/dist/d1/print.js +0 -54
  512. package/dist/d1/print.js.map +0 -1
  513. package/dist/d1/site.d.ts +0 -17
  514. package/dist/d1/site.d.ts.map +0 -1
  515. package/dist/d1/site.js +0 -63
  516. package/dist/d1/site.js.map +0 -1
  517. package/dist/d1/storage.d.ts +0 -34
  518. package/dist/d1/storage.d.ts.map +0 -1
  519. package/dist/d1/storage.js +0 -288
  520. package/dist/d1/storage.js.map +0 -1
  521. package/dist/d1/tz.d.ts +0 -21
  522. package/dist/d1/tz.d.ts.map +0 -1
  523. package/dist/d1/tz.js +0 -54
  524. package/dist/d1/tz.js.map +0 -1
  525. package/dist/d1/validator.d.ts +0 -10
  526. package/dist/d1/validator.d.ts.map +0 -1
  527. package/dist/d1/validator.js +0 -33
  528. package/dist/d1/validator.js.map +0 -1
  529. package/dist/mcp/apps.d.ts +0 -43
  530. package/dist/mcp/apps.d.ts.map +0 -1
  531. package/dist/mcp/apps.js +0 -57
  532. package/dist/mcp/apps.js.map +0 -1
  533. package/dist/mcp/catalog.d.ts +0 -55
  534. package/dist/mcp/catalog.d.ts.map +0 -1
  535. package/dist/mcp/catalog.js +0 -81
  536. package/dist/mcp/catalog.js.map +0 -1
  537. package/dist/mcp/createMcpSurface.d.ts +0 -60
  538. package/dist/mcp/createMcpSurface.d.ts.map +0 -1
  539. package/dist/mcp/createMcpSurface.js +0 -182
  540. package/dist/mcp/createMcpSurface.js.map +0 -1
  541. package/dist/mcp/index.d.ts +0 -4
  542. package/dist/mcp/index.d.ts.map +0 -1
  543. package/dist/mcp/index.js +0 -4
  544. package/dist/mcp/index.js.map +0 -1
  545. package/dist/mcp/media.d.ts +0 -9
  546. package/dist/mcp/media.d.ts.map +0 -1
  547. package/dist/mcp/media.js +0 -33
  548. package/dist/mcp/media.js.map +0 -1
  549. package/dist/postgres/adapter.d.ts +0 -20
  550. package/dist/postgres/adapter.d.ts.map +0 -1
  551. package/dist/postgres/adapter.js +0 -44
  552. package/dist/postgres/adapter.js.map +0 -1
  553. package/dist/postgres/codec.d.ts +0 -13
  554. package/dist/postgres/codec.d.ts.map +0 -1
  555. package/dist/postgres/codec.js +0 -110
  556. package/dist/postgres/codec.js.map +0 -1
  557. package/dist/postgres/compile/index.d.ts +0 -9
  558. package/dist/postgres/compile/index.d.ts.map +0 -1
  559. package/dist/postgres/compile/index.js +0 -9
  560. package/dist/postgres/compile/index.js.map +0 -1
  561. package/dist/postgres/driver.d.ts +0 -92
  562. package/dist/postgres/driver.d.ts.map +0 -1
  563. package/dist/postgres/driver.js +0 -110
  564. package/dist/postgres/driver.js.map +0 -1
  565. package/dist/postgres/executor.d.ts +0 -20
  566. package/dist/postgres/executor.d.ts.map +0 -1
  567. package/dist/postgres/executor.js +0 -69
  568. package/dist/postgres/executor.js.map +0 -1
  569. package/dist/postgres/index.d.ts +0 -7
  570. package/dist/postgres/index.d.ts.map +0 -1
  571. package/dist/postgres/index.js +0 -7
  572. package/dist/postgres/index.js.map +0 -1
  573. package/dist/postgres/lower.d.ts +0 -6
  574. package/dist/postgres/lower.d.ts.map +0 -1
  575. package/dist/postgres/lower.js +0 -157
  576. package/dist/postgres/lower.js.map +0 -1
  577. package/dist/postgres/print.d.ts +0 -11
  578. package/dist/postgres/print.d.ts.map +0 -1
  579. package/dist/postgres/print.js +0 -121
  580. package/dist/postgres/print.js.map +0 -1
  581. package/dist/postgres/storage.d.ts +0 -19
  582. package/dist/postgres/storage.d.ts.map +0 -1
  583. package/dist/postgres/storage.js +0 -201
  584. package/dist/postgres/storage.js.map +0 -1
  585. package/dist/postgres/textRows.d.ts +0 -10
  586. package/dist/postgres/textRows.d.ts.map +0 -1
  587. package/dist/postgres/textRows.js +0 -44
  588. package/dist/postgres/textRows.js.map +0 -1
  589. package/dist/postgres/validator.d.ts +0 -12
  590. package/dist/postgres/validator.d.ts.map +0 -1
  591. package/dist/postgres/validator.js +0 -46
  592. package/dist/postgres/validator.js.map +0 -1
  593. package/dist/spec/domain/index.d.ts +0 -3
  594. package/dist/spec/domain/index.d.ts.map +0 -1
  595. package/dist/spec/domain/index.js +0 -3
  596. package/dist/spec/domain/index.js.map +0 -1
  597. package/dist/spec/domain/model/ContentState.d.ts +0 -8
  598. package/dist/spec/domain/model/ContentState.d.ts.map +0 -1
  599. package/dist/spec/domain/model/ContentState.js +0 -7
  600. package/dist/spec/domain/model/ContentState.js.map +0 -1
  601. package/dist/spec/domain/model/Entry.d.ts +0 -29
  602. package/dist/spec/domain/model/Entry.d.ts.map +0 -1
  603. package/dist/spec/domain/model/Entry.js +0 -16
  604. package/dist/spec/domain/model/Entry.js.map +0 -1
  605. package/dist/spec/domain/model/Locale.d.ts +0 -30
  606. package/dist/spec/domain/model/Locale.d.ts.map +0 -1
  607. package/dist/spec/domain/model/Locale.js +0 -33
  608. package/dist/spec/domain/model/Locale.js.map +0 -1
  609. package/dist/spec/domain/model/ManifestGrammar.d.ts.map +0 -1
  610. package/dist/spec/domain/model/ManifestGrammar.js +0 -149
  611. package/dist/spec/domain/model/ManifestGrammar.js.map +0 -1
  612. package/dist/spec/domain/model/MediaMimeAccept.d.ts +0 -55
  613. package/dist/spec/domain/model/MediaMimeAccept.d.ts.map +0 -1
  614. package/dist/spec/domain/model/MediaMimeAccept.js +0 -90
  615. package/dist/spec/domain/model/MediaMimeAccept.js.map +0 -1
  616. package/dist/spec/domain/model/RuntimePlan.d.ts.map +0 -1
  617. package/dist/spec/domain/model/RuntimePlan.js +0 -4
  618. package/dist/spec/domain/model/RuntimePlan.js.map +0 -1
  619. package/dist/spec/domain/model/SiteConfig.d.ts +0 -173
  620. package/dist/spec/domain/model/SiteConfig.d.ts.map +0 -1
  621. package/dist/spec/domain/model/SiteConfig.js +0 -13
  622. package/dist/spec/domain/model/SiteConfig.js.map +0 -1
  623. package/dist/spec/domain/model/SqlIr.d.ts.map +0 -1
  624. package/dist/spec/domain/model/SqlIr.js +0 -95
  625. package/dist/spec/domain/model/SqlIr.js.map +0 -1
  626. package/dist/spec/domain/model/index.d.ts +0 -14
  627. package/dist/spec/domain/model/index.d.ts.map +0 -1
  628. package/dist/spec/domain/model/index.js +0 -14
  629. package/dist/spec/domain/model/index.js.map +0 -1
  630. package/dist/spec/domain/service/CloudflareCron.d.ts.map +0 -1
  631. package/dist/spec/domain/service/CloudflareCron.js.map +0 -1
  632. package/dist/spec/domain/service/CrossSchemaChecker.d.ts +0 -34
  633. package/dist/spec/domain/service/CrossSchemaChecker.d.ts.map +0 -1
  634. package/dist/spec/domain/service/CrossSchemaChecker.js +0 -114
  635. package/dist/spec/domain/service/CrossSchemaChecker.js.map +0 -1
  636. package/dist/spec/domain/service/EntryDataValidator.d.ts +0 -56
  637. package/dist/spec/domain/service/EntryDataValidator.d.ts.map +0 -1
  638. package/dist/spec/domain/service/EntryDataValidator.js +0 -88
  639. package/dist/spec/domain/service/EntryDataValidator.js.map +0 -1
  640. package/dist/spec/domain/service/JsonSchemaToZod.d.ts +0 -29
  641. package/dist/spec/domain/service/JsonSchemaToZod.d.ts.map +0 -1
  642. package/dist/spec/domain/service/JsonSchemaToZod.js +0 -156
  643. package/dist/spec/domain/service/JsonSchemaToZod.js.map +0 -1
  644. package/dist/spec/domain/service/LifecycleStateMachine.d.ts +0 -75
  645. package/dist/spec/domain/service/LifecycleStateMachine.d.ts.map +0 -1
  646. package/dist/spec/domain/service/LifecycleStateMachine.js +0 -76
  647. package/dist/spec/domain/service/LifecycleStateMachine.js.map +0 -1
  648. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts +0 -29
  649. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts.map +0 -1
  650. package/dist/spec/domain/service/LocaleCanonicalizer.js +0 -96
  651. package/dist/spec/domain/service/LocaleCanonicalizer.js.map +0 -1
  652. package/dist/spec/domain/service/ManifestFieldChecks.d.ts +0 -60
  653. package/dist/spec/domain/service/ManifestFieldChecks.d.ts.map +0 -1
  654. package/dist/spec/domain/service/ManifestFieldChecks.js +0 -116
  655. package/dist/spec/domain/service/ManifestFieldChecks.js.map +0 -1
  656. package/dist/spec/domain/service/ManifestGraphValidator.d.ts +0 -15
  657. package/dist/spec/domain/service/ManifestGraphValidator.d.ts.map +0 -1
  658. package/dist/spec/domain/service/ManifestGraphValidator.js +0 -225
  659. package/dist/spec/domain/service/ManifestGraphValidator.js.map +0 -1
  660. package/dist/spec/domain/service/ManifestLinker.d.ts +0 -45
  661. package/dist/spec/domain/service/ManifestLinker.d.ts.map +0 -1
  662. package/dist/spec/domain/service/ManifestLinker.js +0 -92
  663. package/dist/spec/domain/service/ManifestLinker.js.map +0 -1
  664. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts +0 -16
  665. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts.map +0 -1
  666. package/dist/spec/domain/service/ManifestLocaleTrimmer.js +0 -76
  667. package/dist/spec/domain/service/ManifestLocaleTrimmer.js.map +0 -1
  668. package/dist/spec/domain/service/ManifestParser.d.ts +0 -49
  669. package/dist/spec/domain/service/ManifestParser.d.ts.map +0 -1
  670. package/dist/spec/domain/service/ManifestParser.js +0 -203
  671. package/dist/spec/domain/service/ManifestParser.js.map +0 -1
  672. package/dist/spec/domain/service/ManifestPartition.d.ts +0 -9
  673. package/dist/spec/domain/service/ManifestPartition.d.ts.map +0 -1
  674. package/dist/spec/domain/service/ManifestPartition.js +0 -19
  675. package/dist/spec/domain/service/ManifestPartition.js.map +0 -1
  676. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts +0 -33
  677. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts.map +0 -1
  678. package/dist/spec/domain/service/ManifestPathDiagnoser.js +0 -43
  679. package/dist/spec/domain/service/ManifestPathDiagnoser.js.map +0 -1
  680. package/dist/spec/domain/service/ManifestSourceSpans.d.ts +0 -10
  681. package/dist/spec/domain/service/ManifestSourceSpans.d.ts.map +0 -1
  682. package/dist/spec/domain/service/ManifestSourceSpans.js +0 -76
  683. package/dist/spec/domain/service/ManifestSourceSpans.js.map +0 -1
  684. package/dist/spec/domain/service/McpToolNaming.d.ts +0 -25
  685. package/dist/spec/domain/service/McpToolNaming.d.ts.map +0 -1
  686. package/dist/spec/domain/service/McpToolNaming.js +0 -50
  687. package/dist/spec/domain/service/McpToolNaming.js.map +0 -1
  688. package/dist/spec/domain/service/PlanFingerprint.d.ts.map +0 -1
  689. package/dist/spec/domain/service/PlanFingerprint.js +0 -14
  690. package/dist/spec/domain/service/PlanFingerprint.js.map +0 -1
  691. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts +0 -4
  692. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts.map +0 -1
  693. package/dist/spec/domain/service/ProcedureViewSpecChecks.js +0 -211
  694. package/dist/spec/domain/service/ProcedureViewSpecChecks.js.map +0 -1
  695. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts +0 -42
  696. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +0 -1
  697. package/dist/spec/domain/service/SchemaAdminUiChecker.js +0 -289
  698. package/dist/spec/domain/service/SchemaAdminUiChecker.js.map +0 -1
  699. package/dist/spec/domain/service/SchemaIndexChecker.d.ts +0 -33
  700. package/dist/spec/domain/service/SchemaIndexChecker.d.ts.map +0 -1
  701. package/dist/spec/domain/service/SchemaIndexChecker.js +0 -256
  702. package/dist/spec/domain/service/SchemaIndexChecker.js.map +0 -1
  703. package/dist/spec/domain/service/SchemaSearchChecker.d.ts +0 -11
  704. package/dist/spec/domain/service/SchemaSearchChecker.d.ts.map +0 -1
  705. package/dist/spec/domain/service/SchemaSearchChecker.js +0 -78
  706. package/dist/spec/domain/service/SchemaSearchChecker.js.map +0 -1
  707. package/dist/spec/domain/service/SchemaSpecChecks.d.ts +0 -31
  708. package/dist/spec/domain/service/SchemaSpecChecks.d.ts.map +0 -1
  709. package/dist/spec/domain/service/SchemaSpecChecks.js +0 -445
  710. package/dist/spec/domain/service/SchemaSpecChecks.js.map +0 -1
  711. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts +0 -39
  712. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts.map +0 -1
  713. package/dist/spec/domain/service/SiteDefaultsValidator.js +0 -194
  714. package/dist/spec/domain/service/SiteDefaultsValidator.js.map +0 -1
  715. package/dist/spec/domain/service/SqlClassify.d.ts +0 -19
  716. package/dist/spec/domain/service/SqlClassify.d.ts.map +0 -1
  717. package/dist/spec/domain/service/SqlClassify.js +0 -42
  718. package/dist/spec/domain/service/SqlClassify.js.map +0 -1
  719. package/dist/spec/domain/service/SqlRefusal.d.ts +0 -16
  720. package/dist/spec/domain/service/SqlRefusal.d.ts.map +0 -1
  721. package/dist/spec/domain/service/SqlRefusal.js +0 -20
  722. package/dist/spec/domain/service/SqlRefusal.js.map +0 -1
  723. package/dist/spec/domain/service/SqlTypes.d.ts +0 -40
  724. package/dist/spec/domain/service/SqlTypes.d.ts.map +0 -1
  725. package/dist/spec/domain/service/SqlTypes.js +0 -110
  726. package/dist/spec/domain/service/SqlTypes.js.map +0 -1
  727. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts +0 -3
  728. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts.map +0 -1
  729. package/dist/spec/domain/service/StaffRoleHierarchy.js +0 -19
  730. package/dist/spec/domain/service/StaffRoleHierarchy.js.map +0 -1
  731. package/dist/spec/domain/service/TriggerGraphChecks.d.ts +0 -16
  732. package/dist/spec/domain/service/TriggerGraphChecks.d.ts.map +0 -1
  733. package/dist/spec/domain/service/TriggerGraphChecks.js +0 -337
  734. package/dist/spec/domain/service/TriggerGraphChecks.js.map +0 -1
  735. package/dist/spec/domain/service/TriggerSpecChecks.d.ts +0 -4
  736. package/dist/spec/domain/service/TriggerSpecChecks.d.ts.map +0 -1
  737. package/dist/spec/domain/service/TriggerSpecChecks.js +0 -89
  738. package/dist/spec/domain/service/TriggerSpecChecks.js.map +0 -1
  739. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts +0 -11
  740. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts.map +0 -1
  741. package/dist/spec/domain/service/ValidatedAdminUiProjection.js +0 -26
  742. package/dist/spec/domain/service/ValidatedAdminUiProjection.js.map +0 -1
  743. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts +0 -14
  744. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts.map +0 -1
  745. package/dist/spec/domain/service/ViewAdminUiChecker.js +0 -53
  746. package/dist/spec/domain/service/ViewAdminUiChecker.js.map +0 -1
  747. package/dist/spec/domain/service/index.d.ts +0 -24
  748. package/dist/spec/domain/service/index.d.ts.map +0 -1
  749. package/dist/spec/domain/service/index.js +0 -24
  750. package/dist/spec/domain/service/index.js.map +0 -1
  751. package/dist/spec/index.d.ts +0 -10
  752. package/dist/spec/index.d.ts.map +0 -1
  753. package/dist/spec/index.js +0 -12
  754. package/dist/spec/index.js.map +0 -1
  755. package/dist/spec/infrastructure/cli/parseArgsError.d.ts +0 -16
  756. package/dist/spec/infrastructure/cli/parseArgsError.d.ts.map +0 -1
  757. package/dist/spec/infrastructure/cli/parseArgsError.js +0 -34
  758. package/dist/spec/infrastructure/cli/parseArgsError.js.map +0 -1
  759. package/dist/spec/infrastructure/index.d.ts +0 -2
  760. package/dist/spec/infrastructure/index.d.ts.map +0 -1
  761. package/dist/spec/infrastructure/index.js +0 -2
  762. package/dist/spec/infrastructure/index.js.map +0 -1
  763. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts +0 -18
  764. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts.map +0 -1
  765. package/dist/spec/infrastructure/sql/PgQueryParser.js +0 -17
  766. package/dist/spec/infrastructure/sql/PgQueryParser.js.map +0 -1
  767. package/dist/spec/infrastructure/sql/compilePlan.d.ts +0 -37
  768. package/dist/spec/infrastructure/sql/compilePlan.d.ts.map +0 -1
  769. package/dist/spec/infrastructure/sql/compilePlan.js +0 -282
  770. package/dist/spec/infrastructure/sql/compilePlan.js.map +0 -1
  771. package/dist/spec/infrastructure/sql/compileSql.d.ts +0 -35
  772. package/dist/spec/infrastructure/sql/compileSql.d.ts.map +0 -1
  773. package/dist/spec/infrastructure/sql/compileSql.js +0 -92
  774. package/dist/spec/infrastructure/sql/compileSql.js.map +0 -1
  775. package/dist/spec/infrastructure/sql/frontEnd.d.ts +0 -8
  776. package/dist/spec/infrastructure/sql/frontEnd.d.ts.map +0 -1
  777. package/dist/spec/infrastructure/sql/frontEnd.js +0 -100
  778. package/dist/spec/infrastructure/sql/frontEnd.js.map +0 -1
  779. package/dist/spec/infrastructure/sql/index.d.ts +0 -4
  780. package/dist/spec/infrastructure/sql/index.d.ts.map +0 -1
  781. package/dist/spec/infrastructure/sql/index.js +0 -4
  782. package/dist/spec/infrastructure/sql/index.js.map +0 -1
  783. package/dist/spec/kernel/diagnostic.d.ts.map +0 -1
  784. package/dist/spec/kernel/diagnostic.js +0 -296
  785. package/dist/spec/kernel/diagnostic.js.map +0 -1
  786. package/dist/spec/kernel/index.d.ts +0 -8
  787. package/dist/spec/kernel/index.d.ts.map +0 -1
  788. package/dist/spec/kernel/index.js +0 -8
  789. package/dist/spec/kernel/index.js.map +0 -1
  790. package/dist/spec/usecase/EmitTypes.d.ts +0 -22
  791. package/dist/spec/usecase/EmitTypes.d.ts.map +0 -1
  792. package/dist/spec/usecase/EmitTypes.js +0 -182
  793. package/dist/spec/usecase/EmitTypes.js.map +0 -1
  794. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts +0 -8
  795. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts.map +0 -1
  796. package/dist/spec/usecase/ValidateManifestsUseCase.js +0 -101
  797. package/dist/spec/usecase/ValidateManifestsUseCase.js.map +0 -1
  798. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts +0 -27
  799. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts.map +0 -1
  800. package/dist/spec/usecase/dto/ValidateManifestsRequest.js +0 -2
  801. package/dist/spec/usecase/dto/ValidateManifestsRequest.js.map +0 -1
  802. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts +0 -14
  803. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts.map +0 -1
  804. package/dist/spec/usecase/dto/ValidateManifestsResponse.js +0 -2
  805. package/dist/spec/usecase/dto/ValidateManifestsResponse.js.map +0 -1
  806. package/dist/spec/usecase/dto/index.d.ts +0 -3
  807. package/dist/spec/usecase/dto/index.d.ts.map +0 -1
  808. package/dist/spec/usecase/dto/index.js +0 -3
  809. package/dist/spec/usecase/dto/index.js.map +0 -1
  810. package/dist/spec/usecase/index.d.ts +0 -10
  811. package/dist/spec/usecase/index.d.ts.map +0 -1
  812. package/dist/spec/usecase/index.js +0 -10
  813. package/dist/spec/usecase/index.js.map +0 -1
  814. package/dist/testing/cases/before-hook.d.ts +0 -4
  815. package/dist/testing/cases/before-hook.d.ts.map +0 -1
  816. package/dist/testing/cases/before-hook.js +0 -71
  817. package/dist/testing/cases/before-hook.js.map +0 -1
  818. package/dist/testing/cases/corpus.d.ts +0 -12
  819. package/dist/testing/cases/corpus.d.ts.map +0 -1
  820. package/dist/testing/cases/corpus.js +0 -91
  821. package/dist/testing/cases/corpus.js.map +0 -1
  822. package/dist/testing/cases/policy.d.ts +0 -74
  823. package/dist/testing/cases/policy.d.ts.map +0 -1
  824. package/dist/testing/cases/policy.js +0 -142
  825. package/dist/testing/cases/policy.js.map +0 -1
  826. package/dist/testing/cases/printer.d.ts +0 -4
  827. package/dist/testing/cases/printer.d.ts.map +0 -1
  828. package/dist/testing/cases/printer.js +0 -32
  829. package/dist/testing/cases/printer.js.map +0 -1
  830. package/dist/testing/cases/report-view.d.ts +0 -5
  831. package/dist/testing/cases/report-view.d.ts.map +0 -1
  832. package/dist/testing/cases/report-view.js +0 -33
  833. package/dist/testing/cases/report-view.js.map +0 -1
  834. package/dist/testing/cases/requisition.d.ts +0 -4
  835. package/dist/testing/cases/requisition.d.ts.map +0 -1
  836. package/dist/testing/cases/requisition.js +0 -38
  837. package/dist/testing/cases/requisition.js.map +0 -1
  838. package/dist/testing/cases/search-places.d.ts +0 -4
  839. package/dist/testing/cases/search-places.d.ts.map +0 -1
  840. package/dist/testing/cases/search-places.js +0 -60
  841. package/dist/testing/cases/search-places.js.map +0 -1
  842. package/dist/testing/cases/stock.d.ts +0 -4
  843. package/dist/testing/cases/stock.d.ts.map +0 -1
  844. package/dist/testing/cases/stock.js +0 -35
  845. package/dist/testing/cases/stock.js.map +0 -1
  846. package/dist/testing/cases/store.d.ts +0 -4
  847. package/dist/testing/cases/store.d.ts.map +0 -1
  848. package/dist/testing/cases/store.js +0 -100
  849. package/dist/testing/cases/store.js.map +0 -1
  850. package/dist/testing/harness.d.ts +0 -94
  851. package/dist/testing/harness.d.ts.map +0 -1
  852. package/dist/testing/harness.js +0 -168
  853. package/dist/testing/harness.js.map +0 -1
  854. package/dist/testing/index.d.ts.map +0 -1
  855. package/dist/testing/index.js.map +0 -1
  856. package/dist/testing/report.d.ts +0 -15
  857. package/dist/testing/report.d.ts.map +0 -1
  858. package/dist/testing/report.js +0 -22
  859. package/dist/testing/report.js.map +0 -1
  860. package/dist/web/createRestSurface.d.ts +0 -7
  861. package/dist/web/createRestSurface.d.ts.map +0 -1
  862. package/dist/web/createRestSurface.js +0 -41
  863. package/dist/web/createRestSurface.js.map +0 -1
  864. package/dist/web/index.d.ts +0 -2
  865. package/dist/web/index.d.ts.map +0 -1
  866. package/dist/web/index.js +0 -2
  867. package/dist/web/index.js.map +0 -1
  868. package/docs/adr/0001-four-atom-manifest-model.md +0 -440
  869. package/docs/adr/0002-closed-enums-for-bindings.md +0 -253
  870. package/docs/adr/0007-ai-as-primary-author.md +0 -473
  871. package/docs/adr/0008-structured-diagnostic-shape.md +0 -338
  872. package/docs/adr/0009-consumer-supplied-manifests.md +0 -149
  873. package/docs/adr/0010-locale-and-translates.md +0 -453
  874. package/docs/adr/0011-adapter-port-spec.md +0 -281
  875. package/docs/adr/0012-views-as-public-rest.md +0 -161
  876. package/docs/adr/0013-agent-provisioned-consumer-projects.md +0 -154
  877. package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +0 -939
  878. package/docs/adr/0016-site-semantic-layer.md +0 -70
  879. package/docs/adr/0017-media-multi-variant-agent-side-optimization.md +0 -181
  880. package/docs/adr/0018-core-starters-repository-boundary.md +0 -179
  881. package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +0 -244
  882. package/docs/adr/0020-builtin-handler-contracts-and-matched-upsert.md +0 -199
  883. package/docs/adr/0021-retire-starter-scaffolding.md +0 -30
  884. package/docs/adr/0022-caller-observed-version-occ.md +0 -212
  885. package/docs/adr/0023-port-failure-contract.md +0 -69
  886. package/docs/adr/0024-manifest-native-schema-tables.md +0 -264
  887. package/docs/adr/0025-reserved-native-columns-and-published-only-public-views.md +0 -105
  888. package/docs/adr/0026-progressive-generate.md +0 -36
  889. package/docs/adr/0027-scheduled-procedure-triggers.md +0 -31
  890. package/docs/adr/0028-schema-ttl-expiry.md +0 -33
  891. package/docs/adr/0029-mcp-apps-interaction-contracts.md +0 -324
  892. package/docs/adr/0030-store.md +0 -40
  893. package/docs/adr/0031-host-cloud-core-contract.md +0 -102
  894. package/docs/adr/0032-store-centric-core-and-service-contract.md +0 -384
  895. package/docs/adr/0033-storage-converges-to-the-plan.md +0 -92
  896. package/docs/adr/0034-store-is-authored-as-sql.md +0 -192
  897. package/docs/adr/0035-sql-dialects.md +0 -154
  898. package/docs/adr/0036-host-and-dialect.md +0 -65
  899. package/docs/adr/0037-postgresql-is-the-reference-dialect.md +0 -124
  900. package/docs/adr/0038-bun-native-host.md +0 -63
  901. package/docs/adr/README.md +0 -96
  902. package/docs/adr/adr-lite-803-request-diagnostics.md +0 -38
  903. package/docs/adr/adr-lite-808-route-readiness.md +0 -47
  904. package/docs/adr/adr-lite-809-bounded-public-content.md +0 -71
  905. package/docs/adr/adr-lite-812-native-parity.md +0 -150
  906. package/docs/adr/adr-lite-823-home-statistics.md +0 -64
  907. package/docs/adr/adr-lite-842-mcp-authoring.md +0 -30
  908. package/docs/adr/adr-lite-845-frontend-client.md +0 -38
  909. package/docs/adr/adr-lite-861-admin-webmcp.md +0 -48
  910. package/docs/adr/adr-lite-909-admin-ui-kit.md +0 -37
  911. package/docs/examples/commerce-inventory.md +0 -481
  912. package/docs/examples/commerce.md +0 -254
  913. package/docs/examples/guarded-api.md +0 -238
  914. package/docs/examples/intake-hooks.md +0 -237
  915. package/docs/examples/intake.md +0 -127
  916. package/docs/examples/legal-documents.md +0 -218
  917. package/docs/examples/procurement.md +0 -226
  918. package/docs/examples/publication.md +0 -211
  919. package/docs/examples/reference-service/.mantle/generated/mantle.ts +0 -174
  920. package/docs/examples/reference-service/.mantle/generated/plan.json +0 -1936
  921. package/docs/examples/reference-service/README.md +0 -33
  922. package/docs/examples/reference-service/manifests/catalog.yaml +0 -103
  923. package/docs/examples/reference-service/manifests/orders.yaml +0 -120
  924. package/docs/examples/reference-service/mantle.config.json +0 -1
  925. package/docs/examples/reference-service/package.json +0 -27
  926. package/docs/examples/reference-service/smoke.mjs +0 -160
  927. package/docs/examples/reference-service/src/handlers.ts +0 -36
  928. package/docs/examples/reference-service/src/index.ts +0 -33
  929. package/docs/examples/reference-service/src/service.ts +0 -78
  930. package/docs/examples/reference-service/wrangler.jsonc +0 -26
  931. package/docs/examples/reservation.md +0 -142
  932. /package/docs/examples/{reference-service → app-shell}/.dev.vars.example +0 -0
@@ -0,0 +1,86 @@
1
+ # Transactional email
2
+
3
+ Import the optional email port from `@aotter/mantle/email`. Mantle supplies
4
+ `EmailSender`, `EmailSendArgs`, English `signInCodeEmail`, `signInLinkEmail`
5
+ and `adminInvitationEmail` templates, and `ConsoleEmailSender` for local
6
+ development. Applications select and configure their sender and Better Auth
7
+ plugins.
8
+
9
+ `send({ to, subject, text, html?, locale, category? })` returns `Promise<void>`.
10
+ The templates return `{ subject, text }`, with the same English text as 0.2;
11
+ they do not translate or consume `locale`. Pass the recipient's locale through
12
+ to the sender, which can select localized templates. Existing categories are
13
+ `auth.email-otp.<type>`, `auth.magic-link.sign-in` and `auth.admin-invitation`.
14
+
15
+ ## Application wiring
16
+
17
+ ```ts
18
+ import { emailOTP } from "better-auth/plugins";
19
+ import { hashEmailOtp } from "@aotter/mantle/auth/hardening";
20
+ import { signInCodeEmail, adminInvitationEmail, type EmailSender } from "@aotter/mantle/email";
21
+
22
+ const locale = (request?: Request) =>
23
+ request?.headers.get("accept-language")?.split(",")[0]?.split(";")[0]?.trim() || "en";
24
+
25
+ // Include this plugin in the app's Better Auth options.
26
+ export const emailPlugin = (sender: EmailSender, secret: string) => emailOTP({
27
+ storeOTP: { hash: otp => hashEmailOtp(secret, otp) },
28
+ sendVerificationOTP: ({ email, otp, type }, ctx) => sender.send({
29
+ to: email, ...signInCodeEmail(otp), locale: locale(ctx?.request),
30
+ category: `auth.email-otp.${type}`,
31
+ }),
32
+ });
33
+
34
+ // Use the configured, trusted application origin, never an incoming Host or
35
+ // Origin header. The application grants the OSS "admin" role before sending.
36
+ export const inviteEmail = (sender: EmailSender, origin: string, to: string, language: string) =>
37
+ sender.send({
38
+ to, ...adminInvitationEmail("admin", new URL("/admin/sign-in", origin).href),
39
+ locale: language, category: "auth.admin-invitation",
40
+ });
41
+ ```
42
+
43
+ For magic links, pass Better Auth's generated URL to `signInLinkEmail(url)`;
44
+ configure Better Auth's `baseURL` and `trustedOrigins` to prevent untrusted
45
+ callback destinations. Templates preserve their input as plain text and never
46
+ interpret it as HTML. If a sender supplies `html`, it owns escaping untrusted
47
+ text and attributes and validating link destinations. Pass structured fields
48
+ to the provider; do not interpolate them into raw MIME headers.
49
+
50
+ Use `new ConsoleEmailSender()` only in explicitly selected local development.
51
+ It logs recipients, codes and links and sends nothing; never select it in
52
+ production or log live messages in a production sender. Provider failures
53
+ reject the promise; the application owns error handling and retry policy.
54
+
55
+ **Never let the response wait for the send.** Better Auth calls
56
+ `sendVerificationOTP` for `email-verification` and `forget-password` only when
57
+ the user exists, so a response that waits for the provider reveals whether an
58
+ account exists. Configure Better Auth's `advanced.backgroundTasks.handler` (on
59
+ Workers, `ctx.waitUntil`) so the send runs after the response, as 0.2 did; the
60
+ app-owned auth template wires it.
61
+
62
+ ## Cloudflare Email Service binding
63
+
64
+ Use a verified sender and a Cloudflare Email Service `send_email` binding.
65
+ The binding composes the message natively; no mail SDK or MIME builder is needed.
66
+
67
+ ```jsonc
68
+ { "send_email": [{ "name": "EMAIL" }] }
69
+ ```
70
+
71
+ ```ts
72
+ import type { SendEmail } from "@cloudflare/workers-types";
73
+ import type { EmailSender } from "@aotter/mantle/email";
74
+
75
+ interface Env { EMAIL: SendEmail; EMAIL_FROM: string }
76
+ export const emailSender = (env: Env): EmailSender => ({
77
+ async send({ to, subject, text, html }) {
78
+ await env.EMAIL.send({ from: env.EMAIL_FROM, to, subject, text, html });
79
+ },
80
+ });
81
+ ```
82
+
83
+ The English example ignores `locale` and `category`; a localized provider may
84
+ use both. The binding's verified sender and recipient restrictions still apply.
85
+ This example does not provision a sender, enable an auth method or send mail
86
+ without application wiring.
@@ -0,0 +1,44 @@
1
+ # MCP Apps
2
+
3
+ Generated `mcp()` accepts app-owned UI resources on either endpoint. Each
4
+ endpoint accepts one contributor or an array; Admin uses the same public hook:
5
+
6
+ ```ts
7
+ import type { McpApps } from '@aotter/mantle/mcp';
8
+ import { adminMcpApps } from '@aotter/mantle-admin/mcp';
9
+ import { mcp } from './generated/mcp.js';
10
+
11
+ const app: McpApps = { resources: [{
12
+ uri: 'ui://my-app/records', name: 'my-app-records',
13
+ html: () => loadAppHtml(), renders: ['records'],
14
+ }] };
15
+ const handler = mcp({ db, caller, apps: {
16
+ public: app, admin: [adminMcpApps(adminOptions), adminApp],
17
+ } });
18
+ ```
19
+
20
+ Use your own `ui://<app>/…` prefix. `ui://mantle-admin/…` is reserved for Admin.
21
+ HTML is reusable static content; caller-specific data comes from tool results.
22
+ Build the front end with the official `@modelcontextprotocol/ext-apps` client.
23
+ `renders` links tools to `_meta.ui.resourceUri`; `appOnly` adds
24
+ `visibility: ["app"]`. Both name tools actually exposed on that endpoint.
25
+ Resources may supply CSP, permissions and `prefersBorder`.
26
+
27
+ For static tool tables, construction checks contributors. Request-bound tool tables check on the first matching request and recheck changed tool names. Duplicate
28
+ resource URIs or names, conflicting tool ownership, and absent or foreign-endpoint
29
+ tools throw `ContractError` with code `MCP_APP_CONFLICT`. HTML loaders never run during import or handler construction. Treat descriptors as
30
+ immutable after construction. HTML loads only on `resources/read`; failures
31
+ return a redacted internal error.
32
+
33
+ Generated media-enabled handlers keep the same cache while resolving their tool
34
+ table against each request's environment. Database handles, storage and Caller
35
+ are never retained in that cache. The low-level SDK also accepts an async
36
+ `(request, env) => tools` resolver; its names must match the endpoint's App
37
+ catalogue. If its tool names change, those links are checked again, and a call
38
+ always uses the current request's tool table.
39
+
40
+ Clients advertise `io.modelcontextprotocol/ui` and MIME type
41
+ `text/html;profile=mcp-app` in initialization capabilities or, for stateless
42
+ requests, in `params._meta["io.modelcontextprotocol/clientCapabilities"]`.
43
+ An explicit capability declaration without UI support receives no UI resources, UI tool metadata or App-only tools. A stateless request with no capability declaration is treated as unknown and retains App support. Other tools retain their existing validation,
44
+ authorization, caller, origin and database behavior.
@@ -0,0 +1,298 @@
1
+ # Native Admin
2
+
3
+ Select Admin explicitly; use the exact installed SDK/Admin versions.
4
+
5
+ ## Packages and generation
6
+
7
+ There are three packages, pinned to matching versions:
8
+
9
+ | Package | Owns |
10
+ | --- | --- |
11
+ | `@aotter/mantle` | One native Core SDK: compiler, generator, query kernel and optional auth/surface primitives. |
12
+ | `@aotter/mantle-admin` | Optional Admin server, SPA, extensions, design preview and Admin MCP App. |
13
+ | `@aotter/mantle-ui` | Shared UI kit and generic interaction controller. |
14
+
15
+ The SDK does not import Admin or its assets. Selecting Admin emits application
16
+ code that imports its small public server helpers. The SPA retains all 22
17
+ languages, rich editors and the developer workspace; language, editor and
18
+ workspace chunks load on demand. It is not part of the SDK query bundle.
19
+
20
+ Select Admin explicitly:
21
+
22
+ ```sh
23
+ pnpm exec mantle generate cloudflare-d1 generated manifests/*.yaml --admin
24
+ pnpm exec tsc --noEmit
25
+ ```
26
+
27
+ Targets are `bun-sqlite`, `bun-postgres`, `cloudflare-d1` and
28
+ `cloudflare-postgres`. Programmatic generation accepts `admin: true` with the
29
+ same target/source options. Optional `--auth`, `--site` and `--admin-extensions`
30
+ modules follow their [generation contracts](../cloudflare/service-entry.md).
31
+ Generate, typecheck, implement every printed `Handlers` key, then typecheck
32
+ again. Commit generated TypeScript, SQL and Wrangler edits. Never edit the
33
+ output by hand; regenerate after merging authored inputs. Use the matching
34
+ CLI's `--check` with the same selected options in CI.
35
+
36
+ Apply initial `schema.sql` and selected auth/site DDL only during explicit
37
+ setup of a new database. Existing data needs reviewed migrations. Imports and
38
+ metadata factories do no storage work. Requests run no DDL or storage checks;
39
+ the only request-time write outside app operations is the configured OAuth
40
+ resource row (see [OAuth](oauth.md)).
41
+
42
+ ## Mount the API and console
43
+
44
+ ```ts
45
+ import { admin } from '@aotter/mantle-admin/server';
46
+ import { entries } from '@aotter/mantle-admin/server/entries';
47
+ import { adminBindings } from './generated/admin-bindings.js';
48
+ import { handlers } from './handlers.js';
49
+ import { resolveRequestCaller } from './identity.js'; // application-owned
50
+
51
+ const bindings = adminBindings({ handlers });
52
+ const api = admin(bindings.metadata, bindings.views, bindings.operations, {
53
+ db: (env: Env) => env.DB,
54
+ caller: resolveRequestCaller,
55
+ routes: entries(bindings.schemas, bindings.adapter),
56
+ developerViews: bindings.developerViews,
57
+ });
58
+ // In app-owned fetch: await api(request, env); undefined means fall through.
59
+ ```
60
+
61
+ Ref operations run with the handlers given to `adminBindings({ handlers })`; `admin()` needs no second copy. Without ref Procedures, omit `handlers` and use `adminBindings()`. The app's
62
+ resolver verifies the caller; Admin accepts an admin cookie session classified from
63
+ Better Auth’s admin plugin `adminRoles` (default `["admin"]`), and cookie writes
64
+ retain the shared same-origin check. Comma-separated roles are supported.
65
+ Do not manufacture an admin/system Caller from request input. Views and operations
66
+ also retain their own generated `requires` checks. Share one request-local
67
+ resolver with auth, consent, MCP and REST; preserve its response cookie headers.
68
+
69
+ The API handles `/admin/api/*`. The app separately serves
70
+ `@aotter/mantle-admin/admin/index.html` and its directory at `/admin`, including
71
+ client routes such as `/admin/sign-in`; missing assets stay 404. Do not serve
72
+ that directory bare: `adminShell(request, assets)` from
73
+ `@aotter/mantle-admin/server` returns the shell for every `/admin` page with
74
+ `frame-ancestors 'none'`, `X-Frame-Options: DENY`, `no-store` and `nosniff`, and
75
+ refuses traversal, encoded separators and NUL (`assets` fetches one built file
76
+ by path; a 404 means missing; it returns `undefined` for other requests). Read the
77
+ installed Admin README for asset bindings, CSP/import-map hashes and preview
78
+ framing. `@aotter/mantle-ui` continues to supply the shared kit. See
79
+ [service composition](../cloudflare/service-entry.md) for the complete Fetch/Bun wiring.
80
+
81
+ ## HTTP routes
82
+
83
+ All paths below start with `/admin/api` and require an admin session; mutations
84
+ also require the shared same-origin check. Mount `entries(...)` for collection
85
+ routes. Send JSON with `Content-Type: application/json`.
86
+
87
+ | Method and path | Request / response |
88
+ | --- | --- |
89
+ | `POST /entries` | Body `{ collection, data }`; creates an entry. |
90
+ | `GET /entries/{id}?collection=<schema>` | Reads an entry and its current `entry.version`. |
91
+ | `PATCH /entries/{id}?collection=<schema>` | Body `{ data, expectedVersion }`; sends the observed version, not the next one. Publishing entries must be drafts. |
92
+ | `POST /entries/{id}/publish?collection=<schema>` | Body `{ expectedVersion }`; validates required data before publishing. |
93
+ | `POST /entries/{id}/unpublish?collection=<schema>` | Body `{ expectedVersion }`; returns the entry to draft. |
94
+ | `POST /operations/{name}` | Body is the Procedure's input; runs an Admin operation (a Procedure with `requires: ctx.admin` or a `target`). |
95
+ | `GET /views/{name}` | Generated admin View query parameters plus `limit`/`cursor`; returns `{ rows, nextCursor? }`. |
96
+ | `GET /me` | Returns `{ userId, role, admin, login, image }` for the signed-in caller. |
97
+
98
+ Entry create/read/patch/transitions return
99
+ `{ collection, entry, parentEntryId, parentEntryTitle, related }`; the entry has
100
+ `{ id, collection, locale, status, version, data, created_at, updated_at }`.
101
+ Transitions accept `{}` to use the current version; tests should send the
102
+ observed `expectedVersion` to catch stale writes. Generic writes reject native
103
+ columns inside `data`. See [publishing](../concepts/lifecycle-and-locales.md).
104
+
105
+ ## Generated reads and writes
106
+
107
+ `adminBindings()` returns static metadata, schemas, views, operations and the
108
+ selected native adapter. Metadata-only endpoints add no storage read of their
109
+ own; authentication, optional user enrichment or site loading may still query.
110
+ The shared get/page/statistics functions select quoted tables and columns only
111
+ from generated whitelists. Search/filter/cursor/range values are binds, never
112
+ SQL identifiers. Core compiles scope, TTL, publishing and parent predicates;
113
+ there is no request-time manifest/schema/SQL AST interpreter.
114
+
115
+ Scoped rows remain private even from other admin. Translation reads merge at
116
+ most one visible parent with the matching join key; scoped parents correlate
117
+ scope in every mode, including trusted reads. Child declarations win over parent
118
+ fields, and a parent's public same-named field cannot replace a child's private
119
+ scope. Unrelated scoped Schemas cannot hide an ordinary public field. Scope and
120
+ storage-only fields are absent from entry data and generated CSV export fields.
121
+ Geo remains experimental: existing native outputs are readable, not generically
122
+ editable. Metadata derives child relationships from `allCollections`.
123
+
124
+ Entry queries validate indexed sort fields, directions, filters and limits
125
+ 1–500. `filter_field` and JSON `filter_values` are paired; each batch has at most
126
+ 50 scalar values. Search reuses native SQLite/D1 FTS and PostgreSQL behavior.
127
+ Pages keep native NULL ordering, id ties, microsecond timestamp keys and an
128
+ opaque cursor bound to caller, input, filters and ordering. Malformed/foreign
129
+ cursors and unknown selectors fail before acquiring the route's DB handle;
130
+ the app's authentication may already have used its own database. Admin manifest
131
+ Views retain their complete proved key tuple, not a two-key approximation.
132
+
133
+ Generated full/partial input checks validate creates, edits, operations and
134
+ filters. Plain titled string `oneOf` choices use the same enum checks; general
135
+ or constrained alternatives remain refused. Draft creates can be incomplete;
136
+ publish checks required data. Publishing edits apply only to drafts. Read-only
137
+ collections refuse generic edits while their declared Procedures can still run.
138
+
139
+ Writes use compiler-printed native Procedure frames, bind recipes and only the
140
+ supplied field fragments. They do not update omitted columns or run a schema
141
+ interpreter. PATCH retains its visible-row read and exact OCC check; the mutation
142
+ returns its row. Missing/excluded rows are 404; stale locks or failed state guards
143
+ are 409. Safe versions are numbers; exact native int64 strings can be bound
144
+ without rounding, while unsafe numbers are rejected. The console keeps versions
145
+ outside its supported safe range read-only rather than casting them to numbers.
146
+ Full cross-target int64 output parity remains incomplete; bare driver values
147
+ are unchanged.
148
+
149
+ Publishing/custom Admin operations load existing generated Procedure modules
150
+ when invoked. Ref handlers retain the original typed `{ caller, db, store }`
151
+ context and authorization. Ordinary SDK/REST/MCP emission and the synchronous
152
+ public Store API are unchanged. Selected JSON boundaries preserve declared JSON/boolean conversions and safe
153
+ cross-target integer normalization from SQL text; exact unsafe values are not rounded. Bare
154
+ Views, Store and SQL Procedures keep their driver-native contract. Native
155
+ unique/OCC errors and uncertain transaction outcomes keep their contracts. A 503 outcome may mean a write committed: do not
156
+ retry automatically or turn it into a success by reading afterward. Core
157
+ `statusOf` maps core codes only. App media/site/partial errors use `mediaError`
158
+ from `@aotter/mantle/media`; other custom ContractErrors must carry an explicit
159
+ status, otherwise the boundary returns a redacted 500. Do not leak native
160
+ error messages, tokens or credentials to clients.
161
+
162
+ ## Statistics and extensions
163
+
164
+ `GET /admin/api/collections/{name}/statistics?range=7d` supports primary or
165
+ standalone collections; folded children/translations are not primary routes.
166
+ Ranges are `1h`, `24h`, `7d` (default) and `20d`. It returns
167
+ `{ total, buckets, from, to, bucketMs }` in one native aggregate query. `total`
168
+ counts currently caller-visible retained rows, including rows outside the
169
+ requested window; expired rows are excluded. Buckets use `[from, to)` and the
170
+ same generated scope/TTL/parent policy. The shared native function accepts at
171
+ most 20 days and 480 buckets, with safe microsecond arithmetic. Temporal enum
172
+ subtypes return original metadata keys; equivalent offset spellings count once
173
+ under the first key, and separate microseconds remain distinct.
174
+
175
+ Site/media/identity, extensions, WebMCP, design preview and MCP Apps are selected
176
+ through the public Admin modules, not added to the SDK kernel. Extension
177
+ contribution declarations go to `--admin-extensions`; executable handlers and
178
+ sources stay in app-owned server configuration. Raw extension handlers receive
179
+ the original Request without pre-reading, cloning or rebuilding it. Custom
180
+ `bodyLimit` checks Content-Length before DB access; the app must bound reads of
181
+ unknown-length raw streams. Built-in JSON routes use the shared bounded reader
182
+ (default 1,000,000 bytes) after caller/origin checks and before DB acquisition.
183
+ The API advertises capabilities for actually mounted routes, including statistics.
184
+
185
+ ## Acceptance
186
+
187
+ Use a disposable database for native tests, then exercise actual OTP sign-in,
188
+ the Admin console and member frontend. Check invalid input, another tenant's
189
+ rows, expired rows, publishing transitions, related/translated entries, paging,
190
+ statistics, CSV, operations/ref effects, stale OCC and persisted state after a
191
+ restart. Recheck extensions, previews, all supported UI languages and the
192
+ complete developer workspace. A generated file, typecheck or HTTP 200 alone
193
+ does not verify these flows.
194
+
195
+ Native adapter evidence covers all four targets; local D1 uses real workerd.
196
+ Initial Admin module imports perform no DB work. Startup graphs, uploaded total,
197
+ SDK package bytes and query/write/cold timing are separate checks. Extra selected
198
+ Admin indexes add write/storage maintenance; an indexed SELECT plan does not
199
+ prove unchanged write latency. Report remaining gates honestly; this guide does not promise measured performance.
200
+
201
+ ## Extension declarations
202
+
203
+ Pass full declarations to `--admin-extensions`. Generation emits
204
+ `extensionMetadata` in `admin-descriptors.ts` and compiled settings checks plus
205
+ `extensionBindings` in `admin-extensions.ts`. Bind the same runtime definitions
206
+ (including handlers) with `extensionBindings(adminExtensions)`, and merge the
207
+ returned `extensions` and `routes` into `admin()` options. Declaration drift is
208
+ refused before any handler runs. The older descriptor `extensionBindings` export
209
+ contains manifest UI references only; it is not the runtime binding function.
210
+
211
+ Native Admin does not serve `source` modules or modify shell import maps. Serve
212
+ an extension's `module` at a same-origin absolute path and install its `integrity`
213
+ in the host shell import map. Selecting `source` fails generation with that
214
+ instruction. This differs from historical 0.2's automatic source-module route.
215
+
216
+ Entry lists and editor reads/writes return translation badges and related
217
+ sections in one authorized HTTP response. `/bootstrap?collection=...` can include
218
+ the first requested list page. CSV exports use `/entries/export` and
219
+ `/views/{name}/export`; native browser downloads stream paged server output.
220
+ A failure after headers aborts the stream, so a download can fail after partial
221
+ bytes have arrived. Existing databases need an app-owned migration for the
222
+ Admin-selected `created_at` statistics indexes emitted in initial `schema.sql`.
223
+
224
+ ## Collection list template today
225
+
226
+ The compiler derives display/filter metadata from Schema `uiSchema`, searchable fields from `searchableFields`, and sortable fields from indexes plus required/non-null fields and selected system columns. It emits per-collection quoted fragments, row policies and bind recipes; Admin uses one shared `nativeEntryPage` implementation, not Store `find`, `search` or `count` for these lists.
227
+
228
+ Requests select only generated fields and append only supplied predicates. Absent filters are omitted, rather than expressed as `(? IS NULL OR …)`. Sorts and scalar values are checked before the route acquires its DB handle. In 0.2.0 there is no generated Cartesian set of filter variants or variant cap: runtime SQL shapes depend on selected filters, bounded IN lists, search, cursor and order. Only sortable fields are checked for indexes; there is no per-filter-combination index proof. Inspect EXPLAIN for the actual workload.
229
+
230
+ Store keeps `find({ search })`, `first({ search })` and `count(where?)`. See [Store search and count costs](typed-queries.md#store-reads-and-writes): Admin shares the dialect search, and a View does not make PostgreSQL ILIKE faster.
231
+
232
+ ## Collection navigation and operation placement
233
+
234
+ A Schema with a required `x-mantle-ref` folds under its parent collection: it
235
+ opens from the parent entry's workbench and stays out of the sidebar, while
236
+ `/admin/c/<schema>` still lists it; translation children remain on language
237
+ tabs. Set `Schema.spec.uiSchema.nav.standalone: true` to put a required-ref child
238
+ at the top level instead. With multiple eligible references, set
239
+ `nav.parentField` to the chosen reference field.
240
+
241
+ ### Sidebar
242
+
243
+ By default the sidebar lists publishing Schemas under Content, operational Schemas under Records (`operations`),
244
+ admin Views under Reports and Admin's own pages under More, each in name order. A project arranges it for how its
245
+ staff work, in the same manifest change that adds a Schema or View. Placement is presentation only: permissions,
246
+ REST, MCP and storage are unchanged, entries a caller cannot see stay hidden, and an empty group is not shown.
247
+
248
+ - `Schema.spec.uiSchema.nav` and admin `View.spec.uiSchema.nav` take `group` (a group id), `order` (an integer;
249
+ ascending, entries without one follow in name order) and `hidden: true` (out of the sidebar, still at its URL).
250
+ - Built-in groups need no declaration: `content`, `operations`, `reports`, `more`. Project groups are declared once
251
+ as `navGroups` in the `--admin-extensions` module, with a title (text or `{ locale: text }`) and an `order` among
252
+ the built-in groups' content 10, operations 20 and reports 30 (default 50); More always stays last.
253
+ - Extension pages use the same ids: `pages[].nav: { group, order }` (`more` and `settings` keep their places).
254
+
255
+ ```ts
256
+ // src/admin.ts, passed as --admin-extensions src/admin.ts (the app shell already does)
257
+ import type { AdminExtension, AdminNavGroup } from "@aotter/mantle-admin/server/extensions";
258
+ export const navGroups: AdminNavGroup[] = [{ id: "approvals", title: { en: "Approvals", "zh-TW": "簽核" }, order: 5 }];
259
+ export const adminExtensions: AdminExtension[] = [];
260
+ ```
261
+
262
+ ```yaml
263
+ # a Schema or an admin View
264
+ uiSchema: { nav: { group: approvals, order: 1 } }
265
+ ```
266
+
267
+ `mantle generate` refuses an undeclared group, a duplicate or built-in `navGroups` id and a non-integer `order`.
268
+ The purchasing example puts its approval queue and requests in an Approvals group.
269
+
270
+ Operational collections have no generic create or draft: officers add records through a Procedure placed with `collectionAction` (the list header shows its button and input form), so every write is a declared, validated program. For a user-field scoped Schema, SQL INSERT is system-only, so that Procedure is a ref handler that inserts through `ctx.store` ([procedure.md](../reference/procedure.md)).
271
+
272
+ Admin operations are Procedures exposed by an admin MCP Trigger. Declare
273
+ `Procedure.spec.uiSchema.collectionAction: <schema-name>` to show the operation
274
+ in that collection's list header. Row operations are chosen by the Procedure's
275
+ explicit `target: { schema, id, version? }`: `id` names the input bound to the
276
+ row id, and optional `version` names the input bound to its reviewed OCC version.
277
+ Names such as `approve` never determine placement. An operation without a row
278
+ target or collection action appears on the Operations page, whose sidebar link
279
+ appears whenever such operations exist.
280
+
281
+ Generated row metadata includes simple AND-ed equality/IN literal conditions
282
+ from the target-row UPDATE/DELETE WHERE. The menu hides known mismatches; missing
283
+ preview values and unsupported predicates leave actions available. These are
284
+ presentation hints: the Procedure still enforces its WHERE and authorization.
285
+ Conflicts show a localized refresh message with the technical diagnostic in
286
+ Details. Successful actions show a short summary and changes, with raw output
287
+ in a collapsed Details disclosure. CSV exports retain UTC wire timestamps.
288
+
289
+ Developer Model and Logic pages share an object sidebar on wide containers
290
+ and an object-list drawer on narrow containers.
291
+ Schema Live data previews use collection routes even for folded children.
292
+ Pass `bindings.developerViews` as the Admin `developerViews` option for
293
+ public and admin View previews; ordinary Admin View routes and exports use
294
+ only `bindings.views` (admin Views). View previews use the read-only `/admin/api/developer/views/<view>` route,
295
+ with the signed-in admin caller and the same authorization, scope, TTL and
296
+ publishing policy as REST. Public Views retain public visibility; internal or
297
+ disallowed Views show an unavailable explanation. Previews never use a system
298
+ caller or bypass a View's `requires`.
@@ -0,0 +1,132 @@
1
+ # Generated native execution
2
+
3
+ Views and SQL Procedures execute compiled SQL through the selected native driver. The compiler stays build-time only. The app owns native handles, pools, verified Caller, boundary validation and resources. Import direct operation entries to omit unused operations.
4
+
5
+ Supported targets are Bun SQLite/PostgreSQL and Cloudflare D1/PostgreSQL. The [driver boundary is open; dialects are closed](../concepts/runtime-and-adapters.md#drivers-and-dialects). Generation emits initial SQL; [the runtime runs no DDL or schema checks](../concepts/runtime-and-adapters.md#schema-installation-and-migrations).
6
+
7
+ ## Query inputs, values and outcomes
8
+
9
+ The default typed query accepts application-validated parameters and a verified
10
+ Caller, binds literal SQL using the official driver, and returns that target's
11
+ native result types. Generated TypeScript is a compile-time contract, not a
12
+ validator for untrusted data. The application must validate external input before
13
+ calling it. Generate-time schema/SQL diagnostics remain mandatory.
14
+
15
+ The bare query must not recursively scan JSON, construct validators, revalidate
16
+ known database rows, normalize errors across databases, or require universal row
17
+ decoding. Direct in-process values are owned by their application caller; input
18
+ bounds, JSON defaults and computed result types are handled explicitly by the
19
+ application boundary rather than assumed from TypeScript.
20
+
21
+ Driver-native PostgreSQL types and SQLite/D1 types need not match, except for
22
+ declared date-time and date outputs (below), which the SQL formats. That does not
23
+ justify overriding every PG type parser or adding a generic decoder to the bare
24
+ query. Authored output names should be emitted into SQL where valid, avoiding
25
+ an extra per-row projection merely to repair names already known at generation.
26
+
27
+ Selected REST/MCP/Admin boundaries use static generated column lineage. Declared
28
+ integers (including aliased system versions) are `number | string | null` on every
29
+ target: safe integers become numbers; unsafe integers remain exact decimal text.
30
+ Selected SQL projections cast integers and hidden integer cursor keys to text
31
+ before the driver reads them, preserving stored int64 values on SQLite/D1 and
32
+ PostgreSQL. Values already rounded when written
33
+ (e.g. by a JavaScript number) cannot be recovered.
34
+ `views/<name>.ts` exports both driver-native `Row` and `WireRow` (declared wire fields agree across targets);
35
+ `paged/views/<name>.ts` keeps native `Row` rows; REST/MCP use separate
36
+ `paged/wire/views/<name>.ts` SQL and convert at their boundary. SQLite/D1 declared JSON
37
+ and boolean columns become JSON values and booleans, preserving aliases and nulls;
38
+ PostgreSQL already returns those native values.
39
+ Declared real/float outputs remain numbers. Computed outputs without proved lineage,
40
+ SQL Procedures and app-owned ref results retain native values and types.
41
+ Bare Views/Procedures, the Store, web pages and internal paged Views stay
42
+ driver-native; bare queries and the Store receive no integer SQL projection,
43
+ transport conversion or runtime schema interpreter.
44
+
45
+ Declared authorization, ownership/TTL SQL policy, explicit OCC and atomic writes
46
+ remain required. Generate them as the native application would implement them.
47
+ Transaction rollback and uncertain COMMIT handling must still preserve data-loss
48
+ protection and client disposal responsibility; native errors are rethrown (one exception, below), and
49
+ redaction before they reach HTTP users belongs to the application boundary through `wire` / `surfaceFailure`. Removing generic error
50
+ normalization does not authorize dropping transaction outcome evidence.
51
+
52
+ **Single-statement writes:** a Procedure with one statement is atomic on its own
53
+ and runs in autocommit, with no BEGIN/COMMIT on PG or native transaction on Bun
54
+ SQLite. A row-classified statement touches at most one row (one-row INSERT or
55
+ unique `id =`), so a failed count check after autocommit has changed nothing.
56
+ On PG it runs at the server's default isolation, not SERIALIZABLE: a concurrent
57
+ OCC loser re-evaluates its `version =` predicate, matches zero rows and returns
58
+ `CONFLICT` instead of SQLSTATE 40001. A server ErrorResponse (SQLSTATE and
59
+ severity) is a known rollback and is rethrown natively, except a unique violation (23505, SQLite's `UNIQUE constraint failed`), which, in a generated Procedure or a Store write, is `ContractError("CONFLICT")` with the native error as `cause` on every target, and except connection,
60
+ resource and shutdown classes (08, 28, 53, 57, 58, XX), which, like any failure
61
+ without a server response (lost socket), are `OUTCOME_UNKNOWN`. SQLSTATE is
62
+ `errno` on Bun.SQL and `code` on postgres.js. Multi-statement Procedures run in
63
+ `begin("isolation level serializable", ...)`: a failure before the callback
64
+ returns was rolled back by `begin`; only a failed COMMIT is classified as above.
65
+
66
+ **Date-time wire form:** a View output that is a declared `date-time` column
67
+ (including `created_at`/`updated_at`) returns the handbook's wire form, an ISO
68
+ string in UTC with six fractional digits; a declared `date` returns `YYYY-MM-DD`.
69
+ The generator wraps those SELECT items before the dialect's own printer prints them
70
+ (`to_char` on PostgreSQL, `strftime`/`date` with floor arithmetic on SQLite), so the
71
+ database formats them and no row decoder runs. Bun.SQL's `Date` would drop
72
+ microseconds. A write's `RETURNING` of such a column gets the same form. Inputs bound to a declared date-time take the same ISO text (or a
73
+ valid `Date`), and a declared date takes `YYYY-MM-DD` text, on every target: a
74
+ timestamp needs `Z` or an offset and hours 00-23, a day that does not exist is refused with `SQL_TYPE` before the write, and SQLite receives
75
+ microseconds and days while PostgreSQL receives the canonical text. Computed values
76
+ (`now()`, `date_trunc`, `CAST`) carry no declared type and stay driver-native; on
77
+ PostgreSQL through Bun.SQL that is a `Date`, which drops microseconds. Other
78
+ declared scalars are driver-native.
79
+
80
+ Driver-ready JSON parameters are text on every target (a JavaScript array would otherwise be bound as a PostgreSQL array), so the application serializes them. Bare PG SQL declares each JSON parameter as text
81
+ (`CAST(CAST($n AS text) AS jsonb)`), so Bun.SQL sends the text verbatim instead of
82
+ JSON-encoding it again; generation refuses a JSON parameter used any other way. SQLite bool/date/timestamp/numeric parameters use their declared
83
+ storage representations. Bound optional fields become explicit required values,
84
+ with null representing absence; D1 cannot bind undefined. Native output keys are
85
+ SQL names rather than a post-query camel-case projection. PG uses the driver's
86
+ default type parsers (including Date and int8 strings); custom application parser
87
+ configuration changes application-owned behavior. Procedures expose raw
88
+ `{ results }`, not a claim of validated authored output.
89
+
90
+ The application resolves a verified Caller once at its entry, using its selected
91
+ auth module or identity. Bare queries accept that application-supplied Caller and
92
+ do not verify credentials. SQL binds the caller subject directly; a system
93
+ caller is application-owned and never wire input.
94
+
95
+
96
+ ## PostgreSQL settings
97
+
98
+ The app owns role/database configuration, statement timeouts, pool lifetime and retries. Configure persistent session settings there rather than issuing request-time SETs; Hyperdrive does not retain them. UTC is useful for application-owned timestamp expressions; generated declared timestamp outputs are formatted explicitly. Requests neither set nor validate role settings.
99
+
100
+ ## Ref Procedures
101
+
102
+ Generation emits a `Handlers` interface. Pass implementations at `store(db, caller, { handlers })` and to selected surfaces. `requires` is checked before the ref handler receives `(ctx, input)`; `ctx` contains `{ caller, db, store }` bound to the actual Caller and transaction. Missing implementations fail typechecking; a missing runtime key is `HANDLER_NOT_REGISTERED`. Handler failures propagate unchanged. Handlers own business rules, side effects and explicit transaction boundaries.
103
+
104
+ Lifecycle and schedule Triggers and dynamic authorization guards are rejected by generation. Use app-owned handlers and scheduling. HTTP/MCP Triggers expose declared Procedures.
105
+
106
+ ## TTL maintenance
107
+
108
+ A TTL Schema generates `<schema>.sweepExpired(db, caller, { limit?, cursor?, delete? })`
109
+ in `procedures/<schema>.sweepExpired.ts`. Only an application-created system caller
110
+ with a non-empty reason may invoke it; HTTP/OAuth callers cannot become system
111
+ callers. The app owns scheduling. Schedule/lifecycle Triggers remain refused.
112
+
113
+ The sweep returns `{ scanned, removed, nextCursor? }`, defaults to 500 candidates,
114
+ and accepts limits 1..500. `delete: false` scans without deleting. Cursors belong
115
+ to that Schema's sweep. NULL and future TTL values survive; a timestamp exactly
116
+ at the shared dialect cutoff expires. Maintenance deliberately ignores scope and
117
+ publishing visibility, deleting expired rows across tenants. Candidate selection
118
+ and deletion run atomically through the native driver with its existing uncertain
119
+ transaction outcome handling. Native triggers may suppress deletes, so scanned
120
+ and removed counts can differ; the cursor advances over selected candidates.
121
+
122
+
123
+ Keep the sweep import in the scheduled entry; apps selecting unrelated operations
124
+ exclude maintenance code. Set `triggers.crons` in Wrangler yourself. The SDK's
125
+ `toCloudflareCron` helper (the `cron` subpath) converts five-field POSIX schedules
126
+ (weekday 0=Sunday) to Cloudflare weekdays (1=Sunday); it refuses ambiguous schedules
127
+ that restrict both day-of-month and weekday. This is conversion only, no dispatcher.
128
+ Bound scheduled work to your host's execution budget; keep the returned cursor
129
+ when continuing a larger sweep in a later invocation.
130
+
131
+
132
+ See [publishing and translations](../concepts/lifecycle-and-locales.md), [Store](typed-queries.md), [surfaces](../reference/surface.md) and [Admin](native-admin.md) for selected capabilities.