@aotter/mantle 0.2.0-alpha.1 → 0.2.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +180 -45
- package/dist/auth/adapter.d.ts +32 -0
- package/dist/auth/adapter.js +261 -0
- package/dist/auth/admin.d.ts +3 -0
- package/dist/auth/admin.js +18 -0
- package/dist/auth/caller.d.ts +86 -0
- package/dist/auth/caller.js +128 -0
- package/dist/auth/{createAuthRoutes.js → consent.js} +26 -54
- package/dist/auth/hardening.d.ts +24 -0
- package/dist/auth/hardening.js +33 -0
- package/dist/auth/identity.d.ts +121 -0
- package/dist/auth/identity.js +192 -0
- package/dist/auth/oauth.d.ts +63 -0
- package/dist/auth/oauth.js +185 -0
- package/dist/auth/resource-seeds.js +8 -0
- package/dist/auth/route-http.js +33 -0
- package/dist/auth/routes.d.ts +32 -0
- package/dist/auth/routes.js +80 -0
- package/dist/build/compiler.d.ts +122 -0
- package/dist/build/compiler.js +3 -0
- package/dist/{spec → build/spec}/domain/model/ManifestGrammar.d.ts +30 -43
- package/dist/{spec → build/spec}/domain/model/RuntimePlan.d.ts +77 -3
- package/dist/{spec → build/spec}/domain/model/SqlIr.d.ts +39 -6
- package/dist/build/spec/domain/model/UserFields.d.ts +21 -0
- package/dist/{spec → build/spec}/domain/service/PlanFingerprint.d.ts +4 -1
- package/dist/{spec → build/spec}/kernel/diagnostic.d.ts +1 -30
- package/dist/bun/assets.d.ts +2 -0
- package/dist/bun/assets.js +22 -0
- package/dist/domain/adminOrder.js +22 -0
- package/dist/domain/columns.js +42 -0
- package/dist/domain/describe/chunk-SGMRVDGE.js +1 -0
- package/dist/domain/describe/index.d.ts +58 -0
- package/dist/domain/describe/index.js +1 -0
- package/dist/domain/describe/target-hash.d.ts +8 -0
- package/dist/domain/describe/target-hash.js +1 -0
- package/dist/domain/describe/targets.d.ts +40 -0
- package/dist/domain/entry.js +19 -0
- package/dist/domain/generated-tools.js +18 -0
- package/dist/domain/generation.d.ts +16 -0
- package/dist/domain/generation.js +1 -0
- package/dist/domain/input.js +15 -0
- package/dist/domain/model.js +1 -0
- package/dist/domain/paging.js +213 -0
- package/dist/domain/recipes.js +22 -0
- package/dist/domain/userReferences.js +4 -0
- package/dist/domain/wireScalars.js +41 -0
- package/dist/infrastructure/adminEntries.js +156 -0
- package/dist/infrastructure/adminPaging.js +70 -0
- package/dist/infrastructure/artifacts.js +67 -0
- package/dist/infrastructure/authSchema.js +74 -0
- package/dist/infrastructure/bundle.js +159 -0
- package/dist/infrastructure/cli.js +111 -0
- package/dist/infrastructure/generate.d.ts +12 -0
- package/dist/infrastructure/generate.js +175 -0
- package/dist/infrastructure/generateAuth.d.ts +8 -0
- package/dist/infrastructure/generateAuth.js +66 -0
- package/dist/infrastructure/help.js +55 -0
- package/dist/infrastructure/init.js +50 -0
- package/dist/infrastructure/inputs.js +32 -0
- package/dist/infrastructure/mounts.js +22 -0
- package/dist/infrastructure/wrangler.js +103 -0
- package/dist/kernel/authorization.d.ts +4 -0
- package/dist/kernel/authorization.js +15 -0
- package/dist/kernel/binds.d.ts +60 -0
- package/dist/kernel/binds.js +39 -0
- package/dist/kernel/caller-identity.d.ts +21 -0
- package/dist/kernel/caller-identity.js +7 -0
- package/dist/kernel/caller-mode.d.ts +4 -0
- package/dist/kernel/caller-mode.js +14 -0
- package/dist/kernel/contract-error.d.ts +12 -0
- package/dist/kernel/contract-error.js +14 -0
- package/dist/kernel/contracts.d.ts +135 -0
- package/dist/kernel/contracts.js +56 -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} +0 -9
- package/dist/kernel/dialect/common.d.ts +38 -0
- package/dist/kernel/dialect/common.js +3 -0
- package/dist/kernel/dialect/postgres.d.ts +16 -0
- package/dist/kernel/dialect/postgres.js +16 -0
- package/dist/kernel/dialect/sqlite.d.ts +20 -0
- package/dist/kernel/dialect/sqlite.js +29 -0
- package/dist/kernel/drain.d.ts +5 -0
- package/dist/kernel/drain.js +29 -0
- package/dist/kernel/driver/bun-sqlite.d.ts +19 -0
- package/dist/kernel/driver/bun-sqlite.js +73 -0
- package/dist/kernel/driver/d1.d.ts +24 -0
- package/dist/kernel/driver/d1.js +21 -0
- package/dist/kernel/driver/postgres.d.ts +25 -0
- package/dist/kernel/driver/postgres.js +84 -0
- package/dist/kernel/driver/transaction-context.d.ts +10 -0
- package/dist/kernel/driver/transaction-context.js +28 -0
- package/dist/kernel/email.d.ts +28 -0
- package/dist/{auth/emailTemplates.js → kernel/email.js} +9 -2
- package/dist/kernel/host-access.d.ts +10 -0
- package/dist/kernel/host-access.js +64 -0
- package/dist/kernel/host-caller.d.ts +39 -0
- package/dist/kernel/host-caller.js +53 -0
- package/dist/kernel/json-body.d.ts +4 -0
- package/dist/kernel/json-body.js +42 -0
- package/dist/kernel/mcp-apps.d.ts +69 -0
- package/dist/kernel/mcp-apps.js +35 -0
- package/dist/kernel/mcp-call.d.ts +5 -0
- package/dist/kernel/mcp-call.js +24 -0
- package/dist/kernel/mcp-handler.js +347 -0
- package/dist/kernel/mcp.d.ts +110 -0
- package/dist/kernel/mcp.js +45 -0
- package/dist/kernel/media.d.ts +27 -0
- package/dist/kernel/media.js +198 -0
- package/dist/kernel/paging.d.ts +55 -0
- package/dist/kernel/paging.js +87 -0
- package/dist/kernel/publishing.d.ts +4 -0
- package/dist/kernel/publishing.js +15 -0
- package/dist/{cloudflare/r2Media.d.ts → kernel/r2-media.d.ts} +4 -5
- package/dist/kernel/r2-media.js +71 -0
- package/dist/kernel/rest-dispatch.js +37 -0
- package/dist/kernel/rest-router.js +63 -0
- package/dist/kernel/rest.d.ts +58 -0
- package/dist/kernel/rest.js +38 -0
- package/dist/kernel/scalars.d.ts +6 -0
- package/dist/kernel/scalars.js +36 -0
- package/dist/kernel/search.js +4 -0
- package/dist/{core/site.d.ts → kernel/site-types.d.ts} +38 -9
- package/dist/kernel/site-types.js +1 -0
- package/dist/kernel/site.d.ts +39 -0
- package/dist/kernel/site.js +30 -0
- package/dist/kernel/store.d.ts +175 -0
- package/dist/kernel/store.js +244 -0
- package/dist/kernel/surface-failure.d.ts +10 -0
- package/dist/kernel/surface-failure.js +29 -0
- package/dist/kernel/surface.d.ts +10 -0
- package/dist/kernel/surface.js +16 -0
- package/dist/kernel/sweep.d.ts +17 -0
- package/dist/kernel/sweep.js +26 -0
- package/dist/kernel/translations.d.ts +1 -0
- package/dist/kernel/translations.js +12 -0
- package/dist/kernel/user-caller.d.ts +31 -0
- package/dist/kernel/user-caller.js +61 -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 +71 -0
- package/dist/kernel/validation.d.ts +15 -0
- package/dist/kernel/validation.js +46 -0
- package/dist/kernel/web-gateway.js +66 -0
- package/dist/kernel/web-head.js +14 -0
- package/dist/kernel/web-index.js +39 -0
- package/dist/kernel/web-response.js +7 -0
- package/dist/kernel/web-serve.js +97 -0
- package/dist/kernel/web.d.ts +77 -0
- package/dist/kernel/web.js +43 -0
- package/dist/kernel/where.js +21 -0
- package/dist/testing/index.d.ts +1 -37
- package/dist/testing/index.js +1 -43
- package/dist/usecase/adminBindings.js +150 -0
- package/dist/usecase/adminClient.js +66 -0
- package/dist/usecase/adminDescriptors.js +100 -0
- package/dist/usecase/generate.js +160 -0
- package/dist/usecase/handlers.js +18 -0
- package/dist/usecase/mcp-media.js +16 -0
- package/dist/usecase/mcp.js +96 -0
- package/dist/usecase/paging.js +69 -0
- package/dist/usecase/publishing.js +59 -0
- package/dist/usecase/refusals.js +27 -0
- package/dist/usecase/rest.js +53 -0
- package/dist/usecase/search.js +7 -0
- package/dist/usecase/site.js +38 -0
- package/dist/usecase/stores.js +52 -0
- package/dist/usecase/tool-version.js +6 -0
- package/dist/usecase/translations.js +76 -0
- package/dist/usecase/ttl.js +20 -0
- package/dist/usecase/validation.js +221 -0
- package/dist/usecase/web.js +23 -0
- package/docs/examples/README.md +39 -16
- package/docs/examples/app-shell/README.md +121 -0
- package/docs/examples/app-shell/accept.mjs +91 -0
- package/docs/examples/app-shell/gitignore +7 -0
- package/docs/examples/app-shell/package.json +43 -0
- package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
- package/docs/examples/app-shell/smoke-kit.mjs +168 -0
- package/docs/examples/app-shell/src/auth.ts +58 -0
- package/docs/examples/app-shell/src/handlers.ts +5 -0
- package/docs/examples/app-shell/src/index.ts +4 -0
- package/docs/examples/app-shell/src/routes.ts +16 -0
- package/docs/examples/app-shell/src/schedule.ts +8 -0
- package/docs/examples/app-shell/src/service.ts +71 -0
- package/docs/examples/app-shell/src/sign-in.ts +41 -0
- package/docs/examples/app-shell/src/signup.ts +8 -0
- package/docs/examples/{reference-service → app-shell}/tsconfig.json +6 -2
- package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
- package/docs/examples/app-shell/wrangler.jsonc +62 -0
- package/docs/examples/club-events/README.md +65 -0
- package/docs/examples/club-events/manifests/club-events.yaml +247 -0
- package/docs/examples/club-events/smoke.mjs +127 -0
- package/docs/examples/club-events/src/handlers.ts +25 -0
- package/docs/examples/club-events/src/signup.ts +9 -0
- package/docs/examples/generated-web/README.md +78 -0
- package/docs/examples/generated-web/posts.yaml +38 -0
- package/docs/examples/generated-web/seed.sql +6 -0
- package/docs/examples/generated-web/src/worker.ts +43 -0
- package/docs/examples/generated-web/tsconfig.json +8 -0
- package/docs/examples/generated-web/wrangler.jsonc +8 -0
- package/docs/examples/purchasing/.dev.vars.example +6 -0
- package/docs/examples/purchasing/README.md +99 -0
- package/docs/examples/purchasing/manifests/purchasing.yaml +374 -0
- package/docs/examples/purchasing/seed.sql +4 -0
- package/docs/examples/purchasing/smoke.mjs +191 -0
- package/docs/examples/purchasing/src/admin.tsx +13 -0
- package/docs/examples/purchasing/src/handlers.ts +33 -0
- package/docs/examples/purchasing/src/notify.ts +29 -0
- package/docs/examples/purchasing/src/requests-page.ts +57 -0
- package/docs/examples/purchasing/src/routes.ts +53 -0
- package/docs/examples/purchasing/src/schedule.ts +31 -0
- package/docs/examples/purchasing/src/signup.ts +5 -0
- package/docs/examples/purchasing/src/supplier.ts +32 -0
- package/docs/examples/purchasing/wrangler.jsonc +69 -0
- package/docs/examples/recipes/README.md +60 -0
- package/docs/examples/recipes/manifests/recipes.yaml +75 -0
- package/docs/examples/recipes/smoke.mjs +102 -0
- package/docs/examples/recipes/src/media.ts +13 -0
- package/docs/examples/recipes/src/pages.ts +99 -0
- package/docs/examples/recipes/src/routes.ts +71 -0
- package/docs/examples/recipes/src/site-config.ts +12 -0
- package/docs/examples/recipes/wrangler.jsonc +74 -0
- package/docs/handbook/cloudflare/authentication.md +186 -108
- package/docs/handbook/cloudflare/chatgpt-sites.md +5 -112
- package/docs/handbook/cloudflare/deploy-and-operate.md +59 -87
- package/docs/handbook/cloudflare/media-r2.md +61 -82
- package/docs/handbook/cloudflare/service-entry.md +223 -119
- package/docs/handbook/concepts/authorization.md +10 -117
- package/docs/handbook/concepts/four-atoms.md +9 -92
- package/docs/handbook/concepts/lifecycle-and-locales.md +9 -80
- package/docs/handbook/concepts/mcp-and-agents.md +24 -116
- package/docs/handbook/concepts/procedures-and-triggers.md +5 -162
- package/docs/handbook/concepts/runtime-and-adapters.md +15 -183
- package/docs/handbook/concepts/views.md +10 -109
- package/docs/handbook/examples/hub.md +2 -18
- package/docs/handbook/guides/adapter-guide.md +11 -0
- package/docs/handbook/guides/admin-ui.md +113 -136
- package/docs/handbook/guides/agent-setup.md +32 -27
- package/docs/handbook/guides/agent-workflow-acceptance.md +232 -0
- package/docs/handbook/guides/email.md +86 -0
- package/docs/handbook/guides/local-testing.md +40 -0
- package/docs/handbook/guides/mcp-apps.md +560 -0
- package/docs/handbook/guides/native-admin.md +566 -0
- package/docs/handbook/guides/native-execution.md +133 -0
- package/docs/handbook/guides/oauth.md +219 -0
- package/docs/handbook/guides/postgres-adapters.md +56 -0
- package/docs/handbook/guides/public-pages.md +93 -0
- package/docs/handbook/guides/size-and-startup.md +9 -0
- package/docs/handbook/guides/sql-patterns.md +266 -0
- package/docs/handbook/guides/typed-queries.md +210 -100
- package/docs/handbook/navigation.json +176 -30
- package/docs/handbook/reference/admin-descriptors.md +56 -0
- package/docs/handbook/reference/authorization.md +44 -52
- package/docs/handbook/reference/describe.md +56 -0
- package/docs/handbook/reference/diagnostics.md +19 -77
- package/docs/handbook/reference/features.md +45 -53
- package/docs/handbook/reference/manifest.md +6 -69
- package/docs/handbook/reference/procedure.md +11 -115
- package/docs/handbook/reference/schema.md +81 -172
- package/docs/handbook/reference/site-config.md +5 -65
- package/docs/handbook/reference/sql.md +64 -0
- package/docs/handbook/reference/surface.md +396 -93
- package/docs/handbook/reference/trigger.md +62 -89
- package/docs/handbook/reference/view.md +40 -158
- package/docs/handbook/releases/index.md +198 -12
- package/docs/handbook/start/agents.md +45 -0
- package/docs/handbook/start/overview.md +9 -56
- package/docs/handbook/start/project-and-cli.md +51 -131
- package/docs/handbook/start/quickstart-worker.md +38 -115
- package/docs/skills/develop/SKILL.md +77 -121
- package/docs/skills/integrate/SKILL.md +37 -84
- package/docs/skills/media-gc/SKILL.md +21 -8
- package/docs/skills/provision/SKILL.md +31 -87
- package/docs/skills/update/SKILL.md +20 -34
- package/docs/source/scripts/postgres-adapter.ts +101 -0
- package/docs/upgrade-0.1-to-0.2.md +26 -10
- package/package.json +120 -112
- package/skills/README.md +67 -0
- package/skills/mantle/SKILL.md +76 -0
- package/dist/admin/consent.d.ts +0 -17
- package/dist/admin/consent.d.ts.map +0 -1
- package/dist/admin/consent.js +0 -17
- package/dist/admin/consent.js.map +0 -1
- package/dist/admin/createAdminSurface.d.ts +0 -22
- package/dist/admin/createAdminSurface.d.ts.map +0 -1
- package/dist/admin/createAdminSurface.js +0 -589
- package/dist/admin/createAdminSurface.js.map +0 -1
- package/dist/admin/developerConsole.d.ts +0 -264
- package/dist/admin/developerConsole.d.ts.map +0 -1
- package/dist/admin/developerConsole.js +0 -136
- package/dist/admin/developerConsole.js.map +0 -1
- package/dist/admin/identity.d.ts +0 -62
- package/dist/admin/identity.d.ts.map +0 -1
- package/dist/admin/identity.js +0 -7
- package/dist/admin/identity.js.map +0 -1
- package/dist/admin/index.d.ts +0 -4
- package/dist/admin/index.d.ts.map +0 -1
- package/dist/admin/index.js +0 -4
- package/dist/admin/index.js.map +0 -1
- package/dist/admin/procedureFlow.d.ts +0 -25
- package/dist/admin/procedureFlow.d.ts.map +0 -1
- package/dist/admin/procedureFlow.js +0 -154
- package/dist/admin/procedureFlow.js.map +0 -1
- package/dist/auth/ConsoleEmailSender.d.ts +0 -15
- package/dist/auth/ConsoleEmailSender.d.ts.map +0 -1
- package/dist/auth/ConsoleEmailSender.js +0 -19
- package/dist/auth/ConsoleEmailSender.js.map +0 -1
- package/dist/auth/appleClientSecret.d.ts +0 -75
- package/dist/auth/appleClientSecret.d.ts.map +0 -1
- package/dist/auth/appleClientSecret.js +0 -116
- package/dist/auth/appleClientSecret.js.map +0 -1
- package/dist/auth/buildAuth.d.ts +0 -4565
- package/dist/auth/buildAuth.d.ts.map +0 -1
- package/dist/auth/buildAuth.js +0 -307
- package/dist/auth/buildAuth.js.map +0 -1
- package/dist/auth/callerResolver.d.ts +0 -48
- package/dist/auth/callerResolver.d.ts.map +0 -1
- package/dist/auth/callerResolver.js +0 -49
- package/dist/auth/callerResolver.js.map +0 -1
- package/dist/auth/createAuthRoutes.d.ts +0 -22
- package/dist/auth/createAuthRoutes.d.ts.map +0 -1
- package/dist/auth/createAuthRoutes.js.map +0 -1
- package/dist/auth/createMantleAuth.d.ts +0 -3
- package/dist/auth/createMantleAuth.d.ts.map +0 -1
- package/dist/auth/createMantleAuth.js +0 -483
- package/dist/auth/createMantleAuth.js.map +0 -1
- package/dist/auth/db.d.ts +0 -17
- package/dist/auth/db.d.ts.map +0 -1
- package/dist/auth/db.js +0 -24
- package/dist/auth/db.js.map +0 -1
- package/dist/auth/emailTemplates.d.ts +0 -7
- package/dist/auth/emailTemplates.d.ts.map +0 -1
- package/dist/auth/emailTemplates.js.map +0 -1
- package/dist/auth/index.d.ts +0 -9
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -7
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/methods.d.ts +0 -717
- package/dist/auth/methods.d.ts.map +0 -1
- package/dist/auth/methods.js +0 -321
- package/dist/auth/methods.js.map +0 -1
- package/dist/auth/oauthTokens.d.ts +0 -24
- package/dist/auth/oauthTokens.d.ts.map +0 -1
- package/dist/auth/oauthTokens.js +0 -146
- package/dist/auth/oauthTokens.js.map +0 -1
- package/dist/auth/setupIncomplete.d.ts +0 -16
- package/dist/auth/setupIncomplete.d.ts.map +0 -1
- package/dist/auth/setupIncomplete.js +0 -50
- package/dist/auth/setupIncomplete.js.map +0 -1
- package/dist/auth/types.d.ts +0 -440
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js +0 -10
- package/dist/auth/types.js.map +0 -1
- package/dist/bun/index.d.ts +0 -65
- package/dist/bun/index.d.ts.map +0 -1
- package/dist/bun/index.js +0 -130
- package/dist/bun/index.js.map +0 -1
- package/dist/cli/emitModule.d.ts +0 -7
- package/dist/cli/emitModule.d.ts.map +0 -1
- package/dist/cli/emitModule.js +0 -127
- package/dist/cli/emitModule.js.map +0 -1
- package/dist/cli/generate.d.ts +0 -8
- package/dist/cli/generate.d.ts.map +0 -1
- package/dist/cli/generate.js +0 -355
- package/dist/cli/generate.js.map +0 -1
- package/dist/cli/main.d.ts +0 -3
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -21
- package/dist/cli/main.js.map +0 -1
- package/dist/cli/preset.d.ts +0 -18
- package/dist/cli/preset.d.ts.map +0 -1
- package/dist/cli/preset.js +0 -352
- package/dist/cli/preset.js.map +0 -1
- package/dist/cloudflare/index.d.ts +0 -21
- package/dist/cloudflare/index.d.ts.map +0 -1
- package/dist/cloudflare/index.js +0 -14
- package/dist/cloudflare/index.js.map +0 -1
- package/dist/cloudflare/r2Media.d.ts.map +0 -1
- package/dist/cloudflare/r2Media.js +0 -69
- package/dist/cloudflare/r2Media.js.map +0 -1
- package/dist/core/caller.d.ts +0 -35
- package/dist/core/caller.d.ts.map +0 -1
- package/dist/core/caller.js +0 -3
- package/dist/core/caller.js.map +0 -1
- package/dist/core/createMantle.d.ts +0 -22
- package/dist/core/createMantle.d.ts.map +0 -1
- package/dist/core/createMantle.js +0 -117
- package/dist/core/createMantle.js.map +0 -1
- package/dist/core/dialect.d.ts +0 -41
- package/dist/core/dialect.d.ts.map +0 -1
- package/dist/core/dialect.js +0 -7
- package/dist/core/dialect.js.map +0 -1
- package/dist/core/driver.d.ts +0 -17
- package/dist/core/driver.d.ts.map +0 -1
- package/dist/core/driver.js +0 -2
- package/dist/core/driver.js.map +0 -1
- package/dist/core/email.d.ts +0 -17
- package/dist/core/email.d.ts.map +0 -1
- package/dist/core/email.js +0 -2
- package/dist/core/email.js.map +0 -1
- package/dist/core/index.d.ts +0 -16
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -16
- package/dist/core/index.js.map +0 -1
- package/dist/core/invocation.d.ts +0 -66
- package/dist/core/invocation.d.ts.map +0 -1
- package/dist/core/invocation.js +0 -3
- package/dist/core/invocation.js.map +0 -1
- package/dist/core/runtime/auth.d.ts +0 -9
- package/dist/core/runtime/auth.d.ts.map +0 -1
- package/dist/core/runtime/auth.js +0 -39
- package/dist/core/runtime/auth.js.map +0 -1
- package/dist/core/runtime/createRuntime.d.ts +0 -23
- package/dist/core/runtime/createRuntime.d.ts.map +0 -1
- package/dist/core/runtime/createRuntime.js +0 -214
- package/dist/core/runtime/createRuntime.js.map +0 -1
- package/dist/core/runtime/verifyPlan.d.ts +0 -34
- package/dist/core/runtime/verifyPlan.d.ts.map +0 -1
- package/dist/core/runtime/verifyPlan.js +0 -301
- package/dist/core/runtime/verifyPlan.js.map +0 -1
- package/dist/core/service.d.ts +0 -45
- package/dist/core/service.d.ts.map +0 -1
- package/dist/core/service.js +0 -2
- package/dist/core/service.js.map +0 -1
- package/dist/core/site.d.ts.map +0 -1
- package/dist/core/site.js +0 -2
- package/dist/core/site.js.map +0 -1
- package/dist/core/siteConfig.d.ts +0 -5
- package/dist/core/siteConfig.d.ts.map +0 -1
- package/dist/core/siteConfig.js +0 -24
- package/dist/core/siteConfig.js.map +0 -1
- package/dist/core/sql/allowlist.d.ts +0 -65
- package/dist/core/sql/allowlist.d.ts.map +0 -1
- package/dist/core/sql/allowlist.js +0 -705
- package/dist/core/sql/allowlist.js.map +0 -1
- package/dist/core/sql/ast.d.ts +0 -24
- package/dist/core/sql/ast.d.ts.map +0 -1
- package/dist/core/sql/ast.js +0 -32
- package/dist/core/sql/ast.js.map +0 -1
- package/dist/core/sql/compile.d.ts +0 -50
- package/dist/core/sql/compile.d.ts.map +0 -1
- package/dist/core/sql/compile.js +0 -48
- package/dist/core/sql/compile.js.map +0 -1
- package/dist/core/sql/policy.d.ts +0 -121
- package/dist/core/sql/policy.d.ts.map +0 -1
- package/dist/core/sql/policy.js +0 -379
- package/dist/core/sql/policy.js.map +0 -1
- package/dist/core/sql/positions.d.ts +0 -30
- package/dist/core/sql/positions.d.ts.map +0 -1
- package/dist/core/sql/positions.js +0 -22
- package/dist/core/sql/positions.js.map +0 -1
- package/dist/core/sql/run.d.ts +0 -76
- package/dist/core/sql/run.d.ts.map +0 -1
- package/dist/core/sql/run.js +0 -267
- package/dist/core/sql/run.js.map +0 -1
- package/dist/core/store/createStore.d.ts +0 -49
- package/dist/core/store/createStore.d.ts.map +0 -1
- package/dist/core/store/createStore.js +0 -227
- package/dist/core/store/createStore.js.map +0 -1
- package/dist/core/store/cursor.d.ts +0 -4
- package/dist/core/store/cursor.d.ts.map +0 -1
- package/dist/core/store/cursor.js +0 -22
- package/dist/core/store/cursor.js.map +0 -1
- package/dist/core/store/json.d.ts +0 -80
- package/dist/core/store/json.d.ts.map +0 -1
- package/dist/core/store/json.js +0 -342
- package/dist/core/store/json.js.map +0 -1
- package/dist/core/store.d.ts +0 -160
- package/dist/core/store.d.ts.map +0 -1
- package/dist/core/store.js +0 -2
- package/dist/core/store.js.map +0 -1
- package/dist/core/wire.d.ts +0 -20
- package/dist/core/wire.d.ts.map +0 -1
- package/dist/core/wire.js +0 -84
- package/dist/core/wire.js.map +0 -1
- package/dist/core/withCaller.d.ts +0 -16
- package/dist/core/withCaller.d.ts.map +0 -1
- package/dist/core/withCaller.js +0 -29
- package/dist/core/withCaller.js.map +0 -1
- package/dist/d1/adapter.d.ts +0 -12
- package/dist/d1/adapter.d.ts.map +0 -1
- package/dist/d1/adapter.js +0 -23
- package/dist/d1/adapter.js.map +0 -1
- package/dist/d1/codec.d.ts +0 -14
- package/dist/d1/codec.d.ts.map +0 -1
- package/dist/d1/codec.js +0 -136
- package/dist/d1/codec.js.map +0 -1
- package/dist/d1/compile/index.d.ts +0 -9
- package/dist/d1/compile/index.d.ts.map +0 -1
- package/dist/d1/compile/index.js +0 -9
- package/dist/d1/compile/index.js.map +0 -1
- package/dist/d1/dialect.d.ts +0 -4
- package/dist/d1/dialect.d.ts.map +0 -1
- package/dist/d1/dialect.js +0 -13
- package/dist/d1/dialect.js.map +0 -1
- package/dist/d1/executor.d.ts +0 -13
- package/dist/d1/executor.d.ts.map +0 -1
- package/dist/d1/executor.js +0 -91
- package/dist/d1/executor.js.map +0 -1
- package/dist/d1/index.d.ts +0 -6
- package/dist/d1/index.d.ts.map +0 -1
- package/dist/d1/index.js +0 -6
- package/dist/d1/index.js.map +0 -1
- package/dist/d1/lower.d.ts +0 -8
- package/dist/d1/lower.d.ts.map +0 -1
- package/dist/d1/lower.js +0 -167
- package/dist/d1/lower.js.map +0 -1
- package/dist/d1/media.d.ts +0 -5
- package/dist/d1/media.d.ts.map +0 -1
- package/dist/d1/media.js +0 -157
- package/dist/d1/media.js.map +0 -1
- package/dist/d1/migrations.d.ts +0 -12
- package/dist/d1/migrations.d.ts.map +0 -1
- package/dist/d1/migrations.js +0 -111
- package/dist/d1/migrations.js.map +0 -1
- package/dist/d1/print.d.ts +0 -28
- package/dist/d1/print.d.ts.map +0 -1
- package/dist/d1/print.js +0 -54
- package/dist/d1/print.js.map +0 -1
- package/dist/d1/site.d.ts +0 -17
- package/dist/d1/site.d.ts.map +0 -1
- package/dist/d1/site.js +0 -63
- package/dist/d1/site.js.map +0 -1
- package/dist/d1/storage.d.ts +0 -34
- package/dist/d1/storage.d.ts.map +0 -1
- package/dist/d1/storage.js +0 -288
- package/dist/d1/storage.js.map +0 -1
- package/dist/d1/tz.d.ts +0 -21
- package/dist/d1/tz.d.ts.map +0 -1
- package/dist/d1/tz.js +0 -54
- package/dist/d1/tz.js.map +0 -1
- package/dist/d1/validator.d.ts +0 -10
- package/dist/d1/validator.d.ts.map +0 -1
- package/dist/d1/validator.js +0 -33
- package/dist/d1/validator.js.map +0 -1
- package/dist/mcp/apps.d.ts +0 -43
- package/dist/mcp/apps.d.ts.map +0 -1
- package/dist/mcp/apps.js +0 -57
- package/dist/mcp/apps.js.map +0 -1
- package/dist/mcp/catalog.d.ts +0 -55
- package/dist/mcp/catalog.d.ts.map +0 -1
- package/dist/mcp/catalog.js +0 -81
- package/dist/mcp/catalog.js.map +0 -1
- package/dist/mcp/createMcpSurface.d.ts +0 -34
- package/dist/mcp/createMcpSurface.d.ts.map +0 -1
- package/dist/mcp/createMcpSurface.js +0 -150
- package/dist/mcp/createMcpSurface.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -4
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -4
- package/dist/mcp/index.js.map +0 -1
- package/dist/postgres/adapter.d.ts +0 -20
- package/dist/postgres/adapter.d.ts.map +0 -1
- package/dist/postgres/adapter.js +0 -44
- package/dist/postgres/adapter.js.map +0 -1
- package/dist/postgres/codec.d.ts +0 -13
- package/dist/postgres/codec.d.ts.map +0 -1
- package/dist/postgres/codec.js +0 -110
- package/dist/postgres/codec.js.map +0 -1
- package/dist/postgres/compile/index.d.ts +0 -9
- package/dist/postgres/compile/index.d.ts.map +0 -1
- package/dist/postgres/compile/index.js +0 -9
- package/dist/postgres/compile/index.js.map +0 -1
- package/dist/postgres/driver.d.ts +0 -92
- package/dist/postgres/driver.d.ts.map +0 -1
- package/dist/postgres/driver.js +0 -110
- package/dist/postgres/driver.js.map +0 -1
- package/dist/postgres/executor.d.ts +0 -20
- package/dist/postgres/executor.d.ts.map +0 -1
- package/dist/postgres/executor.js +0 -69
- package/dist/postgres/executor.js.map +0 -1
- package/dist/postgres/index.d.ts +0 -7
- package/dist/postgres/index.d.ts.map +0 -1
- package/dist/postgres/index.js +0 -7
- package/dist/postgres/index.js.map +0 -1
- package/dist/postgres/lower.d.ts +0 -6
- package/dist/postgres/lower.d.ts.map +0 -1
- package/dist/postgres/lower.js +0 -157
- package/dist/postgres/lower.js.map +0 -1
- package/dist/postgres/print.d.ts +0 -11
- package/dist/postgres/print.d.ts.map +0 -1
- package/dist/postgres/print.js +0 -121
- package/dist/postgres/print.js.map +0 -1
- package/dist/postgres/storage.d.ts +0 -19
- package/dist/postgres/storage.d.ts.map +0 -1
- package/dist/postgres/storage.js +0 -201
- package/dist/postgres/storage.js.map +0 -1
- package/dist/postgres/textRows.d.ts +0 -10
- package/dist/postgres/textRows.d.ts.map +0 -1
- package/dist/postgres/textRows.js +0 -44
- package/dist/postgres/textRows.js.map +0 -1
- package/dist/postgres/validator.d.ts +0 -12
- package/dist/postgres/validator.d.ts.map +0 -1
- package/dist/postgres/validator.js +0 -46
- package/dist/postgres/validator.js.map +0 -1
- package/dist/spec/domain/index.d.ts +0 -3
- package/dist/spec/domain/index.d.ts.map +0 -1
- package/dist/spec/domain/index.js +0 -3
- package/dist/spec/domain/index.js.map +0 -1
- package/dist/spec/domain/model/ContentState.d.ts +0 -8
- package/dist/spec/domain/model/ContentState.d.ts.map +0 -1
- package/dist/spec/domain/model/ContentState.js +0 -7
- package/dist/spec/domain/model/ContentState.js.map +0 -1
- package/dist/spec/domain/model/Entry.d.ts +0 -29
- package/dist/spec/domain/model/Entry.d.ts.map +0 -1
- package/dist/spec/domain/model/Entry.js +0 -16
- package/dist/spec/domain/model/Entry.js.map +0 -1
- package/dist/spec/domain/model/Locale.d.ts +0 -30
- package/dist/spec/domain/model/Locale.d.ts.map +0 -1
- package/dist/spec/domain/model/Locale.js +0 -33
- package/dist/spec/domain/model/Locale.js.map +0 -1
- package/dist/spec/domain/model/ManifestGrammar.d.ts.map +0 -1
- package/dist/spec/domain/model/ManifestGrammar.js +0 -149
- package/dist/spec/domain/model/ManifestGrammar.js.map +0 -1
- package/dist/spec/domain/model/MediaMimeAccept.d.ts +0 -55
- package/dist/spec/domain/model/MediaMimeAccept.d.ts.map +0 -1
- package/dist/spec/domain/model/MediaMimeAccept.js +0 -90
- package/dist/spec/domain/model/MediaMimeAccept.js.map +0 -1
- package/dist/spec/domain/model/RuntimePlan.d.ts.map +0 -1
- package/dist/spec/domain/model/RuntimePlan.js +0 -4
- package/dist/spec/domain/model/RuntimePlan.js.map +0 -1
- package/dist/spec/domain/model/SiteConfig.d.ts +0 -173
- package/dist/spec/domain/model/SiteConfig.d.ts.map +0 -1
- package/dist/spec/domain/model/SiteConfig.js +0 -13
- package/dist/spec/domain/model/SiteConfig.js.map +0 -1
- package/dist/spec/domain/model/SqlIr.d.ts.map +0 -1
- package/dist/spec/domain/model/SqlIr.js +0 -95
- package/dist/spec/domain/model/SqlIr.js.map +0 -1
- package/dist/spec/domain/model/index.d.ts +0 -14
- package/dist/spec/domain/model/index.d.ts.map +0 -1
- package/dist/spec/domain/model/index.js +0 -14
- package/dist/spec/domain/model/index.js.map +0 -1
- package/dist/spec/domain/service/CloudflareCron.d.ts.map +0 -1
- package/dist/spec/domain/service/CloudflareCron.js.map +0 -1
- package/dist/spec/domain/service/CrossSchemaChecker.d.ts +0 -34
- package/dist/spec/domain/service/CrossSchemaChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/CrossSchemaChecker.js +0 -114
- package/dist/spec/domain/service/CrossSchemaChecker.js.map +0 -1
- package/dist/spec/domain/service/EntryDataValidator.d.ts +0 -56
- package/dist/spec/domain/service/EntryDataValidator.d.ts.map +0 -1
- package/dist/spec/domain/service/EntryDataValidator.js +0 -88
- package/dist/spec/domain/service/EntryDataValidator.js.map +0 -1
- package/dist/spec/domain/service/JsonSchemaToZod.d.ts +0 -29
- package/dist/spec/domain/service/JsonSchemaToZod.d.ts.map +0 -1
- package/dist/spec/domain/service/JsonSchemaToZod.js +0 -156
- package/dist/spec/domain/service/JsonSchemaToZod.js.map +0 -1
- package/dist/spec/domain/service/LifecycleStateMachine.d.ts +0 -75
- package/dist/spec/domain/service/LifecycleStateMachine.d.ts.map +0 -1
- package/dist/spec/domain/service/LifecycleStateMachine.js +0 -76
- package/dist/spec/domain/service/LifecycleStateMachine.js.map +0 -1
- package/dist/spec/domain/service/LocaleCanonicalizer.d.ts +0 -29
- package/dist/spec/domain/service/LocaleCanonicalizer.d.ts.map +0 -1
- package/dist/spec/domain/service/LocaleCanonicalizer.js +0 -96
- package/dist/spec/domain/service/LocaleCanonicalizer.js.map +0 -1
- package/dist/spec/domain/service/ManifestFieldChecks.d.ts +0 -60
- package/dist/spec/domain/service/ManifestFieldChecks.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestFieldChecks.js +0 -116
- package/dist/spec/domain/service/ManifestFieldChecks.js.map +0 -1
- package/dist/spec/domain/service/ManifestGraphValidator.d.ts +0 -15
- package/dist/spec/domain/service/ManifestGraphValidator.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestGraphValidator.js +0 -225
- package/dist/spec/domain/service/ManifestGraphValidator.js.map +0 -1
- package/dist/spec/domain/service/ManifestLinker.d.ts +0 -45
- package/dist/spec/domain/service/ManifestLinker.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestLinker.js +0 -92
- package/dist/spec/domain/service/ManifestLinker.js.map +0 -1
- package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts +0 -16
- package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestLocaleTrimmer.js +0 -76
- package/dist/spec/domain/service/ManifestLocaleTrimmer.js.map +0 -1
- package/dist/spec/domain/service/ManifestParser.d.ts +0 -49
- package/dist/spec/domain/service/ManifestParser.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestParser.js +0 -203
- package/dist/spec/domain/service/ManifestParser.js.map +0 -1
- package/dist/spec/domain/service/ManifestPartition.d.ts +0 -9
- package/dist/spec/domain/service/ManifestPartition.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestPartition.js +0 -19
- package/dist/spec/domain/service/ManifestPartition.js.map +0 -1
- package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts +0 -33
- package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestPathDiagnoser.js +0 -43
- package/dist/spec/domain/service/ManifestPathDiagnoser.js.map +0 -1
- package/dist/spec/domain/service/ManifestSourceSpans.d.ts +0 -10
- package/dist/spec/domain/service/ManifestSourceSpans.d.ts.map +0 -1
- package/dist/spec/domain/service/ManifestSourceSpans.js +0 -76
- package/dist/spec/domain/service/ManifestSourceSpans.js.map +0 -1
- package/dist/spec/domain/service/McpToolNaming.d.ts +0 -25
- package/dist/spec/domain/service/McpToolNaming.d.ts.map +0 -1
- package/dist/spec/domain/service/McpToolNaming.js +0 -50
- package/dist/spec/domain/service/McpToolNaming.js.map +0 -1
- package/dist/spec/domain/service/PlanFingerprint.d.ts.map +0 -1
- package/dist/spec/domain/service/PlanFingerprint.js +0 -14
- package/dist/spec/domain/service/PlanFingerprint.js.map +0 -1
- package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts +0 -4
- package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts.map +0 -1
- package/dist/spec/domain/service/ProcedureViewSpecChecks.js +0 -211
- package/dist/spec/domain/service/ProcedureViewSpecChecks.js.map +0 -1
- package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts +0 -42
- package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/SchemaAdminUiChecker.js +0 -289
- package/dist/spec/domain/service/SchemaAdminUiChecker.js.map +0 -1
- package/dist/spec/domain/service/SchemaIndexChecker.d.ts +0 -33
- package/dist/spec/domain/service/SchemaIndexChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/SchemaIndexChecker.js +0 -256
- package/dist/spec/domain/service/SchemaIndexChecker.js.map +0 -1
- package/dist/spec/domain/service/SchemaSearchChecker.d.ts +0 -11
- package/dist/spec/domain/service/SchemaSearchChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/SchemaSearchChecker.js +0 -78
- package/dist/spec/domain/service/SchemaSearchChecker.js.map +0 -1
- package/dist/spec/domain/service/SchemaSpecChecks.d.ts +0 -31
- package/dist/spec/domain/service/SchemaSpecChecks.d.ts.map +0 -1
- package/dist/spec/domain/service/SchemaSpecChecks.js +0 -445
- package/dist/spec/domain/service/SchemaSpecChecks.js.map +0 -1
- package/dist/spec/domain/service/SiteDefaultsValidator.d.ts +0 -39
- package/dist/spec/domain/service/SiteDefaultsValidator.d.ts.map +0 -1
- package/dist/spec/domain/service/SiteDefaultsValidator.js +0 -194
- package/dist/spec/domain/service/SiteDefaultsValidator.js.map +0 -1
- package/dist/spec/domain/service/SqlClassify.d.ts +0 -19
- package/dist/spec/domain/service/SqlClassify.d.ts.map +0 -1
- package/dist/spec/domain/service/SqlClassify.js +0 -42
- package/dist/spec/domain/service/SqlClassify.js.map +0 -1
- package/dist/spec/domain/service/SqlRefusal.d.ts +0 -16
- package/dist/spec/domain/service/SqlRefusal.d.ts.map +0 -1
- package/dist/spec/domain/service/SqlRefusal.js +0 -20
- package/dist/spec/domain/service/SqlRefusal.js.map +0 -1
- package/dist/spec/domain/service/SqlTypes.d.ts +0 -40
- package/dist/spec/domain/service/SqlTypes.d.ts.map +0 -1
- package/dist/spec/domain/service/SqlTypes.js +0 -110
- package/dist/spec/domain/service/SqlTypes.js.map +0 -1
- package/dist/spec/domain/service/StaffRoleHierarchy.d.ts +0 -3
- package/dist/spec/domain/service/StaffRoleHierarchy.d.ts.map +0 -1
- package/dist/spec/domain/service/StaffRoleHierarchy.js +0 -19
- package/dist/spec/domain/service/StaffRoleHierarchy.js.map +0 -1
- package/dist/spec/domain/service/TriggerGraphChecks.d.ts +0 -16
- package/dist/spec/domain/service/TriggerGraphChecks.d.ts.map +0 -1
- package/dist/spec/domain/service/TriggerGraphChecks.js +0 -337
- package/dist/spec/domain/service/TriggerGraphChecks.js.map +0 -1
- package/dist/spec/domain/service/TriggerSpecChecks.d.ts +0 -4
- package/dist/spec/domain/service/TriggerSpecChecks.d.ts.map +0 -1
- package/dist/spec/domain/service/TriggerSpecChecks.js +0 -89
- package/dist/spec/domain/service/TriggerSpecChecks.js.map +0 -1
- package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts +0 -11
- package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts.map +0 -1
- package/dist/spec/domain/service/ValidatedAdminUiProjection.js +0 -26
- package/dist/spec/domain/service/ValidatedAdminUiProjection.js.map +0 -1
- package/dist/spec/domain/service/ViewAdminUiChecker.d.ts +0 -14
- package/dist/spec/domain/service/ViewAdminUiChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/ViewAdminUiChecker.js +0 -53
- package/dist/spec/domain/service/ViewAdminUiChecker.js.map +0 -1
- package/dist/spec/domain/service/index.d.ts +0 -24
- package/dist/spec/domain/service/index.d.ts.map +0 -1
- package/dist/spec/domain/service/index.js +0 -24
- package/dist/spec/domain/service/index.js.map +0 -1
- package/dist/spec/index.d.ts +0 -10
- package/dist/spec/index.d.ts.map +0 -1
- package/dist/spec/index.js +0 -12
- package/dist/spec/index.js.map +0 -1
- package/dist/spec/infrastructure/cli/parseArgsError.d.ts +0 -16
- package/dist/spec/infrastructure/cli/parseArgsError.d.ts.map +0 -1
- package/dist/spec/infrastructure/cli/parseArgsError.js +0 -34
- package/dist/spec/infrastructure/cli/parseArgsError.js.map +0 -1
- package/dist/spec/infrastructure/index.d.ts +0 -2
- package/dist/spec/infrastructure/index.d.ts.map +0 -1
- package/dist/spec/infrastructure/index.js +0 -2
- package/dist/spec/infrastructure/index.js.map +0 -1
- package/dist/spec/infrastructure/sql/PgQueryParser.d.ts +0 -18
- package/dist/spec/infrastructure/sql/PgQueryParser.d.ts.map +0 -1
- package/dist/spec/infrastructure/sql/PgQueryParser.js +0 -17
- package/dist/spec/infrastructure/sql/PgQueryParser.js.map +0 -1
- package/dist/spec/infrastructure/sql/compilePlan.d.ts +0 -37
- package/dist/spec/infrastructure/sql/compilePlan.d.ts.map +0 -1
- package/dist/spec/infrastructure/sql/compilePlan.js +0 -282
- package/dist/spec/infrastructure/sql/compilePlan.js.map +0 -1
- package/dist/spec/infrastructure/sql/compileSql.d.ts +0 -35
- package/dist/spec/infrastructure/sql/compileSql.d.ts.map +0 -1
- package/dist/spec/infrastructure/sql/compileSql.js +0 -92
- package/dist/spec/infrastructure/sql/compileSql.js.map +0 -1
- package/dist/spec/infrastructure/sql/frontEnd.d.ts +0 -8
- package/dist/spec/infrastructure/sql/frontEnd.d.ts.map +0 -1
- package/dist/spec/infrastructure/sql/frontEnd.js +0 -100
- package/dist/spec/infrastructure/sql/frontEnd.js.map +0 -1
- package/dist/spec/infrastructure/sql/index.d.ts +0 -4
- package/dist/spec/infrastructure/sql/index.d.ts.map +0 -1
- package/dist/spec/infrastructure/sql/index.js +0 -4
- package/dist/spec/infrastructure/sql/index.js.map +0 -1
- package/dist/spec/kernel/diagnostic.d.ts.map +0 -1
- package/dist/spec/kernel/diagnostic.js +0 -296
- package/dist/spec/kernel/diagnostic.js.map +0 -1
- package/dist/spec/kernel/index.d.ts +0 -8
- package/dist/spec/kernel/index.d.ts.map +0 -1
- package/dist/spec/kernel/index.js +0 -8
- package/dist/spec/kernel/index.js.map +0 -1
- package/dist/spec/usecase/EmitTypes.d.ts +0 -22
- package/dist/spec/usecase/EmitTypes.d.ts.map +0 -1
- package/dist/spec/usecase/EmitTypes.js +0 -182
- package/dist/spec/usecase/EmitTypes.js.map +0 -1
- package/dist/spec/usecase/ValidateManifestsUseCase.d.ts +0 -8
- package/dist/spec/usecase/ValidateManifestsUseCase.d.ts.map +0 -1
- package/dist/spec/usecase/ValidateManifestsUseCase.js +0 -101
- package/dist/spec/usecase/ValidateManifestsUseCase.js.map +0 -1
- package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts +0 -27
- package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts.map +0 -1
- package/dist/spec/usecase/dto/ValidateManifestsRequest.js +0 -2
- package/dist/spec/usecase/dto/ValidateManifestsRequest.js.map +0 -1
- package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts +0 -14
- package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts.map +0 -1
- package/dist/spec/usecase/dto/ValidateManifestsResponse.js +0 -2
- package/dist/spec/usecase/dto/ValidateManifestsResponse.js.map +0 -1
- package/dist/spec/usecase/dto/index.d.ts +0 -3
- package/dist/spec/usecase/dto/index.d.ts.map +0 -1
- package/dist/spec/usecase/dto/index.js +0 -3
- package/dist/spec/usecase/dto/index.js.map +0 -1
- package/dist/spec/usecase/index.d.ts +0 -10
- package/dist/spec/usecase/index.d.ts.map +0 -1
- package/dist/spec/usecase/index.js +0 -10
- package/dist/spec/usecase/index.js.map +0 -1
- package/dist/testing/cases/before-hook.d.ts +0 -4
- package/dist/testing/cases/before-hook.d.ts.map +0 -1
- package/dist/testing/cases/before-hook.js +0 -71
- package/dist/testing/cases/before-hook.js.map +0 -1
- package/dist/testing/cases/corpus.d.ts +0 -12
- package/dist/testing/cases/corpus.d.ts.map +0 -1
- package/dist/testing/cases/corpus.js +0 -91
- package/dist/testing/cases/corpus.js.map +0 -1
- package/dist/testing/cases/policy.d.ts +0 -74
- package/dist/testing/cases/policy.d.ts.map +0 -1
- package/dist/testing/cases/policy.js +0 -142
- package/dist/testing/cases/policy.js.map +0 -1
- package/dist/testing/cases/printer.d.ts +0 -4
- package/dist/testing/cases/printer.d.ts.map +0 -1
- package/dist/testing/cases/printer.js +0 -32
- package/dist/testing/cases/printer.js.map +0 -1
- package/dist/testing/cases/report-view.d.ts +0 -5
- package/dist/testing/cases/report-view.d.ts.map +0 -1
- package/dist/testing/cases/report-view.js +0 -33
- package/dist/testing/cases/report-view.js.map +0 -1
- package/dist/testing/cases/requisition.d.ts +0 -4
- package/dist/testing/cases/requisition.d.ts.map +0 -1
- package/dist/testing/cases/requisition.js +0 -38
- package/dist/testing/cases/requisition.js.map +0 -1
- package/dist/testing/cases/search-places.d.ts +0 -4
- package/dist/testing/cases/search-places.d.ts.map +0 -1
- package/dist/testing/cases/search-places.js +0 -60
- package/dist/testing/cases/search-places.js.map +0 -1
- package/dist/testing/cases/stock.d.ts +0 -4
- package/dist/testing/cases/stock.d.ts.map +0 -1
- package/dist/testing/cases/stock.js +0 -35
- package/dist/testing/cases/stock.js.map +0 -1
- package/dist/testing/cases/store.d.ts +0 -4
- package/dist/testing/cases/store.d.ts.map +0 -1
- package/dist/testing/cases/store.js +0 -100
- package/dist/testing/cases/store.js.map +0 -1
- package/dist/testing/harness.d.ts +0 -94
- package/dist/testing/harness.d.ts.map +0 -1
- package/dist/testing/harness.js +0 -168
- package/dist/testing/harness.js.map +0 -1
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js.map +0 -1
- package/dist/testing/report.d.ts +0 -15
- package/dist/testing/report.d.ts.map +0 -1
- package/dist/testing/report.js +0 -22
- package/dist/testing/report.js.map +0 -1
- package/dist/web/createRestSurface.d.ts +0 -7
- package/dist/web/createRestSurface.d.ts.map +0 -1
- package/dist/web/createRestSurface.js +0 -39
- package/dist/web/createRestSurface.js.map +0 -1
- package/dist/web/index.d.ts +0 -2
- package/dist/web/index.d.ts.map +0 -1
- package/dist/web/index.js +0 -2
- package/dist/web/index.js.map +0 -1
- package/docs/adr/0001-four-atom-manifest-model.md +0 -440
- package/docs/adr/0002-closed-enums-for-bindings.md +0 -253
- package/docs/adr/0007-ai-as-primary-author.md +0 -473
- package/docs/adr/0008-structured-diagnostic-shape.md +0 -338
- package/docs/adr/0009-consumer-supplied-manifests.md +0 -149
- package/docs/adr/0010-locale-and-translates.md +0 -453
- package/docs/adr/0011-adapter-port-spec.md +0 -281
- package/docs/adr/0012-views-as-public-rest.md +0 -161
- package/docs/adr/0013-agent-provisioned-consumer-projects.md +0 -154
- package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +0 -919
- package/docs/adr/0016-site-semantic-layer.md +0 -70
- package/docs/adr/0017-media-multi-variant-agent-side-optimization.md +0 -181
- package/docs/adr/0018-core-starters-repository-boundary.md +0 -179
- package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +0 -244
- package/docs/adr/0020-builtin-handler-contracts-and-matched-upsert.md +0 -199
- package/docs/adr/0021-retire-starter-scaffolding.md +0 -30
- package/docs/adr/0022-caller-observed-version-occ.md +0 -212
- package/docs/adr/0023-port-failure-contract.md +0 -69
- package/docs/adr/0024-manifest-native-schema-tables.md +0 -264
- package/docs/adr/0025-reserved-native-columns-and-published-only-public-views.md +0 -105
- package/docs/adr/0026-progressive-generate.md +0 -36
- package/docs/adr/0027-scheduled-procedure-triggers.md +0 -31
- package/docs/adr/0028-schema-ttl-expiry.md +0 -33
- package/docs/adr/0029-mcp-apps-interaction-contracts.md +0 -324
- package/docs/adr/0030-store.md +0 -40
- package/docs/adr/0031-host-cloud-core-contract.md +0 -25
- package/docs/adr/0032-store-centric-core-and-service-contract.md +0 -361
- package/docs/adr/0033-storage-converges-to-the-plan.md +0 -92
- package/docs/adr/0034-store-is-authored-as-sql.md +0 -192
- package/docs/adr/0035-sql-dialects.md +0 -154
- package/docs/adr/0036-host-and-dialect.md +0 -65
- package/docs/adr/0037-postgresql-is-the-reference-dialect.md +0 -124
- package/docs/adr/0038-bun-native-host.md +0 -63
- package/docs/adr/README.md +0 -96
- package/docs/adr/adr-lite-803-request-diagnostics.md +0 -38
- package/docs/adr/adr-lite-808-route-readiness.md +0 -47
- package/docs/adr/adr-lite-809-bounded-public-content.md +0 -71
- package/docs/adr/adr-lite-812-native-parity.md +0 -150
- package/docs/adr/adr-lite-823-home-statistics.md +0 -64
- package/docs/adr/adr-lite-842-mcp-authoring.md +0 -30
- package/docs/adr/adr-lite-845-frontend-client.md +0 -38
- package/docs/adr/adr-lite-861-admin-webmcp.md +0 -48
- package/docs/adr/adr-lite-909-admin-ui-kit.md +0 -37
- package/docs/examples/commerce-inventory.md +0 -481
- package/docs/examples/commerce.md +0 -254
- package/docs/examples/guarded-api.md +0 -238
- package/docs/examples/intake-hooks.md +0 -237
- package/docs/examples/intake.md +0 -127
- package/docs/examples/legal-documents.md +0 -218
- package/docs/examples/procurement.md +0 -215
- package/docs/examples/publication.md +0 -211
- package/docs/examples/reference-service/.mantle/generated/mantle.ts +0 -174
- package/docs/examples/reference-service/.mantle/generated/plan.json +0 -1936
- package/docs/examples/reference-service/README.md +0 -33
- package/docs/examples/reference-service/manifests/catalog.yaml +0 -103
- package/docs/examples/reference-service/manifests/orders.yaml +0 -120
- package/docs/examples/reference-service/mantle.config.json +0 -1
- package/docs/examples/reference-service/package.json +0 -27
- package/docs/examples/reference-service/smoke.mjs +0 -156
- package/docs/examples/reference-service/src/handlers.ts +0 -36
- package/docs/examples/reference-service/src/index.ts +0 -33
- package/docs/examples/reference-service/src/service.ts +0 -78
- package/docs/examples/reference-service/wrangler.jsonc +0 -26
- package/docs/examples/reservation.md +0 -142
- package/docs/skills/develop/mcp-app.md +0 -79
- /package/docs/examples/{reference-service → app-shell}/.dev.vars.example +0 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/** Reusable application-owned adapter check. The factory must open an isolated, disposable database/schema. */
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { mkdir, mkdtemp, rm } from "node:fs/promises";
|
|
4
|
+
import { resolve } from "node:path";
|
|
5
|
+
import { pathToFileURL } from "node:url";
|
|
6
|
+
import { unstable_splitSqlQuery } from "wrangler";
|
|
7
|
+
import type { Postgres } from "../src/kernel/contracts.js";
|
|
8
|
+
import { procedure, transaction } from "../src/kernel/driver/postgres.js";
|
|
9
|
+
import { generateOrThrow, writeGenerated } from "../tests/apps/link.js";
|
|
10
|
+
|
|
11
|
+
export type PostgresAdapterFactory = () => Promise<{ db: Postgres; close(): Promise<void>; interactive?: boolean }>;
|
|
12
|
+
|
|
13
|
+
const atom = (kind: string, name: string, spec: object) => JSON.stringify({ apiVersion: "cms.mantle.aotter.net/v2", kind, metadata: { name }, spec });
|
|
14
|
+
const properties = { key: { type: "string" }, at: { type: "string", format: "date-time" }, day: { type: "string", format: "date" }, payload: { type: "object" }, units: { type: "integer" }, enabled: { type: "boolean" }, amount: { type: "number" } };
|
|
15
|
+
const source = [
|
|
16
|
+
atom("Schema", "adapter_items", { title: "Adapter conformance", schema: { type: "object", properties, required: Object.keys(properties) }, uniqueIndexes: [["key"]] }),
|
|
17
|
+
atom("View", "adapter-items", { surface: "internal", sql: "SELECT id, key, at, day, payload, units, enabled, amount, created_at, CAST(at AS timestamptz) AS computed_at FROM adapter_items ORDER BY id" }),
|
|
18
|
+
atom("View", "adapter-wire", { surface: "public", sql: `SELECT units AS "quantityAlias", enabled, amount, version AS "versionAlias" FROM adapter_items ORDER BY id` }),
|
|
19
|
+
atom("Procedure", "adapter-create", { input: { type: "object", properties, required: Object.keys(properties) }, output: { type: "object" }, handler: { sql: "INSERT INTO adapter_items(key, at, day, payload, units, enabled, amount) VALUES(input.key, input.at, input.day, input.payload, input.units, input.enabled, input.amount) RETURNING id, at, day, payload, units, enabled, amount" } }),
|
|
20
|
+
].join("\n---\n");
|
|
21
|
+
|
|
22
|
+
/** Returns only a check count; assertions retain the exact failing contract. No latency or benchmark data. */
|
|
23
|
+
export async function verifyPostgresAdapter(factory: PostgresAdapterFactory): Promise<{ checks: number }> {
|
|
24
|
+
const files = await generateOrThrow("bun-postgres", [{ sourceId: "adapter-conformance.yaml", text: source }]);
|
|
25
|
+
await mkdir(resolve(import.meta.dir, "../tests/apps/.generated"), { recursive: true });
|
|
26
|
+
const directory = await mkdtemp(resolve(import.meta.dir, "../tests/apps/.generated/adapter-"));
|
|
27
|
+
let client: Awaited<ReturnType<PostgresAdapterFactory>> | undefined;
|
|
28
|
+
let checks = 0;
|
|
29
|
+
try {
|
|
30
|
+
await writeGenerated(directory, files);
|
|
31
|
+
const app = await import(pathToFileURL(resolve(directory, "generated.ts")).href);
|
|
32
|
+
client = await factory();
|
|
33
|
+
const { db, interactive = true } = client;
|
|
34
|
+
for (const sql of unstable_splitSqlQuery(files["schema.sql"]!)) await db.unsafe(sql, []);
|
|
35
|
+
const caller = { kind: "system", reason: "adapter conformance" } as const;
|
|
36
|
+
const input = { key: "first", at: "2026-10-12T08:00:00.123456+08:00", day: "2024-02-29", payload: JSON.stringify({ text: "'\\", nested: [false, null] }), units: Number.MAX_SAFE_INTEGER, enabled: true, amount: 0.1 };
|
|
37
|
+
const output = await app.procedures["adapter-create"](db, caller, input);
|
|
38
|
+
const created = output.results[0][0];
|
|
39
|
+
assert.equal(created.at, "2026-10-12T00:00:00.123456Z", "declared RETURNING date-time retains microseconds");
|
|
40
|
+
assert.equal(created.day, input.day, "declared RETURNING date retains calendar day");
|
|
41
|
+
assert.deepEqual(created.payload, JSON.parse(input.payload), "JSON text is bound verbatim, not JSON-encoded twice");
|
|
42
|
+
assert.equal(String(created.units), String(input.units), "int8 retains a safe integer exactly");
|
|
43
|
+
assert.equal(created.enabled, true, "PostgreSQL boolean native output"); assert.equal(created.amount, input.amount, "declared number native output"); checks += 6;
|
|
44
|
+
const rows = await app.views["adapter-items"](db, caller, {});
|
|
45
|
+
const count = rows.count;
|
|
46
|
+
assert.ok(Array.isArray(rows), "unsafe returns a row array");
|
|
47
|
+
assert.equal(count, 1, "unsafe array carries affected count");
|
|
48
|
+
assert.equal(rows[0].at, created.at, "declared SELECT date-time retains microseconds");
|
|
49
|
+
assert.equal(rows[0].day, input.day);
|
|
50
|
+
assert.match(rows[0].created_at, /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{6}Z$/, "system timestamps have the same wire form");
|
|
51
|
+
// Computed outputs are native: the driver may return Date (milliseconds) or text (microseconds).
|
|
52
|
+
assert.ok(rows[0].computed_at instanceof Date || typeof rows[0].computed_at === "string"); checks += 6;
|
|
53
|
+
await assert.rejects(() => app.procedures["adapter-create"](db, caller, input), { code: "CONFLICT" }); checks++;
|
|
54
|
+
const step = { sql: "UPDATE adapter_items SET key = $1 WHERE id = $2 RETURNING id", binds: ["changed", "missing"], row: true };
|
|
55
|
+
await assert.rejects(() => procedure(db, [step], "adapter/zero"), { code: "CONFLICT" }); checks++;
|
|
56
|
+
const integer = await db.unsafe("SELECT CAST($1 AS bigint) AS positive, CAST($2 AS bigint) AS negative, CAST($3 AS numeric(15,2)) AS decimal", ["9007199254740993", "-9007199254740993", "1234567890123.45"]);
|
|
57
|
+
assert.equal(String(integer[0].positive), "9007199254740993", "unsafe int8 must not be rounded by an adapter");
|
|
58
|
+
assert.equal(String(integer[0].negative), "-9007199254740993");
|
|
59
|
+
assert.equal(integer[0].decimal, "1234567890123.45", "numeric text retains declared scale and precision"); checks += 3;
|
|
60
|
+
const { default: page } = await import(pathToFileURL(resolve(directory, "paged/wire/views/adapter-wire.ts")).href);
|
|
61
|
+
for (const value of ["9007199254740991", "9007199254740993", "-9007199254740993", "9223372036854775807", "-9223372036854775808"]) {
|
|
62
|
+
await db.unsafe("UPDATE adapter_items SET units=CAST($1 AS bigint), version=CAST($1 AS bigint)", [value]);
|
|
63
|
+
const wire = (await page(db, caller, {})).rows[0];
|
|
64
|
+
// The selected-boundary module returns exact integer text; REST/MCP turn safe values into numbers.
|
|
65
|
+
assert.equal(String(wire.quantityAlias), value); assert.equal(String(wire.versionAlias), value);
|
|
66
|
+
assert.equal(wire.enabled, true); assert.equal(wire.amount, input.amount); checks += 4;
|
|
67
|
+
}
|
|
68
|
+
await db.unsafe("UPDATE adapter_items SET version=1", []);
|
|
69
|
+
const store = app.store(db, caller), collection = store.collection("adapter_items");
|
|
70
|
+
const changed = { sql: "UPDATE adapter_items SET key = $1 WHERE id = $2 RETURNING id", binds: ["transaction", created.id], row: true };
|
|
71
|
+
if (!interactive) {
|
|
72
|
+
let calls = 0;
|
|
73
|
+
const tapped = { unsafe: (sql: string, values: any[]) => { calls++; return db.unsafe(sql, values); }, begin: db.begin.bind(db) };
|
|
74
|
+
const limitedStore = app.store(tapped, caller);
|
|
75
|
+
for (const run of [() => procedure(tapped, [changed, changed], "adapter/multi"), () => limitedStore.transaction(async () => { throw Error("callback must not run"); }), () => limitedStore.batch([limitedStore.collection("adapter_items").update(created.id, { key: "no-write" }, { lock: 1 }), limitedStore.collection("adapter_items").update(created.id, { key: "also-no-write" }, { lock: 1 })])]) {
|
|
76
|
+
await assert.rejects(run, (error: unknown) => {
|
|
77
|
+
const e = error as Error & { code?: string; status?: number };
|
|
78
|
+
return e instanceof Error && e.name === "ContractError" && e.code === "TRANSACTION_UNSUPPORTED" && e.status === 400 && /transaction/i.test(e.message);
|
|
79
|
+
});
|
|
80
|
+
assert.equal(calls, 0, "unsupported interactive transaction refuses before any statement"); checks += 2;
|
|
81
|
+
}
|
|
82
|
+
} else {
|
|
83
|
+
await transaction(db, async tx => {
|
|
84
|
+
await procedure(tx, [changed, changed], "adapter/nested-handle");
|
|
85
|
+
assert.equal((await tx.unsafe("SELECT key FROM adapter_items WHERE id = $1", [created.id]))[0].key, "transaction");
|
|
86
|
+
await assert.rejects(() => transaction(tx, async () => {}), /Nested transactions/);
|
|
87
|
+
}); checks += 2;
|
|
88
|
+
assert.equal((await db.unsafe("SELECT key FROM adapter_items WHERE id = $1", [created.id]))[0].key, "transaction", "begin commits after callback"); checks++;
|
|
89
|
+
const rollback = new Error("rollback sentinel");
|
|
90
|
+
await assert.rejects(() => transaction(db, async tx => { await tx.unsafe("UPDATE adapter_items SET key = $1 WHERE id = $2", ["rolled-back", created.id]); throw rollback; }), error => error === rollback);
|
|
91
|
+
assert.equal((await db.unsafe("SELECT key FROM adapter_items WHERE id = $1", [created.id]))[0].key, "transaction", "begin rolls back callback failure"); checks += 2;
|
|
92
|
+
await store.batch([collection.update(created.id, { key: "batch" }, { lock: 1 })]); checks++;
|
|
93
|
+
}
|
|
94
|
+
const uncertain = { unsafe: db.unsafe.bind(db), begin: async <T>(_options: string, callback: (tx: Postgres) => Promise<T>) => { await callback(db); throw new Error("socket lost at COMMIT"); } };
|
|
95
|
+
await assert.rejects(() => transaction(uncertain, async () => {}), { code: "OUTCOME_UNKNOWN" }); checks++;
|
|
96
|
+
return { checks };
|
|
97
|
+
} finally {
|
|
98
|
+
try { if (client) await client.close(); }
|
|
99
|
+
finally { await rm(directory, { recursive: true, force: true }); }
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
# Upgrading from 0.1.x to 0.2.0 (for AI agents)
|
|
2
2
|
|
|
3
|
+
For **0.2.0-alpha.7 and later**, use the
|
|
4
|
+
[native SDK migration](handbook/releases/index.md#native-sdk-migration-alpha7),
|
|
5
|
+
[current CLI](handbook/start/project-and-cli.md) and
|
|
6
|
+
[app shell](examples/app-shell/). The application owns routing,
|
|
7
|
+
Auth, native handles and database migrations; the former `createMantle` runtime,
|
|
8
|
+
host presets, boot-time convergence and CLI flags below have been replaced.
|
|
9
|
+
Install the same exact version of `@aotter/mantle`, `@aotter/mantle-ui` and,
|
|
10
|
+
when selecting Admin, `@aotter/mantle-admin`. Start with a new database for a
|
|
11
|
+
0.1.x migration and preserve every authorization, scope and OCC requirement.
|
|
12
|
+
The remainder describes the earlier alpha contract for historical reference.
|
|
13
|
+
|
|
3
14
|
No codemod, and no in-place upgrade of a 0.1.x database. A coding agent moves
|
|
4
|
-
one project by hand with this guide. When it and
|
|
5
|
-
(
|
|
6
|
-
ADR
|
|
15
|
+
one project by hand with this guide. When it and
|
|
16
|
+
[ADR-0032](https://github.com/aotter/mantle/blob/v0.2.0-alpha.7/docs/adr/0032-store-centric-core-and-service-contract.md),
|
|
17
|
+
[ADR-0033](https://github.com/aotter/mantle/blob/v0.2.0-alpha.7/docs/adr/0033-storage-converges-to-the-plan.md),
|
|
18
|
+
[ADR-0034](https://github.com/aotter/mantle/blob/v0.2.0-alpha.7/docs/adr/0034-store-is-authored-as-sql.md),
|
|
19
|
+
[ADR-0035](https://github.com/aotter/mantle/blob/v0.2.0-alpha.7/docs/adr/0035-sql-dialects.md),
|
|
20
|
+
[ADR-0036](https://github.com/aotter/mantle/blob/v0.2.0-alpha.7/docs/adr/0036-host-and-dialect.md) or
|
|
21
|
+
[ADR-0038](https://github.com/aotter/mantle/blob/v0.2.0-alpha.7/docs/adr/0038-bun-native-host.md) disagree, the ADR wins.
|
|
7
22
|
|
|
8
23
|
## Rules
|
|
9
24
|
|
|
@@ -50,7 +65,7 @@ command; it never installs anything.
|
|
|
50
65
|
- `features` is a subset of `mcp`, `admin`, `web`, in that order. The 0.1.x
|
|
51
66
|
features `spec`, `runtime` and `api` are dropped: REST is always mounted.
|
|
52
67
|
- `dialect` is `sqlite` (alias `d1`, the default, left out) or `postgres`
|
|
53
|
-
(PostgreSQL through Hyperdrive on `cloudflare`;
|
|
68
|
+
(PostgreSQL through Hyperdrive on `cloudflare`; node-postgres on `bun`, where it
|
|
54
69
|
is the default). A 0.1.x project was SQLite: keep `sqlite` (with
|
|
55
70
|
`--host bun`, pass `--dialect sqlite`) unless the data also moves to
|
|
56
71
|
PostgreSQL.
|
|
@@ -70,10 +85,10 @@ camelCase names.)
|
|
|
70
85
|
|
|
71
86
|
| 0.1.x | 0.2.0 |
|
|
72
87
|
|---|---|
|
|
73
|
-
| `scope: { owner: $ctx.user.id }` | `scope:
|
|
88
|
+
| `scope: { owner: $ctx.user.id }` | `scope: "owner = auth.uid()"`. The field is a required string, the leftmost column of an index (`indexes: [[owner]]`), and the first column of every `uniqueIndexes` entry. Store fills it; a write never sets it |
|
|
74
89
|
| `x-mantle-bind: ctx.user` on a field only its owner may see | remove the bind; add `scope` as above |
|
|
75
90
|
| any other `x-mantle-bind: ctx.user` | remove the bind; every write that sets the field sets it to `auth.uid()`, never to an input |
|
|
76
|
-
| `x-mantle-bind: ctx.staff` | remove the bind; set it to `auth.uid()` in writes whose Procedure
|
|
91
|
+
| `x-mantle-bind: ctx.staff` | remove the bind; set it to `auth.uid()` in writes whose Procedure requires `ctx.admin` |
|
|
77
92
|
| `x-mantle-bind: now` | remove the bind; set it to `now()` in every write that sets it |
|
|
78
93
|
| `searchableFields` | unchanged, now trigram full-text search; date and date-time fields are refused |
|
|
79
94
|
|
|
@@ -158,11 +173,11 @@ The generated types list exactly the plan's refs.
|
|
|
158
173
|
|---|---|
|
|
159
174
|
| `ctx.user` present | `ctx.caller.kind === "user"`. Never test `!== "anonymous"`: a schedule runs as `system` |
|
|
160
175
|
| `ctx.user.id` | `ctx.caller.subject` (after that check) |
|
|
161
|
-
| `ctx.staff` | `ctx.caller
|
|
176
|
+
| `ctx.staff` | `isAdmin(ctx.caller)` from `@aotter/mantle/contracts` |
|
|
162
177
|
| `ctx.event`, `ctx.schedule` | `ctx.cause` (`kind`: `http`, `mcp`, `internal`, `schedule`, `lifecycle`); `ctx.cause.cron` is POSIX, so shift any cron string the code compares |
|
|
163
178
|
| `ctx.event.entry` | **a loop** over `ctx.cause.rows` (one statement can touch many rows; never `rows[0]`). Rows are flat: `entry.data.x` → `row.x` |
|
|
164
179
|
| `ctx.store.view(name, { params, page, show, search, filters })` | `ctx.store.view(name, { input, limit, cursor, search, filters })`; `search` and `filters` match only the View's `uiSchema.list.searchFields` and `filterFields` |
|
|
165
|
-
| `runtime.entries`, `runtime.executeView`, `ctx.writeAtomically` | `ctx.
|
|
180
|
+
| `runtime.entries`, `runtime.executeView`, `ctx.writeAtomically` | `ctx.db.<schema>.get / first / find`, `ctx.store.view`, `ctx.store.write([...ops])` (all or nothing), `ctx.store.id()` |
|
|
166
181
|
| `runtime.store.as(ctx)` | `runtime.store.as(caller)` |
|
|
167
182
|
| calling another Procedure through a `getRuntime` closure | `await ctx.invoke("procedure-name", input)` (keeps the caller, re-checks its auth) |
|
|
168
183
|
|
|
@@ -179,8 +194,9 @@ only in trusted host code.
|
|
|
179
194
|
old Worker into the new files by hand.
|
|
180
195
|
3. With `identity: mantle`, sign-in uses a console email sender locally;
|
|
181
196
|
replace it with a real `EmailSender` before deploying.
|
|
182
|
-
4.
|
|
183
|
-
|
|
197
|
+
4. Admin MCP moves from `/mcp/staff` to `/mcp/admin`. Update MCP client URLs.
|
|
198
|
+
It admits only the admin layer classified by Better Auth’s admin plugin
|
|
199
|
+
`adminRoles` (default `["admin"]`), and requires the `mcp` scope for tokens.
|
|
184
200
|
5. Import data into the new database through `runtime.store`. A scoped row
|
|
185
201
|
goes through `runtime.store.as(<its owner's caller>)`, so the scope field is
|
|
186
202
|
the owner. `status`, `created_at` and `author_id` cannot be imported:
|
package/package.json
CHANGED
|
@@ -1,146 +1,154 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aotter/mantle",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
4
|
-
"description": "Mantle: a manifest-driven service core. Store authored as SQL, surfaces as Fetch functions, and the mantle CLI.",
|
|
5
|
-
"license": "Apache-2.0",
|
|
6
|
-
"homepage": "https://mantle.tools/",
|
|
7
|
-
"repository": {
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/aotter/mantle.git",
|
|
10
|
-
"directory": "packages/mantle"
|
|
11
|
-
},
|
|
3
|
+
"version": "0.2.0-alpha.11",
|
|
12
4
|
"type": "module",
|
|
13
5
|
"sideEffects": false,
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"types": "./dist/core/index.d.ts",
|
|
17
|
-
"import": "./dist/core/index.js"
|
|
18
|
-
},
|
|
19
|
-
"./spec": {
|
|
20
|
-
"types": "./dist/spec/index.d.ts",
|
|
21
|
-
"import": "./dist/spec/index.js"
|
|
22
|
-
},
|
|
23
|
-
"./d1": {
|
|
24
|
-
"types": "./dist/d1/index.d.ts",
|
|
25
|
-
"import": "./dist/d1/index.js"
|
|
26
|
-
},
|
|
27
|
-
"./d1/compile": {
|
|
28
|
-
"types": "./dist/d1/compile/index.d.ts",
|
|
29
|
-
"import": "./dist/d1/compile/index.js",
|
|
30
|
-
"default": "./dist/d1/compile/index.js"
|
|
31
|
-
},
|
|
32
|
-
"./postgres": {
|
|
33
|
-
"types": "./dist/postgres/index.d.ts",
|
|
34
|
-
"import": "./dist/postgres/index.js"
|
|
35
|
-
},
|
|
36
|
-
"./postgres/compile": {
|
|
37
|
-
"types": "./dist/postgres/compile/index.d.ts",
|
|
38
|
-
"import": "./dist/postgres/compile/index.js",
|
|
39
|
-
"default": "./dist/postgres/compile/index.js"
|
|
40
|
-
},
|
|
41
|
-
"./cloudflare": {
|
|
42
|
-
"types": "./dist/cloudflare/index.d.ts",
|
|
43
|
-
"import": "./dist/cloudflare/index.js"
|
|
44
|
-
},
|
|
45
|
-
"./auth": {
|
|
46
|
-
"types": "./dist/auth/index.d.ts",
|
|
47
|
-
"import": "./dist/auth/index.js"
|
|
48
|
-
},
|
|
49
|
-
"./admin": {
|
|
50
|
-
"types": "./dist/admin/index.d.ts",
|
|
51
|
-
"import": "./dist/admin/index.js"
|
|
52
|
-
},
|
|
53
|
-
"./mcp": {
|
|
54
|
-
"types": "./dist/mcp/index.d.ts",
|
|
55
|
-
"import": "./dist/mcp/index.js"
|
|
56
|
-
},
|
|
57
|
-
"./web": {
|
|
58
|
-
"types": "./dist/web/index.d.ts",
|
|
59
|
-
"import": "./dist/web/index.js"
|
|
60
|
-
},
|
|
61
|
-
"./testing": {
|
|
62
|
-
"types": "./dist/testing/index.d.ts",
|
|
63
|
-
"import": "./dist/testing/index.js"
|
|
64
|
-
},
|
|
65
|
-
"./package.json": "./package.json",
|
|
66
|
-
"./bun": {
|
|
67
|
-
"types": "./dist/bun/index.d.ts",
|
|
68
|
-
"import": "./dist/bun/index.js"
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
"bin": {
|
|
72
|
-
"mantle": "./dist/cli/main.js"
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=22.22.0"
|
|
73
8
|
},
|
|
74
9
|
"files": [
|
|
75
10
|
"dist",
|
|
76
|
-
"docs"
|
|
11
|
+
"docs",
|
|
12
|
+
"skills",
|
|
13
|
+
"README.md"
|
|
77
14
|
],
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"tag": "alpha",
|
|
81
|
-
"registry": "https://registry.npmjs.org"
|
|
15
|
+
"bin": {
|
|
16
|
+
"mantle": "./dist/infrastructure/cli.js"
|
|
82
17
|
},
|
|
83
18
|
"dependencies": {
|
|
19
|
+
"esbuild": "0.28.1",
|
|
20
|
+
"jsonc-parser": "3.3.1",
|
|
84
21
|
"@pgsql/types": "18.0.0",
|
|
85
22
|
"libpg-query": "18.1.5",
|
|
86
23
|
"pgsql-deparser": "18.3.8",
|
|
87
|
-
"yaml": "^2.9.
|
|
88
|
-
"zod": "^4.5
|
|
24
|
+
"yaml": "^2.9.1",
|
|
25
|
+
"zod": "^4.6.5"
|
|
89
26
|
},
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
27
|
+
"exports": {
|
|
28
|
+
".": "./dist/infrastructure/generate.js",
|
|
29
|
+
"./generate": "./dist/infrastructure/generate.js",
|
|
30
|
+
"./contracts": "./dist/kernel/contracts.js",
|
|
31
|
+
"./authorization": "./dist/kernel/authorization.js",
|
|
32
|
+
"./translations": "./dist/kernel/translations.js",
|
|
33
|
+
"./driver/transaction-context": "./dist/kernel/driver/transaction-context.js",
|
|
34
|
+
"./scalars": "./dist/kernel/scalars.js",
|
|
35
|
+
"./binds": "./dist/kernel/binds.js",
|
|
36
|
+
"./testing": "./dist/testing/index.js",
|
|
37
|
+
"./host-access": "./dist/kernel/host-access.js",
|
|
38
|
+
"./host-caller": "./dist/kernel/host-caller.js",
|
|
39
|
+
"./user-fields": "./dist/kernel/user-fields.js",
|
|
40
|
+
"./sweep": "./dist/kernel/sweep.js",
|
|
41
|
+
"./cron": "./dist/kernel/cron.js",
|
|
42
|
+
"./store": "./dist/kernel/store.js",
|
|
43
|
+
"./dialect/sqlite": "./dist/kernel/dialect/sqlite.js",
|
|
44
|
+
"./dialect/postgres": "./dist/kernel/dialect/postgres.js",
|
|
45
|
+
"./driver/bun-sqlite": "./dist/kernel/driver/bun-sqlite.js",
|
|
46
|
+
"./driver/d1": "./dist/kernel/driver/d1.js",
|
|
47
|
+
"./driver/postgres": "./dist/kernel/driver/postgres.js",
|
|
48
|
+
"./email": "./dist/kernel/email.js",
|
|
49
|
+
"./paging": "./dist/kernel/paging.js",
|
|
50
|
+
"./publishing": "./dist/kernel/publishing.js",
|
|
51
|
+
"./rest": "./dist/kernel/rest.js",
|
|
52
|
+
"./mcp": "./dist/kernel/mcp.js",
|
|
53
|
+
"./mcp-apps": "./dist/kernel/mcp-apps.js",
|
|
54
|
+
"./web": "./dist/kernel/web.js",
|
|
55
|
+
"./validation": "./dist/kernel/validation.js",
|
|
56
|
+
"./site": "./dist/kernel/site.js",
|
|
57
|
+
"./media": "./dist/kernel/media.js",
|
|
58
|
+
"./media/r2": "./dist/kernel/r2-media.js",
|
|
59
|
+
"./auth": "./dist/auth/caller.js",
|
|
60
|
+
"./auth/adapter": "./dist/auth/adapter.js",
|
|
61
|
+
"./auth/oauth": "./dist/auth/oauth.js",
|
|
62
|
+
"./auth/routes": "./dist/auth/routes.js",
|
|
63
|
+
"./auth/identity": "./dist/auth/identity.js",
|
|
64
|
+
"./auth/hardening": "./dist/auth/hardening.js",
|
|
65
|
+
"./auth/admin": "./dist/auth/admin.js",
|
|
66
|
+
"./bun/assets": "./dist/bun/assets.js",
|
|
67
|
+
"./surface": "./dist/kernel/surface.js",
|
|
68
|
+
"./json-body": "./dist/kernel/json-body.js",
|
|
69
|
+
"./generate/auth": "./dist/infrastructure/generateAuth.js",
|
|
70
|
+
"./package.json": "./package.json",
|
|
71
|
+
"./describe": "./dist/domain/describe/index.js",
|
|
72
|
+
"./target-hash": "./dist/domain/describe/target-hash.js"
|
|
107
73
|
},
|
|
108
74
|
"peerDependencies": {
|
|
109
|
-
"@
|
|
110
|
-
"@better-auth/
|
|
111
|
-
"@better-auth/oauth-provider": "1.7.
|
|
112
|
-
"
|
|
113
|
-
"@modelcontextprotocol/server": "2.1.0",
|
|
114
|
-
"better-auth": "1.7.2"
|
|
75
|
+
"@modelcontextprotocol/server": "2.2.0",
|
|
76
|
+
"@better-auth/core": "1.7.7",
|
|
77
|
+
"@better-auth/oauth-provider": "1.7.7",
|
|
78
|
+
"better-auth": "1.7.7"
|
|
115
79
|
},
|
|
116
80
|
"peerDependenciesMeta": {
|
|
117
|
-
"@
|
|
81
|
+
"@modelcontextprotocol/server": {
|
|
118
82
|
"optional": true
|
|
119
83
|
},
|
|
120
|
-
"@better-auth/
|
|
84
|
+
"@better-auth/core": {
|
|
121
85
|
"optional": true
|
|
122
86
|
},
|
|
123
87
|
"@better-auth/oauth-provider": {
|
|
124
88
|
"optional": true
|
|
125
89
|
},
|
|
126
|
-
"@modelcontextprotocol/ext-apps": {
|
|
127
|
-
"optional": true
|
|
128
|
-
},
|
|
129
|
-
"@modelcontextprotocol/server": {
|
|
130
|
-
"optional": true
|
|
131
|
-
},
|
|
132
90
|
"better-auth": {
|
|
133
91
|
"optional": true
|
|
134
92
|
}
|
|
135
93
|
},
|
|
136
|
-
"
|
|
137
|
-
"
|
|
94
|
+
"devDependencies": {
|
|
95
|
+
"@modelcontextprotocol/client": "2.2.0",
|
|
96
|
+
"@modelcontextprotocol/server": "2.2.0",
|
|
97
|
+
"@better-auth/core": "1.7.7",
|
|
98
|
+
"@better-auth/oauth-provider": "1.7.7",
|
|
99
|
+
"@better-auth/test-utils": "1.7.7",
|
|
100
|
+
"@cloudflare/workers-types": "^5.20261008.1",
|
|
101
|
+
"@types/node": "^26",
|
|
102
|
+
"better-auth": "1.7.7",
|
|
103
|
+
"bun-types": "1.4.2",
|
|
104
|
+
"postgres": "3.4.9",
|
|
105
|
+
"typescript": "^6.0.3",
|
|
106
|
+
"wrangler": "4.145.0",
|
|
107
|
+
"vitest": "^5.0.1"
|
|
108
|
+
},
|
|
109
|
+
"description": "Agent-native app SDK and backend compiler: YAML manifests to native SQL (SQLite, Cloudflare D1, PostgreSQL) and typed TypeScript; optional REST and MCP.",
|
|
110
|
+
"keywords": [
|
|
111
|
+
"mantle",
|
|
112
|
+
"agent-native",
|
|
113
|
+
"sdk",
|
|
114
|
+
"backend",
|
|
115
|
+
"yaml",
|
|
116
|
+
"code-generation",
|
|
117
|
+
"sql",
|
|
118
|
+
"sqlite",
|
|
119
|
+
"postgresql",
|
|
120
|
+
"cloudflare-d1",
|
|
121
|
+
"cloudflare-workers",
|
|
122
|
+
"bun",
|
|
123
|
+
"typescript",
|
|
124
|
+
"mcp",
|
|
125
|
+
"model-context-protocol"
|
|
126
|
+
],
|
|
127
|
+
"license": "Apache-2.0",
|
|
128
|
+
"homepage": "https://mantle.tools/",
|
|
129
|
+
"repository": {
|
|
130
|
+
"type": "git",
|
|
131
|
+
"url": "git+https://github.com/aotter/mantle.git",
|
|
132
|
+
"directory": "packages/mantle"
|
|
133
|
+
},
|
|
134
|
+
"bugs": {
|
|
135
|
+
"url": "https://github.com/aotter/mantle/issues"
|
|
136
|
+
},
|
|
137
|
+
"publishConfig": {
|
|
138
|
+
"access": "public",
|
|
139
|
+
"tag": "alpha",
|
|
140
|
+
"registry": "https://registry.npmjs.org"
|
|
138
141
|
},
|
|
139
142
|
"scripts": {
|
|
140
|
-
"
|
|
141
|
-
"build": "tsc -b tsconfig.lib.json",
|
|
143
|
+
"build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.lib.json && node ../../scripts/strip-comments.mjs tsconfig.lib.json && node scripts/bundle-compiler.mjs && node scripts/prune-declarations.mjs",
|
|
142
144
|
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
143
|
-
"test": "
|
|
144
|
-
"
|
|
145
|
+
"test": "bun test tests/*.test.ts && bun run test:compiler",
|
|
146
|
+
"generate": "bun src/infrastructure/cli.ts",
|
|
147
|
+
"test:native": "bun scripts/verify-native.ts",
|
|
148
|
+
"bench": "bun scripts/verify-native.ts --bench",
|
|
149
|
+
"check:size": "bun run build && bun scripts/check-size.ts",
|
|
150
|
+
"check:package": "bun run build && bun scripts/check-package.ts",
|
|
151
|
+
"test:compiler": "tsc --noEmit -p tsconfig.compiler.json && vitest run --config vitest.compiler.config.ts",
|
|
152
|
+
"check:startup": "bun scripts/check-size.ts --startup-only"
|
|
145
153
|
}
|
|
146
154
|
}
|
package/skills/README.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# SKILL.md briefs (mantle)
|
|
2
|
+
|
|
3
|
+
Agent-readable skills for consumers of `@aotter/mantle` 0.2. There are two
|
|
4
|
+
distributions (ADR-0032 decision 13):
|
|
5
|
+
|
|
6
|
+
- **The plugin** ships one OSS authoring skill, [`mantle`](mantle/SKILL.md),
|
|
7
|
+
without a hosted-service MCP connection or transport.
|
|
8
|
+
- **The npm package** ships the workflow skills under `docs/skills/`. An agent
|
|
9
|
+
reads them from `node_modules/@aotter/mantle/docs/skills/`, matched to the
|
|
10
|
+
installed version. Nothing copies them into a project; 0.2 has no
|
|
11
|
+
`mantle skills` command.
|
|
12
|
+
|
|
13
|
+
| Skill | When to invoke |
|
|
14
|
+
|---|---|
|
|
15
|
+
| [`mantle`](mantle/SKILL.md) | Create or continue a Mantle application and deploy to a user-owned host. |
|
|
16
|
+
| [`develop`](../docs/skills/develop/SKILL.md) | Change manifests, SQL, handlers, the service entry or surfaces of an existing project. |
|
|
17
|
+
| [`integrate`](../docs/skills/integrate/SKILL.md) | Add Mantle to an application that has its own code, users or data, or rebuild one and migrate. |
|
|
18
|
+
| [`update`](../docs/skills/update/SKILL.md) | Upgrade `@aotter/mantle`, including from 0.1.x. |
|
|
19
|
+
| [`provision`](../docs/skills/provision/SKILL.md) | Ship to Cloudflare Workers or ChatGPT Sites with production sign-in. |
|
|
20
|
+
| [`media-gc`](../docs/skills/media-gc/SKILL.md) | Audit or remove stale, uncommitted R2 uploads. |
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
Use the [agent setup guide](../docs/handbook/guides/agent-setup.md) for Codex,
|
|
25
|
+
Claude Code, Cursor and GitHub Copilot. Pin the plugin checkout to the same
|
|
26
|
+
release tag as the application's SDK; alpha releases on `develop` can be newer
|
|
27
|
+
than the default `main` branch. For a skill-only installation:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
npx skills add https://github.com/aotter/mantle/tree/v0.2.0-alpha.11 --skill mantle
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The explicit skill name excludes repository maintainer skills. The manifests
|
|
34
|
+
are generated by `scripts/sync-plugin-manifests.mjs` and checked with `--check`.
|
|
35
|
+
When upgrading, update the marketplace ref or local tagged checkout and refresh
|
|
36
|
+
the plugin. Verify the loaded manifest version; Claude Code's plugin version
|
|
37
|
+
is Core's, so packaged skill changes reach users through the next Core release.
|
|
38
|
+
|
|
39
|
+
## Disclosure audit
|
|
40
|
+
|
|
41
|
+
Every skill is one `SKILL.md`; the plugin skill carries local acceptance references.
|
|
42
|
+
`scripts/check-skills.mjs` holds this table, the front matter and the links to
|
|
43
|
+
each other: `metadata.projection` is `plugin` for `skills/mantle` and
|
|
44
|
+
`package` for `docs/skills/*`, a reason in the last column must equal
|
|
45
|
+
`metadata.projectionReason`, and a relative link must stay inside what ships
|
|
46
|
+
(the skill's own directory for the plugin, `docs/` for the package).
|
|
47
|
+
|
|
48
|
+
| Skill | Routes on | Entry constraints | Distribution | Restricted because |
|
|
49
|
+
|---|---|---|---|---|
|
|
50
|
+
| `mantle` | new project, existing project, self-host deployment | the installed package's docs win; never use the SDK checkout as the application; no deploy during a cold start | plugin | The plugin's authoring entry skill is installed from the repository; workflow documentation comes from the installed SDK package. |
|
|
51
|
+
| `develop` | manifest, SQL, handler, service or surface work | read the installed version first; never edit generated files; writes through Store/Procedures, richer reads through internal Views | package | — |
|
|
52
|
+
| `integrate` | an application with its own code, users or data | inspect before choosing; the application keeps its users; one writer per table | package | — |
|
|
53
|
+
| `update` | an SDK upgrade | never overwrite application files; 0.1.x moves by the upgrade guide to a new database | package | — |
|
|
54
|
+
| `provision` | ship to production | secrets never in source, chat or logs; a new database for 0.2; self-hosting is always an option | package | Creates remote resources and handles production secrets; opt-in only. |
|
|
55
|
+
| `media-gc` | stale R2 uploads | audit by default; exact keys only, never a prefix delete; re-audit before applying | package | Destructive remote object deletion and Cloudflare-specific; opt-in only. |
|
|
56
|
+
|
|
57
|
+
## Audience
|
|
58
|
+
|
|
59
|
+
These are for **AI agents acting for consumers of Mantle**, not for
|
|
60
|
+
contributors to the SDK, who read the repository's `CONTRIBUTING.md`.
|
|
61
|
+
|
|
62
|
+
## Conventions
|
|
63
|
+
|
|
64
|
+
Each SKILL.md has front matter (`name`, a trigger-complete `description`,
|
|
65
|
+
`metadata.source`, `sourcePath`, `applies_to`, `projection`), the reads to do
|
|
66
|
+
first, concrete commands, the rules an agent must not break, and what to report
|
|
67
|
+
when done. Commands and prose match the package version that carries the skill.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mantle
|
|
3
|
+
description: Create, continue, test or deploy a Mantle application using installed @aotter/mantle docs, including manifests, SQL Views and Procedures, MCP tools, app-built Admin, mantle generate and Mantle upgrades.
|
|
4
|
+
metadata:
|
|
5
|
+
source: "@aotter/mantle"
|
|
6
|
+
sourcePath: skills/mantle/SKILL.md
|
|
7
|
+
applies_to: mantle 0.2
|
|
8
|
+
projection: plugin
|
|
9
|
+
projectionReason: The plugin's authoring entry skill is installed from the repository; workflow documentation comes from the installed SDK package.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Mantle
|
|
13
|
+
|
|
14
|
+
The Mantle plugin's one skill. It installs no SDK and creates nothing by
|
|
15
|
+
itself. Once a project has `@aotter/mantle`, the installed package is the
|
|
16
|
+
authority: `node_modules/@aotter/mantle/README.md` and
|
|
17
|
+
`node_modules/@aotter/mantle/docs/`. Prefer them over this file, the SDK
|
|
18
|
+
checkout, or any online copy.
|
|
19
|
+
|
|
20
|
+
## Start with `mantle help`
|
|
21
|
+
|
|
22
|
+
Run `mantle help` first (in a project: `npx mantle help`; before one exists:
|
|
23
|
+
`npx @aotter/mantle@<exact version> help`). It prints the installed version's
|
|
24
|
+
entry page and every topic; `mantle help <topic>` prints one page with the next
|
|
25
|
+
and linked topics as commands. Follow it rather than browsing the SDK checkout
|
|
26
|
+
or an online copy.
|
|
27
|
+
|
|
28
|
+
## Find the project and its version
|
|
29
|
+
|
|
30
|
+
Work in the user's application, outside the SDK checkout. Read package.json, the lockfile, installed SDK README and node_modules/@aotter/mantle/docs/. Those files define the exact version's contract. Preserve existing identity, handles, routes and resources.
|
|
31
|
+
For existing older applications, use their installed docs until the user requests an upgrade; if an older version
|
|
32
|
+
lacks a guide named here, record the missing guidance and keep that version's contract.
|
|
33
|
+
|
|
34
|
+
## Choose the installed package skill
|
|
35
|
+
|
|
36
|
+
- Read `node_modules/@aotter/mantle/docs/skills/develop/SKILL.md` to change an existing project's manifests, SQL, handlers, service entry or surfaces.
|
|
37
|
+
- Read `node_modules/@aotter/mantle/docs/skills/integrate/SKILL.md` to add Mantle to an application with existing code, users or data.
|
|
38
|
+
- Read `node_modules/@aotter/mantle/docs/skills/update/SKILL.md` to upgrade Mantle, including from 0.1.x.
|
|
39
|
+
- Read `node_modules/@aotter/mantle/docs/skills/provision/SKILL.md` only for an authorized production deployment.
|
|
40
|
+
- Read `node_modules/@aotter/mantle/docs/skills/media-gc/SKILL.md` only to audit or remove stale uncommitted media uploads.
|
|
41
|
+
|
|
42
|
+
## New application
|
|
43
|
+
|
|
44
|
+
Node must be 22.22 or newer. Create it with `npx @aotter/mantle@<exact version> init <directory>`, then follow
|
|
45
|
+
`mantle help` ("Build from a product brief") and the app's `README.md`. Without the user listing them, a complete app
|
|
46
|
+
includes:
|
|
47
|
+
|
|
48
|
+
- Email OTP sign-in, the two roles `admin` and `user`, Admin for `admin`, MCP for both roles (`/mcp`, `/mcp/admin`)
|
|
49
|
+
and REST: the shell already wires them; keep them.
|
|
50
|
+
- Real business rules in SQL Procedures (`mantle help sql-patterns`), not in handler code around separate writes.
|
|
51
|
+
- For visitor pages, everything in `mantle help public-pages` (SEO, AEO, sitemap, robots, `llms.txt`), styled.
|
|
52
|
+
- Local HTTP checks (`mantle help local-testing`), then independent acceptance with `pnpm accept`
|
|
53
|
+
(`mantle help agent-workflow-acceptance`).
|
|
54
|
+
|
|
55
|
+
Take patterns from `mantle help examples` into the app's own manifests and `src/`; do not copy an example directory
|
|
56
|
+
over the app. Resolve each `AGENT:` or name the ones you left. Generation only, inside an app you already have: skip
|
|
57
|
+
`init` and use `mantle generate` (`mantle help project-and-cli`).
|
|
58
|
+
|
|
59
|
+
## Accept before reporting done
|
|
60
|
+
|
|
61
|
+
Before reporting any new app or feature as done, follow `mantle help agent-workflow-acceptance`: a private rubric,
|
|
62
|
+
then one fresh agent per role given only its role and the URLs `pnpm accept` prints, at most three rounds. If it was
|
|
63
|
+
not run, report the work as UNVERIFIED rather than done; if it could not run, BLOCKED.
|
|
64
|
+
|
|
65
|
+
## Deployment
|
|
66
|
+
|
|
67
|
+
Deploy only when the user requests it, following the installed `docs/skills/provision/SKILL.md` and the selected
|
|
68
|
+
host's native workflow. Local project creation alone is not deployment authorization.
|
|
69
|
+
|
|
70
|
+
## Existing project and handoff
|
|
71
|
+
|
|
72
|
+
Preserve the user's manifests, `src/` files, identity, package versions and provider resources. Run the project's
|
|
73
|
+
generate command with `--check` and its own tests before and after a change.
|
|
74
|
+
|
|
75
|
+
Report the project path, the exact Mantle version, what you changed, the checks you ran with their results, the
|
|
76
|
+
independent acceptance verdict (CONVERGED / BLOCKED / UNVERIFIED), and anything left for the user.
|
package/dist/admin/consent.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/** What the consent screen and the connected-apps list need of an OAuth provider, and the member list's cursor (Admin's, used by the identity provider). */
|
|
2
|
-
export interface OAuthConsentRequest {
|
|
3
|
-
readonly clientName: string;
|
|
4
|
-
readonly redirectUri: string;
|
|
5
|
-
readonly scopes: readonly string[];
|
|
6
|
-
/** Signed provider query returned unchanged with the consent decision. */
|
|
7
|
-
readonly oauthQuery: string;
|
|
8
|
-
}
|
|
9
|
-
export interface OAuthConsentInfo {
|
|
10
|
-
readonly id: string;
|
|
11
|
-
readonly clientId: string;
|
|
12
|
-
readonly clientName: string;
|
|
13
|
-
readonly scopes: readonly string[];
|
|
14
|
-
}
|
|
15
|
-
export declare function encodeMemberCursor(createdAt: string, id: string): string;
|
|
16
|
-
export declare function decodeMemberCursor(cursor: string): readonly [string, string] | null;
|
|
17
|
-
//# sourceMappingURL=consent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../src/admin/consent.ts"],"names":[],"mappings":"AAAA,4JAA4J;AAE5J,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAID,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAQnF"}
|
package/dist/admin/consent.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/** What the consent screen and the connected-apps list need of an OAuth provider, and the member list's cursor (Admin's, used by the identity provider). */
|
|
2
|
-
const PREFIX = "m:";
|
|
3
|
-
export function encodeMemberCursor(createdAt, id) {
|
|
4
|
-
return `${PREFIX}${encodeURIComponent(JSON.stringify([createdAt, id]))}`;
|
|
5
|
-
}
|
|
6
|
-
export function decodeMemberCursor(cursor) {
|
|
7
|
-
if (!cursor.startsWith(PREFIX))
|
|
8
|
-
return null;
|
|
9
|
-
try {
|
|
10
|
-
const v = JSON.parse(decodeURIComponent(cursor.slice(PREFIX.length)));
|
|
11
|
-
return Array.isArray(v) && v.length === 2 && typeof v[0] === "string" && !Number.isNaN(Date.parse(v[0])) && typeof v[1] === "string" && v[1] ? [v[0], v[1]] : null;
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=consent.js.map
|