@aotter/mantle 0.2.0-alpha.5 → 0.2.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +28 -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 -103
- 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 -183
- 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 +20 -0
- package/docs/handbook/guides/admin-ui.md +5 -163
- 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 -30
- 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 -78
- package/docs/handbook/reference/features.md +45 -53
- package/docs/handbook/reference/manifest.md +6 -69
- package/docs/handbook/reference/procedure.md +9 -117
- package/docs/handbook/reference/schema.md +65 -172
- package/docs/handbook/reference/site-config.md +5 -65
- package/docs/handbook/reference/surface.md +279 -93
- package/docs/handbook/reference/trigger.md +24 -93
- package/docs/handbook/reference/view.md +32 -158
- package/docs/handbook/releases/index.md +124 -15
- package/docs/handbook/start/overview.md +9 -56
- package/docs/handbook/start/project-and-cli.md +40 -141
- package/docs/handbook/start/quickstart-worker.md +38 -116
- package/docs/skills/develop/SKILL.md +34 -117
- 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 -88
- package/docs/skills/update/SKILL.md +19 -40
- package/docs/source/scripts/postgres-adapter.ts +101 -0
- package/docs/upgrade-0.1-to-0.2.md +26 -10
- package/package.json +97 -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 -22
- package/dist/admin/createAdminSurface.d.ts.map +0 -1
- package/dist/admin/createAdminSurface.js +0 -592
- 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/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 -6
- package/dist/admin/index.d.ts.map +0 -1
- package/dist/admin/index.js +0 -6
- 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 -4566
- package/dist/auth/buildAuth.d.ts.map +0 -1
- package/dist/auth/buildAuth.js +0 -311
- package/dist/auth/buildAuth.js.map +0 -1
- package/dist/auth/callerResolver.d.ts +0 -48
- package/dist/auth/callerResolver.d.ts.map +0 -1
- package/dist/auth/callerResolver.js +0 -49
- 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 -503
- package/dist/auth/createMantleAuth.js.map +0 -1
- package/dist/auth/db.d.ts +0 -17
- package/dist/auth/db.d.ts.map +0 -1
- package/dist/auth/db.js +0 -24
- 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 -65
- package/dist/bun/index.d.ts.map +0 -1
- package/dist/bun/index.js +0 -130
- 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 -353
- package/dist/cli/preset.js.map +0 -1
- package/dist/cloudflare/index.d.ts +0 -21
- package/dist/cloudflare/index.d.ts.map +0 -1
- package/dist/cloudflare/index.js +0 -14
- 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 -41
- 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 -17
- 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/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 -65
- package/dist/core/sql/allowlist.d.ts.map +0 -1
- package/dist/core/sql/allowlist.js +0 -705
- 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 -121
- package/dist/core/sql/policy.d.ts.map +0 -1
- package/dist/core/sql/policy.js +0 -379
- 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 -76
- package/dist/core/sql/run.d.ts.map +0 -1
- package/dist/core/sql/run.js +0 -267
- 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 -13
- package/dist/d1/executor.d.ts.map +0 -1
- package/dist/d1/executor.js +0 -91
- 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 -20
- package/dist/postgres/adapter.d.ts.map +0 -1
- package/dist/postgres/adapter.js +0 -44
- 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 -92
- package/dist/postgres/driver.d.ts.map +0 -1
- package/dist/postgres/driver.js +0 -110
- package/dist/postgres/driver.js.map +0 -1
- package/dist/postgres/executor.d.ts +0 -20
- package/dist/postgres/executor.d.ts.map +0 -1
- package/dist/postgres/executor.js +0 -69
- package/dist/postgres/executor.js.map +0 -1
- package/dist/postgres/index.d.ts +0 -7
- package/dist/postgres/index.d.ts.map +0 -1
- package/dist/postgres/index.js +0 -7
- 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 -157
- 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 -121
- package/dist/postgres/print.js.map +0 -1
- package/dist/postgres/storage.d.ts +0 -19
- package/dist/postgres/storage.d.ts.map +0 -1
- package/dist/postgres/storage.js +0 -201
- package/dist/postgres/storage.js.map +0 -1
- package/dist/postgres/textRows.d.ts +0 -10
- package/dist/postgres/textRows.d.ts.map +0 -1
- package/dist/postgres/textRows.js +0 -44
- package/dist/postgres/textRows.js.map +0 -1
- package/dist/postgres/validator.d.ts +0 -12
- package/dist/postgres/validator.d.ts.map +0 -1
- package/dist/postgres/validator.js +0 -46
- 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 -149
- 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 -42
- package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/SchemaAdminUiChecker.js +0 -289
- 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 -53
- 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 -282
- 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 -296
- 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 -12
- package/dist/testing/cases/corpus.d.ts.map +0 -1
- package/dist/testing/cases/corpus.js +0 -91
- package/dist/testing/cases/corpus.js.map +0 -1
- package/dist/testing/cases/policy.d.ts +0 -74
- package/dist/testing/cases/policy.d.ts.map +0 -1
- package/dist/testing/cases/policy.js +0 -142
- 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 -32
- 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 -33
- 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 -124
- package/docs/adr/0038-bun-native-host.md +0 -63
- package/docs/adr/README.md +0 -96
- 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 -481
- 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,198 +1,30 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Native execution, database handles, two SQL dialects and application-owned migrations.
|
|
3
3
|
---
|
|
4
|
-
# Runtime
|
|
4
|
+
# Runtime and databases
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
src/index.ts (host entry) ─▶ mantle = createMantle(service, { plan, storage, schedules })
|
|
8
|
-
│ first request: createMantleRuntime → storage.prepare(plan)
|
|
9
|
-
▼
|
|
10
|
-
service.fetch(request, env, { runtime, waitUntil })
|
|
11
|
-
└ surfaces / your routes ─▶ runtime.invokeProcedure · runtime.store
|
|
12
|
-
└ Store: policy rewrite → dialect check → StoreExecutor
|
|
13
|
-
```
|
|
6
|
+
`mantle generate` compiles manifest SQL and row policy into ordinary TypeScript and SQL. Generated Views and Procedures call the target's native driver. The app owns routing, authentication, handles, connection lifetime and deployment. Import only the operations and surfaces you use.
|
|
14
7
|
|
|
15
|
-
##
|
|
8
|
+
## Schema installation and migrations
|
|
16
9
|
|
|
17
|
-
|
|
18
|
-
createMantle(service, { plan, storage: (env) => MantleStorageAdapter, schedules?, expectedFingerprint? })
|
|
19
|
-
// → { fetch(request, env, ctx?), invokeSchedule(cron, scheduledTime, env, ctx?), runDeferredHook(message, env, ctx?) }
|
|
20
|
-
// runDeferredHook replays an after-hook Invocation from your own queue; nothing in Mantle emits one
|
|
21
|
-
```
|
|
10
|
+
The runtime never creates, alters or checks tables. Boot and requests run no DDL, introspection or schema checks.
|
|
22
11
|
|
|
23
|
-
|
|
24
|
-
WinterTC fetch the application owns. Mantle owns no route of its own: the
|
|
25
|
-
service decides what is mounted where.
|
|
26
|
-
- The runtime boots lazily on the first call, once per isolate. A failed boot
|
|
27
|
-
is retried by the next request.
|
|
28
|
-
- Each entry call binds its own `ctx.waitUntil` to the runtime facade handed
|
|
29
|
-
to the service. Handler calls, nested invocations and Store lifecycle hooks
|
|
30
|
-
retain work on that entry's context, including concurrent requests. Calls
|
|
31
|
-
without a context do not borrow another request's retainer.
|
|
32
|
-
- `invokeSchedule` runs every enabled schedule Trigger whose cron is exactly
|
|
33
|
-
the given POSIX expression, as the system caller.
|
|
34
|
-
- The host entry is a few lines the generator writes once
|
|
35
|
-
([The service and its entry](../cloudflare/service-entry.md)); Core handles
|
|
36
|
-
no platform event types.
|
|
12
|
+
For the first install, apply generated `schema.sql`, including selected auth/site DDL, to an empty database. Apply selected seed SQL explicitly.
|
|
37
13
|
|
|
38
|
-
`
|
|
39
|
-
and custom hosts. The runtime exposes `plan`, `store`, `invokeProcedure`,
|
|
40
|
-
`bootReport()` (`{ fingerprint, coreVersion }`) and, with site defaults,
|
|
41
|
-
`site`.
|
|
14
|
+
For every later schema change, the application's coding agent diffs the regenerated `schema.sql`, writes a migration with the host's native tool (`wrangler d1 migrations` or the app's PostgreSQL migration tool), rehearses it on a copy, and applies it before deploying the new code. Cloud executes migrations at deploy time.
|
|
42
15
|
|
|
43
|
-
|
|
16
|
+
Destructive changes and type changes need explicit data migration. Mantle drops nothing. Initial `schema.sql` is not an upgrade script.
|
|
44
17
|
|
|
45
|
-
|
|
18
|
+
## Drivers and dialects
|
|
46
19
|
|
|
47
|
-
|
|
48
|
-
in the plan (`HANDLER_NOT_DECLARED`);
|
|
49
|
-
- the plan was compiled for another dialect, or does not match
|
|
50
|
-
`expectedFingerprint` (`PLAN_FINGERPRINT_MISMATCH`);
|
|
51
|
-
- an enabled schedule exists without `schedules: true` (`SCHEDULE_NOT_WIRED`);
|
|
52
|
-
- storage has a change it cannot make (`STORAGE_CHANGE_BLOCKED`), or a table
|
|
53
|
-
Mantle would create already exists without being Mantle's
|
|
54
|
-
(`STORAGE_TABLE_NOT_OWNED`).
|
|
20
|
+
The driver layer is open: handles are structural contracts, not a registration API. PostgreSQL needs `unsafe(text, values)` and `begin(options, fn)` from `@aotter/mantle/contracts`; SQLite uses D1's prepare/bind/all/batch shape or bun:sqlite's query/transaction shape. Bun.SQL and postgres.js fit directly. See [adapting a driver](../guides/postgres-adapters.md).
|
|
55
21
|
|
|
56
|
-
|
|
22
|
+
Users may supply anything that executes the emitted SQL, including WASM SQLite persisted to IndexedDB, at their own risk. Mantle promises behavior only on supported drivers: bun:sqlite, D1, Bun.SQL and postgres.js. A structural match alone does not prove transaction, result or error semantics.
|
|
57
23
|
|
|
58
|
-
|
|
59
|
-
differs from the one the database last booted, boot reads the database's
|
|
60
|
-
actual tables and indexes, compares them with the plan, and:
|
|
24
|
+
The dialect layer is closed in 0.2.0: exactly `postgres` and `sqlite`, selected by the generation target. SQL is rendered at generation time. A third engine requires forking the compiler and Store runtime; it is not a dialect plugin.
|
|
61
25
|
|
|
62
|
-
|
|
63
|
-
|---|---|
|
|
64
|
-
| a missing table, field column, index, or unique index that builds | creates it (on SQLite, `STRICT` tables with their check and FTS triggers) |
|
|
65
|
-
| a unique index that fails on existing rows, a column with another type, a changed index, a missing native column | refuses with `STORAGE_CHANGE_BLOCKED`, naming the change and a SQL hint |
|
|
66
|
-
| a column or non-unique index the plan no longer declares | keeps it and warns; nothing is ever dropped |
|
|
26
|
+
## Store and queries
|
|
67
27
|
|
|
68
|
-
|
|
69
|
-
yourself. A blocked change is the author's to make (SQL through the host's own
|
|
70
|
-
tool, a data-copy Procedure, a dedupe), then boot checks again. With the same
|
|
71
|
-
fingerprint boot reads nothing. `mantle generate --check --database <file>`
|
|
72
|
-
prints the same diff against a local database without applying it.
|
|
28
|
+
Use the [Store for writes and simple lookups, internal Views for richer reads](../guides/typed-queries.md). Store metadata initializes once on first `store()` use without SQL. Each call binds a fresh handle, verified Caller and handlers; never reuse a caller-bound Store across requests.
|
|
73
29
|
|
|
74
|
-
|
|
75
|
-
`media_assets`, `pending_media_uploads`) keep versioned migrations of their
|
|
76
|
-
own. Identity `mantle` migrates Better Auth's tables through Better Auth.
|
|
77
|
-
|
|
78
|
-
## The D1 dialect
|
|
79
|
-
|
|
80
|
-
The SQL language is PostgreSQL syntax, pinned to PostgreSQL 18's parser. A
|
|
81
|
-
**dialect** decides which of it an engine runs and how. The built-in dialect,
|
|
82
|
-
`@aotter/mantle/d1`, runs on SQLite as D1 does: its compile side refuses what
|
|
83
|
-
D1 cannot compute exactly, and its runtime side prints SQLite, encodes types
|
|
84
|
-
and converges storage.
|
|
85
|
-
|
|
86
|
-
- `date-time` (and `created_at` / `updated_at`) is stored as microseconds,
|
|
87
|
-
`date` as days, `numeric(p, s)` as an integer of the smallest unit, so
|
|
88
|
-
arithmetic is exact on D1. On the wire a date-time is an ISO string.
|
|
89
|
-
- `checks` are enforced by triggers. `x-mantle-ref` is checked by
|
|
90
|
-
`mantle generate` and used by Admin; storage does not enforce it in 0.2.0.
|
|
91
|
-
`searchableFields` uses
|
|
92
|
-
an FTS5 trigram index; `format: geo` uses an R*Tree.
|
|
93
|
-
- `date_trunc` and `extract` compute in the site time zone
|
|
94
|
-
(`d1Storage(db, { timeZone })`, default UTC).
|
|
95
|
-
|
|
96
|
-
`mantle.config.json` names the dialect (`sqlite`, `postgres`, or another dialect package, which must pass
|
|
97
|
-
`runStorageConformance` from `@aotter/mantle/testing`). A plan records its
|
|
98
|
-
dialect, and boot refuses a plan compiled for another one.
|
|
99
|
-
|
|
100
|
-
## The PostgreSQL dialect
|
|
101
|
-
|
|
102
|
-
`"dialect": "postgres"` in `mantle.config.json` compiles the plan for
|
|
103
|
-
PostgreSQL (13 or later). On Cloudflare, `mantle generate --dialect postgres`
|
|
104
|
-
writes the preset over Hyperdrive; on any other platform, add `"host": "none"`
|
|
105
|
-
and compose `createMantle` with `postgresStorage` yourself (ADR-0036). PostgreSQL
|
|
106
|
-
is Mantle SQL's reference dialect (ADR-0037): it accepts D1's subset without
|
|
107
|
-
SQLite's own `typeof`, `hex`, `json_extract`, `json_set`, `json_insert` and
|
|
108
|
-
`json_remove` (write `x ->> '$.path'`), plus `WITH`, set operations, `LATERAL`,
|
|
109
|
-
window frames, `FILTER`, jsonb operators and the rest of the
|
|
110
|
-
[View reference](../reference/view.md)'s PostgreSQL table. A manifest that uses
|
|
111
|
-
them no longer compiles for D1; one that does not moves between engines with a
|
|
112
|
-
recompile.
|
|
113
|
-
|
|
114
|
-
- Columns have native types: `timestamptz`, `date`, `numeric(p, s)`, `boolean`,
|
|
115
|
-
`jsonb`, `bigint` and `double precision`. Values are decoded by the type
|
|
116
|
-
PostgreSQL reports, so computed outputs (`now()`, `date_trunc`, a `CAST`) come
|
|
117
|
-
back as wire values too: ISO date-times, booleans, parsed JSON.
|
|
118
|
-
- Every write batch is one `SERIALIZABLE` transaction, retried on a
|
|
119
|
-
serialization failure, so a guard such as `WHERE NOT EXISTS` holds under
|
|
120
|
-
concurrent writers as it does on SQLite's single writer.
|
|
121
|
-
- `checks` are `CHECK` constraints added `NOT VALID`: they bind every later
|
|
122
|
-
write and leave older rows alone, like D1's triggers.
|
|
123
|
-
- `json_each`, `->>` and `CAST(x AS bool)` read as they do on D1 through small
|
|
124
|
-
SQL functions Mantle creates (`_mantle_json_each`, `_mantle_jget`,
|
|
125
|
-
`_mantle_bool`). `json_group_array` and `json_group_object` order by value.
|
|
126
|
-
- Results match D1 where Mantle decides them. Text columns use `COLLATE "C"`,
|
|
127
|
-
so they compare by code point. An `ORDER BY` key without `NULLS FIRST/LAST`
|
|
128
|
-
puts NULL first ascending, as Core pages every View. Values never depend on
|
|
129
|
-
the server's `DateStyle`, `IntervalStyle` or `TimeZone`. Elsewhere the meaning
|
|
130
|
-
is PostgreSQL's, where D1 differs:
|
|
131
|
-
- `LIKE` is case-sensitive.
|
|
132
|
-
- Division by zero is an error.
|
|
133
|
-
- `->>` returns text.
|
|
134
|
-
- `||` prints booleans and floats as PostgreSQL does.
|
|
135
|
-
- `searchableFields` and `mantle.near()` scan without an index in 0.2.0, and
|
|
136
|
-
`mantle.search_rank()` counts occurrences rather than computing bm25.
|
|
137
|
-
Site settings and media are SQLite-only (D1, bun:sqlite).
|
|
138
|
-
- `date_trunc` and `extract` compute in the site time zone
|
|
139
|
-
(`postgresStorage({ connect, timeZone })`, default UTC).
|
|
140
|
-
- Every statement has a `statement_timeout` of 10 seconds, pinned in each
|
|
141
|
-
transaction (`statementTimeoutMs`; 0 is none). Storage convergence has none.
|
|
142
|
-
A statement past it fails with `RESOURCE_UNAVAILABLE` and writes nothing.
|
|
143
|
-
- Connect as a role that owns the service's tables but is not a superuser and
|
|
144
|
-
holds no file or server privilege (`pg_read_server_files`,
|
|
145
|
-
`pg_execute_server_program`). Mantle's allowlist refuses such functions; the
|
|
146
|
-
role is the second line.
|
|
147
|
-
|
|
148
|
-
## Storage adapters
|
|
149
|
-
|
|
150
|
-
| Adapter | From | Driver |
|
|
151
|
-
|---|---|---|
|
|
152
|
-
| `d1Storage(env.DB, { timeZone?, site? })` | `@aotter/mantle/cloudflare` | Cloudflare D1, the one the preset uses |
|
|
153
|
-
| `sqliteStorage(driver, { timeZone?, maxBindings?, site?, restrict? })` | `@aotter/mantle/d1` | any `DatabaseDriver`: `{ batch(statements) }`, all or nothing |
|
|
154
|
-
| `postgresStorage({ connect, timeZone?, statementTimeoutMs?, restrict? })` | `@aotter/mantle/postgres` | `connect` opens one node-postgres (`pg`) client; Hyperdrive on Workers |
|
|
155
|
-
| `bunPostgresStorage(sql, { timeZone?, statementTimeoutMs?, restrict? })` | `@aotter/mantle/bun` | a Bun.SQL pool with `prepare: false`; its role needs TEMPORARY (ADR-0038) |
|
|
156
|
-
| `bunSqliteStorage(db, { timeZone?, site?, restrict? })` | `@aotter/mantle/bun` | a bun:sqlite `Database`; foreign keys are turned on |
|
|
157
|
-
|
|
158
|
-
`restrict(plan, context)` returns refusals of its own, run after the dialect's
|
|
159
|
-
on every program at runtime. It only narrows what runs, for an operator that
|
|
160
|
-
runs other people's plans; a self-hosted service leaves it out (ADR-0037).
|
|
161
|
-
|
|
162
|
-
On Workers, PostgreSQL goes through Hyperdrive, which pools the connections, so
|
|
163
|
-
`connect` opens a client per operation (a socket must not outlive its request):
|
|
164
|
-
|
|
165
|
-
```ts
|
|
166
|
-
import pg from "pg";
|
|
167
|
-
import { pgDatabaseDriver, pgPool, postgresStorage } from "@aotter/mantle/postgres";
|
|
168
|
-
|
|
169
|
-
const connect = (env: Env) => async () => {
|
|
170
|
-
const client = new pg.Client({ connectionString: env.HYPERDRIVE.connectionString });
|
|
171
|
-
await client.connect();
|
|
172
|
-
return client;
|
|
173
|
-
};
|
|
174
|
-
// storage: (env) => postgresStorage({ connect: connect(env) })
|
|
175
|
-
// identity: createMantleAuth({ database: pgPool(connect(env)), driver: pgDatabaseDriver(connect(env)), ... })
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
The Worker needs `compatibility_flags: ["nodejs_compat"]` for `pg`. Mantle runs
|
|
179
|
-
every read in a transaction, which Hyperdrive never answers from its cache.
|
|
180
|
-
Better Auth's reads (sessions, roles) do not, so create the Hyperdrive config
|
|
181
|
-
with caching disabled (`wrangler hyperdrive create … --caching-disabled`), or a
|
|
182
|
-
revoked session can be accepted until the cache expires. `timeZone` must be an
|
|
183
|
-
IANA name: PostgreSQL reads an offset such as `+08:00` with the opposite sign.
|
|
184
|
-
|
|
185
|
-
Bun has a generated preset for both engines (`mantle generate --host bun`,
|
|
186
|
-
ADR-0038); `bunDatabaseDriver` / `bunAuthDatabase` and `bunSqliteDriver` give
|
|
187
|
-
Better Auth the same store. A `DatabaseDriver` is one method, so another engine
|
|
188
|
-
(libSQL, for example) is a few lines of application code on `host: none`: the
|
|
189
|
-
entry calls `createMantle` and its own server.
|
|
190
|
-
|
|
191
|
-
`site` turns on the site capability (site settings and media); see
|
|
192
|
-
[Site defaults and site_config](../reference/site-config.md).
|
|
193
|
-
|
|
194
|
-
## Testing a service
|
|
195
|
-
|
|
196
|
-
Run the service under `wrangler dev` against a fresh local D1 and drive it over
|
|
197
|
-
HTTP, as the [reference service](../../examples/reference-service/README.md)'s
|
|
198
|
-
`smoke.mjs` does.
|
|
30
|
+
[Native execution](../guides/native-execution.md) defines input ownership, native result values, atomicity and uncertain write outcomes.
|
|
@@ -1,116 +1,17 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: How a View's SQL SELECT is compiled, which policies the runtime injects, and how REST, MCP, Admin and Store serve it with limit and cursor paging.
|
|
3
|
-
---
|
|
4
1
|
# Reads: Views, REST and MCP
|
|
5
2
|
|
|
6
|
-
A View
|
|
3
|
+
A View declares one PostgreSQL-syntax SELECT over declared Schemas or reusable internal Views. Generation parses, checks and lowers it for postgres or sqlite, adds row policy, and emits a typed function. Requests bind values and execute SQL; they do not parse or compile manifests.
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
10
|
-
kind: View
|
|
11
|
-
metadata: { name: my-orders }
|
|
12
|
-
spec:
|
|
13
|
-
surface: public
|
|
14
|
-
requires: { auth: { all: [ctx.user] } }
|
|
15
|
-
sql: |
|
|
16
|
-
SELECT o.id, o.qty, o.orderStatus, i.name AS item, o.version
|
|
17
|
-
FROM orders o JOIN items i ON i.id = o.itemId
|
|
18
|
-
ORDER BY o.created_at DESC
|
|
19
|
-
```
|
|
5
|
+
Use internal Views for joins, aggregates, OR and reusable reads. Simple handler id lookups and AND filters can use Store. See [query from TypeScript](../guides/typed-queries.md) for a complete example.
|
|
20
6
|
|
|
21
|
-
|
|
7
|
+
| Surface | Exposure when mounted |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| public | REST `/api/views/<name>` and public MCP |
|
|
10
|
+
| admin | Admin View API and admin MCP |
|
|
11
|
+
| internal | Generated operation only; no public route/tool |
|
|
22
12
|
|
|
23
|
-
|
|
24
|
-
dialect does not support (with the position in the statement), and stores the
|
|
25
|
-
parse tree as the View's IR in the plan. No running service parses SQL. At run time the
|
|
26
|
-
runtime validates the IR against the same allowlist, injects policy, and the
|
|
27
|
-
dialect prints its engine's SQL (SQLite for D1).
|
|
13
|
+
Every generated invocation retains its `requires`. SQL row policy limits scope, TTL and publishing visibility at every relation. The app supplies a verified Caller.
|
|
28
14
|
|
|
29
|
-
|
|
30
|
-
has the full table):
|
|
15
|
+
Bare Views return native row arrays. Declared date/date-time columns are formatted by SQL; other values retain driver behavior. Proved pageable Views also get `paged/views/<encoded-name>.ts`, returning `{ rows, nextCursor? }`. Internal paging creates no exposure. Keyset paging requires generate-time order/cardinality proofs; it does not avoid the source scan for an aggregate. Inspect native EXPLAIN and indexes.
|
|
31
16
|
|
|
32
|
-
|
|
33
|
-
integer literals: use `round(x)`), JSON `->>`;
|
|
34
|
-
- `WHERE` with comparisons, `BETWEEN`, `IN (list | subquery)`, `EXISTS`,
|
|
35
|
-
`LIKE` (case-insensitive, as in SQLite), `IS DISTINCT FROM`;
|
|
36
|
-
- `INNER` and `LEFT JOIN`, subqueries, `json_each(…)`;
|
|
37
|
-
- `GROUP BY`, `HAVING`, `count`, `sum`, `min`, `max`, `avg`,
|
|
38
|
-
`json_group_array`, `json_group_object`; `row_number()`, `rank()` and running
|
|
39
|
-
aggregates;
|
|
40
|
-
- `ORDER BY … NULLS FIRST | LAST`, `LIMIT` (it needs an `ORDER BY`),
|
|
41
|
-
`DISTINCT`;
|
|
42
|
-
- `now()`, `date_trunc`, `extract`, `ts ± interval '<n> seconds|minutes|hours'`;
|
|
43
|
-
- `mantle.search`, `mantle.search_rank`, `mantle.near`, `mantle.distance`.
|
|
44
|
-
|
|
45
|
-
Refused: `OFFSET` (page with cursors), `RIGHT`/`FULL`/`CROSS JOIN`, any table
|
|
46
|
-
that is not a declared Schema, and SQLite's own clock (`CURRENT_TIMESTAMP`,
|
|
47
|
-
`'now'`).
|
|
48
|
-
|
|
49
|
-
PostgreSQL is the reference dialect (ADR-0037): on it a View may also use `WITH`
|
|
50
|
-
(recursive too), `UNION` and `DISTINCT ON` inside a `WITH` or subquery,
|
|
51
|
-
`LATERAL`, window frames, `FILTER`, jsonb operators, `ILIKE` and regular
|
|
52
|
-
expressions. D1 refuses them as needing the PostgreSQL dialect. On every
|
|
53
|
-
dialect a View may read an internal View in `FROM`, which is inlined; that is
|
|
54
|
-
how a rule many Views share is written once.
|
|
55
|
-
|
|
56
|
-
## Policies the runtime injects
|
|
57
|
-
|
|
58
|
-
Every Schema reference, in `FROM`, joins and subqueries, is replaced by a
|
|
59
|
-
subquery that keeps only visible rows:
|
|
60
|
-
|
|
61
|
-
- **scope**: on a scoped Schema, a user caller's own rows (an anonymous caller
|
|
62
|
-
sees none);
|
|
63
|
-
- **TTL**: unexpired rows;
|
|
64
|
-
- **published-only**: on a `public` View, published rows of `publishing`
|
|
65
|
-
Schemas.
|
|
66
|
-
|
|
67
|
-
So the join in `my-orders` sees only the caller's orders, and the View never
|
|
68
|
-
says so. A public View that joins a Schema without `publishing` to one with it
|
|
69
|
-
must join them by an explicit condition, or validation refuses it.
|
|
70
|
-
|
|
71
|
-
## Output names and types
|
|
72
|
-
|
|
73
|
-
- A column that reads a Schema field unchanged comes back under the field's
|
|
74
|
-
declared name and type (`o.orderStatus` is `orderStatus`).
|
|
75
|
-
- Anything else keeps its alias. SQL folds unquoted names to lower case, so
|
|
76
|
-
`count(o.id) AS orderCount` comes back as `ordercount`; write
|
|
77
|
-
`AS "orderCount"` to keep the case.
|
|
78
|
-
- `*` expands to the declared fields, never the scope field or native columns.
|
|
79
|
-
- The generated `ViewRow_<name>` types each column the same way; an expression
|
|
80
|
-
is `unknown`.
|
|
81
|
-
|
|
82
|
-
## Surfaces
|
|
83
|
-
|
|
84
|
-
| `surface` | Served at |
|
|
85
|
-
|---|---|
|
|
86
|
-
| `public` | `GET /api/views/<name>` (REST) and a tool on the public MCP surface (`/mcp`) |
|
|
87
|
-
| `staff` | `GET /admin/api/views/<name>`, with CSV at `/export`, and a tool on the staff MCP surface (`/mcp/staff`) |
|
|
88
|
-
| `internal` | no surface: `ctx.store.view(...)` and `runtime.store` only |
|
|
89
|
-
|
|
90
|
-
`requires` gates every path: an anonymous caller is 401 `UNAUTHENTICATED`, a
|
|
91
|
-
signed-in one who fails a predicate is 403 `AUTH_DENIED`. A staff View still
|
|
92
|
-
needs its own `requires` to limit roles beyond Admin's gate.
|
|
93
|
-
|
|
94
|
-
## Input and paging
|
|
95
|
-
|
|
96
|
-
`input` is a JSON Schema object; the SQL reads `input.<name>`. Over REST the
|
|
97
|
-
properties are query parameters, coerced to their declared types; a missing
|
|
98
|
-
required one is 400 `INPUT_VALIDATION_FAILED`. `limit` and `cursor` are
|
|
99
|
-
reserved names.
|
|
100
|
-
|
|
101
|
-
Every surface pages the same way: `limit` (default 50, at most 500) and an
|
|
102
|
-
opaque `cursor`. The response is `{ "rows": [...], "nextCursor": "…" }`, with
|
|
103
|
-
`nextCursor` only when more rows exist. The compiler appends `id` to the
|
|
104
|
-
`ORDER BY` so the order is total. A View's own `LIMIT` caps the whole result.
|
|
105
|
-
|
|
106
|
-
## MCP
|
|
107
|
-
|
|
108
|
-
Each View of a surface is a read-only tool named after it in snake case
|
|
109
|
-
(`my-orders` is `my_orders`), whose input is the View's `input` plus `limit`
|
|
110
|
-
and `cursor`. `description` becomes the tool's description. See
|
|
111
|
-
[MCP and agents](./mcp-and-agents.md).
|
|
112
|
-
|
|
113
|
-
## Further reading
|
|
114
|
-
|
|
115
|
-
- [View reference](../reference/view.md)
|
|
116
|
-
- [Query from TypeScript](../guides/typed-queries.md)
|
|
17
|
+
See the [View reference](../reference/view.md), [surface contracts](../reference/surface.md) and [native value contract](../guides/native-execution.md).
|
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Index of the Mantle 0.2.0 examples — whole services in the v2 grammar, each compiled by mantle generate, and the runnable reference service.
|
|
3
|
-
---
|
|
4
1
|
# Examples
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
its handlers are written against the generated types. They live beside this
|
|
8
|
-
handbook in [`docs/examples/`](../../examples/README.md).
|
|
3
|
+
Use the [Worker quickstart](../start/quickstart-worker.md) for a complete native manifest and entry, [typed queries](../guides/typed-queries.md) for embedding, and [service composition](../cloudflare/service-entry.md) for optional surfaces.
|
|
9
4
|
|
|
10
|
-
|
|
11
|
-
|---|---|
|
|
12
|
-
| [Reference service](../../examples/reference-service/README.md) | a runnable service with its smoke test: scope, SQL Views and Procedures, hooks, a cron, REST, both MCP surfaces, Admin's API and sign-in |
|
|
13
|
-
| [Intake form](../../examples/intake.md) | an anonymous form: one SQL `INSERT` and a staff View |
|
|
14
|
-
| [Intake with bot check and notification](../../examples/intake-hooks.md) | a guard and an after hook |
|
|
15
|
-
| [Reservation requests](../../examples/reservation.md) | a request queue with a `check` |
|
|
16
|
-
| [Publication](../../examples/publication.md) | localized posts, per-locale Views and `mantle.search` |
|
|
17
|
-
| [Legal documents and consent](../../examples/legal-documents.md) | immutable revisions and a conditional insert |
|
|
18
|
-
| [Procurement approvals](../../examples/procurement.md) | own rows through `auth.uid()`, a locked staff review |
|
|
19
|
-
| [Commerce catalog and orders](../../examples/commerce.md) | a published catalog and guest orders |
|
|
20
|
-
| [Commerce inventory](../../examples/commerce-inventory.md) | atomic stock reservation, a scheduled expiry, a verified payment callback |
|
|
21
|
-
| [Guarded API access](../../examples/guarded-api.md) | API keys, scopes and an entitlement guard |
|
|
5
|
+
The runnable [reference service](https://github.com/aotter/mantle/blob/develop/docs/examples/reference-service/README.md) exercises the native package integration. See the [generated public website](../../examples/generated-web/README.md) for a native Worker example.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Another host or database handle
|
|
2
|
+
|
|
3
|
+
Mantle has an open driver boundary and exactly two closed dialects in 0.2.0, postgres and sqlite. Choose the generation target whose emitted SQL and handle calls match your host. The app owns its router, resources, lifetime and scheduler.
|
|
4
|
+
|
|
5
|
+
PostgreSQL's `Postgres` in `kernel/contracts.ts` needs `unsafe(text, values)` and `begin(options, fn)`. Bun.SQL and postgres.js fit without wrappers. [The node-postgres example](postgres-adapters.md) shows the transaction and result-count contract. SQLite handle contracts are exported by `@aotter/mantle/driver/d1` and `/driver/bun-sqlite`: D1 prepare/bind/all/batch, or SQLite query/exec/transaction. Reads may need only the narrower reader shape.
|
|
6
|
+
|
|
7
|
+
A third-party driver must preserve result, binding, atomicity and uncertain-outcome semantics. A handle that cannot transact must reject before invoking the callback. Never emulate an atomic Procedure with unrelated autocommit HTTP calls.
|
|
8
|
+
|
|
9
|
+
Users may choose another SQL executor, including WASM SQLite persisted to IndexedDB, at their own risk. Mantle supports bun:sqlite, D1, Bun.SQL and postgres.js; there is no bundled Durable Object adapter. The app owns any custom adapter and its tests. A third SQL engine requires forking the compiler and Store runtime, not installing a dialect plugin.
|
|
10
|
+
|
|
11
|
+
No runtime performs DDL, introspection or schema checks. Install initial SQL and rehearse migrations explicitly; see [database ownership](../concepts/runtime-and-adapters.md).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Extend Admin
|
|
2
|
+
|
|
3
|
+
Native Admin accepts app-owned extension declarations, executable server handlers and optional same-origin client modules. Import client `defineAdminExtension` from `@aotter/mantle-admin/extension` and UI primitives from `@aotter/mantle-ui/kit`. Server types live in `@aotter/mantle-admin/server`.
|
|
4
|
+
|
|
5
|
+
| Contribution | Placement |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| pages/settings | Extension page; settings forms are generated from the supported form subset |
|
|
8
|
+
| actions | record, list selection or list toolbar |
|
|
9
|
+
| panels | record sidebar or home |
|
|
10
|
+
| fields | field input or cell |
|
|
11
|
+
|
|
12
|
+
Admin contributions sit behind the admin-layer gate; optional field roles default to `admin`. Server authorization is checked on every route. Handlers own finer business permissions.
|
|
13
|
+
|
|
14
|
+
Pass full declarations to `mantle generate … --admin --admin-extensions <module>` (named/default `adminExtensions` array). Generation checks contributions, manifest uiSchema references and settings schemas, then emits `extensionMetadata` and compiled `extensionBindings` in `admin-extensions.ts`. Bind the same runtime definitions with `extensionBindings(adminExtensions)` and merge its extensions/routes into `admin()` options. Drift is refused before execution.
|
|
15
|
+
|
|
16
|
+
Serve each `module` at a same-origin absolute path and install its integrity in the host shell's import map. Native Admin does not serve `source` modules or inject integrity; generation rejects source. Share React and the UI kit via the built import map, rather than bundling a second React. Canonical Admin refuses framing; use its separate same-origin preview contract.
|
|
17
|
+
|
|
18
|
+
Raw API handlers receive the original Request. Declared `bodyLimit` checks Content-Length before DB access, but the app must bound unknown-length streams. Built-in JSON routes use the shared bounded reader after caller/origin checks. Do not lose exact OCC or uncertain-outcome handling in custom actions.
|
|
19
|
+
|
|
20
|
+
See [native Admin](native-admin.md) for mounting and acceptance and [generated descriptors](../reference/admin-descriptors.md) for build-time metadata.
|
|
@@ -1,169 +1,11 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: What Admin serves in 0.2.0, how manifests and uiSchema become Admin's collections, reports and operations, and how to verify a change.
|
|
3
|
-
---
|
|
4
1
|
# Customize Admin from manifests
|
|
5
2
|
|
|
6
|
-
`
|
|
7
|
-
Every route reads and writes through `runtime.store.as(caller)` and
|
|
8
|
-
`invokeProcedure`, so Admin sees exactly what the signed-in staff member may
|
|
9
|
-
see. What Admin shows is derived from the compiled plan: labels, forms, list
|
|
10
|
-
columns, reports and operations are manifest edits.
|
|
3
|
+
Select `--admin` and mount [native Admin](native-admin.md) from `@aotter/mantle-admin`. The app serves its assets and owns authentication. UI and SDK are separate packages.
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
prebuilt SPA in `@aotter/mantle-ui/admin`, at `/admin`: `wrangler.jsonc` binds
|
|
14
|
-
`node_modules/@aotter/mantle-ui/dist/admin` as the Worker's `ASSETS`
|
|
15
|
-
(`run_worker_first`), and `src/service.ts` passes `createAdminSurface` an
|
|
16
|
-
`assets` function that reads from it. `mantle generate` warns when `admin` is
|
|
17
|
-
selected and `wrangler.jsonc` binds no `ASSETS`. The Bun preset reads the
|
|
18
|
-
same files with `bunAdminAssets` from `@aotter/mantle/bun`. Sign in at
|
|
19
|
-
`/admin/sign-in`.
|
|
5
|
+
Schema `uiSchema` selects fields, widgets, list columns, enum tabs and child navigation. The compiler derives sortable fields from indexed required/non-null fields; it emits selected system/statistics indexes in initial DDL. Apply those indexes through an explicit migration on existing databases.
|
|
20
6
|
|
|
21
|
-
|
|
7
|
+
Admin Views provide custom read lists; their SELECT outputs, column lineage and `uiSchema.list` define display/search/filter metadata. Procedures and MCP admin Triggers define operations with declared authorization, input checks and optional row targets. A hidden button never authorizes an operation.
|
|
22
8
|
|
|
23
|
-
|
|
24
|
-
|---|---|---|
|
|
25
|
-
| Rename a collection or explain a field | Schema `title` / `description`, property `title` / `description` (a string or a locale map) | Labels and help. Stored names do not change |
|
|
26
|
-
| Required fields and option lists | JSON Schema `required`, `enum`, `type` | Data contracts, checked on every write, not styling |
|
|
27
|
-
| Option labels | a string property's `oneOf: [{ const: open, title: { en: Open, zh-TW: 處理中 } }, …]` instead of `enum` | Selects, filter tabs and list cells show the `title` |
|
|
28
|
-
| A multiline string | Schema or Procedure `uiSchema.fields.<name>.widget: textarea` | `textarea` is the only explicit widget |
|
|
29
|
-
| Markdown or HTML | property `x-mcp-hint: markdown` or `html` | A rich editor |
|
|
30
|
-
| A timestamp, a date or money | `format: date-time`, `format: date`; `x-mcp-hint: money-minor` on an integer | Date controls; money in minor units, with a sibling `currency` when present |
|
|
31
|
-
| Columns of an operational list | Schema `uiSchema.list.primaryField`, `.columns` | `primaryField` is a scalar data field; `columns` may name native columns (`createdAt`, `updatedAt`) |
|
|
32
|
-
| Business-state tabs | Schema `uiSchema.list.filterField` | Operational Schemas only; a string enum that leads an index |
|
|
33
|
-
| Search | Schema `searchableFields` | Full-text search over those string fields, plus `id` |
|
|
34
|
-
| Related records | a required property with `x-mantle-ref` | Children fold under their parent |
|
|
35
|
-
| A folded child in navigation too | Schema `uiSchema.nav.standalone: true`, optional `parentField` | Its own list with a parent filter |
|
|
36
|
-
| A read-only report with CSV | a View with `surface: staff`, `title`, `uiSchema.list` | `columns`, `searchFields` and `filterFields` name the View's outputs; the search box and filters become `LIKE` and `=` on them. `GET /admin/api/views/<name>/export` returns every matching row |
|
|
37
|
-
| An operation | a Procedure bound by a Trigger with `source: { kind: mcp, surface: staff }` | Listed at `/admin/api/operations` for staff its `requires` admits, and run with `POST /admin/api/operations/<name>` |
|
|
38
|
-
| A row operation | that Procedure's `target` (declared or inferred from `WHERE id = … AND version = …`) | Bound to the row's `id`, and its version when the target names one |
|
|
39
|
-
| A list-level operation | Procedure `uiSchema.collectionAction: <schema>` | Shown on that collection |
|
|
40
|
-
| No generic edits | Schema root `schema.readOnly: true` | Admin's entry routes refuse writes (`CONFLICT`); declared Procedures still run |
|
|
9
|
+
Generic publishing edits apply to drafts; publishing transitions retain their atomic guards and OCC. Read-only collections refuse generic edits while declared Procedures can still run. Ref operations receive the caller/transaction-bound Store.
|
|
41
10
|
|
|
42
|
-
|
|
43
|
-
`lifecycle: operational`. Publishing Schemas keep the draft, publish and
|
|
44
|
-
archive workflow (`POST /admin/api/entries/{id}/publish` and `/unpublish`).
|
|
45
|
-
|
|
46
|
-
## Example: an operational inbox
|
|
47
|
-
|
|
48
|
-
```yaml
|
|
49
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
50
|
-
kind: Schema
|
|
51
|
-
metadata: { name: support-tickets }
|
|
52
|
-
spec:
|
|
53
|
-
title: { en: Support tickets, zh-TW: 客服工單 }
|
|
54
|
-
lifecycle: operational
|
|
55
|
-
indexes: [[ticketState]]
|
|
56
|
-
searchableFields: [subject, details]
|
|
57
|
-
uiSchema:
|
|
58
|
-
fields:
|
|
59
|
-
details: { widget: textarea }
|
|
60
|
-
list:
|
|
61
|
-
primaryField: subject
|
|
62
|
-
columns: [ticketState, createdAt]
|
|
63
|
-
filterField: ticketState
|
|
64
|
-
schema:
|
|
65
|
-
type: object
|
|
66
|
-
additionalProperties: false
|
|
67
|
-
required: [subject, ticketState]
|
|
68
|
-
properties:
|
|
69
|
-
subject: { type: string, title: Subject }
|
|
70
|
-
details: { type: string, description: Include the steps to reproduce. }
|
|
71
|
-
ticketState: { type: string, enum: [open, waiting, closed] }
|
|
72
|
-
---
|
|
73
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
74
|
-
kind: View
|
|
75
|
-
metadata: { name: support-report }
|
|
76
|
-
spec:
|
|
77
|
-
title: Support report
|
|
78
|
-
surface: staff
|
|
79
|
-
requires: { auth: { all: [{ ctx.staff: [owner, editor] }] } }
|
|
80
|
-
uiSchema:
|
|
81
|
-
list:
|
|
82
|
-
columns: [subject, ticketState, created_at]
|
|
83
|
-
searchFields: [subject]
|
|
84
|
-
filterFields: [ticketState]
|
|
85
|
-
sql: SELECT id, subject, ticketState, created_at FROM "support-tickets" ORDER BY created_at DESC
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
Schema `uiSchema.list` and View `uiSchema.list` are different contracts; do
|
|
89
|
-
not copy keys between them. The report's search box matches `subject`
|
|
90
|
-
(`LIKE`), its filter is `ticketState` (`=`), and a declared `input` would add
|
|
91
|
-
a form above them; all of them keep cursor paging.
|
|
92
|
-
|
|
93
|
-
## Developer console
|
|
94
|
-
|
|
95
|
-
The Developer console's Procedure overview projects the sealed SQL AST into
|
|
96
|
-
a static execution diagram: authorization, validated input, guard, applicable
|
|
97
|
-
lifecycle hooks, ordered atomic statements, commit or rollback, and output
|
|
98
|
-
validation. Statement cards show read/write dependencies, row versus set
|
|
99
|
-
semantics, RETURNING and ordered CASE assignments. CASE chooses a field value;
|
|
100
|
-
WHERE filters rows. A set operation can affect zero rows and still continue.
|
|
101
|
-
Output validation and after-hook failures do not roll back an existing commit.
|
|
102
|
-
Unsupported expression shapes remain explicitly opaque beside authored SQL;
|
|
103
|
-
code handlers' effects and actual run history are not inferred.
|
|
104
|
-
|
|
105
|
-
The inline business flow uses Schema/property titles and titled enum options
|
|
106
|
-
from the developer snapshot; generic verbs and operators are UI translations.
|
|
107
|
-
It expands direct `UPDATE SET field = CASE … END` assignments only. CASE
|
|
108
|
-
inside arithmetic, casts, functions, SELECT or INSERT remains in the SQL
|
|
109
|
-
detail tree, rather than pretending its intermediate result is the assigned
|
|
110
|
-
value. SQL identifiers match manifest names case-insensitively. The existing
|
|
111
|
-
`money-minor` display convention uses hundredths and a single-valued sibling
|
|
112
|
-
`currency` enum; if numeric conversion or currency formatting would round a
|
|
113
|
-
threshold, the flow shows its exact SQL literal marked as a raw SQL value.
|
|
114
|
-
These display hints do not establish or validate business units.
|
|
115
|
-
|
|
116
|
-
## Roles
|
|
117
|
-
|
|
118
|
-
Admin's gate admits any staff role. Inside it, each route names the least role
|
|
119
|
-
it needs: `contributor` reads and edits drafts, `editor` publishes, deletes
|
|
120
|
-
and manages media, `owner` manages staff, site settings and the developer
|
|
121
|
-
console. Operations and staff Views are further limited by their own
|
|
122
|
-
`requires`.
|
|
123
|
-
|
|
124
|
-
Those atom predicates do not restrict generic Schema entry routes. A root
|
|
125
|
-
Schema `readOnly: true` blocks generic writes, not reads. In a service where
|
|
126
|
-
only owner/editor reviewers may read an unscoped table, restrict the Admin
|
|
127
|
-
surface in the application-owned `src/service.ts`:
|
|
128
|
-
|
|
129
|
-
```ts
|
|
130
|
-
// Replace the preset's Admin composition, keeping its existing options.
|
|
131
|
-
const adminSurface = createAdminSurface(runtime, { /* existing Admin options */ });
|
|
132
|
-
const admin = withCaller(resolver, async (request, caller) => {
|
|
133
|
-
if (new URL(request.url).pathname.startsWith("/admin/api/") &&
|
|
134
|
-
caller.kind === "user" && caller.role === "contributor") {
|
|
135
|
-
return Response.json({ error: {
|
|
136
|
-
code: "AUTH_DENIED", message: "Admin access requires an owner or editor role.",
|
|
137
|
-
} }, { status: 403 });
|
|
138
|
-
}
|
|
139
|
-
return adminSurface(request, caller);
|
|
140
|
-
});
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
The preset already imports `withCaller` from `@aotter/mantle`. Reuse its
|
|
144
|
-
resolver so credential validation and the session origin guard run once;
|
|
145
|
-
Admin retains its own gates for members and anonymous callers. Contributors
|
|
146
|
-
can use an application-owned page over an owner-filtered public View. Keep
|
|
147
|
-
sign-in, OAuth consent and UI assets reachable; restricting the whole `/admin`
|
|
148
|
-
prefix would also block member MCP consent at `/admin/oauth/consent`. This is
|
|
149
|
-
host surface composition, not a Procedure `ref` handler or a new Manifest
|
|
150
|
-
permission key. Exercise generic entry reads, reports and operations with
|
|
151
|
-
each role, including after revoking a role in an existing session.
|
|
152
|
-
|
|
153
|
-
## Verify a change
|
|
154
|
-
|
|
155
|
-
1. Run `mantle generate`, then `mantle generate --check`.
|
|
156
|
-
2. Restart `wrangler dev` (or the Bun process) so the runtime loads the new plan.
|
|
157
|
-
3. Open `/admin` with a staff session and check the affected list, form,
|
|
158
|
-
report or operation. `GET /admin/api/bootstrap` carries the collections,
|
|
159
|
-
Views, operations and site the console renders.
|
|
160
|
-
|
|
161
|
-
`uiSchema` keys are closed. Schema takes `fields`, `list` and `nav`;
|
|
162
|
-
Procedure takes `collectionAction` and `fields`; a staff View takes `list`. No
|
|
163
|
-
layout, CSS, component or permission keys exist; build those in your own UI
|
|
164
|
-
over Admin's API or your own surfaces.
|
|
165
|
-
|
|
166
|
-
## Source
|
|
167
|
-
|
|
168
|
-
- [Schema](../reference/schema.md#uischema), [View](../reference/view.md) and [Procedure](../reference/procedure.md) references
|
|
169
|
-
- [HTTP, MCP, CLI and packages](../reference/surface.md): every Admin route
|
|
11
|
+
Use [extensions](admin-extensions.md) for app-owned pages, actions, panels or field renderers. Keep exact conflict/uncertain-outcome handling in the shared UI controller.
|
|
@@ -10,8 +10,8 @@ carries.
|
|
|
10
10
|
|
|
11
11
|
## 1. Install the `mantle` skill
|
|
12
12
|
|
|
13
|
-
The Mantle plugin carries one skill, `mantle`,
|
|
14
|
-
|
|
13
|
+
The Mantle plugin carries one OSS authoring skill, `mantle`, and local
|
|
14
|
+
acceptance references. It does not configure a hosted-service connection.
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
17
|
# Claude Code: two separate prompts
|
|
@@ -30,8 +30,7 @@ Without a plugin host, install the skill alone:
|
|
|
30
30
|
npx skills add aotter/mantle
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
it. Either way, read the path the installer prints (for project-local Codex,
|
|
33
|
+
Read the path the installer prints (for project-local Codex,
|
|
35
34
|
`.agents/skills/mantle/SKILL.md`). The skill installs no SDK, creates no
|
|
36
35
|
project and copies no handbook.
|
|
37
36
|
|
|
@@ -65,18 +64,6 @@ An agent reads these files from `node_modules` when the task calls for them.
|
|
|
65
64
|
|
|
66
65
|
## 3. Verify the application
|
|
67
66
|
|
|
68
|
-
|
|
67
|
+
Run the app's exact generation command with `--check`, typecheck, implement every printed handler and typecheck again. Test actual routes and persisted state. With selected Admin, mount `entries(bindings.schemas, bindings.adapter)` and serve assets separately. Verify member/admin OTP, row visibility and OCC. Installing a skill proves none of these flows.
|
|
69
68
|
|
|
70
|
-
|
|
71
|
-
2. The project typechecks against `.mantle/generated/mantle.ts`.
|
|
72
|
-
3. `wrangler dev` (or, on Bun, `bun src/index.ts`) starts, and the routes you depend on answer: a REST View, an
|
|
73
|
-
HTTP Trigger, `/mcp` `tools/list`, and with identity `mantle` a sign-in and
|
|
74
|
-
`GET /admin/api/me`.
|
|
75
|
-
|
|
76
|
-
| Symptom | Cause and next step |
|
|
77
|
-
|---|---|
|
|
78
|
-
| `docs/...` is missing after installing the skill | The skill carries no docs. Install the SDK and read `node_modules/@aotter/mantle/docs/`. |
|
|
79
|
-
| `mantle` is not found | Install `@aotter/mantle` locally and run it through the package manager (`pnpm exec mantle`). |
|
|
80
|
-
| `mantle skills` is unknown | It is 0.1.x. Follow the installed 0.2.x docs. |
|
|
81
|
-
| A v1 manifest or a `version: 1` config fails | The project is on 0.1.x. Follow `docs/upgrade-0.1-to-0.2.md`. |
|
|
82
|
-
| A documented feature is missing | The installed version is older than the docs you read. Read its own docs, or upgrade deliberately. |
|
|
69
|
+
If packaged docs are missing, reinstall the SDK version pinned by the app. If a feature differs from an online page, read the installed docs rather than assuming compatibility.
|