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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (946) hide show
  1. package/README.md +157 -45
  2. package/dist/auth/adapter.d.ts +32 -0
  3. package/dist/auth/adapter.js +285 -0
  4. package/dist/auth/admin.d.ts +3 -0
  5. package/dist/auth/admin.js +21 -0
  6. package/dist/auth/caller.d.ts +86 -0
  7. package/dist/auth/caller.js +155 -0
  8. package/dist/auth/hardening.d.ts +24 -0
  9. package/dist/auth/hardening.js +40 -0
  10. package/dist/auth/identity.d.ts +121 -0
  11. package/dist/auth/identity.js +203 -0
  12. package/dist/auth/oauth.d.ts +63 -0
  13. package/dist/auth/oauth.js +217 -0
  14. package/dist/auth/resource-seeds.js +10 -0
  15. package/dist/auth/routes.d.ts +32 -0
  16. package/dist/auth/routes.js +225 -0
  17. package/dist/build/compiler.d.ts +712 -0
  18. package/dist/build/compiler.js +6896 -0
  19. package/dist/{spec → build/spec}/domain/model/ManifestGrammar.d.ts +30 -47
  20. package/dist/{spec → build/spec}/domain/model/RuntimePlan.d.ts +77 -3
  21. package/dist/{spec → build/spec}/domain/model/SqlIr.d.ts +37 -6
  22. package/dist/build/spec/domain/model/UserFields.d.ts +20 -0
  23. package/dist/{spec → build/spec}/domain/service/PlanFingerprint.d.ts +4 -1
  24. package/dist/{spec → build/spec}/kernel/diagnostic.d.ts +1 -30
  25. package/dist/bun/assets.d.ts +2 -0
  26. package/dist/bun/assets.js +24 -0
  27. package/dist/domain/adminOrder.js +24 -0
  28. package/dist/domain/columns.js +55 -0
  29. package/dist/domain/describe/chunk-ZVXBGP7Y.js +424 -0
  30. package/dist/domain/describe/index.d.ts +58 -0
  31. package/dist/domain/describe/index.js +115 -0
  32. package/dist/domain/describe/target-hash.d.ts +8 -0
  33. package/dist/domain/describe/target-hash.js +12 -0
  34. package/dist/domain/describe/targets.d.ts +40 -0
  35. package/dist/domain/entry.js +33 -0
  36. package/dist/domain/generated-tools.js +19 -0
  37. package/dist/domain/generation.d.ts +16 -0
  38. package/dist/domain/generation.js +1 -0
  39. package/dist/domain/input.js +17 -0
  40. package/dist/domain/model.js +1 -0
  41. package/dist/domain/paging.js +230 -0
  42. package/dist/domain/recipes.js +19 -0
  43. package/dist/domain/userReferences.js +5 -0
  44. package/dist/domain/wireScalars.js +47 -0
  45. package/dist/infrastructure/adminEntries.js +153 -0
  46. package/dist/infrastructure/adminPaging.js +72 -0
  47. package/dist/infrastructure/artifacts.js +71 -0
  48. package/dist/infrastructure/authSchema.js +83 -0
  49. package/dist/infrastructure/bundle.js +174 -0
  50. package/dist/infrastructure/cli.js +97 -0
  51. package/dist/infrastructure/generate.d.ts +12 -0
  52. package/dist/infrastructure/generate.js +174 -0
  53. package/dist/infrastructure/generateAuth.d.ts +8 -0
  54. package/dist/infrastructure/generateAuth.js +23 -0
  55. package/dist/infrastructure/inputs.js +41 -0
  56. package/dist/infrastructure/wrangler.js +94 -0
  57. package/dist/kernel/authorization.d.ts +4 -0
  58. package/dist/kernel/authorization.js +16 -0
  59. package/dist/kernel/binds.d.ts +51 -0
  60. package/dist/kernel/binds.js +45 -0
  61. package/dist/kernel/caller-identity.d.ts +24 -0
  62. package/dist/kernel/caller-identity.js +22 -0
  63. package/dist/kernel/contract-error.d.ts +12 -0
  64. package/dist/kernel/contract-error.js +14 -0
  65. package/dist/kernel/contracts.d.ts +139 -0
  66. package/dist/kernel/contracts.js +92 -0
  67. package/dist/{spec/domain/service/CloudflareCron.d.ts → kernel/cron.d.ts} +0 -1
  68. package/dist/{spec/domain/service/CloudflareCron.js → kernel/cron.js} +1 -6
  69. package/dist/kernel/dialect/common.d.ts +39 -0
  70. package/dist/kernel/dialect/common.js +6 -0
  71. package/dist/kernel/dialect/postgres.d.ts +16 -0
  72. package/dist/kernel/dialect/postgres.js +18 -0
  73. package/dist/kernel/dialect/sqlite.d.ts +20 -0
  74. package/dist/kernel/dialect/sqlite.js +34 -0
  75. package/dist/kernel/drain.d.ts +5 -0
  76. package/dist/kernel/drain.js +35 -0
  77. package/dist/kernel/driver/bun-sqlite.d.ts +19 -0
  78. package/dist/kernel/driver/bun-sqlite.js +77 -0
  79. package/dist/kernel/driver/d1.d.ts +24 -0
  80. package/dist/kernel/driver/d1.js +22 -0
  81. package/dist/kernel/driver/postgres.d.ts +25 -0
  82. package/dist/kernel/driver/postgres.js +98 -0
  83. package/dist/kernel/driver/transaction-context.d.ts +10 -0
  84. package/dist/kernel/driver/transaction-context.js +29 -0
  85. package/dist/kernel/email.d.ts +28 -0
  86. package/dist/{auth/emailTemplates.js → kernel/email.js} +13 -2
  87. package/dist/kernel/host-access.d.ts +10 -0
  88. package/dist/kernel/host-access.js +65 -0
  89. package/dist/kernel/host-caller.d.ts +39 -0
  90. package/dist/kernel/host-caller.js +56 -0
  91. package/dist/kernel/json-body.d.ts +4 -0
  92. package/dist/kernel/json-body.js +44 -0
  93. package/dist/kernel/mcp-apps.d.ts +69 -0
  94. package/dist/kernel/mcp-apps.js +40 -0
  95. package/dist/kernel/mcp-call.d.ts +5 -0
  96. package/dist/kernel/mcp-call.js +25 -0
  97. package/dist/kernel/mcp-handler.js +371 -0
  98. package/dist/kernel/mcp.d.ts +106 -0
  99. package/dist/kernel/mcp.js +49 -0
  100. package/dist/kernel/media.d.ts +27 -0
  101. package/dist/kernel/media.js +216 -0
  102. package/dist/kernel/paging.d.ts +55 -0
  103. package/dist/kernel/paging.js +95 -0
  104. package/dist/kernel/publishing.d.ts +4 -0
  105. package/dist/kernel/publishing.js +16 -0
  106. package/dist/{cloudflare/r2Media.d.ts → kernel/r2-media.d.ts} +4 -5
  107. package/dist/kernel/r2-media.js +78 -0
  108. package/dist/kernel/rest-dispatch.js +38 -0
  109. package/dist/kernel/rest-router.js +64 -0
  110. package/dist/kernel/rest.d.ts +58 -0
  111. package/dist/kernel/rest.js +41 -0
  112. package/dist/kernel/scalars.d.ts +6 -0
  113. package/dist/kernel/scalars.js +43 -0
  114. package/dist/kernel/search.js +5 -0
  115. package/dist/{core/site.d.ts → kernel/site-types.d.ts} +38 -9
  116. package/dist/kernel/site-types.js +1 -0
  117. package/dist/kernel/site.d.ts +39 -0
  118. package/dist/kernel/site.js +32 -0
  119. package/dist/kernel/store.d.ts +165 -0
  120. package/dist/kernel/store.js +257 -0
  121. package/dist/kernel/surface.d.ts +10 -0
  122. package/dist/kernel/surface.js +19 -0
  123. package/dist/kernel/sweep.d.ts +17 -0
  124. package/dist/kernel/sweep.js +27 -0
  125. package/dist/kernel/translations.d.ts +1 -0
  126. package/dist/kernel/translations.js +13 -0
  127. package/dist/kernel/user-caller.d.ts +31 -0
  128. package/dist/kernel/user-caller.js +67 -0
  129. package/dist/kernel/user-field-name.js +3 -0
  130. package/dist/kernel/user-fields.d.ts +34 -0
  131. package/dist/kernel/user-fields.js +71 -0
  132. package/dist/kernel/validation.d.ts +15 -0
  133. package/dist/kernel/validation.js +54 -0
  134. package/dist/kernel/web-gateway.js +68 -0
  135. package/dist/kernel/web-head.js +15 -0
  136. package/dist/kernel/web-response.js +8 -0
  137. package/dist/kernel/web.d.ts +77 -0
  138. package/dist/kernel/web.js +158 -0
  139. package/dist/kernel/where.js +27 -0
  140. package/dist/testing/index.d.ts +1 -37
  141. package/dist/testing/index.js +1 -43
  142. package/dist/usecase/adminBindings.js +141 -0
  143. package/dist/usecase/adminClient.js +87 -0
  144. package/dist/usecase/adminDescriptors.js +107 -0
  145. package/dist/usecase/generate.js +165 -0
  146. package/dist/usecase/handlers.js +21 -0
  147. package/dist/usecase/mcp-media.js +17 -0
  148. package/dist/usecase/mcp.js +100 -0
  149. package/dist/usecase/paging.js +71 -0
  150. package/dist/usecase/publishing.js +63 -0
  151. package/dist/usecase/refusals.js +27 -0
  152. package/dist/usecase/rest.js +54 -0
  153. package/dist/usecase/search.js +7 -0
  154. package/dist/usecase/site.js +40 -0
  155. package/dist/usecase/stores.js +62 -0
  156. package/dist/usecase/tool-version.js +9 -0
  157. package/dist/usecase/translations.js +78 -0
  158. package/dist/usecase/ttl.js +20 -0
  159. package/dist/usecase/validation.js +233 -0
  160. package/dist/usecase/web.js +23 -0
  161. package/docs/examples/README.md +31 -16
  162. package/docs/examples/app-shell/README.md +86 -0
  163. package/docs/examples/app-shell/package.json +42 -0
  164. package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
  165. package/docs/examples/app-shell/smoke-kit.mjs +154 -0
  166. package/docs/examples/app-shell/src/auth.ts +57 -0
  167. package/docs/examples/app-shell/src/handlers.ts +5 -0
  168. package/docs/examples/app-shell/src/index.ts +4 -0
  169. package/docs/examples/app-shell/src/routes.ts +13 -0
  170. package/docs/examples/app-shell/src/schedule.ts +8 -0
  171. package/docs/examples/app-shell/src/service.ts +70 -0
  172. package/docs/examples/app-shell/src/sign-in.ts +41 -0
  173. package/docs/examples/app-shell/src/signup.ts +8 -0
  174. package/docs/examples/{reference-service → app-shell}/tsconfig.json +6 -2
  175. package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
  176. package/docs/examples/app-shell/wrangler.jsonc +62 -0
  177. package/docs/examples/club-events/README.md +60 -0
  178. package/docs/examples/club-events/manifests/club-events.yaml +225 -0
  179. package/docs/examples/club-events/smoke.mjs +121 -0
  180. package/docs/examples/club-events/src/handlers.ts +25 -0
  181. package/docs/examples/club-events/src/signup.ts +9 -0
  182. package/docs/examples/generated-web/README.md +78 -0
  183. package/docs/examples/generated-web/posts.yaml +38 -0
  184. package/docs/examples/generated-web/seed.sql +6 -0
  185. package/docs/examples/generated-web/src/worker.ts +43 -0
  186. package/docs/examples/generated-web/tsconfig.json +8 -0
  187. package/docs/examples/generated-web/wrangler.jsonc +8 -0
  188. package/docs/examples/purchasing/.dev.vars.example +6 -0
  189. package/docs/examples/purchasing/README.md +90 -0
  190. package/docs/examples/purchasing/manifests/purchasing.yaml +341 -0
  191. package/docs/examples/purchasing/seed.sql +4 -0
  192. package/docs/examples/purchasing/smoke.mjs +177 -0
  193. package/docs/examples/purchasing/src/admin.tsx +13 -0
  194. package/docs/examples/purchasing/src/handlers.ts +33 -0
  195. package/docs/examples/purchasing/src/notify.ts +29 -0
  196. package/docs/examples/purchasing/src/requests-page.ts +57 -0
  197. package/docs/examples/purchasing/src/routes.ts +53 -0
  198. package/docs/examples/purchasing/src/schedule.ts +31 -0
  199. package/docs/examples/purchasing/src/signup.ts +5 -0
  200. package/docs/examples/purchasing/src/supplier.ts +32 -0
  201. package/docs/examples/purchasing/wrangler.jsonc +69 -0
  202. package/docs/examples/recipes/README.md +58 -0
  203. package/docs/examples/recipes/manifests/recipes.yaml +75 -0
  204. package/docs/examples/recipes/smoke.mjs +102 -0
  205. package/docs/examples/recipes/src/media.ts +13 -0
  206. package/docs/examples/recipes/src/pages.ts +99 -0
  207. package/docs/examples/recipes/src/routes.ts +71 -0
  208. package/docs/examples/recipes/src/site-config.ts +12 -0
  209. package/docs/examples/recipes/wrangler.jsonc +74 -0
  210. package/docs/handbook/cloudflare/authentication.md +164 -214
  211. package/docs/handbook/cloudflare/chatgpt-sites.md +4 -113
  212. package/docs/handbook/cloudflare/deploy-and-operate.md +38 -103
  213. package/docs/handbook/cloudflare/media-r2.md +62 -133
  214. package/docs/handbook/cloudflare/service-entry.md +210 -119
  215. package/docs/handbook/concepts/authorization.md +10 -123
  216. package/docs/handbook/concepts/four-atoms.md +9 -92
  217. package/docs/handbook/concepts/lifecycle-and-locales.md +9 -80
  218. package/docs/handbook/concepts/mcp-and-agents.md +24 -136
  219. package/docs/handbook/concepts/procedures-and-triggers.md +5 -162
  220. package/docs/handbook/concepts/runtime-and-adapters.md +15 -224
  221. package/docs/handbook/concepts/views.md +10 -109
  222. package/docs/handbook/examples/hub.md +2 -18
  223. package/docs/handbook/guides/adapter-guide.md +11 -0
  224. package/docs/handbook/guides/admin-ui.md +111 -164
  225. package/docs/handbook/guides/agent-setup.md +32 -27
  226. package/docs/handbook/guides/email.md +86 -0
  227. package/docs/handbook/guides/mcp-apps.md +483 -0
  228. package/docs/handbook/guides/native-admin.md +543 -0
  229. package/docs/handbook/guides/native-execution.md +132 -0
  230. package/docs/handbook/guides/oauth.md +161 -0
  231. package/docs/handbook/guides/postgres-adapters.md +56 -0
  232. package/docs/handbook/guides/public-pages.md +53 -0
  233. package/docs/handbook/guides/size-and-startup.md +9 -0
  234. package/docs/handbook/guides/typed-queries.md +39 -102
  235. package/docs/handbook/navigation.json +160 -31
  236. package/docs/handbook/reference/admin-descriptors.md +53 -0
  237. package/docs/handbook/reference/authorization.md +44 -52
  238. package/docs/handbook/reference/describe.md +56 -0
  239. package/docs/handbook/reference/diagnostics.md +15 -79
  240. package/docs/handbook/reference/features.md +45 -53
  241. package/docs/handbook/reference/manifest.md +6 -69
  242. package/docs/handbook/reference/procedure.md +11 -116
  243. package/docs/handbook/reference/schema.md +85 -185
  244. package/docs/handbook/reference/site-config.md +5 -65
  245. package/docs/handbook/reference/surface.md +389 -97
  246. package/docs/handbook/reference/trigger.md +54 -90
  247. package/docs/handbook/reference/view.md +32 -160
  248. package/docs/handbook/releases/index.md +120 -13
  249. package/docs/handbook/start/overview.md +9 -56
  250. package/docs/handbook/start/project-and-cli.md +40 -149
  251. package/docs/handbook/start/quickstart-worker.md +38 -116
  252. package/docs/skills/develop/SKILL.md +35 -123
  253. package/docs/skills/develop/mcp-app.md +37 -77
  254. package/docs/skills/integrate/SKILL.md +42 -84
  255. package/docs/skills/media-gc/SKILL.md +21 -8
  256. package/docs/skills/provision/SKILL.md +28 -91
  257. package/docs/skills/update/SKILL.md +19 -43
  258. package/docs/source/scripts/postgres-adapter.ts +101 -0
  259. package/docs/upgrade-0.1-to-0.2.md +25 -9
  260. package/package.json +97 -112
  261. package/skills/.keep +0 -0
  262. package/skills/README.md +67 -0
  263. package/skills/mantle/SKILL.md +135 -0
  264. package/skills/mantle/references/local-testing.md +15 -0
  265. package/skills/mantle/references/web.md +41 -0
  266. package/skills/mantle/references/website.md +49 -0
  267. package/dist/admin/consent.d.ts +0 -17
  268. package/dist/admin/consent.d.ts.map +0 -1
  269. package/dist/admin/consent.js +0 -17
  270. package/dist/admin/consent.js.map +0 -1
  271. package/dist/admin/createAdminSurface.d.ts +0 -25
  272. package/dist/admin/createAdminSurface.d.ts.map +0 -1
  273. package/dist/admin/createAdminSurface.js +0 -635
  274. package/dist/admin/createAdminSurface.js.map +0 -1
  275. package/dist/admin/design.d.ts +0 -7
  276. package/dist/admin/design.d.ts.map +0 -1
  277. package/dist/admin/design.js +0 -18
  278. package/dist/admin/design.js.map +0 -1
  279. package/dist/admin/developerConsole.d.ts +0 -267
  280. package/dist/admin/developerConsole.d.ts.map +0 -1
  281. package/dist/admin/developerConsole.js +0 -136
  282. package/dist/admin/developerConsole.js.map +0 -1
  283. package/dist/admin/extensions.d.ts +0 -290
  284. package/dist/admin/extensions.d.ts.map +0 -1
  285. package/dist/admin/extensions.js +0 -532
  286. package/dist/admin/extensions.js.map +0 -1
  287. package/dist/admin/identity.d.ts +0 -62
  288. package/dist/admin/identity.d.ts.map +0 -1
  289. package/dist/admin/identity.js +0 -7
  290. package/dist/admin/identity.js.map +0 -1
  291. package/dist/admin/index.d.ts +0 -7
  292. package/dist/admin/index.d.ts.map +0 -1
  293. package/dist/admin/index.js +0 -7
  294. package/dist/admin/index.js.map +0 -1
  295. package/dist/admin/procedureFlow.d.ts +0 -38
  296. package/dist/admin/procedureFlow.d.ts.map +0 -1
  297. package/dist/admin/procedureFlow.js +0 -188
  298. package/dist/admin/procedureFlow.js.map +0 -1
  299. package/dist/auth/ConsoleEmailSender.d.ts +0 -15
  300. package/dist/auth/ConsoleEmailSender.d.ts.map +0 -1
  301. package/dist/auth/ConsoleEmailSender.js +0 -19
  302. package/dist/auth/ConsoleEmailSender.js.map +0 -1
  303. package/dist/auth/appleClientSecret.d.ts +0 -75
  304. package/dist/auth/appleClientSecret.d.ts.map +0 -1
  305. package/dist/auth/appleClientSecret.js +0 -116
  306. package/dist/auth/appleClientSecret.js.map +0 -1
  307. package/dist/auth/buildAuth.d.ts +0 -4568
  308. package/dist/auth/buildAuth.d.ts.map +0 -1
  309. package/dist/auth/buildAuth.js +0 -312
  310. package/dist/auth/buildAuth.js.map +0 -1
  311. package/dist/auth/callerResolver.d.ts +0 -52
  312. package/dist/auth/callerResolver.d.ts.map +0 -1
  313. package/dist/auth/callerResolver.js +0 -52
  314. package/dist/auth/callerResolver.js.map +0 -1
  315. package/dist/auth/createAuthRoutes.d.ts +0 -22
  316. package/dist/auth/createAuthRoutes.d.ts.map +0 -1
  317. package/dist/auth/createAuthRoutes.js +0 -129
  318. package/dist/auth/createAuthRoutes.js.map +0 -1
  319. package/dist/auth/createMantleAuth.d.ts +0 -3
  320. package/dist/auth/createMantleAuth.d.ts.map +0 -1
  321. package/dist/auth/createMantleAuth.js +0 -504
  322. package/dist/auth/createMantleAuth.js.map +0 -1
  323. package/dist/auth/db.d.ts +0 -18
  324. package/dist/auth/db.d.ts.map +0 -1
  325. package/dist/auth/db.js +0 -27
  326. package/dist/auth/db.js.map +0 -1
  327. package/dist/auth/emailTemplates.d.ts +0 -7
  328. package/dist/auth/emailTemplates.d.ts.map +0 -1
  329. package/dist/auth/emailTemplates.js.map +0 -1
  330. package/dist/auth/index.d.ts +0 -9
  331. package/dist/auth/index.d.ts.map +0 -1
  332. package/dist/auth/index.js +0 -7
  333. package/dist/auth/index.js.map +0 -1
  334. package/dist/auth/methods.d.ts +0 -717
  335. package/dist/auth/methods.d.ts.map +0 -1
  336. package/dist/auth/methods.js +0 -321
  337. package/dist/auth/methods.js.map +0 -1
  338. package/dist/auth/oauthTokens.d.ts +0 -24
  339. package/dist/auth/oauthTokens.d.ts.map +0 -1
  340. package/dist/auth/oauthTokens.js +0 -146
  341. package/dist/auth/oauthTokens.js.map +0 -1
  342. package/dist/auth/setupIncomplete.d.ts +0 -16
  343. package/dist/auth/setupIncomplete.d.ts.map +0 -1
  344. package/dist/auth/setupIncomplete.js +0 -50
  345. package/dist/auth/setupIncomplete.js.map +0 -1
  346. package/dist/auth/types.d.ts +0 -440
  347. package/dist/auth/types.d.ts.map +0 -1
  348. package/dist/auth/types.js +0 -10
  349. package/dist/auth/types.js.map +0 -1
  350. package/dist/bun/index.d.ts +0 -21
  351. package/dist/bun/index.d.ts.map +0 -1
  352. package/dist/bun/index.js +0 -46
  353. package/dist/bun/index.js.map +0 -1
  354. package/dist/cli/emitModule.d.ts +0 -7
  355. package/dist/cli/emitModule.d.ts.map +0 -1
  356. package/dist/cli/emitModule.js +0 -127
  357. package/dist/cli/emitModule.js.map +0 -1
  358. package/dist/cli/generate.d.ts +0 -8
  359. package/dist/cli/generate.d.ts.map +0 -1
  360. package/dist/cli/generate.js +0 -391
  361. package/dist/cli/generate.js.map +0 -1
  362. package/dist/cli/main.d.ts +0 -3
  363. package/dist/cli/main.d.ts.map +0 -1
  364. package/dist/cli/main.js +0 -21
  365. package/dist/cli/main.js.map +0 -1
  366. package/dist/cli/preset.d.ts +0 -18
  367. package/dist/cli/preset.d.ts.map +0 -1
  368. package/dist/cli/preset.js +0 -405
  369. package/dist/cli/preset.js.map +0 -1
  370. package/dist/cloudflare/index.d.ts +0 -25
  371. package/dist/cloudflare/index.d.ts.map +0 -1
  372. package/dist/cloudflare/index.js +0 -16
  373. package/dist/cloudflare/index.js.map +0 -1
  374. package/dist/cloudflare/r2Media.d.ts.map +0 -1
  375. package/dist/cloudflare/r2Media.js +0 -69
  376. package/dist/cloudflare/r2Media.js.map +0 -1
  377. package/dist/core/caller.d.ts +0 -35
  378. package/dist/core/caller.d.ts.map +0 -1
  379. package/dist/core/caller.js +0 -3
  380. package/dist/core/caller.js.map +0 -1
  381. package/dist/core/createMantle.d.ts +0 -22
  382. package/dist/core/createMantle.d.ts.map +0 -1
  383. package/dist/core/createMantle.js +0 -117
  384. package/dist/core/createMantle.js.map +0 -1
  385. package/dist/core/dialect.d.ts +0 -53
  386. package/dist/core/dialect.d.ts.map +0 -1
  387. package/dist/core/dialect.js +0 -7
  388. package/dist/core/dialect.js.map +0 -1
  389. package/dist/core/driver.d.ts +0 -24
  390. package/dist/core/driver.d.ts.map +0 -1
  391. package/dist/core/driver.js +0 -2
  392. package/dist/core/driver.js.map +0 -1
  393. package/dist/core/email.d.ts +0 -17
  394. package/dist/core/email.d.ts.map +0 -1
  395. package/dist/core/email.js +0 -2
  396. package/dist/core/email.js.map +0 -1
  397. package/dist/core/index.d.ts +0 -16
  398. package/dist/core/index.d.ts.map +0 -1
  399. package/dist/core/index.js +0 -16
  400. package/dist/core/index.js.map +0 -1
  401. package/dist/core/invocation.d.ts +0 -66
  402. package/dist/core/invocation.d.ts.map +0 -1
  403. package/dist/core/invocation.js +0 -3
  404. package/dist/core/invocation.js.map +0 -1
  405. package/dist/core/observation.d.ts +0 -3
  406. package/dist/core/observation.d.ts.map +0 -1
  407. package/dist/core/observation.js +0 -10
  408. package/dist/core/observation.js.map +0 -1
  409. package/dist/core/runtime/auth.d.ts +0 -9
  410. package/dist/core/runtime/auth.d.ts.map +0 -1
  411. package/dist/core/runtime/auth.js +0 -39
  412. package/dist/core/runtime/auth.js.map +0 -1
  413. package/dist/core/runtime/createRuntime.d.ts +0 -23
  414. package/dist/core/runtime/createRuntime.d.ts.map +0 -1
  415. package/dist/core/runtime/createRuntime.js +0 -214
  416. package/dist/core/runtime/createRuntime.js.map +0 -1
  417. package/dist/core/runtime/verifyPlan.d.ts +0 -34
  418. package/dist/core/runtime/verifyPlan.d.ts.map +0 -1
  419. package/dist/core/runtime/verifyPlan.js +0 -301
  420. package/dist/core/runtime/verifyPlan.js.map +0 -1
  421. package/dist/core/service.d.ts +0 -45
  422. package/dist/core/service.d.ts.map +0 -1
  423. package/dist/core/service.js +0 -2
  424. package/dist/core/service.js.map +0 -1
  425. package/dist/core/sessionUser.d.ts +0 -14
  426. package/dist/core/sessionUser.d.ts.map +0 -1
  427. package/dist/core/sessionUser.js +0 -4
  428. package/dist/core/sessionUser.js.map +0 -1
  429. package/dist/core/site.d.ts.map +0 -1
  430. package/dist/core/site.js +0 -2
  431. package/dist/core/site.js.map +0 -1
  432. package/dist/core/siteConfig.d.ts +0 -5
  433. package/dist/core/siteConfig.d.ts.map +0 -1
  434. package/dist/core/siteConfig.js +0 -24
  435. package/dist/core/siteConfig.js.map +0 -1
  436. package/dist/core/sql/allowlist.d.ts +0 -67
  437. package/dist/core/sql/allowlist.d.ts.map +0 -1
  438. package/dist/core/sql/allowlist.js +0 -737
  439. package/dist/core/sql/allowlist.js.map +0 -1
  440. package/dist/core/sql/ast.d.ts +0 -24
  441. package/dist/core/sql/ast.d.ts.map +0 -1
  442. package/dist/core/sql/ast.js +0 -32
  443. package/dist/core/sql/ast.js.map +0 -1
  444. package/dist/core/sql/compile.d.ts +0 -50
  445. package/dist/core/sql/compile.d.ts.map +0 -1
  446. package/dist/core/sql/compile.js +0 -48
  447. package/dist/core/sql/compile.js.map +0 -1
  448. package/dist/core/sql/policy.d.ts +0 -123
  449. package/dist/core/sql/policy.d.ts.map +0 -1
  450. package/dist/core/sql/policy.js +0 -398
  451. package/dist/core/sql/policy.js.map +0 -1
  452. package/dist/core/sql/positions.d.ts +0 -30
  453. package/dist/core/sql/positions.d.ts.map +0 -1
  454. package/dist/core/sql/positions.js +0 -22
  455. package/dist/core/sql/positions.js.map +0 -1
  456. package/dist/core/sql/run.d.ts +0 -68
  457. package/dist/core/sql/run.d.ts.map +0 -1
  458. package/dist/core/sql/run.js +0 -384
  459. package/dist/core/sql/run.js.map +0 -1
  460. package/dist/core/store/createStore.d.ts +0 -49
  461. package/dist/core/store/createStore.d.ts.map +0 -1
  462. package/dist/core/store/createStore.js +0 -227
  463. package/dist/core/store/createStore.js.map +0 -1
  464. package/dist/core/store/cursor.d.ts +0 -4
  465. package/dist/core/store/cursor.d.ts.map +0 -1
  466. package/dist/core/store/cursor.js +0 -22
  467. package/dist/core/store/cursor.js.map +0 -1
  468. package/dist/core/store/json.d.ts +0 -80
  469. package/dist/core/store/json.d.ts.map +0 -1
  470. package/dist/core/store/json.js +0 -342
  471. package/dist/core/store/json.js.map +0 -1
  472. package/dist/core/store.d.ts +0 -160
  473. package/dist/core/store.d.ts.map +0 -1
  474. package/dist/core/store.js +0 -2
  475. package/dist/core/store.js.map +0 -1
  476. package/dist/core/wire.d.ts +0 -20
  477. package/dist/core/wire.d.ts.map +0 -1
  478. package/dist/core/wire.js +0 -84
  479. package/dist/core/wire.js.map +0 -1
  480. package/dist/core/withCaller.d.ts +0 -24
  481. package/dist/core/withCaller.d.ts.map +0 -1
  482. package/dist/core/withCaller.js +0 -35
  483. package/dist/core/withCaller.js.map +0 -1
  484. package/dist/d1/adapter.d.ts +0 -12
  485. package/dist/d1/adapter.d.ts.map +0 -1
  486. package/dist/d1/adapter.js +0 -23
  487. package/dist/d1/adapter.js.map +0 -1
  488. package/dist/d1/codec.d.ts +0 -14
  489. package/dist/d1/codec.d.ts.map +0 -1
  490. package/dist/d1/codec.js +0 -136
  491. package/dist/d1/codec.js.map +0 -1
  492. package/dist/d1/compile/index.d.ts +0 -9
  493. package/dist/d1/compile/index.d.ts.map +0 -1
  494. package/dist/d1/compile/index.js +0 -9
  495. package/dist/d1/compile/index.js.map +0 -1
  496. package/dist/d1/dialect.d.ts +0 -4
  497. package/dist/d1/dialect.d.ts.map +0 -1
  498. package/dist/d1/dialect.js +0 -13
  499. package/dist/d1/dialect.js.map +0 -1
  500. package/dist/d1/executor.d.ts +0 -15
  501. package/dist/d1/executor.d.ts.map +0 -1
  502. package/dist/d1/executor.js +0 -96
  503. package/dist/d1/executor.js.map +0 -1
  504. package/dist/d1/index.d.ts +0 -6
  505. package/dist/d1/index.d.ts.map +0 -1
  506. package/dist/d1/index.js +0 -6
  507. package/dist/d1/index.js.map +0 -1
  508. package/dist/d1/lower.d.ts +0 -8
  509. package/dist/d1/lower.d.ts.map +0 -1
  510. package/dist/d1/lower.js +0 -167
  511. package/dist/d1/lower.js.map +0 -1
  512. package/dist/d1/media.d.ts +0 -5
  513. package/dist/d1/media.d.ts.map +0 -1
  514. package/dist/d1/media.js +0 -157
  515. package/dist/d1/media.js.map +0 -1
  516. package/dist/d1/migrations.d.ts +0 -12
  517. package/dist/d1/migrations.d.ts.map +0 -1
  518. package/dist/d1/migrations.js +0 -111
  519. package/dist/d1/migrations.js.map +0 -1
  520. package/dist/d1/print.d.ts +0 -28
  521. package/dist/d1/print.d.ts.map +0 -1
  522. package/dist/d1/print.js +0 -54
  523. package/dist/d1/print.js.map +0 -1
  524. package/dist/d1/site.d.ts +0 -17
  525. package/dist/d1/site.d.ts.map +0 -1
  526. package/dist/d1/site.js +0 -63
  527. package/dist/d1/site.js.map +0 -1
  528. package/dist/d1/storage.d.ts +0 -34
  529. package/dist/d1/storage.d.ts.map +0 -1
  530. package/dist/d1/storage.js +0 -288
  531. package/dist/d1/storage.js.map +0 -1
  532. package/dist/d1/tz.d.ts +0 -21
  533. package/dist/d1/tz.d.ts.map +0 -1
  534. package/dist/d1/tz.js +0 -54
  535. package/dist/d1/tz.js.map +0 -1
  536. package/dist/d1/validator.d.ts +0 -10
  537. package/dist/d1/validator.d.ts.map +0 -1
  538. package/dist/d1/validator.js +0 -33
  539. package/dist/d1/validator.js.map +0 -1
  540. package/dist/mcp/apps.d.ts +0 -43
  541. package/dist/mcp/apps.d.ts.map +0 -1
  542. package/dist/mcp/apps.js +0 -57
  543. package/dist/mcp/apps.js.map +0 -1
  544. package/dist/mcp/catalog.d.ts +0 -55
  545. package/dist/mcp/catalog.d.ts.map +0 -1
  546. package/dist/mcp/catalog.js +0 -81
  547. package/dist/mcp/catalog.js.map +0 -1
  548. package/dist/mcp/createMcpSurface.d.ts +0 -60
  549. package/dist/mcp/createMcpSurface.d.ts.map +0 -1
  550. package/dist/mcp/createMcpSurface.js +0 -182
  551. package/dist/mcp/createMcpSurface.js.map +0 -1
  552. package/dist/mcp/index.d.ts +0 -4
  553. package/dist/mcp/index.d.ts.map +0 -1
  554. package/dist/mcp/index.js +0 -4
  555. package/dist/mcp/index.js.map +0 -1
  556. package/dist/mcp/media.d.ts +0 -9
  557. package/dist/mcp/media.d.ts.map +0 -1
  558. package/dist/mcp/media.js +0 -33
  559. package/dist/mcp/media.js.map +0 -1
  560. package/dist/postgres/adapter.d.ts +0 -23
  561. package/dist/postgres/adapter.d.ts.map +0 -1
  562. package/dist/postgres/adapter.js +0 -50
  563. package/dist/postgres/adapter.js.map +0 -1
  564. package/dist/postgres/codec.d.ts +0 -13
  565. package/dist/postgres/codec.d.ts.map +0 -1
  566. package/dist/postgres/codec.js +0 -110
  567. package/dist/postgres/codec.js.map +0 -1
  568. package/dist/postgres/compile/index.d.ts +0 -9
  569. package/dist/postgres/compile/index.d.ts.map +0 -1
  570. package/dist/postgres/compile/index.js +0 -9
  571. package/dist/postgres/compile/index.js.map +0 -1
  572. package/dist/postgres/driver.d.ts +0 -109
  573. package/dist/postgres/driver.d.ts.map +0 -1
  574. package/dist/postgres/driver.js +0 -186
  575. package/dist/postgres/driver.js.map +0 -1
  576. package/dist/postgres/executor.d.ts +0 -28
  577. package/dist/postgres/executor.d.ts.map +0 -1
  578. package/dist/postgres/executor.js +0 -96
  579. package/dist/postgres/executor.js.map +0 -1
  580. package/dist/postgres/index.d.ts +0 -8
  581. package/dist/postgres/index.d.ts.map +0 -1
  582. package/dist/postgres/index.js +0 -8
  583. package/dist/postgres/index.js.map +0 -1
  584. package/dist/postgres/lower.d.ts +0 -6
  585. package/dist/postgres/lower.d.ts.map +0 -1
  586. package/dist/postgres/lower.js +0 -152
  587. package/dist/postgres/lower.js.map +0 -1
  588. package/dist/postgres/print.d.ts +0 -11
  589. package/dist/postgres/print.d.ts.map +0 -1
  590. package/dist/postgres/print.js +0 -108
  591. package/dist/postgres/print.js.map +0 -1
  592. package/dist/postgres/session.d.ts +0 -9
  593. package/dist/postgres/session.d.ts.map +0 -1
  594. package/dist/postgres/session.js +0 -111
  595. package/dist/postgres/session.js.map +0 -1
  596. package/dist/postgres/storage.d.ts +0 -32
  597. package/dist/postgres/storage.d.ts.map +0 -1
  598. package/dist/postgres/storage.js +0 -283
  599. package/dist/postgres/storage.js.map +0 -1
  600. package/dist/postgres/validator.d.ts +0 -13
  601. package/dist/postgres/validator.d.ts.map +0 -1
  602. package/dist/postgres/validator.js +0 -53
  603. package/dist/postgres/validator.js.map +0 -1
  604. package/dist/spec/domain/index.d.ts +0 -3
  605. package/dist/spec/domain/index.d.ts.map +0 -1
  606. package/dist/spec/domain/index.js +0 -3
  607. package/dist/spec/domain/index.js.map +0 -1
  608. package/dist/spec/domain/model/ContentState.d.ts +0 -8
  609. package/dist/spec/domain/model/ContentState.d.ts.map +0 -1
  610. package/dist/spec/domain/model/ContentState.js +0 -7
  611. package/dist/spec/domain/model/ContentState.js.map +0 -1
  612. package/dist/spec/domain/model/Entry.d.ts +0 -29
  613. package/dist/spec/domain/model/Entry.d.ts.map +0 -1
  614. package/dist/spec/domain/model/Entry.js +0 -16
  615. package/dist/spec/domain/model/Entry.js.map +0 -1
  616. package/dist/spec/domain/model/Locale.d.ts +0 -30
  617. package/dist/spec/domain/model/Locale.d.ts.map +0 -1
  618. package/dist/spec/domain/model/Locale.js +0 -33
  619. package/dist/spec/domain/model/Locale.js.map +0 -1
  620. package/dist/spec/domain/model/ManifestGrammar.d.ts.map +0 -1
  621. package/dist/spec/domain/model/ManifestGrammar.js +0 -153
  622. package/dist/spec/domain/model/ManifestGrammar.js.map +0 -1
  623. package/dist/spec/domain/model/MediaMimeAccept.d.ts +0 -55
  624. package/dist/spec/domain/model/MediaMimeAccept.d.ts.map +0 -1
  625. package/dist/spec/domain/model/MediaMimeAccept.js +0 -90
  626. package/dist/spec/domain/model/MediaMimeAccept.js.map +0 -1
  627. package/dist/spec/domain/model/RuntimePlan.d.ts.map +0 -1
  628. package/dist/spec/domain/model/RuntimePlan.js +0 -4
  629. package/dist/spec/domain/model/RuntimePlan.js.map +0 -1
  630. package/dist/spec/domain/model/SiteConfig.d.ts +0 -173
  631. package/dist/spec/domain/model/SiteConfig.d.ts.map +0 -1
  632. package/dist/spec/domain/model/SiteConfig.js +0 -13
  633. package/dist/spec/domain/model/SiteConfig.js.map +0 -1
  634. package/dist/spec/domain/model/SqlIr.d.ts.map +0 -1
  635. package/dist/spec/domain/model/SqlIr.js +0 -95
  636. package/dist/spec/domain/model/SqlIr.js.map +0 -1
  637. package/dist/spec/domain/model/index.d.ts +0 -14
  638. package/dist/spec/domain/model/index.d.ts.map +0 -1
  639. package/dist/spec/domain/model/index.js +0 -14
  640. package/dist/spec/domain/model/index.js.map +0 -1
  641. package/dist/spec/domain/service/CloudflareCron.d.ts.map +0 -1
  642. package/dist/spec/domain/service/CloudflareCron.js.map +0 -1
  643. package/dist/spec/domain/service/CrossSchemaChecker.d.ts +0 -34
  644. package/dist/spec/domain/service/CrossSchemaChecker.d.ts.map +0 -1
  645. package/dist/spec/domain/service/CrossSchemaChecker.js +0 -114
  646. package/dist/spec/domain/service/CrossSchemaChecker.js.map +0 -1
  647. package/dist/spec/domain/service/EntryDataValidator.d.ts +0 -56
  648. package/dist/spec/domain/service/EntryDataValidator.d.ts.map +0 -1
  649. package/dist/spec/domain/service/EntryDataValidator.js +0 -88
  650. package/dist/spec/domain/service/EntryDataValidator.js.map +0 -1
  651. package/dist/spec/domain/service/JsonSchemaToZod.d.ts +0 -29
  652. package/dist/spec/domain/service/JsonSchemaToZod.d.ts.map +0 -1
  653. package/dist/spec/domain/service/JsonSchemaToZod.js +0 -156
  654. package/dist/spec/domain/service/JsonSchemaToZod.js.map +0 -1
  655. package/dist/spec/domain/service/LifecycleStateMachine.d.ts +0 -75
  656. package/dist/spec/domain/service/LifecycleStateMachine.d.ts.map +0 -1
  657. package/dist/spec/domain/service/LifecycleStateMachine.js +0 -76
  658. package/dist/spec/domain/service/LifecycleStateMachine.js.map +0 -1
  659. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts +0 -29
  660. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts.map +0 -1
  661. package/dist/spec/domain/service/LocaleCanonicalizer.js +0 -96
  662. package/dist/spec/domain/service/LocaleCanonicalizer.js.map +0 -1
  663. package/dist/spec/domain/service/ManifestFieldChecks.d.ts +0 -60
  664. package/dist/spec/domain/service/ManifestFieldChecks.d.ts.map +0 -1
  665. package/dist/spec/domain/service/ManifestFieldChecks.js +0 -116
  666. package/dist/spec/domain/service/ManifestFieldChecks.js.map +0 -1
  667. package/dist/spec/domain/service/ManifestGraphValidator.d.ts +0 -15
  668. package/dist/spec/domain/service/ManifestGraphValidator.d.ts.map +0 -1
  669. package/dist/spec/domain/service/ManifestGraphValidator.js +0 -225
  670. package/dist/spec/domain/service/ManifestGraphValidator.js.map +0 -1
  671. package/dist/spec/domain/service/ManifestLinker.d.ts +0 -45
  672. package/dist/spec/domain/service/ManifestLinker.d.ts.map +0 -1
  673. package/dist/spec/domain/service/ManifestLinker.js +0 -92
  674. package/dist/spec/domain/service/ManifestLinker.js.map +0 -1
  675. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts +0 -16
  676. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts.map +0 -1
  677. package/dist/spec/domain/service/ManifestLocaleTrimmer.js +0 -76
  678. package/dist/spec/domain/service/ManifestLocaleTrimmer.js.map +0 -1
  679. package/dist/spec/domain/service/ManifestParser.d.ts +0 -49
  680. package/dist/spec/domain/service/ManifestParser.d.ts.map +0 -1
  681. package/dist/spec/domain/service/ManifestParser.js +0 -203
  682. package/dist/spec/domain/service/ManifestParser.js.map +0 -1
  683. package/dist/spec/domain/service/ManifestPartition.d.ts +0 -9
  684. package/dist/spec/domain/service/ManifestPartition.d.ts.map +0 -1
  685. package/dist/spec/domain/service/ManifestPartition.js +0 -19
  686. package/dist/spec/domain/service/ManifestPartition.js.map +0 -1
  687. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts +0 -33
  688. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts.map +0 -1
  689. package/dist/spec/domain/service/ManifestPathDiagnoser.js +0 -43
  690. package/dist/spec/domain/service/ManifestPathDiagnoser.js.map +0 -1
  691. package/dist/spec/domain/service/ManifestSourceSpans.d.ts +0 -10
  692. package/dist/spec/domain/service/ManifestSourceSpans.d.ts.map +0 -1
  693. package/dist/spec/domain/service/ManifestSourceSpans.js +0 -76
  694. package/dist/spec/domain/service/ManifestSourceSpans.js.map +0 -1
  695. package/dist/spec/domain/service/McpToolNaming.d.ts +0 -25
  696. package/dist/spec/domain/service/McpToolNaming.d.ts.map +0 -1
  697. package/dist/spec/domain/service/McpToolNaming.js +0 -50
  698. package/dist/spec/domain/service/McpToolNaming.js.map +0 -1
  699. package/dist/spec/domain/service/PlanFingerprint.d.ts.map +0 -1
  700. package/dist/spec/domain/service/PlanFingerprint.js +0 -14
  701. package/dist/spec/domain/service/PlanFingerprint.js.map +0 -1
  702. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts +0 -4
  703. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts.map +0 -1
  704. package/dist/spec/domain/service/ProcedureViewSpecChecks.js +0 -211
  705. package/dist/spec/domain/service/ProcedureViewSpecChecks.js.map +0 -1
  706. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts +0 -44
  707. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +0 -1
  708. package/dist/spec/domain/service/SchemaAdminUiChecker.js +0 -333
  709. package/dist/spec/domain/service/SchemaAdminUiChecker.js.map +0 -1
  710. package/dist/spec/domain/service/SchemaIndexChecker.d.ts +0 -33
  711. package/dist/spec/domain/service/SchemaIndexChecker.d.ts.map +0 -1
  712. package/dist/spec/domain/service/SchemaIndexChecker.js +0 -256
  713. package/dist/spec/domain/service/SchemaIndexChecker.js.map +0 -1
  714. package/dist/spec/domain/service/SchemaSearchChecker.d.ts +0 -11
  715. package/dist/spec/domain/service/SchemaSearchChecker.d.ts.map +0 -1
  716. package/dist/spec/domain/service/SchemaSearchChecker.js +0 -78
  717. package/dist/spec/domain/service/SchemaSearchChecker.js.map +0 -1
  718. package/dist/spec/domain/service/SchemaSpecChecks.d.ts +0 -31
  719. package/dist/spec/domain/service/SchemaSpecChecks.d.ts.map +0 -1
  720. package/dist/spec/domain/service/SchemaSpecChecks.js +0 -445
  721. package/dist/spec/domain/service/SchemaSpecChecks.js.map +0 -1
  722. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts +0 -39
  723. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts.map +0 -1
  724. package/dist/spec/domain/service/SiteDefaultsValidator.js +0 -194
  725. package/dist/spec/domain/service/SiteDefaultsValidator.js.map +0 -1
  726. package/dist/spec/domain/service/SqlClassify.d.ts +0 -19
  727. package/dist/spec/domain/service/SqlClassify.d.ts.map +0 -1
  728. package/dist/spec/domain/service/SqlClassify.js +0 -42
  729. package/dist/spec/domain/service/SqlClassify.js.map +0 -1
  730. package/dist/spec/domain/service/SqlRefusal.d.ts +0 -16
  731. package/dist/spec/domain/service/SqlRefusal.d.ts.map +0 -1
  732. package/dist/spec/domain/service/SqlRefusal.js +0 -20
  733. package/dist/spec/domain/service/SqlRefusal.js.map +0 -1
  734. package/dist/spec/domain/service/SqlTypes.d.ts +0 -40
  735. package/dist/spec/domain/service/SqlTypes.d.ts.map +0 -1
  736. package/dist/spec/domain/service/SqlTypes.js +0 -110
  737. package/dist/spec/domain/service/SqlTypes.js.map +0 -1
  738. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts +0 -3
  739. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts.map +0 -1
  740. package/dist/spec/domain/service/StaffRoleHierarchy.js +0 -19
  741. package/dist/spec/domain/service/StaffRoleHierarchy.js.map +0 -1
  742. package/dist/spec/domain/service/TriggerGraphChecks.d.ts +0 -16
  743. package/dist/spec/domain/service/TriggerGraphChecks.d.ts.map +0 -1
  744. package/dist/spec/domain/service/TriggerGraphChecks.js +0 -337
  745. package/dist/spec/domain/service/TriggerGraphChecks.js.map +0 -1
  746. package/dist/spec/domain/service/TriggerSpecChecks.d.ts +0 -4
  747. package/dist/spec/domain/service/TriggerSpecChecks.d.ts.map +0 -1
  748. package/dist/spec/domain/service/TriggerSpecChecks.js +0 -89
  749. package/dist/spec/domain/service/TriggerSpecChecks.js.map +0 -1
  750. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts +0 -11
  751. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts.map +0 -1
  752. package/dist/spec/domain/service/ValidatedAdminUiProjection.js +0 -26
  753. package/dist/spec/domain/service/ValidatedAdminUiProjection.js.map +0 -1
  754. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts +0 -14
  755. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts.map +0 -1
  756. package/dist/spec/domain/service/ViewAdminUiChecker.js +0 -58
  757. package/dist/spec/domain/service/ViewAdminUiChecker.js.map +0 -1
  758. package/dist/spec/domain/service/index.d.ts +0 -24
  759. package/dist/spec/domain/service/index.d.ts.map +0 -1
  760. package/dist/spec/domain/service/index.js +0 -24
  761. package/dist/spec/domain/service/index.js.map +0 -1
  762. package/dist/spec/index.d.ts +0 -10
  763. package/dist/spec/index.d.ts.map +0 -1
  764. package/dist/spec/index.js +0 -12
  765. package/dist/spec/index.js.map +0 -1
  766. package/dist/spec/infrastructure/cli/parseArgsError.d.ts +0 -16
  767. package/dist/spec/infrastructure/cli/parseArgsError.d.ts.map +0 -1
  768. package/dist/spec/infrastructure/cli/parseArgsError.js +0 -34
  769. package/dist/spec/infrastructure/cli/parseArgsError.js.map +0 -1
  770. package/dist/spec/infrastructure/index.d.ts +0 -2
  771. package/dist/spec/infrastructure/index.d.ts.map +0 -1
  772. package/dist/spec/infrastructure/index.js +0 -2
  773. package/dist/spec/infrastructure/index.js.map +0 -1
  774. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts +0 -18
  775. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts.map +0 -1
  776. package/dist/spec/infrastructure/sql/PgQueryParser.js +0 -17
  777. package/dist/spec/infrastructure/sql/PgQueryParser.js.map +0 -1
  778. package/dist/spec/infrastructure/sql/compilePlan.d.ts +0 -37
  779. package/dist/spec/infrastructure/sql/compilePlan.d.ts.map +0 -1
  780. package/dist/spec/infrastructure/sql/compilePlan.js +0 -287
  781. package/dist/spec/infrastructure/sql/compilePlan.js.map +0 -1
  782. package/dist/spec/infrastructure/sql/compileSql.d.ts +0 -35
  783. package/dist/spec/infrastructure/sql/compileSql.d.ts.map +0 -1
  784. package/dist/spec/infrastructure/sql/compileSql.js +0 -92
  785. package/dist/spec/infrastructure/sql/compileSql.js.map +0 -1
  786. package/dist/spec/infrastructure/sql/frontEnd.d.ts +0 -8
  787. package/dist/spec/infrastructure/sql/frontEnd.d.ts.map +0 -1
  788. package/dist/spec/infrastructure/sql/frontEnd.js +0 -100
  789. package/dist/spec/infrastructure/sql/frontEnd.js.map +0 -1
  790. package/dist/spec/infrastructure/sql/index.d.ts +0 -4
  791. package/dist/spec/infrastructure/sql/index.d.ts.map +0 -1
  792. package/dist/spec/infrastructure/sql/index.js +0 -4
  793. package/dist/spec/infrastructure/sql/index.js.map +0 -1
  794. package/dist/spec/kernel/diagnostic.d.ts.map +0 -1
  795. package/dist/spec/kernel/diagnostic.js +0 -301
  796. package/dist/spec/kernel/diagnostic.js.map +0 -1
  797. package/dist/spec/kernel/index.d.ts +0 -8
  798. package/dist/spec/kernel/index.d.ts.map +0 -1
  799. package/dist/spec/kernel/index.js +0 -8
  800. package/dist/spec/kernel/index.js.map +0 -1
  801. package/dist/spec/usecase/EmitTypes.d.ts +0 -22
  802. package/dist/spec/usecase/EmitTypes.d.ts.map +0 -1
  803. package/dist/spec/usecase/EmitTypes.js +0 -182
  804. package/dist/spec/usecase/EmitTypes.js.map +0 -1
  805. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts +0 -8
  806. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts.map +0 -1
  807. package/dist/spec/usecase/ValidateManifestsUseCase.js +0 -101
  808. package/dist/spec/usecase/ValidateManifestsUseCase.js.map +0 -1
  809. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts +0 -27
  810. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts.map +0 -1
  811. package/dist/spec/usecase/dto/ValidateManifestsRequest.js +0 -2
  812. package/dist/spec/usecase/dto/ValidateManifestsRequest.js.map +0 -1
  813. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts +0 -14
  814. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts.map +0 -1
  815. package/dist/spec/usecase/dto/ValidateManifestsResponse.js +0 -2
  816. package/dist/spec/usecase/dto/ValidateManifestsResponse.js.map +0 -1
  817. package/dist/spec/usecase/dto/index.d.ts +0 -3
  818. package/dist/spec/usecase/dto/index.d.ts.map +0 -1
  819. package/dist/spec/usecase/dto/index.js +0 -3
  820. package/dist/spec/usecase/dto/index.js.map +0 -1
  821. package/dist/spec/usecase/index.d.ts +0 -10
  822. package/dist/spec/usecase/index.d.ts.map +0 -1
  823. package/dist/spec/usecase/index.js +0 -10
  824. package/dist/spec/usecase/index.js.map +0 -1
  825. package/dist/testing/cases/before-hook.d.ts +0 -4
  826. package/dist/testing/cases/before-hook.d.ts.map +0 -1
  827. package/dist/testing/cases/before-hook.js +0 -71
  828. package/dist/testing/cases/before-hook.js.map +0 -1
  829. package/dist/testing/cases/corpus.d.ts +0 -14
  830. package/dist/testing/cases/corpus.d.ts.map +0 -1
  831. package/dist/testing/cases/corpus.js +0 -93
  832. package/dist/testing/cases/corpus.js.map +0 -1
  833. package/dist/testing/cases/policy.d.ts +0 -87
  834. package/dist/testing/cases/policy.d.ts.map +0 -1
  835. package/dist/testing/cases/policy.js +0 -143
  836. package/dist/testing/cases/policy.js.map +0 -1
  837. package/dist/testing/cases/printer.d.ts +0 -4
  838. package/dist/testing/cases/printer.d.ts.map +0 -1
  839. package/dist/testing/cases/printer.js +0 -34
  840. package/dist/testing/cases/printer.js.map +0 -1
  841. package/dist/testing/cases/report-view.d.ts +0 -5
  842. package/dist/testing/cases/report-view.d.ts.map +0 -1
  843. package/dist/testing/cases/report-view.js +0 -51
  844. package/dist/testing/cases/report-view.js.map +0 -1
  845. package/dist/testing/cases/requisition.d.ts +0 -4
  846. package/dist/testing/cases/requisition.d.ts.map +0 -1
  847. package/dist/testing/cases/requisition.js +0 -38
  848. package/dist/testing/cases/requisition.js.map +0 -1
  849. package/dist/testing/cases/search-places.d.ts +0 -4
  850. package/dist/testing/cases/search-places.d.ts.map +0 -1
  851. package/dist/testing/cases/search-places.js +0 -60
  852. package/dist/testing/cases/search-places.js.map +0 -1
  853. package/dist/testing/cases/stock.d.ts +0 -4
  854. package/dist/testing/cases/stock.d.ts.map +0 -1
  855. package/dist/testing/cases/stock.js +0 -35
  856. package/dist/testing/cases/stock.js.map +0 -1
  857. package/dist/testing/cases/store.d.ts +0 -4
  858. package/dist/testing/cases/store.d.ts.map +0 -1
  859. package/dist/testing/cases/store.js +0 -100
  860. package/dist/testing/cases/store.js.map +0 -1
  861. package/dist/testing/harness.d.ts +0 -94
  862. package/dist/testing/harness.d.ts.map +0 -1
  863. package/dist/testing/harness.js +0 -168
  864. package/dist/testing/harness.js.map +0 -1
  865. package/dist/testing/index.d.ts.map +0 -1
  866. package/dist/testing/index.js.map +0 -1
  867. package/dist/testing/report.d.ts +0 -15
  868. package/dist/testing/report.d.ts.map +0 -1
  869. package/dist/testing/report.js +0 -22
  870. package/dist/testing/report.js.map +0 -1
  871. package/dist/web/createRestSurface.d.ts +0 -7
  872. package/dist/web/createRestSurface.d.ts.map +0 -1
  873. package/dist/web/createRestSurface.js +0 -41
  874. package/dist/web/createRestSurface.js.map +0 -1
  875. package/dist/web/index.d.ts +0 -2
  876. package/dist/web/index.d.ts.map +0 -1
  877. package/dist/web/index.js +0 -2
  878. package/dist/web/index.js.map +0 -1
  879. package/docs/adr/0001-four-atom-manifest-model.md +0 -440
  880. package/docs/adr/0002-closed-enums-for-bindings.md +0 -253
  881. package/docs/adr/0007-ai-as-primary-author.md +0 -473
  882. package/docs/adr/0008-structured-diagnostic-shape.md +0 -338
  883. package/docs/adr/0009-consumer-supplied-manifests.md +0 -149
  884. package/docs/adr/0010-locale-and-translates.md +0 -453
  885. package/docs/adr/0011-adapter-port-spec.md +0 -281
  886. package/docs/adr/0012-views-as-public-rest.md +0 -161
  887. package/docs/adr/0013-agent-provisioned-consumer-projects.md +0 -154
  888. package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +0 -939
  889. package/docs/adr/0016-site-semantic-layer.md +0 -70
  890. package/docs/adr/0017-media-multi-variant-agent-side-optimization.md +0 -181
  891. package/docs/adr/0018-core-starters-repository-boundary.md +0 -179
  892. package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +0 -244
  893. package/docs/adr/0020-builtin-handler-contracts-and-matched-upsert.md +0 -199
  894. package/docs/adr/0021-retire-starter-scaffolding.md +0 -30
  895. package/docs/adr/0022-caller-observed-version-occ.md +0 -212
  896. package/docs/adr/0023-port-failure-contract.md +0 -69
  897. package/docs/adr/0024-manifest-native-schema-tables.md +0 -264
  898. package/docs/adr/0025-reserved-native-columns-and-published-only-public-views.md +0 -105
  899. package/docs/adr/0026-progressive-generate.md +0 -36
  900. package/docs/adr/0027-scheduled-procedure-triggers.md +0 -31
  901. package/docs/adr/0028-schema-ttl-expiry.md +0 -33
  902. package/docs/adr/0029-mcp-apps-interaction-contracts.md +0 -324
  903. package/docs/adr/0030-store.md +0 -40
  904. package/docs/adr/0031-host-cloud-core-contract.md +0 -102
  905. package/docs/adr/0032-store-centric-core-and-service-contract.md +0 -384
  906. package/docs/adr/0033-storage-converges-to-the-plan.md +0 -92
  907. package/docs/adr/0034-store-is-authored-as-sql.md +0 -192
  908. package/docs/adr/0035-sql-dialects.md +0 -154
  909. package/docs/adr/0036-host-and-dialect.md +0 -65
  910. package/docs/adr/0037-postgresql-is-the-reference-dialect.md +0 -125
  911. package/docs/adr/0038-bun-native-host.md +0 -63
  912. package/docs/adr/0039-postgresql-is-native.md +0 -130
  913. package/docs/adr/README.md +0 -98
  914. package/docs/adr/adr-lite-1376-admin-extensions.md +0 -330
  915. package/docs/adr/adr-lite-803-request-diagnostics.md +0 -38
  916. package/docs/adr/adr-lite-808-route-readiness.md +0 -47
  917. package/docs/adr/adr-lite-809-bounded-public-content.md +0 -71
  918. package/docs/adr/adr-lite-812-native-parity.md +0 -150
  919. package/docs/adr/adr-lite-823-home-statistics.md +0 -64
  920. package/docs/adr/adr-lite-842-mcp-authoring.md +0 -30
  921. package/docs/adr/adr-lite-845-frontend-client.md +0 -38
  922. package/docs/adr/adr-lite-861-admin-webmcp.md +0 -48
  923. package/docs/adr/adr-lite-909-admin-ui-kit.md +0 -37
  924. package/docs/examples/commerce-inventory.md +0 -498
  925. package/docs/examples/commerce.md +0 -254
  926. package/docs/examples/guarded-api.md +0 -238
  927. package/docs/examples/intake-hooks.md +0 -237
  928. package/docs/examples/intake.md +0 -127
  929. package/docs/examples/legal-documents.md +0 -218
  930. package/docs/examples/procurement.md +0 -226
  931. package/docs/examples/publication.md +0 -211
  932. package/docs/examples/reference-service/.mantle/generated/mantle.ts +0 -174
  933. package/docs/examples/reference-service/.mantle/generated/plan.json +0 -1936
  934. package/docs/examples/reference-service/README.md +0 -33
  935. package/docs/examples/reference-service/manifests/catalog.yaml +0 -103
  936. package/docs/examples/reference-service/manifests/orders.yaml +0 -120
  937. package/docs/examples/reference-service/mantle.config.json +0 -1
  938. package/docs/examples/reference-service/package.json +0 -27
  939. package/docs/examples/reference-service/smoke.mjs +0 -160
  940. package/docs/examples/reference-service/src/handlers.ts +0 -36
  941. package/docs/examples/reference-service/src/index.ts +0 -33
  942. package/docs/examples/reference-service/src/service.ts +0 -78
  943. package/docs/examples/reference-service/wrangler.jsonc +0 -26
  944. package/docs/examples/reservation.md +0 -142
  945. package/docs/handbook/guides/admin-extensions.md +0 -191
  946. /package/docs/examples/{reference-service → app-shell}/.dev.vars.example +0 -0
