@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
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Generated native execution
|
|
2
|
+
|
|
3
|
+
Views and SQL Procedures execute compiled SQL through the selected native driver. The compiler stays build-time only. The app owns native handles, pools, verified Caller, boundary validation and resources. Import direct operation entries to omit unused operations.
|
|
4
|
+
|
|
5
|
+
Supported targets are Bun SQLite/PostgreSQL and Cloudflare D1/PostgreSQL. The [driver boundary is open; dialects are closed](../concepts/runtime-and-adapters.md#drivers-and-dialects). Generation emits initial SQL; [the runtime runs no DDL or schema checks](../concepts/runtime-and-adapters.md#schema-installation-and-migrations).
|
|
6
|
+
|
|
7
|
+
## Query inputs, values and outcomes
|
|
8
|
+
|
|
9
|
+
The default typed query accepts application-validated parameters and a verified
|
|
10
|
+
Caller, binds literal SQL using the official driver, and returns that target's
|
|
11
|
+
native result types. Generated TypeScript is a compile-time contract, not a
|
|
12
|
+
validator for untrusted data. The application must validate external input before
|
|
13
|
+
calling it. Generate-time schema/SQL diagnostics remain mandatory.
|
|
14
|
+
|
|
15
|
+
The bare query must not recursively scan JSON, construct validators, revalidate
|
|
16
|
+
known database rows, normalize errors across databases, or require universal row
|
|
17
|
+
decoding. Direct in-process values are owned by their application caller; input
|
|
18
|
+
bounds, JSON defaults and computed result types are handled explicitly by the
|
|
19
|
+
application boundary rather than assumed from TypeScript.
|
|
20
|
+
|
|
21
|
+
Driver-native PostgreSQL types and SQLite/D1 types need not match, except for
|
|
22
|
+
declared date-time and date outputs (below), which the SQL formats. That does not
|
|
23
|
+
justify overriding every PG type parser or adding a generic decoder to the bare
|
|
24
|
+
query. Authored output names should be emitted into SQL where valid, avoiding
|
|
25
|
+
an extra per-row projection merely to repair names already known at generation.
|
|
26
|
+
|
|
27
|
+
Selected REST/MCP/Admin boundaries use static generated column lineage. Declared
|
|
28
|
+
integers (including aliased system versions) are `number | string | null` on every
|
|
29
|
+
target: safe integers become numbers; unsafe integers remain exact decimal text.
|
|
30
|
+
Selected SQL projections cast integers and hidden integer cursor keys to text
|
|
31
|
+
before the driver reads them, preserving stored int64 values on SQLite/D1 and
|
|
32
|
+
PostgreSQL. Values already rounded when written
|
|
33
|
+
(e.g. by a JavaScript number) cannot be recovered.
|
|
34
|
+
`views/<name>.ts` exports both driver-native `Row` and `WireRow` (declared wire fields agree across targets);
|
|
35
|
+
`paged/views/<name>.ts` keeps native `Row` rows; REST/MCP use separate
|
|
36
|
+
`paged/wire/views/<name>.ts` SQL and convert at their boundary. SQLite/D1 declared JSON
|
|
37
|
+
and boolean columns become JSON values and booleans, preserving aliases and nulls;
|
|
38
|
+
PostgreSQL already returns those native values.
|
|
39
|
+
Declared real/float outputs remain numbers. Computed outputs without proved lineage,
|
|
40
|
+
SQL Procedures and app-owned ref results retain native values and types.
|
|
41
|
+
Bare Views/Procedures, the Store, web pages and internal paged Views stay
|
|
42
|
+
driver-native; bare queries and the Store receive no integer SQL projection,
|
|
43
|
+
transport conversion or runtime schema interpreter.
|
|
44
|
+
|
|
45
|
+
Declared authorization, ownership/TTL SQL policy, explicit OCC and atomic writes
|
|
46
|
+
remain required. Generate them as the native application would implement them.
|
|
47
|
+
Transaction rollback and uncertain COMMIT handling must still preserve data-loss
|
|
48
|
+
protection and client disposal responsibility; native errors are rethrown (one exception, below), and
|
|
49
|
+
redaction before they reach HTTP users belongs to the application boundary through `wire` / `surfaceFailure`. Removing generic error
|
|
50
|
+
normalization does not authorize dropping transaction outcome evidence.
|
|
51
|
+
|
|
52
|
+
**Single-statement writes:** a Procedure with one statement is atomic on its own
|
|
53
|
+
and runs in autocommit, with no BEGIN/COMMIT on PG or native transaction on Bun
|
|
54
|
+
SQLite. A row-classified statement touches at most one row (one-row INSERT or
|
|
55
|
+
unique `id =`), so a failed count check after autocommit has changed nothing.
|
|
56
|
+
On PG it runs at the server's default isolation, not SERIALIZABLE: a concurrent
|
|
57
|
+
OCC loser re-evaluates its `version =` predicate, matches zero rows and returns
|
|
58
|
+
`CONFLICT` instead of SQLSTATE 40001. A server ErrorResponse (SQLSTATE and
|
|
59
|
+
severity) is a known rollback and is rethrown natively, except a unique violation (23505, SQLite's `UNIQUE constraint failed`), which, in a generated Procedure or a Store write, is `ContractError("CONFLICT")` with the native error as `cause` on every target, and except connection,
|
|
60
|
+
resource and shutdown classes (08, 28, 53, 57, 58, XX), which, like any failure
|
|
61
|
+
without a server response (lost socket), are `OUTCOME_UNKNOWN`. SQLSTATE is
|
|
62
|
+
`errno` on Bun.SQL and `code` on postgres.js. Multi-statement Procedures run in
|
|
63
|
+
`begin("isolation level serializable", ...)`: a failure before the callback
|
|
64
|
+
returns was rolled back by `begin`; only a failed COMMIT is classified as above.
|
|
65
|
+
|
|
66
|
+
**Date-time wire form:** a View output that is a declared `date-time` column
|
|
67
|
+
(including `created_at`/`updated_at`) returns the handbook's wire form, an ISO
|
|
68
|
+
string in UTC with six fractional digits; a declared `date` returns `YYYY-MM-DD`.
|
|
69
|
+
The generator wraps those SELECT items before the dialect's own printer prints them
|
|
70
|
+
(`to_char` on PostgreSQL, `strftime`/`date` with floor arithmetic on SQLite), so the
|
|
71
|
+
database formats them and no row decoder runs. Bun.SQL's `Date` would drop
|
|
72
|
+
microseconds. A write's `RETURNING` of such a column gets the same form. Inputs bound to a declared date-time take the same ISO text (or a
|
|
73
|
+
valid `Date`), and a declared date takes `YYYY-MM-DD` text, on every target: a
|
|
74
|
+
timestamp needs `Z` or an offset and hours 00-23, a day that does not exist is refused with `SQL_TYPE` before the write, and SQLite receives
|
|
75
|
+
microseconds and days while PostgreSQL receives the canonical text. Computed values
|
|
76
|
+
(`now()`, `date_trunc`, `CAST`) carry no declared type and stay driver-native; on
|
|
77
|
+
PostgreSQL through Bun.SQL that is a `Date`, which drops microseconds. Other
|
|
78
|
+
declared scalars are driver-native.
|
|
79
|
+
|
|
80
|
+
Driver-ready JSON parameters are text on every target (a JavaScript array would otherwise be bound as a PostgreSQL array), so the application serializes them. Bare PG SQL declares each JSON parameter as text
|
|
81
|
+
(`CAST(CAST($n AS text) AS jsonb)`), so Bun.SQL sends the text verbatim instead of
|
|
82
|
+
JSON-encoding it again; generation refuses a JSON parameter used any other way. SQLite bool/date/timestamp/numeric parameters use their declared
|
|
83
|
+
storage representations. Bound optional fields become explicit required values,
|
|
84
|
+
with null representing absence; D1 cannot bind undefined. Native output keys are
|
|
85
|
+
SQL names rather than a post-query camel-case projection. PG uses the driver's
|
|
86
|
+
default type parsers (including Date and int8 strings); custom application parser
|
|
87
|
+
configuration changes application-owned behavior. Procedures expose raw
|
|
88
|
+
`{ results }`, not a claim of validated authored output.
|
|
89
|
+
|
|
90
|
+
The application resolves a verified Caller once at its entry, using its selected
|
|
91
|
+
auth module or identity. Bare queries accept that application-supplied Caller and
|
|
92
|
+
do not verify credentials. SQL binds the caller subject directly; a system
|
|
93
|
+
caller is application-owned and never wire input.
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## PostgreSQL settings
|
|
97
|
+
|
|
98
|
+
The app owns role/database configuration, statement timeouts, pool lifetime and retries. Configure persistent session settings there rather than issuing request-time SETs; Hyperdrive does not retain them. UTC is useful for application-owned timestamp expressions; generated declared timestamp outputs are formatted explicitly. Requests neither set nor validate role settings.
|
|
99
|
+
|
|
100
|
+
## Ref Procedures
|
|
101
|
+
|
|
102
|
+
Generation emits a `Handlers` interface. Pass implementations at `store(db, caller, { handlers })` and to selected surfaces. `requires` is checked before the ref handler receives `(ctx, input)`; `ctx` contains `{ caller, db, store }` bound to the actual Caller and transaction. Missing implementations fail typechecking; a missing runtime key is `HANDLER_NOT_REGISTERED`. Handler failures propagate unchanged. Handlers own business rules, side effects and explicit transaction boundaries.
|
|
103
|
+
|
|
104
|
+
Lifecycle and schedule Triggers and dynamic authorization guards are rejected by generation. Use app-owned handlers and scheduling. HTTP/MCP Triggers expose declared Procedures.
|
|
105
|
+
|
|
106
|
+
## TTL maintenance
|
|
107
|
+
|
|
108
|
+
A TTL Schema generates `<schema>.sweepExpired(db, caller, { limit?, cursor?, delete? })`
|
|
109
|
+
in `procedures/<schema>.sweepExpired.ts`. Only an application-created system caller
|
|
110
|
+
with a non-empty reason may invoke it; HTTP/OAuth callers cannot become system
|
|
111
|
+
callers. The app owns scheduling. Schedule/lifecycle Triggers remain refused.
|
|
112
|
+
|
|
113
|
+
The sweep returns `{ scanned, removed, nextCursor? }`, defaults to 500 candidates,
|
|
114
|
+
and accepts limits 1..500. `delete: false` scans without deleting. Cursors belong
|
|
115
|
+
to that Schema's sweep. NULL and future TTL values survive; a timestamp exactly
|
|
116
|
+
at the shared dialect cutoff expires. Maintenance deliberately ignores scope and
|
|
117
|
+
publishing visibility, deleting expired rows across tenants. Candidate selection
|
|
118
|
+
and deletion run atomically through the native driver with its existing uncertain
|
|
119
|
+
transaction outcome handling. Native triggers may suppress deletes, so scanned
|
|
120
|
+
and removed counts can differ; the cursor advances over selected candidates.
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
Keep the sweep import in the scheduled entry; apps selecting unrelated operations
|
|
124
|
+
exclude maintenance code. Set `triggers.crons` in Wrangler yourself. The SDK's
|
|
125
|
+
`toCloudflareCron` helper (the `cron` subpath) converts five-field POSIX schedules
|
|
126
|
+
(weekday 0=Sunday) to Cloudflare weekdays (1=Sunday); it refuses ambiguous schedules
|
|
127
|
+
that restrict both day-of-month and weekday. This is conversion only, no dispatcher.
|
|
128
|
+
Bound scheduled work to your host's execution budget; keep the returned cursor
|
|
129
|
+
when continuing a larger sweep in a later invocation.
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
See [publishing and translations](../concepts/lifecycle-and-locales.md), [Store](typed-queries.md), [surfaces](../reference/surface.md) and [Admin](native-admin.md) for selected capabilities.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# OAuth provider and consent
|
|
2
|
+
|
|
3
|
+
Auth remains app-owned. Install the existing optional Better Auth peers and
|
|
4
|
+
create your `betterAuth()` instance with `jwt({ disableSettingJwtHeader: true })`
|
|
5
|
+
and `oauthProvider` (or the provider's MCP preset). Append `oauthGrantExtension`
|
|
6
|
+
**first** in its `extensions`. The helper comes from
|
|
7
|
+
`@aotter/mantle/auth/oauth` and binds issued access tokens to the current consent
|
|
8
|
+
ID and Better Auth’s consent reference without changing `referenceId`.
|
|
9
|
+
Configure
|
|
10
|
+
`consentPage: "/oauth/consent"`, loginPage,
|
|
11
|
+
resources, allowed/default client registration scopes, and public/native DCR
|
|
12
|
+
explicitly. For MCP clients use the SDK's `mcp` preset, `allowPublicClientPrelogin:
|
|
13
|
+
true`, and a `90d` registration client-secret expiration. The application selects
|
|
14
|
+
plugins and options; Mantle does not wrap Better Auth or run runtime DDL.
|
|
15
|
+
|
|
16
|
+
With Mantle's native adapters, `oauthProvider.resources` comes from runtime
|
|
17
|
+
configuration, including environment-derived identifiers. `schema.sql` contains
|
|
18
|
+
auth DDL only. On the first OAuth lookup of a configured resource (authorization,
|
|
19
|
+
token issuance, registration defaults or audience checks), the adapter validates
|
|
20
|
+
and inserts the missing row with insert-if-absent semantics. Concurrent requests
|
|
21
|
+
are safe; subsequent lookups preserve persisted policy edits. No resource deploy
|
|
22
|
+
step is required, and `resourceSeedMode` does not overwrite existing rows.
|
|
23
|
+
To retire a resource, set its persisted `disabled` policy (or configure it disabled
|
|
24
|
+
before its first lookup). Removing configuration does not disable an existing row.
|
|
25
|
+
Do not delete a configured resource row: a later lookup in a new adapter instance
|
|
26
|
+
can recreate it from configuration. On
|
|
27
|
+
`/oauth2/authorize` an invalid configured identifier surfaces as the provider's
|
|
28
|
+
`invalid_target` redirect rather than HTTP 500.
|
|
29
|
+
|
|
30
|
+
Auth initialization, cookie/bearer resolution and normal MCP/REST requests perform
|
|
31
|
+
no resource SELECT or INSERT. The adapter suppresses the provider's eager and
|
|
32
|
+
bulk lazy seeding. Invalid configured identifiers produce HTTP 500 with
|
|
33
|
+
`AUTH_CONFIGURATION_ERROR` and no write; unconfigured identifiers keep the
|
|
34
|
+
provider's normal rejection. Validation follows upstream's identifier validator
|
|
35
|
+
(or absolute URI without a fragment by default); unsupported signing algorithms
|
|
36
|
+
are dropped before insertion.
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { authRoutes } from "@aotter/mantle/auth/routes";
|
|
40
|
+
import { authLoader } from "@aotter/mantle/auth";
|
|
41
|
+
const auth = authLoader(() => import("./auth.js").then(m => m.auth));
|
|
42
|
+
const routes = authRoutes(auth, {
|
|
43
|
+
methods: [{ kind: "email-otp" }],
|
|
44
|
+
connectedAppsPage: "/admin/connected-apps", // optional; otherwise plain HTML
|
|
45
|
+
});
|
|
46
|
+
// In fetch: await routes(request) ?? otherRoutes(request).
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`GET /api/auth/methods` exposes only the supplied method descriptions and does
|
|
50
|
+
not load auth. `basePath` must match Better Auth if changed. Better Auth owns all
|
|
51
|
+
`/api/auth/*` endpoints and RFC 8414/9728 well-known discovery routes. Mount those
|
|
52
|
+
well-known paths at the origin, before a catch-all or proxy; retain the external
|
|
53
|
+
issuer/resource URL and trusted forwarding rules. The SDK handler receives them
|
|
54
|
+
unchanged. A POST registration whose redirect URIs are all HTTP localhost,
|
|
55
|
+
127.0.0.1 or [::1] becomes `application_type: "native"` when omitted; explicit
|
|
56
|
+
types and mixed/external callbacks stay under the SDK's validation.
|
|
57
|
+
|
|
58
|
+
`/oauth/consent` and `/oauth/consents` serve escaped, script-free English or zh-TW
|
|
59
|
+
HTML. Their `/data` routes serve the 0.2 UI JSON shapes. Consent approval and
|
|
60
|
+
`POST /oauth/consents/revoke` require a live cookie session and same-origin
|
|
61
|
+
mutation; bearer credentials cannot grant or disconnect apps. Consent completion
|
|
62
|
+
uses only the provider-validated signed query and redirect. All responses are
|
|
63
|
+
private/no-store. Connected-app redirects must be same-origin paths.
|
|
64
|
+
|
|
65
|
+
`resolveCaller(request, loader, { audience, scopes })` verifies token signature,
|
|
66
|
+
issuer, audience and request-bound DPoP through Better Auth, including a durable
|
|
67
|
+
single-use proof reservation. It then checks the live consent and session and
|
|
68
|
+
loads the current database user.
|
|
69
|
+
All of sub, azp, sid, mantle_consent_id and the consent reference must match;
|
|
70
|
+
the consent must cover the resource and every token scope, and the session must
|
|
71
|
+
still be alive. `scopes` adds a resource-specific scope floor (403 when missing).
|
|
72
|
+
Unbound legacy tokens fail closed. Disconnect deletes the grant first, revokes
|
|
73
|
+
its access/refresh tokens. Tokens issued without an active consent fail closed.
|
|
74
|
+
First-party `skip_consent` tokens instead require a live, enabled client with
|
|
75
|
+
`skipConsent` and allowed scopes, plus a live user session. Already-issued
|
|
76
|
+
JWTs fail on the next call, and reconsenting cannot revive the old JWT lineage.
|
|
77
|
+
Database failures remain server errors, rather than silently authenticating.
|
|
78
|
+
|
|
79
|
+
For app-owned API keys/personal tokens, supply `resolveCredential(request)` in
|
|
80
|
+
`resolveCaller` options. It runs before OAuth/cookies; return a verified user
|
|
81
|
+
Caller or null when absent, and throw when presented but invalid. The same scope
|
|
82
|
+
floor applies. Any non-Bearer/DPoP Authorization header (including Basic from a staging
|
|
83
|
+
gateway), unless handled by the app-owned credential hook, is UNAUTHENTICATED
|
|
84
|
+
and never falls back to a cookie. The application owns credential verification;
|
|
85
|
+
Mantle loads live roles, bans and declared stored fields.
|
|
86
|
+
|
|
87
|
+
For the 0.2 legacy-DCR cleanup policy, call `pruneLegacyOAuthClients(auth)` from
|
|
88
|
+
an application-owned hourly scheduled job. It deletes only ownerless,
|
|
89
|
+
non-CIMD/non-reference clients older than 90 days; it runs no boot-time work.
|
|
90
|
+
|
|
91
|
+
When configuring session secondary storage, set `verification.storeInDatabase: true` and `session.storeSessionInDatabase: true`: live grants and durable DPoP single-use reservations must use the database, never a non-atomic session KV cache.
|
|
92
|
+
|
|
93
|
+
Auth routing also guards Better Auth’s raw `/api/auth/admin/*` endpoints (including percent-encoded admin paths): only a fresh primary-database `admin` cookie session may enter, and mutations require same origin. A stale admin snapshot in session KV cannot bypass demotion, ban or session deletion. App-owned auth mounts can reuse `guardAuthAdminRequest` from `@aotter/mantle/auth/admin` with a resolver that reads current authority.
|
|
94
|
+
|
|
95
|
+
Use primary database sessions without session secondaryStorage as the simple
|
|
96
|
+
safe configuration. If optional session caching is enabled, use the
|
|
97
|
+
**authority-bound** secondary-storage adapter from the identity/auth template
|
|
98
|
+
(`@aotter/mantle/auth/hardening`, #1499): every snapshot must be checked against the primary session and current
|
|
99
|
+
user before the SDK can read it, including raw SDK endpoints and session lists.
|
|
100
|
+
Arbitrary session KV snapshots are outside this secure configuration: middleware
|
|
101
|
+
may trust stale roles or refresh an expired primary session from a snapshot.
|
|
102
|
+
Merely setting storeSessionInDatabase true does not fix those SDK endpoints.
|
|
103
|
+
Mantle's caller and raw-admin guard validate primary authority before refreshing,
|
|
104
|
+
but do not make arbitrary SDK session caching safe. Keep verification
|
|
105
|
+
consumption and DPoP single-use reservations in the database.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Application-owned PostgreSQL adapters
|
|
2
|
+
|
|
3
|
+
Bun.SQL and postgres.js satisfy `Postgres` from `@aotter/mantle/contracts` directly. Other drivers need `unsafe(text, values)` returning a row array with `.count`, and `begin(options, fn)` pinning one connection until the callback resolves and COMMIT succeeds. Preserve native SQLSTATE/severity evidence; generated writes classify uncertain commits.
|
|
4
|
+
|
|
5
|
+
This node-postgres adapter accepts an app-owned `pg.Pool` through its structural shape:
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import type { Postgres } from '@aotter/mantle/contracts';
|
|
9
|
+
|
|
10
|
+
type Connection = {
|
|
11
|
+
query(text: string, values?: any[]): Promise<{ rows: any[]; rowCount: number | null }>;
|
|
12
|
+
};
|
|
13
|
+
// Pass a node-postgres Pool; its connections and lifetime stay app-owned.
|
|
14
|
+
export function nodePostgres(pool: Connection & {
|
|
15
|
+
connect(): Promise<Connection & { release(discard?: boolean): void }>;
|
|
16
|
+
}): Postgres {
|
|
17
|
+
const unsafe = (connection: Connection): Postgres['unsafe'] => async (text, values) => {
|
|
18
|
+
const result = await connection.query(text, values);
|
|
19
|
+
return Object.assign(result.rows, { count: result.rowCount });
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
unsafe: unsafe(pool),
|
|
23
|
+
async begin(options, fn) {
|
|
24
|
+
if (!/^isolation level (serializable|repeatable read|read committed|read uncommitted)$/.test(options))
|
|
25
|
+
throw new Error('Unsupported transaction options');
|
|
26
|
+
const client = await pool.connect();
|
|
27
|
+
let discard = false;
|
|
28
|
+
try {
|
|
29
|
+
await client.query(`BEGIN ${options}`);
|
|
30
|
+
const tx: Postgres = {
|
|
31
|
+
unsafe: unsafe(client),
|
|
32
|
+
begin: async () => { throw new Error('Nested transactions are unsupported'); },
|
|
33
|
+
};
|
|
34
|
+
let value;
|
|
35
|
+
try { value = await fn(tx); }
|
|
36
|
+
catch (error) {
|
|
37
|
+
try { await client.query('ROLLBACK'); } catch { discard = true; }
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
40
|
+
await client.query('COMMIT');
|
|
41
|
+
return value;
|
|
42
|
+
} catch (error) { discard = true; throw error; }
|
|
43
|
+
finally { client.release(discard); }
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The pool stays application-owned. There is no automatic retry. A COMMIT connection failure remains an error with its original evidence; the SDK can report `OUTCOME_UNKNOWN`. Adapters without interactive transactions must reject in `begin` before invoking the callback. They cannot run multi-statement Procedures or multi-write batches by independent autocommit calls.
|
|
50
|
+
|
|
51
|
+
Test on disposable storage with the [adapter conformance corpus](../../source/scripts/postgres-adapter.ts), covering bound date-time/date/JSON text, SELECT and RETURNING timestamp microseconds,
|
|
52
|
+
row arrays/counts, safe and unsafe int8 precision (including int64 extrema), aliased
|
|
53
|
+
selected-page integer/version number-or-string outputs, native numeric text and
|
|
54
|
+
booleans, unique/OCC failures, commit/rollback, nested handles and uncertain outcomes. This is an application-owned adapter, not an additional supported driver. Mantle's supported PostgreSQL drivers are Bun.SQL and postgres.js.
|
|
55
|
+
|
|
56
|
+
The driver layer is open; [dialects remain postgres and sqlite only](../concepts/runtime-and-adapters.md#drivers-and-dialects).
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Public pages: SEO, AEO and languages
|
|
2
|
+
|
|
3
|
+
This page is the one list of what a public (anonymous, indexable) page emits. Skills, examples and other pages link
|
|
4
|
+
here instead of repeating it.
|
|
5
|
+
|
|
6
|
+
## Two ways to serve them
|
|
7
|
+
|
|
8
|
+
- **Generated `web()`**: list and detail pages straight from public Views, with `llms.txt`, sitemap, Markdown
|
|
9
|
+
alternates and canonical tags. Its contract and limits are in [surface contracts](../reference/surface.md#optional-web-output);
|
|
10
|
+
the smallest example is `docs/examples/generated-web`.
|
|
11
|
+
- **App-owned pages** in `src/routes.ts`, when the page needs its own layout, JSON-LD or languages. The reference
|
|
12
|
+
implementation is `docs/examples/recipes` (`src/pages.ts`, `src/routes.ts`; `smoke.mjs` checks every item below).
|
|
13
|
+
|
|
14
|
+
## Every public page
|
|
15
|
+
|
|
16
|
+
- Server-rendered HTML per URL with the content in the body. A client-only SPA shell or metadata set by script is not
|
|
17
|
+
enough for search or answer engines.
|
|
18
|
+
- `<html lang>`, `<title>`, `<meta name="description">`.
|
|
19
|
+
- `<link rel="canonical">` built from the configured origin (`PUBLIC_ORIGIN`), never from the request `Host`.
|
|
20
|
+
- Open Graph: `og:type`, `og:url` (the canonical), `og:title`, `og:description`, `og:site_name`, `og:locale`
|
|
21
|
+
(underscore form, `zh_TW`), and `og:image` when the content has an image.
|
|
22
|
+
- Unknown URLs answer 404; drafts and anything a visitor may not read are absent, even when the request carries an
|
|
23
|
+
admin session (read as an anonymous caller).
|
|
24
|
+
|
|
25
|
+
## Detail pages
|
|
26
|
+
|
|
27
|
+
- JSON-LD of the matching schema.org type (`Recipe`, `Article`, `Event`, `Product`, ...), built from the same row as
|
|
28
|
+
the visible content: `name`, `description`, `url`, `inLanguage`, `datePublished`, `dateModified`, and `image` when
|
|
29
|
+
there is one (some rich results require it). Escape `<` in the serialized JSON so stored text cannot close the
|
|
30
|
+
script element. Do not add facts the page does not show.
|
|
31
|
+
- A short answer block for answer engines: one question heading and a one-sentence answer from the row's data.
|
|
32
|
+
- A Markdown alternate at `<url>.md`, linked with `<link rel="alternate" type="text/markdown">`.
|
|
33
|
+
|
|
34
|
+
## More than one language
|
|
35
|
+
|
|
36
|
+
- One URL per language (`/{locale}/...`), with `hreflang` alternates for each language the page exists in, plus
|
|
37
|
+
`x-default`. A language that is not published for this item gets no alternate and its URL is a 404.
|
|
38
|
+
- `og:locale:alternate` for the other languages, and a visible language switcher with `hreflang` and `lang` on links.
|
|
39
|
+
- Per-language Markdown alternates; `llms.txt` lists each language's items.
|
|
40
|
+
|
|
41
|
+
## Site files
|
|
42
|
+
|
|
43
|
+
- `/sitemap.xml` with every public URL in every language, walking the complete cursor chain of the list View (the
|
|
44
|
+
recipes example reads one page of 100 per language and marks the paging as `AGENT:` work).
|
|
45
|
+
- `/robots.txt` with `Disallow: /admin/` and the sitemap URL.
|
|
46
|
+
- `/llms.txt` ([llmstxt.org](https://llmstxt.org)): a title, a one-line summary and a link to each item's Markdown
|
|
47
|
+
alternate.
|
|
48
|
+
|
|
49
|
+
## Check before you report done
|
|
50
|
+
|
|
51
|
+
Request the HTML without running JavaScript and check the items above; publish, edit and unpublish an item and check
|
|
52
|
+
that its page, Markdown, sitemap and `llms.txt` follow. The `mantle` skill's
|
|
53
|
+
`references/local-testing.md` covers running this against `wrangler dev`.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Size and startup
|
|
2
|
+
|
|
3
|
+
The SDK ships kernel, CLI, generator and private compiler together. Request modules do not import compiler code. Import only selected generated operations and bindings; direct operations can omit Store/Admin/auth entirely.
|
|
4
|
+
|
|
5
|
+
Workers use `mantle bundle` to emit split ESM. Keep Better Auth behind `authLoader(() => import(...))`; the startup graph guard rejects eager auth imports. The official MCP SDK and selected Admin operations load on matching requests. Generated module imports perform no SQL or kernel initialization; Store metadata initializes on first use without SQL.
|
|
6
|
+
|
|
7
|
+
Contributor checks use tracked fixtures to compare runtime/startup graphs against `size-budgets.json` and inspect the published allowlist in `check:package`. Package packed/unpacked bytes are reported separately from request startup and query costs. Do not infer latency from bundle bytes.
|
|
8
|
+
|
|
9
|
+
Cloudflare startup_time_ms needs an actual upload/deployment; offline dry runs do not measure it. Measure on the selected host and report first use and warm work separately. Applications own deployment authorization and resources.
|
|
@@ -1,26 +1,20 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Choose Store for writes and simple lookups; declare internal Views for richer reads.
|
|
3
3
|
---
|
|
4
4
|
# Query from TypeScript
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
`
|
|
9
|
-
`
|
|
10
|
-
|
|
6
|
+
| Work | Data path |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| Writes | Store `insert` / `update` / `delete`, atomic `batch`, supported `transaction`, or declared Procedures |
|
|
9
|
+
| Id lookup or simple AND filter | Store `findById` / `find` / `first`, inside handlers or an existing application |
|
|
10
|
+
| Joins, aggregates, OR, reusable reads | Internal View: manifest SQL that is reviewable and typed |
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|---|---|---|
|
|
14
|
-
| `ctx.store` | inside a `ref` handler | bound to the invocation's caller. A guard or a before hook gets a read-only one |
|
|
15
|
-
| `runtime.store.as(caller)` | service code that has resolved a caller | that caller |
|
|
16
|
-
| `runtime.store` | trusted host code (imports, maintenance) | none: no caller scope. TTL still applies |
|
|
17
|
-
|
|
18
|
-
Each one applies TTL visibility, and published-only on public Views. Only
|
|
19
|
-
`runtime.store` skips caller scope, so never hand it a request's input
|
|
20
|
-
unchecked.
|
|
12
|
+
Never write raw SQL to Mantle collections: it bypasses scope, TTL, publishing and system-column rules. The Store applies row rules but does not check a View's or Procedure's `requires`; authorize your handler before using it.
|
|
21
13
|
|
|
22
14
|
## Declare an internal View
|
|
23
15
|
|
|
16
|
+
Save this as `manifests/tickets.yaml`:
|
|
17
|
+
|
|
24
18
|
```yaml
|
|
25
19
|
apiVersion: cms.mantle.aotter.net/v2
|
|
26
20
|
kind: Schema
|
|
@@ -49,107 +43,50 @@ spec:
|
|
|
49
43
|
properties:
|
|
50
44
|
ticketState: { type: string, enum: [open, closed] }
|
|
51
45
|
sql: |
|
|
52
|
-
SELECT id, subject, ticketState FROM tickets
|
|
46
|
+
SELECT id, subject, ticketState AS "ticketState" FROM tickets
|
|
53
47
|
WHERE ticketState = input.ticketState
|
|
54
|
-
ORDER BY
|
|
48
|
+
ORDER BY id ASC
|
|
55
49
|
```
|
|
56
50
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
for the caller the Store is bound to.
|
|
60
|
-
|
|
61
|
-
## Call it
|
|
51
|
+
Generate with `mantle generate cloudflare-d1 generated manifests/tickets.yaml`.
|
|
52
|
+
An internal View has no public REST route or MCP tool. Its generated function still applies declared authorization and compiled row policy.
|
|
62
53
|
|
|
63
54
|
```ts
|
|
64
|
-
import
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
};
|
|
55
|
+
import { store } from './generated/generated.js';
|
|
56
|
+
import ticketsByState from './generated/views/tickets-by-state.js';
|
|
57
|
+
import type { Caller } from '@aotter/mantle/contracts';
|
|
58
|
+
|
|
59
|
+
export async function readTickets(db: Parameters<typeof store>[0], caller: Caller) {
|
|
60
|
+
const tickets = store(db, caller).collection('tickets');
|
|
61
|
+
const first = await tickets.first({ where: { ticketstate: 'open' } });
|
|
62
|
+
const rows = await ticketsByState(db, caller, { ticketState: 'open' });
|
|
63
|
+
return { first, rows };
|
|
64
|
+
}
|
|
73
65
|
```
|
|
74
66
|
|
|
75
|
-
The
|
|
76
|
-
with `uiSchema.list.searchFields` or `filterFields` also takes `search` and
|
|
77
|
-
`filters` (`ctx.store.view(name, { search: "refund", filters: { ticketState: "open" } })`);
|
|
78
|
-
Store refuses a filter the View does not declare. An output that reads a
|
|
79
|
-
Schema field unchanged has that field's type, `created_at` and `updated_at`
|
|
80
|
-
are `string | null`, and an expression, or another native column such as `id`,
|
|
81
|
-
is `unknown`. Page with `limit` (default 50, at most 500) and the opaque
|
|
82
|
-
`cursor` from `nextCursor`.
|
|
67
|
+
The app supplies a verified Caller and its existing native handle. External input needs boundary validation. Store rows, filters and writes use storage names (`ticketstate`, `created_at`); View aliases use the SQL output names.
|
|
83
68
|
|
|
84
|
-
##
|
|
69
|
+
## Store reads and writes
|
|
85
70
|
|
|
86
|
-
|
|
87
|
-
Schema:
|
|
71
|
+
`find` returns `{ rows, cursor }` (null cursor on the last page), with limits 1–500 and opaque keyset cursors. `where` combines fields with AND; `orderBy` selects a generated indexed column with `id` ties. Most order columns must be NOT NULL; publishing `published_at` supports nulls. For a proved pageable internal View, import `paged/views/<encoded-name>.ts` and call `(db, caller, input, { limit?, cursor? })`. Other internal Views retain their bare row-array function.
|
|
88
72
|
|
|
89
|
-
|
|
90
|
-
const { rows } = await ctx.store.select({
|
|
91
|
-
from: "tickets",
|
|
92
|
-
columns: ["id", "subject"],
|
|
93
|
-
where: { ticketState: "open", subject: { like: "%refund%" } },
|
|
94
|
-
orderBy: { updatedAt: "desc" },
|
|
95
|
-
limit: 20,
|
|
96
|
-
});
|
|
97
|
-
```
|
|
73
|
+
Store keeps `find({ search: 'text' })`, `first({ search: 'text' })` and `count(where?)`. Search matches exact id or declared searchable fields under the same row policy.
|
|
98
74
|
|
|
99
|
-
|
|
100
|
-
`{ column: { eq, ne, gt, gte, lt, lte, like, in, notIn, isNull } }`, and
|
|
101
|
-
`and`, `or`, `not`. `in` takes a list or `{ select, from, where }`.
|
|
102
|
-
- `orderBy`: one column; `id` breaks ties. Default `{ updatedAt: "desc" }`.
|
|
103
|
-
- `search`: text matched against `searchableFields` (and `id`).
|
|
104
|
-
- Native columns are camelCase here (`createdAt`, `authorId`), while SQL spells
|
|
105
|
-
them snake_case (`created_at`).
|
|
75
|
+
`count` scans every matching row. For large tables or frequently shown totals, use an internal View with indexed predicates or avoid exact totals; a View's aggregate still scans the matching rows.
|
|
106
76
|
|
|
107
|
-
`
|
|
77
|
+
Store search, Admin list search and Views using `mantle.search` share the same dialect search. SQLite/D1 use FTS5 trigram for queries of 3 or more characters, and LIKE for shorter queries. PostgreSQL uses ILIKE over the declared fields, which scans by default. A View does not make PostgreSQL search faster. For large PostgreSQL tables, the application's agent adds trigram indexes in a migration; ILIKE then uses them with no code change:
|
|
108
78
|
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
{ insert: "ticket-events", values: { ticketId: id, kind: "closed" } },
|
|
113
|
-
]);
|
|
79
|
+
```sql
|
|
80
|
+
CREATE EXTENSION IF NOT EXISTS pg_trgm;
|
|
81
|
+
CREATE INDEX articles_title_trgm ON articles USING gin (title gin_trgm_ops);
|
|
114
82
|
```
|
|
115
83
|
|
|
116
|
-
|
|
117
|
-
`onConflict: "ignore" | { columns, update }`. A scoped Schema refuses a
|
|
118
|
-
client `id`, because a chosen id could collide with another owner's row and
|
|
119
|
-
reveal it: give such rows a field of your own that is unique with the scope
|
|
120
|
-
field (`uniqueIndexes: [[owner, clientKey]]`) when other rows of the same
|
|
121
|
-
write must point at them, or when a retry must find them.
|
|
122
|
-
- `update` with `set` and `where`; `delete` with `where`. A `where` that pins
|
|
123
|
-
`id` is a row op: it may carry `lock` (the version the caller saw), and
|
|
124
|
-
writing no row is `CONFLICT`.
|
|
125
|
-
- A result is `{ id, version }` for a row op and `{ affected }` for a set op.
|
|
126
|
-
- `set` and `values` never name the scope field or a native column (except
|
|
127
|
-
`status` on a `publishing` Schema, below); Store
|
|
128
|
-
fills them. A `null` leaves empty, or clears, a field the Schema does not
|
|
129
|
-
require (the generated `values` and `set` types accept it); for a required
|
|
130
|
-
field it is refused. On a `publishing` Schema, `set: { status }` is how a `ref`
|
|
131
|
-
handler publishes, unpublishes or archives.
|
|
132
|
-
|
|
133
|
-
Failures throw `DiagnosticError` with `INPUT_VALIDATION_FAILED` (including a
|
|
134
|
-
failed `check`), `CONFLICT` (`conflict.reason` is `lock`, `expect` or
|
|
135
|
-
`unique`, and `conflict.opIndex` names the operation; for `unique` it is
|
|
136
|
-
present when exactly one operation of the write targets the violated Schema,
|
|
137
|
-
since the engine names the table and not the statement), `RESOURCE_UNAVAILABLE`
|
|
138
|
-
or `OUTCOME_UNKNOWN`. Nothing is written on any failure. After
|
|
139
|
-
`OUTCOME_UNKNOWN`, retry with the same client ids and locks: a replayed insert
|
|
140
|
-
conflicts on its id, a replayed update on its lock.
|
|
141
|
-
|
|
142
|
-
## From service code
|
|
143
|
-
|
|
144
|
-
The service's `fetch` receives the runtime. Resolve the caller first, as the
|
|
145
|
-
generated `withCaller` does, and bind Store to it:
|
|
84
|
+
Index each searched field as needed and inspect EXPLAIN for the workload. Case folding follows the engine.
|
|
146
85
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
86
|
+
Writes are lazy and execute once when awaited. Insert/update return native rows; delete returns void. `update(id, set, { lock })` and `delete(id, { lock })` require the version the caller reviewed. A stale lock, excluded row or unique clash is `CONFLICT`. `batch` atomically executes unused Writes from one Store in input order; a step cannot use a prior result.
|
|
87
|
+
|
|
88
|
+
Interactive `transaction(async tx => …)` exists on bun:sqlite and PostgreSQL, with collections, Views and Procedures bound to the transaction. D1 supports batches only. PostgreSQL defaults to serializable, with an explicit isolation override; SQLite uses BEGIN IMMEDIATE. Use `tx` inside the callback, not the outer Store or handle. Nested transactions and `tx.batch` are refused; there is no automatic retry.
|
|
89
|
+
|
|
90
|
+
Ref handlers receive `{ caller, db, store }` bound to the same Caller and transaction. Implement the generated `Handlers` interface and pass it to `store(db, caller, { handlers })`. Direct Procedure modules expose SQL Procedures; ref Procedures are reached through the bound Store or selected surfaces.
|
|
152
91
|
|
|
153
|
-
|
|
154
|
-
`runtime.invokeProcedure({ procedure, input, caller, cause: { kind: "internal", id } })`.
|
|
155
|
-
Inside a handler, `ctx.invoke(name, input)` does the same and keeps the caller.
|
|
92
|
+
See [native execution](native-execution.md) for values and write outcomes and [migrations](../concepts/runtime-and-adapters.md#schema-installation-and-migrations) before changing a Schema.
|