@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,281 +0,0 @@
|
|
|
1
|
-
# ADR-0011: Adapter port spec
|
|
2
|
-
|
|
3
|
-
**Status:** Superseded for Core storage and Admin composition by ADR-0019 and
|
|
4
|
-
for SQLite/D1 physical storage by ADR-0024.
|
|
5
|
-
Retained as the alpha.7 Cloudflare adapter record; `DatabaseDriver` is now an
|
|
6
|
-
implementation detail of the SQLite/D1 `MantleStorageAdapter`, while the asset
|
|
7
|
-
contract belongs to optional `@aotter/mantle-admin`.
|
|
8
|
-
|
|
9
|
-
**Date:** 2026-05-04 (revised 2026-05-09, 2026-05-10, 2026-08-11, 2026-08-13, and 2026-08-22).
|
|
10
|
-
|
|
11
|
-
## Context
|
|
12
|
-
|
|
13
|
-
`@aotter/mantle-runtime` is adapter-agnostic. It owns dispatcher, entry-writer, view executor, content-ops, render pipeline, boot validation, and MCP JSON-RPC dispatch. It depends only on `@aotter/mantle-spec` and a small set of TypeScript interfaces it defines itself.
|
|
14
|
-
|
|
15
|
-
`@aotter/mantle-cloudflare` is the only adapter shipping in v0.1.0. It binds the runtime's interfaces against Cloudflare Workers' D1 and ASSETS, and supplies a Better Auth instance (per ADR-0014) for sign-in and MCP authorization. Better Auth 1.7 stores OAuth grants in D1; auth storage remains adapter-owned infrastructure, not a runtime port.
|
|
16
|
-
|
|
17
|
-
This ADR fixes the contract so:
|
|
18
|
-
- Future adapter authors have a stable target.
|
|
19
|
-
- PR reviewers can mechanically check "does this commit add a CF-specific type to runtime?"
|
|
20
|
-
- The runtime can refactor freely as long as the port shapes stay stable.
|
|
21
|
-
|
|
22
|
-
The POC accumulated multiple half-decisions about this seam (POC ADR-0015 documented an aspirational `cms-astro`-internal discipline; POC ADR-0029 retired Astro and dissolved the seam; the rebuild closes it properly).
|
|
23
|
-
|
|
24
|
-
## Decision
|
|
25
|
-
|
|
26
|
-
> 0.1.2 amendment: the portable storage input is
|
|
27
|
-
> `PreparedMantleStorage` (`EntryRepository & EntryReader` plus
|
|
28
|
-
> `ViewQueryExecutor`). Hosts either use an official storage adapter with an
|
|
29
|
-
> already-owned client/handle or implement those semantic ports over their own
|
|
30
|
-
> tables. `AssetServer` moved out of Runtime to optional Mantle Admin. The
|
|
31
|
-
> two-port contract below is the historical alpha.7 shape.
|
|
32
|
-
|
|
33
|
-
Alpha.7 had **two required adapter ports**, defined as TypeScript interfaces in `@aotter/mantle-runtime/src/domain/port/`. Concrete adapters provided implementations and injected them into `createCmsRuntime`.
|
|
34
|
-
|
|
35
|
-
| Port | Surface |
|
|
36
|
-
|---|---|
|
|
37
|
-
| `DatabaseDriver` | All persistent state — `entries`, `site_config`, `staff`, `users`, plus migrations. |
|
|
38
|
-
| `AssetServer` | Static-asset serving for the admin SPA. The runtime hands the adapter an asset path + `Request`; the adapter returns a `Response` with the right MIME and caching. |
|
|
39
|
-
|
|
40
|
-
Rendered public artifacts are not a second storage model. D1 stays canonical;
|
|
41
|
-
adapters render on origin misses and may use their native HTTP response cache.
|
|
42
|
-
The Cloudflare adapter uses version-local Workers Cache, which runs before the
|
|
43
|
-
Worker for eligible anonymous responses.
|
|
44
|
-
|
|
45
|
-
Optional feature ports may also live in `domain/port/`, but they are
|
|
46
|
-
not part of the first-run adapter contract until a feature is enabled.
|
|
47
|
-
For v0.1.x media hosting and deferred lifecycle dispatch:
|
|
48
|
-
|
|
49
|
-
| Optional port | Surface |
|
|
50
|
-
|---|---|
|
|
51
|
-
| `MediaStorage` | Object-storage-shaped media upload/commit/public URL/delete contract for **public** media. Cloudflare may implement with R2, but runtime must not import R2 types. |
|
|
52
|
-
| `DeferredHookDispatcher` | Queue-shaped dispatcher for at-least-once `after_*` lifecycle delivery. Cloudflare may implement with Workers Queues; other adapters may use a queue, job runner, or leave it unset. |
|
|
53
|
-
|
|
54
|
-
These optional ports must not force first-run provisioning to create R2
|
|
55
|
-
resources. Publication starters can carry external image URLs without a
|
|
56
|
-
media storage implementation.
|
|
57
|
-
|
|
58
|
-
`DeferredHookDispatcher.enqueue` confirms adapter acceptance only. It cannot
|
|
59
|
-
make an entry write and an external queue send atomic. The versioned envelope
|
|
60
|
-
contains a stable event id plus captured Trigger names; handlers combine them
|
|
61
|
-
for idempotency because retries and ambiguous producer fallback can duplicate
|
|
62
|
-
execution. Deferred envelopes carry persisted entry data and normalized actor
|
|
63
|
-
metadata, never arbitrary original request input. Adapter-specific retry,
|
|
64
|
-
delay, batch, DLQ, and message-size settings remain outside manifest grammar.
|
|
65
|
-
The operational reference is
|
|
66
|
-
[`docs/deferred-lifecycle-queues.md`](https://github.com/aotter/mantle/blob/main/docs/deferred-lifecycle-queues.md).
|
|
67
|
-
|
|
68
|
-
Identity, session, OAuth, and role enforcement are adapter-owned per
|
|
69
|
-
ADR-0014. The runtime does not define `SessionRepository`,
|
|
70
|
-
`OAuthVerifier`, `UserRepository`, or `StaffRepository` ports. Adapters
|
|
71
|
-
must provide an auth surface compatible with their HTTP framework and
|
|
72
|
-
must pass authenticated user/staff context into runtime dispatchers.
|
|
73
|
-
|
|
74
|
-
### Public vs private media — two buckets, two ports
|
|
75
|
-
|
|
76
|
-
`MediaStorage` deliberately models **public-only** semantics:
|
|
77
|
-
|
|
78
|
-
- `getPublicUrl()` returns an unconditional public URL. Reads bypass
|
|
79
|
-
the Worker entirely (`MEDIA_PUBLIC_URL_BASE` → CDN → R2).
|
|
80
|
-
- `MediaAsset.publicUrl` is frozen at commit time and embedded directly
|
|
81
|
-
into entry data (e.g. `posts.coverUrl`). This is intentional: for
|
|
82
|
-
public assets the URL is permanent, the read path is hot, and adding
|
|
83
|
-
a Worker round-trip on every render would defeat the cost / latency
|
|
84
|
-
model.
|
|
85
|
-
- The CORS config on the underlying R2 bucket scopes browser PUTs to
|
|
86
|
-
the admin origin only.
|
|
87
|
-
|
|
88
|
-
**Private content (subscription-gated, fan-club, signed-GET, etc.)
|
|
89
|
-
will be a *separate* port and a *separate* R2 bucket in v0.2.** Two
|
|
90
|
-
buckets, two ports — not one port with a `visibility` flag. Reasons:
|
|
91
|
-
|
|
92
|
-
1. **Bucket-level isolation.** Private bucket disables public access
|
|
93
|
-
at the bucket level, so the worst-case "leaked private object" bug
|
|
94
|
-
is structurally impossible.
|
|
95
|
-
2. **Different read paths.** Private reads MUST go through a Worker
|
|
96
|
-
route (`/api/media/private/<key>` or similar) that runs the policy
|
|
97
|
-
gate (staff predicate, subscription check, signed cookie, etc.)
|
|
98
|
-
before resolving the object. The Worker either streams via
|
|
99
|
-
`bucket.get()` or 302s to a short-lived signed GET URL.
|
|
100
|
-
3. **Different cost models.** Public bucket is CDN-cached, near-zero
|
|
101
|
-
marginal cost. Private bucket charges Worker invocations on every
|
|
102
|
-
read. Operator should opt into the cost knowingly, not by accident.
|
|
103
|
-
4. **Different MCP tool surface.** `create_private_media_upload` /
|
|
104
|
-
`commit_private_media_upload` keeps the closed-list semantics of
|
|
105
|
-
each tool tight. Agents pick the upload type explicitly.
|
|
106
|
-
5. **No migration debt.** Public assets stay public forever; their
|
|
107
|
-
`coverUrl` strings remain valid. Private fields use a different
|
|
108
|
-
schema field shape (`x-mcp-hint: private-media-image` over an
|
|
109
|
-
opaque `assetId`, resolved at render time through the policy gate).
|
|
110
|
-
No batch update over already-published entries.
|
|
111
|
-
|
|
112
|
-
Adding `PrivateMediaStorage` in v0.2 is a purely additive change to
|
|
113
|
-
the port set and the runtime. Current `MediaStorage` callers are
|
|
114
|
-
untouched. The Worker route, the use cases, the MCP tools, and the
|
|
115
|
-
adapter all live in their own module — they compose alongside the
|
|
116
|
-
public path rather than retrofitting it.
|
|
117
|
-
|
|
118
|
-
### `DatabaseDriver`
|
|
119
|
-
|
|
120
|
-
```ts
|
|
121
|
-
// packages/mantle-runtime/src/domain/port/DatabaseDriver.ts
|
|
122
|
-
export interface DatabaseDriver {
|
|
123
|
-
/** Run a parameterised query. Returns a typed result-set object — adapters
|
|
124
|
-
* normalise their native driver into this shape. */
|
|
125
|
-
prepare(sql: string): PreparedStatement;
|
|
126
|
-
/** Multi-statement transaction. Adapters guarantee atomicity. */
|
|
127
|
-
batch(stmts: ReadonlyArray<PreparedStatement>): Promise<BatchResult[]>;
|
|
128
|
-
/** Migration runner — invoked by `bootInit` once per isolate. */
|
|
129
|
-
migrations: MigrationRunner;
|
|
130
|
-
}
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
The runtime never sees `D1Database`, `Pool` (postgres), or any concrete driver. The `prepare` / `batch` shape is intentionally close to D1's surface (which is itself close to the SQLite C API) — that's the smallest common denominator. Adapters wrap their native driver to this shape.
|
|
134
|
-
|
|
135
|
-
The CF adapter's impl is a thin proxy over `env.DB` (D1). A future Postgres adapter can wrap its driver to the same shape.
|
|
136
|
-
|
|
137
|
-
### `AssetServer`
|
|
138
|
-
|
|
139
|
-
```ts
|
|
140
|
-
export interface AssetServer {
|
|
141
|
-
/** Resolve a request to a static asset (typically under `/admin/assets/*`).
|
|
142
|
-
* Returns null if the asset doesn't exist — the adapter's HTTP layer
|
|
143
|
-
* then falls back to the SPA catchall. */
|
|
144
|
-
fetch(req: Request): Promise<Response | null>;
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
CF adapter: wraps `env.ASSETS.fetch(req)`. Other adapters can use a filesystem or object storage.
|
|
149
|
-
|
|
150
|
-
The admin SPA itself lives in `@aotter/mantle-admin-ui` as a pre-built `dist/`. The adapter binds `AssetServer` to whatever serves that `dist/`; the runtime knows nothing about static asset serving except "ask the port and pass through the response."
|
|
151
|
-
|
|
152
|
-
## How adapters wire ports
|
|
153
|
-
|
|
154
|
-
> Historical alpha.7 example. Current convenience composition is
|
|
155
|
-
> `createMantleWorker`; ADR-0014's 2026-08-22 amendment replaces the OAuth
|
|
156
|
-
> provider shown below with Better Auth 1.7 MCP/CIMD.
|
|
157
|
-
|
|
158
|
-
```ts
|
|
159
|
-
// simplified Cloudflare adapter wiring (post-ADR-0014, amended
|
|
160
|
-
// 2026-05-15 by PR #193's OAuth carve-out).
|
|
161
|
-
import {
|
|
162
|
-
createAuth,
|
|
163
|
-
createCmsRef,
|
|
164
|
-
createMcpApiHandler,
|
|
165
|
-
createOAuthProvider,
|
|
166
|
-
mountAuthorize,
|
|
167
|
-
mountServerEndpoints,
|
|
168
|
-
AssetsAssetServer,
|
|
169
|
-
D1DatabaseDriver,
|
|
170
|
-
} from "@aotter/mantle-cloudflare";
|
|
171
|
-
|
|
172
|
-
const auth = createAuth({
|
|
173
|
-
database: env.DB,
|
|
174
|
-
baseURL: env.PUBLIC_ORIGIN,
|
|
175
|
-
secret: env.BETTER_AUTH_SECRET,
|
|
176
|
-
methods: [
|
|
177
|
-
{
|
|
178
|
-
kind: "social",
|
|
179
|
-
provider: "github",
|
|
180
|
-
options: {
|
|
181
|
-
clientId: env.GITHUB_CLIENT_ID,
|
|
182
|
-
clientSecret: env.GITHUB_CLIENT_SECRET,
|
|
183
|
-
},
|
|
184
|
-
},
|
|
185
|
-
],
|
|
186
|
-
bootstrapOwner: env.ADMIN_GITHUB_LOGIN
|
|
187
|
-
? { match: "github-login", value: env.ADMIN_GITHUB_LOGIN }
|
|
188
|
-
: undefined,
|
|
189
|
-
});
|
|
190
|
-
const cms = createCmsRef({
|
|
191
|
-
manifests,
|
|
192
|
-
handlers,
|
|
193
|
-
bindings: {
|
|
194
|
-
db: new D1DatabaseDriver(env.DB),
|
|
195
|
-
assets: new AssetsAssetServer(env.ASSETS),
|
|
196
|
-
},
|
|
197
|
-
auth,
|
|
198
|
-
});
|
|
199
|
-
const app = new Hono();
|
|
200
|
-
app.all("/api/auth/*", (c) => auth.handler(c.req.raw));
|
|
201
|
-
mountServerEndpoints(app, cms);
|
|
202
|
-
mountAuthorize(app, { auth }); // /oauth/authorize consent gate
|
|
203
|
-
|
|
204
|
-
// `OAuthProvider` must be the top-level worker entry — it injects
|
|
205
|
-
// `env.OAUTH_PROVIDER` helpers the consent handler needs, and the
|
|
206
|
-
// claude.ai MCP client requires it to discover AS metadata.
|
|
207
|
-
export default createOAuthProvider({
|
|
208
|
-
defaultHandler: app,
|
|
209
|
-
apiHandlers: {
|
|
210
|
-
"/mcp/staff": createMcpApiHandler({ ref: cms, surface: "staff" }),
|
|
211
|
-
"/mcp": createMcpApiHandler({ ref: cms, surface: "public" }),
|
|
212
|
-
},
|
|
213
|
-
});
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
The runtime gets two required adapter ports (`db`, `assets`)
|
|
217
|
-
alongside manifests, handlers, templates, and site defaults. Auth is
|
|
218
|
-
owned by the adapter layer that mounts HTTP/MCP surfaces; the runtime
|
|
219
|
-
receives authenticated context when the adapter dispatches requests.
|
|
220
|
-
There's no module-global state holding adapter-specific bindings.
|
|
221
|
-
|
|
222
|
-
## Consequences
|
|
223
|
-
|
|
224
|
-
**Hard-enforced boundaries**:
|
|
225
|
-
- `@aotter/mantle-runtime` MUST NOT import `D1Database`, `KVNamespace`, `Fetcher` (CF Workers ASSETS), `@cloudflare/*`, or any other adapter-specific type. CI will lint for this; PR reviewers can grep.
|
|
226
|
-
- A new required port can be added only by amending this ADR and updating every shipping adapter in the same change. Optional feature ports must be documented here and must state when adapters are required to implement them.
|
|
227
|
-
- Removing a port is also possible (if a port is found to overlap or be unnecessary), again by amending this ADR.
|
|
228
|
-
|
|
229
|
-
**Discoverability for adapter authors**:
|
|
230
|
-
- A future adapter author reads this ADR + [`docs/adapter-guide.md`](https://github.com/aotter/mantle/blob/main/docs/adapter-guide.md), implements the two required ports, then wires boot and HTTP/MCP surfaces. That's the contract. No hidden state, no implicit assumptions about the HTTP framework.
|
|
231
|
-
|
|
232
|
-
**Test ergonomics**:
|
|
233
|
-
- Each port is small and isolated. Tests can mock individual ports without spinning up D1 or an OAuth provider.
|
|
234
|
-
- The runtime's test suite exercises against in-memory port impls; the adapter's test suite exercises the binding against real CF resources via `wrangler dev` or live deploy.
|
|
235
|
-
|
|
236
|
-
## Alternatives considered
|
|
237
|
-
|
|
238
|
-
**(a) Single mega-port** — One `RuntimePorts` interface containing every method (db.prepare, assets.fetch, media.createUpload, …). **Rejected**: leaks the entire surface onto every adapter. Discrete ports keep change blast radius per port.
|
|
239
|
-
|
|
240
|
-
**(b) Concrete CF types in runtime** — Just `import type { D1Database } from "@cloudflare/workers-types"` directly into `mantle-runtime`. Treat "CF-only" as a v0.1.0 reality, defer the abstraction. **Rejected**: this is what the POC did (via `cms-server` having implicit assumptions about D1 shape) and it's the trap the rebuild exists to escape. Once concrete CF types land in runtime, removing them is a multi-PR uplift later. Cheaper to do it right at v0.1.0.
|
|
241
|
-
|
|
242
|
-
**(c) Function-injection (no interfaces, just functions)** — Runtime accepts a record of functions such as `{ dbPrepare, assetFetch, sessionRead, … }`. **Rejected**: TypeScript interfaces are more discoverable and document grouping.
|
|
243
|
-
|
|
244
|
-
**(d) Plugin pattern (each port is a separate package)** — `@aotter/mantle-port-database`, `@aotter/mantle-port-kv`, etc., and runtime depends on one package per port. **Rejected**: the port set is too small to warrant per-port packages. Ports are TypeScript interfaces in `mantle-runtime`'s `src/domain/port/` directory — that's enough.
|
|
245
|
-
|
|
246
|
-
**(e) gRPC / wire-protocol seam** — Make ports a network protocol so adapters can be in any language. **Rejected**: the runtime is not an external service, it's a TypeScript library that adapters compose into a single Worker / Function. Network seam adds latency, deployment complexity, and operational surface for zero authoring benefit. The ports are in-process; they always will be.
|
|
247
|
-
|
|
248
|
-
## How to apply
|
|
249
|
-
|
|
250
|
-
When you're authoring `@aotter/mantle-runtime` code:
|
|
251
|
-
|
|
252
|
-
1. If you reach for a CF-specific type, **stop**. Define a method on a port instead.
|
|
253
|
-
2. If a port is missing the method you need, **amend this ADR first** in the same PR, then add the method. Adapters in the same PR.
|
|
254
|
-
3. Tests must use port mocks (in-memory implementations) — never reach into a real D1 from runtime tests.
|
|
255
|
-
|
|
256
|
-
When you're authoring an adapter:
|
|
257
|
-
|
|
258
|
-
1. Read `mantle-runtime/src/domain/port/`. Implement each required port against your runtime's primitives.
|
|
259
|
-
2. Compose the runtime via `createCmsRuntime({ db, assets, manifests, handlers, templates, siteDefaults, ... })`.
|
|
260
|
-
3. Call `runtime.bootInit()` once before serving CMS traffic.
|
|
261
|
-
4. Bind to your HTTP framework.
|
|
262
|
-
5. Provide adapter-owned auth and map sessions/scopes/roles into runtime handler context.
|
|
263
|
-
6. Bundle `@aotter/mantle-admin-ui`'s `dist/` via your runtime's static-asset surface and bind `AssetServer` to it.
|
|
264
|
-
|
|
265
|
-
When you're reviewing a PR:
|
|
266
|
-
|
|
267
|
-
1. Grep the diff for `@cloudflare`, `D1Database`, `KVNamespace`, `Fetcher` — flag any occurrence in `mantle-runtime/`.
|
|
268
|
-
2. If a new port method shows up, check it is also reflected in this ADR.
|
|
269
|
-
3. If a port shape changed, every shipping adapter gets updated in the same PR.
|
|
270
|
-
|
|
271
|
-
## Implementation status
|
|
272
|
-
|
|
273
|
-
- [x] Required port interface files live in `packages/mantle-runtime/src/domain/port/*.ts`.
|
|
274
|
-
- [x] Cloudflare required port implementations live in `packages/adapters/cloudflare/src/bindings/*.ts`.
|
|
275
|
-
- [x] Optional feature port `MediaStorage` (public bucket) is declared but not required by first-run adapters. `PrivateMediaStorage` is v0.2.
|
|
276
|
-
- [ ] CI lint: forbid `@cloudflare/*` / `D1Database` / `KVNamespace` imports in `mantle-runtime/` (post-v0.1.0; manual review until then)
|
|
277
|
-
|
|
278
|
-
## See also
|
|
279
|
-
|
|
280
|
-
- ADR-0007 — AI as primary author. Adapter port discipline serves the "AI debuggable" loop: a missing port method surfaces as a structured Diagnostic at boot, not a runtime 500 in production.
|
|
281
|
-
- ADR-0009 — consumer-supplied manifests. Manifests don't care about ports; ports don't care about manifests. The two abstractions compose cleanly.
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
# ADR-0012: Views as named REST and MCP read surfaces
|
|
2
|
-
|
|
3
|
-
**Status:** Accepted for v0.1.0. Amended to match the shipped public/staff
|
|
4
|
-
surface and authorization contract.
|
|
5
|
-
|
|
6
|
-
**Date:** 2026-05-05; amended 2026-08-03
|
|
7
|
-
|
|
8
|
-
## Context
|
|
9
|
-
|
|
10
|
-
mantle ships two read-side surfaces and one write-side surface:
|
|
11
|
-
|
|
12
|
-
- **Templates** (rendered HTML / Markdown / `llms.txt`) — composed by the consumer's `TemplateRegistry` from runtime APIs. The starter blog uses these for `/{locale}/posts/{slug}` etc.
|
|
13
|
-
- **MCP tools** — the staff surface exposes entry authoring and lifecycle
|
|
14
|
-
tools; both public and staff surfaces expose `query_view_<name>` for Views
|
|
15
|
-
assigned to that surface.
|
|
16
|
-
- **HTTP Triggers** — write-side endpoints declared by the consumer (`Trigger.source.kind: http`, methods `POST | PUT | PATCH | DELETE` only). Per ADR-0001 grammar, **`GET` is intentionally absent** because read endpoints belong to Views, not Procedures.
|
|
17
|
-
|
|
18
|
-
What was missing: a stable, consumer-facing **public REST read surface**. The starter blog had no JSON API at all. The CMS needed an answer to "I'm a downstream service that wants `posts` filtered by locale — how do I read?" without forcing every consumer to hand-write a route handler that re-implements filtering.
|
|
19
|
-
|
|
20
|
-
This ADR answers that question: **every parsed View is a named read surface**.
|
|
21
|
-
Views default to public and auto-expose `GET /api/views/<view-name>` plus a
|
|
22
|
-
matching public MCP tool. `surface: staff` moves both transports to the guarded
|
|
23
|
-
staff surfaces. Schemas do not get a public REST surface at all.
|
|
24
|
-
|
|
25
|
-
(Schemas remain available on the **admin** REST surface — `/admin/api/*` — which lands with the admin UI commit and is auth-gated to staff. That's a separate cut and out of scope here.)
|
|
26
|
-
|
|
27
|
-
## Decision
|
|
28
|
-
|
|
29
|
-
### 1. Public reads route through Views, never Schemas
|
|
30
|
-
|
|
31
|
-
Adding `Schema.spec.expose.rest` and letting collections leak directly to public REST was the alternative considered. We rejected it because:
|
|
32
|
-
|
|
33
|
-
- `Schema` declares the **storage shape**; entries carry `draft` / internal status, server-stamped fields, and per-row data the author may not have intended for the public. `contact-messages` is the canonical example — direct `GET /api/contact-messages` would be a privacy bug by default.
|
|
34
|
-
- `View` already has the right semantics: a named query with explicit `filter` / `fields` / `orderBy` / `limit`. Auto-exposing it as REST ratifies what the manifest already declares.
|
|
35
|
-
- One way to do public reads is simpler than two. The Mantle thesis ("agents write config; runtime carries complexity") gets stronger when the contract surface stays narrow.
|
|
36
|
-
|
|
37
|
-
### 2. URL shape: `/api/views/<view-name>`
|
|
38
|
-
|
|
39
|
-
No version prefix. `apiVersion: cms.mantle.aotter.net/v1` is the manifest-grammar version, locked under v0.1 grammar discipline; the public REST URL doesn't need to repeat it.
|
|
40
|
-
|
|
41
|
-
`<view-name>` is `View.metadata.name` verbatim. Authors are free to pick kebab-case (`recent-posts`) or any URL-safe identifier; the runtime mounts the route as-is.
|
|
42
|
-
|
|
43
|
-
### 3. Views auto-expose on one declared surface
|
|
44
|
-
|
|
45
|
-
`View.spec.surface` uses the closed `public | staff` vocabulary and defaults to
|
|
46
|
-
`public`:
|
|
47
|
-
|
|
48
|
-
- public Views mount at `GET /api/views/<name>` and appear as
|
|
49
|
-
`query_view_<name>` on `/mcp`;
|
|
50
|
-
- staff Views mount at `GET /admin/api/views/<name>` behind the live staff-role
|
|
51
|
-
gate and appear only on `/mcp/staff`.
|
|
52
|
-
|
|
53
|
-
The adapter filters the View set before constructing each MCP dispatcher, so a
|
|
54
|
-
guessed public tool call cannot reach a staff View. `View.spec.requires` then
|
|
55
|
-
applies the same static predicates and optional guard Procedure on REST and MCP
|
|
56
|
-
calls. Surface selects transport visibility; authorization decides whether the
|
|
57
|
-
verified caller may execute the View.
|
|
58
|
-
|
|
59
|
-
We still reject a second `expose.rest` switch. A View is externally queryable
|
|
60
|
-
on exactly one surface; internal-only helpers remain TypeScript code.
|
|
61
|
-
|
|
62
|
-
### 4. Pagination knobs are reserved query-string names
|
|
63
|
-
|
|
64
|
-
REST callers pass `?page=<1-indexed>&show=<page-size>`. MCP callers pass the
|
|
65
|
-
same reserved names as tool arguments. Internally the runtime emits
|
|
66
|
-
`LIMIT show OFFSET (page-1)*show`.
|
|
67
|
-
|
|
68
|
-
`page` / `show` / `cursor` are reserved names. The parser rejects any `View.spec.params.properties.<name>` colliding with these (`VIEW_PARAMS_RESERVED_NAME`). The author owns the rest of the query-string namespace.
|
|
69
|
-
|
|
70
|
-
The alternative ("let `filter` express arithmetic so the author writes their own page→offset math") was rejected as a grammar-discipline violation: v0.1 filter is a closed AST (`eq` / `gt` / `gte` / `lt` / `lte` plus boolean `and` / `or`) and adding arithmetic would drag in operator precedence, type coercion, and a closed-enum-vs-expression debate that distracts from shipping.
|
|
71
|
-
|
|
72
|
-
`View.spec.limit` is the **server-enforced cap** on `show`; if the caller passes `?show=10000` and the View declares `limit: 50`, the runtime trims to 50.
|
|
73
|
-
|
|
74
|
-
### 5. Filter comparison `value` accepts a `{ $param: <name> }` sentinel
|
|
75
|
-
|
|
76
|
-
Static Views are useful (`recent-posts`); param-driven Views are essential (`posts-by-locale?locale=zh-TW`). Until this ADR, filter values were literals, which forced one View per parameter combination — unworkable for `tag` / `locale` / `author` queries.
|
|
77
|
-
|
|
78
|
-
The grammar gains:
|
|
79
|
-
|
|
80
|
-
```yaml
|
|
81
|
-
spec:
|
|
82
|
-
params:
|
|
83
|
-
type: object # required, must be type: object
|
|
84
|
-
properties:
|
|
85
|
-
locale: { type: string } # scalar leaf types
|
|
86
|
-
required: [locale] # v0.1.0 enforces required-only
|
|
87
|
-
filter:
|
|
88
|
-
eq: { field: locale, value: { $param: locale } }
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
The `$param` discriminator key was chosen to match the JSON Schema `$ref` convention. The later closed `{ "$ctx.user": "id" }` sentinel follows the same `$<name>` shape; `$now` remains unimplemented.
|
|
92
|
-
|
|
93
|
-
Boot validator gates:
|
|
94
|
-
- `View.spec.params` MUST be `type: object` with `properties` declared (`VIEW_PARAMS_INVALID_SHAPE`).
|
|
95
|
-
- Reserved names rejected (`VIEW_PARAMS_RESERVED_NAME`).
|
|
96
|
-
- Every `{ $param: <name> }` ref MUST resolve to a declared param (`VIEW_FILTER_PARAM_REF_UNKNOWN`).
|
|
97
|
-
- Every `{ $param: <name> }` ref MUST appear in `params.required` (`VIEW_FILTER_PARAM_REF_NOT_REQUIRED`).
|
|
98
|
-
|
|
99
|
-
### 6. Response envelope is `{ rows, page, show, hasMore }`
|
|
100
|
-
|
|
101
|
-
```json
|
|
102
|
-
{
|
|
103
|
-
"ok": true,
|
|
104
|
-
"data": {
|
|
105
|
-
"rows": [...],
|
|
106
|
-
"page": 1,
|
|
107
|
-
"show": 20,
|
|
108
|
-
"hasMore": true
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
`rows` is intentionally a generic name (matches OLAP family conventions in `aotter-mantle`). v0.1.0 Views are list-of-projected-entries, but join + group-by results land in v0.1.x and may use a different envelope (`data.value` for scalars, `data.tree` for hierarchies). The choice of `rows` over `entries` keeps the door open without forcing a v0.1.0 manifest declaration of output shape.
|
|
114
|
-
|
|
115
|
-
`hasMore = (rows.length === effectiveShow)` — the lazy semantics. We do **not** issue a separate `COUNT(*)` query, and we do not pull `LIMIT n+1` to probe. If the server returns exactly `show` rows, the caller may or may not have more; if fewer, we know definitively. The trade is one false-positive on the boundary case (caller asks for next page, gets empty) in exchange for no extra round-trip per request.
|
|
116
|
-
|
|
117
|
-
### 7. Param coercion happens at the transport boundary
|
|
118
|
-
|
|
119
|
-
Query strings arrive as strings; `View.spec.params` declares the JSON Schema type. The Cloudflare adapter (`coerceViewParams` in `mountServerEndpoints.ts`) coerces per-property:
|
|
120
|
-
|
|
121
|
-
| `params.<name>.type` | Coercion |
|
|
122
|
-
|---|---|
|
|
123
|
-
| `string` | identity |
|
|
124
|
-
| `integer` | `parseInt` (rejects non-canonical / float-like input) |
|
|
125
|
-
| `number` | `Number()` |
|
|
126
|
-
| `boolean` | `"true"` / `"false"` only |
|
|
127
|
-
| `enum` | string matched against the enum array |
|
|
128
|
-
|
|
129
|
-
Required params not present → `400 INPUT_VALIDATION_FAILED`. Coercion failure → `400 INPUT_VALIDATION_FAILED`. Unknown query-string keys are silently ignored (lenient v0.1.0; strict mode is a candidate v0.1.x flag).
|
|
130
|
-
|
|
131
|
-
## Current limits
|
|
132
|
-
|
|
133
|
-
- Param refs must be required.
|
|
134
|
-
- Filter operators are closed to `eq` / `gt` / `gte` / `lt` / `lte`;
|
|
135
|
-
field-to-field comparisons are unsupported.
|
|
136
|
-
- **Row-level policy rewriting.** `requires` authorizes the whole View; it does
|
|
137
|
-
not inject per-row visibility predicates. Consumer-specific membership,
|
|
138
|
-
payment, or entitlement checks belong in the optional guard Procedure.
|
|
139
|
-
|
|
140
|
-
## Consequences
|
|
141
|
-
|
|
142
|
-
**Authors gain:**
|
|
143
|
-
- REST and MCP read surfaces for free — declare a View and choose public or
|
|
144
|
-
staff visibility once.
|
|
145
|
-
- Single mental model for "how do consumers and agents read?": always Views.
|
|
146
|
-
- Cheap pagination + dynamic filters without hand-writing handlers.
|
|
147
|
-
|
|
148
|
-
**Authors lose:**
|
|
149
|
-
- Each named query shape remains an explicit View.
|
|
150
|
-
- No internal-only View surface; choose public/staff or keep the query in a TS
|
|
151
|
-
helper.
|
|
152
|
-
|
|
153
|
-
**Runtime gains:**
|
|
154
|
-
- One executor and response shape cover public/staff REST and MCP reads.
|
|
155
|
-
|
|
156
|
-
**Reviewers / future contributors should:**
|
|
157
|
-
- Reject any PR adding `Schema.spec.expose.rest` or a similar Schema-level public-read flag.
|
|
158
|
-
- Reject any PR introducing a second public read surface (e.g. `/api/<collection>` shortcut).
|
|
159
|
-
- Require REST and MCP mounts to filter by the same `View.spec.surface` value,
|
|
160
|
-
and keep authorization in the shared `ExecuteViewUseCase` path.
|
|
161
|
-
- Reject any PR that lets `filter` reference state outside the declared `params` (e.g. `{ $env: ... }`, `{ $cookie: ... }`) without a matching ADR amendment.
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
# ADR-0013: Agent-provisioned consumer projects
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
|
|
5
|
-
Superseded by [ADR-0021](0021-retire-starter-scaffolding.md) for 0.1.2 and
|
|
6
|
-
later. Historical pre-stable install flow only.
|
|
7
|
-
|
|
8
|
-
## Date
|
|
9
|
-
|
|
10
|
-
2026-05-09
|
|
11
|
-
|
|
12
|
-
## Context
|
|
13
|
-
|
|
14
|
-
> **Historical 2026-06-27 direction, no longer current:** Mantle landing creates the GitHub repo from
|
|
15
|
-
> `mantle-starters` `provision-bundles/<type>.json`, commits the blank
|
|
16
|
-
> or type bundle, and connects Cloudflare Workers CI when possible.
|
|
17
|
-
> Do not extend the old `create-mantle launch --session` or
|
|
18
|
-
> `provision:up` path.
|
|
19
|
-
|
|
20
|
-
mantle is not optimized for a human developer reading a long
|
|
21
|
-
installation guide and hand-editing boilerplate. The intended v0.1.0
|
|
22
|
-
entry path is:
|
|
23
|
-
|
|
24
|
-
1. The official site asks for a small set of launch choices: site name,
|
|
25
|
-
project/repo slug, starter/theme, locale(s), visibility, and GitHub
|
|
26
|
-
account context supplied through the Mantle GitHub App when present.
|
|
27
|
-
2. The site creates a short-lived launch session and produces a one-line
|
|
28
|
-
`create-mantle launch --session ...` command for the user's agent.
|
|
29
|
-
The older localized starting prompt plus pinned Skill URL remains a
|
|
30
|
-
fallback when the session path is unavailable.
|
|
31
|
-
3. A coder agent runs in the user's chosen parent directory, claims the
|
|
32
|
-
session, scaffolds immediately, initializes local launch state, installs
|
|
33
|
-
npm packages, validates it, and then proceeds toward Cloudflare
|
|
34
|
-
provision.
|
|
35
|
-
4. The deployed site gives the owner an admin sign-in path and an MCP
|
|
36
|
-
URL for ongoing content operations.
|
|
37
|
-
|
|
38
|
-
This is a different architecture from "SDK docs plus templates." The
|
|
39
|
-
template must be safe for agents to mutate, the package dependency
|
|
40
|
-
story must work outside this monorepo, and first-run content cannot
|
|
41
|
-
depend on an operator MCP session that does not exist yet.
|
|
42
|
-
|
|
43
|
-
## Decision
|
|
44
|
-
|
|
45
|
-
Consumer projects are provisioned by an agent, using repo-hosted
|
|
46
|
-
Skills as the operational contract.
|
|
47
|
-
|
|
48
|
-
The source of truth for first-run scaffold intent is the website-created
|
|
49
|
-
launch session. It carries structured values such as `archetype`,
|
|
50
|
-
`theme`, `features`, `locales`, `project_name`, `site_name`,
|
|
51
|
-
`github_owner`, `admin_github_login`, and `repo` intent. The install
|
|
52
|
-
Skill should consume a valid launch session instead of running a long
|
|
53
|
-
generic interview before scaffold. Prompt-first install remains the
|
|
54
|
-
fallback when no valid launch session is available.
|
|
55
|
-
|
|
56
|
-
The launch session is not a general provider credential. It authorizes
|
|
57
|
-
the scaffold values the website just collected, and the agent writes
|
|
58
|
-
only non-secret resumable state such as `.mantle/launch-state.json`.
|
|
59
|
-
Cloudflare API tokens, GitHub OAuth App client secrets, paid-provider
|
|
60
|
-
features, and custom domains still require explicit user authorization
|
|
61
|
-
during provision.
|
|
62
|
-
|
|
63
|
-
Published npm packages are the runtime dependency source. Starter files
|
|
64
|
-
may still be copied from the GitHub repo or a release tag, but
|
|
65
|
-
`setup:site` rewrites `workspace:*` dependencies to the requested
|
|
66
|
-
`@aotter/mantle-*` npm version before `pnpm install`. This keeps
|
|
67
|
-
consumer projects independent from the monorepo and avoids private-repo
|
|
68
|
-
token friction in the install path.
|
|
69
|
-
|
|
70
|
-
Starter-owned setup scripts are the only supported way to rewrite
|
|
71
|
-
standard template fields. Agents should not hand-edit `wrangler.toml`,
|
|
72
|
-
`src/mantleConfig.ts`, `package.json`, or similar standard fields when a
|
|
73
|
-
starter script exists. Hand edits are reserved for actual product
|
|
74
|
-
customization.
|
|
75
|
-
|
|
76
|
-
Starter source is copied from pinned public GitHub refs by downloading
|
|
77
|
-
source tarballs, not by leaving a normal clone in place. The extracted
|
|
78
|
-
project initializes its own Git repo and should only set `origin` after
|
|
79
|
-
the user creates or selects a user-owned repository. This avoids agents
|
|
80
|
-
accidentally pushing back to the template source.
|
|
81
|
-
|
|
82
|
-
First-run content is not seeded during real-user install/provision.
|
|
83
|
-
Provision creates the operating surface first: public site, owner
|
|
84
|
-
sign-in, and Staff/User MCP URLs. After owner sign-in, the operating
|
|
85
|
-
agent interviews the owner and asks whether to create initial
|
|
86
|
-
pages/posts through Staff MCP or admin authoring. `seed:initial` and
|
|
87
|
-
fixture data are reserved for tests and contributor local dev.
|
|
88
|
-
|
|
89
|
-
Cloudflare provisioning is owned by the starter's provision script. It
|
|
90
|
-
creates the required free-path resources, writes bindings/secrets,
|
|
91
|
-
deploys once with the real origin, and returns the handoff URLs.
|
|
92
|
-
Agents should not decompose this into ad-hoc Wrangler steps unless
|
|
93
|
-
they are debugging a failed provision.
|
|
94
|
-
|
|
95
|
-
## Consequences
|
|
96
|
-
|
|
97
|
-
- Skills become part of the compatibility surface. Updating install or
|
|
98
|
-
provision behavior requires updating the relevant Skill in the same
|
|
99
|
-
change.
|
|
100
|
-
- Starter templates must remain script-configurable. Adding a new
|
|
101
|
-
standard field without updating `setup:site` is a regression for
|
|
102
|
-
agent provisioning.
|
|
103
|
-
- npm publishing must precede realistic end-user provisioning tests.
|
|
104
|
-
`file:` or workspace dependencies are acceptable only for local SDK
|
|
105
|
-
development.
|
|
106
|
-
- The first-run success criterion is product-level: public site,
|
|
107
|
-
owner sign-in, MCP URL, and an owner-approved path to create initial
|
|
108
|
-
content through MCP/admin authoring. A deployed but unauthored site
|
|
109
|
-
can be a valid intermediate checkpoint, not a direct-seed failure.
|
|
110
|
-
- Provisioning must preserve the no-credit-card path. Optional paid or
|
|
111
|
-
billing-gated features must be opt-in after the site is already live.
|
|
112
|
-
|
|
113
|
-
## Alternatives
|
|
114
|
-
|
|
115
|
-
- **Human-first docs with manual edits.** Rejected because it makes the
|
|
116
|
-
non-coder path fragile and forces agents to infer boilerplate edits
|
|
117
|
-
from prose.
|
|
118
|
-
- **Git dependency only.** Rejected for the default path because private
|
|
119
|
-
repos and Git authentication add friction. Git refs remain useful for
|
|
120
|
-
copying starter files, not for installed runtime dependencies.
|
|
121
|
-
- **Direct seed creates the initial content.** Rejected for real-user
|
|
122
|
-
onboarding because it bypasses the same operating path we want to
|
|
123
|
-
validate. MCP/admin authoring after owner sign-in is the product
|
|
124
|
-
loop; fixtures and seed utilities remain for tests/local dev.
|
|
125
|
-
- **One universal starter.** Rejected. The current publication starter
|
|
126
|
-
is intentionally fixed-manifest during bootstrap; custom workflows
|
|
127
|
-
belong in `blank` or future dedicated starters.
|
|
128
|
-
|
|
129
|
-
## How to apply
|
|
130
|
-
|
|
131
|
-
- If a website launch session supplies structured install values, run
|
|
132
|
-
`create-mantle launch --session ...` first and ask content/voice
|
|
133
|
-
questions later.
|
|
134
|
-
- If only a website prompt supplies structured install values, consume
|
|
135
|
-
them directly and only confirm public/resource-name-impacting details.
|
|
136
|
-
- Run the starter's `setup:site` script before installing
|
|
137
|
-
dependencies.
|
|
138
|
-
- Download starter source as a pinned tarball/zip, extract it, run
|
|
139
|
-
`git init`, and only add a remote that belongs to the user.
|
|
140
|
-
- Keep first-run provision scripts on the free Cloudflare path unless
|
|
141
|
-
the user explicitly opts into a paid feature.
|
|
142
|
-
- After provisioning, hand the user to: view the site, sign in as
|
|
143
|
-
owner, then connect an MCP-capable agent to create/operate content.
|
|
144
|
-
|
|
145
|
-
## Implementation status
|
|
146
|
-
|
|
147
|
-
- `skills/install/SKILL.md` and `docs/skills/provision/SKILL.md` encode the
|
|
148
|
-
current agent workflow, including the launch-session fast path.
|
|
149
|
-
- `aotter/mantle-starters` hosts `packages/create-mantle`, whose
|
|
150
|
-
`launch --session` mode validates the session before writing files.
|
|
151
|
-
- Starters ship `provision:up` where supported; `seed:initial` remains
|
|
152
|
-
a test/contributor utility, not part of real-user provisioning.
|
|
153
|
-
- Current prerelease package versions are documented in
|
|
154
|
-
`docs/release-process.md`.
|