@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,453 +0,0 @@
|
|
|
1
|
-
# ADR-0010: Locale three-layer model and parent/child translates pattern
|
|
2
|
-
|
|
3
|
-
**Status:** Carried over from POC v0.0.x; storage details superseded by
|
|
4
|
-
[ADR-0024](0024-manifest-native-schema-tables.md). Locale semantics remain in
|
|
5
|
-
force, but `locale` is now a native field on each localized Schema table.
|
|
6
|
-
|
|
7
|
-
**Date**: 2026-05-01 (POC) / refreshed 2026-05-03 (v0.1.0 rebuild)
|
|
8
|
-
|
|
9
|
-
**Deciders**: phsu
|
|
10
|
-
|
|
11
|
-
**Related**: [ADR-0001](0001-four-atom-manifest-model.md) (the Schema atom this extends).
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Context
|
|
16
|
-
|
|
17
|
-
Pre-v0.1 prototypes shipped with `entries.locale TEXT NOT NULL` as a
|
|
18
|
-
top-level column in the D1 schema, and `locale` as a required argument
|
|
19
|
-
across the MCP handler API (`createDraft`, `updateDraft`, `listEntries`,
|
|
20
|
-
`getEntry`). Every entry in every collection had to declare a locale.
|
|
21
|
-
|
|
22
|
-
This is wrong by overspecification. The data sorts into three buckets:
|
|
23
|
-
|
|
24
|
-
| Type | Examples | Should require locale? |
|
|
25
|
-
|---|---|---|
|
|
26
|
-
| Language-independent | tags, categories, settings, asset metadata, numeric config | No — forced locale tagging is a semantic error |
|
|
27
|
-
| Language-dependent | blog posts, product descriptions, UI strings | Yes |
|
|
28
|
-
| Mixed | e-commerce items where price/SKU don't translate but title/description do | Neither single-locale nor full-locale; needs decomposition |
|
|
29
|
-
|
|
30
|
-
The legacy model forced bucket-1 content to either pretend to be in
|
|
31
|
-
the site's primary language or to invent a sentinel ("und"). It
|
|
32
|
-
forced bucket-3 content into either a single bloated Schema with
|
|
33
|
-
field-level translation flags, or a dual-write hack where translatable
|
|
34
|
-
fields got duplicated per locale inside the same row. Neither path is
|
|
35
|
-
clean, neither scales to "AI agent writes the manifest from a
|
|
36
|
-
description."
|
|
37
|
-
|
|
38
|
-
A second wrong default lived in the install brief: it pre-filled
|
|
39
|
-
`'en'` as the default locale. This biases the SDK toward "an
|
|
40
|
-
English-first product translated to other languages," which is
|
|
41
|
-
incompatible with the stated positioning of "MCP-native CMS for
|
|
42
|
-
multi-locale content serving worldwide." A user whose primary content
|
|
43
|
-
is in `zh-TW` shouldn't have to override an `en` default that's there
|
|
44
|
-
because of unconscious template bias.
|
|
45
|
-
|
|
46
|
-
A third wrong default: locale concerns were baked into the SDK
|
|
47
|
-
whether or not the consumer needed them. A single-author single-language
|
|
48
|
-
site shouldn't have a `locale` column it must populate, a `locale`
|
|
49
|
-
MCP arg it must pass, or a locale picker in the admin UI it never
|
|
50
|
-
uses. Locale should be opt-in at every layer.
|
|
51
|
-
|
|
52
|
-
## Decision
|
|
53
|
-
|
|
54
|
-
Locale is modeled in three explicit layers. Each layer is opt-in;
|
|
55
|
-
when no layer opts in, the entire locale subsystem is invisible.
|
|
56
|
-
|
|
57
|
-
### Layer 1 — Manifest declaration (`Schema.spec.localized`)
|
|
58
|
-
|
|
59
|
-
```yaml
|
|
60
|
-
apiVersion: cms.mantle.aotter.net/v1
|
|
61
|
-
kind: Schema
|
|
62
|
-
metadata: { name: posts }
|
|
63
|
-
spec:
|
|
64
|
-
localized: true # this collection's entries carry a locale
|
|
65
|
-
schema: { ... }
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
`Schema.spec.localized?: boolean` (default `false`) is the per-Schema
|
|
69
|
-
opt-in. Default false is deliberate — if the author doesn't say
|
|
70
|
-
"localized," the Schema is treated as language-independent. This
|
|
71
|
-
matches the principle that locale is opt-in.
|
|
72
|
-
|
|
73
|
-
The boot validator only inspects the manifest at this layer. It
|
|
74
|
-
checks shape (every `localized: true` Schema is well-formed, every
|
|
75
|
-
`translates:` block resolves) and rejects unsupported keys; it does **not**
|
|
76
|
-
read D1 to confirm that the site actually has any locales configured.
|
|
77
|
-
That cross-check is deferred to runtime (Layer 3).
|
|
78
|
-
|
|
79
|
-
### Layer 2 — Per-site D1 row (`site_config.locales`)
|
|
80
|
-
|
|
81
|
-
```jsonc
|
|
82
|
-
// site_config row
|
|
83
|
-
{ "key": "locales", "value": "zh-TW,en,ja" } // ordered; first is canonical
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
- Stored in `site_config` keyed by `locales` (small key/value table,
|
|
87
|
-
not a separate locales table).
|
|
88
|
-
- Empty / absent = locale subsystem off site-wide. Any localized read
|
|
89
|
-
or write fails with a structured `INVALID_LOCALE` diagnostic
|
|
90
|
-
pointing at `site_config.locales`.
|
|
91
|
-
- `locales[0]` is the canonical/preferred locale, used as the
|
|
92
|
-
fallback hint when a localized lookup misses. Whether the runtime
|
|
93
|
-
*automatically* falls back is up to the View executor; v0.1.x ships
|
|
94
|
-
strict (no auto-fallback) and exposes the canonical hint via the
|
|
95
|
-
site-config accessor for application code to use.
|
|
96
|
-
|
|
97
|
-
#### Seeding via `CmsConfig.siteDefaults` (v0.1.0)
|
|
98
|
-
|
|
99
|
-
The v0.1.0 way to populate `site_config.locales` on first deploy is
|
|
100
|
-
the `CmsConfig.siteDefaults` declarative seed. The consumer's
|
|
101
|
-
`CmsConfig` carries an optional block:
|
|
102
|
-
|
|
103
|
-
```ts
|
|
104
|
-
{
|
|
105
|
-
siteDefaults: {
|
|
106
|
-
locales: ['zh-TW', 'en'],
|
|
107
|
-
brand: 'My Site',
|
|
108
|
-
title: 'My Site — blog',
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
`createCmsRuntime(...).bootInit()` calls the site-config repository's
|
|
114
|
-
seed path. That path runs `assertSiteDefaultsCanonical(siteDefaults)`
|
|
115
|
-
(BCP 47 canonicalization of every declared locale; throws
|
|
116
|
-
`InvalidSiteDefaultsError` if any tag is malformed) and writes the seed via
|
|
117
|
-
`INSERT INTO site_config (...) VALUES (...) ON CONFLICT(key) DO NOTHING`
|
|
118
|
-
— idempotent, so re-deploys never clobber values an operator has
|
|
119
|
-
edited via the admin Settings page.
|
|
120
|
-
|
|
121
|
-
This replaces an earlier prototype where the install brief had to
|
|
122
|
-
prompt for locales and write them imperatively; declarative seed +
|
|
123
|
-
canonicalize-on-write keeps the cold-start path free of ceremony and
|
|
124
|
-
lets the manifest, the CmsConfig, and the D1 row drift apart safely
|
|
125
|
-
(the runtime gate in Layer 3 is what reconciles them).
|
|
126
|
-
|
|
127
|
-
### Layer 3 — Per-entry data (`locale`)
|
|
128
|
-
|
|
129
|
-
```jsonc
|
|
130
|
-
// a localized Schema record
|
|
131
|
-
{ "title": "...", "body": "...", "locale": "zh-TW" }
|
|
132
|
-
|
|
133
|
-
// a non-localized Schema record
|
|
134
|
-
{ "name": "...", "color": "..." } // no locale field
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
- There is no shared `entries.locale` column. `locale` is the authored native
|
|
138
|
-
field on each localized Schema table.
|
|
139
|
-
- The runtime locale gate (in `mantle-runtime`'s content-ops
|
|
140
|
-
`helpers.ts`) is the **authoritative per-request check**. On every
|
|
141
|
-
read and write the gate validates:
|
|
142
|
-
- `localized: true` Schema → `data.locale` MUST be present, MUST
|
|
143
|
-
canonicalize via the BCP 47 helper, AND MUST be a member of
|
|
144
|
-
`site_config.locales`. Any failure surfaces as
|
|
145
|
-
`INPUT_VALIDATION_FAILED` (or `INVALID_LOCALE` for canonicalization
|
|
146
|
-
failure) with a path of `data.locale`.
|
|
147
|
-
- `localized: false` Schema → `data.locale` MUST be absent
|
|
148
|
-
(`null` is treated as absent and stripped on the read path; any
|
|
149
|
-
other value is rejected to catch typos like `locaIe: en`).
|
|
150
|
-
- Indexed directly on the localized Schema table. Non-localized Schemas have
|
|
151
|
-
no locale field or locale index.
|
|
152
|
-
|
|
153
|
-
The boot/runtime split is the load-bearing change carried over from
|
|
154
|
-
the POC's issue #60 fix (POC PR #71, plus the canonicalize follow-up
|
|
155
|
-
from that PR's code review). Boot is for **manifest shape**, runtime
|
|
156
|
-
is for **D1 state**. `bootInit` no longer reads `site_config` to
|
|
157
|
-
gate manifest acceptance; that coupling caused a chicken-and-egg
|
|
158
|
-
problem on first deploy where a manifest declaring `localized: true`
|
|
159
|
-
couldn't be loaded until D1 was already seeded, but seeding required
|
|
160
|
-
the SDK to be running. The runtime gate in `helpers.ts` does the
|
|
161
|
-
real work — it sees both the manifest and the live D1 row at every
|
|
162
|
-
request — and the `siteDefaults` seed pre-populates D1 without
|
|
163
|
-
requiring the operator to do it manually.
|
|
164
|
-
|
|
165
|
-
### Canonicalization
|
|
166
|
-
|
|
167
|
-
Mantle v0.1 accepts a narrow locale subset: **2/3-letter language,
|
|
168
|
-
optionally followed by a 2-letter region**. Canonical form is language
|
|
169
|
-
case-folded, region uppercased: `en-US`, `zh-TW`, `pt-BR`. The runtime
|
|
170
|
-
accepts any case on input (`en-us`, `EN-US`, `en-US` all match) but
|
|
171
|
-
stores and compares canonically.
|
|
172
|
-
|
|
173
|
-
Script subtags are intentionally out of scope for v0.1 even though they
|
|
174
|
-
are valid BCP 47. Do not configure `zh-Hant`, `zh-Hans`, `sr-Latn`, or
|
|
175
|
-
`sr-Cyrl`; use the region form instead (`zh-TW` for Traditional
|
|
176
|
-
Chinese, `zh-CN` for Simplified Chinese, and the relevant region tag for
|
|
177
|
-
other languages). Widening to full BCP 47 requires URL routing,
|
|
178
|
-
locale-negotiation, and matching semantics to grow together.
|
|
179
|
-
|
|
180
|
-
- The URL-form locale (e.g. on a `/zh-tw/posts/...` path) is lowercased
|
|
181
|
-
for cosmetics; the canonical storage form is `zh-TW`. Render-side
|
|
182
|
-
helpers convert between the two. Manifest, CmsConfig, and D1 storage
|
|
183
|
-
always use the canonical form.
|
|
184
|
-
- `data.locale: 'en-US'` when the site declares `'en'` is a strict
|
|
185
|
-
miss — `en-US` ≠ `en`. A site author who wants both writes both
|
|
186
|
-
into `siteDefaults.locales` (and therefore `site_config.locales`).
|
|
187
|
-
No magic broadening.
|
|
188
|
-
- Locale lives **inside `data`** rather than as a top-level column
|
|
189
|
-
precisely because canonicalization is a runtime concern. A column
|
|
190
|
-
would either need a CHECK constraint (which D1 can't enforce
|
|
191
|
-
against a moving target like a `site_config` row) or trust the
|
|
192
|
-
writer to canonicalize, which gets out of sync the moment a
|
|
193
|
-
non-SDK writer touches the table. Inside `data`, the gate
|
|
194
|
-
re-canonicalizes on every read/write and the storage shape stays
|
|
195
|
-
honest about who owns the invariant.
|
|
196
|
-
|
|
197
|
-
### Parent/child translates pattern
|
|
198
|
-
|
|
199
|
-
When a domain has both translatable and non-translatable fields
|
|
200
|
-
(e.g., a product with non-translatable SKU/price and translatable
|
|
201
|
-
title/description), the model is **two Schemas joined by a shared
|
|
202
|
-
key**, not a single Schema with field-level translation flags.
|
|
203
|
-
|
|
204
|
-
```yaml
|
|
205
|
-
apiVersion: cms.mantle.aotter.net/v1
|
|
206
|
-
kind: Schema
|
|
207
|
-
metadata: { name: products }
|
|
208
|
-
spec:
|
|
209
|
-
title: Products
|
|
210
|
-
localized: false
|
|
211
|
-
schema:
|
|
212
|
-
type: object
|
|
213
|
-
properties:
|
|
214
|
-
slug: { type: string }
|
|
215
|
-
sku: { type: string }
|
|
216
|
-
price: { type: number }
|
|
217
|
-
required: [slug, sku, price]
|
|
218
|
-
uniqueIndexes: [[slug]]
|
|
219
|
-
---
|
|
220
|
-
apiVersion: cms.mantle.aotter.net/v1
|
|
221
|
-
kind: Schema
|
|
222
|
-
metadata: { name: product-translations }
|
|
223
|
-
spec:
|
|
224
|
-
title: Product translations
|
|
225
|
-
localized: true
|
|
226
|
-
translates:
|
|
227
|
-
parent: products
|
|
228
|
-
on: slug
|
|
229
|
-
schema:
|
|
230
|
-
type: object
|
|
231
|
-
properties:
|
|
232
|
-
slug: { type: string }
|
|
233
|
-
locale: { type: string }
|
|
234
|
-
title: { type: string }
|
|
235
|
-
description: { type: string }
|
|
236
|
-
required: [slug, locale, title]
|
|
237
|
-
uniqueIndexes: [[slug, locale]]
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
`Schema.spec.translates` declares the parent/child relationship as
|
|
241
|
-
first-class grammar. The runtime, admin UI, and View executor can
|
|
242
|
-
all treat the relation as known structure rather than convention:
|
|
243
|
-
|
|
244
|
-
- The parent (`products`) is **non-localized**: SKU and price are
|
|
245
|
-
language-independent facts.
|
|
246
|
-
- The child (`product-translations`) is **localized**: title and
|
|
247
|
-
description carry one row per (slug, locale) pair.
|
|
248
|
-
- `translates.parent` resolves the parent Schema by `metadata.name`;
|
|
249
|
-
`translates.on` names the join field present in both parent and
|
|
250
|
-
child JSON Schemas.
|
|
251
|
-
- Admin UI groups parent + per-locale translation entries together.
|
|
252
|
-
- Boot validate enforces parent existence and join-field presence in
|
|
253
|
-
both parent and child JSON Schemas (manifest shape, no D1 reads).
|
|
254
|
-
- AI authoring an entry against the child knows from the manifest
|
|
255
|
-
that there's a parent it must reference by `slug`.
|
|
256
|
-
|
|
257
|
-
Validation rules introduced:
|
|
258
|
-
|
|
259
|
-
- `TRANSLATES_PARENT_UNKNOWN` — `translates.parent` doesn't resolve
|
|
260
|
-
to a declared Schema name.
|
|
261
|
-
- `TRANSLATES_FIELD_NOT_IN_PARENT` — `translates.on` isn't a property
|
|
262
|
-
of parent's `spec.schema.properties`.
|
|
263
|
-
- `TRANSLATES_FIELD_NOT_IN_CHILD` — `translates.on` isn't a property
|
|
264
|
-
of the child's own `spec.schema.properties`.
|
|
265
|
-
- `TRANSLATES_REQUIRES_LOCALIZED` — `translates: ...` declared on a
|
|
266
|
-
Schema where `localized` isn't `true`. (A non-localized translation
|
|
267
|
-
table makes no sense.)
|
|
268
|
-
- `TRANSLATES_REQUIRES_CONTENT_FIELD` — the child declares only its join
|
|
269
|
-
field and `locale`, with no locale-specific payload to translate.
|
|
270
|
-
|
|
271
|
-
## Consequences
|
|
272
|
-
|
|
273
|
-
### Pros
|
|
274
|
-
|
|
275
|
-
- **Single-language and zero-locale sites pay nothing.** Empty
|
|
276
|
-
`site_config.locales` makes the subsystem invisible: no MCP arg,
|
|
277
|
-
no admin picker, no validation rules to fail against.
|
|
278
|
-
- **No more semantic error of forced locale tagging.** Tags,
|
|
279
|
-
settings, configs declare `localized: false` (or omit it) and live
|
|
280
|
-
without locale ceremony.
|
|
281
|
-
- **Mixed-locale domains decompose cleanly.** Products + product
|
|
282
|
-
translations is two Schemas joined by `slug` — no per-field
|
|
283
|
-
translation flags, no row duplication, no bloated single-Schema
|
|
284
|
-
YAML.
|
|
285
|
-
- **AI authoring is more predictable.** When an AI agent reads a
|
|
286
|
-
Schema with `translates: { parent: products, on: slug }`, it knows
|
|
287
|
-
to look up the parent's `slug` field before drafting a translation
|
|
288
|
-
row. The manifest contract surfaces the relation; the agent doesn't
|
|
289
|
-
have to infer it from naming convention.
|
|
290
|
-
- **Storage matches semantics.** With locale inside `data`, the
|
|
291
|
-
column structure stops claiming locale is universal. Locale is
|
|
292
|
-
per-Schema-optional alongside every other field, and the
|
|
293
|
-
canonicalization invariant lives next to the gate that enforces it.
|
|
294
|
-
- **The locale field on non-localized Schemas is rejected, not
|
|
295
|
-
ignored.** Catches author mistakes (typo'd `locaIe: en` would
|
|
296
|
-
otherwise silently survive) at the validate boundary.
|
|
297
|
-
- **Boot is decoupled from D1 state.** First deploy works without
|
|
298
|
-
the operator pre-seeding D1; the `siteDefaults` declarative seed
|
|
299
|
-
+ the runtime gate together replace the old fragile read-D1-at-boot
|
|
300
|
-
path.
|
|
301
|
-
|
|
302
|
-
### Costs
|
|
303
|
-
|
|
304
|
-
- **MCP API surface is `data`-shaped.** `createDraft({ collection,
|
|
305
|
-
locale, data })` is `createDraft({ collection, data })` with locale
|
|
306
|
-
inside `data`. Consumer AI agents written against pre-v0.1
|
|
307
|
-
prototypes need to pass locale differently. Diagnostic codes stay
|
|
308
|
-
stable.
|
|
309
|
-
- **Cross-Schema validation needs ordering.** The boot validator
|
|
310
|
-
must resolve all Schema names before checking `translates.parent`
|
|
311
|
-
references. The two-pass pattern (collect names → check references)
|
|
312
|
-
handles this; it's just one more reference type.
|
|
313
|
-
- **Index pattern adds DDL complexity.** Each localized native Schema table
|
|
314
|
-
needs its declared locale index. The migration artifact owns that SQL.
|
|
315
|
-
- **Two places define "what locales exist."** Manifest declares
|
|
316
|
-
`localized: true`; D1 declares which actual locales the site
|
|
317
|
-
serves. The runtime gate reconciles them; if they drift, the gate
|
|
318
|
-
produces a structured diagnostic but doesn't auto-repair.
|
|
319
|
-
|
|
320
|
-
### Risks
|
|
321
|
-
|
|
322
|
-
- **`site_config.locales` empty vs absent.** Both mean "subsystem
|
|
323
|
-
off." Reduces test surface; matches what authors expect.
|
|
324
|
-
- **Locale value drift.** `data.locale: 'en-US'` when the site declares
|
|
325
|
-
`'en'` — strict equality after canonicalization. `en-us` and
|
|
326
|
-
`en-US` both match `en-US`, but `en-US` ≠ `en`. A site author
|
|
327
|
-
who wants both writes both into `siteDefaults.locales`.
|
|
328
|
-
- **Translation row orphaning.** A `product-translations` row with a
|
|
329
|
-
slug that doesn't match any `products` row — should this be
|
|
330
|
-
rejected? Not at write time. Cross-row referential integrity isn't
|
|
331
|
-
D1's strength; runtime does best-effort, View can filter orphans
|
|
332
|
-
on read. Boot validate only checks that the join field *exists* in
|
|
333
|
-
both Schemas, not that data is consistent.
|
|
334
|
-
- **Locale fallback is application logic, not SDK.** A request for
|
|
335
|
-
`zh-TW` that finds nothing returns nothing; the application chooses
|
|
336
|
-
whether to retry with `locales[0]` or 404. v0.2 may introduce a
|
|
337
|
-
View-level `fallbackChain` grammar; v0.1.x ships strict.
|
|
338
|
-
|
|
339
|
-
## Alternatives considered
|
|
340
|
-
|
|
341
|
-
**(A) Keep `entries.locale` as a top-level column.** Rejected: forces
|
|
342
|
-
locale tagging on language-independent content, blocks zero-locale
|
|
343
|
-
sites from existing without ceremony, and bakes the canonicalization
|
|
344
|
-
invariant into a place the gate can't keep honest.
|
|
345
|
-
|
|
346
|
-
**(B) `translation_of: <uuid>` field linking translated rows.** Each
|
|
347
|
-
language variant is an independent entry; the second-and-later
|
|
348
|
-
versions point at the first via a UUID column. Rejected: requires
|
|
349
|
-
the author to know which row is "first" (artificial), creates an
|
|
350
|
-
ordering asymmetry between identical-status translations, and doesn't
|
|
351
|
-
compose with the parent/child pattern when the parent has
|
|
352
|
-
non-translatable fields. Slug-as-join is symmetric and natural.
|
|
353
|
-
|
|
354
|
-
**(C) Single Schema with field-level localized flags.** e.g.
|
|
355
|
-
`properties.title: { type: string, localized: true }`. Each row's
|
|
356
|
-
`data.title` becomes a map keyed by locale. Rejected: row layout
|
|
357
|
-
forces every read to deserialize all locales even when one is
|
|
358
|
-
needed; row size grows with locale count instead of with content
|
|
359
|
-
count; the storage shape no longer matches the author-facing shape;
|
|
360
|
-
AI agents writing one-locale-at-a-time face a more complex write
|
|
361
|
-
API; no clean way to declare "this Schema is fully non-translatable."
|
|
362
|
-
The two-Schema decomposition is more verbose in the small case but
|
|
363
|
-
composes correctly.
|
|
364
|
-
|
|
365
|
-
**(D) Auto-detect `localized` from JSON Schema content.** If the
|
|
366
|
-
JSON Schema has a `locale` property, treat the Schema as localized.
|
|
367
|
-
Rejected: magic. The Schema author should declare locale intent
|
|
368
|
-
explicitly on the Schema atom, not bury it as a property name
|
|
369
|
-
convention.
|
|
370
|
-
|
|
371
|
-
**(E) Default `siteDefaults.locales: ['en']`.** Rejected per the
|
|
372
|
-
stated positioning ("multi-locale serving worldwide"). Pre-filling
|
|
373
|
-
English biases the SDK toward English-first products; a `zh-TW`-primary
|
|
374
|
-
site shouldn't have to override a default that's there from
|
|
375
|
-
unconscious template bias. `siteDefaults.locales` is **omitted by
|
|
376
|
-
default** in the starter's CmsConfig, so a single-language consumer
|
|
377
|
-
who doesn't care about locale never types the word.
|
|
378
|
-
|
|
379
|
-
**(F) Default `Schema.spec.localized: true`.** Rejected: makes the
|
|
380
|
-
common simple case (tags, settings, single-language blog) require
|
|
381
|
-
explicit opt-out. Default false matches the principle that locale
|
|
382
|
-
ceremony is opt-in.
|
|
383
|
-
|
|
384
|
-
**(G) Read `site_config.locales` at boot to gate manifest
|
|
385
|
-
acceptance.** This is what the POC originally did, and what issue
|
|
386
|
-
#60 fixed. Rejected because it creates a chicken-and-egg on first
|
|
387
|
-
deploy (manifest can't load until D1 is seeded; D1 can't be seeded
|
|
388
|
-
until SDK is running). The runtime gate + `siteDefaults` declarative
|
|
389
|
-
seed replaces it cleanly.
|
|
390
|
-
|
|
391
|
-
## How to apply
|
|
392
|
-
|
|
393
|
-
When designing a new Schema:
|
|
394
|
-
|
|
395
|
-
1. Default to **non-localized**. If the content can carry the same
|
|
396
|
-
meaning across all the site's locales, leave `localized` off.
|
|
397
|
-
2. Set `localized: true` only when the entry's *meaning* changes per
|
|
398
|
-
locale (an article translated; a product description localized).
|
|
399
|
-
3. If some fields translate and others don't, **decompose into two
|
|
400
|
-
Schemas**: a parent (non-localized facts) and a child with
|
|
401
|
-
`translates: { parent: <name>, on: <field> }` and
|
|
402
|
-
`localized: true`. Choose the join field by what the application
|
|
403
|
-
already uses as a stable identifier — usually `slug`, sometimes a
|
|
404
|
-
numeric id.
|
|
405
|
-
|
|
406
|
-
When implementing SDK features that depend on Schema-level locale
|
|
407
|
-
intent:
|
|
408
|
-
|
|
409
|
-
1. Read `Schema.spec.localized` directly. Don't sniff the JSON
|
|
410
|
-
Schema's properties for a `locale` field.
|
|
411
|
-
2. Read the site-config accessor for the site's locale list. Empty
|
|
412
|
-
array means locale subsystem off; treat any localized Schema as
|
|
413
|
-
misconfigured (the runtime gate already produces a structured
|
|
414
|
-
diagnostic).
|
|
415
|
-
3. When writing: validate `data.locale` presence/absence against the
|
|
416
|
-
Schema's `localized` flag and value membership in the site locale
|
|
417
|
-
list before delegating to the handler.
|
|
418
|
-
|
|
419
|
-
When configuring a new consumer:
|
|
420
|
-
|
|
421
|
-
1. If the site has any locales, declare them in
|
|
422
|
-
`CmsConfig.siteDefaults.locales` in Mantle's canonical locale form
|
|
423
|
-
(`'en'`, `'zh-TW'`, never `'en-US'` if you mean `'en'`; never
|
|
424
|
-
`'zh-Hant'` if you mean Traditional Chinese — use `'zh-TW'`). The
|
|
425
|
-
boot check rejects malformed or unsupported tags synchronously.
|
|
426
|
-
2. If the site has no locales, omit `siteDefaults.locales` entirely.
|
|
427
|
-
The whole subsystem stays off.
|
|
428
|
-
3. Don't write `site_config` rows manually for the seed —
|
|
429
|
-
`bootInit()` seeds through `DatabaseSiteConfigRepository` and is idempotent.
|
|
430
|
-
Operators who later edit values via the admin Settings page win
|
|
431
|
-
over the seed (the `ON CONFLICT(key) DO NOTHING` clause is what
|
|
432
|
-
makes that safe).
|
|
433
|
-
|
|
434
|
-
## Implementation status
|
|
435
|
-
|
|
436
|
-
Accepted for v0.1.0. The POC shipped the grammar, runtime gate, and
|
|
437
|
-
`siteDefaults` seed; the v0.1.0 rebuild ports the same shapes into
|
|
438
|
-
the new package layout (`@aotter/mantle-spec` for the manifest
|
|
439
|
-
grammar, `@aotter/mantle-runtime` for the gate, the CF adapter
|
|
440
|
-
for `createCmsRuntime().bootInit()` + `DatabaseSiteConfigRepository.seed`):
|
|
441
|
-
|
|
442
|
-
- Grammar in `packages/mantle-spec/src/domain/model/ManifestGrammar.ts`
|
|
443
|
-
+ the manifest parser.
|
|
444
|
-
- Cross-Schema validation in the validate + boot phases.
|
|
445
|
-
- D1 schema: no shared `entries.locale` column; each localized native Schema
|
|
446
|
-
table owns its `locale` field and declared index.
|
|
447
|
-
- `site_config` key/value table with the `locales` key.
|
|
448
|
-
- Runtime locale gate in `packages/mantle-runtime/src/domain/service/ContentLocaleGate.ts`.
|
|
449
|
-
- `CmsConfig.siteDefaults` consumed by runtime `bootInit()`, with
|
|
450
|
-
`assertSiteDefaultsCanonical` + `DatabaseSiteConfigRepository.seed`
|
|
451
|
-
(async, idempotent).
|
|
452
|
-
- Starter blog manifests demo the parent/child pattern:
|
|
453
|
-
`posts` + `post-translations`.
|