@@ -1,33 +0,0 @@
1
- # Reference service
2
-
3
- A small shop built on `@aotter/mantle` 0.2.0. It is also the Worker that the
4
- release gate runs (`scripts/check-worker-consumer.mjs`).
5
-
6
- - `manifests/`: the whole service in the v2 grammar.
7
- - A scoped Schema (`orders`) and a Schema with a check (`items`, `stock >= 0`).
8
- - Views written as one `SELECT`: a join, a `GROUP BY`, and `mantle.search`.
9
- - Procedures written as SQL: a two-statement order, an `ON CONFLICT`
10
- restock, and an optimistic-lock cancel in handler code.
11
- - An after hook that loops over `ctx.cause.rows`.
12
- - A POSIX cron.
13
- - `src/handlers.ts`: the three `ref` handlers, written against the typed
14
- `ctx.store`.
15
- - `src/service.ts`, `src/index.ts`, `wrangler.jsonc`, `tsconfig.json`: the
16
- preset `mantle generate` wrote once. These files are the application's own.
17
- - `smoke.mjs`: starts `wrangler dev` on a fresh local D1 and drives the service:
18
- - console email-OTP sign-in for an owner and a buyer;
19
- - REST, both MCP surfaces, the cron, and Admin: the console from `@aotter/mantle-ui/admin` at `/admin`, its API, and an editor's save;
20
- - asserts scope, the stock check, locks and hooks.
21
-
22
- Outside the SDK workspace, with Node 22+ and pnpm 9+, pin every dependency to
23
- one exact version, then:
24
-
25
- ```sh
26
- pnpm install
27
- pnpm check # generate, generate --check, typecheck, smoke
28
- cp .dev.vars.example .dev.vars # set ADMIN_EMAIL and a random BETTER_AUTH_SECRET
29
- pnpm dev # open /admin; sign-in codes are printed to this log
30
- ```
31
-
32
- The release gate installs the exact tarballs it just packed in place of the
33
- pinned versions.
@@ -1,103 +0,0 @@
1
- # A small shop: a public catalog, orders that only their owner sees, and staff tools.
2
- apiVersion: cms.mantle.aotter.net/v2
3
- kind: Schema
4
- metadata: { name: items }
5
- spec:
6
- title: Items
7
- lifecycle: operational
8
- schema:
9
- type: object
10
- required: [sku, name, stock]
11
- properties:
12
- sku: { type: string }
13
- name: { type: string }
14
- priceCents: { type: integer, minimum: 0 }
15
- stock: { type: integer, default: 0 }
16
- checks: ["stock >= 0"]
17
- uiSchema: { list: { primaryField: name, columns: [sku, stock] } }
18
- uniqueIndexes: [[sku]]
19
- searchableFields: [name, sku]
20
- ---
21
- apiVersion: cms.mantle.aotter.net/v2
22
- kind: Schema
23
- metadata: { name: orders }
24
- spec:
25
- title: Orders
26
- lifecycle: operational
27
- scope: { owner: auth.uid() }
28
- uiSchema: { list: { primaryField: itemId, columns: [qty, orderStatus] } }
29
- indexes: [[owner]]
30
- schema:
31
- type: object
32
- required: [owner, itemId, qty, orderStatus]
33
- properties:
34
- owner: { type: string }
35
- itemId: { type: string }
36
- qty: { type: integer, minimum: 1 }
37
- orderStatus: { type: string, enum: [placed, cancelled] }
38
- placedAt: { type: string, format: date-time }
39
- ---
40
- apiVersion: cms.mantle.aotter.net/v2
41
- kind: Schema
42
- metadata: { name: activity }
43
- spec:
44
- title: Activity
45
- lifecycle: operational
46
- schema:
47
- type: object
48
- required: [kind, subject]
49
- properties:
50
- kind: { type: string }
51
- subject: { type: string }
52
- detail: { type: string }
53
- ---
54
- # Views are one SELECT; `input` is their parameters.
55
- apiVersion: cms.mantle.aotter.net/v2
56
- kind: View
57
- metadata: { name: catalog }
58
- spec:
59
- surface: public
60
- sql: SELECT id, sku, name, priceCents, stock FROM items ORDER BY name
61
- ---
62
- apiVersion: cms.mantle.aotter.net/v2
63
- kind: View
64
- metadata: { name: search-items }
65
- spec:
66
- surface: public
67
- input: { type: object, required: [q], properties: { q: { type: string, minLength: 1 } } }
68
- sql: |
69
- SELECT i.id, i.name, i.stock FROM items i
70
- WHERE mantle.search(i, input.q)
71
- ORDER BY mantle.search_rank(i), i.name
72
- ---
73
- # Scope is injected into every Schema reference: this join only ever sees the caller's orders.
74
- apiVersion: cms.mantle.aotter.net/v2
75
- kind: View
76
- metadata: { name: my-orders }
77
- spec:
78
- surface: public
79
- requires: { auth: { all: [ctx.user] } }
80
- sql: |
81
- SELECT o.id, o.qty, o.orderStatus, i.name AS item, o.version
82
- FROM orders o JOIN items i ON i.id = o.itemId
83
- ORDER BY o.created_at DESC
84
- ---
85
- apiVersion: cms.mantle.aotter.net/v2
86
- kind: View
87
- metadata: { name: sales-by-item }
88
- spec:
89
- surface: staff
90
- requires: { auth: { all: [{ ctx.staff: [owner, editor] }] } }
91
- sql: |
92
- SELECT i.name, count(o.id) AS orders, coalesce(sum(o.qty), 0) AS units
93
- FROM items i LEFT JOIN orders o ON o.itemId = i.id AND o.orderStatus = 'placed'
94
- GROUP BY i.name
95
- ORDER BY units DESC, i.name
96
- ---
97
- apiVersion: cms.mantle.aotter.net/v2
98
- kind: View
99
- metadata: { name: recent-activity }
100
- spec:
101
- surface: staff
102
- requires: { auth: { all: [{ ctx.staff: [owner, editor] }] } }
103
- sql: SELECT kind, subject, detail FROM activity ORDER BY created_at DESC LIMIT 50
@@ -1,120 +0,0 @@
1
- # A Procedure written as SQL: its statements apply together or not at all. The order is written
2
- # first, so when the stock check on items fails the second statement, the order is rolled back too.
3
- apiVersion: cms.mantle.aotter.net/v2
4
- kind: Procedure
5
- metadata: { name: place-order }
6
- spec:
7
- title: Place an order
8
- description: Order one item for the signed-in caller; the stock check fails the whole order when stock runs out.
9
- requires: { auth: { all: [ctx.user] } }
10
- input:
11
- type: object
12
- required: [itemId, qty]
13
- properties:
14
- itemId: { type: string }
15
- qty: { type: integer, minimum: 1 }
16
- output: { type: object }
17
- handler:
18
- sql: |
19
- INSERT INTO orders (itemId, qty, orderStatus, placedAt)
20
- SELECT id, input.qty, 'placed', now() FROM items WHERE id = input.itemId
21
- RETURNING id, qty, orderStatus;
22
- UPDATE items SET stock = stock - input.qty WHERE id = input.itemId
23
- ---
24
- # Optimistic concurrency: the caller sends the version it saw.
25
- apiVersion: cms.mantle.aotter.net/v2
26
- kind: Procedure
27
- metadata: { name: cancel-order }
28
- spec:
29
- title: Cancel an order
30
- requires: { auth: { all: [ctx.user] } }
31
- input:
32
- type: object
33
- required: [orderId, expectedVersion]
34
- properties:
35
- orderId: { type: string }
36
- expectedVersion: { type: integer }
37
- output: { type: object }
38
- handler: { ref: cancelOrder }
39
- ---
40
- # An upsert keyed by a unique index.
41
- apiVersion: cms.mantle.aotter.net/v2
42
- kind: Procedure
43
- metadata: { name: restock }
44
- spec:
45
- title: Restock an item
46
- description: Add stock to an item by SKU, creating the item if it is new.
47
- requires: { auth: { all: [{ ctx.staff: [owner, editor] }] } }
48
- input:
49
- type: object
50
- required: [sku, name, qty]
51
- properties:
52
- sku: { type: string }
53
- name: { type: string }
54
- qty: { type: integer, minimum: 1 }
55
- output: { type: object }
56
- handler:
57
- sql: |
58
- INSERT INTO items (sku, name, stock) VALUES (input.sku, input.name, input.qty)
59
- ON CONFLICT (sku) DO UPDATE SET stock = items.stock + EXCLUDED.stock
60
- RETURNING id, sku, stock
61
- ---
62
- apiVersion: cms.mantle.aotter.net/v2
63
- kind: Procedure
64
- metadata: { name: record-orders }
65
- spec:
66
- input: { type: object }
67
- output: { type: object }
68
- handler: { ref: recordOrders }
69
- ---
70
- apiVersion: cms.mantle.aotter.net/v2
71
- kind: Procedure
72
- metadata: { name: weekly-digest }
73
- spec:
74
- input: { type: object }
75
- output: { type: object }
76
- handler: { ref: weeklyDigest }
77
- ---
78
- apiVersion: cms.mantle.aotter.net/v2
79
- kind: Trigger
80
- metadata: { name: place-order-http }
81
- spec:
82
- source: { kind: http, method: POST, path: /api/orders }
83
- target: { procedure: place-order }
84
- ---
85
- apiVersion: cms.mantle.aotter.net/v2
86
- kind: Trigger
87
- metadata: { name: place-order-mcp }
88
- spec:
89
- source: { kind: mcp, surface: public }
90
- target: { procedure: place-order }
91
- ---
92
- apiVersion: cms.mantle.aotter.net/v2
93
- kind: Trigger
94
- metadata: { name: cancel-order-http }
95
- spec:
96
- source: { kind: http, method: POST, path: /api/orders/cancel }
97
- target: { procedure: cancel-order }
98
- ---
99
- apiVersion: cms.mantle.aotter.net/v2
100
- kind: Trigger
101
- metadata: { name: restock-mcp }
102
- spec:
103
- source: { kind: mcp, surface: staff }
104
- target: { procedure: restock }
105
- ---
106
- # After hooks get every row one statement touched.
107
- apiVersion: cms.mantle.aotter.net/v2
108
- kind: Trigger
109
- metadata: { name: orders-recorded }
110
- spec:
111
- source: { kind: lifecycle, schema: orders, on: [after_create, after_update] }
112
- target: { procedure: record-orders }
113
- ---
114
- # POSIX cron, UTC: Sundays at 03:00.
115
- apiVersion: cms.mantle.aotter.net/v2
116
- kind: Trigger
117
- metadata: { name: weekly-digest }
118
- spec:
119
- source: { kind: schedule, cron: "0 3 * * 0" }
120
- target: { procedure: weekly-digest }
@@ -1 +0,0 @@
1
- { "version": 2, "identity": "mantle", "features": ["mcp", "admin", "web"] }
@@ -1,27 +0,0 @@
1
- {
2
- "name": "mantle-reference-service",
3
- "private": true,
4
- "type": "module",
5
- "scripts": {
6
- "generate": "mantle generate",
7
- "dev": "wrangler dev --local --ip 127.0.0.1 --port 8787",
8
- "check": "mantle generate && mantle generate --check && tsc --noEmit && node smoke.mjs"
9
- },
10
- "dependencies": {
11
- "@aotter/mantle": "0.2.0-alpha.6",
12
- "@aotter/mantle-ui": "0.2.0-alpha.6",
13
- "@better-auth/cimd": "1.7.7",
14
- "@better-auth/mcp": "1.7.7",
15
- "@better-auth/oauth-provider": "1.7.7",
16
- "@modelcontextprotocol/ext-apps": "2.0.0",
17
- "@modelcontextprotocol/server": "2.1.0",
18
- "better-auth": "1.7.7"
19
- },
20
- "devDependencies": {
21
- "@cloudflare/workers-types": "5.20260904.1",
22
- "@types/node": "^26",
23
- "typescript": "^6.0.3",
24
- "wrangler": "4.129.0"
25
- },
26
- "packageManager": "pnpm@9.15.0"
27
- }
@@ -1,160 +0,0 @@
1
- // Runs the service under `wrangler dev` on a fresh local D1 and drives it the way people and agents would: console email-OTP
2
- // sign-in, REST, both MCP surfaces, Admin's API and a cron. Each step asserts what the manifests promise.
3
- import assert from "node:assert/strict";
4
- import { spawn } from "node:child_process";
5
- import { mkdtempSync, readFileSync, rmSync } from "node:fs";
6
- import { tmpdir } from "node:os";
7
- import { join } from "node:path";
8
-
9
- const port = 18000 + Math.floor(Math.random() * 1000);
10
- const origin = `http://127.0.0.1:${port}`;
11
- const owner = "owner@example.test";
12
- const state = mkdtempSync(join(tmpdir(), "mantle-reference-"));
13
- const wrangler = spawn("pnpm", ["exec", "wrangler", "dev", "--local", "--ip", "127.0.0.1", "--port", String(port), "--inspector-port", "0",
14
- "--persist-to", state, "--test-scheduled",
15
- "--var", `PUBLIC_ORIGIN:${origin}`, "--var", `ADMIN_EMAIL:${owner}`, "--var", "BETTER_AUTH_SECRET:reference-smoke-secret-0123456789abcdef"],
16
- // its own process group: pnpm does not pass a signal on to wrangler and workerd, so the group is stopped as one
17
- { env: { ...process.env, WRANGLER_SEND_METRICS: "false", CI: "1" }, stdio: ["ignore", "pipe", "pipe"], detached: true });
18
- let logs = "";
19
- wrangler.stdout.on("data", (chunk) => { logs += chunk; });
20
- wrangler.stderr.on("data", (chunk) => { logs += chunk; });
21
-
22
- const json = { "content-type": "application/json", origin };
23
- const call = async (method, path, { cookie, body } = {}) => {
24
- const response = await fetch(`${origin}${path}`, { method, headers: { ...json, ...(cookie ? { cookie } : {}) }, ...(body === undefined ? {} : { body: JSON.stringify(body) }) });
25
- const text = await response.text();
26
- return { status: response.status, body: text ? JSON.parse(text) : null, headers: response.headers };
27
- };
28
- const mcp = async (path, cookie, name, args) => {
29
- const response = await fetch(`${origin}${path}`, { method: "POST", headers: { ...json, accept: "application/json, text/event-stream", ...(cookie ? { cookie } : {}) },
30
- body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: name ? "tools/call" : "tools/list", params: name ? { name, arguments: args } : {} }) });
31
- const text = await response.text();
32
- const data = text.split("\n").find((line) => line.startsWith("data:"));
33
- return { status: response.status, body: data ? JSON.parse(data.slice(5)) : text ? JSON.parse(text) : null };
34
- };
35
-
36
- /** Console email OTP: ask for a code, read it from the wrangler log as a developer would, sign in. */
37
- async function signIn(email) {
38
- const before = logs.length;
39
- assert.equal((await call("POST", "/api/auth/email-otp/send-verification-otp", { body: { email, type: "sign-in" } })).status, 200);
40
- let code;
41
- for (let i = 0; i < 40 && !code; i++) {
42
- code = new RegExp(`${email.replace(/[.+]/g, "\\$&")}[\\s\\S]*?one-time code is (\\d{6})`).exec(logs.slice(before))?.[1];
43
- if (!code) await new Promise((resolve) => setTimeout(resolve, 100));
44
- }
45
- assert.ok(code, `no one-time code for ${email} in the log`);
46
- const signed = await call("POST", "/api/auth/sign-in/email-otp", { body: { email, otp: code } });
47
- assert.equal(signed.status, 200, JSON.stringify(signed.body));
48
- return signed.headers.getSetCookie().map((c) => c.split(";")[0]).join("; ");
49
- }
50
-
51
- const stockOf = async () => (await call("GET", "/api/views/catalog")).body.rows[0].stock;
52
- const step = (name) => console.log(`ok - ${name}`);
53
-
54
- try {
55
- for (let attempt = 0; ; attempt++) {
56
- if (wrangler.exitCode !== null) throw new Error(`wrangler exited ${wrangler.exitCode}`);
57
- try { if ((await fetch(`${origin}/api/views/catalog`)).status === 200) break; } catch { /* starting */ }
58
- if (attempt > 240) throw new Error("the Worker did not start");
59
- await new Promise((resolve) => setTimeout(resolve, 250));
60
- }
61
- assert.deepEqual((await call("GET", "/api/views/catalog")).body.rows, []);
62
- step("boot converges a fresh D1 to the plan; the public catalog is empty");
63
-
64
- const staff = await signIn(owner);
65
- assert.equal((await call("GET", "/admin/api/me", { cookie: staff })).body.role, "owner");
66
- step("console email OTP signs in; ADMIN_EMAIL becomes the owner");
67
-
68
- for (const qty of [5, 3]) {
69
- const restocked = await mcp("/mcp/staff", staff, "restock", { sku: "TEA-1", name: "Oolong tea", qty });
70
- assert.equal(restocked.body.result.isError, undefined, JSON.stringify(restocked.body));
71
- }
72
- assert.equal(await stockOf(), 8);
73
- step("staff MCP: restock is an upsert on the unique sku (5 + 3)");
74
-
75
- const itemId = (await call("GET", "/api/views/catalog")).body.rows[0].id;
76
- assert.equal((await call("POST", "/api/orders", { body: { itemId, qty: 1 } })).status, 401);
77
- step("an anonymous order is 401");
78
-
79
- const buyer = await signIn("buyer@example.test");
80
- assert.equal((await call("GET", "/admin/api/me", { cookie: buyer })).status, 403);
81
- const placed = await call("POST", "/api/orders", { cookie: buyer, body: { itemId, qty: 2 } });
82
- assert.equal(placed.status, 200, JSON.stringify(placed.body));
83
- assert.equal(await stockOf(), 6);
84
- step("a signed-in buyer (not staff) orders 2: stock 8 -> 6 in one program");
85
-
86
- const tooMany = await call("POST", "/api/orders", { cookie: buyer, body: { itemId, qty: 99 } });
87
- assert.equal(tooMany.status, 400, JSON.stringify(tooMany.body));
88
- assert.match(tooMany.body.error.message, /CHECK items: stock >= 0/);
89
- assert.equal(await stockOf(), 6);
90
- step("ordering 99 fails the stock >= 0 check in the second statement, and the order the first wrote is rolled back");
91
-
92
- const mine = (await call("GET", "/api/views/my-orders", { cookie: buyer })).body.rows;
93
- assert.deepEqual(mine.map(({ qty, orderStatus, item }) => ({ qty, orderStatus, item })), [{ qty: 2, orderStatus: "placed", item: "Oolong tea" }]);
94
- assert.deepEqual((await call("GET", "/api/views/my-orders", { cookie: staff })).body.rows, []);
95
- step("my-orders joins items and shows only the caller's own orders (scope)");
96
-
97
- const order = mine[0];
98
- assert.equal((await call("POST", "/api/orders/cancel", { cookie: staff, body: { orderId: order.id, expectedVersion: order.version } })).status, 409);
99
- const cancelled = await call("POST", "/api/orders/cancel", { cookie: buyer, body: { orderId: order.id, expectedVersion: order.version } });
100
- assert.equal(cancelled.status, 200, JSON.stringify(cancelled.body));
101
- assert.equal(await stockOf(), 8);
102
- assert.equal((await call("POST", "/api/orders/cancel", { cookie: buyer, body: { orderId: order.id, expectedVersion: order.version } })).status, 409);
103
- step("cancel: another owner's order is a CONFLICT, the owner's returns the stock, a stale version is a CONFLICT");
104
-
105
- assert.deepEqual((await call("GET", "/api/views/search-items?q=oolong")).body.rows.map((r) => r.name), ["Oolong tea"]);
106
- step("search-items: mantle.search over searchableFields");
107
-
108
- const sales = await call("GET", "/admin/api/views/sales-by-item", { cookie: staff });
109
- assert.deepEqual(sales.body.rows, [{ name: "Oolong tea", orders: 0, units: 0 }], JSON.stringify(sales.body));
110
- assert.equal((await call("GET", "/admin/api/views/sales-by-item", { cookie: buyer })).status, 403);
111
- step("sales-by-item (GROUP BY over a LEFT JOIN) is staff-only through Admin's API");
112
-
113
- // the console: @aotter/mantle-ui/admin served by Admin at /admin, its assets by name, any other path its client-side route
114
- const shell = await fetch(`${origin}/admin/c/items`);
115
- const html = await shell.text();
116
- const script = /src="((?:\/admin\/|\.\/)assets\/[^"]+\.js)"/.exec(html)?.[1];
117
- const base = /<base href="([^"]+)"/.exec(html)?.[1] ?? "/admin/";
118
- assert.equal(shell.headers.get("x-frame-options"), "DENY");
119
- assert.ok(script, html.slice(0, 300));
120
- const scriptUrl = new URL(script, new URL(base, origin));
121
- assert.equal(scriptUrl.origin, origin);
122
- assert.ok(scriptUrl.pathname.startsWith("/admin/assets/"));
123
- assert.equal((await fetch(scriptUrl)).status, 200);
124
- assert.equal((await fetch(`${origin}/admin/assets/missing.js`)).status, 404);
125
- // the editor's round trip: it reads the whole entry and writes it back, an unset optional field included as null
126
- const [tea] = (await call("GET", "/admin/api/entries?collection=items", { cookie: staff })).body.items;
127
- assert.deepEqual(tea.data_preview, { name: "Oolong tea", sku: "TEA-1", stock: 8 });
128
- const { entry } = (await call("GET", `/admin/api/entries/${tea.id}?collection=items`, { cookie: staff })).body;
129
- const saved = await call("PATCH", `/admin/api/entries/${tea.id}?collection=items`, { cookie: staff, body: { expectedVersion: entry.version, data: { ...entry.data, name: "Oolong tea (Taiwan)", priceCents: null } } });
130
- assert.equal(saved.status, 200, JSON.stringify(saved.body));
131
- assert.equal((await call("GET", "/api/views/catalog")).body.rows[0].name, "Oolong tea (Taiwan)");
132
- step("Admin's console: the SPA and its assets at /admin, the list's declared columns, and an editor's save of the whole entry");
133
-
134
- const tools = (await mcp("/mcp", undefined)).body.result.tools.map((t) => t.name);
135
- assert.ok(tools.includes("place_order") && !tools.includes("restock"), tools.join());
136
- step("public MCP lists place_order and not the staff restock");
137
-
138
- assert.equal((await fetch(`${origin}/__scheduled?cron=${encodeURIComponent("0 3 * * 1")}`)).status, 200);
139
- const activity = (await call("GET", "/admin/api/views/recent-activity", { cookie: staff })).body.rows;
140
- assert.deepEqual(activity.map((r) => r.kind).sort(), ["after_create", "after_update", "weekly-digest"]);
141
- // the one order was cancelled, and the digest counts placed orders only
142
- assert.equal(activity.find((r) => r.kind === "weekly-digest").detail, "0 orders, 0 units");
143
- step("the after hooks recorded the order rows, and Cloudflare's Monday-numbered cron ran the POSIX Sunday digest");
144
-
145
- const version = JSON.parse(readFileSync("node_modules/@aotter/mantle/package.json", "utf8")).version;
146
- console.log(`Mantle ${version}: reference service passed`);
147
- } catch (error) {
148
- console.error(logs.slice(-4000));
149
- throw error;
150
- } finally {
151
- const stop = (signal) => { try { process.kill(-wrangler.pid, signal); } catch { /* already gone */ } };
152
- stop("SIGTERM");
153
- await new Promise((resolve) => {
154
- if (wrangler.exitCode !== null) return resolve();
155
- const timer = setTimeout(() => { stop("SIGKILL"); resolve(); }, 5_000);
156
- wrangler.once("exit", () => { clearTimeout(timer); resolve(); });
157
- });
158
- stop("SIGKILL");
159
- rmSync(state, { recursive: true, force: true });
160
- }
@@ -1,36 +0,0 @@
1
- // Written once by `mantle generate`, then filled in. `MantleHandlers` lists exactly the plan's handler refs.
2
- import type { MantleHandlers } from "../.mantle/generated/mantle.js";
3
-
4
- export const handlers: MantleHandlers = {
5
- // ctx.store is scoped to the caller: another owner's order is not visible, so the write below is a CONFLICT, never a leak
6
- cancelOrder: async ({ orderId, expectedVersion }, ctx) => {
7
- const [order] = (await ctx.store.select({ from: "orders", where: { id: orderId, orderStatus: "placed" } })).rows;
8
- const [item] = order ? (await ctx.store.select({ from: "items", where: { id: String(order.itemId) } })).rows : [];
9
- await ctx.store.write([
10
- { update: "orders", set: { orderStatus: "cancelled" }, where: { id: orderId }, lock: expectedVersion },
11
- // both rows or neither: the stock goes back only with the cancellation, and a concurrent restock is a CONFLICT
12
- ...(order && item ? [{ update: "items" as const, set: { stock: Number(item.stock) + Number(order.qty) }, where: { id: String(item.id) }, lock: Number(item.version) }] : []),
13
- ]);
14
- return { id: orderId, orderStatus: "cancelled" };
15
- },
16
-
17
- // an after hook gets every row the statement touched: loop, never rows[0]
18
- recordOrders: async (_input, ctx) => {
19
- const cause = ctx.cause;
20
- if (cause.kind !== "lifecycle") return {};
21
- await ctx.store.write(cause.rows.map((row) => ({
22
- insert: "activity" as const,
23
- values: { kind: cause.hook, subject: String(row.id), detail: `${String(row.orderStatus)} x${String(row.qty)}` },
24
- })));
25
- return {};
26
- },
27
-
28
- // a schedule runs as the system caller: no scope, and no requires.auth predicate holds for it. One page of up to 500 orders
29
- // keeps the example short; a digest over more would page with nextCursor.
30
- weeklyDigest: async (_input, ctx) => {
31
- const { rows } = await ctx.store.select({ from: "orders", columns: ["qty"], where: { orderStatus: "placed" }, limit: 500 });
32
- const units = rows.reduce((sum, row) => sum + Number(row.qty), 0);
33
- await ctx.store.write([{ insert: "activity", values: { kind: "weekly-digest", subject: String(ctx.cause.kind === "schedule" ? ctx.cause.scheduledTime : ""), detail: `${rows.length} orders, ${units} units` } }]);
34
- return {};
35
- },
36
- };
@@ -1,33 +0,0 @@
1
- // Written once by `mantle generate`; this file is yours now. The Cloudflare entry (ADR-0032 decision 6).
2
- import { waitUntil } from "cloudflare:workers";
3
- import { toCloudflareCron } from "@aotter/mantle/cloudflare";
4
- import { plan } from "../.mantle/generated/mantle.js";
5
- import { mantle, type Env } from "./service.js";
6
-
7
- // Cloudflare names a cron as wrangler.jsonc spells it; the plan's schedule Triggers are POSIX, and several spellings can share one
8
- const crons = new Map<string, string[]>();
9
- for (const t of Object.values(plan.triggers)) {
10
- if (t.source.kind !== "schedule" || t.source.enabled === false) continue;
11
- const cf = toCloudflareCron(t.source.cron);
12
- const posix = crons.get(cf) ?? [];
13
- if (!posix.includes(t.source.cron)) crons.set(cf, [...posix, t.source.cron]);
14
- }
15
- // not bound to one request, so a handler's ctx.waitUntil never lands on another request's finished context
16
- const ctx = { waitUntil };
17
-
18
- export default {
19
- fetch: (request, env) => mantle.fetch(request, env, ctx),
20
- async scheduled(controller, env) {
21
- const posix = crons.get(controller.cron);
22
- if (posix === undefined) throw new Error(`No schedule Trigger runs on the Cloudflare cron '${controller.cron}'`);
23
- const errors: unknown[] = [];
24
- for (const cron of posix) {
25
- try {
26
- await mantle.invokeSchedule(cron, controller.scheduledTime, env, ctx);
27
- } catch (error) {
28
- errors.push(error);
29
- }
30
- }
31
- if (errors.length) throw new AggregateError(errors, `${errors.length} cron spelling(s) failed for '${controller.cron}'`);
32
- },
33
- } satisfies ExportedHandler<Env>;
@@ -1,78 +0,0 @@
1
- // Written once by `mantle generate`; this file is yours now. It composes the service (ADR-0032 decision 6).
2
- import { createMantle, withCaller, type MantleRuntime, type MantleService, type Surface } from "@aotter/mantle";
3
- import { createAdminSurface } from "@aotter/mantle/admin";
4
- import { ConsoleEmailSender, createAuthRoutes, createCallerResolver, createMantleAuth, createSetupIncompleteAuth, type MantleAuth } from "@aotter/mantle/auth";
5
- import { d1Driver, d1Storage } from "@aotter/mantle/cloudflare";
6
- import { createMcpSurface, planApp } from "@aotter/mantle/mcp";
7
- import { mantleAppHtml } from "@aotter/mantle-ui/mcp-app";
8
- import { createRestSurface } from "@aotter/mantle/web";
9
- import { plan } from "../.mantle/generated/mantle.js";
10
- import { handlers } from "./handlers.js";
11
-
12
- export interface Env {
13
- readonly DB: D1Database;
14
- /** The Admin SPA's files (`@aotter/mantle-ui/admin`), bound in wrangler.jsonc. */
15
- readonly ASSETS: Fetcher;
16
- readonly BETTER_AUTH_SECRET?: string;
17
- readonly PUBLIC_ORIGIN?: string;
18
- readonly ADMIN_EMAIL?: string;
19
- }
20
-
21
- /** One-time codes printed to the log are for local development: a deployed service picks its own sign-in method and sender. */
22
- function createAuth(env: Env, origin: string): MantleAuth {
23
- // an unset PUBLIC_ORIGIN is not local: the fallback origin below is only for URLs, never for deciding to print codes
24
- const local = env.PUBLIC_ORIGIN !== undefined && /^http:\/\/(localhost|127\.0\.0\.1|\[::1\])(:\d+)?$/.test(origin);
25
- if (!local || !env.BETTER_AUTH_SECRET || !env.ADMIN_EMAIL)
26
- return createSetupIncompleteAuth({ message: "Sign-in is not configured: copy .dev.vars.example to .dev.vars locally, or choose a sign-in method in src/service.ts." });
27
- return createMantleAuth({
28
- database: env.DB, driver: d1Driver(env.DB), baseURL: origin, secret: env.BETTER_AUTH_SECRET,
29
- methods: [{ kind: "email-otp", sender: new ConsoleEmailSender() }],
30
- bootstrapOwner: { match: "email", value: env.ADMIN_EMAIL },
31
- ipAddressHeaders: ["cf-connecting-ip"],
32
- oauthProvider: { loginPage: "/admin/sign-in", consentPage: "/admin/oauth/consent", scopes: ["mcp"], mcpResource: `${origin}/mcp` },
33
- });
34
- }
35
-
36
- /** A file of the Admin SPA, or null when it has none by that path. */
37
- async function adminAsset(assets: Fetcher, path: string): Promise<Response | null> {
38
- const response = await assets.fetch(new URL(path, "http://assets/"));
39
- return response.ok ? response : null;
40
- }
41
-
42
- function mount(runtime: MantleRuntime, env: Env) {
43
- const origin = env.PUBLIC_ORIGIN?.replace(/\/+$/, "") ?? "http://127.0.0.1:8787";
44
- const auth = createAuth(env, origin);
45
- const resolver = createCallerResolver(auth, { jwtBearer: { audience: `${origin}/mcp`, scopes: ["mcp"] } });
46
- const authRoutes = createAuthRoutes(auth, { resolver });
47
- const guard = (surface: Surface, options?: { resourceMetadata?: string }) => withCaller(resolver, surface, options);
48
- const resourceMetadata = `${origin}/.well-known/oauth-protected-resource/mcp`;
49
- const admin = guard(createAdminSurface(runtime, { basePath: "/admin", assets: (path) => adminAsset(env.ASSETS, path), identity: { directory: auth, roles: auth, deleteUser: auth.deleteUser }, site: { mcpEndpoints: { public: "/mcp", staff: "/mcp/staff" } } }));
50
- const mcp = guard(createMcpSurface(runtime, { basePath: "/mcp", surface: "public", resourceMetadata }), { resourceMetadata });
51
- // MCP Apps hosts render each staff View's rows, and the operations on one row, in the chat
52
- const staffMcp = guard(createMcpSurface(runtime, { basePath: "/mcp/staff", surface: "staff", apps: { resources: [planApp(runtime.plan, { surface: "staff", html: mantleAppHtml })] }, resourceMetadata }), { resourceMetadata });
53
- // REST answers everything else: public Views under /api/views and the plan's HTTP Triggers
54
- const rest = guard(createRestSurface(runtime, { basePath: "/api" }));
55
- return async (request: Request, waitUntil: (promise: Promise<unknown>) => void): Promise<Response> => {
56
- const { pathname } = new URL(request.url);
57
- const under = (base: string) => pathname === base || pathname.startsWith(`${base}/`);
58
- // Better Auth's context is per isolate: the request that starts it waits for it, or the next one hangs on it; a failed start is mounted again
59
- await auth.ready?.catch((error) => {
60
- routes = undefined;
61
- throw error;
62
- });
63
- const owned = await authRoutes(request, { waitUntil });
64
- if (owned) return owned;
65
- if (under("/admin")) return admin(request);
66
- if (under("/mcp/staff")) return staffMcp(request);
67
- if (under("/mcp")) return mcp(request);
68
- return rest(request);
69
- };
70
- }
71
-
72
- let routes: ReturnType<typeof mount> | undefined;
73
- const service: MantleService<Env> = {
74
- handlers,
75
- fetch: (request, env, { runtime, waitUntil }) => (routes ??= mount(runtime, env))(request, waitUntil),
76
- };
77
-
78
- export const mantle = createMantle(service, { plan, storage: (env) => d1Storage(env.DB), schedules: true });
@@ -1,26 +0,0 @@
1
- {
2
- "$schema": "node_modules/wrangler/config-schema.json",
3
- "name": "mantle-reference",
4
- "main": "src/index.ts",
5
- "compatibility_date": "2026-09-01",
6
- "compatibility_flags": [
7
- "nodejs_compat"
8
- ],
9
- "d1_databases": [
10
- {
11
- "binding": "DB",
12
- "database_name": "mantle-reference"
13
- }
14
- ],
15
- "assets": {
16
- "directory": "node_modules/@aotter/mantle-ui/dist/admin",
17
- "binding": "ASSETS",
18
- "run_worker_first": true,
19
- "html_handling": "none"
20
- },
21
- "triggers": {
22
- "crons": [
23
- "0 3 * * 1"
24
- ]
25
- }
26
- }