@aotter/mantle 0.1.5-alpha.1 → 0.2.0-alpha.10

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 (495) hide show
  1. package/README.md +166 -298
  2. package/dist/auth/adapter.d.ts +32 -0
  3. package/dist/auth/adapter.js +288 -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 +226 -0
  17. package/dist/build/compiler.d.ts +721 -0
  18. package/dist/build/compiler.js +7029 -0
  19. package/dist/build/spec/domain/model/ManifestGrammar.d.ts +439 -0
  20. package/dist/build/spec/domain/model/RuntimePlan.d.ts +168 -0
  21. package/dist/build/spec/domain/model/SqlIr.d.ts +129 -0
  22. package/dist/build/spec/domain/model/UserFields.d.ts +21 -0
  23. package/dist/build/spec/domain/service/PlanFingerprint.d.ts +7 -0
  24. package/dist/build/spec/kernel/diagnostic.d.ts +108 -0
  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 +57 -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 +24 -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 +188 -0
  50. package/dist/infrastructure/cli.js +118 -0
  51. package/dist/infrastructure/generate.d.ts +12 -0
  52. package/dist/infrastructure/generate.js +189 -0
  53. package/dist/infrastructure/generateAuth.d.ts +8 -0
  54. package/dist/infrastructure/generateAuth.js +74 -0
  55. package/dist/infrastructure/help.js +60 -0
  56. package/dist/infrastructure/init.js +54 -0
  57. package/dist/infrastructure/inputs.js +41 -0
  58. package/dist/infrastructure/mounts.js +25 -0
  59. package/dist/infrastructure/wrangler.js +109 -0
  60. package/dist/kernel/authorization.d.ts +4 -0
  61. package/dist/kernel/authorization.js +16 -0
  62. package/dist/kernel/binds.d.ts +60 -0
  63. package/dist/kernel/binds.js +49 -0
  64. package/dist/kernel/caller-identity.d.ts +24 -0
  65. package/dist/kernel/caller-identity.js +22 -0
  66. package/dist/kernel/contract-error.d.ts +12 -0
  67. package/dist/kernel/contract-error.js +14 -0
  68. package/dist/kernel/contracts.d.ts +143 -0
  69. package/dist/kernel/contracts.js +97 -0
  70. package/dist/kernel/cron.d.ts +1 -0
  71. package/dist/kernel/cron.js +58 -0
  72. package/dist/kernel/dialect/common.d.ts +38 -0
  73. package/dist/kernel/dialect/common.js +6 -0
  74. package/dist/kernel/dialect/postgres.d.ts +16 -0
  75. package/dist/kernel/dialect/postgres.js +18 -0
  76. package/dist/kernel/dialect/sqlite.d.ts +20 -0
  77. package/dist/kernel/dialect/sqlite.js +34 -0
  78. package/dist/kernel/drain.d.ts +5 -0
  79. package/dist/kernel/drain.js +35 -0
  80. package/dist/kernel/driver/bun-sqlite.d.ts +19 -0
  81. package/dist/kernel/driver/bun-sqlite.js +77 -0
  82. package/dist/kernel/driver/d1.d.ts +24 -0
  83. package/dist/kernel/driver/d1.js +22 -0
  84. package/dist/kernel/driver/postgres.d.ts +25 -0
  85. package/dist/kernel/driver/postgres.js +99 -0
  86. package/dist/kernel/driver/transaction-context.d.ts +10 -0
  87. package/dist/kernel/driver/transaction-context.js +29 -0
  88. package/dist/kernel/email.d.ts +28 -0
  89. package/dist/kernel/email.js +38 -0
  90. package/dist/kernel/host-access.d.ts +10 -0
  91. package/dist/kernel/host-access.js +65 -0
  92. package/dist/kernel/host-caller.d.ts +39 -0
  93. package/dist/kernel/host-caller.js +56 -0
  94. package/dist/kernel/json-body.d.ts +4 -0
  95. package/dist/kernel/json-body.js +44 -0
  96. package/dist/kernel/mcp-apps.d.ts +69 -0
  97. package/dist/kernel/mcp-apps.js +40 -0
  98. package/dist/kernel/mcp-call.d.ts +5 -0
  99. package/dist/kernel/mcp-call.js +25 -0
  100. package/dist/kernel/mcp-handler.js +371 -0
  101. package/dist/kernel/mcp.d.ts +110 -0
  102. package/dist/kernel/mcp.js +50 -0
  103. package/dist/kernel/media.d.ts +27 -0
  104. package/dist/kernel/media.js +216 -0
  105. package/dist/kernel/paging.d.ts +55 -0
  106. package/dist/kernel/paging.js +95 -0
  107. package/dist/kernel/publishing.d.ts +4 -0
  108. package/dist/kernel/publishing.js +16 -0
  109. package/dist/kernel/r2-media.d.ts +42 -0
  110. package/dist/kernel/r2-media.js +78 -0
  111. package/dist/kernel/rest-dispatch.js +38 -0
  112. package/dist/kernel/rest-router.js +64 -0
  113. package/dist/kernel/rest.d.ts +58 -0
  114. package/dist/kernel/rest.js +41 -0
  115. package/dist/kernel/scalars.d.ts +6 -0
  116. package/dist/kernel/scalars.js +44 -0
  117. package/dist/kernel/search.js +5 -0
  118. package/dist/kernel/site-types.d.ts +146 -0
  119. package/dist/kernel/site-types.js +1 -0
  120. package/dist/kernel/site.d.ts +39 -0
  121. package/dist/kernel/site.js +32 -0
  122. package/dist/kernel/store.d.ts +175 -0
  123. package/dist/kernel/store.js +269 -0
  124. package/dist/kernel/surface.d.ts +10 -0
  125. package/dist/kernel/surface.js +19 -0
  126. package/dist/kernel/sweep.d.ts +17 -0
  127. package/dist/kernel/sweep.js +27 -0
  128. package/dist/kernel/translations.d.ts +1 -0
  129. package/dist/kernel/translations.js +13 -0
  130. package/dist/kernel/user-caller.d.ts +31 -0
  131. package/dist/kernel/user-caller.js +67 -0
  132. package/dist/kernel/user-field-name.js +3 -0
  133. package/dist/kernel/user-fields.d.ts +35 -0
  134. package/dist/kernel/user-fields.js +81 -0
  135. package/dist/kernel/validation.d.ts +15 -0
  136. package/dist/kernel/validation.js +54 -0
  137. package/dist/kernel/web-gateway.js +68 -0
  138. package/dist/kernel/web-head.js +15 -0
  139. package/dist/kernel/web-index.js +40 -0
  140. package/dist/kernel/web-response.js +8 -0
  141. package/dist/kernel/web.d.ts +77 -0
  142. package/dist/kernel/web.js +124 -0
  143. package/dist/kernel/where.js +27 -0
  144. package/dist/testing/index.d.ts +1 -0
  145. package/dist/testing/index.js +1 -0
  146. package/dist/usecase/adminBindings.js +143 -0
  147. package/dist/usecase/adminClient.js +87 -0
  148. package/dist/usecase/adminDescriptors.js +107 -0
  149. package/dist/usecase/generate.js +166 -0
  150. package/dist/usecase/handlers.js +21 -0
  151. package/dist/usecase/mcp-media.js +17 -0
  152. package/dist/usecase/mcp.js +100 -0
  153. package/dist/usecase/paging.js +71 -0
  154. package/dist/usecase/publishing.js +63 -0
  155. package/dist/usecase/refusals.js +27 -0
  156. package/dist/usecase/rest.js +54 -0
  157. package/dist/usecase/search.js +7 -0
  158. package/dist/usecase/site.js +39 -0
  159. package/dist/usecase/stores.js +64 -0
  160. package/dist/usecase/tool-version.js +9 -0
  161. package/dist/usecase/translations.js +78 -0
  162. package/dist/usecase/ttl.js +20 -0
  163. package/dist/usecase/validation.js +241 -0
  164. package/dist/usecase/web.js +23 -0
  165. package/docs/examples/README.md +39 -18
  166. package/docs/examples/app-shell/.dev.vars.example +4 -0
  167. package/docs/examples/app-shell/README.md +121 -0
  168. package/docs/examples/app-shell/accept.mjs +91 -0
  169. package/docs/examples/app-shell/gitignore +7 -0
  170. package/docs/examples/app-shell/package.json +43 -0
  171. package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
  172. package/docs/examples/app-shell/smoke-kit.mjs +168 -0
  173. package/docs/examples/app-shell/src/auth.ts +58 -0
  174. package/docs/examples/app-shell/src/handlers.ts +5 -0
  175. package/docs/examples/app-shell/src/index.ts +4 -0
  176. package/docs/examples/app-shell/src/routes.ts +14 -0
  177. package/docs/examples/app-shell/src/schedule.ts +8 -0
  178. package/docs/examples/app-shell/src/service.ts +70 -0
  179. package/docs/examples/app-shell/src/sign-in.ts +41 -0
  180. package/docs/examples/app-shell/src/signup.ts +8 -0
  181. package/docs/examples/app-shell/tsconfig.json +26 -0
  182. package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
  183. package/docs/examples/app-shell/wrangler.jsonc +62 -0
  184. package/docs/examples/club-events/README.md +65 -0
  185. package/docs/examples/club-events/manifests/club-events.yaml +247 -0
  186. package/docs/examples/club-events/smoke.mjs +127 -0
  187. package/docs/examples/club-events/src/handlers.ts +25 -0
  188. package/docs/examples/club-events/src/signup.ts +9 -0
  189. package/docs/examples/generated-web/README.md +78 -0
  190. package/docs/examples/generated-web/posts.yaml +38 -0
  191. package/docs/examples/generated-web/seed.sql +6 -0
  192. package/docs/examples/generated-web/src/worker.ts +43 -0
  193. package/docs/examples/generated-web/tsconfig.json +8 -0
  194. package/docs/examples/generated-web/wrangler.jsonc +8 -0
  195. package/docs/examples/purchasing/.dev.vars.example +6 -0
  196. package/docs/examples/purchasing/README.md +99 -0
  197. package/docs/examples/purchasing/manifests/purchasing.yaml +374 -0
  198. package/docs/examples/purchasing/seed.sql +4 -0
  199. package/docs/examples/purchasing/smoke.mjs +191 -0
  200. package/docs/examples/purchasing/src/admin.tsx +13 -0
  201. package/docs/examples/purchasing/src/handlers.ts +33 -0
  202. package/docs/examples/purchasing/src/notify.ts +29 -0
  203. package/docs/examples/purchasing/src/requests-page.ts +57 -0
  204. package/docs/examples/purchasing/src/routes.ts +53 -0
  205. package/docs/examples/purchasing/src/schedule.ts +31 -0
  206. package/docs/examples/purchasing/src/signup.ts +5 -0
  207. package/docs/examples/purchasing/src/supplier.ts +32 -0
  208. package/docs/examples/purchasing/wrangler.jsonc +69 -0
  209. package/docs/examples/recipes/README.md +60 -0
  210. package/docs/examples/recipes/manifests/recipes.yaml +75 -0
  211. package/docs/examples/recipes/smoke.mjs +102 -0
  212. package/docs/examples/recipes/src/media.ts +13 -0
  213. package/docs/examples/recipes/src/pages.ts +99 -0
  214. package/docs/examples/recipes/src/routes.ts +71 -0
  215. package/docs/examples/recipes/src/site-config.ts +12 -0
  216. package/docs/examples/recipes/wrangler.jsonc +74 -0
  217. package/docs/handbook/cloudflare/authentication.md +180 -322
  218. package/docs/handbook/cloudflare/chatgpt-sites.md +5 -23
  219. package/docs/handbook/cloudflare/deploy-and-operate.md +55 -77
  220. package/docs/handbook/cloudflare/media-r2.md +61 -205
  221. package/docs/handbook/cloudflare/service-entry.md +239 -0
  222. package/docs/handbook/concepts/authorization.md +10 -107
  223. package/docs/handbook/concepts/four-atoms.md +9 -168
  224. package/docs/handbook/concepts/lifecycle-and-locales.md +9 -132
  225. package/docs/handbook/concepts/mcp-and-agents.md +24 -121
  226. package/docs/handbook/concepts/procedures-and-triggers.md +5 -217
  227. package/docs/handbook/concepts/runtime-and-adapters.md +15 -169
  228. package/docs/handbook/concepts/views.md +10 -185
  229. package/docs/handbook/examples/hub.md +3 -8
  230. package/docs/handbook/guides/adapter-guide.md +11 -0
  231. package/docs/handbook/guides/admin-ui.md +115 -133
  232. package/docs/handbook/guides/agent-setup.md +64 -74
  233. package/docs/handbook/guides/agent-workflow-acceptance.md +232 -0
  234. package/docs/handbook/guides/email.md +86 -0
  235. package/docs/handbook/guides/local-testing.md +40 -0
  236. package/docs/handbook/guides/mcp-apps.md +560 -0
  237. package/docs/handbook/guides/native-admin.md +566 -0
  238. package/docs/handbook/guides/native-execution.md +133 -0
  239. package/docs/handbook/guides/oauth.md +219 -0
  240. package/docs/handbook/guides/postgres-adapters.md +56 -0
  241. package/docs/handbook/guides/public-pages.md +87 -0
  242. package/docs/handbook/guides/size-and-startup.md +9 -0
  243. package/docs/handbook/guides/sql-patterns.md +266 -0
  244. package/docs/handbook/guides/typed-queries.md +211 -107
  245. package/docs/handbook/navigation.json +176 -55
  246. package/docs/handbook/reference/admin-descriptors.md +53 -0
  247. package/docs/handbook/reference/authorization.md +39 -266
  248. package/docs/handbook/reference/describe.md +56 -0
  249. package/docs/handbook/reference/diagnostics.md +19 -186
  250. package/docs/handbook/reference/features.md +45 -55
  251. package/docs/handbook/reference/manifest.md +6 -129
  252. package/docs/handbook/reference/procedure.md +11 -303
  253. package/docs/handbook/reference/schema.md +64 -240
  254. package/docs/handbook/reference/site-config.md +5 -218
  255. package/docs/handbook/reference/sql.md +64 -0
  256. package/docs/handbook/reference/surface.md +392 -201
  257. package/docs/handbook/reference/trigger.md +56 -192
  258. package/docs/handbook/reference/view.md +24 -243
  259. package/docs/handbook/releases/index.md +244 -77
  260. package/docs/handbook/start/agents.md +45 -0
  261. package/docs/handbook/start/overview.md +9 -48
  262. package/docs/handbook/start/project-and-cli.md +51 -104
  263. package/docs/handbook/start/quickstart-worker.md +43 -178
  264. package/docs/skills/develop/SKILL.md +79 -249
  265. package/docs/skills/integrate/SKILL.md +39 -50
  266. package/docs/skills/media-gc/SKILL.md +34 -10
  267. package/docs/skills/provision/SKILL.md +36 -186
  268. package/docs/skills/update/SKILL.md +23 -38
  269. package/docs/source/scripts/postgres-adapter.ts +101 -0
  270. package/docs/upgrade-0.1-to-0.2.md +227 -0
  271. package/package.json +120 -131
  272. package/skills/README.md +48 -108
  273. package/skills/mantle/SKILL.md +76 -0
  274. package/dist/admin-ui.d.ts +0 -2
  275. package/dist/admin-ui.d.ts.map +0 -1
  276. package/dist/admin-ui.js +0 -2
  277. package/dist/admin-ui.js.map +0 -1
  278. package/dist/admin.d.ts +0 -2
  279. package/dist/admin.d.ts.map +0 -1
  280. package/dist/admin.js +0 -2
  281. package/dist/admin.js.map +0 -1
  282. package/dist/auth.d.ts +0 -2
  283. package/dist/auth.d.ts.map +0 -1
  284. package/dist/auth.js +0 -2
  285. package/dist/auth.js.map +0 -1
  286. package/dist/bun.d.ts +0 -2
  287. package/dist/bun.d.ts.map +0 -1
  288. package/dist/bun.js +0 -2
  289. package/dist/bun.js.map +0 -1
  290. package/dist/cli/generate-cloudflare.d.ts +0 -7
  291. package/dist/cli/generate-cloudflare.d.ts.map +0 -1
  292. package/dist/cli/generate-cloudflare.js +0 -123
  293. package/dist/cli/generate-cloudflare.js.map +0 -1
  294. package/dist/cli/generate-project.d.ts +0 -25
  295. package/dist/cli/generate-project.d.ts.map +0 -1
  296. package/dist/cli/generate-project.js +0 -282
  297. package/dist/cli/generate-project.js.map +0 -1
  298. package/dist/cli/generate-sites.d.ts +0 -8
  299. package/dist/cli/generate-sites.d.ts.map +0 -1
  300. package/dist/cli/generate-sites.js +0 -273
  301. package/dist/cli/generate-sites.js.map +0 -1
  302. package/dist/cli/generate.d.ts +0 -20
  303. package/dist/cli/generate.d.ts.map +0 -1
  304. package/dist/cli/generate.js +0 -299
  305. package/dist/cli/generate.js.map +0 -1
  306. package/dist/cli/harness.d.ts +0 -3
  307. package/dist/cli/harness.d.ts.map +0 -1
  308. package/dist/cli/harness.js +0 -214
  309. package/dist/cli/harness.js.map +0 -1
  310. package/dist/cli/main.d.ts +0 -3
  311. package/dist/cli/main.d.ts.map +0 -1
  312. package/dist/cli/main.js +0 -77
  313. package/dist/cli/main.js.map +0 -1
  314. package/dist/cli/skills.d.ts +0 -3
  315. package/dist/cli/skills.d.ts.map +0 -1
  316. package/dist/cli/skills.js +0 -128
  317. package/dist/cli/skills.js.map +0 -1
  318. package/dist/cloudflare.d.ts +0 -2
  319. package/dist/cloudflare.d.ts.map +0 -1
  320. package/dist/cloudflare.js +0 -2
  321. package/dist/cloudflare.js.map +0 -1
  322. package/dist/codegen/emitMantleModule.d.ts +0 -22
  323. package/dist/codegen/emitMantleModule.d.ts.map +0 -1
  324. package/dist/codegen/emitMantleModule.js +0 -291
  325. package/dist/codegen/emitMantleModule.js.map +0 -1
  326. package/dist/codegen.d.ts +0 -2
  327. package/dist/codegen.d.ts.map +0 -1
  328. package/dist/codegen.js +0 -2
  329. package/dist/codegen.js.map +0 -1
  330. package/dist/runtime-testing.d.ts +0 -2
  331. package/dist/runtime-testing.d.ts.map +0 -1
  332. package/dist/runtime-testing.js +0 -2
  333. package/dist/runtime-testing.js.map +0 -1
  334. package/dist/runtime.d.ts +0 -2
  335. package/dist/runtime.d.ts.map +0 -1
  336. package/dist/runtime.js +0 -2
  337. package/dist/runtime.js.map +0 -1
  338. package/dist/spec.d.ts +0 -2
  339. package/dist/spec.d.ts.map +0 -1
  340. package/dist/spec.js +0 -2
  341. package/dist/spec.js.map +0 -1
  342. package/dist/vercel-libsql.d.ts +0 -2
  343. package/dist/vercel-libsql.d.ts.map +0 -1
  344. package/dist/vercel-libsql.js +0 -2
  345. package/dist/vercel-libsql.js.map +0 -1
  346. package/dist/vercel.d.ts +0 -2
  347. package/dist/vercel.d.ts.map +0 -1
  348. package/dist/vercel.js +0 -2
  349. package/dist/vercel.js.map +0 -1
  350. package/dist/web.d.ts +0 -2
  351. package/dist/web.d.ts.map +0 -1
  352. package/dist/web.js +0 -2
  353. package/dist/web.js.map +0 -1
  354. package/docs/adapter-guide.md +0 -222
  355. package/docs/adr/0001-four-atom-manifest-model.md +0 -440
  356. package/docs/adr/0002-closed-enums-for-bindings.md +0 -253
  357. package/docs/adr/0007-ai-as-primary-author.md +0 -473
  358. package/docs/adr/0008-structured-diagnostic-shape.md +0 -338
  359. package/docs/adr/0009-consumer-supplied-manifests.md +0 -149
  360. package/docs/adr/0010-locale-and-translates.md +0 -453
  361. package/docs/adr/0011-adapter-port-spec.md +0 -281
  362. package/docs/adr/0012-views-as-public-rest.md +0 -161
  363. package/docs/adr/0013-agent-provisioned-consumer-projects.md +0 -154
  364. package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +0 -900
  365. package/docs/adr/0016-site-semantic-layer.md +0 -70
  366. package/docs/adr/0017-media-multi-variant-agent-side-optimization.md +0 -181
  367. package/docs/adr/0018-core-starters-repository-boundary.md +0 -179
  368. package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +0 -240
  369. package/docs/adr/0020-builtin-handler-contracts-and-matched-upsert.md +0 -199
  370. package/docs/adr/0021-retire-starter-scaffolding.md +0 -30
  371. package/docs/adr/0022-caller-observed-version-occ.md +0 -212
  372. package/docs/adr/0023-port-failure-contract.md +0 -69
  373. package/docs/adr/0024-manifest-native-schema-tables.md +0 -264
  374. package/docs/adr/0025-reserved-native-columns-and-published-only-public-views.md +0 -105
  375. package/docs/adr/0026-progressive-generate.md +0 -36
  376. package/docs/adr/0027-scheduled-procedure-triggers.md +0 -31
  377. package/docs/adr/0028-schema-ttl-expiry.md +0 -33
  378. package/docs/adr/README.md +0 -81
  379. package/docs/adr/adr-lite-803-request-diagnostics.md +0 -38
  380. package/docs/adr/adr-lite-808-route-readiness.md +0 -47
  381. package/docs/adr/adr-lite-809-bounded-public-content.md +0 -71
  382. package/docs/adr/adr-lite-812-native-parity.md +0 -150
  383. package/docs/adr/adr-lite-823-home-statistics.md +0 -64
  384. package/docs/adr/adr-lite-842-mcp-authoring.md +0 -30
  385. package/docs/adr/adr-lite-845-frontend-client.md +0 -38
  386. package/docs/adr/adr-lite-861-admin-webmcp.md +0 -42
  387. package/docs/adr/adr-lite-909-admin-ui-kit.md +0 -37
  388. package/docs/agent-prompts.md +0 -64
  389. package/docs/api-mcp-authorization.md +0 -5
  390. package/docs/assets/mantle-admin-developer.png +0 -0
  391. package/docs/assets/mantle-admin-operations.png +0 -0
  392. package/docs/assets/mantle-hero.jpg +0 -0
  393. package/docs/auth-hosting-model.md +0 -166
  394. package/docs/cloudflare-low-level-composition.md +0 -5
  395. package/docs/consumer-onboarding-audit.md +0 -65
  396. package/docs/deferred-lifecycle-queues.md +0 -5
  397. package/docs/design-atoms.md +0 -16
  398. package/docs/design-references/editorial-blog-2026-05-05.md +0 -218
  399. package/docs/direct-authoring.md +0 -5
  400. package/docs/examples/builtin-commerce.md +0 -269
  401. package/docs/examples/builtin-intake.md +0 -143
  402. package/docs/examples/builtin-legal-documents.md +0 -189
  403. package/docs/examples/builtin-procurement.md +0 -241
  404. package/docs/examples/builtin-publication.md +0 -241
  405. package/docs/examples/builtin-reservation.md +0 -149
  406. package/docs/examples/cf-primitives-commerce-inventory.md +0 -809
  407. package/docs/examples/cf-primitives-guarded-api.md +0 -429
  408. package/docs/examples/cf-primitives-intake-hooks.md +0 -319
  409. package/docs/examples/host-chatgpt-sites/.openai/hosting.json +0 -1
  410. package/docs/examples/host-chatgpt-sites/README.md +0 -70
  411. package/docs/examples/host-chatgpt-sites/drizzle/0000_sites_users.sql +0 -8
  412. package/docs/examples/host-chatgpt-sites/drizzle/0001_mantle.sql +0 -294
  413. package/docs/examples/host-chatgpt-sites/drizzle/0002_article_cover.sql +0 -5
  414. package/docs/examples/host-chatgpt-sites/drizzle/0003_store_instance_id.sql +0 -1
  415. package/docs/examples/host-chatgpt-sites/drizzle/0004_mantle.sql +0 -10
  416. package/docs/examples/host-chatgpt-sites/drizzle/0005_mantle.sql +0 -24
  417. package/docs/examples/host-chatgpt-sites/drizzle/meta/_journal.json +0 -1
  418. package/docs/examples/host-chatgpt-sites/drizzle/meta/mantle-state.json +0 -60
  419. package/docs/examples/host-chatgpt-sites/manifests/site.yaml +0 -27
  420. package/docs/examples/host-chatgpt-sites/package.json +0 -1
  421. package/docs/examples/host-chatgpt-sites/public/site.css +0 -1
  422. package/docs/examples/host-chatgpt-sites/scripts/build.mjs +0 -13
  423. package/docs/examples/host-chatgpt-sites/scripts/check.mjs +0 -101
  424. package/docs/examples/host-chatgpt-sites/scripts/migration.mjs +0 -43
  425. package/docs/examples/host-chatgpt-sites/src/chatgpt-auth.ts +0 -66
  426. package/docs/examples/host-chatgpt-sites/src/index.ts +0 -46
  427. package/docs/examples/host-chatgpt-sites/src/mcp.ts +0 -49
  428. package/docs/examples/host-chatgpt-sites/src/media.ts +0 -109
  429. package/docs/examples/host-chatgpt-sites/src/r2-lab.ts +0 -38
  430. package/docs/examples/host-chatgpt-sites/src/storage-fingerprint.json +0 -1
  431. package/docs/examples/host-chatgpt-sites/src/web.ts +0 -35
  432. package/docs/examples/host-chatgpt-sites/tsconfig.json +0 -1
  433. package/docs/examples/host-chatgpt-sites/wrangler.jsonc +0 -10
  434. package/docs/examples/host-local-admin-otp/.dev.vars.example +0 -3
  435. package/docs/examples/host-local-admin-otp/README.md +0 -80
  436. package/docs/examples/host-local-admin-otp/ensure-dev-vars.mjs +0 -5
  437. package/docs/examples/host-local-admin-otp/manifests/site.yaml +0 -25
  438. package/docs/examples/host-local-admin-otp/package.json +0 -29
  439. package/docs/examples/host-local-admin-otp/public/.gitkeep +0 -1
  440. package/docs/examples/host-local-admin-otp/smoke.mjs +0 -141
  441. package/docs/examples/host-local-admin-otp/src/index.ts +0 -54
  442. package/docs/examples/host-local-admin-otp/tsconfig.json +0 -17
  443. package/docs/examples/host-local-admin-otp/wrangler.jsonc +0 -23
  444. package/docs/examples/host-minimal-worker/README.md +0 -41
  445. package/docs/examples/host-minimal-worker/manifests/site.yaml +0 -25
  446. package/docs/examples/host-minimal-worker/package.json +0 -26
  447. package/docs/examples/host-minimal-worker/smoke.mjs +0 -23
  448. package/docs/examples/host-minimal-worker/src/index.ts +0 -4
  449. package/docs/examples/host-minimal-worker/tsconfig.json +0 -17
  450. package/docs/examples/host-minimal-worker/wrangler.jsonc +0 -22
  451. package/docs/handbook/chatgpt-sites/equipment-checkout.md +0 -231
  452. package/docs/handbook/chatgpt-sites/generated-app.md +0 -84
  453. package/docs/handbook/chatgpt-sites/host-reference.md +0 -113
  454. package/docs/handbook/chatgpt-sites/index.md +0 -133
  455. package/docs/handbook/cloudflare/bindings.md +0 -291
  456. package/docs/handbook/cloudflare/conventional-worker.md +0 -166
  457. package/docs/handbook/cloudflare/deferred-hooks-queues.md +0 -170
  458. package/docs/handbook/cloudflare/low-level-composition.md +0 -169
  459. package/docs/handbook/cloudflare/public-web.md +0 -144
  460. package/docs/handbook/cloudflare/site-chrome.md +0 -75
  461. package/docs/handbook/examples/commerce-transaction.md +0 -11
  462. package/docs/handbook/examples/commerce.md +0 -11
  463. package/docs/handbook/examples/guarded-api.md +0 -10
  464. package/docs/handbook/examples/intake-form.md +0 -12
  465. package/docs/handbook/examples/intake-hooks.md +0 -11
  466. package/docs/handbook/examples/legal-documents.md +0 -10
  467. package/docs/handbook/examples/procurement-approvals.md +0 -10
  468. package/docs/handbook/examples/publication.md +0 -10
  469. package/docs/handbook/examples/reservation.md +0 -10
  470. package/docs/handbook/start/quickstart-admin.md +0 -52
  471. package/docs/labels.md +0 -71
  472. package/docs/media-uploads.md +0 -5
  473. package/docs/migration-0.1.2.md +0 -13
  474. package/docs/performance-harness.md +0 -228
  475. package/docs/release-process.md +0 -244
  476. package/docs/schema-indexes.md +0 -5
  477. package/docs/sealed-pipeline-ownership.md +0 -101
  478. package/docs/skills/plugin/SKILL.md +0 -132
  479. package/docs/skills/theme/SKILL.md +0 -77
  480. package/docs/spec-only-host-adoption.md +0 -157
  481. package/docs/transaction-patterns.md +0 -5
  482. package/skills/develop/SKILL.md +0 -258
  483. package/skills/install/SKILL.md +0 -112
  484. package/skills/integrate/SKILL.md +0 -60
  485. package/skills/media-gc/SKILL.md +0 -85
  486. package/skills/plugin/SKILL.md +0 -132
  487. package/skills/provision/SKILL.md +0 -194
  488. package/skills/theme/SKILL.md +0 -77
  489. package/skills/update/SKILL.md +0 -51
  490. package/templates/chatgpt-sites/auth.ts +0 -66
  491. package/templates/chatgpt-sites/build.mjs +0 -14
  492. package/templates/chatgpt-sites/env.ts +0 -1
  493. package/templates/chatgpt-sites/mcp.ts +0 -48
  494. package/templates/chatgpt-sites/public-mcp.ts +0 -29
  495. package/templates/chatgpt-sites/smoke-local.mjs +0 -20
