@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,48 +0,0 @@
|
|
|
1
|
-
# ADR-lite #861: Staff MCP through the Admin session
|
|
2
|
-
|
|
3
|
-
Status: Accepted for implementation following maintainer approval.
|
|
4
|
-
|
|
5
|
-
> **Amendment (0.2.0):** Admin answers no MCP. `POST /admin/api/mcp` is
|
|
6
|
-
> removed; the browser calls a staff tool with `POST /admin/api/webmcp/<tool>`
|
|
7
|
-
> and its input as JSON, which Admin runs as the staff MCP surface does, with
|
|
8
|
-
> the session. The catalog is still the staff MCP surface's; an MCP client
|
|
9
|
-
> with a token uses `/mcp/staff`.
|
|
10
|
-
|
|
11
|
-
Admin WebMCP uses the canonical staff MCP catalog and JSON-RPC dispatcher.
|
|
12
|
-
`GET /admin/api/webmcp` supplies the same tool definitions plus UI route hints;
|
|
13
|
-
`POST /admin/api/mcp` carries MCP requests using the current Admin session.
|
|
14
|
-
Both endpoints check the current mutable staff role. POST retains Admin's
|
|
15
|
-
cross-origin mutation rejection and body limit. Procedure predicates still
|
|
16
|
-
see a session credential, never a fabricated OAuth scope. Public/member MCP
|
|
17
|
-
capabilities and HTTP-only staff procedures are not added to this catalog.
|
|
18
|
-
This extends ADR-0014/0019 without changing manifest grammar.
|
|
19
|
-
|
|
20
|
-
Descriptions, input schemas, OCC and error diagnostics come from the existing
|
|
21
|
-
MCP catalog/dispatcher. Media tools appear only with media storage and declared
|
|
22
|
-
purposes. Agents PUT binaries directly to the authorized upload URLs between
|
|
23
|
-
create_media_upload and commit_media_upload; WebMCP carries no binary payload.
|
|
24
|
-
|
|
25
|
-
Admin owns two UI-only tools: admin_get_context and admin_navigate. Successful
|
|
26
|
-
operations invalidate query data and navigate when a known result target is
|
|
27
|
-
available. Unknown custom operations stay on the current page. Failure never
|
|
28
|
-
triggers navigation or an automatic mutation retry. Navigation input must be
|
|
29
|
-
an Admin page, not an external URL or API/auth path.
|
|
30
|
-
|
|
31
|
-
The green indicator appears after document.modelContext registration succeeds.
|
|
32
|
-
Its dialog shows the registered tool catalog and uses Admin i18n with the
|
|
33
|
-
established English fallback. The prompt tells the agent to inspect the catalog;
|
|
34
|
-
tool descriptions own operation-specific guidance. Developer interface docs
|
|
35
|
-
show the same live catalog. The initial translations include English,
|
|
36
|
-
Traditional Chinese and Simplified Chinese.
|
|
37
|
-
Registration uses AbortSignal lifetime cleanup. Browsers without WebMCP retain
|
|
38
|
-
the existing UI. The browser API is feature-detected, not polyfilled.
|
|
39
|
-
|
|
40
|
-
Only the explicitly marked, same-origin sandbox preview accepts the parent
|
|
41
|
-
message-port tool bridge. It reuses the same executor even in browsers without
|
|
42
|
-
native WebMCP. Canonical Admin refuses embedding and installs no parent bridge.
|
|
43
|
-
Builder keeps reset/seed/observe and member/anonymous sandbox tests; owner
|
|
44
|
-
staff calls traverse the iframe Admin executor and existing sandbox HTTP bridge.
|
|
45
|
-
Timeout/cancellation does not imply a write was rolled back; reconcile before
|
|
46
|
-
retry. Preview remains isolated from live network APIs.
|
|
47
|
-
|
|
48
|
-
Reference: https://webmachinelearning.github.io/webmcp/
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# ADR-lite 909: Mantle Admin UI kit export
|
|
2
|
-
|
|
3
|
-
**Status:** Accepted; amended by [ADR-0029](0029-mcp-apps-interaction-contracts.md) (the kit moves to `@aotter/mantle-ui`, with a one-minor re-export from `@aotter/mantle-admin-ui/kit`)
|
|
4
|
-
|
|
5
|
-
## Context
|
|
6
|
-
|
|
7
|
-
Mantle applications need the Admin product's React/shadcn visual language
|
|
8
|
-
without copying components or embedding the full Admin SPA. The Admin package
|
|
9
|
-
previously exposed only static product assets and a server-side token string.
|
|
10
|
-
Its same-origin `preview.html` contract remains the correct boundary for a
|
|
11
|
-
complete embedded Admin or Developer UI.
|
|
12
|
-
|
|
13
|
-
## Decision
|
|
14
|
-
|
|
15
|
-
`@aotter/mantle-admin-ui/kit` exports the existing domain-neutral shadcn
|
|
16
|
-
primitives and Mantle one-time-code input. `kit.css` contains their compiled
|
|
17
|
-
Tailwind styles and complete Admin theme; `tokens.css` contains only the stable
|
|
18
|
-
Mantle design variables.
|
|
19
|
-
|
|
20
|
-
The kit does not export the Admin application, authenticated layout, router,
|
|
21
|
-
queries, API client, or feature views. Those modules assume Admin routes and
|
|
22
|
-
transport contracts and remain private. Consumers needing the complete product
|
|
23
|
-
use the canonical Admin assets or the explicit same-origin sandbox preview.
|
|
24
|
-
|
|
25
|
-
Copy-owned shadcn recipes may compose the public kit into working defaults.
|
|
26
|
-
They are installed as source in the consuming application rather than exposed
|
|
27
|
-
as another runtime framework. The first recipe is an email OTP page with
|
|
28
|
-
optional legal links.
|
|
29
|
-
|
|
30
|
-
## Consequences
|
|
31
|
-
|
|
32
|
-
- Applications can share Mantle controls and visual tokens without depending
|
|
33
|
-
on Builder internals or duplicating Admin CSS.
|
|
34
|
-
- The static Admin SPA remains unchanged and optional.
|
|
35
|
-
- New public kit components require package-level contract and rendering tests.
|
|
36
|
-
- Authentication and legal-consent policy remain application concerns, not UI
|
|
37
|
-
primitive behavior.
|
|
@@ -1,481 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: A guest checkout that re-prices on the server, reserves stock atomically in Store, expires unpaid orders on a schedule and settles from a verified payment callback.
|
|
3
|
-
---
|
|
4
|
-
# Commerce inventory: reservations, expiry and settlement
|
|
5
|
-
|
|
6
|
-
[Examples hub](./README.md) · Without stock or payments, this is [Commerce catalog and orders](./commerce.md).
|
|
7
|
-
|
|
8
|
-
The most involved pattern here. Staff publish a catalog. A guest's order is
|
|
9
|
-
re-priced on the server and reserves stock; payment arrives later from a
|
|
10
|
-
provider callback, never from the browser; an unpaid order is released after
|
|
11
|
-
fifteen minutes. Every stock change writes an audit row in the same atomic
|
|
12
|
-
write.
|
|
13
|
-
|
|
14
|
-
## Problem
|
|
15
|
-
|
|
16
|
-
Stock must never go negative, two guests must never buy the last unit, and an
|
|
17
|
-
order, its reservation and its audit rows must change together or not at all.
|
|
18
|
-
Staff adjust stock, fulfil paid orders and read a picking list.
|
|
19
|
-
|
|
20
|
-
In 0.1.x this needed a Durable Object as the stock authority and a Queue for
|
|
21
|
-
expiry. In 0.2.0 Store is enough: a `write` applies all its operations or none,
|
|
22
|
-
`checks` refuse a negative count in the database, and an optimistic lock on
|
|
23
|
-
each inventory row turns a race into a `CONFLICT` the client retries.
|
|
24
|
-
|
|
25
|
-
## Manifest
|
|
26
|
-
|
|
27
|
-
```yaml
|
|
28
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
29
|
-
kind: Schema
|
|
30
|
-
metadata: { name: products }
|
|
31
|
-
spec:
|
|
32
|
-
title: Products
|
|
33
|
-
lifecycle: publishing
|
|
34
|
-
uniqueIndexes: [[slug]]
|
|
35
|
-
schema:
|
|
36
|
-
type: object
|
|
37
|
-
additionalProperties: false
|
|
38
|
-
required: [slug, title, priceMinor, currency]
|
|
39
|
-
properties:
|
|
40
|
-
slug: { type: string, maxLength: 120, pattern: "^[a-z0-9-]+$" }
|
|
41
|
-
title: { type: string, minLength: 1, maxLength: 160 }
|
|
42
|
-
summary: { type: string, maxLength: 500 }
|
|
43
|
-
priceMinor: { type: integer, minimum: 0, x-mcp-hint: money-minor }
|
|
44
|
-
currency: { type: string, pattern: "^[A-Z]{3}$" }
|
|
45
|
-
---
|
|
46
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
47
|
-
kind: Schema
|
|
48
|
-
metadata: { name: inventory }
|
|
49
|
-
spec:
|
|
50
|
-
title: Inventory
|
|
51
|
-
description: Stock per product. Only the declared Procedures change it.
|
|
52
|
-
lifecycle: operational
|
|
53
|
-
checks: ["available >= 0", "reserved >= 0"]
|
|
54
|
-
uniqueIndexes: [[productSlug]]
|
|
55
|
-
uiSchema:
|
|
56
|
-
list: { primaryField: productSlug, columns: [available, reserved] }
|
|
57
|
-
schema:
|
|
58
|
-
type: object
|
|
59
|
-
readOnly: true
|
|
60
|
-
required: [productSlug, available, reserved]
|
|
61
|
-
properties:
|
|
62
|
-
productSlug: { type: string, x-mantle-ref: { schema: products, field: slug } }
|
|
63
|
-
available: { type: integer }
|
|
64
|
-
reserved: { type: integer }
|
|
65
|
-
---
|
|
66
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
67
|
-
kind: Schema
|
|
68
|
-
metadata: { name: inventory-movements }
|
|
69
|
-
spec:
|
|
70
|
-
title: Inventory movements
|
|
71
|
-
description: Append-only audit trail, written in the same write as each stock change.
|
|
72
|
-
lifecycle: operational
|
|
73
|
-
uniqueIndexes: [[movementKey]]
|
|
74
|
-
indexes: [[productSlug], [orderToken]]
|
|
75
|
-
schema:
|
|
76
|
-
type: object
|
|
77
|
-
readOnly: true
|
|
78
|
-
required: [movementKey, productSlug, kind, availableDelta, reservedDelta]
|
|
79
|
-
properties:
|
|
80
|
-
movementKey: { type: string }
|
|
81
|
-
productSlug: { type: string }
|
|
82
|
-
orderToken: { type: string }
|
|
83
|
-
kind: { type: string, enum: [adjust, reserve, sale, release] }
|
|
84
|
-
availableDelta: { type: integer }
|
|
85
|
-
reservedDelta: { type: integer }
|
|
86
|
-
note: { type: string }
|
|
87
|
-
---
|
|
88
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
89
|
-
kind: Schema
|
|
90
|
-
metadata: { name: orders }
|
|
91
|
-
spec:
|
|
92
|
-
title: Orders
|
|
93
|
-
description: Guest orders, written only by the declared Procedures.
|
|
94
|
-
lifecycle: operational
|
|
95
|
-
uniqueIndexes: [[orderToken]]
|
|
96
|
-
indexes: [[orderStatus, expiresAt]]
|
|
97
|
-
searchableFields: [orderToken, customerName, customerEmail]
|
|
98
|
-
uiSchema:
|
|
99
|
-
list: { primaryField: orderToken, columns: [orderStatus, customerEmail, totalMinor] }
|
|
100
|
-
schema:
|
|
101
|
-
type: object
|
|
102
|
-
readOnly: true
|
|
103
|
-
required: [orderToken, orderStatus, currency, totalMinor, customerName, customerEmail, shippingAddress, items, expiresAt]
|
|
104
|
-
properties:
|
|
105
|
-
orderToken: { type: string }
|
|
106
|
-
orderStatus: { type: string, enum: [pending_payment, paid, fulfilled, cancelled] }
|
|
107
|
-
currency: { type: string, pattern: "^[A-Z]{3}$" }
|
|
108
|
-
totalMinor: { type: integer, minimum: 0, x-mcp-hint: money-minor }
|
|
109
|
-
customerName: { type: string, minLength: 1, maxLength: 120 }
|
|
110
|
-
customerEmail: { type: string, format: email }
|
|
111
|
-
shippingAddress: { type: string, minLength: 1, maxLength: 500 }
|
|
112
|
-
items:
|
|
113
|
-
type: array
|
|
114
|
-
items:
|
|
115
|
-
type: object
|
|
116
|
-
required: [productSlug, title, quantity, unitPriceMinor]
|
|
117
|
-
properties:
|
|
118
|
-
productSlug: { type: string }
|
|
119
|
-
title: { type: string }
|
|
120
|
-
quantity: { type: integer, minimum: 1 }
|
|
121
|
-
unitPriceMinor: { type: integer, minimum: 0 }
|
|
122
|
-
expiresAt: { type: string, format: date-time }
|
|
123
|
-
trackingNumber: { type: string }
|
|
124
|
-
---
|
|
125
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
126
|
-
kind: View
|
|
127
|
-
metadata: { name: public-products }
|
|
128
|
-
spec:
|
|
129
|
-
surface: public
|
|
130
|
-
description: The published catalog with what is in stock.
|
|
131
|
-
sql: |
|
|
132
|
-
SELECT p.id, p.slug, p.title, p.summary, p.priceMinor, p.currency, coalesce(i.available, 0) AS available
|
|
133
|
-
FROM products p LEFT JOIN inventory i ON i.productSlug = p.slug
|
|
134
|
-
ORDER BY p.slug LIMIT 100
|
|
135
|
-
---
|
|
136
|
-
# Internal: no surface lists it. The expiry handler reads it; SQL compares the times.
|
|
137
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
138
|
-
kind: View
|
|
139
|
-
metadata: { name: expired-orders }
|
|
140
|
-
spec:
|
|
141
|
-
surface: internal
|
|
142
|
-
sql: |
|
|
143
|
-
SELECT id, version, orderToken, items FROM orders
|
|
144
|
-
WHERE orderStatus = 'pending_payment' AND expiresAt < now()
|
|
145
|
-
ORDER BY expiresAt LIMIT 100
|
|
146
|
-
---
|
|
147
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
148
|
-
kind: View
|
|
149
|
-
metadata: { name: picking-list }
|
|
150
|
-
spec:
|
|
151
|
-
title: Picking list
|
|
152
|
-
surface: staff
|
|
153
|
-
requires: { auth: { all: [{ ctx.staff: [owner, editor] }] } }
|
|
154
|
-
sql: |
|
|
155
|
-
SELECT o.orderToken, o.customerName, o.shippingAddress,
|
|
156
|
-
item.value ->> 'productSlug' AS "productSlug",
|
|
157
|
-
item.value ->> 'title' AS "productTitle",
|
|
158
|
-
item.value ->> 'quantity' AS quantity
|
|
159
|
-
FROM orders o, json_each(o.items) item
|
|
160
|
-
WHERE o.orderStatus = 'paid'
|
|
161
|
-
ORDER BY o.created_at LIMIT 200
|
|
162
|
-
---
|
|
163
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
164
|
-
kind: Procedure
|
|
165
|
-
metadata: { name: place-order }
|
|
166
|
-
spec:
|
|
167
|
-
title: Place order
|
|
168
|
-
description: Price a cart from the published catalog, reserve its stock and return a token to pay within fifteen minutes.
|
|
169
|
-
input:
|
|
170
|
-
type: object
|
|
171
|
-
additionalProperties: false
|
|
172
|
-
required: [customerName, customerEmail, shippingAddress, items]
|
|
173
|
-
properties:
|
|
174
|
-
customerName: { type: string, minLength: 1, maxLength: 120 }
|
|
175
|
-
customerEmail: { type: string, format: email }
|
|
176
|
-
shippingAddress: { type: string, minLength: 1, maxLength: 500 }
|
|
177
|
-
items:
|
|
178
|
-
type: array
|
|
179
|
-
minItems: 1
|
|
180
|
-
maxItems: 20
|
|
181
|
-
items:
|
|
182
|
-
type: object
|
|
183
|
-
additionalProperties: false
|
|
184
|
-
required: [productSlug, quantity]
|
|
185
|
-
properties:
|
|
186
|
-
productSlug: { type: string, maxLength: 120, pattern: "^[a-z0-9-]+$" }
|
|
187
|
-
quantity: { type: integer, minimum: 1, maximum: 99 }
|
|
188
|
-
output:
|
|
189
|
-
type: object
|
|
190
|
-
required: [orderToken, expiresAt, totalMinor, currency]
|
|
191
|
-
properties:
|
|
192
|
-
orderToken: { type: string }
|
|
193
|
-
expiresAt: { type: string }
|
|
194
|
-
totalMinor: { type: integer }
|
|
195
|
-
currency: { type: string }
|
|
196
|
-
handler: { ref: placeOrder }
|
|
197
|
-
---
|
|
198
|
-
# No Trigger: only the service's verified payment callback calls it, as the system caller.
|
|
199
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
200
|
-
kind: Procedure
|
|
201
|
-
metadata: { name: settle-order }
|
|
202
|
-
spec:
|
|
203
|
-
input:
|
|
204
|
-
type: object
|
|
205
|
-
additionalProperties: false
|
|
206
|
-
required: [orderToken]
|
|
207
|
-
properties:
|
|
208
|
-
orderToken: { type: string }
|
|
209
|
-
output:
|
|
210
|
-
type: object
|
|
211
|
-
required: [outcome]
|
|
212
|
-
properties:
|
|
213
|
-
outcome: { type: string, enum: [paid, already_paid, expired, missing] }
|
|
214
|
-
handler: { ref: settleOrder }
|
|
215
|
-
---
|
|
216
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
217
|
-
kind: Procedure
|
|
218
|
-
metadata: { name: release-expired-orders }
|
|
219
|
-
spec:
|
|
220
|
-
input: { type: object }
|
|
221
|
-
output:
|
|
222
|
-
type: object
|
|
223
|
-
properties:
|
|
224
|
-
released: { type: integer }
|
|
225
|
-
handler: { ref: releaseExpiredOrders }
|
|
226
|
-
---
|
|
227
|
-
# SQL is enough when a write needs no read first. The movement row comes first: a replayed operationId
|
|
228
|
-
# fails its unique index, so the whole write is refused and the stock is not changed twice.
|
|
229
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
230
|
-
kind: Procedure
|
|
231
|
-
metadata: { name: adjust-inventory }
|
|
232
|
-
spec:
|
|
233
|
-
title: Adjust inventory
|
|
234
|
-
description: Add or remove available stock for one product, with a reason. Reuse the operationId on retry.
|
|
235
|
-
requires: { auth: { all: [{ ctx.staff: [owner] }] } }
|
|
236
|
-
input:
|
|
237
|
-
type: object
|
|
238
|
-
additionalProperties: false
|
|
239
|
-
required: [operationId, productSlug, delta, reason]
|
|
240
|
-
properties:
|
|
241
|
-
operationId: { type: string, format: uuid, x-mcp-hint: idempotency-key }
|
|
242
|
-
productSlug: { type: string, maxLength: 120, pattern: "^[a-z0-9-]+$", x-mantle-ref: { schema: products, field: slug } }
|
|
243
|
-
delta: { type: integer, minimum: -100000, maximum: 100000 }
|
|
244
|
-
reason: { type: string, minLength: 1, maxLength: 500 }
|
|
245
|
-
uiSchema:
|
|
246
|
-
fields:
|
|
247
|
-
reason: { widget: textarea }
|
|
248
|
-
output: { type: object }
|
|
249
|
-
handler:
|
|
250
|
-
sql: |
|
|
251
|
-
INSERT INTO "inventory-movements" (movementKey, productSlug, kind, availableDelta, reservedDelta, note)
|
|
252
|
-
VALUES (input.operationId, input.productSlug, 'adjust', input.delta, 0, input.reason);
|
|
253
|
-
INSERT INTO inventory (productSlug, available, reserved) VALUES (input.productSlug, input.delta, 0)
|
|
254
|
-
ON CONFLICT (productSlug) DO UPDATE SET available = inventory.available + EXCLUDED.available
|
|
255
|
-
RETURNING productSlug AS "productSlug", available, reserved
|
|
256
|
-
---
|
|
257
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
258
|
-
kind: Procedure
|
|
259
|
-
metadata: { name: fulfill-order }
|
|
260
|
-
spec:
|
|
261
|
-
title: Fulfill order
|
|
262
|
-
description: Mark a paid order fulfilled, with an optional tracking number.
|
|
263
|
-
requires: { auth: { all: [{ ctx.staff: [owner, editor] }] } }
|
|
264
|
-
input:
|
|
265
|
-
type: object
|
|
266
|
-
additionalProperties: false
|
|
267
|
-
required: [id, expectedVersion]
|
|
268
|
-
properties:
|
|
269
|
-
id: { type: string, x-mantle-ref: orders }
|
|
270
|
-
expectedVersion: { type: integer, minimum: 1 }
|
|
271
|
-
trackingNumber: { type: string, maxLength: 120 }
|
|
272
|
-
output: { type: object }
|
|
273
|
-
handler:
|
|
274
|
-
sql: |
|
|
275
|
-
UPDATE orders SET orderStatus = 'fulfilled', trackingNumber = COALESCE(input.trackingNumber, trackingNumber)
|
|
276
|
-
WHERE id = input.id AND version = input.expectedVersion AND orderStatus = 'paid'
|
|
277
|
-
RETURNING id, version
|
|
278
|
-
---
|
|
279
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
280
|
-
kind: Trigger
|
|
281
|
-
metadata: { name: place-order-http }
|
|
282
|
-
spec:
|
|
283
|
-
source: { kind: http, method: POST, path: /api/commerce/orders }
|
|
284
|
-
target: { procedure: place-order }
|
|
285
|
-
---
|
|
286
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
287
|
-
kind: Trigger
|
|
288
|
-
metadata: { name: adjust-inventory-mcp }
|
|
289
|
-
spec:
|
|
290
|
-
source: { kind: mcp, surface: staff }
|
|
291
|
-
target: { procedure: adjust-inventory }
|
|
292
|
-
---
|
|
293
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
294
|
-
kind: Trigger
|
|
295
|
-
metadata: { name: fulfill-order-mcp }
|
|
296
|
-
spec:
|
|
297
|
-
source: { kind: mcp, surface: staff }
|
|
298
|
-
target: { procedure: fulfill-order }
|
|
299
|
-
---
|
|
300
|
-
# POSIX cron, UTC: every five minutes.
|
|
301
|
-
apiVersion: cms.mantle.aotter.net/v2
|
|
302
|
-
kind: Trigger
|
|
303
|
-
metadata: { name: release-expired-orders }
|
|
304
|
-
spec:
|
|
305
|
-
source: { kind: schedule, cron: "*/5 * * * *" }
|
|
306
|
-
target: { procedure: release-expired-orders }
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
Points worth noticing:
|
|
310
|
-
|
|
311
|
-
- **Root `readOnly: true`** on `orders`, `inventory` and `inventory-movements`
|
|
312
|
-
keeps Admin from offering generic edits. Only the declared Procedures change
|
|
313
|
-
them.
|
|
314
|
-
- **`checks` are the last line.** The handlers compute new counts from rows
|
|
315
|
-
they read under a lock, so a race is a `CONFLICT`; the checks make a negative
|
|
316
|
-
count impossible whatever writes the row.
|
|
317
|
-
- **`settle-order` and `release-expired-orders` have no HTTP or MCP Trigger.**
|
|
318
|
-
The schedule runs the second as the system caller, and only the service's own
|
|
319
|
-
callback route invokes the first. A system caller satisfies no
|
|
320
|
-
`requires.auth` predicate, so both declare none.
|
|
321
|
-
- **`expired-orders` is `internal`:** callable only through
|
|
322
|
-
`ctx.store.view` or `runtime.store`. SQL compares `expiresAt` with `now()`.
|
|
323
|
-
- **`picking-list`** unnests order lines with `json_each`, the one comma join
|
|
324
|
-
the dialect allows.
|
|
325
|
-
|
|
326
|
-
## Handlers
|
|
327
|
-
|
|
328
|
-
```ts
|
|
329
|
-
// src/handlers.ts
|
|
330
|
-
import { DiagnosticError, runtimeDiagnostic } from "@aotter/mantle";
|
|
331
|
-
import type { MantleHandlers } from "../.mantle/generated/mantle.js";
|
|
332
|
-
import type { Env } from "./service.js";
|
|
333
|
-
|
|
334
|
-
const CHECKOUT_TTL_MS = 15 * 60 * 1000;
|
|
335
|
-
type Line = { readonly productSlug: string; readonly quantity: number };
|
|
336
|
-
type Ctx = Parameters<MantleHandlers<Env>["placeOrder"]>[1];
|
|
337
|
-
type Op = Parameters<Ctx["store"]["write"]>[0][number];
|
|
338
|
-
|
|
339
|
-
const fail = (code: "CONFLICT" | "INPUT_VALIDATION_FAILED", path: string, message: string): never => {
|
|
340
|
-
throw new DiagnosticError(runtimeDiagnostic({ code, severity: "error", path, message }));
|
|
341
|
-
};
|
|
342
|
-
|
|
343
|
-
/** One locked update per product, plus its audit row: every count comes from a row read here, so a race is a CONFLICT. */
|
|
344
|
-
async function stockOps(ctx: Ctx, lines: readonly Line[], kind: "reserve" | "sale" | "release", orderToken: string): Promise<Op[]> {
|
|
345
|
-
const qty = new Map<string, number>();
|
|
346
|
-
for (const l of lines) qty.set(l.productSlug, (qty.get(l.productSlug) ?? 0) + l.quantity);
|
|
347
|
-
const { rows } = await ctx.store.select({ from: "inventory", where: { productSlug: { in: [...qty.keys()] } } });
|
|
348
|
-
const ops: Op[] = [];
|
|
349
|
-
for (const [slug, q] of qty) {
|
|
350
|
-
const row = rows.find((r) => r.productSlug === slug) ?? fail("INPUT_VALIDATION_FAILED", "/items", `no stock record for ${slug}`);
|
|
351
|
-
const [availableDelta, reservedDelta] = kind === "reserve" ? [-q, q] : kind === "sale" ? [0, -q] : [q, -q];
|
|
352
|
-
ops.push(
|
|
353
|
-
{ update: "inventory", set: { available: Number(row.available) + availableDelta, reserved: Number(row.reserved) + reservedDelta }, where: { id: String(row.id) }, lock: Number(row.version) },
|
|
354
|
-
{ insert: "inventory-movements", values: { movementKey: `${orderToken}:${kind}:${slug}`, productSlug: slug, orderToken, kind, availableDelta, reservedDelta } },
|
|
355
|
-
);
|
|
356
|
-
}
|
|
357
|
-
return ops;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
export const handlers: MantleHandlers<Env> = {
|
|
361
|
-
placeOrder: async (input, ctx) => {
|
|
362
|
-
// re-price from published products only; a draft or unknown slug is refused
|
|
363
|
-
const slugs = [...new Set(input.items.map((l) => l.productSlug))];
|
|
364
|
-
const { rows: products } = await ctx.store.select({ from: "products", where: { slug: { in: slugs }, status: "published" } });
|
|
365
|
-
const lines = input.items.map((l) => {
|
|
366
|
-
const p = products.find((r) => r.slug === l.productSlug) ?? fail("INPUT_VALIDATION_FAILED", "/items", `${l.productSlug} is not for sale`);
|
|
367
|
-
return { productSlug: l.productSlug, title: String(p.title), quantity: l.quantity, unitPriceMinor: Number(p.priceMinor), currency: String(p.currency) };
|
|
368
|
-
});
|
|
369
|
-
const currency = lines[0]!.currency;
|
|
370
|
-
if (lines.some((l) => l.currency !== currency)) fail("INPUT_VALIDATION_FAILED", "/items", "one order has one currency");
|
|
371
|
-
const totalMinor = lines.reduce((sum, l) => sum + l.unitPriceMinor * l.quantity, 0);
|
|
372
|
-
const orderToken = ctx.store.id();
|
|
373
|
-
const expiresAt = new Date(Date.now() + CHECKOUT_TTL_MS).toISOString();
|
|
374
|
-
// the order, the reservation and its audit rows: all or nothing. Too little stock fails a check; a race fails a lock.
|
|
375
|
-
await ctx.store.write([
|
|
376
|
-
{ insert: "orders", values: {
|
|
377
|
-
orderToken, orderStatus: "pending_payment", currency, totalMinor, expiresAt,
|
|
378
|
-
customerName: input.customerName, customerEmail: input.customerEmail, shippingAddress: input.shippingAddress,
|
|
379
|
-
items: lines.map(({ currency: _c, ...line }) => line),
|
|
380
|
-
} },
|
|
381
|
-
...(await stockOps(ctx, lines, "reserve", orderToken)),
|
|
382
|
-
]);
|
|
383
|
-
return { orderToken, expiresAt, totalMinor, currency };
|
|
384
|
-
},
|
|
385
|
-
|
|
386
|
-
settleOrder: async ({ orderToken }, ctx) => {
|
|
387
|
-
const [order] = (await ctx.store.select({ from: "orders", where: { orderToken } })).rows;
|
|
388
|
-
if (!order) return { outcome: "missing" };
|
|
389
|
-
if (order.orderStatus !== "pending_payment") return { outcome: order.orderStatus === "cancelled" ? "expired" : "already_paid" };
|
|
390
|
-
const lines = order.items as unknown as Line[];
|
|
391
|
-
// a payment that lands after the deadline releases the stock instead of selling it; the provider refunds
|
|
392
|
-
const late = Date.parse(String(order.expiresAt)) <= Date.now();
|
|
393
|
-
await ctx.store.write([
|
|
394
|
-
{ update: "orders", set: { orderStatus: late ? "cancelled" : "paid" }, where: { id: String(order.id) }, lock: Number(order.version) },
|
|
395
|
-
...(await stockOps(ctx, lines, late ? "release" : "sale", orderToken)),
|
|
396
|
-
]);
|
|
397
|
-
return { outcome: late ? "expired" : "paid" };
|
|
398
|
-
},
|
|
399
|
-
|
|
400
|
-
// runs as the system caller every five minutes; one write per order, so one CONFLICT never blocks the rest
|
|
401
|
-
releaseExpiredOrders: async (_input, ctx) => {
|
|
402
|
-
const { rows } = await ctx.store.view("expired-orders");
|
|
403
|
-
let released = 0;
|
|
404
|
-
for (const order of rows) {
|
|
405
|
-
try {
|
|
406
|
-
await ctx.store.write([
|
|
407
|
-
{ update: "orders", set: { orderStatus: "cancelled" }, where: { id: String(order.id) }, lock: Number(order.version) },
|
|
408
|
-
...(await stockOps(ctx, order.items as unknown as Line[], "release", String(order.orderToken))),
|
|
409
|
-
]);
|
|
410
|
-
released++;
|
|
411
|
-
} catch (error) {
|
|
412
|
-
// a payment settled it first, or a stock row changed: the next run reads it again
|
|
413
|
-
if (!(error instanceof DiagnosticError && error.diagnostic.code === "CONFLICT")) throw error;
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
return { released };
|
|
417
|
-
},
|
|
418
|
-
};
|
|
419
|
-
```
|
|
420
|
-
|
|
421
|
-
## The payment callback
|
|
422
|
-
|
|
423
|
-
A provider signs its callback over the raw body, so it is verified in the
|
|
424
|
-
service's own `fetch`, before any surface. Only a verified event reaches
|
|
425
|
-
`settle-order`, as the system caller. In `src/service.ts`:
|
|
426
|
-
|
|
427
|
-
```ts
|
|
428
|
-
import { systemCaller } from "@aotter/mantle";
|
|
429
|
-
|
|
430
|
-
// inside the function the service's fetch returns, before the auth routes:
|
|
431
|
-
if (pathname === "/payments/callback" && request.method === "POST") {
|
|
432
|
-
const raw = await request.text();
|
|
433
|
-
const event = await verifyProviderEvent(raw, request.headers.get("x-provider-signature"), env.PAYMENT_WEBHOOK_SECRET);
|
|
434
|
-
if (!event) return new Response("invalid signature", { status: 400 });
|
|
435
|
-
if (event.type !== "payment.succeeded") return new Response("ignored");
|
|
436
|
-
await runtime.invokeProcedure({
|
|
437
|
-
procedure: "settle-order",
|
|
438
|
-
input: { orderToken: event.orderToken },
|
|
439
|
-
caller: systemCaller("payment-callback"),
|
|
440
|
-
cause: { kind: "internal", id: event.id }, // the provider's event id: stable across its retries
|
|
441
|
-
});
|
|
442
|
-
return new Response("OK"); // paid, already_paid, expired and missing are all final for the provider
|
|
443
|
-
}
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
`verifyProviderEvent` is the provider SDK's signature check, with
|
|
447
|
-
`PAYMENT_WEBHOOK_SECRET` as a Worker secret. A thrown `CONFLICT` (a
|
|
448
|
-
concurrent expiry) answers 500 here, so the provider retries and the next
|
|
449
|
-
attempt reads the settled state.
|
|
450
|
-
|
|
451
|
-
## Try it
|
|
452
|
-
|
|
453
|
-
```sh
|
|
454
|
-
curl -sS -X POST http://127.0.0.1:8787/api/commerce/orders \
|
|
455
|
-
-H 'content-type: application/json' \
|
|
456
|
-
-d '{"customerName":"Ada","customerEmail":"ada@example.test","shippingAddress":"1 Shell Lane","items":[{"productSlug":"notebook","quantity":2}]}'
|
|
457
|
-
```
|
|
458
|
-
|
|
459
|
-
The answer carries `orderToken`, `expiresAt`, and the total from the
|
|
460
|
-
published price. An unknown or unpublished product is HTTP 400. Ordering more
|
|
461
|
-
than is available fails the `available >= 0` check, also HTTP 400 (`CHECK
|
|
462
|
-
inventory: available >= 0`), and writes nothing. Two guests racing for one
|
|
463
|
-
row: one succeeds, the other gets `CONFLICT` and retries.
|
|
464
|
-
|
|
465
|
-
Staff, on `/mcp/staff`: `adjust_inventory` (Admin generates the
|
|
466
|
-
`operationId`), `fulfill_order` and `picking_list`. Fire the schedule locally
|
|
467
|
-
with `curl 'http://127.0.0.1:8787/__scheduled?cron=*/5+*+*+*+*'` under
|
|
468
|
-
`wrangler dev --test-scheduled`.
|
|
469
|
-
|
|
470
|
-
## What this leaves out
|
|
471
|
-
|
|
472
|
-
- **Refunds.** A late payment releases stock; refunding it is the provider's
|
|
473
|
-
API, from a `ref` handler.
|
|
474
|
-
- **Guest cancellation.** It would be one more Procedure shaped like
|
|
475
|
-
`settleOrder` with `"release"`, authorized by the order token.
|
|
476
|
-
- **More than 100 expired orders per run.** The next run takes the rest.
|
|
477
|
-
|
|
478
|
-
## Source
|
|
479
|
-
|
|
480
|
-
- [Writes: Procedures, Triggers and hooks](../handbook/concepts/procedures-and-triggers.md): atomic writes, locks, schedules
|
|
481
|
-
- [The service and its entry](../handbook/cloudflare/service-entry.md): a route before the surfaces
|