@aotter/mantle 0.2.0-alpha.1 → 0.2.0-alpha.10
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 +180 -45
- package/dist/auth/adapter.d.ts +32 -0
- package/dist/auth/adapter.js +288 -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 +155 -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 +63 -0
- package/dist/auth/oauth.js +217 -0
- package/dist/auth/resource-seeds.js +10 -0
- package/dist/auth/routes.d.ts +32 -0
- package/dist/auth/routes.js +226 -0
- package/dist/build/compiler.d.ts +721 -0
- package/dist/build/compiler.js +7029 -0
- package/dist/{spec → build/spec}/domain/model/ManifestGrammar.d.ts +30 -43
- package/dist/{spec → build/spec}/domain/model/RuntimePlan.d.ts +77 -3
- package/dist/{spec → build/spec}/domain/model/SqlIr.d.ts +39 -6
- package/dist/build/spec/domain/model/UserFields.d.ts +21 -0
- package/dist/{spec → build/spec}/domain/service/PlanFingerprint.d.ts +4 -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 +57 -0
- package/dist/domain/describe/chunk-ZVXBGP7Y.js +424 -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 +19 -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 +230 -0
- package/dist/domain/recipes.js +24 -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 +188 -0
- package/dist/infrastructure/cli.js +118 -0
- package/dist/infrastructure/generate.d.ts +12 -0
- package/dist/infrastructure/generate.js +189 -0
- package/dist/infrastructure/generateAuth.d.ts +8 -0
- package/dist/infrastructure/generateAuth.js +74 -0
- package/dist/infrastructure/help.js +60 -0
- package/dist/infrastructure/init.js +54 -0
- package/dist/infrastructure/inputs.js +41 -0
- package/dist/infrastructure/mounts.js +25 -0
- package/dist/infrastructure/wrangler.js +109 -0
- package/dist/kernel/authorization.d.ts +4 -0
- package/dist/kernel/authorization.js +16 -0
- package/dist/kernel/binds.d.ts +60 -0
- package/dist/kernel/binds.js +49 -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 +143 -0
- package/dist/kernel/contracts.js +97 -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 +38 -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/drain.d.ts +5 -0
- package/dist/kernel/drain.js +35 -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 +99 -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 +39 -0
- package/dist/kernel/host-caller.js +56 -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 +69 -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 +371 -0
- package/dist/kernel/mcp.d.ts +110 -0
- package/dist/kernel/mcp.js +50 -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 +64 -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 +44 -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 +39 -0
- package/dist/kernel/site.js +32 -0
- package/dist/kernel/store.d.ts +175 -0
- package/dist/kernel/store.js +269 -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 +35 -0
- package/dist/kernel/user-fields.js +81 -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-index.js +40 -0
- package/dist/kernel/web-response.js +8 -0
- package/dist/kernel/web.d.ts +77 -0
- package/dist/kernel/web.js +124 -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 +143 -0
- package/dist/usecase/adminClient.js +87 -0
- package/dist/usecase/adminDescriptors.js +107 -0
- package/dist/usecase/generate.js +166 -0
- package/dist/usecase/handlers.js +21 -0
- package/dist/usecase/mcp-media.js +17 -0
- package/dist/usecase/mcp.js +100 -0
- package/dist/usecase/paging.js +71 -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 +39 -0
- package/dist/usecase/stores.js +64 -0
- package/dist/usecase/tool-version.js +9 -0
- package/dist/usecase/translations.js +78 -0
- package/dist/usecase/ttl.js +20 -0
- package/dist/usecase/validation.js +241 -0
- package/dist/usecase/web.js +23 -0
- package/docs/examples/README.md +39 -16
- package/docs/examples/app-shell/README.md +121 -0
- package/docs/examples/app-shell/accept.mjs +91 -0
- package/docs/examples/app-shell/gitignore +7 -0
- package/docs/examples/app-shell/package.json +43 -0
- package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
- package/docs/examples/app-shell/smoke-kit.mjs +168 -0
- package/docs/examples/app-shell/src/auth.ts +58 -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 +14 -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 +6 -2
- package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
- package/docs/examples/app-shell/wrangler.jsonc +62 -0
- package/docs/examples/club-events/README.md +65 -0
- package/docs/examples/club-events/manifests/club-events.yaml +247 -0
- package/docs/examples/club-events/smoke.mjs +127 -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 +78 -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 +8 -0
- package/docs/examples/purchasing/.dev.vars.example +6 -0
- package/docs/examples/purchasing/README.md +99 -0
- package/docs/examples/purchasing/manifests/purchasing.yaml +374 -0
- package/docs/examples/purchasing/seed.sql +4 -0
- package/docs/examples/purchasing/smoke.mjs +191 -0
- package/docs/examples/purchasing/src/admin.tsx +13 -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 +69 -0
- package/docs/examples/recipes/README.md +60 -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 +74 -0
- package/docs/handbook/cloudflare/authentication.md +186 -108
- package/docs/handbook/cloudflare/chatgpt-sites.md +5 -112
- package/docs/handbook/cloudflare/deploy-and-operate.md +59 -87
- package/docs/handbook/cloudflare/media-r2.md +61 -82
- package/docs/handbook/cloudflare/service-entry.md +220 -119
- package/docs/handbook/concepts/authorization.md +10 -117
- 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 +24 -116
- 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-ui.md +113 -136
- package/docs/handbook/guides/agent-setup.md +32 -27
- package/docs/handbook/guides/agent-workflow-acceptance.md +232 -0
- package/docs/handbook/guides/email.md +86 -0
- package/docs/handbook/guides/local-testing.md +40 -0
- package/docs/handbook/guides/mcp-apps.md +560 -0
- package/docs/handbook/guides/native-admin.md +566 -0
- package/docs/handbook/guides/native-execution.md +133 -0
- package/docs/handbook/guides/oauth.md +219 -0
- package/docs/handbook/guides/postgres-adapters.md +56 -0
- package/docs/handbook/guides/public-pages.md +87 -0
- package/docs/handbook/guides/size-and-startup.md +9 -0
- package/docs/handbook/guides/sql-patterns.md +266 -0
- package/docs/handbook/guides/typed-queries.md +210 -100
- package/docs/handbook/navigation.json +176 -30
- package/docs/handbook/reference/admin-descriptors.md +53 -0
- package/docs/handbook/reference/authorization.md +44 -52
- package/docs/handbook/reference/describe.md +56 -0
- package/docs/handbook/reference/diagnostics.md +19 -77
- package/docs/handbook/reference/features.md +45 -53
- package/docs/handbook/reference/manifest.md +6 -69
- package/docs/handbook/reference/procedure.md +11 -115
- package/docs/handbook/reference/schema.md +81 -172
- package/docs/handbook/reference/site-config.md +5 -65
- package/docs/handbook/reference/sql.md +64 -0
- package/docs/handbook/reference/surface.md +396 -93
- package/docs/handbook/reference/trigger.md +62 -89
- package/docs/handbook/reference/view.md +40 -158
- package/docs/handbook/releases/index.md +198 -12
- package/docs/handbook/start/agents.md +45 -0
- package/docs/handbook/start/overview.md +9 -56
- package/docs/handbook/start/project-and-cli.md +51 -131
- package/docs/handbook/start/quickstart-worker.md +38 -115
- package/docs/skills/develop/SKILL.md +77 -121
- package/docs/skills/integrate/SKILL.md +37 -84
- package/docs/skills/media-gc/SKILL.md +21 -8
- package/docs/skills/provision/SKILL.md +31 -87
- package/docs/skills/update/SKILL.md +20 -34
- package/docs/source/scripts/postgres-adapter.ts +101 -0
- package/docs/upgrade-0.1-to-0.2.md +26 -10
- package/package.json +120 -112
- package/skills/README.md +67 -0
- package/skills/mantle/SKILL.md +76 -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 -589
- package/dist/admin/createAdminSurface.js.map +0 -1
- package/dist/admin/developerConsole.d.ts +0 -264
- 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 -4
- package/dist/admin/index.d.ts.map +0 -1
- package/dist/admin/index.js +0 -4
- package/dist/admin/index.js.map +0 -1
- package/dist/admin/procedureFlow.d.ts +0 -25
- package/dist/admin/procedureFlow.d.ts.map +0 -1
- package/dist/admin/procedureFlow.js +0 -154
- 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 -4565
- package/dist/auth/buildAuth.d.ts.map +0 -1
- package/dist/auth/buildAuth.js +0 -307
- 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 +0 -128
- 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 -483
- 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 -355
- 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 -352
- 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/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 -16
- package/dist/core/withCaller.d.ts.map +0 -1
- package/dist/core/withCaller.js +0 -29
- 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 -34
- package/dist/mcp/createMcpSurface.d.ts.map +0 -1
- package/dist/mcp/createMcpSurface.js +0 -150
- 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/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 -39
- 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 -919
- 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 -25
- package/docs/adr/0032-store-centric-core-and-service-contract.md +0 -361
- 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 -215
- 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 -156
- 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/skills/develop/mcp-app.md +0 -79
- /package/docs/examples/{reference-service → app-shell}/.dev.vars.example +0 -0
|
@@ -0,0 +1,133 @@
|
|
|
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` on every
|
|
29
|
+
target, `| null` unless the View proves the column NOT NULL ([nullability](../reference/view.md#results-and-paging)): 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, and computed outputs that are JSON documents by construction
|
|
38
|
+
(JSON aggregates and builders), become JSON values and booleans, preserving aliases and nulls;
|
|
39
|
+
PostgreSQL already returns those native values.
|
|
40
|
+
Declared real/float outputs remain numbers. Computed outputs without proved lineage,
|
|
41
|
+
SQL Procedures and app-owned ref results retain native values and types.
|
|
42
|
+
Bare Views/Procedures, the Store, web pages and internal paged Views stay
|
|
43
|
+
driver-native; bare queries and the Store receive no integer SQL projection,
|
|
44
|
+
transport conversion or runtime schema interpreter.
|
|
45
|
+
|
|
46
|
+
Declared authorization, ownership/TTL SQL policy, explicit OCC and atomic writes
|
|
47
|
+
remain required. Generate them as the native application would implement them.
|
|
48
|
+
Transaction rollback and uncertain COMMIT handling must still preserve data-loss
|
|
49
|
+
protection and client disposal responsibility; native errors are rethrown (one exception, below), and
|
|
50
|
+
redaction before they reach HTTP users belongs to the application boundary through `wire` / `surfaceFailure`. Removing generic error
|
|
51
|
+
normalization does not authorize dropping transaction outcome evidence.
|
|
52
|
+
|
|
53
|
+
**Single-statement writes:** a Procedure with one statement is atomic on its own
|
|
54
|
+
and runs in autocommit, with no BEGIN/COMMIT on PG or native transaction on Bun
|
|
55
|
+
SQLite. A row-classified statement touches at most one row (one-row INSERT or
|
|
56
|
+
unique `id =`), so a failed count check after autocommit has changed nothing.
|
|
57
|
+
On PG it runs at the server's default isolation, not SERIALIZABLE: a concurrent
|
|
58
|
+
OCC loser re-evaluates its `version =` predicate, matches zero rows and returns
|
|
59
|
+
`CONFLICT` instead of SQLSTATE 40001. A server ErrorResponse (SQLSTATE and
|
|
60
|
+
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,
|
|
61
|
+
resource and shutdown classes (08, 28, 53, 57, 58, XX), which, like any failure
|
|
62
|
+
without a server response (lost socket), are `OUTCOME_UNKNOWN`. SQLSTATE is
|
|
63
|
+
`errno` on Bun.SQL and `code` on postgres.js. Multi-statement Procedures run in
|
|
64
|
+
`begin("isolation level serializable", ...)`: a failure before the callback
|
|
65
|
+
returns was rolled back by `begin`; only a failed COMMIT is classified as above.
|
|
66
|
+
|
|
67
|
+
**Date-time wire form:** a View output that is a declared `date-time` column
|
|
68
|
+
(including `created_at`/`updated_at`) returns the handbook's wire form, an ISO
|
|
69
|
+
string in UTC with six fractional digits; a declared `date` returns `YYYY-MM-DD`.
|
|
70
|
+
The generator wraps those SELECT items before the dialect's own printer prints them
|
|
71
|
+
(`to_char` on PostgreSQL, `strftime`/`date` with floor arithmetic on SQLite), so the
|
|
72
|
+
database formats them and no row decoder runs. Bun.SQL's `Date` would drop
|
|
73
|
+
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
|
|
74
|
+
valid `Date`), and a declared date takes `YYYY-MM-DD` text, on every target: a
|
|
75
|
+
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
|
|
76
|
+
microseconds and days while PostgreSQL receives the canonical text. Computed values
|
|
77
|
+
(`now()`, `date_trunc`, `CAST`) carry no declared type and stay driver-native; on
|
|
78
|
+
PostgreSQL through Bun.SQL that is a `Date`, which drops microseconds. Other
|
|
79
|
+
declared scalars are driver-native.
|
|
80
|
+
|
|
81
|
+
JSON parameters are text on every target (a JavaScript array would otherwise be bound as a PostgreSQL array): an input field read as JSON takes its authored array or object, which the generated query serializes, and a string is bound as it is. Bare PG SQL declares each JSON parameter as text
|
|
82
|
+
(`CAST(CAST($n AS text) AS jsonb)`), so Bun.SQL sends the text verbatim instead of
|
|
83
|
+
JSON-encoding it again; generation refuses a JSON parameter used any other way. SQLite bool/date/timestamp/numeric parameters use their declared
|
|
84
|
+
storage representations. Bound optional fields become explicit required values,
|
|
85
|
+
with null representing absence; D1 cannot bind undefined. Native output keys are
|
|
86
|
+
SQL names rather than a post-query camel-case projection. PG uses the driver's
|
|
87
|
+
default type parsers (including Date and int8 strings); custom application parser
|
|
88
|
+
configuration changes application-owned behavior. Procedures expose raw
|
|
89
|
+
`{ results }`, not a claim of validated authored output.
|
|
90
|
+
|
|
91
|
+
The application resolves a verified Caller once at its entry, using its selected
|
|
92
|
+
auth module or identity. Bare queries accept that application-supplied Caller and
|
|
93
|
+
do not verify credentials. SQL binds the caller subject directly; a system
|
|
94
|
+
caller is application-owned and never wire input.
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
## PostgreSQL settings
|
|
98
|
+
|
|
99
|
+
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.
|
|
100
|
+
|
|
101
|
+
## Ref Procedures
|
|
102
|
+
|
|
103
|
+
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.
|
|
104
|
+
|
|
105
|
+
Lifecycle and schedule Triggers and dynamic authorization guards are rejected by generation. Use app-owned handlers and scheduling. HTTP/MCP Triggers expose declared Procedures.
|
|
106
|
+
|
|
107
|
+
## TTL maintenance
|
|
108
|
+
|
|
109
|
+
A TTL Schema generates `<schema>.sweepExpired(db, caller, { limit?, cursor?, delete? })`
|
|
110
|
+
in `procedures/<schema>.sweepExpired.ts`. Only an application-created system caller
|
|
111
|
+
with a non-empty reason may invoke it; HTTP/OAuth callers cannot become system
|
|
112
|
+
callers. The app owns scheduling. Schedule/lifecycle Triggers remain refused.
|
|
113
|
+
|
|
114
|
+
The sweep returns `{ scanned, removed, nextCursor? }`, defaults to 500 candidates,
|
|
115
|
+
and accepts limits 1..500. `delete: false` scans without deleting. Cursors belong
|
|
116
|
+
to that Schema's sweep. NULL and future TTL values survive; a timestamp exactly
|
|
117
|
+
at the shared dialect cutoff expires. Maintenance deliberately ignores scope and
|
|
118
|
+
publishing visibility, deleting expired rows across tenants. Candidate selection
|
|
119
|
+
and deletion run atomically through the native driver with its existing uncertain
|
|
120
|
+
transaction outcome handling. Native triggers may suppress deletes, so scanned
|
|
121
|
+
and removed counts can differ; the cursor advances over selected candidates.
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
Keep the sweep import in the scheduled entry; apps selecting unrelated operations
|
|
125
|
+
exclude maintenance code. Set `triggers.crons` in Wrangler yourself. The SDK's
|
|
126
|
+
`toCloudflareCron` helper (the `cron` subpath) converts five-field POSIX schedules
|
|
127
|
+
(weekday 0=Sunday) to Cloudflare weekdays (1=Sunday); it refuses ambiguous schedules
|
|
128
|
+
that restrict both day-of-month and weekday. This is conversion only, no dispatcher.
|
|
129
|
+
Bound scheduled work to your host's execution budget; keep the returned cursor
|
|
130
|
+
when continuing a larger sweep in a later invocation.
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
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,219 @@
|
|
|
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`. Add
|
|
9
|
+
`oauthGrantRevocation()` from the same module to the plugins: it ends a user's
|
|
10
|
+
grants on a password reset or admin action (below), and `mantle generate --auth`
|
|
11
|
+
refuses an OAuth provider without it.
|
|
12
|
+
Configure
|
|
13
|
+
`consentPage: "/oauth/consent"`, loginPage,
|
|
14
|
+
resources, allowed/default client registration scopes, and public/native DCR
|
|
15
|
+
explicitly. For MCP clients use the SDK's `mcp` preset, `allowPublicClientPrelogin:
|
|
16
|
+
true`, and a `90d` registration client-secret expiration. The application selects
|
|
17
|
+
plugins and options; Mantle does not wrap Better Auth or run runtime DDL.
|
|
18
|
+
|
|
19
|
+
With Mantle's native adapters, `oauthProvider.resources` comes from runtime
|
|
20
|
+
configuration, including environment-derived identifiers. `schema.sql` contains
|
|
21
|
+
auth DDL only. On the first OAuth lookup of a configured resource (authorization,
|
|
22
|
+
token issuance, registration defaults or audience checks), the adapter validates
|
|
23
|
+
and inserts the missing row with insert-if-absent semantics. Concurrent requests
|
|
24
|
+
are safe; subsequent lookups preserve persisted policy edits. No resource deploy
|
|
25
|
+
step is required, and `resourceSeedMode` does not overwrite existing rows.
|
|
26
|
+
To retire a resource, set its persisted `disabled` policy (or configure it disabled
|
|
27
|
+
before its first lookup). Removing configuration does not disable an existing row.
|
|
28
|
+
Do not delete a configured resource row: a later lookup in a new adapter instance
|
|
29
|
+
can recreate it from configuration. On
|
|
30
|
+
`/oauth2/authorize` an invalid configured identifier surfaces as the provider's
|
|
31
|
+
`invalid_target` redirect rather than HTTP 500.
|
|
32
|
+
|
|
33
|
+
Auth initialization, cookie/bearer resolution and normal MCP/REST requests perform
|
|
34
|
+
no resource SELECT or INSERT. The adapter suppresses the provider's eager and
|
|
35
|
+
bulk lazy seeding. Invalid configured identifiers produce HTTP 500 with
|
|
36
|
+
`AUTH_CONFIGURATION_ERROR` and no write; unconfigured identifiers keep the
|
|
37
|
+
provider's normal rejection. Validation follows upstream's identifier validator
|
|
38
|
+
(or absolute URI without a fragment by default); unsupported signing algorithms
|
|
39
|
+
are dropped before insertion.
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
import { authRoutes } from "@aotter/mantle/auth/routes";
|
|
43
|
+
import { authLoader } from "@aotter/mantle/auth";
|
|
44
|
+
const auth = authLoader(() => import("./auth.js").then(m => m.auth));
|
|
45
|
+
const routes = authRoutes(auth, {
|
|
46
|
+
methods: [{ kind: "email-otp" }],
|
|
47
|
+
connectedAppsPage: "/admin/connected-apps", // optional; otherwise plain HTML
|
|
48
|
+
});
|
|
49
|
+
// In fetch: await routes(request) ?? otherRoutes(request).
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`GET /api/auth/methods` exposes only the supplied method descriptions and does
|
|
53
|
+
not load auth. `basePath` must match Better Auth if changed. Better Auth owns all
|
|
54
|
+
`/api/auth/*` endpoints and RFC 8414/9728 well-known discovery routes. Mount those
|
|
55
|
+
well-known paths at the origin, before a catch-all or proxy; retain the external
|
|
56
|
+
issuer/resource URL and trusted forwarding rules. The SDK handler receives them
|
|
57
|
+
unchanged. A POST registration whose redirect URIs are all HTTP localhost,
|
|
58
|
+
127.0.0.1 or [::1] becomes `application_type: "native"` when omitted; explicit
|
|
59
|
+
types and mixed/external callbacks stay under the SDK's validation.
|
|
60
|
+
|
|
61
|
+
With the optional Admin UI selected, use `consentPage:
|
|
62
|
+
"/admin/oauth/consent"`, as in `docs/examples/app-shell/src/auth.ts`, and keep
|
|
63
|
+
`adminShell` mounted in the service entry. That page uses mantle-ui's `AuthCard`,
|
|
64
|
+
cards and sign-in buttons; it loads the verified request from
|
|
65
|
+
`/oauth/consent/data` and posts the original signed payload to `/oauth/consent`.
|
|
66
|
+
The UI displays the client, callback origin, requested scopes and background
|
|
67
|
+
access explanation. Keep Core's script-free `/oauth/consent` HTML as the
|
|
68
|
+
adapter-neutral fallback, not as the reference application's styled page.
|
|
69
|
+
|
|
70
|
+
`/oauth/consent` and `/oauth/consents` serve escaped, script-free English or zh-TW
|
|
71
|
+
HTML. Their `/data` routes serve the 0.2 UI JSON shapes. Consent approval and
|
|
72
|
+
`POST /oauth/consents/revoke` require a live cookie session and same-origin
|
|
73
|
+
mutation; bearer credentials cannot grant or disconnect apps. Consent completion
|
|
74
|
+
uses only the provider-validated signed query and redirect. All responses are
|
|
75
|
+
private/no-store. Connected-app redirects must be same-origin paths.
|
|
76
|
+
|
|
77
|
+
`resolveCaller(request, loader, { audience, scopes })` verifies token signature,
|
|
78
|
+
issuer, audience and request-bound DPoP through Better Auth, including a durable
|
|
79
|
+
single-use proof reservation. It then checks the live consent and session and
|
|
80
|
+
loads the current database user.
|
|
81
|
+
All of sub, azp, mantle_consent_id and the consent reference must match, and so
|
|
82
|
+
must sid while the token stands on its session (an `offline_access` token may
|
|
83
|
+
outlive it; see below). The consent must cover the resource and every token
|
|
84
|
+
scope. `scopes` adds a resource-specific scope floor (403 when missing).
|
|
85
|
+
Unbound legacy tokens fail closed. Disconnect deletes the grant first, revokes
|
|
86
|
+
its access/refresh tokens. Tokens issued without an active consent fail closed.
|
|
87
|
+
First-party `skip_consent` tokens instead require a live, enabled client with
|
|
88
|
+
`skipConsent` and allowed scopes, plus the same session or `offline_access`
|
|
89
|
+
rule as consented tokens. Already-issued
|
|
90
|
+
JWTs fail on the next call, and reconsenting cannot revive the old JWT lineage.
|
|
91
|
+
|
|
92
|
+
Grant lifetime follows Better Auth. Better Auth issues a refresh token only when
|
|
93
|
+
the grant includes `offline_access`; a client registered for `authorization_code`
|
|
94
|
+
may use `refresh_token` too, so registering only `authorization_code` does not
|
|
95
|
+
prevent long-lived grants.
|
|
96
|
+
CIMD is the primary client-discovery path; dynamic client registration (DCR)
|
|
97
|
+
remains available for older MCP clients. Both paths require the client to request
|
|
98
|
+
`offline_access` and the user to consent before a renewable grant is issued.
|
|
99
|
+
The DCR registration defaults below apply only to that compatibility path.
|
|
100
|
+
|
|
101
|
+
For renewable MCP connections, the examples set both `scopes` and
|
|
102
|
+
`clientRegistrationDefaultScopes` to `["mcp", "offline_access"]`, so a dynamically
|
|
103
|
+
registered client that omits `scope` is registered for `mcp offline_access`. The
|
|
104
|
+
client must request those registered scopes during authorization and the user must
|
|
105
|
+
consent to background access. If the client explicitly requests only `mcp`, OAuth
|
|
106
|
+
must not add a scope the user did not consent to: the resulting grant is bound to
|
|
107
|
+
the browser session and has no refresh token. The client must request
|
|
108
|
+
`offline_access`, or the user must reconnect and authorize it, to gain renewable
|
|
109
|
+
access. Declaring the `refresh_token` grant type alone is insufficient.
|
|
110
|
+
`offline_access` belongs in authorization-server metadata, not in the protected
|
|
111
|
+
resource's required scope floor; resource metadata continues to advertise `mcp`.
|
|
112
|
+
|
|
113
|
+
For renewable connections, the app-shell's MCP handler also supplies an explicit
|
|
114
|
+
OAuth linking hint:
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
const handleMcp = mcp({
|
|
118
|
+
db: (env: Env) => env.DB,
|
|
119
|
+
caller: resolveRequestCaller,
|
|
120
|
+
authorizationScopes: ["offline_access"],
|
|
121
|
+
});
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
`authorizationScopes` adds scopes to the standard `WWW-Authenticate` challenge
|
|
125
|
+
when the caller is unauthenticated. With the default `requiredScopes`, that
|
|
126
|
+
challenge requests `mcp offline_access`. It does **not** change the API scope
|
|
127
|
+
floor, add scopes to a valid token, issue tokens or modify an already-signed
|
|
128
|
+
authorization request. An existing valid `mcp`-only token can still call a tool
|
|
129
|
+
that only requires `mcp`. The application must independently permit
|
|
130
|
+
`offline_access` in its provider and the user must explicitly consent.
|
|
131
|
+
Verify the actual requested scopes, refresh-token issuance and post-expiry
|
|
132
|
+
rotation in the intended client. Do not put `offline_access` in the resource's
|
|
133
|
+
required scope floor or silently add it after consent.
|
|
134
|
+
|
|
135
|
+
For an existing connection granted only `mcp`, deploy the allowed-scope change,
|
|
136
|
+
refresh the client's discovery/registration metadata, then reconnect or reauthorize
|
|
137
|
+
once with `offline_access` and obtain updated consent. Allowing a scope does not
|
|
138
|
+
add it to a stored consent. Do not edit consent rows, prolong access-token TTLs or
|
|
139
|
+
disable grant checks to avoid that step. Verify a refresh token was issued and
|
|
140
|
+
that the client can rotate it and resume MCP after access expiry; a successful
|
|
141
|
+
initial `tools/list` does not prove renewable authorization. The reference service's
|
|
142
|
+
local smoke exercises issuance, refresh after website sign-out, rotation retry
|
|
143
|
+
and revocation using real OAuth endpoints and a disposable D1.
|
|
144
|
+
|
|
145
|
+
Without `offline_access` the grant is bound to the browser session: its tokens
|
|
146
|
+
stop working when that session expires or the user signs out. A refresh that
|
|
147
|
+
narrows the scope to drop `offline_access` after the session ends returns
|
|
148
|
+
`invalid_grant`, so it never yields an unusable token. An `offline_access` grant
|
|
149
|
+
outlives the browser session. Expiry, deletion and sign-out of the session leave
|
|
150
|
+
it usable until its current refresh token expires or is revoked. Revocation
|
|
151
|
+
includes disconnect, refresh-token revocation and Better Auth's reuse detection.
|
|
152
|
+
Each refresh rotates the token with a fresh `refreshTokenExpiresIn` (30 days by
|
|
153
|
+
default), so an offline grant that keeps refreshing does not expire. Without a live session, its access tokens need an
|
|
154
|
+
unrevoked, unexpired `offline_access` refresh token for the same user and client.
|
|
155
|
+
The consent, client, scope, resource and ban checks still apply. An access token
|
|
156
|
+
issued before sign-out stays valid until it expires (one hour by default).
|
|
157
|
+
`oauthGrantRevocation()` ends every OAuth grant of the user once one of these
|
|
158
|
+
succeeds: revokes their refresh and access tokens, deletes their consents for
|
|
159
|
+
every client (the next authorization asks again, except for a first-party
|
|
160
|
+
`skip_consent` client, which never asks) and their unredeemed
|
|
161
|
+
authorization codes. The events and the sessions each one ends:
|
|
162
|
+
|
|
163
|
+
| Event | Sessions ended |
|
|
164
|
+
| --- | --- |
|
|
165
|
+
| Password reset (`/reset-password`, `/email-otp/reset-password`, `/phone-number/reset-password`) | all |
|
|
166
|
+
| Admin password change (`/admin/set-user-password`) | all |
|
|
167
|
+
| Password change with `revokeOtherSessions` | all; Better Auth gives the current device a new session |
|
|
168
|
+
| Admin ban (`/admin/ban-user`, or `/admin/update-user` setting `banned: true`) | all (Better Auth) |
|
|
169
|
+
| Admin session revocation (`/admin/revoke-user-sessions`) | all (Better Auth) |
|
|
170
|
+
| Email OTP or magic-link sign-in (`/sign-in/email-otp`, `/magic-link/verify`) that proves the address of an unverified user | all, and its password and linked accounts (Better Auth) |
|
|
171
|
+
|
|
172
|
+
The last row covers account pre-hijacking: someone who signed up with another
|
|
173
|
+
person's address before it was verified loses their OAuth grants as well as the
|
|
174
|
+
password, linked accounts and sessions that Better Auth strips when the owner
|
|
175
|
+
proves the address. Mantle ends these grants before Better Auth checks the code or
|
|
176
|
+
link, while the user is still unverified, so a failed OTP or magic-link attempt on an
|
|
177
|
+
unverified user also ends that user's OAuth grants.
|
|
178
|
+
|
|
179
|
+
Otherwise a failed attempt, session expiry, a password change without `revokeOtherSessions`,
|
|
180
|
+
and the user's own sign-out, `/revoke-sessions` and `/revoke-other-sessions`
|
|
181
|
+
("sign out everywhere") end no OAuth grant, as in Better Auth; the user ends a
|
|
182
|
+
connected app's grant by disconnecting it on the connected-apps page
|
|
183
|
+
(`/oauth/consents`). Unbanning does not restore grants. An access token issued
|
|
184
|
+
before the event is rejected on its next use, with one exception: an
|
|
185
|
+
`offline_access` access token of a first-party `skip_consent` client passes again,
|
|
186
|
+
until it expires (one hour by default), once the user grants that client offline
|
|
187
|
+
access anew, because it is checked against any live `offline_access` refresh token
|
|
188
|
+
of the same user and client. Better Auth's `/oauth2/introspect` reports a refreshed
|
|
189
|
+
token inactive once its original session has expired, while Mantle's resource
|
|
190
|
+
check accepts it; Mantle does not use introspection.
|
|
191
|
+
Database failures remain server errors, rather than silently authenticating.
|
|
192
|
+
|
|
193
|
+
For app-owned API keys/personal tokens, supply `resolveCredential(request)` in
|
|
194
|
+
`resolveCaller` options. It runs before OAuth/cookies; return a verified user
|
|
195
|
+
Caller or null when absent, and throw when presented but invalid. The same scope
|
|
196
|
+
floor applies. Any non-Bearer/DPoP Authorization header (including Basic from a staging
|
|
197
|
+
gateway), unless handled by the app-owned credential hook, is UNAUTHENTICATED
|
|
198
|
+
and never falls back to a cookie. The application owns credential verification;
|
|
199
|
+
Mantle loads live roles, bans and declared stored fields.
|
|
200
|
+
|
|
201
|
+
For the 0.2 legacy-DCR cleanup policy, call `pruneLegacyOAuthClients(auth)` from
|
|
202
|
+
an application-owned hourly scheduled job. It deletes only ownerless,
|
|
203
|
+
non-CIMD/non-reference clients older than 90 days; it runs no boot-time work.
|
|
204
|
+
|
|
205
|
+
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.
|
|
206
|
+
|
|
207
|
+
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.
|
|
208
|
+
|
|
209
|
+
Use primary database sessions without session secondaryStorage as the simple
|
|
210
|
+
safe configuration. If optional session caching is enabled, use the
|
|
211
|
+
**authority-bound** secondary-storage adapter from the identity/auth template
|
|
212
|
+
(`@aotter/mantle/auth/hardening`, #1499): every snapshot must be checked against the primary session and current
|
|
213
|
+
user before the SDK can read it, including raw SDK endpoints and session lists.
|
|
214
|
+
Arbitrary session KV snapshots are outside this secure configuration: middleware
|
|
215
|
+
may trust stale roles or refresh an expired primary session from a snapshot.
|
|
216
|
+
Merely setting storeSessionInDatabase true does not fix those SDK endpoints.
|
|
217
|
+
Mantle's caller and raw-admin guard validate primary authority before refreshing,
|
|
218
|
+
but do not make arbitrary SDK session caching safe. Keep verification
|
|
219
|
+
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,87 @@
|
|
|
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 `node_modules/@aotter/mantle/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 `node_modules/@aotter/mantle/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). A type that has no date or language properties (`Product`) gets them on
|
|
30
|
+
a page node instead: an `@graph` with an `ItemPage` (`inLanguage`, dates, `mainEntity`) pointing to the `Product`
|
|
31
|
+
(`offers` with `price` and `priceCurrency`). Escape `<` in the serialized JSON so stored text cannot close the
|
|
32
|
+
script element. Do not add facts the page does not show.
|
|
33
|
+
- A short answer block for answer engines: one question heading and a one-sentence answer from the row's data.
|
|
34
|
+
- A Markdown alternate at `<url>.md`, linked with `<link rel="alternate" type="text/markdown">`.
|
|
35
|
+
|
|
36
|
+
## More than one language
|
|
37
|
+
|
|
38
|
+
- One URL per language (`/{locale}/...`), with `hreflang` alternates for each language the page exists in, plus
|
|
39
|
+
`x-default`. A language that is not published for this item gets no alternate and its URL is a 404.
|
|
40
|
+
- `og:locale:alternate` for the other languages, and a visible language switcher with `hreflang` and `lang` on links.
|
|
41
|
+
- Per-language Markdown alternates; `llms.txt` lists each language's items.
|
|
42
|
+
|
|
43
|
+
## Site files
|
|
44
|
+
|
|
45
|
+
- `/sitemap.xml` with every public URL in every language, walking the complete cursor chain of the list View (the
|
|
46
|
+
recipes example reads one page of 100 per language and marks the paging as `AGENT:` work).
|
|
47
|
+
- `/robots.txt` with `Disallow: /admin/` and the sitemap URL.
|
|
48
|
+
- `/llms.txt` ([llmstxt.org](https://llmstxt.org)): a title, a one-line summary and a link to each item's Markdown
|
|
49
|
+
alternate.
|
|
50
|
+
|
|
51
|
+
## A complete site
|
|
52
|
+
|
|
53
|
+
When the brief names a site, shop, catalogue or blog for visitors, these are part of the work without the user
|
|
54
|
+
listing them:
|
|
55
|
+
|
|
56
|
+
- Every item on this page, for every public page type the site has.
|
|
57
|
+
- Accessible, responsive pages with the app's own styling; the examples are unstyled on purpose.
|
|
58
|
+
- Content managed in Admin (draft, publish, edit, unpublish) shows on the site without a rebuild. Images go through
|
|
59
|
+
Admin's media library (`mantle help media-r2`); store committed asset IDs and never use an ID as an image URL.
|
|
60
|
+
- Members' pages, if any, send anonymous visitors to `/sign-in` (`signInRedirect` in the app shell's `src/sign-in.ts`).
|
|
61
|
+
- Who runs the site: an About/contact page and a footer with the business's name, location and contact, and on the
|
|
62
|
+
home page `Organization` (or `LocalBusiness`) JSON-LD with the same facts and the logo. Answer engines use these to
|
|
63
|
+
say whether the site is legitimate. Ask for the facts the brief lacks; never invent an address.
|
|
64
|
+
- A favicon, and `og:image` on the home and list pages too.
|
|
65
|
+
- A detail page leads to the action the brief sells (order, register, book), saying when it needs an account.
|
|
66
|
+
- A cache policy: `Last-Modified` (from the row's `updated_at`) or an `ETag` on pages, `.md`, sitemap and `llms.txt`,
|
|
67
|
+
so crawlers can revalidate; `no-store` everywhere is safe but makes every crawl a full fetch.
|
|
68
|
+
- Structured data and answer blocks state only what the page shows. Never promise ranking or AI citation.
|
|
69
|
+
|
|
70
|
+
## Check before you report done
|
|
71
|
+
|
|
72
|
+
Request each page without running JavaScript (plain `fetch` in `smoke.mjs`; `mantle help local-testing`) and assert:
|
|
73
|
+
|
|
74
|
+
1. HTML content type and the visible content; `<title>`, description, canonical on `PUBLIC_ORIGIN`, Open Graph; on
|
|
75
|
+
detail pages JSON-LD that parses with the visible name, and the answer block.
|
|
76
|
+
2. Each `.md` alternate returns `text/markdown` with the current text.
|
|
77
|
+
3. Walk the list View's complete cursor chain: its rows equal the `llms.txt` entries and the sitemap's detail URLs
|
|
78
|
+
(below the generated `web()` caps: 5,000 rows for `llms.txt`, 50,000 for the sitemap). `/robots.txt` names the
|
|
79
|
+
sitemap.
|
|
80
|
+
4. An unknown URL, a malformed path, a draft and a row the visitor may not read are 404, also with an admin session.
|
|
81
|
+
5. Publish, edit and unpublish an item through Admin's API (or the Procedure Admin uses); after each, its page,
|
|
82
|
+
`.md`, sitemap and `llms.txt` follow.
|
|
83
|
+
6. Stored text with `<`, `&` and `</script>` renders escaped in HTML and inside JSON-LD.
|
|
84
|
+
|
|
85
|
+
Report a check you could not run (for example a production origin you do not have) as UNVERIFIED with the reason.
|
|
86
|
+
Then run [independent acceptance](agent-workflow-acceptance.md) with a visitor evaluator in a browser on the
|
|
87
|
+
`pnpm accept` URL.
|
|
@@ -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, and Admin's browser code (`@aotter/mantle-admin/app`, `/hooks`, and so `generated/admin-client.ts`): import those only from `admin.tsx`, which `mantle bundle` builds into the assets directory. 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.
|