@aotter/mantle 0.2.0-alpha.6 → 0.2.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -45
- package/dist/auth/adapter.d.ts +32 -0
- package/dist/auth/adapter.js +285 -0
- package/dist/auth/admin.d.ts +3 -0
- package/dist/auth/admin.js +21 -0
- package/dist/auth/caller.d.ts +86 -0
- package/dist/auth/caller.js +154 -0
- package/dist/auth/hardening.d.ts +24 -0
- package/dist/auth/hardening.js +40 -0
- package/dist/auth/identity.d.ts +121 -0
- package/dist/auth/identity.js +203 -0
- package/dist/auth/oauth.d.ts +31 -0
- package/dist/auth/oauth.js +124 -0
- package/dist/auth/resource-seeds.js +10 -0
- package/dist/auth/routes.d.ts +32 -0
- package/dist/auth/{createAuthRoutes.js → routes.js} +130 -35
- package/dist/build/compiler.d.ts +790 -0
- package/dist/build/compiler.js +6971 -0
- package/dist/{spec → build/spec}/domain/model/ManifestGrammar.d.ts +24 -42
- package/dist/{spec → build/spec}/domain/model/RuntimePlan.d.ts +77 -3
- package/dist/{spec → build/spec}/domain/model/SqlIr.d.ts +35 -6
- package/dist/build/spec/domain/model/UserFields.d.ts +20 -0
- package/dist/{spec → build/spec}/domain/service/PlanFingerprint.d.ts +2 -1
- package/dist/{spec → build/spec}/kernel/diagnostic.d.ts +1 -30
- package/dist/bun/assets.d.ts +2 -0
- package/dist/bun/assets.js +24 -0
- package/dist/domain/adminOrder.js +24 -0
- package/dist/domain/columns.js +55 -0
- package/dist/domain/describe/chunk-ZIQVLA7X.js +363 -0
- package/dist/domain/describe/index.d.ts +58 -0
- package/dist/domain/describe/index.js +115 -0
- package/dist/domain/describe/target-hash.d.ts +8 -0
- package/dist/domain/describe/target-hash.js +12 -0
- package/dist/domain/describe/targets.d.ts +40 -0
- package/dist/domain/entry.js +33 -0
- package/dist/domain/generated-tools.js +17 -0
- package/dist/domain/generation.d.ts +16 -0
- package/dist/domain/generation.js +1 -0
- package/dist/domain/input.js +17 -0
- package/dist/domain/model.js +1 -0
- package/dist/domain/paging.js +204 -0
- package/dist/domain/recipes.js +19 -0
- package/dist/domain/userReferences.js +5 -0
- package/dist/domain/wireScalars.js +47 -0
- package/dist/infrastructure/adminEntries.js +153 -0
- package/dist/infrastructure/adminPaging.js +72 -0
- package/dist/infrastructure/artifacts.js +71 -0
- package/dist/infrastructure/authSchema.js +83 -0
- package/dist/infrastructure/bundle.js +84 -0
- package/dist/infrastructure/cli.js +101 -0
- package/dist/infrastructure/generate.d.ts +14 -0
- package/dist/infrastructure/generate.js +174 -0
- package/dist/infrastructure/generateAuth.d.ts +8 -0
- package/dist/infrastructure/generateAuth.js +17 -0
- package/dist/infrastructure/inputs.js +36 -0
- package/dist/infrastructure/wrangler.js +71 -0
- package/dist/kernel/authorization.d.ts +4 -0
- package/dist/kernel/authorization.js +16 -0
- package/dist/kernel/binds.d.ts +51 -0
- package/dist/kernel/binds.js +45 -0
- package/dist/kernel/caller-identity.d.ts +24 -0
- package/dist/kernel/caller-identity.js +22 -0
- package/dist/kernel/contract-error.d.ts +12 -0
- package/dist/kernel/contract-error.js +14 -0
- package/dist/kernel/contracts.d.ts +139 -0
- package/dist/kernel/contracts.js +92 -0
- package/dist/{spec/domain/service/CloudflareCron.d.ts → kernel/cron.d.ts} +0 -1
- package/dist/{spec/domain/service/CloudflareCron.js → kernel/cron.js} +1 -6
- package/dist/kernel/dialect/common.d.ts +39 -0
- package/dist/kernel/dialect/common.js +6 -0
- package/dist/kernel/dialect/postgres.d.ts +16 -0
- package/dist/kernel/dialect/postgres.js +18 -0
- package/dist/kernel/dialect/sqlite.d.ts +20 -0
- package/dist/kernel/dialect/sqlite.js +34 -0
- package/dist/kernel/driver/bun-sqlite.d.ts +19 -0
- package/dist/kernel/driver/bun-sqlite.js +77 -0
- package/dist/kernel/driver/d1.d.ts +24 -0
- package/dist/kernel/driver/d1.js +22 -0
- package/dist/kernel/driver/postgres.d.ts +25 -0
- package/dist/kernel/driver/postgres.js +95 -0
- package/dist/kernel/driver/transaction-context.d.ts +10 -0
- package/dist/kernel/driver/transaction-context.js +29 -0
- package/dist/kernel/email.d.ts +28 -0
- package/dist/{auth/emailTemplates.js → kernel/email.js} +13 -2
- package/dist/kernel/host-access.d.ts +10 -0
- package/dist/kernel/host-access.js +65 -0
- package/dist/kernel/host-caller.d.ts +38 -0
- package/dist/kernel/host-caller.js +55 -0
- package/dist/kernel/json-body.d.ts +4 -0
- package/dist/kernel/json-body.js +44 -0
- package/dist/kernel/mcp-apps.d.ts +49 -0
- package/dist/kernel/mcp-apps.js +40 -0
- package/dist/kernel/mcp-call.d.ts +5 -0
- package/dist/kernel/mcp-call.js +25 -0
- package/dist/kernel/mcp-handler.js +288 -0
- package/dist/kernel/mcp.d.ts +101 -0
- package/dist/kernel/mcp.js +25 -0
- package/dist/kernel/media.d.ts +27 -0
- package/dist/kernel/media.js +216 -0
- package/dist/kernel/paging.d.ts +55 -0
- package/dist/kernel/paging.js +95 -0
- package/dist/kernel/publishing.d.ts +4 -0
- package/dist/kernel/publishing.js +16 -0
- package/dist/{cloudflare/r2Media.d.ts → kernel/r2-media.d.ts} +4 -5
- package/dist/kernel/r2-media.js +78 -0
- package/dist/kernel/rest-dispatch.js +38 -0
- package/dist/kernel/rest-router.js +63 -0
- package/dist/kernel/rest.d.ts +58 -0
- package/dist/kernel/rest.js +41 -0
- package/dist/kernel/scalars.d.ts +6 -0
- package/dist/kernel/scalars.js +43 -0
- package/dist/kernel/search.js +5 -0
- package/dist/{core/site.d.ts → kernel/site-types.d.ts} +38 -9
- package/dist/kernel/site-types.js +1 -0
- package/dist/kernel/site.d.ts +41 -0
- package/dist/kernel/site.js +32 -0
- package/dist/kernel/store.d.ts +165 -0
- package/dist/kernel/store.js +257 -0
- package/dist/kernel/surface.d.ts +10 -0
- package/dist/kernel/surface.js +19 -0
- package/dist/kernel/sweep.d.ts +17 -0
- package/dist/kernel/sweep.js +27 -0
- package/dist/kernel/translations.d.ts +1 -0
- package/dist/kernel/translations.js +13 -0
- package/dist/kernel/user-caller.d.ts +31 -0
- package/dist/kernel/user-caller.js +67 -0
- package/dist/kernel/user-field-name.js +3 -0
- package/dist/kernel/user-fields.d.ts +34 -0
- package/dist/kernel/user-fields.js +71 -0
- package/dist/kernel/validation.d.ts +15 -0
- package/dist/kernel/validation.js +54 -0
- package/dist/kernel/web-gateway.js +68 -0
- package/dist/kernel/web-head.js +15 -0
- package/dist/kernel/web-response.js +8 -0
- package/dist/kernel/web.d.ts +75 -0
- package/dist/kernel/web.js +155 -0
- package/dist/kernel/where.js +27 -0
- package/dist/testing/index.d.ts +1 -37
- package/dist/testing/index.js +1 -43
- package/dist/usecase/adminBindings.js +142 -0
- package/dist/usecase/adminDescriptors.js +153 -0
- package/dist/usecase/generate.js +164 -0
- package/dist/usecase/handlers.js +21 -0
- package/dist/usecase/mcp-media.js +17 -0
- package/dist/usecase/mcp.js +96 -0
- package/dist/usecase/paging.js +72 -0
- package/dist/usecase/publishing.js +63 -0
- package/dist/usecase/refusals.js +27 -0
- package/dist/usecase/rest.js +54 -0
- package/dist/usecase/search.js +7 -0
- package/dist/usecase/site.js +40 -0
- package/dist/usecase/stores.js +62 -0
- package/dist/usecase/translations.js +78 -0
- package/dist/usecase/ttl.js +20 -0
- package/dist/usecase/validation.js +132 -0
- package/dist/usecase/web.js +22 -0
- package/docs/examples/README.md +31 -16
- package/docs/examples/app-shell/README.md +48 -0
- package/docs/examples/app-shell/package.json +34 -0
- package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
- package/docs/examples/app-shell/smoke-kit.mjs +100 -0
- package/docs/examples/app-shell/src/admin.ts +10 -0
- package/docs/examples/app-shell/src/auth.ts +55 -0
- package/docs/examples/app-shell/src/handlers.ts +5 -0
- package/docs/examples/app-shell/src/index.ts +4 -0
- package/docs/examples/app-shell/src/routes.ts +13 -0
- package/docs/examples/app-shell/src/schedule.ts +8 -0
- package/docs/examples/app-shell/src/service.ts +70 -0
- package/docs/examples/app-shell/src/sign-in.ts +41 -0
- package/docs/examples/app-shell/src/signup.ts +8 -0
- package/docs/examples/{reference-service → app-shell}/tsconfig.json +2 -1
- package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
- package/docs/examples/app-shell/wrangler.jsonc +61 -0
- package/docs/examples/club-events/README.md +60 -0
- package/docs/examples/club-events/manifests/club-events.yaml +225 -0
- package/docs/examples/club-events/smoke.mjs +121 -0
- package/docs/examples/club-events/src/handlers.ts +25 -0
- package/docs/examples/club-events/src/signup.ts +9 -0
- package/docs/examples/generated-web/README.md +74 -0
- package/docs/examples/generated-web/posts.yaml +38 -0
- package/docs/examples/generated-web/seed.sql +6 -0
- package/docs/examples/generated-web/src/worker.ts +43 -0
- package/docs/examples/generated-web/tsconfig.json +8 -0
- package/docs/examples/generated-web/wrangler.jsonc +7 -0
- package/docs/examples/purchasing/.dev.vars.example +6 -0
- package/docs/examples/purchasing/README.md +90 -0
- package/docs/examples/purchasing/manifests/purchasing.yaml +341 -0
- package/docs/examples/purchasing/seed.sql +4 -0
- package/docs/examples/purchasing/smoke.mjs +171 -0
- package/docs/examples/purchasing/src/admin.ts +12 -0
- package/docs/examples/purchasing/src/handlers.ts +33 -0
- package/docs/examples/purchasing/src/notify.ts +29 -0
- package/docs/examples/purchasing/src/requests-page.ts +57 -0
- package/docs/examples/purchasing/src/routes.ts +53 -0
- package/docs/examples/purchasing/src/schedule.ts +31 -0
- package/docs/examples/purchasing/src/signup.ts +5 -0
- package/docs/examples/purchasing/src/supplier.ts +32 -0
- package/docs/examples/purchasing/wrangler.jsonc +68 -0
- package/docs/examples/recipes/README.md +58 -0
- package/docs/examples/recipes/manifests/recipes.yaml +75 -0
- package/docs/examples/recipes/smoke.mjs +102 -0
- package/docs/examples/recipes/src/media.ts +13 -0
- package/docs/examples/recipes/src/pages.ts +99 -0
- package/docs/examples/recipes/src/routes.ts +71 -0
- package/docs/examples/recipes/src/site-config.ts +12 -0
- package/docs/examples/recipes/wrangler.jsonc +73 -0
- package/docs/handbook/cloudflare/authentication.md +142 -212
- package/docs/handbook/cloudflare/chatgpt-sites.md +4 -113
- package/docs/handbook/cloudflare/deploy-and-operate.md +20 -106
- package/docs/handbook/cloudflare/media-r2.md +62 -133
- package/docs/handbook/cloudflare/service-entry.md +180 -116
- package/docs/handbook/concepts/authorization.md +10 -123
- package/docs/handbook/concepts/four-atoms.md +9 -92
- package/docs/handbook/concepts/lifecycle-and-locales.md +9 -80
- package/docs/handbook/concepts/mcp-and-agents.md +10 -141
- package/docs/handbook/concepts/procedures-and-triggers.md +5 -162
- package/docs/handbook/concepts/runtime-and-adapters.md +15 -224
- package/docs/handbook/concepts/views.md +10 -109
- package/docs/handbook/examples/hub.md +2 -18
- package/docs/handbook/guides/adapter-guide.md +11 -0
- package/docs/handbook/guides/admin-extensions.md +12 -183
- package/docs/handbook/guides/admin-ui.md +5 -164
- package/docs/handbook/guides/agent-setup.md +5 -18
- package/docs/handbook/guides/email.md +86 -0
- package/docs/handbook/guides/mcp-apps.md +44 -0
- package/docs/handbook/guides/native-admin.md +298 -0
- package/docs/handbook/guides/native-execution.md +132 -0
- package/docs/handbook/guides/oauth.md +105 -0
- package/docs/handbook/guides/postgres-adapters.md +56 -0
- package/docs/handbook/guides/public-pages.md +53 -0
- package/docs/handbook/guides/size-and-startup.md +9 -0
- package/docs/handbook/guides/typed-queries.md +39 -102
- package/docs/handbook/navigation.json +164 -31
- package/docs/handbook/reference/admin-descriptors.md +88 -0
- package/docs/handbook/reference/authorization.md +44 -52
- package/docs/handbook/reference/describe.md +56 -0
- package/docs/handbook/reference/diagnostics.md +15 -79
- package/docs/handbook/reference/features.md +45 -53
- package/docs/handbook/reference/manifest.md +6 -69
- package/docs/handbook/reference/procedure.md +9 -118
- package/docs/handbook/reference/schema.md +75 -185
- package/docs/handbook/reference/site-config.md +5 -65
- package/docs/handbook/reference/surface.md +279 -97
- package/docs/handbook/reference/trigger.md +24 -93
- package/docs/handbook/reference/view.md +32 -160
- package/docs/handbook/releases/index.md +48 -13
- package/docs/handbook/start/overview.md +9 -56
- package/docs/handbook/start/project-and-cli.md +40 -149
- package/docs/handbook/start/quickstart-worker.md +38 -116
- package/docs/skills/develop/SKILL.md +34 -123
- package/docs/skills/develop/mcp-app.md +37 -77
- package/docs/skills/integrate/SKILL.md +42 -84
- package/docs/skills/media-gc/SKILL.md +14 -3
- package/docs/skills/provision/SKILL.md +25 -91
- package/docs/skills/update/SKILL.md +19 -43
- package/docs/source/scripts/postgres-adapter.ts +101 -0
- package/docs/upgrade-0.1-to-0.2.md +25 -9
- package/package.json +96 -112
- package/skills/.keep +0 -0
- package/skills/README.md +72 -0
- package/skills/mantle/SKILL.md +135 -0
- package/skills/mantle/references/local-testing.md +11 -0
- package/skills/mantle/references/web.md +41 -0
- package/skills/mantle/references/website.md +47 -0
- package/dist/admin/consent.d.ts +0 -17
- package/dist/admin/consent.d.ts.map +0 -1
- package/dist/admin/consent.js +0 -17
- package/dist/admin/consent.js.map +0 -1
- package/dist/admin/createAdminSurface.d.ts +0 -25
- package/dist/admin/createAdminSurface.d.ts.map +0 -1
- package/dist/admin/createAdminSurface.js +0 -635
- package/dist/admin/createAdminSurface.js.map +0 -1
- package/dist/admin/design.d.ts +0 -7
- package/dist/admin/design.d.ts.map +0 -1
- package/dist/admin/design.js +0 -18
- package/dist/admin/design.js.map +0 -1
- package/dist/admin/developerConsole.d.ts +0 -267
- package/dist/admin/developerConsole.d.ts.map +0 -1
- package/dist/admin/developerConsole.js +0 -136
- package/dist/admin/developerConsole.js.map +0 -1
- package/dist/admin/extensions.d.ts +0 -290
- package/dist/admin/extensions.d.ts.map +0 -1
- package/dist/admin/extensions.js +0 -532
- package/dist/admin/extensions.js.map +0 -1
- package/dist/admin/identity.d.ts +0 -62
- package/dist/admin/identity.d.ts.map +0 -1
- package/dist/admin/identity.js +0 -7
- package/dist/admin/identity.js.map +0 -1
- package/dist/admin/index.d.ts +0 -7
- package/dist/admin/index.d.ts.map +0 -1
- package/dist/admin/index.js +0 -7
- package/dist/admin/index.js.map +0 -1
- package/dist/admin/procedureFlow.d.ts +0 -38
- package/dist/admin/procedureFlow.d.ts.map +0 -1
- package/dist/admin/procedureFlow.js +0 -188
- package/dist/admin/procedureFlow.js.map +0 -1
- package/dist/auth/ConsoleEmailSender.d.ts +0 -15
- package/dist/auth/ConsoleEmailSender.d.ts.map +0 -1
- package/dist/auth/ConsoleEmailSender.js +0 -19
- package/dist/auth/ConsoleEmailSender.js.map +0 -1
- package/dist/auth/appleClientSecret.d.ts +0 -75
- package/dist/auth/appleClientSecret.d.ts.map +0 -1
- package/dist/auth/appleClientSecret.js +0 -116
- package/dist/auth/appleClientSecret.js.map +0 -1
- package/dist/auth/buildAuth.d.ts +0 -4568
- package/dist/auth/buildAuth.d.ts.map +0 -1
- package/dist/auth/buildAuth.js +0 -312
- package/dist/auth/buildAuth.js.map +0 -1
- package/dist/auth/callerResolver.d.ts +0 -52
- package/dist/auth/callerResolver.d.ts.map +0 -1
- package/dist/auth/callerResolver.js +0 -52
- package/dist/auth/callerResolver.js.map +0 -1
- package/dist/auth/createAuthRoutes.d.ts +0 -22
- package/dist/auth/createAuthRoutes.d.ts.map +0 -1
- package/dist/auth/createAuthRoutes.js.map +0 -1
- package/dist/auth/createMantleAuth.d.ts +0 -3
- package/dist/auth/createMantleAuth.d.ts.map +0 -1
- package/dist/auth/createMantleAuth.js +0 -504
- package/dist/auth/createMantleAuth.js.map +0 -1
- package/dist/auth/db.d.ts +0 -18
- package/dist/auth/db.d.ts.map +0 -1
- package/dist/auth/db.js +0 -27
- package/dist/auth/db.js.map +0 -1
- package/dist/auth/emailTemplates.d.ts +0 -7
- package/dist/auth/emailTemplates.d.ts.map +0 -1
- package/dist/auth/emailTemplates.js.map +0 -1
- package/dist/auth/index.d.ts +0 -9
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -7
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/methods.d.ts +0 -717
- package/dist/auth/methods.d.ts.map +0 -1
- package/dist/auth/methods.js +0 -321
- package/dist/auth/methods.js.map +0 -1
- package/dist/auth/oauthTokens.d.ts +0 -24
- package/dist/auth/oauthTokens.d.ts.map +0 -1
- package/dist/auth/oauthTokens.js +0 -146
- package/dist/auth/oauthTokens.js.map +0 -1
- package/dist/auth/setupIncomplete.d.ts +0 -16
- package/dist/auth/setupIncomplete.d.ts.map +0 -1
- package/dist/auth/setupIncomplete.js +0 -50
- package/dist/auth/setupIncomplete.js.map +0 -1
- package/dist/auth/types.d.ts +0 -440
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js +0 -10
- package/dist/auth/types.js.map +0 -1
- package/dist/bun/index.d.ts +0 -21
- package/dist/bun/index.d.ts.map +0 -1
- package/dist/bun/index.js +0 -46
- package/dist/bun/index.js.map +0 -1
- package/dist/cli/emitModule.d.ts +0 -7
- package/dist/cli/emitModule.d.ts.map +0 -1
- package/dist/cli/emitModule.js +0 -127
- package/dist/cli/emitModule.js.map +0 -1
- package/dist/cli/generate.d.ts +0 -8
- package/dist/cli/generate.d.ts.map +0 -1
- package/dist/cli/generate.js +0 -391
- package/dist/cli/generate.js.map +0 -1
- package/dist/cli/main.d.ts +0 -3
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -21
- package/dist/cli/main.js.map +0 -1
- package/dist/cli/preset.d.ts +0 -18
- package/dist/cli/preset.d.ts.map +0 -1
- package/dist/cli/preset.js +0 -405
- package/dist/cli/preset.js.map +0 -1
- package/dist/cloudflare/index.d.ts +0 -25
- package/dist/cloudflare/index.d.ts.map +0 -1
- package/dist/cloudflare/index.js +0 -16
- package/dist/cloudflare/index.js.map +0 -1
- package/dist/cloudflare/r2Media.d.ts.map +0 -1
- package/dist/cloudflare/r2Media.js +0 -69
- package/dist/cloudflare/r2Media.js.map +0 -1
- package/dist/core/caller.d.ts +0 -35
- package/dist/core/caller.d.ts.map +0 -1
- package/dist/core/caller.js +0 -3
- package/dist/core/caller.js.map +0 -1
- package/dist/core/createMantle.d.ts +0 -22
- package/dist/core/createMantle.d.ts.map +0 -1
- package/dist/core/createMantle.js +0 -117
- package/dist/core/createMantle.js.map +0 -1
- package/dist/core/dialect.d.ts +0 -53
- package/dist/core/dialect.d.ts.map +0 -1
- package/dist/core/dialect.js +0 -7
- package/dist/core/dialect.js.map +0 -1
- package/dist/core/driver.d.ts +0 -24
- package/dist/core/driver.d.ts.map +0 -1
- package/dist/core/driver.js +0 -2
- package/dist/core/driver.js.map +0 -1
- package/dist/core/email.d.ts +0 -17
- package/dist/core/email.d.ts.map +0 -1
- package/dist/core/email.js +0 -2
- package/dist/core/email.js.map +0 -1
- package/dist/core/index.d.ts +0 -16
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -16
- package/dist/core/index.js.map +0 -1
- package/dist/core/invocation.d.ts +0 -66
- package/dist/core/invocation.d.ts.map +0 -1
- package/dist/core/invocation.js +0 -3
- package/dist/core/invocation.js.map +0 -1
- package/dist/core/observation.d.ts +0 -3
- package/dist/core/observation.d.ts.map +0 -1
- package/dist/core/observation.js +0 -10
- package/dist/core/observation.js.map +0 -1
- package/dist/core/runtime/auth.d.ts +0 -9
- package/dist/core/runtime/auth.d.ts.map +0 -1
- package/dist/core/runtime/auth.js +0 -39
- package/dist/core/runtime/auth.js.map +0 -1
- package/dist/core/runtime/createRuntime.d.ts +0 -23
- package/dist/core/runtime/createRuntime.d.ts.map +0 -1
- package/dist/core/runtime/createRuntime.js +0 -214
- package/dist/core/runtime/createRuntime.js.map +0 -1
- package/dist/core/runtime/verifyPlan.d.ts +0 -34
- package/dist/core/runtime/verifyPlan.d.ts.map +0 -1
- package/dist/core/runtime/verifyPlan.js +0 -301
- package/dist/core/runtime/verifyPlan.js.map +0 -1
- package/dist/core/service.d.ts +0 -45
- package/dist/core/service.d.ts.map +0 -1
- package/dist/core/service.js +0 -2
- package/dist/core/service.js.map +0 -1
- package/dist/core/sessionUser.d.ts +0 -14
- package/dist/core/sessionUser.d.ts.map +0 -1
- package/dist/core/sessionUser.js +0 -4
- package/dist/core/sessionUser.js.map +0 -1
- package/dist/core/site.d.ts.map +0 -1
- package/dist/core/site.js +0 -2
- package/dist/core/site.js.map +0 -1
- package/dist/core/siteConfig.d.ts +0 -5
- package/dist/core/siteConfig.d.ts.map +0 -1
- package/dist/core/siteConfig.js +0 -24
- package/dist/core/siteConfig.js.map +0 -1
- package/dist/core/sql/allowlist.d.ts +0 -67
- package/dist/core/sql/allowlist.d.ts.map +0 -1
- package/dist/core/sql/allowlist.js +0 -737
- package/dist/core/sql/allowlist.js.map +0 -1
- package/dist/core/sql/ast.d.ts +0 -24
- package/dist/core/sql/ast.d.ts.map +0 -1
- package/dist/core/sql/ast.js +0 -32
- package/dist/core/sql/ast.js.map +0 -1
- package/dist/core/sql/compile.d.ts +0 -50
- package/dist/core/sql/compile.d.ts.map +0 -1
- package/dist/core/sql/compile.js +0 -48
- package/dist/core/sql/compile.js.map +0 -1
- package/dist/core/sql/policy.d.ts +0 -123
- package/dist/core/sql/policy.d.ts.map +0 -1
- package/dist/core/sql/policy.js +0 -398
- package/dist/core/sql/policy.js.map +0 -1
- package/dist/core/sql/positions.d.ts +0 -30
- package/dist/core/sql/positions.d.ts.map +0 -1
- package/dist/core/sql/positions.js +0 -22
- package/dist/core/sql/positions.js.map +0 -1
- package/dist/core/sql/run.d.ts +0 -68
- package/dist/core/sql/run.d.ts.map +0 -1
- package/dist/core/sql/run.js +0 -384
- package/dist/core/sql/run.js.map +0 -1
- package/dist/core/store/createStore.d.ts +0 -49
- package/dist/core/store/createStore.d.ts.map +0 -1
- package/dist/core/store/createStore.js +0 -227
- package/dist/core/store/createStore.js.map +0 -1
- package/dist/core/store/cursor.d.ts +0 -4
- package/dist/core/store/cursor.d.ts.map +0 -1
- package/dist/core/store/cursor.js +0 -22
- package/dist/core/store/cursor.js.map +0 -1
- package/dist/core/store/json.d.ts +0 -80
- package/dist/core/store/json.d.ts.map +0 -1
- package/dist/core/store/json.js +0 -342
- package/dist/core/store/json.js.map +0 -1
- package/dist/core/store.d.ts +0 -160
- package/dist/core/store.d.ts.map +0 -1
- package/dist/core/store.js +0 -2
- package/dist/core/store.js.map +0 -1
- package/dist/core/wire.d.ts +0 -20
- package/dist/core/wire.d.ts.map +0 -1
- package/dist/core/wire.js +0 -84
- package/dist/core/wire.js.map +0 -1
- package/dist/core/withCaller.d.ts +0 -24
- package/dist/core/withCaller.d.ts.map +0 -1
- package/dist/core/withCaller.js +0 -35
- package/dist/core/withCaller.js.map +0 -1
- package/dist/d1/adapter.d.ts +0 -12
- package/dist/d1/adapter.d.ts.map +0 -1
- package/dist/d1/adapter.js +0 -23
- package/dist/d1/adapter.js.map +0 -1
- package/dist/d1/codec.d.ts +0 -14
- package/dist/d1/codec.d.ts.map +0 -1
- package/dist/d1/codec.js +0 -136
- package/dist/d1/codec.js.map +0 -1
- package/dist/d1/compile/index.d.ts +0 -9
- package/dist/d1/compile/index.d.ts.map +0 -1
- package/dist/d1/compile/index.js +0 -9
- package/dist/d1/compile/index.js.map +0 -1
- package/dist/d1/dialect.d.ts +0 -4
- package/dist/d1/dialect.d.ts.map +0 -1
- package/dist/d1/dialect.js +0 -13
- package/dist/d1/dialect.js.map +0 -1
- package/dist/d1/executor.d.ts +0 -15
- package/dist/d1/executor.d.ts.map +0 -1
- package/dist/d1/executor.js +0 -96
- package/dist/d1/executor.js.map +0 -1
- package/dist/d1/index.d.ts +0 -6
- package/dist/d1/index.d.ts.map +0 -1
- package/dist/d1/index.js +0 -6
- package/dist/d1/index.js.map +0 -1
- package/dist/d1/lower.d.ts +0 -8
- package/dist/d1/lower.d.ts.map +0 -1
- package/dist/d1/lower.js +0 -167
- package/dist/d1/lower.js.map +0 -1
- package/dist/d1/media.d.ts +0 -5
- package/dist/d1/media.d.ts.map +0 -1
- package/dist/d1/media.js +0 -157
- package/dist/d1/media.js.map +0 -1
- package/dist/d1/migrations.d.ts +0 -12
- package/dist/d1/migrations.d.ts.map +0 -1
- package/dist/d1/migrations.js +0 -111
- package/dist/d1/migrations.js.map +0 -1
- package/dist/d1/print.d.ts +0 -28
- package/dist/d1/print.d.ts.map +0 -1
- package/dist/d1/print.js +0 -54
- package/dist/d1/print.js.map +0 -1
- package/dist/d1/site.d.ts +0 -17
- package/dist/d1/site.d.ts.map +0 -1
- package/dist/d1/site.js +0 -63
- package/dist/d1/site.js.map +0 -1
- package/dist/d1/storage.d.ts +0 -34
- package/dist/d1/storage.d.ts.map +0 -1
- package/dist/d1/storage.js +0 -288
- package/dist/d1/storage.js.map +0 -1
- package/dist/d1/tz.d.ts +0 -21
- package/dist/d1/tz.d.ts.map +0 -1
- package/dist/d1/tz.js +0 -54
- package/dist/d1/tz.js.map +0 -1
- package/dist/d1/validator.d.ts +0 -10
- package/dist/d1/validator.d.ts.map +0 -1
- package/dist/d1/validator.js +0 -33
- package/dist/d1/validator.js.map +0 -1
- package/dist/mcp/apps.d.ts +0 -43
- package/dist/mcp/apps.d.ts.map +0 -1
- package/dist/mcp/apps.js +0 -57
- package/dist/mcp/apps.js.map +0 -1
- package/dist/mcp/catalog.d.ts +0 -55
- package/dist/mcp/catalog.d.ts.map +0 -1
- package/dist/mcp/catalog.js +0 -81
- package/dist/mcp/catalog.js.map +0 -1
- package/dist/mcp/createMcpSurface.d.ts +0 -60
- package/dist/mcp/createMcpSurface.d.ts.map +0 -1
- package/dist/mcp/createMcpSurface.js +0 -182
- package/dist/mcp/createMcpSurface.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -4
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -4
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/media.d.ts +0 -9
- package/dist/mcp/media.d.ts.map +0 -1
- package/dist/mcp/media.js +0 -33
- package/dist/mcp/media.js.map +0 -1
- package/dist/postgres/adapter.d.ts +0 -23
- package/dist/postgres/adapter.d.ts.map +0 -1
- package/dist/postgres/adapter.js +0 -50
- package/dist/postgres/adapter.js.map +0 -1
- package/dist/postgres/codec.d.ts +0 -13
- package/dist/postgres/codec.d.ts.map +0 -1
- package/dist/postgres/codec.js +0 -110
- package/dist/postgres/codec.js.map +0 -1
- package/dist/postgres/compile/index.d.ts +0 -9
- package/dist/postgres/compile/index.d.ts.map +0 -1
- package/dist/postgres/compile/index.js +0 -9
- package/dist/postgres/compile/index.js.map +0 -1
- package/dist/postgres/driver.d.ts +0 -109
- package/dist/postgres/driver.d.ts.map +0 -1
- package/dist/postgres/driver.js +0 -186
- package/dist/postgres/driver.js.map +0 -1
- package/dist/postgres/executor.d.ts +0 -28
- package/dist/postgres/executor.d.ts.map +0 -1
- package/dist/postgres/executor.js +0 -96
- package/dist/postgres/executor.js.map +0 -1
- package/dist/postgres/index.d.ts +0 -8
- package/dist/postgres/index.d.ts.map +0 -1
- package/dist/postgres/index.js +0 -8
- package/dist/postgres/index.js.map +0 -1
- package/dist/postgres/lower.d.ts +0 -6
- package/dist/postgres/lower.d.ts.map +0 -1
- package/dist/postgres/lower.js +0 -152
- package/dist/postgres/lower.js.map +0 -1
- package/dist/postgres/print.d.ts +0 -11
- package/dist/postgres/print.d.ts.map +0 -1
- package/dist/postgres/print.js +0 -108
- package/dist/postgres/print.js.map +0 -1
- package/dist/postgres/session.d.ts +0 -9
- package/dist/postgres/session.d.ts.map +0 -1
- package/dist/postgres/session.js +0 -111
- package/dist/postgres/session.js.map +0 -1
- package/dist/postgres/storage.d.ts +0 -32
- package/dist/postgres/storage.d.ts.map +0 -1
- package/dist/postgres/storage.js +0 -283
- package/dist/postgres/storage.js.map +0 -1
- package/dist/postgres/validator.d.ts +0 -13
- package/dist/postgres/validator.d.ts.map +0 -1
- package/dist/postgres/validator.js +0 -53
- package/dist/postgres/validator.js.map +0 -1
- package/dist/spec/domain/index.d.ts +0 -3
- package/dist/spec/domain/index.d.ts.map +0 -1
- package/dist/spec/domain/index.js +0 -3
- package/dist/spec/domain/index.js.map +0 -1
- package/dist/spec/domain/model/ContentState.d.ts +0 -8
- package/dist/spec/domain/model/ContentState.d.ts.map +0 -1
- package/dist/spec/domain/model/ContentState.js +0 -7
- package/dist/spec/domain/model/ContentState.js.map +0 -1
- package/dist/spec/domain/model/Entry.d.ts +0 -29
- package/dist/spec/domain/model/Entry.d.ts.map +0 -1
- package/dist/spec/domain/model/Entry.js +0 -16
- package/dist/spec/domain/model/Entry.js.map +0 -1
- package/dist/spec/domain/model/Locale.d.ts +0 -30
- package/dist/spec/domain/model/Locale.d.ts.map +0 -1
- package/dist/spec/domain/model/Locale.js +0 -33
- package/dist/spec/domain/model/Locale.js.map +0 -1
- package/dist/spec/domain/model/ManifestGrammar.d.ts.map +0 -1
- package/dist/spec/domain/model/ManifestGrammar.js +0 -153
- package/dist/spec/domain/model/ManifestGrammar.js.map +0 -1
- package/dist/spec/domain/model/MediaMimeAccept.d.ts +0 -55
- package/dist/spec/domain/model/MediaMimeAccept.d.ts.map +0 -1
- package/dist/spec/domain/model/MediaMimeAccept.js +0 -90
- package/dist/spec/domain/model/MediaMimeAccept.js.map +0 -1
- package/dist/spec/domain/model/RuntimePlan.d.ts.map +0 -1
- package/dist/spec/domain/model/RuntimePlan.js +0 -4
- package/dist/spec/domain/model/RuntimePlan.js.map +0 -1
- package/dist/spec/domain/model/SiteConfig.d.ts +0 -173
- package/dist/spec/domain/model/SiteConfig.d.ts.map +0 -1
- package/dist/spec/domain/model/SiteConfig.js +0 -13
- package/dist/spec/domain/model/SiteConfig.js.map +0 -1
- package/dist/spec/domain/model/SqlIr.d.ts.map +0 -1
- package/dist/spec/domain/model/SqlIr.js +0 -95
- package/dist/spec/domain/model/SqlIr.js.map +0 -1
- package/dist/spec/domain/model/index.d.ts +0 -14
- package/dist/spec/domain/model/index.d.ts.map +0 -1
- package/dist/spec/domain/model/index.js +0 -14
- package/dist/spec/domain/model/index.js.map +0 -1
- package/dist/spec/domain/service/CloudflareCron.d.ts.map +0 -1
- package/dist/spec/domain/service/CloudflareCron.js.map +0 -1
- package/dist/spec/domain/service/CrossSchemaChecker.d.ts +0 -34
- package/dist/spec/domain/service/CrossSchemaChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/CrossSchemaChecker.js +0 -114
- package/dist/spec/domain/service/CrossSchemaChecker.js.map +0 -1
- package/dist/spec/domain/service/EntryDataValidator.d.ts +0 -56
- package/dist/spec/domain/service/EntryDataValidator.d.ts.map +0 -1
- package/dist/spec/domain/service/EntryDataValidator.js +0 -88
- package/dist/spec/domain/service/EntryDataValidator.js.map +0 -1
- package/dist/spec/domain/service/JsonSchemaToZod.d.ts +0 -29
- package/dist/spec/domain/service/JsonSchemaToZod.d.ts.map +0 -1
- package/dist/spec/domain/service/JsonSchemaToZod.js +0 -156
- package/dist/spec/domain/service/JsonSchemaToZod.js.map +0 -1
- package/dist/spec/domain/service/LifecycleStateMachine.d.ts +0 -75
- package/dist/spec/domain/service/LifecycleStateMachine.d.ts.map +0 -1
- package/dist/spec/domain/service/LifecycleStateMachine.js +0 -76
- package/dist/spec/domain/service/LifecycleStateMachine.js.map +0 -1
- package/dist/spec/domain/service/LocaleCanonicalizer.d.ts +0 -29
- package/dist/spec/domain/service/LocaleCanonicalizer.d.ts.map +0 -1
- package/dist/spec/domain/service/LocaleCanonicalizer.js +0 -96
- package/dist/spec/domain/service/LocaleCanonicalizer.js.map +0 -1
- package/dist/spec/domain/service/ManifestFieldChecks.d.ts +0 -60
- package/dist/spec/domain/service/ManifestFieldChecks.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestFieldChecks.js +0 -116
- package/dist/spec/domain/service/ManifestFieldChecks.js.map +0 -1
- package/dist/spec/domain/service/ManifestGraphValidator.d.ts +0 -15
- package/dist/spec/domain/service/ManifestGraphValidator.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestGraphValidator.js +0 -225
- package/dist/spec/domain/service/ManifestGraphValidator.js.map +0 -1
- package/dist/spec/domain/service/ManifestLinker.d.ts +0 -45
- package/dist/spec/domain/service/ManifestLinker.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestLinker.js +0 -92
- package/dist/spec/domain/service/ManifestLinker.js.map +0 -1
- package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts +0 -16
- package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestLocaleTrimmer.js +0 -76
- package/dist/spec/domain/service/ManifestLocaleTrimmer.js.map +0 -1
- package/dist/spec/domain/service/ManifestParser.d.ts +0 -49
- package/dist/spec/domain/service/ManifestParser.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestParser.js +0 -203
- package/dist/spec/domain/service/ManifestParser.js.map +0 -1
- package/dist/spec/domain/service/ManifestPartition.d.ts +0 -9
- package/dist/spec/domain/service/ManifestPartition.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestPartition.js +0 -19
- package/dist/spec/domain/service/ManifestPartition.js.map +0 -1
- package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts +0 -33
- package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestPathDiagnoser.js +0 -43
- package/dist/spec/domain/service/ManifestPathDiagnoser.js.map +0 -1
- package/dist/spec/domain/service/ManifestSourceSpans.d.ts +0 -10
- package/dist/spec/domain/service/ManifestSourceSpans.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestSourceSpans.js +0 -76
- package/dist/spec/domain/service/ManifestSourceSpans.js.map +0 -1
- package/dist/spec/domain/service/McpToolNaming.d.ts +0 -25
- package/dist/spec/domain/service/McpToolNaming.d.ts.map +0 -1
- package/dist/spec/domain/service/McpToolNaming.js +0 -50
- package/dist/spec/domain/service/McpToolNaming.js.map +0 -1
- package/dist/spec/domain/service/PlanFingerprint.d.ts.map +0 -1
- package/dist/spec/domain/service/PlanFingerprint.js +0 -14
- package/dist/spec/domain/service/PlanFingerprint.js.map +0 -1
- package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts +0 -4
- package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts.map +0 -1
- package/dist/spec/domain/service/ProcedureViewSpecChecks.js +0 -211
- package/dist/spec/domain/service/ProcedureViewSpecChecks.js.map +0 -1
- package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts +0 -44
- package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/SchemaAdminUiChecker.js +0 -333
- package/dist/spec/domain/service/SchemaAdminUiChecker.js.map +0 -1
- package/dist/spec/domain/service/SchemaIndexChecker.d.ts +0 -33
- package/dist/spec/domain/service/SchemaIndexChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/SchemaIndexChecker.js +0 -256
- package/dist/spec/domain/service/SchemaIndexChecker.js.map +0 -1
- package/dist/spec/domain/service/SchemaSearchChecker.d.ts +0 -11
- package/dist/spec/domain/service/SchemaSearchChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/SchemaSearchChecker.js +0 -78
- package/dist/spec/domain/service/SchemaSearchChecker.js.map +0 -1
- package/dist/spec/domain/service/SchemaSpecChecks.d.ts +0 -31
- package/dist/spec/domain/service/SchemaSpecChecks.d.ts.map +0 -1
- package/dist/spec/domain/service/SchemaSpecChecks.js +0 -445
- package/dist/spec/domain/service/SchemaSpecChecks.js.map +0 -1
- package/dist/spec/domain/service/SiteDefaultsValidator.d.ts +0 -39
- package/dist/spec/domain/service/SiteDefaultsValidator.d.ts.map +0 -1
- package/dist/spec/domain/service/SiteDefaultsValidator.js +0 -194
- package/dist/spec/domain/service/SiteDefaultsValidator.js.map +0 -1
- package/dist/spec/domain/service/SqlClassify.d.ts +0 -19
- package/dist/spec/domain/service/SqlClassify.d.ts.map +0 -1
- package/dist/spec/domain/service/SqlClassify.js +0 -42
- package/dist/spec/domain/service/SqlClassify.js.map +0 -1
- package/dist/spec/domain/service/SqlRefusal.d.ts +0 -16
- package/dist/spec/domain/service/SqlRefusal.d.ts.map +0 -1
- package/dist/spec/domain/service/SqlRefusal.js +0 -20
- package/dist/spec/domain/service/SqlRefusal.js.map +0 -1
- package/dist/spec/domain/service/SqlTypes.d.ts +0 -40
- package/dist/spec/domain/service/SqlTypes.d.ts.map +0 -1
- package/dist/spec/domain/service/SqlTypes.js +0 -110
- package/dist/spec/domain/service/SqlTypes.js.map +0 -1
- package/dist/spec/domain/service/StaffRoleHierarchy.d.ts +0 -3
- package/dist/spec/domain/service/StaffRoleHierarchy.d.ts.map +0 -1
- package/dist/spec/domain/service/StaffRoleHierarchy.js +0 -19
- package/dist/spec/domain/service/StaffRoleHierarchy.js.map +0 -1
- package/dist/spec/domain/service/TriggerGraphChecks.d.ts +0 -16
- package/dist/spec/domain/service/TriggerGraphChecks.d.ts.map +0 -1
- package/dist/spec/domain/service/TriggerGraphChecks.js +0 -337
- package/dist/spec/domain/service/TriggerGraphChecks.js.map +0 -1
- package/dist/spec/domain/service/TriggerSpecChecks.d.ts +0 -4
- package/dist/spec/domain/service/TriggerSpecChecks.d.ts.map +0 -1
- package/dist/spec/domain/service/TriggerSpecChecks.js +0 -89
- package/dist/spec/domain/service/TriggerSpecChecks.js.map +0 -1
- package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts +0 -11
- package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts.map +0 -1
- package/dist/spec/domain/service/ValidatedAdminUiProjection.js +0 -26
- package/dist/spec/domain/service/ValidatedAdminUiProjection.js.map +0 -1
- package/dist/spec/domain/service/ViewAdminUiChecker.d.ts +0 -14
- package/dist/spec/domain/service/ViewAdminUiChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/ViewAdminUiChecker.js +0 -58
- package/dist/spec/domain/service/ViewAdminUiChecker.js.map +0 -1
- package/dist/spec/domain/service/index.d.ts +0 -24
- package/dist/spec/domain/service/index.d.ts.map +0 -1
- package/dist/spec/domain/service/index.js +0 -24
- package/dist/spec/domain/service/index.js.map +0 -1
- package/dist/spec/index.d.ts +0 -10
- package/dist/spec/index.d.ts.map +0 -1
- package/dist/spec/index.js +0 -12
- package/dist/spec/index.js.map +0 -1
- package/dist/spec/infrastructure/cli/parseArgsError.d.ts +0 -16
- package/dist/spec/infrastructure/cli/parseArgsError.d.ts.map +0 -1
- package/dist/spec/infrastructure/cli/parseArgsError.js +0 -34
- package/dist/spec/infrastructure/cli/parseArgsError.js.map +0 -1
- package/dist/spec/infrastructure/index.d.ts +0 -2
- package/dist/spec/infrastructure/index.d.ts.map +0 -1
- package/dist/spec/infrastructure/index.js +0 -2
- package/dist/spec/infrastructure/index.js.map +0 -1
- package/dist/spec/infrastructure/sql/PgQueryParser.d.ts +0 -18
- package/dist/spec/infrastructure/sql/PgQueryParser.d.ts.map +0 -1
- package/dist/spec/infrastructure/sql/PgQueryParser.js +0 -17
- package/dist/spec/infrastructure/sql/PgQueryParser.js.map +0 -1
- package/dist/spec/infrastructure/sql/compilePlan.d.ts +0 -37
- package/dist/spec/infrastructure/sql/compilePlan.d.ts.map +0 -1
- package/dist/spec/infrastructure/sql/compilePlan.js +0 -287
- package/dist/spec/infrastructure/sql/compilePlan.js.map +0 -1
- package/dist/spec/infrastructure/sql/compileSql.d.ts +0 -35
- package/dist/spec/infrastructure/sql/compileSql.d.ts.map +0 -1
- package/dist/spec/infrastructure/sql/compileSql.js +0 -92
- package/dist/spec/infrastructure/sql/compileSql.js.map +0 -1
- package/dist/spec/infrastructure/sql/frontEnd.d.ts +0 -8
- package/dist/spec/infrastructure/sql/frontEnd.d.ts.map +0 -1
- package/dist/spec/infrastructure/sql/frontEnd.js +0 -100
- package/dist/spec/infrastructure/sql/frontEnd.js.map +0 -1
- package/dist/spec/infrastructure/sql/index.d.ts +0 -4
- package/dist/spec/infrastructure/sql/index.d.ts.map +0 -1
- package/dist/spec/infrastructure/sql/index.js +0 -4
- package/dist/spec/infrastructure/sql/index.js.map +0 -1
- package/dist/spec/kernel/diagnostic.d.ts.map +0 -1
- package/dist/spec/kernel/diagnostic.js +0 -301
- package/dist/spec/kernel/diagnostic.js.map +0 -1
- package/dist/spec/kernel/index.d.ts +0 -8
- package/dist/spec/kernel/index.d.ts.map +0 -1
- package/dist/spec/kernel/index.js +0 -8
- package/dist/spec/kernel/index.js.map +0 -1
- package/dist/spec/usecase/EmitTypes.d.ts +0 -22
- package/dist/spec/usecase/EmitTypes.d.ts.map +0 -1
- package/dist/spec/usecase/EmitTypes.js +0 -182
- package/dist/spec/usecase/EmitTypes.js.map +0 -1
- package/dist/spec/usecase/ValidateManifestsUseCase.d.ts +0 -8
- package/dist/spec/usecase/ValidateManifestsUseCase.d.ts.map +0 -1
- package/dist/spec/usecase/ValidateManifestsUseCase.js +0 -101
- package/dist/spec/usecase/ValidateManifestsUseCase.js.map +0 -1
- package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts +0 -27
- package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts.map +0 -1
- package/dist/spec/usecase/dto/ValidateManifestsRequest.js +0 -2
- package/dist/spec/usecase/dto/ValidateManifestsRequest.js.map +0 -1
- package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts +0 -14
- package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts.map +0 -1
- package/dist/spec/usecase/dto/ValidateManifestsResponse.js +0 -2
- package/dist/spec/usecase/dto/ValidateManifestsResponse.js.map +0 -1
- package/dist/spec/usecase/dto/index.d.ts +0 -3
- package/dist/spec/usecase/dto/index.d.ts.map +0 -1
- package/dist/spec/usecase/dto/index.js +0 -3
- package/dist/spec/usecase/dto/index.js.map +0 -1
- package/dist/spec/usecase/index.d.ts +0 -10
- package/dist/spec/usecase/index.d.ts.map +0 -1
- package/dist/spec/usecase/index.js +0 -10
- package/dist/spec/usecase/index.js.map +0 -1
- package/dist/testing/cases/before-hook.d.ts +0 -4
- package/dist/testing/cases/before-hook.d.ts.map +0 -1
- package/dist/testing/cases/before-hook.js +0 -71
- package/dist/testing/cases/before-hook.js.map +0 -1
- package/dist/testing/cases/corpus.d.ts +0 -14
- package/dist/testing/cases/corpus.d.ts.map +0 -1
- package/dist/testing/cases/corpus.js +0 -93
- package/dist/testing/cases/corpus.js.map +0 -1
- package/dist/testing/cases/policy.d.ts +0 -87
- package/dist/testing/cases/policy.d.ts.map +0 -1
- package/dist/testing/cases/policy.js +0 -143
- package/dist/testing/cases/policy.js.map +0 -1
- package/dist/testing/cases/printer.d.ts +0 -4
- package/dist/testing/cases/printer.d.ts.map +0 -1
- package/dist/testing/cases/printer.js +0 -34
- package/dist/testing/cases/printer.js.map +0 -1
- package/dist/testing/cases/report-view.d.ts +0 -5
- package/dist/testing/cases/report-view.d.ts.map +0 -1
- package/dist/testing/cases/report-view.js +0 -51
- package/dist/testing/cases/report-view.js.map +0 -1
- package/dist/testing/cases/requisition.d.ts +0 -4
- package/dist/testing/cases/requisition.d.ts.map +0 -1
- package/dist/testing/cases/requisition.js +0 -38
- package/dist/testing/cases/requisition.js.map +0 -1
- package/dist/testing/cases/search-places.d.ts +0 -4
- package/dist/testing/cases/search-places.d.ts.map +0 -1
- package/dist/testing/cases/search-places.js +0 -60
- package/dist/testing/cases/search-places.js.map +0 -1
- package/dist/testing/cases/stock.d.ts +0 -4
- package/dist/testing/cases/stock.d.ts.map +0 -1
- package/dist/testing/cases/stock.js +0 -35
- package/dist/testing/cases/stock.js.map +0 -1
- package/dist/testing/cases/store.d.ts +0 -4
- package/dist/testing/cases/store.d.ts.map +0 -1
- package/dist/testing/cases/store.js +0 -100
- package/dist/testing/cases/store.js.map +0 -1
- package/dist/testing/harness.d.ts +0 -94
- package/dist/testing/harness.d.ts.map +0 -1
- package/dist/testing/harness.js +0 -168
- package/dist/testing/harness.js.map +0 -1
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js.map +0 -1
- package/dist/testing/report.d.ts +0 -15
- package/dist/testing/report.d.ts.map +0 -1
- package/dist/testing/report.js +0 -22
- package/dist/testing/report.js.map +0 -1
- package/dist/web/createRestSurface.d.ts +0 -7
- package/dist/web/createRestSurface.d.ts.map +0 -1
- package/dist/web/createRestSurface.js +0 -41
- package/dist/web/createRestSurface.js.map +0 -1
- package/dist/web/index.d.ts +0 -2
- package/dist/web/index.d.ts.map +0 -1
- package/dist/web/index.js +0 -2
- package/dist/web/index.js.map +0 -1
- package/docs/adr/0001-four-atom-manifest-model.md +0 -440
- package/docs/adr/0002-closed-enums-for-bindings.md +0 -253
- package/docs/adr/0007-ai-as-primary-author.md +0 -473
- package/docs/adr/0008-structured-diagnostic-shape.md +0 -338
- package/docs/adr/0009-consumer-supplied-manifests.md +0 -149
- package/docs/adr/0010-locale-and-translates.md +0 -453
- package/docs/adr/0011-adapter-port-spec.md +0 -281
- package/docs/adr/0012-views-as-public-rest.md +0 -161
- package/docs/adr/0013-agent-provisioned-consumer-projects.md +0 -154
- package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +0 -939
- package/docs/adr/0016-site-semantic-layer.md +0 -70
- package/docs/adr/0017-media-multi-variant-agent-side-optimization.md +0 -181
- package/docs/adr/0018-core-starters-repository-boundary.md +0 -179
- package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +0 -244
- package/docs/adr/0020-builtin-handler-contracts-and-matched-upsert.md +0 -199
- package/docs/adr/0021-retire-starter-scaffolding.md +0 -30
- package/docs/adr/0022-caller-observed-version-occ.md +0 -212
- package/docs/adr/0023-port-failure-contract.md +0 -69
- package/docs/adr/0024-manifest-native-schema-tables.md +0 -264
- package/docs/adr/0025-reserved-native-columns-and-published-only-public-views.md +0 -105
- package/docs/adr/0026-progressive-generate.md +0 -36
- package/docs/adr/0027-scheduled-procedure-triggers.md +0 -31
- package/docs/adr/0028-schema-ttl-expiry.md +0 -33
- package/docs/adr/0029-mcp-apps-interaction-contracts.md +0 -324
- package/docs/adr/0030-store.md +0 -40
- package/docs/adr/0031-host-cloud-core-contract.md +0 -102
- package/docs/adr/0032-store-centric-core-and-service-contract.md +0 -384
- package/docs/adr/0033-storage-converges-to-the-plan.md +0 -92
- package/docs/adr/0034-store-is-authored-as-sql.md +0 -192
- package/docs/adr/0035-sql-dialects.md +0 -154
- package/docs/adr/0036-host-and-dialect.md +0 -65
- package/docs/adr/0037-postgresql-is-the-reference-dialect.md +0 -125
- package/docs/adr/0038-bun-native-host.md +0 -63
- package/docs/adr/0039-postgresql-is-native.md +0 -130
- package/docs/adr/README.md +0 -98
- package/docs/adr/adr-lite-1376-admin-extensions.md +0 -330
- package/docs/adr/adr-lite-803-request-diagnostics.md +0 -38
- package/docs/adr/adr-lite-808-route-readiness.md +0 -47
- package/docs/adr/adr-lite-809-bounded-public-content.md +0 -71
- package/docs/adr/adr-lite-812-native-parity.md +0 -150
- package/docs/adr/adr-lite-823-home-statistics.md +0 -64
- package/docs/adr/adr-lite-842-mcp-authoring.md +0 -30
- package/docs/adr/adr-lite-845-frontend-client.md +0 -38
- package/docs/adr/adr-lite-861-admin-webmcp.md +0 -48
- package/docs/adr/adr-lite-909-admin-ui-kit.md +0 -37
- package/docs/examples/commerce-inventory.md +0 -498
- package/docs/examples/commerce.md +0 -254
- package/docs/examples/guarded-api.md +0 -238
- package/docs/examples/intake-hooks.md +0 -237
- package/docs/examples/intake.md +0 -127
- package/docs/examples/legal-documents.md +0 -218
- package/docs/examples/procurement.md +0 -226
- package/docs/examples/publication.md +0 -211
- package/docs/examples/reference-service/.mantle/generated/mantle.ts +0 -174
- package/docs/examples/reference-service/.mantle/generated/plan.json +0 -1936
- package/docs/examples/reference-service/README.md +0 -33
- package/docs/examples/reference-service/manifests/catalog.yaml +0 -103
- package/docs/examples/reference-service/manifests/orders.yaml +0 -120
- package/docs/examples/reference-service/mantle.config.json +0 -1
- package/docs/examples/reference-service/package.json +0 -27
- package/docs/examples/reference-service/smoke.mjs +0 -160
- package/docs/examples/reference-service/src/handlers.ts +0 -36
- package/docs/examples/reference-service/src/index.ts +0 -33
- package/docs/examples/reference-service/src/service.ts +0 -78
- package/docs/examples/reference-service/wrangler.jsonc +0 -26
- package/docs/examples/reservation.md +0 -142
- /package/docs/examples/{reference-service → app-shell}/.dev.vars.example +0 -0
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: A public intake form with a Turnstile bot check as the Procedure's guard and a staff email from an after hook.
|
|
3
|
-
---
|
|
4
|
-
# Intake form with bot check and notification
|
|
5
|
-
|
|
6
|
-
[Examples hub](./README.md) · Without the bot check and email, this is [Intake form](./intake.md).
|
|
7
|
-
|
|
8
|
-
Anonymous visitors submit a request. A Cloudflare Turnstile token is verified
|
|
9
|
-
before anything is written, and staff get an email after the row is committed.
|
|
10
|
-
The write stays one SQL statement; two small `ref` handlers carry the
|
|
11
|
-
integrations.
|
|
12
|
-
|
|
13
|
-
## Problem
|
|
14
|
-
|
|
15
|
-
The public write must reject automated submissions before anything is stored.
|
|
16
|
-
A new row should email the team, without making the visitor wait for the email
|
|
17
|
-
or fail when email is not configured. Submissions are records, so the Schema is
|
|
18
|
-
`operational`.
|
|
19
|
-
|
|
20
|
-
## Manifest
|
|
21
|
-
|
|
22
|
-
```yaml
|
|
23
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
24
|
-
kind: Schema
|
|
25
|
-
metadata: { name: requests }
|
|
26
|
-
spec:
|
|
27
|
-
title: Requests
|
|
28
|
-
description: Requests submitted through the public intake form.
|
|
29
|
-
lifecycle: operational
|
|
30
|
-
schema:
|
|
31
|
-
type: object
|
|
32
|
-
additionalProperties: false
|
|
33
|
-
required: [name, email, message]
|
|
34
|
-
properties:
|
|
35
|
-
name: { type: string, minLength: 1, maxLength: 120 }
|
|
36
|
-
email: { type: string, format: email }
|
|
37
|
-
message: { type: string, minLength: 1, maxLength: 2000 }
|
|
38
|
-
---
|
|
39
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
40
|
-
kind: View
|
|
41
|
-
metadata: { name: recent-requests }
|
|
42
|
-
spec:
|
|
43
|
-
title: Recent requests
|
|
44
|
-
surface: staff
|
|
45
|
-
requires: { auth: { all: [{ ctx.staff: [owner, editor, contributor] }] } }
|
|
46
|
-
sql: |
|
|
47
|
-
SELECT id, name, email, message, created_at FROM requests
|
|
48
|
-
ORDER BY created_at DESC LIMIT 50
|
|
49
|
-
---
|
|
50
|
-
# The guard runs first, with this Procedure's validated input, token included. The INSERT never stores the token.
|
|
51
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
52
|
-
kind: Procedure
|
|
53
|
-
metadata: { name: submit-request }
|
|
54
|
-
spec:
|
|
55
|
-
title: Submit request
|
|
56
|
-
description: Create a new public request after a Turnstile check.
|
|
57
|
-
requires: { guard: { procedure: verify-turnstile } }
|
|
58
|
-
input:
|
|
59
|
-
type: object
|
|
60
|
-
additionalProperties: false
|
|
61
|
-
required: [name, email, message]
|
|
62
|
-
properties:
|
|
63
|
-
name: { type: string, minLength: 1, maxLength: 120 }
|
|
64
|
-
email: { type: string, format: email }
|
|
65
|
-
message: { type: string, minLength: 1, maxLength: 2000 }
|
|
66
|
-
turnstileToken: { type: string }
|
|
67
|
-
output: { type: object }
|
|
68
|
-
handler:
|
|
69
|
-
sql: |
|
|
70
|
-
INSERT INTO requests (name, email, message)
|
|
71
|
-
VALUES (input.name, input.email, input.message)
|
|
72
|
-
RETURNING id
|
|
73
|
-
---
|
|
74
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
75
|
-
kind: Procedure
|
|
76
|
-
metadata: { name: verify-turnstile }
|
|
77
|
-
spec:
|
|
78
|
-
input:
|
|
79
|
-
type: object
|
|
80
|
-
properties:
|
|
81
|
-
turnstileToken: { type: string }
|
|
82
|
-
output: { type: object }
|
|
83
|
-
handler: { ref: verifyTurnstile }
|
|
84
|
-
---
|
|
85
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
86
|
-
kind: Procedure
|
|
87
|
-
metadata: { name: notify-requests }
|
|
88
|
-
spec:
|
|
89
|
-
input: { type: object }
|
|
90
|
-
output: { type: object }
|
|
91
|
-
handler: { ref: notifyRequests }
|
|
92
|
-
---
|
|
93
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
94
|
-
kind: Trigger
|
|
95
|
-
metadata: { name: submit-request-http }
|
|
96
|
-
spec:
|
|
97
|
-
source: { kind: http, method: POST, path: /api/requests }
|
|
98
|
-
target: { procedure: submit-request }
|
|
99
|
-
---
|
|
100
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
101
|
-
kind: Trigger
|
|
102
|
-
metadata: { name: submit-request-mcp }
|
|
103
|
-
spec:
|
|
104
|
-
source: { kind: mcp, surface: public }
|
|
105
|
-
target: { procedure: submit-request }
|
|
106
|
-
---
|
|
107
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
108
|
-
kind: Trigger
|
|
109
|
-
metadata: { name: requests-notify }
|
|
110
|
-
spec:
|
|
111
|
-
source: { kind: lifecycle, schema: requests, on: [after_create] }
|
|
112
|
-
target: { procedure: notify-requests }
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Why each check sits where it does:
|
|
116
|
-
|
|
117
|
-
- **The bot check is a guard, not a before hook.** A guard receives the target
|
|
118
|
-
Procedure's validated input, so it can read `turnstileToken`. A before hook
|
|
119
|
-
receives only the row about to be written (`ctx.cause.rows`), and the token is
|
|
120
|
-
never part of the row. A guard belongs to one Procedure, which is right here:
|
|
121
|
-
staff creating a row through Admin are not asked for a token.
|
|
122
|
-
- **The guard's input schema leaves `additionalProperties` open.** It receives
|
|
123
|
-
`name`, `email` and `message` too.
|
|
124
|
-
- **The email is an after hook.** It runs only after the commit, and a failure
|
|
125
|
-
never undoes the row. One statement can write many rows, so the handler loops
|
|
126
|
-
over `ctx.cause.rows`.
|
|
127
|
-
|
|
128
|
-
## Handlers
|
|
129
|
-
|
|
130
|
-
```ts
|
|
131
|
-
// src/handlers.ts
|
|
132
|
-
import { DiagnosticError, runtimeDiagnostic } from "@aotter/mantle";
|
|
133
|
-
import type { MantleHandlers } from "../.mantle/generated/mantle.js";
|
|
134
|
-
import type { Env } from "./service.js";
|
|
135
|
-
|
|
136
|
-
const reject = (message: string, value?: unknown): never => {
|
|
137
|
-
throw new DiagnosticError(runtimeDiagnostic({ code: "AUTH_DENIED", severity: "error", path: "/turnstileToken", value, message }));
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
export const handlers: MantleHandlers<Env> = {
|
|
141
|
-
verifyTurnstile: async (input, ctx) => {
|
|
142
|
-
const secret = ctx.env.TURNSTILE_SECRET_KEY?.trim();
|
|
143
|
-
if (!secret) return {}; // fails open until the secret exists; see below
|
|
144
|
-
const token = (input as { turnstileToken?: string }).turnstileToken?.trim();
|
|
145
|
-
if (!token) reject("Turnstile verification is required.");
|
|
146
|
-
const body = new FormData();
|
|
147
|
-
body.set("secret", secret);
|
|
148
|
-
body.set("response", token!);
|
|
149
|
-
const response = await fetch("https://challenges.cloudflare.com/turnstile/v0/siteverify", { method: "POST", body });
|
|
150
|
-
const result = response.ok ? ((await response.json().catch(() => null)) as { success?: boolean; "error-codes"?: string[] } | null) : null;
|
|
151
|
-
if (!result?.success) reject("Turnstile verification failed.", result?.["error-codes"]);
|
|
152
|
-
return {};
|
|
153
|
-
},
|
|
154
|
-
|
|
155
|
-
// an after hook gets every row the statement wrote: loop, never rows[0]
|
|
156
|
-
notifyRequests: async (_input, ctx) => {
|
|
157
|
-
const { EMAIL, INTAKE_NOTIFY_TO, INTAKE_NOTIFY_FROM } = ctx.env;
|
|
158
|
-
if (ctx.cause.kind !== "lifecycle" || !EMAIL || !INTAKE_NOTIFY_TO || !INTAKE_NOTIFY_FROM) return {};
|
|
159
|
-
for (const row of ctx.cause.rows) {
|
|
160
|
-
await EMAIL.send({
|
|
161
|
-
to: INTAKE_NOTIFY_TO,
|
|
162
|
-
from: INTAKE_NOTIFY_FROM,
|
|
163
|
-
subject: `New request from ${String(row.name)}`,
|
|
164
|
-
text: [`Name: ${String(row.name)}`, `Email: ${String(row.email)}`, "", String(row.message)].join("\n"),
|
|
165
|
-
replyTo: String(row.email),
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
return {};
|
|
169
|
-
},
|
|
170
|
-
};
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
`src/service.ts` is the application's own file after the first
|
|
174
|
-
`mantle generate`. Add the bindings to its `Env`:
|
|
175
|
-
|
|
176
|
-
```ts
|
|
177
|
-
interface EmailBinding {
|
|
178
|
-
send(message: { to: string; from: string; subject: string; text?: string; replyTo?: string }): Promise<unknown>;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
export interface Env {
|
|
182
|
-
readonly DB: D1Database;
|
|
183
|
-
// ...the generated fields...
|
|
184
|
-
readonly TURNSTILE_SECRET_KEY?: string;
|
|
185
|
-
readonly EMAIL?: EmailBinding;
|
|
186
|
-
readonly INTAKE_NOTIFY_TO?: string;
|
|
187
|
-
readonly INTAKE_NOTIFY_FROM?: string;
|
|
188
|
-
}
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
Put `send_email` (`[{ "name": "EMAIL" }]`) and the two `vars` in
|
|
192
|
-
`wrangler.jsonc`, and set the secret with
|
|
193
|
-
`wrangler secret put TURNSTILE_SECRET_KEY`.
|
|
194
|
-
|
|
195
|
-
A handler throws `DiagnosticError` to answer with that code's status
|
|
196
|
-
(`AUTH_DENIED` is 403). Any other throw is logged and answered as 500
|
|
197
|
-
`INTERNAL_ERROR`. Import it from `@aotter/mantle`, not `@aotter/mantle/spec`:
|
|
198
|
-
the root carries no SQL parser, while `/spec` bundles it into the Worker.
|
|
199
|
-
|
|
200
|
-
Two policies are deliberate:
|
|
201
|
-
|
|
202
|
-
- **The bot check fails open while the secret is unset,** so a first deploy
|
|
203
|
-
still accepts submissions. To fail closed, make the missing secret a
|
|
204
|
-
`reject(...)`.
|
|
205
|
-
- **The notification fails soft.** After hooks are best effort: a throw is
|
|
206
|
-
logged and the row stays. `ctx.cause.id` is stable across a replay, so a
|
|
207
|
-
handler that must not send twice can deduplicate on it.
|
|
208
|
-
|
|
209
|
-
## Try it
|
|
210
|
-
|
|
211
|
-
```sh
|
|
212
|
-
curl -sS -X POST http://127.0.0.1:8787/api/requests \
|
|
213
|
-
-H 'content-type: application/json' \
|
|
214
|
-
-d '{"name":"Ada","email":"ada@example.test","message":"Please call me back.","turnstileToken":"<token>"}'
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
The answer is `{ "results": [[{ "id": "…" }]] }`. With the secret set, a bad
|
|
218
|
-
token is HTTP 403 with `{ "error": { "code": "AUTH_DENIED", … } }`, and no row
|
|
219
|
-
exists. A missing `name` is HTTP 400 `INPUT_VALIDATION_FAILED` before the guard
|
|
220
|
-
runs.
|
|
221
|
-
|
|
222
|
-
An agent calling `submit_request` on `/mcp` has no browser widget. With the
|
|
223
|
-
secret set, it is refused unless it brings a valid token. Keep or remove
|
|
224
|
-
`submit-request-mcp` deliberately.
|
|
225
|
-
|
|
226
|
-
## What this leaves out
|
|
227
|
-
|
|
228
|
-
- **Deduplication.** Add a `uniqueIndexes` tuple and `ON CONFLICT DO NOTHING`
|
|
229
|
-
if duplicates matter.
|
|
230
|
-
- **Rate limiting beyond Turnstile.** Put a quota in the service's own `fetch`.
|
|
231
|
-
- **Reliable delivery.** After hooks run inline after the commit. A CRM sync
|
|
232
|
-
that must not be lost needs the service's own queue or outbox.
|
|
233
|
-
|
|
234
|
-
## Source
|
|
235
|
-
|
|
236
|
-
- [Writes: Procedures, Triggers and hooks](../handbook/concepts/procedures-and-triggers.md)
|
|
237
|
-
- [Authorization reference](../handbook/reference/authorization.md): guards
|
package/docs/examples/intake.md
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: A public intake form that inserts operational request rows with one SQL statement. No bot check or email hooks.
|
|
3
|
-
---
|
|
4
|
-
# Intake form
|
|
5
|
-
|
|
6
|
-
[Examples hub](./README.md) · Bot checks and staff email are [Intake with bot check and notification](./intake-hooks.md).
|
|
7
|
-
|
|
8
|
-
Anonymous visitors submit a request, and staff list recent submissions. The
|
|
9
|
-
only Procedure is one SQL `INSERT`; there is no handler code. Use this shape for
|
|
10
|
-
any form that anonymous visitors submit.
|
|
11
|
-
|
|
12
|
-
## Problem
|
|
13
|
-
|
|
14
|
-
Visitors send a name, an email address and a message. Staff read recent
|
|
15
|
-
submissions through Admin's API or the staff MCP surface. Submissions are
|
|
16
|
-
records, not authored content, so the Schema is `operational`: a row is live as
|
|
17
|
-
soon as it is written.
|
|
18
|
-
|
|
19
|
-
## Manifest
|
|
20
|
-
|
|
21
|
-
```yaml
|
|
22
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
23
|
-
kind: Schema
|
|
24
|
-
metadata: { name: requests }
|
|
25
|
-
spec:
|
|
26
|
-
title: Requests
|
|
27
|
-
description: Requests submitted through the public intake form.
|
|
28
|
-
lifecycle: operational
|
|
29
|
-
schema:
|
|
30
|
-
type: object
|
|
31
|
-
additionalProperties: false
|
|
32
|
-
required: [name, email, message]
|
|
33
|
-
properties:
|
|
34
|
-
name: { type: string, minLength: 1, maxLength: 120 }
|
|
35
|
-
email: { type: string, format: email }
|
|
36
|
-
message: { type: string, minLength: 1, maxLength: 2000 }
|
|
37
|
-
---
|
|
38
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
39
|
-
kind: View
|
|
40
|
-
metadata: { name: recent-requests }
|
|
41
|
-
spec:
|
|
42
|
-
title: Recent requests
|
|
43
|
-
surface: staff
|
|
44
|
-
requires: { auth: { all: [{ ctx.staff: [owner, editor, contributor] }] } }
|
|
45
|
-
sql: |
|
|
46
|
-
SELECT id, name, email, message, created_at FROM requests
|
|
47
|
-
ORDER BY created_at DESC LIMIT 50
|
|
48
|
-
---
|
|
49
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
50
|
-
kind: Procedure
|
|
51
|
-
metadata: { name: submit-request }
|
|
52
|
-
spec:
|
|
53
|
-
title: Submit request
|
|
54
|
-
description: Create a new public request.
|
|
55
|
-
input:
|
|
56
|
-
type: object
|
|
57
|
-
additionalProperties: false
|
|
58
|
-
required: [name, email, message]
|
|
59
|
-
properties:
|
|
60
|
-
name: { type: string, minLength: 1, maxLength: 120 }
|
|
61
|
-
email: { type: string, format: email }
|
|
62
|
-
message: { type: string, minLength: 1, maxLength: 2000 }
|
|
63
|
-
output: { type: object }
|
|
64
|
-
handler:
|
|
65
|
-
sql: |
|
|
66
|
-
INSERT INTO requests (name, email, message)
|
|
67
|
-
VALUES (input.name, input.email, input.message)
|
|
68
|
-
RETURNING id
|
|
69
|
-
---
|
|
70
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
71
|
-
kind: Trigger
|
|
72
|
-
metadata: { name: submit-request-http }
|
|
73
|
-
spec:
|
|
74
|
-
source: { kind: http, method: POST, path: /api/requests }
|
|
75
|
-
target: { procedure: submit-request }
|
|
76
|
-
---
|
|
77
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
78
|
-
kind: Trigger
|
|
79
|
-
metadata: { name: submit-request-mcp }
|
|
80
|
-
spec:
|
|
81
|
-
source: { kind: mcp, surface: public }
|
|
82
|
-
target: { procedure: submit-request }
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
The submission time is the native `created_at` column, which Store fills; a
|
|
86
|
-
write can never set it. A column the SQL does not name keeps its default, so a
|
|
87
|
-
caller cannot add fields: the `INSERT` lists exactly what is stored.
|
|
88
|
-
|
|
89
|
-
## Handlers
|
|
90
|
-
|
|
91
|
-
None. The plan has no `ref`, so the generated `src/handlers.ts` is an empty map.
|
|
92
|
-
|
|
93
|
-
## Try it
|
|
94
|
-
|
|
95
|
-
```sh
|
|
96
|
-
curl -sS -X POST http://127.0.0.1:8787/api/requests \
|
|
97
|
-
-H 'content-type: application/json' \
|
|
98
|
-
-d '{"name":"Ada","email":"ada@example.test","message":"Please call me back."}'
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
An inline SQL Procedure answers `{ "results": [...] }`, one array of
|
|
102
|
-
`RETURNING` rows per statement, here `[[{ "id": "…" }]]`. A missing `name` is
|
|
103
|
-
HTTP 400 `INPUT_VALIDATION_FAILED`.
|
|
104
|
-
|
|
105
|
-
Staff read the queue at `GET /admin/api/views/recent-requests?limit=50` with a
|
|
106
|
-
staff session; the response is `{ rows, nextCursor? }`.
|
|
107
|
-
|
|
108
|
-
| MCP surface | Tool | From |
|
|
109
|
-
|---|---|---|
|
|
110
|
-
| `/mcp` | `submit_request` | the `submit-request-mcp` Trigger |
|
|
111
|
-
| `/mcp/staff` | `recent_requests` | the staff View |
|
|
112
|
-
|
|
113
|
-
A Schema is never an MCP tool. Staff edit rows in Admin's API
|
|
114
|
-
(`/admin/api/entries`), not through generated record tools.
|
|
115
|
-
|
|
116
|
-
## What this leaves out
|
|
117
|
-
|
|
118
|
-
- **Bot check and notification.** They are `ref` lifecycle hooks in
|
|
119
|
-
[Intake with bot check and notification](./intake-hooks.md).
|
|
120
|
-
- **Deduplication.** Two identical submissions are two rows.
|
|
121
|
-
- **Rate limiting.** Put a per-form quota in the service's own `fetch`, in
|
|
122
|
-
front of the REST surface.
|
|
123
|
-
|
|
124
|
-
## Source
|
|
125
|
-
|
|
126
|
-
- [Procedure reference](../handbook/reference/procedure.md)
|
|
127
|
-
- [View reference](../handbook/reference/view.md)
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Localized Terms and Privacy documents with immutable revisions, a public lookup and signed-in acceptance records.
|
|
3
|
-
---
|
|
4
|
-
# Legal documents and consent
|
|
5
|
-
|
|
6
|
-
[Examples hub](./README.md)
|
|
7
|
-
|
|
8
|
-
A portable shape for Terms of Use, a Privacy Policy and consent receipts. Each
|
|
9
|
-
`(kind, revision, locale)` row is one legal artifact. Every Procedure is SQL.
|
|
10
|
-
Core does not install this or own the public pages.
|
|
11
|
-
|
|
12
|
-
## Problem
|
|
13
|
-
|
|
14
|
-
Staff add reviewed legal text as new revisions and publish them; a published
|
|
15
|
-
revision that users accepted is never rewritten. The public reads the current
|
|
16
|
-
revision for a kind and a locale. A signed-in user records acceptance of one
|
|
17
|
-
published revision, and the receipt names who and when without trusting the
|
|
18
|
-
caller.
|
|
19
|
-
|
|
20
|
-
## Manifest
|
|
21
|
-
|
|
22
|
-
```yaml
|
|
23
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
24
|
-
kind: Schema
|
|
25
|
-
metadata: { name: legal-documents }
|
|
26
|
-
spec:
|
|
27
|
-
title:
|
|
28
|
-
en: Legal documents
|
|
29
|
-
zh-TW: 法律文件
|
|
30
|
-
description:
|
|
31
|
-
en: Supply the site's complete, reviewed legal text. Never create empty, placeholder, or agent-invented terms. Create a new revision instead of rewriting a published document accepted by users.
|
|
32
|
-
zh-TW: 請填入網站已審閱的完整法律正文。不得建立空白、佔位或由 agent 虛構的條款;已有使用者同意的已發佈文件應建立新修訂,不得覆寫。
|
|
33
|
-
localized: true
|
|
34
|
-
lifecycle: publishing
|
|
35
|
-
uniqueIndexes: [[kind, revision, locale]]
|
|
36
|
-
indexes: [[kind, locale, effectiveAt]]
|
|
37
|
-
searchableFields: [title, revision]
|
|
38
|
-
schema:
|
|
39
|
-
type: object
|
|
40
|
-
readOnly: true
|
|
41
|
-
additionalProperties: false
|
|
42
|
-
required: [kind, revision, locale, title, body, effectiveAt]
|
|
43
|
-
properties:
|
|
44
|
-
kind: { type: string, enum: [terms, privacy] }
|
|
45
|
-
revision: { type: string, minLength: 1, maxLength: 100 }
|
|
46
|
-
locale: { type: string }
|
|
47
|
-
title: { type: string, minLength: 1, maxLength: 200 }
|
|
48
|
-
body:
|
|
49
|
-
type: string
|
|
50
|
-
minLength: 1
|
|
51
|
-
x-mcp-hint: markdown
|
|
52
|
-
description:
|
|
53
|
-
en: Complete reviewed legal text in Markdown; placeholders are not acceptable.
|
|
54
|
-
zh-TW: 已審閱的完整 Markdown 法律正文,不得使用佔位文字。
|
|
55
|
-
effectiveAt: { type: string, format: date-time }
|
|
56
|
-
---
|
|
57
|
-
# Public over a publishing Schema: drafts are never visible here.
|
|
58
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
59
|
-
kind: View
|
|
60
|
-
metadata: { name: current-legal-document }
|
|
61
|
-
spec:
|
|
62
|
-
title:
|
|
63
|
-
en: Current legal document
|
|
64
|
-
zh-TW: 現行法律文件
|
|
65
|
-
description: The newest published revision of one legal document in one locale.
|
|
66
|
-
surface: public
|
|
67
|
-
input:
|
|
68
|
-
type: object
|
|
69
|
-
additionalProperties: false
|
|
70
|
-
required: [kind, locale]
|
|
71
|
-
properties:
|
|
72
|
-
kind: { type: string, enum: [terms, privacy] }
|
|
73
|
-
locale: { type: string }
|
|
74
|
-
sql: |
|
|
75
|
-
SELECT id, kind, revision, locale, title, body, effectiveAt, updated_at
|
|
76
|
-
FROM "legal-documents"
|
|
77
|
-
WHERE kind = input.kind AND locale = input.locale AND effectiveAt <= now()
|
|
78
|
-
ORDER BY effectiveAt DESC LIMIT 1
|
|
79
|
-
---
|
|
80
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
81
|
-
kind: Procedure
|
|
82
|
-
metadata: { name: create-legal-document }
|
|
83
|
-
spec:
|
|
84
|
-
title:
|
|
85
|
-
en: Create legal document revision
|
|
86
|
-
zh-TW: 建立法律文件修訂
|
|
87
|
-
description:
|
|
88
|
-
en: Supply the site's complete, reviewed legal text. Never create empty, placeholder, or agent-invented terms. Create a new revision instead of rewriting a published document accepted by users.
|
|
89
|
-
zh-TW: 請填入網站已審閱的完整法律正文。不得建立空白、佔位或由 agent 虛構的條款;已有使用者同意的已發佈文件應建立新修訂,不得覆寫。
|
|
90
|
-
requires: { auth: { all: [{ ctx.staff: [owner, editor] }] } }
|
|
91
|
-
input:
|
|
92
|
-
type: object
|
|
93
|
-
additionalProperties: false
|
|
94
|
-
required: [kind, revision, locale, title, body, effectiveAt]
|
|
95
|
-
properties:
|
|
96
|
-
kind: { type: string, enum: [terms, privacy] }
|
|
97
|
-
revision: { type: string, minLength: 1, maxLength: 100 }
|
|
98
|
-
locale: { type: string }
|
|
99
|
-
title: { type: string, minLength: 1, maxLength: 200 }
|
|
100
|
-
body:
|
|
101
|
-
type: string
|
|
102
|
-
minLength: 1
|
|
103
|
-
x-mcp-hint: markdown
|
|
104
|
-
description:
|
|
105
|
-
en: Complete reviewed legal text in Markdown; placeholders are not acceptable.
|
|
106
|
-
zh-TW: 已審閱的完整 Markdown 法律正文,不得使用佔位文字。
|
|
107
|
-
effectiveAt: { type: string, format: date-time }
|
|
108
|
-
output: { type: object }
|
|
109
|
-
handler:
|
|
110
|
-
sql: |
|
|
111
|
-
INSERT INTO "legal-documents" (kind, revision, locale, title, body, effectiveAt)
|
|
112
|
-
VALUES (input.kind, input.revision, input.locale, input.title, input.body, input.effectiveAt)
|
|
113
|
-
RETURNING id, revision
|
|
114
|
-
---
|
|
115
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
116
|
-
kind: Trigger
|
|
117
|
-
metadata: { name: create-legal-document-staff }
|
|
118
|
-
spec:
|
|
119
|
-
source: { kind: mcp, surface: staff }
|
|
120
|
-
target: { procedure: create-legal-document }
|
|
121
|
-
---
|
|
122
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
123
|
-
kind: Schema
|
|
124
|
-
metadata: { name: legal-acceptances }
|
|
125
|
-
spec:
|
|
126
|
-
title:
|
|
127
|
-
en: Legal acceptances
|
|
128
|
-
zh-TW: 法律文件同意紀錄
|
|
129
|
-
description:
|
|
130
|
-
en: Append-only receipts bound by the server to the signed-in user and acceptance time.
|
|
131
|
-
zh-TW: 由伺服器綁定登入使用者與同意時間的唯增紀錄。
|
|
132
|
-
lifecycle: operational
|
|
133
|
-
uniqueIndexes: [[documentId, userId]]
|
|
134
|
-
indexes: [[userId]]
|
|
135
|
-
schema:
|
|
136
|
-
type: object
|
|
137
|
-
readOnly: true
|
|
138
|
-
additionalProperties: false
|
|
139
|
-
required: [documentId, userId]
|
|
140
|
-
properties:
|
|
141
|
-
documentId: { type: string, x-mantle-ref: legal-documents }
|
|
142
|
-
userId: { type: string }
|
|
143
|
-
---
|
|
144
|
-
# A conditional INSERT ... SELECT: it writes a receipt only for a published revision, and a repeat acceptance is ignored.
|
|
145
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
146
|
-
kind: Procedure
|
|
147
|
-
metadata: { name: accept-legal-document }
|
|
148
|
-
spec:
|
|
149
|
-
title:
|
|
150
|
-
en: Accept legal document
|
|
151
|
-
zh-TW: 同意法律文件
|
|
152
|
-
description:
|
|
153
|
-
en: Record the signed-in user's acceptance of one published legal document revision.
|
|
154
|
-
zh-TW: 記錄登入使用者對一份已發佈法律文件修訂的同意。
|
|
155
|
-
requires: { auth: { all: [ctx.user] } }
|
|
156
|
-
input:
|
|
157
|
-
type: object
|
|
158
|
-
additionalProperties: false
|
|
159
|
-
required: [documentId]
|
|
160
|
-
properties:
|
|
161
|
-
documentId: { type: string, x-mantle-ref: legal-documents }
|
|
162
|
-
output: { type: object }
|
|
163
|
-
handler:
|
|
164
|
-
sql: |
|
|
165
|
-
INSERT INTO "legal-acceptances" (documentId, userId)
|
|
166
|
-
SELECT d.id, auth.uid() FROM "legal-documents" d
|
|
167
|
-
WHERE d.id = input.documentId AND d.status = 'published'
|
|
168
|
-
ON CONFLICT (documentId, userId) DO NOTHING
|
|
169
|
-
RETURNING id
|
|
170
|
-
---
|
|
171
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
172
|
-
kind: Trigger
|
|
173
|
-
metadata: { name: accept-legal-document-http }
|
|
174
|
-
spec:
|
|
175
|
-
source: { kind: http, method: POST, path: /api/legal/acceptances }
|
|
176
|
-
target: { procedure: accept-legal-document }
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
How the guarantees are made:
|
|
180
|
-
|
|
181
|
-
- **Who and when are the server's.** `accept-legal-document` writes
|
|
182
|
-
`auth.uid()` as `userId`, and the acceptance time is the native
|
|
183
|
-
`created_at`. The input carries only `documentId`.
|
|
184
|
-
- **Only a published revision can be accepted.** The `INSERT … SELECT` writes
|
|
185
|
-
a row only when the document exists and is published. It is a set op, so
|
|
186
|
-
writing nothing is a normal result: `results` is `[[]]` for a draft, an
|
|
187
|
-
unknown id or a repeat acceptance. The client checks for a returned `id`.
|
|
188
|
-
- **Revisions are immutable through generic surfaces.** The root
|
|
189
|
-
`readOnly: true` keeps Admin from offering generic edits, and the unique
|
|
190
|
-
`(kind, revision, locale)` index makes a new revision a new row. It is not a
|
|
191
|
-
storage lock: host code with `runtime.store` can still rewrite a row, so do
|
|
192
|
-
not write to this Schema from your own code.
|
|
193
|
-
- **Agents are told not to invent terms.** The English Procedure description
|
|
194
|
-
is the staff MCP tool's description.
|
|
195
|
-
- **`effectiveAt <= now()`** lets staff publish a revision ahead of the day it
|
|
196
|
-
takes effect.
|
|
197
|
-
|
|
198
|
-
Do not add an MCP Trigger for `accept-legal-document`: accepting terms is an
|
|
199
|
-
explicit action in the application's own interface.
|
|
200
|
-
|
|
201
|
-
## Handlers
|
|
202
|
-
|
|
203
|
-
None.
|
|
204
|
-
|
|
205
|
-
## Serving the pages
|
|
206
|
-
|
|
207
|
-
Serve `/terms` and `/privacy` from the service's own `fetch`: with the caller
|
|
208
|
-
your `CallerResolver` returned, call
|
|
209
|
-
`runtime.store.as(caller).view("current-legal-document", { input: { kind, locale } })`
|
|
210
|
-
for the requested locale, fall back to the site's default
|
|
211
|
-
locale, and render the Markdown as sanitized HTML. Answer with a clear
|
|
212
|
-
unavailable page when no revision is published. The application owns the
|
|
213
|
-
consent checkbox, sign-in, retention and export policy.
|
|
214
|
-
|
|
215
|
-
## Source
|
|
216
|
-
|
|
217
|
-
- [Publication](./publication.md): the localized publishing pattern
|
|
218
|
-
- [Authorization](../handbook/concepts/authorization.md): server-bound identity
|