@@ -0,0 +1,721 @@
1
+ export interface SiteDefaults {
2
+ readonly locales?: ReadonlyArray<string>;
3
+ readonly brand?: string;
4
+ readonly title?: string;
5
+ readonly description?: string;
6
+ readonly origin?: string;
7
+ readonly icons?: ReadonlyArray<SiteIcon>;
8
+ readonly media?: SiteMediaDefaults;
9
+ }
10
+ export interface SiteMediaDefaults {
11
+ readonly purposes?: ReadonlyArray<MediaPurposePolicy>;
12
+ }
13
+ export interface MediaPurposePolicy {
14
+ readonly name: string;
15
+ readonly required: readonly string[];
16
+ readonly maxBytes: Readonly<Record<string, number>>;
17
+ }
18
+ export interface SiteIcon {
19
+ readonly src: string;
20
+ readonly mimeType?: "image/png" | "image/jpeg" | "image/svg+xml" | "image/webp";
21
+ readonly sizes?: ReadonlyArray<string>;
22
+ readonly theme?: "light" | "dark";
23
+ }
24
+ export interface ManifestSourceSet {
25
+ readonly sources: readonly ManifestSource[];
26
+ }
27
+ export interface ManifestSource {
28
+ readonly sourceId: string;
29
+ readonly text: string;
30
+ }
31
+ export interface MantleDialect {
32
+ readonly name: string;
33
+ readonly version: string;
34
+ check(plan: SqlPlan, context: SqlContext): readonly SqlDiagnostic[];
35
+ readonly lowering: PolicyLowering;
36
+ readonly nativeOrder?: boolean;
37
+ readonly nativeSql?: boolean;
38
+ print?(ast: SqlNode, schemas: Readonly<Record<string, StorageSchema>>): string;
39
+ readonly lowerKey?: string;
40
+ readonly restricted?: boolean;
41
+ }
42
+ export interface StorageSchema extends SqlSchemaDef {
43
+ readonly checks?: readonly SqlNode[];
44
+ readonly search?: readonly string[];
45
+ readonly unique?: readonly (readonly string[])[];
46
+ readonly indexes?: readonly (readonly string[])[];
47
+ }
48
+ export type SqlNode = Record<string, any>;
49
+ export interface SqlSchemaDef {
50
+ readonly translates?: {
51
+ readonly parent: string;
52
+ readonly on: string;
53
+ };
54
+ readonly scope?: string;
55
+ readonly userScopes?: readonly UserScope[];
56
+ readonly ttl?: string;
57
+ readonly ttlSeconds?: number;
58
+ readonly publishing?: boolean;
59
+ readonly fields: Readonly<Record<string, string>>;
60
+ readonly names?: Readonly<Record<string, string>>;
61
+ readonly schema?: {
62
+ readonly required?: readonly string[];
63
+ readonly properties?: Readonly<Record<string, {
64
+ readonly type?: unknown;
65
+ readonly nullable?: boolean;
66
+ readonly enum?: readonly unknown[];
67
+ readonly oneOf?: readonly {
68
+ readonly const?: unknown;
69
+ }[];
70
+ }>>;
71
+ };
72
+ }
73
+ export interface UserScope {
74
+ readonly column: string;
75
+ readonly field: string;
76
+ readonly type: "string" | "number";
77
+ }
78
+ export interface PolicyLowering {
79
+ anyOf?(x: SqlNode, set: SqlNode, type: 'string' | 'number'): SqlNode;
80
+ input(param: SqlNode, type: string): SqlNode;
81
+ func(f: string, n: SqlNode, scope: LoweringScope): SqlNode | undefined;
82
+ call(out: SqlNode): SqlNode;
83
+ cast(n: SqlNode, scope: LoweringScope): SqlNode;
84
+ sublink(out: SqlNode): SqlNode;
85
+ newId(): SqlNode;
86
+ columns(s: StorageSchema): SqlNode[];
87
+ system?(param: SqlNode, type: "timestamptz"): SqlNode;
88
+ }
89
+ export interface LoweringScope {
90
+ readonly inputs: Readonly<Record<string, string>>;
91
+ param(spec: BindSpec): SqlNode;
92
+ tx(node: SqlNode | undefined): SqlNode;
93
+ alias(name: string): {
94
+ schema: string;
95
+ def: StorageSchema;
96
+ searchQuery?: SqlNode;
97
+ };
98
+ seen(position: RelationPosition): void;
99
+ }
100
+ export type RelationPosition = 'from' | 'join.left' | 'join.right' | 'from-subquery' | 'cte' | 'setop.left' | 'setop.right' | 'sublink' | 'json_each' | 'window' | 'insert-target' | 'insert-select' | 'update-target' | 'delete-target' | 'conflict-update' | 'search' | 'near';
101
+ export type BindSpec = {
102
+ k: 'uid';
103
+ } | {
104
+ k: 'now';
105
+ } | {
106
+ k: 'admin';
107
+ } | {
108
+ k: 'cutoff';
109
+ seconds: number;
110
+ } | {
111
+ k: 'const';
112
+ value: unknown;
113
+ } | {
114
+ k: 'input';
115
+ name: string;
116
+ type: string;
117
+ } | {
118
+ k: 'scoped';
119
+ column: string;
120
+ field: string;
121
+ type: 'string' | 'number';
122
+ name?: string;
123
+ value?: string | number;
124
+ } | {
125
+ k: 'user';
126
+ field: string;
127
+ type: 'string' | 'number';
128
+ multiple: boolean;
129
+ scope?: true;
130
+ } | DialectBind | {
131
+ k: 'version';
132
+ } | {
133
+ k: 'cursor';
134
+ i: number;
135
+ };
136
+ export type DialectBind = {
137
+ readonly k: 'dialect';
138
+ readonly [key: string]: unknown;
139
+ };
140
+ export interface SqlDiagnostic {
141
+ readonly code: SqlDiagnosticCode;
142
+ readonly message: string;
143
+ readonly offset?: number;
144
+ readonly line?: number;
145
+ readonly column?: number;
146
+ readonly token?: string;
147
+ }
148
+ export type SqlDiagnosticCode = Extract<DiagnosticCode, `SQL_${string}` | `USER_FIELD_${string}` | "USER_REF_SCOPE_ONLY" | "AUTH_ROLE_REMOVED">;
149
+ export type DiagnosticCode = (typeof DIAGNOSTIC_CODES)[number];
150
+ export declare const DIAGNOSTIC_CODES: readonly [
151
+ "AUTH_ROLE_REMOVED",
152
+ "USER_FIELD_VALUES_UNENUMERATED",
153
+ "USER_FIELD_INVALID",
154
+ "USER_FIELD_CONFLICT",
155
+ "USER_FIELD_POSITION",
156
+ "USER_REF_SCOPE_ONLY",
157
+ "USER_SCOPE_PUBLIC_ANON_EMPTY",
158
+ "RESOURCE_EXHAUSTED",
159
+ "RESOURCE_UNAVAILABLE",
160
+ "RATE_LIMITED",
161
+ "OUTCOME_UNKNOWN",
162
+ "PARTIAL_FAILURE",
163
+ "PRECONDITION_FAILED",
164
+ "INVALID_MANIFEST_ENVELOPE",
165
+ "DUPLICATE_NAME",
166
+ "VIEW_INPUT_INVALID_SHAPE",
167
+ "VIEW_INPUT_RESERVED_NAME",
168
+ "VIEW_CACHE_INVALID",
169
+ "VIEW_UI_INVALID",
170
+ "REQUIRED_FIELD_UNKNOWN",
171
+ "INVALID_PATTERN",
172
+ "JSON_SCHEMA_UNSUPPORTED",
173
+ "JSON_SCHEMA_REF_INVALID",
174
+ "JSON_SCHEMA_LIMIT_EXCEEDED",
175
+ "AUTH_PREDICATE_NOT_IN_ENUM",
176
+ "GUARD_PROCEDURE_UNKNOWN",
177
+ "GUARD_SELF_REFERENCE",
178
+ "GUARD_PROCEDURE_NOT_REF",
179
+ "GUARD_CHAIN_NOT_ALLOWED",
180
+ "SCHEMA_INDEX_INVALID",
181
+ "SCHEMA_INDEX_FIELD_UNKNOWN",
182
+ "UNIQUE_INDEX_FIELD_UNKNOWN",
183
+ "SCHEMA_SEARCH_INVALID",
184
+ "SCHEMA_SEARCH_FIELD_UNKNOWN",
185
+ "SCHEMA_TTL_INVALID",
186
+ "SCHEMA_UI_INVALID",
187
+ "SCHEMA_NAME_CASE_COLLISION",
188
+ "SCHEMA_READER_NAME_COLLISION",
189
+ "FIELD_NAME_CASE_COLLISION",
190
+ "MANIFEST_ROOT_NOT_FOUND",
191
+ "MANIFEST_READ_FAILED",
192
+ "GENERATE_FEATURE_DEPENDENCY_MISSING",
193
+ "SQL_SYNTAX",
194
+ "SQL_UNSUPPORTED",
195
+ "SQL_FUNCTION",
196
+ "SQL_RELATION",
197
+ "SQL_COLUMN",
198
+ "SQL_WRITE",
199
+ "SQL_SHAPE",
200
+ "SQL_TYPE",
201
+ "FIXTURE_SCHEMA_VIOLATION",
202
+ "HANDLER_NOT_REGISTERED",
203
+ "HANDLER_NOT_DECLARED",
204
+ "PLAN_FINGERPRINT_MISMATCH",
205
+ "SCHEDULE_NOT_WIRED",
206
+ "STORAGE_CHANGE_BLOCKED",
207
+ "STORAGE_TABLE_NOT_OWNED",
208
+ "INVOCATION_DEPTH_EXCEEDED",
209
+ "TRIGGER_TARGET_PROCEDURE_UNKNOWN",
210
+ "SCHEDULE_INPUT_INVALID",
211
+ "SCHEDULE_AUTH_INVALID",
212
+ "TRIGGER_PATH_COLLISION",
213
+ "TRIGGER_PATH_INVALID",
214
+ "MCP_TOOL_NAME_COLLISION",
215
+ "MCP_TOOL_DESCRIPTION_MISSING",
216
+ "MCP_TOOL_INPUT_UNION_AMBIGUOUS",
217
+ "MCP_TOOL_INPUT_UNBOUNDED",
218
+ "MANTLE_REF_INVALID",
219
+ "PROCEDURE_TARGET_INVALID",
220
+ "PROCEDURE_NOT_FOUND",
221
+ "NOT_FOUND",
222
+ "METHOD_NOT_ALLOWED",
223
+ "LIFECYCLE_SCHEMA_UNKNOWN",
224
+ "LIFECYCLE_HOOK_REJECTED",
225
+ "LIFECYCLE_TARGET_NOT_REF",
226
+ "SCHEMA_LOCALIZED_REQUIRES_SITE_LOCALES",
227
+ "TRANSLATES_PARENT_UNKNOWN",
228
+ "TRANSLATES_REQUIRES_LOCALIZED",
229
+ "TRANSLATES_REQUIRES_CONTENT_FIELD",
230
+ "TRANSLATES_FIELD_NOT_IN_PARENT",
231
+ "TRANSLATES_FIELD_NOT_IN_CHILD",
232
+ "TRANSLATES_PARENT_IS_LOCALIZED",
233
+ "SCHEMA_TTL_TRANSLATION_UNSUPPORTED",
234
+ "INPUT_VALIDATION_FAILED",
235
+ "UNAUTHENTICATED",
236
+ "AUTH_DENIED",
237
+ "ENTITLEMENT_REQUIRED",
238
+ "CONFLICT",
239
+ "DISPATCHER_NOT_BUILT",
240
+ "INTERNAL_ERROR",
241
+ "OUTPUT_VALIDATION_FAILED",
242
+ "INVALID_LOCALE",
243
+ "MEDIA_NOT_CONFIGURED",
244
+ "SITE_NOT_CONFIGURED",
245
+ "MEDIA_UPLOAD_EXPIRED",
246
+ "MEDIA_OBJECT_NOT_FOUND",
247
+ "MEDIA_MIME_REJECTED",
248
+ "MEDIA_SIZE_EXCEEDED",
249
+ "MEDIA_SVG_REJECTED",
250
+ "MEDIA_CHECKSUM_MISMATCH",
251
+ "MEDIA_PURPOSE_REJECTED",
252
+ "MEDIA_VARIANTS_INCOMPLETE",
253
+ "MEDIA_VARIANT_SIZE_EXCEEDED",
254
+ "MEDIA_VARIANTS_SUSPICIOUS_SIZE",
255
+ "MEDIA_ASSET_NOT_FOUND"
256
+ ];
257
+ export interface SqlContext {
258
+ readonly schemas: Readonly<Record<string, SqlSchemaDef>>;
259
+ readonly columns?: SchemaColumns;
260
+ readonly inputs: Readonly<Record<string, string>>;
261
+ readonly kind: "view" | "procedure";
262
+ readonly public?: boolean;
263
+ readonly views?: Readonly<Record<string, {
264
+ readonly select?: SqlNode;
265
+ readonly refusal?: string;
266
+ }>>;
267
+ }
268
+ export interface SchemaColumns {
269
+ readonly known: ReadonlySet<string>;
270
+ readonly scopes: ReadonlySet<string>;
271
+ readonly types: ReadonlyMap<string, string>;
272
+ }
273
+ export interface SqlPlan {
274
+ readonly grammar: number;
275
+ readonly stmts: readonly SqlNode[];
276
+ }
277
+ export declare const d1Dialect: MantleDialect;
278
+ export interface RuntimePlan {
279
+ readonly access?: {
280
+ readonly roles: readonly string[];
281
+ readonly userFields: Readonly<Record<string, UserFieldSpec>>;
282
+ readonly warnings: readonly string[];
283
+ };
284
+ readonly version: typeof RUNTIME_PLAN_VERSION;
285
+ readonly dialect: {
286
+ readonly name: string;
287
+ readonly version: string;
288
+ };
289
+ readonly fingerprint: string;
290
+ readonly schemas: Readonly<Record<string, PlanSchema>>;
291
+ readonly views: Readonly<Record<string, PlanView>>;
292
+ readonly procedures: Readonly<Record<string, PlanProcedure>>;
293
+ readonly triggers: Readonly<Record<string, PlanTrigger>>;
294
+ readonly lowered?: PlanLowered;
295
+ }
296
+ export interface PlanLowered {
297
+ readonly mantle: string;
298
+ readonly dialect: {
299
+ readonly name: string;
300
+ readonly version: string;
301
+ readonly key: string;
302
+ };
303
+ readonly views: Readonly<Record<string, Readonly<Partial<Record<LoweredMode, LoweredView>>>>>;
304
+ readonly procedures: Readonly<Record<string, Readonly<Partial<Record<"caller" | "trusted", readonly LoweredStatement[]>>>>>;
305
+ }
306
+ export interface LoweredStatement {
307
+ readonly sql: string;
308
+ readonly binds: readonly {
309
+ readonly k: string;
310
+ readonly [key: string]: unknown;
311
+ }[];
312
+ readonly kind: "read" | "row" | "set";
313
+ readonly schema?: string;
314
+ readonly verb?: "insert" | "update" | "delete";
315
+ readonly hooked?: true;
316
+ readonly publish?: true;
317
+ readonly returns?: true;
318
+ readonly target?: string;
319
+ }
320
+ export interface LoweredView extends LoweredStatement {
321
+ readonly nkeys: number;
322
+ readonly paged: Readonly<Record<string, LoweredPage>>;
323
+ }
324
+ export interface LoweredPage {
325
+ readonly sql: string;
326
+ readonly sources: readonly ({
327
+ readonly cursor: number;
328
+ } | {
329
+ readonly search: true;
330
+ } | {
331
+ readonly eq: number;
332
+ } | {
333
+ readonly limit: true;
334
+ })[];
335
+ readonly flat?: true;
336
+ readonly names: readonly string[];
337
+ readonly nkeys: number;
338
+ }
339
+ export type LoweredMode = "caller" | "public" | "trusted";
340
+ export interface PlanTrigger {
341
+ readonly source: TriggerSource;
342
+ readonly procedure: string;
343
+ }
344
+ export type TriggerSource = HttpTriggerSource | LifecycleTriggerSource | McpTriggerSource | ScheduleTriggerSource;
345
+ export interface ScheduleTriggerSource {
346
+ readonly kind: "schedule";
347
+ readonly cron: string;
348
+ readonly enabled?: boolean;
349
+ }
350
+ export interface McpTriggerSource {
351
+ readonly kind: "mcp";
352
+ readonly surface: McpTriggerSurface;
353
+ }
354
+ export type McpTriggerSurface = (typeof MCP_TRIGGER_SURFACES)[number];
355
+ export declare const MCP_TRIGGER_SURFACES: readonly [
356
+ "admin",
357
+ "public"
358
+ ];
359
+ export interface LifecycleTriggerSource {
360
+ readonly kind: "lifecycle";
361
+ readonly schema: string;
362
+ readonly on: readonly LifecycleHook[];
363
+ }
364
+ export type LifecycleHook = (typeof LIFECYCLE_HOOKS)[number];
365
+ export declare const LIFECYCLE_HOOKS: readonly [
366
+ "before_create",
367
+ "after_create",
368
+ "before_update",
369
+ "after_update",
370
+ "before_delete",
371
+ "after_delete",
372
+ "before_publish",
373
+ "after_publish"
374
+ ];
375
+ export interface HttpTriggerSource {
376
+ readonly kind: "http";
377
+ readonly method: HttpMethod;
378
+ readonly path: string;
379
+ }
380
+ export type HttpMethod = "POST" | "PUT" | "PATCH" | "DELETE";
381
+ export interface PlanProcedure {
382
+ readonly restrict?: PlanRestrict;
383
+ readonly trustedOnly?: true;
384
+ readonly title?: LocalizedText;
385
+ readonly description?: LocalizedText;
386
+ readonly uiSchema?: Readonly<Record<string, unknown>>;
387
+ readonly input: JsonSchema;
388
+ readonly output: JsonSchema;
389
+ readonly inputs: Readonly<Record<string, string>>;
390
+ readonly requires?: AuthorizationRequirements;
391
+ readonly target?: ProcedureTarget;
392
+ readonly mcp?: ProcedureMcpAnnotations;
393
+ readonly handler: {
394
+ readonly ref: string;
395
+ } | {
396
+ readonly sql: SqlPlan;
397
+ readonly source: string;
398
+ };
399
+ }
400
+ export interface ProcedureMcpAnnotations {
401
+ readonly readOnlyHint?: boolean;
402
+ readonly destructiveHint?: boolean;
403
+ readonly openWorldHint?: boolean;
404
+ }
405
+ export interface ProcedureTarget {
406
+ readonly schema: string;
407
+ readonly id: string;
408
+ readonly version?: string;
409
+ }
410
+ export interface AuthorizationRequirements {
411
+ readonly auth?: {
412
+ readonly all: readonly AuthPredicate[];
413
+ };
414
+ readonly guard?: {
415
+ readonly procedure: string;
416
+ };
417
+ }
418
+ export type AuthPredicate = CtxUserPredicate | "ctx.admin" | CtxAuthPredicate | CtxAuthScopePredicate;
419
+ export interface CtxAuthScopePredicate {
420
+ readonly "ctx.auth.scope": string;
421
+ }
422
+ export type CtxAuthPredicate = "ctx.auth";
423
+ export type CtxUserPredicate = "ctx.user";
424
+ export type JsonSchema = {
425
+ readonly $defs?: Readonly<Record<string, JsonSchema>>;
426
+ readonly $ref?: string;
427
+ readonly oneOf?: readonly JsonSchema[];
428
+ readonly const?: unknown;
429
+ readonly type?: string | readonly string[];
430
+ readonly properties?: Readonly<Record<string, JsonSchema>>;
431
+ readonly required?: readonly string[];
432
+ readonly items?: JsonSchema;
433
+ readonly enum?: readonly unknown[];
434
+ readonly format?: string;
435
+ readonly pattern?: string;
436
+ readonly minLength?: number;
437
+ readonly maxLength?: number;
438
+ readonly minimum?: number;
439
+ readonly maximum?: number;
440
+ readonly minItems?: number;
441
+ readonly maxItems?: number;
442
+ readonly nullable?: boolean;
443
+ readonly readOnly?: boolean;
444
+ readonly default?: unknown;
445
+ readonly additionalProperties?: boolean | JsonSchema;
446
+ readonly description?: LocalizedText;
447
+ readonly title?: LocalizedText;
448
+ readonly "x-mantle-ref"?: string | MantleRefTarget;
449
+ readonly "x-mcp-hint"?: string;
450
+ readonly [key: string]: unknown;
451
+ };
452
+ export interface MantleRefTarget {
453
+ readonly schema: string;
454
+ readonly field: string;
455
+ }
456
+ export type LocalizedText = string | Readonly<Record<string, string>>;
457
+ export type PlanRestrict = Readonly<Record<string, {
458
+ readonly owner?: string;
459
+ readonly terms: readonly UserScope[];
460
+ }>>;
461
+ export interface PlanView extends SqlPlan {
462
+ readonly restrict?: PlanRestrict;
463
+ readonly title?: LocalizedText;
464
+ readonly description?: LocalizedText;
465
+ readonly uiSchema?: Readonly<Record<string, unknown>>;
466
+ readonly inputs: Readonly<Record<string, string>>;
467
+ readonly input?: JsonSchema;
468
+ readonly source: string;
469
+ readonly surface: "public" | "admin" | "internal";
470
+ readonly requires?: AuthorizationRequirements;
471
+ readonly sharedMaxAge?: number;
472
+ readonly columns?: Readonly<Record<string, {
473
+ readonly schema: string;
474
+ readonly field: string;
475
+ }>>;
476
+ }
477
+ export interface PlanSchema {
478
+ readonly userScopes?: readonly UserScope[];
479
+ readonly name: string;
480
+ readonly title?: LocalizedText;
481
+ readonly description?: LocalizedText;
482
+ readonly uiSchema?: Readonly<Record<string, unknown>>;
483
+ readonly localized?: boolean;
484
+ readonly scope?: string;
485
+ readonly ttl?: string;
486
+ readonly ttlSeconds?: number;
487
+ readonly publishing?: boolean;
488
+ readonly fields: Readonly<Record<string, string>>;
489
+ readonly names: Readonly<Record<string, string>>;
490
+ readonly schema: JsonSchema;
491
+ readonly checks?: readonly SqlNode[];
492
+ readonly translates?: {
493
+ readonly parent: string;
494
+ readonly on: string;
495
+ };
496
+ readonly search?: readonly string[];
497
+ readonly unique?: readonly (readonly string[])[];
498
+ readonly indexes?: readonly (readonly string[])[];
499
+ }
500
+ export declare const RUNTIME_PLAN_VERSION: 6;
501
+ export interface UserFieldSpec {
502
+ readonly type: "string" | "number";
503
+ readonly integer?: true;
504
+ readonly multiple: boolean;
505
+ readonly enum?: readonly (string | number)[];
506
+ }
507
+ export declare const RESERVED_PROCEDURE_INPUT_NAMES: readonly [
508
+ "expectedVersion"
509
+ ];
510
+ export declare const INPUT_RULE_KEYWORDS: readonly [
511
+ "dependentRequired",
512
+ "anyOf",
513
+ "if",
514
+ "then",
515
+ "else"
516
+ ];
517
+ export declare const EXPECTED_VERSION_PROPERTY: "expectedVersion";
518
+ export declare const RESERVED_ENTRY_COLUMNS: readonly [
519
+ "id",
520
+ "status",
521
+ "version",
522
+ "createdAt",
523
+ "updatedAt",
524
+ "authorId"
525
+ ];
526
+ export type TriggerManifest = ManifestEnvelope<"Trigger", TriggerManifestSpec>;
527
+ export interface TriggerManifestSpec {
528
+ readonly source: TriggerSource;
529
+ readonly target: {
530
+ readonly procedure: string;
531
+ };
532
+ }
533
+ interface ManifestEnvelope<K extends ManifestKind, S> {
534
+ readonly apiVersion: ApiVersion;
535
+ readonly kind: K;
536
+ readonly metadata: ManifestMetadata;
537
+ readonly spec: S;
538
+ }
539
+ export interface ManifestMetadata {
540
+ readonly name: string;
541
+ }
542
+ export type ApiVersion = typeof API_VERSION;
543
+ export declare const API_VERSION: "cms.mantle.aotter.net/v2";
544
+ export type ManifestKind = "Schema" | "View" | "Procedure" | "Trigger";
545
+ export type ProcedureManifest = ManifestEnvelope<"Procedure", ProcedureManifestSpec>;
546
+ export interface ProcedureManifestSpec {
547
+ readonly title?: LocalizedText;
548
+ readonly description?: LocalizedText;
549
+ readonly requires?: AuthorizationRequirements;
550
+ readonly restrict?: Readonly<Record<string, string>>;
551
+ readonly input: JsonSchema;
552
+ readonly uiSchema?: Record<string, unknown>;
553
+ readonly output: JsonSchema;
554
+ readonly handler: HandlerBinding;
555
+ readonly mcp?: ProcedureMcpAnnotations;
556
+ readonly target?: ProcedureTarget;
557
+ }
558
+ export type HandlerBinding = HandlerRefBinding | HandlerSqlBinding;
559
+ export interface HandlerSqlBinding {
560
+ readonly sql: string;
561
+ }
562
+ export interface HandlerRefBinding {
563
+ readonly ref: string;
564
+ }
565
+ export type ViewManifest = ManifestEnvelope<"View", ViewManifestSpec>;
566
+ export interface ViewManifestSpec {
567
+ readonly title?: LocalizedText;
568
+ readonly description?: LocalizedText;
569
+ readonly uiSchema?: Record<string, unknown>;
570
+ readonly sql: string;
571
+ readonly surface: ViewSurface;
572
+ readonly cache?: ViewCachePolicy;
573
+ readonly requires?: AuthorizationRequirements;
574
+ readonly restrict?: Readonly<Record<string, string>>;
575
+ readonly input?: JsonSchema;
576
+ }
577
+ export interface ViewCachePolicy {
578
+ readonly sharedMaxAge: number;
579
+ }
580
+ export type ViewSurface = (typeof VIEW_SURFACES)[number];
581
+ export declare const VIEW_SURFACES: readonly [
582
+ "public",
583
+ "admin",
584
+ "internal"
585
+ ];
586
+ export type SchemaManifest = ManifestEnvelope<"Schema", SchemaManifestSpec>;
587
+ export interface SchemaManifestSpec {
588
+ readonly title: LocalizedText;
589
+ readonly description?: LocalizedText;
590
+ readonly schema: JsonSchema;
591
+ readonly uiSchema?: Record<string, unknown>;
592
+ readonly checks?: readonly string[];
593
+ readonly uniqueIndexes?: ReadonlyArray<ReadonlyArray<string>>;
594
+ readonly indexes?: ReadonlyArray<ReadonlyArray<string>>;
595
+ readonly searchableFields?: readonly string[];
596
+ readonly localized?: boolean;
597
+ readonly translates?: TranslatesBinding;
598
+ readonly lifecycle?: LifecycleMode;
599
+ readonly ttl?: {
600
+ readonly field: string;
601
+ readonly expireAfterSeconds: number;
602
+ };
603
+ readonly scope?: string;
604
+ }
605
+ export type LifecycleMode = "publishing" | "operational";
606
+ export interface TranslatesBinding {
607
+ readonly parent: string;
608
+ readonly on: string;
609
+ }
610
+ export type Manifest = SchemaManifest | ViewManifest | ProcedureManifest | TriggerManifest;
611
+ export type AdminRole = string;
612
+ export declare function isAdminRole(s: string): s is AdminRole;
613
+ export declare const PROCEDURE_MCP_ANNOTATION_KEYS: readonly [
614
+ "readOnlyHint",
615
+ "destructiveHint",
616
+ "openWorldHint"
617
+ ];
618
+ export declare const PROCEDURE_TARGET_KEYS: readonly [
619
+ "schema",
620
+ "id",
621
+ "version"
622
+ ];
623
+ export declare const VIEW_INPUT_RESERVED: readonly [
624
+ "limit",
625
+ "cursor"
626
+ ];
627
+ export declare function resolveLocalizedText(value: LocalizedText | null | undefined, preferred: string, canonical?: string | null): string | null;
628
+ export declare const isLocalizedText: (v: unknown) => v is LocalizedText;
629
+ export declare const MANTLE_BIND_KEYWORD: "x-mantle-bind";
630
+ export declare const MCP_HINT_KEYWORD: "x-mcp-hint";
631
+ export declare function resolveMantleRef(property: unknown): MantleRefTarget | null;
632
+ export declare function enumOptions(property: JsonSchema | undefined): {
633
+ readonly value: string;
634
+ readonly title?: LocalizedText;
635
+ }[] | undefined;
636
+ export declare const MANTLE_REF_KEYWORD: "x-mantle-ref";
637
+ export type MediaMcpHint = "media" | "media-image" | "media-video" | "media-file";
638
+ export declare function isMediaMcpHint(value: unknown): value is MediaMcpHint;
639
+ export interface Diagnostic {
640
+ readonly code: DiagnosticCode;
641
+ readonly phase: Phase;
642
+ readonly severity: "error" | "warning";
643
+ readonly path: string;
644
+ readonly source?: SourceLocation;
645
+ readonly value?: unknown;
646
+ readonly expected?: string;
647
+ readonly candidates?: readonly string[];
648
+ readonly suggestion?: string;
649
+ readonly message: string;
650
+ readonly failure?: {
651
+ readonly outcome: "not-applied" | "partial" | "unknown";
652
+ readonly retry: "never" | "after-change" | "safe" | "reconcile";
653
+ readonly resource?: string;
654
+ };
655
+ readonly conflict?: {
656
+ readonly opIndex?: number;
657
+ readonly reason: "lock" | "expect" | "unique";
658
+ };
659
+ }
660
+ export interface SourceLocation {
661
+ readonly sourceId: string;
662
+ readonly documentIndex: number;
663
+ readonly path: string;
664
+ readonly span?: SourceSpan;
665
+ }
666
+ export interface SourceSpan {
667
+ readonly start: SourcePosition;
668
+ readonly end: SourcePosition;
669
+ }
670
+ export interface SourcePosition {
671
+ readonly line: number;
672
+ readonly column: number;
673
+ readonly offset: number;
674
+ }
675
+ export type Phase = "validate" | "test" | "boot" | "runtime";
676
+ export declare class DiagnosticError extends Error {
677
+ static [Symbol.hasInstance](value: unknown): boolean;
678
+ readonly [BRAND] = true;
679
+ readonly diagnostics: readonly Diagnostic[];
680
+ constructor(diagnostic: Diagnostic | readonly Diagnostic[], options?: ErrorOptions);
681
+ get diagnostic(): Diagnostic;
682
+ }
683
+ declare const BRAND: unique symbol;
684
+ type PhaselessInput = Omit<Diagnostic, "phase" | "message"> & {
685
+ message?: string;
686
+ };
687
+ export declare const runtimeDiagnostic: (input: PhaselessInput) => Diagnostic;
688
+ export declare const bootDiagnostic: (input: PhaselessInput) => Diagnostic;
689
+ export declare const validateDiagnostic: (input: PhaselessInput) => Diagnostic;
690
+ export declare function makeDiagnostic(input: Omit<Diagnostic, "message"> & {
691
+ message?: string;
692
+ }): Diagnostic;
693
+ export declare function checkShapeProblem(v: unknown, columns: ReadonlyMap<string, string>): string | undefined;
694
+ export declare const CHECK_FUNCTIONS: ReadonlyMap<string, {
695
+ readonly takes: readonly string[];
696
+ readonly returns: "text" | "integer" | "argument";
697
+ }>;
698
+ export declare function storageColumnClash(fields: Readonly<Record<string, string>>): string | undefined;
699
+ export declare function notNullColumns(s: SqlSchemaDef): Set<string>;
700
+ export declare const NATIVE_COLUMNS: Readonly<Record<string, string>>;
701
+ export declare const NATIVE_NOT_NULL: ReadonlySet<string>;
702
+ export declare const AGGREGATES: ReadonlySet<string>;
703
+ export declare function storageColumns(s: {
704
+ readonly fields?: Readonly<Record<string, string>>;
705
+ readonly scope?: string;
706
+ readonly publishing?: boolean;
707
+ }): Map<string, string>;
708
+ export declare function viewCacheProblem(stmts: readonly SqlNode[], schemas: Readonly<Record<string, SqlSchemaDef>>): string | undefined;
709
+ export declare const PG_GRAMMAR = 180004;
710
+ export interface RowTemplate {
711
+ readonly owner?: string;
712
+ readonly terms: readonly {
713
+ readonly column: string;
714
+ readonly field: string;
715
+ }[];
716
+ }
717
+ export declare function parseRowTemplate(text: unknown): RowTemplate | string;
718
+ export declare const NATIVE_OUTPUT_TYPES: Readonly<Record<string, string>>;
719
+ export declare function planFingerprint(plan: Omit<RuntimePlan, "fingerprint">): Promise<string>;
720
+ export declare const fnv: (s: string) => string;
721
+ export declare function canonical(v: unknown): string;