@aotter/mantle 0.1.5-alpha.1 → 0.2.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +166 -298
- package/dist/auth/adapter.d.ts +32 -0
- package/dist/auth/adapter.js +288 -0
- package/dist/auth/admin.d.ts +3 -0
- package/dist/auth/admin.js +21 -0
- package/dist/auth/caller.d.ts +86 -0
- package/dist/auth/caller.js +155 -0
- package/dist/auth/hardening.d.ts +24 -0
- package/dist/auth/hardening.js +40 -0
- package/dist/auth/identity.d.ts +121 -0
- package/dist/auth/identity.js +203 -0
- package/dist/auth/oauth.d.ts +63 -0
- package/dist/auth/oauth.js +217 -0
- package/dist/auth/resource-seeds.js +10 -0
- package/dist/auth/routes.d.ts +32 -0
- package/dist/auth/routes.js +226 -0
- package/dist/build/compiler.d.ts +721 -0
- package/dist/build/compiler.js +7029 -0
- package/dist/build/spec/domain/model/ManifestGrammar.d.ts +439 -0
- package/dist/build/spec/domain/model/RuntimePlan.d.ts +168 -0
- package/dist/build/spec/domain/model/SqlIr.d.ts +129 -0
- package/dist/build/spec/domain/model/UserFields.d.ts +21 -0
- package/dist/build/spec/domain/service/PlanFingerprint.d.ts +7 -0
- package/dist/build/spec/kernel/diagnostic.d.ts +108 -0
- package/dist/bun/assets.d.ts +2 -0
- package/dist/bun/assets.js +24 -0
- package/dist/domain/adminOrder.js +24 -0
- package/dist/domain/columns.js +57 -0
- package/dist/domain/describe/chunk-ZVXBGP7Y.js +424 -0
- package/dist/domain/describe/index.d.ts +58 -0
- package/dist/domain/describe/index.js +115 -0
- package/dist/domain/describe/target-hash.d.ts +8 -0
- package/dist/domain/describe/target-hash.js +12 -0
- package/dist/domain/describe/targets.d.ts +40 -0
- package/dist/domain/entry.js +33 -0
- package/dist/domain/generated-tools.js +19 -0
- package/dist/domain/generation.d.ts +16 -0
- package/dist/domain/generation.js +1 -0
- package/dist/domain/input.js +17 -0
- package/dist/domain/model.js +1 -0
- package/dist/domain/paging.js +230 -0
- package/dist/domain/recipes.js +24 -0
- package/dist/domain/userReferences.js +5 -0
- package/dist/domain/wireScalars.js +47 -0
- package/dist/infrastructure/adminEntries.js +153 -0
- package/dist/infrastructure/adminPaging.js +72 -0
- package/dist/infrastructure/artifacts.js +71 -0
- package/dist/infrastructure/authSchema.js +83 -0
- package/dist/infrastructure/bundle.js +188 -0
- package/dist/infrastructure/cli.js +118 -0
- package/dist/infrastructure/generate.d.ts +12 -0
- package/dist/infrastructure/generate.js +189 -0
- package/dist/infrastructure/generateAuth.d.ts +8 -0
- package/dist/infrastructure/generateAuth.js +74 -0
- package/dist/infrastructure/help.js +60 -0
- package/dist/infrastructure/init.js +54 -0
- package/dist/infrastructure/inputs.js +41 -0
- package/dist/infrastructure/mounts.js +25 -0
- package/dist/infrastructure/wrangler.js +109 -0
- package/dist/kernel/authorization.d.ts +4 -0
- package/dist/kernel/authorization.js +16 -0
- package/dist/kernel/binds.d.ts +60 -0
- package/dist/kernel/binds.js +49 -0
- package/dist/kernel/caller-identity.d.ts +24 -0
- package/dist/kernel/caller-identity.js +22 -0
- package/dist/kernel/contract-error.d.ts +12 -0
- package/dist/kernel/contract-error.js +14 -0
- package/dist/kernel/contracts.d.ts +143 -0
- package/dist/kernel/contracts.js +97 -0
- package/dist/kernel/cron.d.ts +1 -0
- package/dist/kernel/cron.js +58 -0
- package/dist/kernel/dialect/common.d.ts +38 -0
- package/dist/kernel/dialect/common.js +6 -0
- package/dist/kernel/dialect/postgres.d.ts +16 -0
- package/dist/kernel/dialect/postgres.js +18 -0
- package/dist/kernel/dialect/sqlite.d.ts +20 -0
- package/dist/kernel/dialect/sqlite.js +34 -0
- package/dist/kernel/drain.d.ts +5 -0
- package/dist/kernel/drain.js +35 -0
- package/dist/kernel/driver/bun-sqlite.d.ts +19 -0
- package/dist/kernel/driver/bun-sqlite.js +77 -0
- package/dist/kernel/driver/d1.d.ts +24 -0
- package/dist/kernel/driver/d1.js +22 -0
- package/dist/kernel/driver/postgres.d.ts +25 -0
- package/dist/kernel/driver/postgres.js +99 -0
- package/dist/kernel/driver/transaction-context.d.ts +10 -0
- package/dist/kernel/driver/transaction-context.js +29 -0
- package/dist/kernel/email.d.ts +28 -0
- package/dist/kernel/email.js +38 -0
- package/dist/kernel/host-access.d.ts +10 -0
- package/dist/kernel/host-access.js +65 -0
- package/dist/kernel/host-caller.d.ts +39 -0
- package/dist/kernel/host-caller.js +56 -0
- package/dist/kernel/json-body.d.ts +4 -0
- package/dist/kernel/json-body.js +44 -0
- package/dist/kernel/mcp-apps.d.ts +69 -0
- package/dist/kernel/mcp-apps.js +40 -0
- package/dist/kernel/mcp-call.d.ts +5 -0
- package/dist/kernel/mcp-call.js +25 -0
- package/dist/kernel/mcp-handler.js +371 -0
- package/dist/kernel/mcp.d.ts +110 -0
- package/dist/kernel/mcp.js +50 -0
- package/dist/kernel/media.d.ts +27 -0
- package/dist/kernel/media.js +216 -0
- package/dist/kernel/paging.d.ts +55 -0
- package/dist/kernel/paging.js +95 -0
- package/dist/kernel/publishing.d.ts +4 -0
- package/dist/kernel/publishing.js +16 -0
- package/dist/kernel/r2-media.d.ts +42 -0
- package/dist/kernel/r2-media.js +78 -0
- package/dist/kernel/rest-dispatch.js +38 -0
- package/dist/kernel/rest-router.js +64 -0
- package/dist/kernel/rest.d.ts +58 -0
- package/dist/kernel/rest.js +41 -0
- package/dist/kernel/scalars.d.ts +6 -0
- package/dist/kernel/scalars.js +44 -0
- package/dist/kernel/search.js +5 -0
- package/dist/kernel/site-types.d.ts +146 -0
- package/dist/kernel/site-types.js +1 -0
- package/dist/kernel/site.d.ts +39 -0
- package/dist/kernel/site.js +32 -0
- package/dist/kernel/store.d.ts +175 -0
- package/dist/kernel/store.js +269 -0
- package/dist/kernel/surface.d.ts +10 -0
- package/dist/kernel/surface.js +19 -0
- package/dist/kernel/sweep.d.ts +17 -0
- package/dist/kernel/sweep.js +27 -0
- package/dist/kernel/translations.d.ts +1 -0
- package/dist/kernel/translations.js +13 -0
- package/dist/kernel/user-caller.d.ts +31 -0
- package/dist/kernel/user-caller.js +67 -0
- package/dist/kernel/user-field-name.js +3 -0
- package/dist/kernel/user-fields.d.ts +35 -0
- package/dist/kernel/user-fields.js +81 -0
- package/dist/kernel/validation.d.ts +15 -0
- package/dist/kernel/validation.js +54 -0
- package/dist/kernel/web-gateway.js +68 -0
- package/dist/kernel/web-head.js +15 -0
- package/dist/kernel/web-index.js +40 -0
- package/dist/kernel/web-response.js +8 -0
- package/dist/kernel/web.d.ts +77 -0
- package/dist/kernel/web.js +124 -0
- package/dist/kernel/where.js +27 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.js +1 -0
- package/dist/usecase/adminBindings.js +143 -0
- package/dist/usecase/adminClient.js +87 -0
- package/dist/usecase/adminDescriptors.js +107 -0
- package/dist/usecase/generate.js +166 -0
- package/dist/usecase/handlers.js +21 -0
- package/dist/usecase/mcp-media.js +17 -0
- package/dist/usecase/mcp.js +100 -0
- package/dist/usecase/paging.js +71 -0
- package/dist/usecase/publishing.js +63 -0
- package/dist/usecase/refusals.js +27 -0
- package/dist/usecase/rest.js +54 -0
- package/dist/usecase/search.js +7 -0
- package/dist/usecase/site.js +39 -0
- package/dist/usecase/stores.js +64 -0
- package/dist/usecase/tool-version.js +9 -0
- package/dist/usecase/translations.js +78 -0
- package/dist/usecase/ttl.js +20 -0
- package/dist/usecase/validation.js +241 -0
- package/dist/usecase/web.js +23 -0
- package/docs/examples/README.md +39 -18
- package/docs/examples/app-shell/.dev.vars.example +4 -0
- package/docs/examples/app-shell/README.md +121 -0
- package/docs/examples/app-shell/accept.mjs +91 -0
- package/docs/examples/app-shell/gitignore +7 -0
- package/docs/examples/app-shell/package.json +43 -0
- package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
- package/docs/examples/app-shell/smoke-kit.mjs +168 -0
- package/docs/examples/app-shell/src/auth.ts +58 -0
- package/docs/examples/app-shell/src/handlers.ts +5 -0
- package/docs/examples/app-shell/src/index.ts +4 -0
- package/docs/examples/app-shell/src/routes.ts +14 -0
- package/docs/examples/app-shell/src/schedule.ts +8 -0
- package/docs/examples/app-shell/src/service.ts +70 -0
- package/docs/examples/app-shell/src/sign-in.ts +41 -0
- package/docs/examples/app-shell/src/signup.ts +8 -0
- package/docs/examples/app-shell/tsconfig.json +26 -0
- package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
- package/docs/examples/app-shell/wrangler.jsonc +62 -0
- package/docs/examples/club-events/README.md +65 -0
- package/docs/examples/club-events/manifests/club-events.yaml +247 -0
- package/docs/examples/club-events/smoke.mjs +127 -0
- package/docs/examples/club-events/src/handlers.ts +25 -0
- package/docs/examples/club-events/src/signup.ts +9 -0
- package/docs/examples/generated-web/README.md +78 -0
- package/docs/examples/generated-web/posts.yaml +38 -0
- package/docs/examples/generated-web/seed.sql +6 -0
- package/docs/examples/generated-web/src/worker.ts +43 -0
- package/docs/examples/generated-web/tsconfig.json +8 -0
- package/docs/examples/generated-web/wrangler.jsonc +8 -0
- package/docs/examples/purchasing/.dev.vars.example +6 -0
- package/docs/examples/purchasing/README.md +99 -0
- package/docs/examples/purchasing/manifests/purchasing.yaml +374 -0
- package/docs/examples/purchasing/seed.sql +4 -0
- package/docs/examples/purchasing/smoke.mjs +191 -0
- package/docs/examples/purchasing/src/admin.tsx +13 -0
- package/docs/examples/purchasing/src/handlers.ts +33 -0
- package/docs/examples/purchasing/src/notify.ts +29 -0
- package/docs/examples/purchasing/src/requests-page.ts +57 -0
- package/docs/examples/purchasing/src/routes.ts +53 -0
- package/docs/examples/purchasing/src/schedule.ts +31 -0
- package/docs/examples/purchasing/src/signup.ts +5 -0
- package/docs/examples/purchasing/src/supplier.ts +32 -0
- package/docs/examples/purchasing/wrangler.jsonc +69 -0
- package/docs/examples/recipes/README.md +60 -0
- package/docs/examples/recipes/manifests/recipes.yaml +75 -0
- package/docs/examples/recipes/smoke.mjs +102 -0
- package/docs/examples/recipes/src/media.ts +13 -0
- package/docs/examples/recipes/src/pages.ts +99 -0
- package/docs/examples/recipes/src/routes.ts +71 -0
- package/docs/examples/recipes/src/site-config.ts +12 -0
- package/docs/examples/recipes/wrangler.jsonc +74 -0
- package/docs/handbook/cloudflare/authentication.md +180 -322
- package/docs/handbook/cloudflare/chatgpt-sites.md +5 -23
- package/docs/handbook/cloudflare/deploy-and-operate.md +55 -77
- package/docs/handbook/cloudflare/media-r2.md +61 -205
- package/docs/handbook/cloudflare/service-entry.md +239 -0
- package/docs/handbook/concepts/authorization.md +10 -107
- package/docs/handbook/concepts/four-atoms.md +9 -168
- package/docs/handbook/concepts/lifecycle-and-locales.md +9 -132
- package/docs/handbook/concepts/mcp-and-agents.md +24 -121
- package/docs/handbook/concepts/procedures-and-triggers.md +5 -217
- package/docs/handbook/concepts/runtime-and-adapters.md +15 -169
- package/docs/handbook/concepts/views.md +10 -185
- package/docs/handbook/examples/hub.md +3 -8
- package/docs/handbook/guides/adapter-guide.md +11 -0
- package/docs/handbook/guides/admin-ui.md +115 -133
- package/docs/handbook/guides/agent-setup.md +64 -74
- package/docs/handbook/guides/agent-workflow-acceptance.md +232 -0
- package/docs/handbook/guides/email.md +86 -0
- package/docs/handbook/guides/local-testing.md +40 -0
- package/docs/handbook/guides/mcp-apps.md +560 -0
- package/docs/handbook/guides/native-admin.md +566 -0
- package/docs/handbook/guides/native-execution.md +133 -0
- package/docs/handbook/guides/oauth.md +219 -0
- package/docs/handbook/guides/postgres-adapters.md +56 -0
- package/docs/handbook/guides/public-pages.md +87 -0
- package/docs/handbook/guides/size-and-startup.md +9 -0
- package/docs/handbook/guides/sql-patterns.md +266 -0
- package/docs/handbook/guides/typed-queries.md +211 -107
- package/docs/handbook/navigation.json +176 -55
- package/docs/handbook/reference/admin-descriptors.md +53 -0
- package/docs/handbook/reference/authorization.md +39 -266
- package/docs/handbook/reference/describe.md +56 -0
- package/docs/handbook/reference/diagnostics.md +19 -186
- package/docs/handbook/reference/features.md +45 -55
- package/docs/handbook/reference/manifest.md +6 -129
- package/docs/handbook/reference/procedure.md +11 -303
- package/docs/handbook/reference/schema.md +64 -240
- package/docs/handbook/reference/site-config.md +5 -218
- package/docs/handbook/reference/sql.md +64 -0
- package/docs/handbook/reference/surface.md +392 -201
- package/docs/handbook/reference/trigger.md +56 -192
- package/docs/handbook/reference/view.md +24 -243
- package/docs/handbook/releases/index.md +244 -77
- package/docs/handbook/start/agents.md +45 -0
- package/docs/handbook/start/overview.md +9 -48
- package/docs/handbook/start/project-and-cli.md +51 -104
- package/docs/handbook/start/quickstart-worker.md +43 -178
- package/docs/skills/develop/SKILL.md +79 -249
- package/docs/skills/integrate/SKILL.md +39 -50
- package/docs/skills/media-gc/SKILL.md +34 -10
- package/docs/skills/provision/SKILL.md +36 -186
- package/docs/skills/update/SKILL.md +23 -38
- package/docs/source/scripts/postgres-adapter.ts +101 -0
- package/docs/upgrade-0.1-to-0.2.md +227 -0
- package/package.json +120 -131
- package/skills/README.md +48 -108
- package/skills/mantle/SKILL.md +76 -0
- package/dist/admin-ui.d.ts +0 -2
- package/dist/admin-ui.d.ts.map +0 -1
- package/dist/admin-ui.js +0 -2
- package/dist/admin-ui.js.map +0 -1
- package/dist/admin.d.ts +0 -2
- package/dist/admin.d.ts.map +0 -1
- package/dist/admin.js +0 -2
- package/dist/admin.js.map +0 -1
- package/dist/auth.d.ts +0 -2
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -2
- package/dist/auth.js.map +0 -1
- package/dist/bun.d.ts +0 -2
- package/dist/bun.d.ts.map +0 -1
- package/dist/bun.js +0 -2
- package/dist/bun.js.map +0 -1
- package/dist/cli/generate-cloudflare.d.ts +0 -7
- package/dist/cli/generate-cloudflare.d.ts.map +0 -1
- package/dist/cli/generate-cloudflare.js +0 -123
- package/dist/cli/generate-cloudflare.js.map +0 -1
- package/dist/cli/generate-project.d.ts +0 -25
- package/dist/cli/generate-project.d.ts.map +0 -1
- package/dist/cli/generate-project.js +0 -282
- package/dist/cli/generate-project.js.map +0 -1
- package/dist/cli/generate-sites.d.ts +0 -8
- package/dist/cli/generate-sites.d.ts.map +0 -1
- package/dist/cli/generate-sites.js +0 -273
- package/dist/cli/generate-sites.js.map +0 -1
- package/dist/cli/generate.d.ts +0 -20
- package/dist/cli/generate.d.ts.map +0 -1
- package/dist/cli/generate.js +0 -299
- package/dist/cli/generate.js.map +0 -1
- package/dist/cli/harness.d.ts +0 -3
- package/dist/cli/harness.d.ts.map +0 -1
- package/dist/cli/harness.js +0 -214
- package/dist/cli/harness.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 -77
- package/dist/cli/main.js.map +0 -1
- package/dist/cli/skills.d.ts +0 -3
- package/dist/cli/skills.d.ts.map +0 -1
- package/dist/cli/skills.js +0 -128
- package/dist/cli/skills.js.map +0 -1
- package/dist/cloudflare.d.ts +0 -2
- package/dist/cloudflare.d.ts.map +0 -1
- package/dist/cloudflare.js +0 -2
- package/dist/cloudflare.js.map +0 -1
- package/dist/codegen/emitMantleModule.d.ts +0 -22
- package/dist/codegen/emitMantleModule.d.ts.map +0 -1
- package/dist/codegen/emitMantleModule.js +0 -291
- package/dist/codegen/emitMantleModule.js.map +0 -1
- package/dist/codegen.d.ts +0 -2
- package/dist/codegen.d.ts.map +0 -1
- package/dist/codegen.js +0 -2
- package/dist/codegen.js.map +0 -1
- package/dist/runtime-testing.d.ts +0 -2
- package/dist/runtime-testing.d.ts.map +0 -1
- package/dist/runtime-testing.js +0 -2
- package/dist/runtime-testing.js.map +0 -1
- package/dist/runtime.d.ts +0 -2
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js +0 -2
- package/dist/runtime.js.map +0 -1
- package/dist/spec.d.ts +0 -2
- package/dist/spec.d.ts.map +0 -1
- package/dist/spec.js +0 -2
- package/dist/spec.js.map +0 -1
- package/dist/vercel-libsql.d.ts +0 -2
- package/dist/vercel-libsql.d.ts.map +0 -1
- package/dist/vercel-libsql.js +0 -2
- package/dist/vercel-libsql.js.map +0 -1
- package/dist/vercel.d.ts +0 -2
- package/dist/vercel.d.ts.map +0 -1
- package/dist/vercel.js +0 -2
- package/dist/vercel.js.map +0 -1
- package/dist/web.d.ts +0 -2
- package/dist/web.d.ts.map +0 -1
- package/dist/web.js +0 -2
- package/dist/web.js.map +0 -1
- package/docs/adapter-guide.md +0 -222
- 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 -900
- 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 -240
- 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/README.md +0 -81
- 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 -42
- package/docs/adr/adr-lite-909-admin-ui-kit.md +0 -37
- package/docs/agent-prompts.md +0 -64
- package/docs/api-mcp-authorization.md +0 -5
- package/docs/assets/mantle-admin-developer.png +0 -0
- package/docs/assets/mantle-admin-operations.png +0 -0
- package/docs/assets/mantle-hero.jpg +0 -0
- package/docs/auth-hosting-model.md +0 -166
- package/docs/cloudflare-low-level-composition.md +0 -5
- package/docs/consumer-onboarding-audit.md +0 -65
- package/docs/deferred-lifecycle-queues.md +0 -5
- package/docs/design-atoms.md +0 -16
- package/docs/design-references/editorial-blog-2026-05-05.md +0 -218
- package/docs/direct-authoring.md +0 -5
- package/docs/examples/builtin-commerce.md +0 -269
- package/docs/examples/builtin-intake.md +0 -143
- package/docs/examples/builtin-legal-documents.md +0 -189
- package/docs/examples/builtin-procurement.md +0 -241
- package/docs/examples/builtin-publication.md +0 -241
- package/docs/examples/builtin-reservation.md +0 -149
- package/docs/examples/cf-primitives-commerce-inventory.md +0 -809
- package/docs/examples/cf-primitives-guarded-api.md +0 -429
- package/docs/examples/cf-primitives-intake-hooks.md +0 -319
- package/docs/examples/host-chatgpt-sites/.openai/hosting.json +0 -1
- package/docs/examples/host-chatgpt-sites/README.md +0 -70
- package/docs/examples/host-chatgpt-sites/drizzle/0000_sites_users.sql +0 -8
- package/docs/examples/host-chatgpt-sites/drizzle/0001_mantle.sql +0 -294
- package/docs/examples/host-chatgpt-sites/drizzle/0002_article_cover.sql +0 -5
- package/docs/examples/host-chatgpt-sites/drizzle/0003_store_instance_id.sql +0 -1
- package/docs/examples/host-chatgpt-sites/drizzle/0004_mantle.sql +0 -10
- package/docs/examples/host-chatgpt-sites/drizzle/0005_mantle.sql +0 -24
- package/docs/examples/host-chatgpt-sites/drizzle/meta/_journal.json +0 -1
- package/docs/examples/host-chatgpt-sites/drizzle/meta/mantle-state.json +0 -60
- package/docs/examples/host-chatgpt-sites/manifests/site.yaml +0 -27
- package/docs/examples/host-chatgpt-sites/package.json +0 -1
- package/docs/examples/host-chatgpt-sites/public/site.css +0 -1
- package/docs/examples/host-chatgpt-sites/scripts/build.mjs +0 -13
- package/docs/examples/host-chatgpt-sites/scripts/check.mjs +0 -101
- package/docs/examples/host-chatgpt-sites/scripts/migration.mjs +0 -43
- package/docs/examples/host-chatgpt-sites/src/chatgpt-auth.ts +0 -66
- package/docs/examples/host-chatgpt-sites/src/index.ts +0 -46
- package/docs/examples/host-chatgpt-sites/src/mcp.ts +0 -49
- package/docs/examples/host-chatgpt-sites/src/media.ts +0 -109
- package/docs/examples/host-chatgpt-sites/src/r2-lab.ts +0 -38
- package/docs/examples/host-chatgpt-sites/src/storage-fingerprint.json +0 -1
- package/docs/examples/host-chatgpt-sites/src/web.ts +0 -35
- package/docs/examples/host-chatgpt-sites/tsconfig.json +0 -1
- package/docs/examples/host-chatgpt-sites/wrangler.jsonc +0 -10
- package/docs/examples/host-local-admin-otp/.dev.vars.example +0 -3
- package/docs/examples/host-local-admin-otp/README.md +0 -80
- package/docs/examples/host-local-admin-otp/ensure-dev-vars.mjs +0 -5
- package/docs/examples/host-local-admin-otp/manifests/site.yaml +0 -25
- package/docs/examples/host-local-admin-otp/package.json +0 -29
- package/docs/examples/host-local-admin-otp/public/.gitkeep +0 -1
- package/docs/examples/host-local-admin-otp/smoke.mjs +0 -141
- package/docs/examples/host-local-admin-otp/src/index.ts +0 -54
- package/docs/examples/host-local-admin-otp/tsconfig.json +0 -17
- package/docs/examples/host-local-admin-otp/wrangler.jsonc +0 -23
- package/docs/examples/host-minimal-worker/README.md +0 -41
- package/docs/examples/host-minimal-worker/manifests/site.yaml +0 -25
- package/docs/examples/host-minimal-worker/package.json +0 -26
- package/docs/examples/host-minimal-worker/smoke.mjs +0 -23
- package/docs/examples/host-minimal-worker/src/index.ts +0 -4
- package/docs/examples/host-minimal-worker/tsconfig.json +0 -17
- package/docs/examples/host-minimal-worker/wrangler.jsonc +0 -22
- package/docs/handbook/chatgpt-sites/equipment-checkout.md +0 -231
- package/docs/handbook/chatgpt-sites/generated-app.md +0 -84
- package/docs/handbook/chatgpt-sites/host-reference.md +0 -113
- package/docs/handbook/chatgpt-sites/index.md +0 -133
- package/docs/handbook/cloudflare/bindings.md +0 -291
- package/docs/handbook/cloudflare/conventional-worker.md +0 -166
- package/docs/handbook/cloudflare/deferred-hooks-queues.md +0 -170
- package/docs/handbook/cloudflare/low-level-composition.md +0 -169
- package/docs/handbook/cloudflare/public-web.md +0 -144
- package/docs/handbook/cloudflare/site-chrome.md +0 -75
- package/docs/handbook/examples/commerce-transaction.md +0 -11
- package/docs/handbook/examples/commerce.md +0 -11
- package/docs/handbook/examples/guarded-api.md +0 -10
- package/docs/handbook/examples/intake-form.md +0 -12
- package/docs/handbook/examples/intake-hooks.md +0 -11
- package/docs/handbook/examples/legal-documents.md +0 -10
- package/docs/handbook/examples/procurement-approvals.md +0 -10
- package/docs/handbook/examples/publication.md +0 -10
- package/docs/handbook/examples/reservation.md +0 -10
- package/docs/handbook/start/quickstart-admin.md +0 -52
- package/docs/labels.md +0 -71
- package/docs/media-uploads.md +0 -5
- package/docs/migration-0.1.2.md +0 -13
- package/docs/performance-harness.md +0 -228
- package/docs/release-process.md +0 -244
- package/docs/schema-indexes.md +0 -5
- package/docs/sealed-pipeline-ownership.md +0 -101
- package/docs/skills/plugin/SKILL.md +0 -132
- package/docs/skills/theme/SKILL.md +0 -77
- package/docs/spec-only-host-adoption.md +0 -157
- package/docs/transaction-patterns.md +0 -5
- package/skills/develop/SKILL.md +0 -258
- package/skills/install/SKILL.md +0 -112
- package/skills/integrate/SKILL.md +0 -60
- package/skills/media-gc/SKILL.md +0 -85
- package/skills/plugin/SKILL.md +0 -132
- package/skills/provision/SKILL.md +0 -194
- package/skills/theme/SKILL.md +0 -77
- package/skills/update/SKILL.md +0 -51
- package/templates/chatgpt-sites/auth.ts +0 -66
- package/templates/chatgpt-sites/build.mjs +0 -14
- package/templates/chatgpt-sites/env.ts +0 -1
- package/templates/chatgpt-sites/mcp.ts +0 -48
- package/templates/chatgpt-sites/public-mcp.ts +0 -29
- package/templates/chatgpt-sites/smoke-local.mjs +0 -20
|
@@ -1,80 +1,249 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Every
|
|
2
|
+
description: Every Mantle release line — what 0.2.0 changes, and what each stable 0.1.x release contained.
|
|
3
3
|
---
|
|
4
4
|
# Releases
|
|
5
5
|
|
|
6
6
|
Mantle publishes to npm under the `@aotter/*` scope. A **stable** release is a
|
|
7
|
-
plain `X.Y.Z` version on the `latest` dist-tag
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
7
|
+
plain `X.Y.Z` version on the `latest` dist-tag and is the only kind intended
|
|
8
|
+
for production. Prereleases (`alpha`, `rc`) let a release be prepared in the
|
|
9
|
+
open; installing one means choosing an exact version, not a channel.
|
|
10
|
+
[GitHub Releases](https://github.com/aotter/mantle/releases) is the canonical
|
|
11
|
+
change history; this page is the narrative one.
|
|
12
|
+
|
|
13
|
+
From 0.2.0-alpha.7, Mantle publishes three packages together at one version:
|
|
14
|
+
`@aotter/mantle` (native SDK, compiler and CLI), `@aotter/mantle-ui` (pure UI),
|
|
15
|
+
and `@aotter/mantle-admin` (optional Admin server, SPA and MCP App).
|
|
16
|
+
Pin every package you use to the same exact version and upgrade them together.
|
|
17
|
+
|
|
18
|
+
## 0.2.0 — in preparation
|
|
19
|
+
|
|
20
|
+
### Upgrading to 0.2.0-alpha.10
|
|
21
|
+
|
|
22
|
+
Pin every selected `@aotter/mantle`, `@aotter/mantle-ui` and
|
|
23
|
+
`@aotter/mantle-admin` dependency to `0.2.0-alpha.10`, refresh the lockfile,
|
|
24
|
+
then regenerate and check the application's owned artifacts. Keep existing
|
|
25
|
+
production migrations application-owned; generated initial DDL is for an empty
|
|
26
|
+
database. This alpha includes breaking Admin authoring and paging changes.
|
|
27
|
+
|
|
28
|
+
1. **Build output and host configuration.** `mantle bundle` writes server
|
|
29
|
+
modules to `dist/worker` and static files to `dist/client`, including
|
|
30
|
+
`dist/client/admin`. Rerun `mantle generate` with the application's `--entry`
|
|
31
|
+
and check the resulting Wrangler `main`, `base_dir`, asset directory and
|
|
32
|
+
build command. See [CLI and generated ownership](../start/project-and-cli.md).
|
|
33
|
+
2. **Application-owned React.** Install React and React DOM in the application
|
|
34
|
+
at the same exact version (the examples use `19.3.0`). Admin takes them as
|
|
35
|
+
peers; a mismatched pair fails its build.
|
|
36
|
+
3. **Replace extensions with application composition.** Move to
|
|
37
|
+
`defineAdmin(meta, { nav, pages, home, components, plugins, mcp })` in
|
|
38
|
+
`src/admin.tsx`. Remove `--admin-extensions`, `adminExtensions`,
|
|
39
|
+
`defineAdminExtension`, extension handlers and removed manifest widget,
|
|
40
|
+
`list.cells` and panel references. `navGroups` becomes `nav.groups`.
|
|
41
|
+
Use the [Admin migration table](../guides/native-admin.md#migrating-from-admin-extensions)
|
|
42
|
+
rather than carrying the former registration layer forward.
|
|
43
|
+
4. **Build the MCP App with the application.** The prebuilt
|
|
44
|
+
`@aotter/mantle-admin/mcp-app` / `mantleAppHtml` export is gone. Use
|
|
45
|
+
`adminMcpApps({ catalogue: mcpAppCatalogues.admin })` with the generated
|
|
46
|
+
catalogue; it reads the built asset. Declare CSP once in `defineAdmin`.
|
|
47
|
+
The default resource URI hashes the built HTML, catalogue and metadata;
|
|
48
|
+
custom HTML functions need an explicit immutable URI. Load interactive
|
|
49
|
+
host HTML through authenticated `resources/read`, which embeds its
|
|
50
|
+
catalogue. See [MCP Apps](../guides/mcp-apps.md).
|
|
51
|
+
5. **Run the generated compatibility check.** Run
|
|
52
|
+
`node --test generated/admin-mcp-app.check.mjs` after building. Install
|
|
53
|
+
the optional `playwright-core` peer and a browser, or set
|
|
54
|
+
`MANTLE_TEST_CHROMIUM`; a missing browser fails rather than skips. This
|
|
55
|
+
checks rendering with a synthetic catalogue, not application authorization
|
|
56
|
+
or completion of a Procedure action.
|
|
57
|
+
6. **Keep the host graph safe.** The MCP build rejects `/admin/api` access,
|
|
58
|
+
cookies and undeclared remote loads. Its entry must be readable in Node.
|
|
59
|
+
An optional `src/admin.mcp.tsx` (or `buildAdmin({ mcpEntry })`) isolates
|
|
60
|
+
browser-only integrations; both roots can reuse one host-safe config,
|
|
61
|
+
components and CSS. Without it the whole shared entry graph is checked.
|
|
62
|
+
7. **Distinguish total bounds from page sizes.** Authored SQL `LIMIT` now
|
|
63
|
+
bounds the complete ordered result set across cursor pages, including web
|
|
64
|
+
indexes. Use paging `options.limit` for page size; remove an authored limit
|
|
65
|
+
only if it was incorrectly being used as a page-size setting. MCP accepts
|
|
66
|
+
sizes of 1–500, but a response budget can return fewer rows: append pages
|
|
67
|
+
until `nextCursor` is absent, not until a short page. See
|
|
68
|
+
[View paging](../reference/surface.md).
|
|
69
|
+
8. **Install build dependencies where the build runs.** Wrangler dev/deploy
|
|
70
|
+
runs its configured build command, so that environment needs
|
|
71
|
+
`node_modules`. The resulting built server/assets do not read
|
|
72
|
+
`node_modules` when served. See the
|
|
73
|
+
[application shell](../../examples/app-shell/README.md).
|
|
74
|
+
|
|
75
|
+
Record/collection cells, inputs, record actions, asides and `RecordView` are
|
|
76
|
+
now truthfully browser-only (`surface: "browser"`); remove unreachable MCP
|
|
77
|
+
branches. View cells remain `both`, and pages opt in through `pages[].mcp`.
|
|
78
|
+
A Procedure action's input is distinct from a collection record input: use a
|
|
79
|
+
Procedure target and MCP Trigger with the View's unchanged `id` and observed
|
|
80
|
+
`version` for native row actions. [Shared custom-page headers](../guides/mcp-apps.md#customising-admin-for-mcp-hosts)
|
|
81
|
+
can compose localized title, description and actions on both surfaces; omit the
|
|
82
|
+
option to keep prior behavior, or use `header: false` for an element-owned heading.
|
|
83
|
+
|
|
84
|
+
OAuth issuer verification now follows Better Auth's normalized URL while
|
|
85
|
+
preserving explicit issuer/JWKS settings. Cloudflare OAuth configurations need
|
|
86
|
+
`global_fetch_strictly_public` for public JWKS fetches; generated settings and
|
|
87
|
+
the official examples retain it. Native MCP Apps use the official ext-apps
|
|
88
|
+
client. Browser Admin now displays a localized explicit reload action when a
|
|
89
|
+
lazy page fails, rather than going blank; it does not reload automatically or
|
|
90
|
+
replay writes.
|
|
91
|
+
|
|
92
|
+
### Native SDK migration (alpha.7)
|
|
93
|
+
|
|
94
|
+
Alpha.7 replaces the previous Core runtime and generated service contract.
|
|
95
|
+
Existing alpha.6 applications require a source migration:
|
|
96
|
+
|
|
97
|
+
- Replace `createMantle`, `Store.select` and the old host presets with
|
|
98
|
+
[native generated queries and Store](../guides/typed-queries.md).
|
|
99
|
+
Generate with an explicit target and output directory, for example
|
|
100
|
+
`mantle generate cloudflare-d1 generated manifests/*.yaml --auth src/auth.ts --admin`.
|
|
101
|
+
See [CLI and generated ownership](../start/project-and-cli.md).
|
|
102
|
+
- The application owns routing, native database handles, verified Caller,
|
|
103
|
+
Auth configuration and migrations. Runtime no longer converges storage or
|
|
104
|
+
runs DDL at boot. Apply generated `schema.sql` only to an empty database;
|
|
105
|
+
migrate existing data explicitly. PostgreSQL uses Bun.SQL on Bun and
|
|
106
|
+
postgres.js on Workers. See [native execution](../guides/native-execution.md).
|
|
107
|
+
- Install the separate `@aotter/mantle-admin` package when selecting Admin, with `react` and `react-dom` in the application pinned to one identical exact version (Admin no longer installs them).
|
|
108
|
+
Compose its [native bindings](../guides/native-admin.md) in the application.
|
|
109
|
+
Bare queries retain driver-native values; selected REST/MCP/Admin boundaries
|
|
110
|
+
own validation and declared-column wire conversion.
|
|
111
|
+
- Move lifecycle/schedule handlers and dynamic authorization guards into
|
|
112
|
+
application code. Review [authorization and Caller wiring](../concepts/runtime-and-adapters.md)
|
|
113
|
+
and regenerate all owned artifacts before running `generate --check`.
|
|
114
|
+
|
|
115
|
+
The [reference Worker](https://github.com/aotter/mantle/tree/v0.2.0-alpha.10/docs/examples/reference-service) and
|
|
116
|
+
[app shell](../../examples/app-shell/) demonstrate the current composition.
|
|
117
|
+
The following earlier-alpha notes are historical; the current handbook and
|
|
118
|
+
the native migration above supersede their runtime and CLI instructions.
|
|
119
|
+
|
|
120
|
+
### Earlier alpha design
|
|
121
|
+
|
|
122
|
+
0.2.0 replaces 0.1.x's grammar and composition; no stable 0.1.5 was released
|
|
123
|
+
(`0.1.5-alpha.1` was a prerelease). It breaks every consumer, and
|
|
124
|
+
`docs/upgrade-0.1-to-0.2.md` in the package is the guide for moving a project
|
|
125
|
+
by hand.
|
|
126
|
+
|
|
127
|
+
- **Manifests are `cms.mantle.aotter.net/v2`.** Views are one SQL `SELECT` and
|
|
128
|
+
Procedures are SQL statements or a `ref`, in PostgreSQL syntax. The builtin
|
|
129
|
+
handlers, the Filter AST, `params`, `$ctx` references and `x-mantle-bind` are
|
|
130
|
+
gone; Schemas gain `checks`, and `searchableFields` becomes full-text search.
|
|
131
|
+
- **SQL in the dialect's syntax.** PostgreSQL is the reference dialect
|
|
132
|
+
(`@aotter/mantle/postgres`); D1 and SQLite run a subset
|
|
133
|
+
(`@aotter/mantle/d1`). Each dialect is its own target (ADR-0039), and a
|
|
134
|
+
plan records its dialect.
|
|
135
|
+
- **One Store.** Every read and write goes through Store, which adds caller
|
|
136
|
+
scope, TTL and published-only to every statement, and an optimistic lock
|
|
137
|
+
where the caller passes one; a write
|
|
138
|
+
is all or nothing.
|
|
139
|
+
- **The service is the application's.** `createMantle(service, …)` replaces
|
|
140
|
+
`createMantleWorker`, and the first `mantle generate` writes the host's
|
|
141
|
+
preset (`src/service.ts`, `src/index.ts`, ...) once. `--host` is
|
|
142
|
+
`cloudflare` (D1, or PostgreSQL through Hyperdrive), `bun` (node-postgres
|
|
143
|
+
or bun:sqlite, `@aotter/mantle/bun`) or `none` (plan and types only), and
|
|
144
|
+
`--dialect` is `sqlite` or `postgres`; both are chosen once.
|
|
145
|
+
- **Mantle never owns your users.** A `CallerResolver` turns a request into a
|
|
146
|
+
`Caller`; identity is `mantle` (Better Auth), `custom` or `none`. Core creates
|
|
147
|
+
no auth tables.
|
|
148
|
+
- **Storage converges to the plan** at boot: additions are applied, unsafe
|
|
149
|
+
changes are refused with a diagnostic, nothing is dropped, and there are no
|
|
150
|
+
migration files.
|
|
151
|
+
- **Schedules are POSIX cron**; `toCloudflareCron` translates them for Wrangler.
|
|
152
|
+
- **MCP tools come from Views and Procedures only.** Staff tools are at
|
|
153
|
+
`/mcp/staff` for an OAuth client, with Mantle's MCP App rendering staff
|
|
154
|
+
View rows in the chat; Admin's WebMCP runs the same tools on Admin's own
|
|
155
|
+
routes.
|
|
156
|
+
- **The CLI is `mantle generate`** and `mantle generate --check`. `validate`,
|
|
157
|
+
`emit-openapi`, `skills` and `mantle-harness` are removed.
|
|
158
|
+
- **The Admin console** moves to `@aotter/mantle-ui/admin`, served at `/admin`
|
|
159
|
+
by the preset through the service's `ASSETS` binding.
|
|
160
|
+
- **Not yet in 0.2.0:** Mantle-rendered public pages and the MCP interaction
|
|
161
|
+
App tools.
|
|
162
|
+
|
|
163
|
+
### Native driver and before-hook cleanup (#1426)
|
|
164
|
+
|
|
165
|
+
This breaking source migration removes request-scoped PostgreSQL sessions,
|
|
166
|
+
custom write pipelining/retries, SQLite lock polling and before-hook runtime
|
|
167
|
+
policing. Copy the new native preset wiring; existing generated source is not
|
|
168
|
+
overwritten. Authenticated Bun SQLite uses separate Store/Auth handles to the
|
|
169
|
+
same WAL file. Operational before hooks no longer add an implicit version
|
|
170
|
+
lock; explicit OCC, publishing checks and authorization guards remain.
|
|
171
|
+
See [native execution migration](../guides/native-execution.md) and ADR-0041.
|
|
172
|
+
The alpha.6 instructions below describe that release; ADR-0041 supersedes its
|
|
173
|
+
requestScoped/pipeline/shared-SQLite-handle directions after this cleanup.
|
|
174
|
+
|
|
175
|
+
### Upgrading an existing PostgreSQL service (0.2.0-alpha.6)
|
|
176
|
+
|
|
177
|
+
PostgreSQL is native from this alpha (ADR-0039): each dialect is its own target,
|
|
178
|
+
PostgreSQL's SQL and ordering are PostgreSQL's, and node-postgres (`pg`) is the
|
|
179
|
+
PostgreSQL driver on every host. D1 and SQLite output is unchanged except where
|
|
180
|
+
noted. Work through these in order before deploying.
|
|
181
|
+
|
|
182
|
+
1. **Role settings (from #1383, now also checked on Bun).** Boot refuses with
|
|
183
|
+
`STORAGE_CHANGE_BLOCKED` (path `storage:settings`) unless the role Mantle
|
|
184
|
+
connects as has a statement limit and UTC:
|
|
185
|
+
`ALTER ROLE app SET statement_timeout = '10s'; ALTER ROLE app SET TimeZone = 'UTC';`
|
|
186
|
+
(10s or less). Bun's `Bun.SQL` entry used to pin its own limit and skip this
|
|
187
|
+
check. A Hyperdrive config must keep `--caching-disabled`: reads, role
|
|
188
|
+
re-reads and grant revocations run outside a transaction.
|
|
189
|
+
2. **Rewrite SQLite spellings, then run `mantle generate`.** A PostgreSQL
|
|
190
|
+
manifest that uses `json_each`, `-> '$.a'`, `->> '$.a'`, `json_extract`,
|
|
191
|
+
`json_set`, `json_insert`, `json_remove` or `hex` fails validation with its
|
|
192
|
+
position and the PostgreSQL spelling. The
|
|
193
|
+
[dialect contract](../concepts/runtime-and-adapters.md#drivers-and-dialects)
|
|
194
|
+
covers the PostgreSQL target: `json_each(t.col) j` becomes
|
|
195
|
+
`jsonb_array_elements_text(t.col) WITH ORDINALITY AS j(value, n)` (a sorted
|
|
196
|
+
View over a row source needs the alias and `WITH ORDINALITY`, and `j.id`
|
|
197
|
+
becomes `j.n`), `CAST(n AS bool)` of an integer becomes `n <> 0`, and `||`
|
|
198
|
+
needs a text operand. The PostgreSQL dialect version is now 2, so a plan
|
|
199
|
+
compiled earlier fails at boot with `PLAN_FINGERPRINT_MISMATCH`: run
|
|
200
|
+
`mantle generate` and deploy the regenerated plan.
|
|
201
|
+
3. **NULL order.** Unstated `NULLS` now follows PostgreSQL: NULL last ascending,
|
|
202
|
+
first descending, for every `ORDER BY` including windows and
|
|
203
|
+
`json_group_array`. Write `NULLS FIRST` or `NULLS LAST` to keep a specific
|
|
204
|
+
order. Rows tied on the last sort key are ordered by `id` in that key's
|
|
205
|
+
direction. A cursor live across the deploy may repeat or skip rows once.
|
|
206
|
+
4. **Bun entry.** Install `pg` and `@types/pg`. Replace
|
|
207
|
+
`new SQL(url, { prepare: false, ... })` with
|
|
208
|
+
`new pg.Pool({ connectionString, pipeline: true })`; `Env.SQL` becomes
|
|
209
|
+
`Env.PG`. The simplest path is to delete `src/service.ts` and `src/index.ts`
|
|
210
|
+
and re-run `mantle generate --host bun`, or copy the new preset. Removed from
|
|
211
|
+
`@aotter/mantle/bun`: `bunPostgresStorage`, `bunPgConnect`,
|
|
212
|
+
`bunDatabaseDriver`, `bunAuthDatabase`, `BunSqlPool`, `BunAuthPool`. The role
|
|
213
|
+
no longer needs `TEMPORARY`. Custom transports lose `temporaryResultMetadata`,
|
|
214
|
+
`describeResult` and `readOnly` from `PgClient` / `PgStatement`.
|
|
215
|
+
5. **Generated `src/service.ts` changed.** The `database(env).run` wrapper moved
|
|
216
|
+
to the exported `mantle`, and the Bun pooled wrapper ends each client once.
|
|
217
|
+
The preset is never rewritten: re-run `mantle generate` into a scratch
|
|
218
|
+
directory and copy the difference, or delete and regenerate if unedited.
|
|
219
|
+
6. **First boot does one-time work.** It runs once under the advisory lock:
|
|
220
|
+
- one `_mantle_ix_<schema>_updated` index on `([scope,] updated_at, id)` per
|
|
221
|
+
Schema, built without `CONCURRENTLY` inside the convergence transaction, so
|
|
222
|
+
writes to a large table block while it builds. Pre-create it before
|
|
223
|
+
deploying, on the schema (`search_path`) Mantle uses, with both names quoted:
|
|
224
|
+
`CREATE INDEX CONCURRENTLY "_mantle_ix_<schema>_updated" ON "<schema>" (["<scope>",] updated_at, id)`.
|
|
225
|
+
A matching index is accepted. If a concurrent build fails, drop the invalid
|
|
226
|
+
index before deploying: boot accepts it by name and columns and never
|
|
227
|
+
rebuilds it. A Schema name longer than about 43 bytes gets a hashed index
|
|
228
|
+
name; read it from a fresh database's `pg_indexes` instead;
|
|
229
|
+
- each `_mantle_chk_*` check is rebuilt once (earlier releases left no
|
|
230
|
+
marker); later boots leave unchanged checks alone;
|
|
231
|
+
- the old `_mantle_jget`, `_mantle_bool` and `_mantle_json_each` functions
|
|
232
|
+
stay in place, unused: a previous release still running during a rolling
|
|
233
|
+
deploy calls them.
|
|
234
|
+
7. **Boot under contention.** Concurrent boots converge once. A boot that cannot
|
|
235
|
+
get a lock within about five tries of one second fails with
|
|
236
|
+
`STORAGE_CHANGE_BLOCKED` naming the lock (another boot still converging, or a
|
|
237
|
+
long transaction on a table the plan changes), and is not retried for 10
|
|
238
|
+
seconds. A winner building a very large index can outlast its waiters, which
|
|
239
|
+
then report the blocked boot; boot again when it has finished (#1408).
|
|
240
|
+
8. **Auth.** `get-session` no longer carries a `set-auth-jwt` response header
|
|
241
|
+
when the OAuth provider is configured; call the plugin's `/api/auth/token`
|
|
242
|
+
instead. `d1Driver`'s structural `D1PreparedStatement` now requires `first`
|
|
243
|
+
and `all`: a hand-rolled fake must add them.
|
|
244
|
+
9. **D1.** A paged View with `json_each` in a `JOIN` arm, or with more than one
|
|
245
|
+
`json_each`, now pages by every element's `id`: its order among ties changes,
|
|
246
|
+
no row is skipped, and a cursor issued before the upgrade may need to restart.
|
|
78
247
|
|
|
79
248
|
## 0.1.4 — 2026-09-24
|
|
80
249
|
|
|
@@ -178,7 +347,7 @@ See [HTTP, MCP, CLI and packages](../reference/surface.md) for the full list.
|
|
|
178
347
|
D1 and assets bindings, Better Auth 1.7 (social providers, email OTP, magic
|
|
179
348
|
link, passkey), Admin, MCP, Web and R2 media uploads. The Bun and Vercel
|
|
180
349
|
adapters are experimental, cover public Views and HTTP Triggers only, and leave
|
|
181
|
-
authentication and CSRF to the host.
|
|
350
|
+
authentication and CSRF to the host. ChatGPT Sites is a
|
|
182
351
|
first-class integration with a runnable reference.
|
|
183
352
|
|
|
184
353
|
**Agents.** `mantle skills` projects the installed package's skills into
|
|
@@ -193,7 +362,5 @@ Bun and Vercel adapters may change in a minor release.
|
|
|
193
362
|
|
|
194
363
|
## Source
|
|
195
364
|
|
|
196
|
-
- [
|
|
197
|
-
- [`
|
|
198
|
-
- [`.github/workflows/release.yml`](../../../.github/workflows/release.yml)
|
|
199
|
-
- [`scripts/release-tag-order.mjs`](../../../scripts/release-tag-order.mjs)
|
|
365
|
+
- [GitHub Releases](https://github.com/aotter/mantle/releases)
|
|
366
|
+
- [`CHANGELOG.md`](https://github.com/aotter/mantle/blob/main/CHANGELOG.md)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: The entry point `mantle help` prints first: choose a complete app or generation only, use examples as references, accept before done.
|
|
3
|
+
---
|
|
4
|
+
# Build with an agent
|
|
5
|
+
|
|
6
|
+
`mantle help` prints this page. `mantle help <topic>` prints one handbook page and ends with the commands for its next page and for every page it links; run those to read further.
|
|
7
|
+
Topics are the handbook paths below (for example `guides/native-admin`) or their last segment when unique (`native-admin`).
|
|
8
|
+
The installed package's `docs/` is the source of every topic, so the text always matches the installed version.
|
|
9
|
+
|
|
10
|
+
## Choose how much Mantle owns
|
|
11
|
+
|
|
12
|
+
| You want | Do |
|
|
13
|
+
| --- | --- |
|
|
14
|
+
| A complete application | `mantle init [directory]`, then follow its `README.md`. It writes the app shell once: Better Auth email OTP with `admin` and `user`, the Admin console, MCP for both roles, REST, and a member `/sign-in` page. Existing files stop it; `--dry-run` lists what it would write. |
|
|
15
|
+
| Only typed SQL and bindings inside an app you already have | Skip `init`. Write manifests and run `mantle generate <target> <output-directory> <manifest>...`; see `mantle help project-and-cli` and `mantle help typed-queries`. |
|
|
16
|
+
|
|
17
|
+
`init` writes the `cloudflare-d1` shell, the default target. `bun-sqlite`, `bun-postgres` and `cloudflare-postgres`
|
|
18
|
+
generate the same bindings; their app entry is yours (`mantle help service-entry`).
|
|
19
|
+
|
|
20
|
+
`init` writes app code you then own; it never runs again. `generate` writes only `generated/` and Wrangler build keys,
|
|
21
|
+
and overwrites them on every run. When `generate` sees a selected surface (REST, MCP, Admin) whose generated module
|
|
22
|
+
the app entry (`--entry`) never imports, it warns and names the topic that shows the wiring.
|
|
23
|
+
|
|
24
|
+
## Build from a product brief
|
|
25
|
+
|
|
26
|
+
1. `mantle init`, install, then read the app's `README.md` and search for `AGENT:`.
|
|
27
|
+
2. Map the brief to the [four atoms](../concepts/four-atoms.md): Schemas, Views, Procedures, Triggers.
|
|
28
|
+
Decide what each role (`admin`, `user`) does on each surface: Admin, MCP, REST and any visitor pages.
|
|
29
|
+
3. For each need, find the pattern in `mantle help examples` (the **Combining** table) and read that example's
|
|
30
|
+
manifest and source. Examples are references: take the pattern into your own manifests; do not copy an example
|
|
31
|
+
directory into the app.
|
|
32
|
+
- Business rules (status transitions, approval thresholds, stock, guards, several rows that commit together)
|
|
33
|
+
belong in SQL Procedures, not in handler code around separate writes: `mantle help sql-patterns`, and
|
|
34
|
+
`mantle help sql` for the SQL each dialect accepts.
|
|
35
|
+
- Visitor pages (anything anonymous and indexable) follow `mantle help public-pages`: server-rendered HTML,
|
|
36
|
+
canonical and Open Graph tags, JSON-LD and an answer block on detail pages, Markdown alternates, `/sitemap.xml`,
|
|
37
|
+
`/robots.txt` and `/llms.txt`. A brief that names a site, shop or catalogue for visitors includes all of them.
|
|
38
|
+
4. `pnpm generate`, implement every handler it lists, `pnpm check`, then `pnpm smoke`.
|
|
39
|
+
5. Before reporting the app or a feature done, run [role-only acceptance](../guides/agent-workflow-acceptance.md)
|
|
40
|
+
(`mantle help agent-workflow-acceptance`). Scripted smoke is not acceptance. `pnpm accept` starts the app and hands
|
|
41
|
+
each role to a fresh evaluator as a URL that carries that role's session.
|
|
42
|
+
|
|
43
|
+
The first verified sign-in with `ADMIN_EMAIL` becomes the admin. Further administrators are added in Admin:
|
|
44
|
+
**More → Administrators** invites by email, and **More → Members** grants Admin to an existing member.
|
|
45
|
+
[Authentication](../cloudflare/authentication.md#identity-helpers) documents the same operations as an API.
|
|
@@ -1,55 +1,16 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: The native 0.2.0 handbook and its three package boundaries.
|
|
3
3
|
---
|
|
4
4
|
# Mantle handbook
|
|
5
5
|
|
|
6
|
-
Mantle
|
|
7
|
-
bindings, and optional HTTP, MCP and Admin surfaces. Your application owns the
|
|
8
|
-
host, storage and frontend. Four atoms describe the contract: **Schema** stores
|
|
9
|
-
data, **View** reads it, **Procedure** acts on it, and **Trigger** binds an action
|
|
10
|
-
to HTTP, MCP or lifecycle events.
|
|
6
|
+
Mantle compiles a closed v2 manifest into native SQL and typed TypeScript. The app owns its database handle, verified Caller, routes, auth, migrations and deployment.
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
| Package | Responsibility |
|
|
9
|
+
| --- | --- |
|
|
10
|
+
| `@aotter/mantle` | SDK, private compiler, generator and `mantle` CLI |
|
|
11
|
+
| `@aotter/mantle-ui` | Pure UI kit and generic interaction controller; no SDK dependency |
|
|
12
|
+
| `@aotter/mantle-admin` | Admin server, app-built SPA library, preview and MCP App; SDK peer |
|
|
17
13
|
|
|
18
|
-
|
|
14
|
+
Start with [a Worker](quickstart-worker.md) or [CLI and targets](project-and-cli.md). Existing TypeScript/Node apps can import selected generated operations using their own handle and verified Caller; no router or identity replacement is required. See the packaged [integrate skill](../../skills/integrate/SKILL.md).
|
|
19
15
|
|
|
20
|
-
|
|
21
|
-
|---|---|---|
|
|
22
|
-
| Understand what manifests can express | [Manifest feature reference](../reference/features.md) | A capability-to-field map across the four atoms. |
|
|
23
|
-
| Validate manifests in an existing tool | [Spec-only adoption](../../spec-only-host-adoption.md) | Parse and link without Runtime, storage or a UI. |
|
|
24
|
-
| Bring Mantle into an existing application | [Integration skill](../../skills/integrate/SKILL.md) | Inspect the app and choose embedding, incremental replacement or rebuilding with data migration. |
|
|
25
|
-
| Embed Runtime in an existing host | [Runtime and adapters](../concepts/runtime-and-adapters.md), then [typed queries](../guides/typed-queries.md) | Bind your storage and call the generated API. |
|
|
26
|
-
| Build a local Cloudflare API | [Minimal Worker tutorial](./quickstart-worker.md) | A running public View and a verified HTTP response. |
|
|
27
|
-
| Add a staff console | [Local Admin tutorial](./quickstart-admin.md) | Email OTP, Admin assets and a local human workflow. |
|
|
28
|
-
| Build on ChatGPT Sites | [Sites integration](../chatgpt-sites/index.md) | Host-owned sign-in and deployment with Mantle content. |
|
|
29
|
-
| Work through a coding agent | [Skill installation and handoff](../guides/agent-setup.md) | Bootstrap skill, pinned package, then project-local instructions. |
|
|
30
|
-
|
|
31
|
-
Human authors can follow these pages directly; installing an agent skill is
|
|
32
|
-
optional. For a new app, install an exact SDK version and run
|
|
33
|
-
`mantle generate --host cf` or `--host chatgpt-sites`. The CLI assembles a blank
|
|
34
|
-
site by default; add your own Manifests after generation. Use explicit
|
|
35
|
-
`--features` for a smaller composition, including host-free Spec-only.
|
|
36
|
-
|
|
37
|
-
## Find the right kind of documentation
|
|
38
|
-
|
|
39
|
-
- **Tutorials** walk through a running minimal service or local Admin.
|
|
40
|
-
- **Task guides** explain typed queries, Admin customization and agent setup.
|
|
41
|
-
- **Concepts** explain the four atoms, runtime, lifecycle, authorization and transports.
|
|
42
|
-
- **Reference** lists accepted fields, defaults, restrictions and diagnostics.
|
|
43
|
-
- **Host guides** cover Cloudflare and Sites wiring and operations.
|
|
44
|
-
- **Examples** supply complete domain manifests and runnable host references.
|
|
45
|
-
|
|
46
|
-
The [project and CLI guide](./project-and-cli.md) describes file ownership and
|
|
47
|
-
the verification loop. The [examples hub](../examples/hub.md) helps select a
|
|
48
|
-
domain model. Use the [field reference](../reference/manifest.md) when checking
|
|
49
|
-
exact syntax; do not infer grammar from a UI screenshot.
|
|
50
|
-
|
|
51
|
-
## Source
|
|
52
|
-
|
|
53
|
-
- [Core package](../../../packages/mantle/README.md)
|
|
54
|
-
- [Handbook navigation](../navigation.json)
|
|
55
|
-
- [Consumer skills](../../../skills/README.md)
|
|
16
|
+
Choose [Store or internal Views](../guides/typed-queries.md), review [database and migration ownership](../concepts/runtime-and-adapters.md), and mount only selected [surfaces](../reference/surface.md). Optional [Admin](../guides/native-admin.md) lives in its own package. Installed SDK docs are the authority for that exact version. [Release notes](../releases/index.md) describe historical releases.
|