@aotter/mantle 0.2.0-alpha.6 → 0.2.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -45
- package/dist/auth/adapter.d.ts +32 -0
- package/dist/auth/adapter.js +285 -0
- package/dist/auth/admin.d.ts +3 -0
- package/dist/auth/admin.js +21 -0
- package/dist/auth/caller.d.ts +86 -0
- package/dist/auth/caller.js +154 -0
- package/dist/auth/hardening.d.ts +24 -0
- package/dist/auth/hardening.js +40 -0
- package/dist/auth/identity.d.ts +121 -0
- package/dist/auth/identity.js +203 -0
- package/dist/auth/oauth.d.ts +31 -0
- package/dist/auth/oauth.js +124 -0
- package/dist/auth/resource-seeds.js +10 -0
- package/dist/auth/routes.d.ts +32 -0
- package/dist/auth/{createAuthRoutes.js → routes.js} +130 -35
- package/dist/build/compiler.d.ts +790 -0
- package/dist/build/compiler.js +6971 -0
- package/dist/{spec → build/spec}/domain/model/ManifestGrammar.d.ts +24 -42
- package/dist/{spec → build/spec}/domain/model/RuntimePlan.d.ts +77 -3
- package/dist/{spec → build/spec}/domain/model/SqlIr.d.ts +35 -6
- package/dist/build/spec/domain/model/UserFields.d.ts +20 -0
- package/dist/{spec → build/spec}/domain/service/PlanFingerprint.d.ts +2 -1
- package/dist/{spec → build/spec}/kernel/diagnostic.d.ts +1 -30
- package/dist/bun/assets.d.ts +2 -0
- package/dist/bun/assets.js +24 -0
- package/dist/domain/adminOrder.js +24 -0
- package/dist/domain/columns.js +55 -0
- package/dist/domain/describe/chunk-ZIQVLA7X.js +363 -0
- package/dist/domain/describe/index.d.ts +58 -0
- package/dist/domain/describe/index.js +115 -0
- package/dist/domain/describe/target-hash.d.ts +8 -0
- package/dist/domain/describe/target-hash.js +12 -0
- package/dist/domain/describe/targets.d.ts +40 -0
- package/dist/domain/entry.js +33 -0
- package/dist/domain/generated-tools.js +17 -0
- package/dist/domain/generation.d.ts +16 -0
- package/dist/domain/generation.js +1 -0
- package/dist/domain/input.js +17 -0
- package/dist/domain/model.js +1 -0
- package/dist/domain/paging.js +204 -0
- package/dist/domain/recipes.js +19 -0
- package/dist/domain/userReferences.js +5 -0
- package/dist/domain/wireScalars.js +47 -0
- package/dist/infrastructure/adminEntries.js +153 -0
- package/dist/infrastructure/adminPaging.js +72 -0
- package/dist/infrastructure/artifacts.js +71 -0
- package/dist/infrastructure/authSchema.js +83 -0
- package/dist/infrastructure/bundle.js +84 -0
- package/dist/infrastructure/cli.js +101 -0
- package/dist/infrastructure/generate.d.ts +14 -0
- package/dist/infrastructure/generate.js +174 -0
- package/dist/infrastructure/generateAuth.d.ts +8 -0
- package/dist/infrastructure/generateAuth.js +17 -0
- package/dist/infrastructure/inputs.js +36 -0
- package/dist/infrastructure/wrangler.js +71 -0
- package/dist/kernel/authorization.d.ts +4 -0
- package/dist/kernel/authorization.js +16 -0
- package/dist/kernel/binds.d.ts +51 -0
- package/dist/kernel/binds.js +45 -0
- package/dist/kernel/caller-identity.d.ts +24 -0
- package/dist/kernel/caller-identity.js +22 -0
- package/dist/kernel/contract-error.d.ts +12 -0
- package/dist/kernel/contract-error.js +14 -0
- package/dist/kernel/contracts.d.ts +139 -0
- package/dist/kernel/contracts.js +92 -0
- package/dist/{spec/domain/service/CloudflareCron.d.ts → kernel/cron.d.ts} +0 -1
- package/dist/{spec/domain/service/CloudflareCron.js → kernel/cron.js} +1 -6
- package/dist/kernel/dialect/common.d.ts +39 -0
- package/dist/kernel/dialect/common.js +6 -0
- package/dist/kernel/dialect/postgres.d.ts +16 -0
- package/dist/kernel/dialect/postgres.js +18 -0
- package/dist/kernel/dialect/sqlite.d.ts +20 -0
- package/dist/kernel/dialect/sqlite.js +34 -0
- package/dist/kernel/driver/bun-sqlite.d.ts +19 -0
- package/dist/kernel/driver/bun-sqlite.js +77 -0
- package/dist/kernel/driver/d1.d.ts +24 -0
- package/dist/kernel/driver/d1.js +22 -0
- package/dist/kernel/driver/postgres.d.ts +25 -0
- package/dist/kernel/driver/postgres.js +95 -0
- package/dist/kernel/driver/transaction-context.d.ts +10 -0
- package/dist/kernel/driver/transaction-context.js +29 -0
- package/dist/kernel/email.d.ts +28 -0
- package/dist/{auth/emailTemplates.js → kernel/email.js} +13 -2
- package/dist/kernel/host-access.d.ts +10 -0
- package/dist/kernel/host-access.js +65 -0
- package/dist/kernel/host-caller.d.ts +38 -0
- package/dist/kernel/host-caller.js +55 -0
- package/dist/kernel/json-body.d.ts +4 -0
- package/dist/kernel/json-body.js +44 -0
- package/dist/kernel/mcp-apps.d.ts +49 -0
- package/dist/kernel/mcp-apps.js +40 -0
- package/dist/kernel/mcp-call.d.ts +5 -0
- package/dist/kernel/mcp-call.js +25 -0
- package/dist/kernel/mcp-handler.js +288 -0
- package/dist/kernel/mcp.d.ts +101 -0
- package/dist/kernel/mcp.js +25 -0
- package/dist/kernel/media.d.ts +27 -0
- package/dist/kernel/media.js +216 -0
- package/dist/kernel/paging.d.ts +55 -0
- package/dist/kernel/paging.js +95 -0
- package/dist/kernel/publishing.d.ts +4 -0
- package/dist/kernel/publishing.js +16 -0
- package/dist/{cloudflare/r2Media.d.ts → kernel/r2-media.d.ts} +4 -5
- package/dist/kernel/r2-media.js +78 -0
- package/dist/kernel/rest-dispatch.js +38 -0
- package/dist/kernel/rest-router.js +63 -0
- package/dist/kernel/rest.d.ts +58 -0
- package/dist/kernel/rest.js +41 -0
- package/dist/kernel/scalars.d.ts +6 -0
- package/dist/kernel/scalars.js +43 -0
- package/dist/kernel/search.js +5 -0
- package/dist/{core/site.d.ts → kernel/site-types.d.ts} +38 -9
- package/dist/kernel/site-types.js +1 -0
- package/dist/kernel/site.d.ts +41 -0
- package/dist/kernel/site.js +32 -0
- package/dist/kernel/store.d.ts +165 -0
- package/dist/kernel/store.js +257 -0
- package/dist/kernel/surface.d.ts +10 -0
- package/dist/kernel/surface.js +19 -0
- package/dist/kernel/sweep.d.ts +17 -0
- package/dist/kernel/sweep.js +27 -0
- package/dist/kernel/translations.d.ts +1 -0
- package/dist/kernel/translations.js +13 -0
- package/dist/kernel/user-caller.d.ts +31 -0
- package/dist/kernel/user-caller.js +67 -0
- package/dist/kernel/user-field-name.js +3 -0
- package/dist/kernel/user-fields.d.ts +34 -0
- package/dist/kernel/user-fields.js +71 -0
- package/dist/kernel/validation.d.ts +15 -0
- package/dist/kernel/validation.js +54 -0
- package/dist/kernel/web-gateway.js +68 -0
- package/dist/kernel/web-head.js +15 -0
- package/dist/kernel/web-response.js +8 -0
- package/dist/kernel/web.d.ts +75 -0
- package/dist/kernel/web.js +155 -0
- package/dist/kernel/where.js +27 -0
- package/dist/testing/index.d.ts +1 -37
- package/dist/testing/index.js +1 -43
- package/dist/usecase/adminBindings.js +142 -0
- package/dist/usecase/adminDescriptors.js +153 -0
- package/dist/usecase/generate.js +164 -0
- package/dist/usecase/handlers.js +21 -0
- package/dist/usecase/mcp-media.js +17 -0
- package/dist/usecase/mcp.js +96 -0
- package/dist/usecase/paging.js +72 -0
- package/dist/usecase/publishing.js +63 -0
- package/dist/usecase/refusals.js +27 -0
- package/dist/usecase/rest.js +54 -0
- package/dist/usecase/search.js +7 -0
- package/dist/usecase/site.js +40 -0
- package/dist/usecase/stores.js +62 -0
- package/dist/usecase/translations.js +78 -0
- package/dist/usecase/ttl.js +20 -0
- package/dist/usecase/validation.js +132 -0
- package/dist/usecase/web.js +22 -0
- package/docs/examples/README.md +31 -16
- package/docs/examples/app-shell/README.md +48 -0
- package/docs/examples/app-shell/package.json +34 -0
- package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
- package/docs/examples/app-shell/smoke-kit.mjs +100 -0
- package/docs/examples/app-shell/src/admin.ts +10 -0
- package/docs/examples/app-shell/src/auth.ts +55 -0
- package/docs/examples/app-shell/src/handlers.ts +5 -0
- package/docs/examples/app-shell/src/index.ts +4 -0
- package/docs/examples/app-shell/src/routes.ts +13 -0
- package/docs/examples/app-shell/src/schedule.ts +8 -0
- package/docs/examples/app-shell/src/service.ts +70 -0
- package/docs/examples/app-shell/src/sign-in.ts +41 -0
- package/docs/examples/app-shell/src/signup.ts +8 -0
- package/docs/examples/{reference-service → app-shell}/tsconfig.json +2 -1
- package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
- package/docs/examples/app-shell/wrangler.jsonc +61 -0
- package/docs/examples/club-events/README.md +60 -0
- package/docs/examples/club-events/manifests/club-events.yaml +225 -0
- package/docs/examples/club-events/smoke.mjs +121 -0
- package/docs/examples/club-events/src/handlers.ts +25 -0
- package/docs/examples/club-events/src/signup.ts +9 -0
- package/docs/examples/generated-web/README.md +74 -0
- package/docs/examples/generated-web/posts.yaml +38 -0
- package/docs/examples/generated-web/seed.sql +6 -0
- package/docs/examples/generated-web/src/worker.ts +43 -0
- package/docs/examples/generated-web/tsconfig.json +8 -0
- package/docs/examples/generated-web/wrangler.jsonc +7 -0
- package/docs/examples/purchasing/.dev.vars.example +6 -0
- package/docs/examples/purchasing/README.md +90 -0
- package/docs/examples/purchasing/manifests/purchasing.yaml +341 -0
- package/docs/examples/purchasing/seed.sql +4 -0
- package/docs/examples/purchasing/smoke.mjs +171 -0
- package/docs/examples/purchasing/src/admin.ts +12 -0
- package/docs/examples/purchasing/src/handlers.ts +33 -0
- package/docs/examples/purchasing/src/notify.ts +29 -0
- package/docs/examples/purchasing/src/requests-page.ts +57 -0
- package/docs/examples/purchasing/src/routes.ts +53 -0
- package/docs/examples/purchasing/src/schedule.ts +31 -0
- package/docs/examples/purchasing/src/signup.ts +5 -0
- package/docs/examples/purchasing/src/supplier.ts +32 -0
- package/docs/examples/purchasing/wrangler.jsonc +68 -0
- package/docs/examples/recipes/README.md +58 -0
- package/docs/examples/recipes/manifests/recipes.yaml +75 -0
- package/docs/examples/recipes/smoke.mjs +102 -0
- package/docs/examples/recipes/src/media.ts +13 -0
- package/docs/examples/recipes/src/pages.ts +99 -0
- package/docs/examples/recipes/src/routes.ts +71 -0
- package/docs/examples/recipes/src/site-config.ts +12 -0
- package/docs/examples/recipes/wrangler.jsonc +73 -0
- package/docs/handbook/cloudflare/authentication.md +142 -212
- package/docs/handbook/cloudflare/chatgpt-sites.md +4 -113
- package/docs/handbook/cloudflare/deploy-and-operate.md +20 -106
- package/docs/handbook/cloudflare/media-r2.md +62 -133
- package/docs/handbook/cloudflare/service-entry.md +180 -116
- package/docs/handbook/concepts/authorization.md +10 -123
- package/docs/handbook/concepts/four-atoms.md +9 -92
- package/docs/handbook/concepts/lifecycle-and-locales.md +9 -80
- package/docs/handbook/concepts/mcp-and-agents.md +10 -141
- package/docs/handbook/concepts/procedures-and-triggers.md +5 -162
- package/docs/handbook/concepts/runtime-and-adapters.md +15 -224
- package/docs/handbook/concepts/views.md +10 -109
- package/docs/handbook/examples/hub.md +2 -18
- package/docs/handbook/guides/adapter-guide.md +11 -0
- package/docs/handbook/guides/admin-extensions.md +12 -183
- package/docs/handbook/guides/admin-ui.md +5 -164
- package/docs/handbook/guides/agent-setup.md +5 -18
- package/docs/handbook/guides/email.md +86 -0
- package/docs/handbook/guides/mcp-apps.md +44 -0
- package/docs/handbook/guides/native-admin.md +298 -0
- package/docs/handbook/guides/native-execution.md +132 -0
- package/docs/handbook/guides/oauth.md +105 -0
- package/docs/handbook/guides/postgres-adapters.md +56 -0
- package/docs/handbook/guides/public-pages.md +53 -0
- package/docs/handbook/guides/size-and-startup.md +9 -0
- package/docs/handbook/guides/typed-queries.md +39 -102
- package/docs/handbook/navigation.json +164 -31
- package/docs/handbook/reference/admin-descriptors.md +88 -0
- package/docs/handbook/reference/authorization.md +44 -52
- package/docs/handbook/reference/describe.md +56 -0
- package/docs/handbook/reference/diagnostics.md +15 -79
- package/docs/handbook/reference/features.md +45 -53
- package/docs/handbook/reference/manifest.md +6 -69
- package/docs/handbook/reference/procedure.md +9 -118
- package/docs/handbook/reference/schema.md +75 -185
- package/docs/handbook/reference/site-config.md +5 -65
- package/docs/handbook/reference/surface.md +279 -97
- package/docs/handbook/reference/trigger.md +24 -93
- package/docs/handbook/reference/view.md +32 -160
- package/docs/handbook/releases/index.md +48 -13
- package/docs/handbook/start/overview.md +9 -56
- package/docs/handbook/start/project-and-cli.md +40 -149
- package/docs/handbook/start/quickstart-worker.md +38 -116
- package/docs/skills/develop/SKILL.md +34 -123
- package/docs/skills/develop/mcp-app.md +37 -77
- package/docs/skills/integrate/SKILL.md +42 -84
- package/docs/skills/media-gc/SKILL.md +14 -3
- package/docs/skills/provision/SKILL.md +25 -91
- package/docs/skills/update/SKILL.md +19 -43
- package/docs/source/scripts/postgres-adapter.ts +101 -0
- package/docs/upgrade-0.1-to-0.2.md +25 -9
- package/package.json +96 -112
- package/skills/.keep +0 -0
- package/skills/README.md +72 -0
- package/skills/mantle/SKILL.md +135 -0
- package/skills/mantle/references/local-testing.md +11 -0
- package/skills/mantle/references/web.md +41 -0
- package/skills/mantle/references/website.md +47 -0
- package/dist/admin/consent.d.ts +0 -17
- package/dist/admin/consent.d.ts.map +0 -1
- package/dist/admin/consent.js +0 -17
- package/dist/admin/consent.js.map +0 -1
- package/dist/admin/createAdminSurface.d.ts +0 -25
- package/dist/admin/createAdminSurface.d.ts.map +0 -1
- package/dist/admin/createAdminSurface.js +0 -635
- package/dist/admin/createAdminSurface.js.map +0 -1
- package/dist/admin/design.d.ts +0 -7
- package/dist/admin/design.d.ts.map +0 -1
- package/dist/admin/design.js +0 -18
- package/dist/admin/design.js.map +0 -1
- package/dist/admin/developerConsole.d.ts +0 -267
- package/dist/admin/developerConsole.d.ts.map +0 -1
- package/dist/admin/developerConsole.js +0 -136
- package/dist/admin/developerConsole.js.map +0 -1
- package/dist/admin/extensions.d.ts +0 -290
- package/dist/admin/extensions.d.ts.map +0 -1
- package/dist/admin/extensions.js +0 -532
- package/dist/admin/extensions.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 -7
- package/dist/admin/index.d.ts.map +0 -1
- package/dist/admin/index.js +0 -7
- package/dist/admin/index.js.map +0 -1
- package/dist/admin/procedureFlow.d.ts +0 -38
- package/dist/admin/procedureFlow.d.ts.map +0 -1
- package/dist/admin/procedureFlow.js +0 -188
- package/dist/admin/procedureFlow.js.map +0 -1
- package/dist/auth/ConsoleEmailSender.d.ts +0 -15
- package/dist/auth/ConsoleEmailSender.d.ts.map +0 -1
- package/dist/auth/ConsoleEmailSender.js +0 -19
- package/dist/auth/ConsoleEmailSender.js.map +0 -1
- package/dist/auth/appleClientSecret.d.ts +0 -75
- package/dist/auth/appleClientSecret.d.ts.map +0 -1
- package/dist/auth/appleClientSecret.js +0 -116
- package/dist/auth/appleClientSecret.js.map +0 -1
- package/dist/auth/buildAuth.d.ts +0 -4568
- package/dist/auth/buildAuth.d.ts.map +0 -1
- package/dist/auth/buildAuth.js +0 -312
- package/dist/auth/buildAuth.js.map +0 -1
- package/dist/auth/callerResolver.d.ts +0 -52
- package/dist/auth/callerResolver.d.ts.map +0 -1
- package/dist/auth/callerResolver.js +0 -52
- 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 -504
- package/dist/auth/createMantleAuth.js.map +0 -1
- package/dist/auth/db.d.ts +0 -18
- package/dist/auth/db.d.ts.map +0 -1
- package/dist/auth/db.js +0 -27
- 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 -21
- package/dist/bun/index.d.ts.map +0 -1
- package/dist/bun/index.js +0 -46
- package/dist/bun/index.js.map +0 -1
- package/dist/cli/emitModule.d.ts +0 -7
- package/dist/cli/emitModule.d.ts.map +0 -1
- package/dist/cli/emitModule.js +0 -127
- package/dist/cli/emitModule.js.map +0 -1
- package/dist/cli/generate.d.ts +0 -8
- package/dist/cli/generate.d.ts.map +0 -1
- package/dist/cli/generate.js +0 -391
- package/dist/cli/generate.js.map +0 -1
- package/dist/cli/main.d.ts +0 -3
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -21
- package/dist/cli/main.js.map +0 -1
- package/dist/cli/preset.d.ts +0 -18
- package/dist/cli/preset.d.ts.map +0 -1
- package/dist/cli/preset.js +0 -405
- package/dist/cli/preset.js.map +0 -1
- package/dist/cloudflare/index.d.ts +0 -25
- package/dist/cloudflare/index.d.ts.map +0 -1
- package/dist/cloudflare/index.js +0 -16
- 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 -53
- 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 -24
- package/dist/core/driver.d.ts.map +0 -1
- package/dist/core/driver.js +0 -2
- package/dist/core/driver.js.map +0 -1
- package/dist/core/email.d.ts +0 -17
- package/dist/core/email.d.ts.map +0 -1
- package/dist/core/email.js +0 -2
- package/dist/core/email.js.map +0 -1
- package/dist/core/index.d.ts +0 -16
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -16
- package/dist/core/index.js.map +0 -1
- package/dist/core/invocation.d.ts +0 -66
- package/dist/core/invocation.d.ts.map +0 -1
- package/dist/core/invocation.js +0 -3
- package/dist/core/invocation.js.map +0 -1
- package/dist/core/observation.d.ts +0 -3
- package/dist/core/observation.d.ts.map +0 -1
- package/dist/core/observation.js +0 -10
- package/dist/core/observation.js.map +0 -1
- package/dist/core/runtime/auth.d.ts +0 -9
- package/dist/core/runtime/auth.d.ts.map +0 -1
- package/dist/core/runtime/auth.js +0 -39
- package/dist/core/runtime/auth.js.map +0 -1
- package/dist/core/runtime/createRuntime.d.ts +0 -23
- package/dist/core/runtime/createRuntime.d.ts.map +0 -1
- package/dist/core/runtime/createRuntime.js +0 -214
- package/dist/core/runtime/createRuntime.js.map +0 -1
- package/dist/core/runtime/verifyPlan.d.ts +0 -34
- package/dist/core/runtime/verifyPlan.d.ts.map +0 -1
- package/dist/core/runtime/verifyPlan.js +0 -301
- package/dist/core/runtime/verifyPlan.js.map +0 -1
- package/dist/core/service.d.ts +0 -45
- package/dist/core/service.d.ts.map +0 -1
- package/dist/core/service.js +0 -2
- package/dist/core/service.js.map +0 -1
- package/dist/core/sessionUser.d.ts +0 -14
- package/dist/core/sessionUser.d.ts.map +0 -1
- package/dist/core/sessionUser.js +0 -4
- package/dist/core/sessionUser.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 -67
- package/dist/core/sql/allowlist.d.ts.map +0 -1
- package/dist/core/sql/allowlist.js +0 -737
- 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 -123
- package/dist/core/sql/policy.d.ts.map +0 -1
- package/dist/core/sql/policy.js +0 -398
- 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 -68
- package/dist/core/sql/run.d.ts.map +0 -1
- package/dist/core/sql/run.js +0 -384
- package/dist/core/sql/run.js.map +0 -1
- package/dist/core/store/createStore.d.ts +0 -49
- package/dist/core/store/createStore.d.ts.map +0 -1
- package/dist/core/store/createStore.js +0 -227
- package/dist/core/store/createStore.js.map +0 -1
- package/dist/core/store/cursor.d.ts +0 -4
- package/dist/core/store/cursor.d.ts.map +0 -1
- package/dist/core/store/cursor.js +0 -22
- package/dist/core/store/cursor.js.map +0 -1
- package/dist/core/store/json.d.ts +0 -80
- package/dist/core/store/json.d.ts.map +0 -1
- package/dist/core/store/json.js +0 -342
- package/dist/core/store/json.js.map +0 -1
- package/dist/core/store.d.ts +0 -160
- package/dist/core/store.d.ts.map +0 -1
- package/dist/core/store.js +0 -2
- package/dist/core/store.js.map +0 -1
- package/dist/core/wire.d.ts +0 -20
- package/dist/core/wire.d.ts.map +0 -1
- package/dist/core/wire.js +0 -84
- package/dist/core/wire.js.map +0 -1
- package/dist/core/withCaller.d.ts +0 -24
- package/dist/core/withCaller.d.ts.map +0 -1
- package/dist/core/withCaller.js +0 -35
- package/dist/core/withCaller.js.map +0 -1
- package/dist/d1/adapter.d.ts +0 -12
- package/dist/d1/adapter.d.ts.map +0 -1
- package/dist/d1/adapter.js +0 -23
- package/dist/d1/adapter.js.map +0 -1
- package/dist/d1/codec.d.ts +0 -14
- package/dist/d1/codec.d.ts.map +0 -1
- package/dist/d1/codec.js +0 -136
- package/dist/d1/codec.js.map +0 -1
- package/dist/d1/compile/index.d.ts +0 -9
- package/dist/d1/compile/index.d.ts.map +0 -1
- package/dist/d1/compile/index.js +0 -9
- package/dist/d1/compile/index.js.map +0 -1
- package/dist/d1/dialect.d.ts +0 -4
- package/dist/d1/dialect.d.ts.map +0 -1
- package/dist/d1/dialect.js +0 -13
- package/dist/d1/dialect.js.map +0 -1
- package/dist/d1/executor.d.ts +0 -15
- package/dist/d1/executor.d.ts.map +0 -1
- package/dist/d1/executor.js +0 -96
- package/dist/d1/executor.js.map +0 -1
- package/dist/d1/index.d.ts +0 -6
- package/dist/d1/index.d.ts.map +0 -1
- package/dist/d1/index.js +0 -6
- package/dist/d1/index.js.map +0 -1
- package/dist/d1/lower.d.ts +0 -8
- package/dist/d1/lower.d.ts.map +0 -1
- package/dist/d1/lower.js +0 -167
- package/dist/d1/lower.js.map +0 -1
- package/dist/d1/media.d.ts +0 -5
- package/dist/d1/media.d.ts.map +0 -1
- package/dist/d1/media.js +0 -157
- package/dist/d1/media.js.map +0 -1
- package/dist/d1/migrations.d.ts +0 -12
- package/dist/d1/migrations.d.ts.map +0 -1
- package/dist/d1/migrations.js +0 -111
- package/dist/d1/migrations.js.map +0 -1
- package/dist/d1/print.d.ts +0 -28
- package/dist/d1/print.d.ts.map +0 -1
- package/dist/d1/print.js +0 -54
- package/dist/d1/print.js.map +0 -1
- package/dist/d1/site.d.ts +0 -17
- package/dist/d1/site.d.ts.map +0 -1
- package/dist/d1/site.js +0 -63
- package/dist/d1/site.js.map +0 -1
- package/dist/d1/storage.d.ts +0 -34
- package/dist/d1/storage.d.ts.map +0 -1
- package/dist/d1/storage.js +0 -288
- package/dist/d1/storage.js.map +0 -1
- package/dist/d1/tz.d.ts +0 -21
- package/dist/d1/tz.d.ts.map +0 -1
- package/dist/d1/tz.js +0 -54
- package/dist/d1/tz.js.map +0 -1
- package/dist/d1/validator.d.ts +0 -10
- package/dist/d1/validator.d.ts.map +0 -1
- package/dist/d1/validator.js +0 -33
- package/dist/d1/validator.js.map +0 -1
- package/dist/mcp/apps.d.ts +0 -43
- package/dist/mcp/apps.d.ts.map +0 -1
- package/dist/mcp/apps.js +0 -57
- package/dist/mcp/apps.js.map +0 -1
- package/dist/mcp/catalog.d.ts +0 -55
- package/dist/mcp/catalog.d.ts.map +0 -1
- package/dist/mcp/catalog.js +0 -81
- package/dist/mcp/catalog.js.map +0 -1
- package/dist/mcp/createMcpSurface.d.ts +0 -60
- package/dist/mcp/createMcpSurface.d.ts.map +0 -1
- package/dist/mcp/createMcpSurface.js +0 -182
- package/dist/mcp/createMcpSurface.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -4
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -4
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/media.d.ts +0 -9
- package/dist/mcp/media.d.ts.map +0 -1
- package/dist/mcp/media.js +0 -33
- package/dist/mcp/media.js.map +0 -1
- package/dist/postgres/adapter.d.ts +0 -23
- package/dist/postgres/adapter.d.ts.map +0 -1
- package/dist/postgres/adapter.js +0 -50
- 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 -109
- package/dist/postgres/driver.d.ts.map +0 -1
- package/dist/postgres/driver.js +0 -186
- package/dist/postgres/driver.js.map +0 -1
- package/dist/postgres/executor.d.ts +0 -28
- package/dist/postgres/executor.d.ts.map +0 -1
- package/dist/postgres/executor.js +0 -96
- package/dist/postgres/executor.js.map +0 -1
- package/dist/postgres/index.d.ts +0 -8
- package/dist/postgres/index.d.ts.map +0 -1
- package/dist/postgres/index.js +0 -8
- 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 -152
- 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 -108
- package/dist/postgres/print.js.map +0 -1
- package/dist/postgres/session.d.ts +0 -9
- package/dist/postgres/session.d.ts.map +0 -1
- package/dist/postgres/session.js +0 -111
- package/dist/postgres/session.js.map +0 -1
- package/dist/postgres/storage.d.ts +0 -32
- package/dist/postgres/storage.d.ts.map +0 -1
- package/dist/postgres/storage.js +0 -283
- package/dist/postgres/storage.js.map +0 -1
- package/dist/postgres/validator.d.ts +0 -13
- package/dist/postgres/validator.d.ts.map +0 -1
- package/dist/postgres/validator.js +0 -53
- 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 -153
- 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 -44
- package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +0 -1
- package/dist/spec/domain/service/SchemaAdminUiChecker.js +0 -333
- 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 -58
- 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 -287
- 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 -301
- 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 -14
- package/dist/testing/cases/corpus.d.ts.map +0 -1
- package/dist/testing/cases/corpus.js +0 -93
- package/dist/testing/cases/corpus.js.map +0 -1
- package/dist/testing/cases/policy.d.ts +0 -87
- package/dist/testing/cases/policy.d.ts.map +0 -1
- package/dist/testing/cases/policy.js +0 -143
- 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 -34
- 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 -51
- package/dist/testing/cases/report-view.js.map +0 -1
- package/dist/testing/cases/requisition.d.ts +0 -4
- package/dist/testing/cases/requisition.d.ts.map +0 -1
- package/dist/testing/cases/requisition.js +0 -38
- package/dist/testing/cases/requisition.js.map +0 -1
- package/dist/testing/cases/search-places.d.ts +0 -4
- package/dist/testing/cases/search-places.d.ts.map +0 -1
- package/dist/testing/cases/search-places.js +0 -60
- package/dist/testing/cases/search-places.js.map +0 -1
- package/dist/testing/cases/stock.d.ts +0 -4
- package/dist/testing/cases/stock.d.ts.map +0 -1
- package/dist/testing/cases/stock.js +0 -35
- package/dist/testing/cases/stock.js.map +0 -1
- package/dist/testing/cases/store.d.ts +0 -4
- package/dist/testing/cases/store.d.ts.map +0 -1
- package/dist/testing/cases/store.js +0 -100
- package/dist/testing/cases/store.js.map +0 -1
- package/dist/testing/harness.d.ts +0 -94
- package/dist/testing/harness.d.ts.map +0 -1
- package/dist/testing/harness.js +0 -168
- package/dist/testing/harness.js.map +0 -1
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js.map +0 -1
- package/dist/testing/report.d.ts +0 -15
- package/dist/testing/report.d.ts.map +0 -1
- package/dist/testing/report.js +0 -22
- package/dist/testing/report.js.map +0 -1
- package/dist/web/createRestSurface.d.ts +0 -7
- package/dist/web/createRestSurface.d.ts.map +0 -1
- package/dist/web/createRestSurface.js +0 -41
- package/dist/web/createRestSurface.js.map +0 -1
- package/dist/web/index.d.ts +0 -2
- package/dist/web/index.d.ts.map +0 -1
- package/dist/web/index.js +0 -2
- package/dist/web/index.js.map +0 -1
- package/docs/adr/0001-four-atom-manifest-model.md +0 -440
- package/docs/adr/0002-closed-enums-for-bindings.md +0 -253
- package/docs/adr/0007-ai-as-primary-author.md +0 -473
- package/docs/adr/0008-structured-diagnostic-shape.md +0 -338
- package/docs/adr/0009-consumer-supplied-manifests.md +0 -149
- package/docs/adr/0010-locale-and-translates.md +0 -453
- package/docs/adr/0011-adapter-port-spec.md +0 -281
- package/docs/adr/0012-views-as-public-rest.md +0 -161
- package/docs/adr/0013-agent-provisioned-consumer-projects.md +0 -154
- package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +0 -939
- package/docs/adr/0016-site-semantic-layer.md +0 -70
- package/docs/adr/0017-media-multi-variant-agent-side-optimization.md +0 -181
- package/docs/adr/0018-core-starters-repository-boundary.md +0 -179
- package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +0 -244
- package/docs/adr/0020-builtin-handler-contracts-and-matched-upsert.md +0 -199
- package/docs/adr/0021-retire-starter-scaffolding.md +0 -30
- package/docs/adr/0022-caller-observed-version-occ.md +0 -212
- package/docs/adr/0023-port-failure-contract.md +0 -69
- package/docs/adr/0024-manifest-native-schema-tables.md +0 -264
- package/docs/adr/0025-reserved-native-columns-and-published-only-public-views.md +0 -105
- package/docs/adr/0026-progressive-generate.md +0 -36
- package/docs/adr/0027-scheduled-procedure-triggers.md +0 -31
- package/docs/adr/0028-schema-ttl-expiry.md +0 -33
- package/docs/adr/0029-mcp-apps-interaction-contracts.md +0 -324
- package/docs/adr/0030-store.md +0 -40
- package/docs/adr/0031-host-cloud-core-contract.md +0 -102
- package/docs/adr/0032-store-centric-core-and-service-contract.md +0 -384
- package/docs/adr/0033-storage-converges-to-the-plan.md +0 -92
- package/docs/adr/0034-store-is-authored-as-sql.md +0 -192
- package/docs/adr/0035-sql-dialects.md +0 -154
- package/docs/adr/0036-host-and-dialect.md +0 -65
- package/docs/adr/0037-postgresql-is-the-reference-dialect.md +0 -125
- package/docs/adr/0038-bun-native-host.md +0 -63
- package/docs/adr/0039-postgresql-is-native.md +0 -130
- package/docs/adr/README.md +0 -98
- package/docs/adr/adr-lite-1376-admin-extensions.md +0 -330
- 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 -498
- package/docs/examples/commerce.md +0 -254
- package/docs/examples/guarded-api.md +0 -238
- package/docs/examples/intake-hooks.md +0 -237
- package/docs/examples/intake.md +0 -127
- package/docs/examples/legal-documents.md +0 -218
- package/docs/examples/procurement.md +0 -226
- package/docs/examples/publication.md +0 -211
- package/docs/examples/reference-service/.mantle/generated/mantle.ts +0 -174
- package/docs/examples/reference-service/.mantle/generated/plan.json +0 -1936
- package/docs/examples/reference-service/README.md +0 -33
- package/docs/examples/reference-service/manifests/catalog.yaml +0 -103
- package/docs/examples/reference-service/manifests/orders.yaml +0 -120
- package/docs/examples/reference-service/mantle.config.json +0 -1
- package/docs/examples/reference-service/package.json +0 -27
- package/docs/examples/reference-service/smoke.mjs +0 -160
- package/docs/examples/reference-service/src/handlers.ts +0 -36
- package/docs/examples/reference-service/src/index.ts +0 -33
- package/docs/examples/reference-service/src/service.ts +0 -78
- package/docs/examples/reference-service/wrangler.jsonc +0 -26
- package/docs/examples/reservation.md +0 -142
- /package/docs/examples/{reference-service → app-shell}/.dev.vars.example +0 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
// src/build/spec/domain/model/ManifestGrammar.ts
|
|
2
|
+
function resolveLocalizedText(value, preferred, canonical2) {
|
|
3
|
+
if (value == null) return null;
|
|
4
|
+
if (typeof value === "string") return value;
|
|
5
|
+
if (Object.prototype.hasOwnProperty.call(value, preferred)) {
|
|
6
|
+
return value[preferred];
|
|
7
|
+
}
|
|
8
|
+
if (canonical2 && Object.prototype.hasOwnProperty.call(value, canonical2)) {
|
|
9
|
+
return value[canonical2];
|
|
10
|
+
}
|
|
11
|
+
const firstKey = Object.keys(value)[0];
|
|
12
|
+
return firstKey !== void 0 ? value[firstKey] : null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// src/build/spec/domain/service/McpToolNaming.ts
|
|
16
|
+
function mcpToolNameSegment(name) {
|
|
17
|
+
return name.toLowerCase().replace(/-/g, "_");
|
|
18
|
+
}
|
|
19
|
+
function mcpTools(plan, surface, locale = "en") {
|
|
20
|
+
const text = (t) => resolveLocalizedText(t, locale, "en") ?? void 0;
|
|
21
|
+
const tools = /* @__PURE__ */ new Map();
|
|
22
|
+
const add = (tool) => {
|
|
23
|
+
const prior = tools.get(tool.name);
|
|
24
|
+
if (prior && (prior.kind !== tool.kind || prior.source !== tool.source)) throw new TypeError(`MCP tool '${tool.name}' comes from both '${prior.source}' and '${tool.source}'.`);
|
|
25
|
+
tools.set(tool.name, tool);
|
|
26
|
+
};
|
|
27
|
+
for (const t of Object.values(plan.triggers)) {
|
|
28
|
+
if (t.source.kind !== "mcp" || t.source.surface !== surface) continue;
|
|
29
|
+
const p = plan.procedures[t.procedure];
|
|
30
|
+
const title = text(p.title);
|
|
31
|
+
add({
|
|
32
|
+
name: mcpToolNameSegment(t.procedure),
|
|
33
|
+
kind: "procedure",
|
|
34
|
+
source: t.procedure,
|
|
35
|
+
...title ? { title } : {},
|
|
36
|
+
description: text(p.description) ?? title ?? t.procedure,
|
|
37
|
+
inputSchema: p.input,
|
|
38
|
+
// structuredContent must be an object
|
|
39
|
+
...p.output.type === "object" ? { outputSchema: p.output } : {},
|
|
40
|
+
...p.mcp ? { annotations: p.mcp } : {},
|
|
41
|
+
requires: p.requires
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
for (const [name, v] of Object.entries(plan.views)) {
|
|
45
|
+
if (v.surface !== surface) continue;
|
|
46
|
+
const props = v.input?.properties ?? {};
|
|
47
|
+
if ("limit" in props || "cursor" in props) throw new TypeError(`View '${name}' declares an input named limit or cursor; the MCP tool reserves both for paging.`);
|
|
48
|
+
const title = text(v.title);
|
|
49
|
+
add({
|
|
50
|
+
name: mcpToolNameSegment(name),
|
|
51
|
+
kind: "view",
|
|
52
|
+
source: name,
|
|
53
|
+
...title ? { title } : {},
|
|
54
|
+
description: text(v.description) ?? title ?? name,
|
|
55
|
+
inputSchema: { type: "object", properties: { ...props, limit: { type: "integer", minimum: 1, maximum: 500 }, cursor: { type: "string" } }, ...v.input?.required ? { required: v.input.required } : {} },
|
|
56
|
+
annotations: { readOnlyHint: true },
|
|
57
|
+
requires: v.requires
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return [...tools.values()];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// src/build/spec/domain/service/PlanFingerprint.ts
|
|
64
|
+
function canonical(v) {
|
|
65
|
+
if (Array.isArray(v)) return `[${v.map(canonical).join(",")}]`;
|
|
66
|
+
if (v && typeof v === "object")
|
|
67
|
+
return `{${Object.keys(v).sort().filter((k) => v[k] !== void 0).map((k) => `${JSON.stringify(k)}:${canonical(v[k])}`).join(",")}}`;
|
|
68
|
+
return JSON.stringify(v) ?? "null";
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// src/domain/generated-tools.ts
|
|
72
|
+
var publishingTransitions = [["publish", ["draft"], "published"], ["unpublish", ["published", "archived"], "draft"], ["archive", ["draft", "published"], "archived"]];
|
|
73
|
+
var publishingInput = { type: "object", properties: { id: { type: "string", minLength: 1 }, expectedVersion: { type: "integer", minimum: 1 } }, required: ["id", "expectedVersion"], additionalProperties: false };
|
|
74
|
+
function mediaDefinitions() {
|
|
75
|
+
const define = (name, description, inputSchema, action, readOnlyHint = false) => ({ name, description, inputSchema, action, annotations: { readOnlyHint, destructiveHint: action === "delete", openWorldHint: true } });
|
|
76
|
+
const string = { type: "string" };
|
|
77
|
+
const texts = { alt: { type: "string", maxLength: 1e3 }, caption: { type: "string", maxLength: 1e3 } };
|
|
78
|
+
const input = (properties, required = []) => ({ type: "object", properties, required, additionalProperties: false });
|
|
79
|
+
return [
|
|
80
|
+
define("get_media_upload_policy", "Read declared image purpose MIME slots and byte caps before preparing variants or requesting an upload. Optimization runs locally, never in the host.", input({}), "policy", true),
|
|
81
|
+
define("create_media_upload", "Create short-lived PUT capabilities for image variants. Read site media purpose policy first; optimize images locally. Obtain attachment bytes yourself, then PUT each variant with its requiredHeaders and call commit_media_upload. Never store upload URLs as published images or ask the user to run terminal commands.", input({ filename: { type: "string", maxLength: 255 }, purpose: string, variants: { type: "array", minItems: 1, items: input({ mimeType: string, byteSize: { type: "integer", minimum: 1 }, role: { type: "string", enum: ["primary", "alternate", "fallback"] } }, ["mimeType", "byteSize", "role"]) }, ...texts }, ["filename", "purpose", "variants"]), "create"),
|
|
82
|
+
define("commit_media_upload", "Verify all uploaded variants and commit one permanent media asset. Store the returned asset id in fields referencing media_assets.id, never a temporary upload URL. Unknown or expired upload groups require a new create_media_upload.", input({ uploadGroupId: string, ...texts }, ["uploadGroupId"]), "commit"),
|
|
83
|
+
define("list_media_assets", "List committed image assets, newest first, with their permanent variants and alt/caption. Search matches id, alt or caption; reuse only a returned cursor.", input({ limit: { type: "integer", minimum: 1, maximum: 500 }, cursor: string, search: string }), "list", true),
|
|
84
|
+
define("get_media_asset", "Read one committed media asset and its permanent variant URLs.", input({ id: string }, ["id"]), "get", true),
|
|
85
|
+
define("update_media_asset", "Update committed asset alt or caption; omitted fields remain unchanged and empty strings clear text.", input({ id: string, ...texts }, ["id"]), "update"),
|
|
86
|
+
define("delete_media_asset", "Delete an asset's objects and library record. Check application references first. A partial failure can be retried using the same id.", input({ id: string }, ["id"]), "delete")
|
|
87
|
+
];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// src/domain/describe/targets.ts
|
|
91
|
+
function inspectSql(value) {
|
|
92
|
+
const schemas = /* @__PURE__ */ new Set(), readSchemas = /* @__PURE__ */ new Set();
|
|
93
|
+
const writes = [];
|
|
94
|
+
let readOnly = true;
|
|
95
|
+
const walk = (v) => {
|
|
96
|
+
if (!v || typeof v !== "object") return;
|
|
97
|
+
const n = v;
|
|
98
|
+
if (n.RangeVar?.mantle === "table") {
|
|
99
|
+
schemas.add(n.RangeVar.relname.toLowerCase());
|
|
100
|
+
readSchemas.add(n.RangeVar.relname.toLowerCase());
|
|
101
|
+
}
|
|
102
|
+
for (const kind of ["InsertStmt", "UpdateStmt", "DeleteStmt"]) if (n[kind]) {
|
|
103
|
+
readOnly = false;
|
|
104
|
+
if (n[kind].relation?.relname) writes.push({ schema: n[kind].relation.relname.toLowerCase(), operation: kind === "InsertStmt" ? "create" : kind === "UpdateStmt" ? "update" : "delete" });
|
|
105
|
+
if (n[kind].relation?.relname) {
|
|
106
|
+
schemas.add(n[kind].relation.relname.toLowerCase());
|
|
107
|
+
if (kind !== "InsertStmt") readSchemas.add(n[kind].relation.relname.toLowerCase());
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
Object.values(n).forEach(walk);
|
|
111
|
+
};
|
|
112
|
+
walk(value);
|
|
113
|
+
return { schemas: [...schemas].sort(), readSchemas: [...readSchemas].sort(), readOnly, writes };
|
|
114
|
+
}
|
|
115
|
+
function mergeRestrict(policies, conjunctive) {
|
|
116
|
+
return Object.fromEntries([...new Set(policies.flatMap((p) => Object.keys(p)))].sort().map((schema) => {
|
|
117
|
+
const rows = policies.map((p) => p[schema] ?? { terms: [] });
|
|
118
|
+
const terms = [...new Map(rows.flatMap((p) => p.terms).map((t) => [canonical(t), t])).values()].filter((t) => conjunctive || rows.every((p) => p.terms.some((v) => canonical(v) === canonical(t))));
|
|
119
|
+
const owner = rows.find((p) => p.owner)?.owner;
|
|
120
|
+
return [schema, { ...owner && (conjunctive || rows.every((p) => p.owner === owner)) ? { owner } : {}, terms }];
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
function inspectBehavior(plan, ir, opaque, requires, restrict, writes) {
|
|
124
|
+
const inspected = inspectSql(ir);
|
|
125
|
+
if (writes) {
|
|
126
|
+
inspected.writes = [...writes];
|
|
127
|
+
inspected.schemas.push(...writes.map((w) => w.schema));
|
|
128
|
+
inspected.readSchemas.push(...writes.filter((w) => w.operation !== "create").map((w) => w.schema));
|
|
129
|
+
}
|
|
130
|
+
const dependencies = [], policies = [restrict ?? {}];
|
|
131
|
+
const procedures = /* @__PURE__ */ new Set(), hooks = /* @__PURE__ */ new Set();
|
|
132
|
+
const visit = (name) => {
|
|
133
|
+
if (procedures.has(name)) return;
|
|
134
|
+
procedures.add(name);
|
|
135
|
+
const p = plan.procedures[name];
|
|
136
|
+
if (!p) throw new TypeError(`Unknown dependency '${name}'.`);
|
|
137
|
+
dependencies.push({ procedure: name, declaration: p });
|
|
138
|
+
policies.push(p.restrict ?? {});
|
|
139
|
+
opaque ||= "ref" in p.handler;
|
|
140
|
+
const g = inspectSql("sql" in p.handler ? p.handler.sql.stmts : void 0);
|
|
141
|
+
inspected.schemas.push(...g.schemas);
|
|
142
|
+
inspected.readSchemas.push(...g.readSchemas);
|
|
143
|
+
inspected.writes.push(...g.writes);
|
|
144
|
+
inspected.readOnly &&= g.readOnly;
|
|
145
|
+
if (p.requires?.guard) visit(p.requires.guard.procedure);
|
|
146
|
+
};
|
|
147
|
+
if (requires?.guard) visit(requires.guard.procedure);
|
|
148
|
+
for (; ; ) {
|
|
149
|
+
const before = hooks.size;
|
|
150
|
+
for (const [id, t] of Object.entries(plan.triggers).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) {
|
|
151
|
+
if (t.source.kind !== "lifecycle" || hooks.has(id)) continue;
|
|
152
|
+
const source = t.source;
|
|
153
|
+
if (!opaque && !inspected.writes.some((w) => w.schema === source.schema.toLowerCase() && source.on.some((on) => on.endsWith(`_${w.operation}`)))) continue;
|
|
154
|
+
hooks.add(id);
|
|
155
|
+
dependencies.push({ trigger: id, source });
|
|
156
|
+
visit(t.procedure);
|
|
157
|
+
}
|
|
158
|
+
if (hooks.size === before) break;
|
|
159
|
+
}
|
|
160
|
+
const related = (names) => {
|
|
161
|
+
const all = new Set(opaque ? Object.keys(plan.schemas) : names);
|
|
162
|
+
for (const name of all) {
|
|
163
|
+
const parent = plan.schemas[name]?.translates?.parent.toLowerCase();
|
|
164
|
+
if (parent) all.add(parent);
|
|
165
|
+
}
|
|
166
|
+
return [...all].sort();
|
|
167
|
+
};
|
|
168
|
+
return {
|
|
169
|
+
...inspected,
|
|
170
|
+
schemas: related(inspected.schemas),
|
|
171
|
+
readSchemas: related(inspected.readSchemas),
|
|
172
|
+
opaque,
|
|
173
|
+
restrict: mergeRestrict(policies, true),
|
|
174
|
+
dependencies
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
var objectInput = { type: "object", properties: {} };
|
|
178
|
+
var pathTemplate = (path) => path.replace(/\{([^}]+)\}/g, ":$1");
|
|
179
|
+
var adminRoutes = [
|
|
180
|
+
"GET /me",
|
|
181
|
+
"GET /site",
|
|
182
|
+
"GET /collections",
|
|
183
|
+
"GET /views-manifest",
|
|
184
|
+
"GET /operations",
|
|
185
|
+
"GET /webmcp",
|
|
186
|
+
"POST /webmcp/:tool",
|
|
187
|
+
"GET /bootstrap",
|
|
188
|
+
"GET /views/:name/export",
|
|
189
|
+
"GET /views/:name",
|
|
190
|
+
"GET /developer/views/:name",
|
|
191
|
+
"POST /operations/:name",
|
|
192
|
+
"GET /developer-console",
|
|
193
|
+
"GET /collections/:name/statistics",
|
|
194
|
+
"GET /entries",
|
|
195
|
+
"GET /entries/export",
|
|
196
|
+
"GET /entries/:id",
|
|
197
|
+
"POST /entries",
|
|
198
|
+
"PATCH /entries/:id",
|
|
199
|
+
"POST /entries/:id/publish",
|
|
200
|
+
"POST /entries/:id/unpublish",
|
|
201
|
+
"POST /entries/:id/archive",
|
|
202
|
+
"DELETE /entries/:id",
|
|
203
|
+
"GET /site-settings",
|
|
204
|
+
"PATCH /site-settings",
|
|
205
|
+
"POST /media/uploads",
|
|
206
|
+
"POST /media/uploads/:groupId/commit",
|
|
207
|
+
"GET /media",
|
|
208
|
+
"GET /media/:id",
|
|
209
|
+
"PATCH /media/:id",
|
|
210
|
+
"DELETE /media/:id",
|
|
211
|
+
"GET /admin",
|
|
212
|
+
"GET /members",
|
|
213
|
+
"PATCH /admin/:id/role",
|
|
214
|
+
"POST /admin/invitations",
|
|
215
|
+
"DELETE /admin/invitations/:id"
|
|
216
|
+
];
|
|
217
|
+
function targetDefinitions(plan) {
|
|
218
|
+
const out = [];
|
|
219
|
+
const tools = [...mcpTools(plan, "public"), ...mcpTools(plan, "admin")];
|
|
220
|
+
for (const [kind, entries] of [["view", plan.views], ["procedure", plan.procedures]]) {
|
|
221
|
+
for (const [name, p] of Object.entries(entries).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) {
|
|
222
|
+
const view = kind === "view" ? plan.views[name] : void 0;
|
|
223
|
+
const proc = kind === "procedure" ? plan.procedures[name] : void 0;
|
|
224
|
+
const ir = view?.stmts ?? (proc && "sql" in proc.handler ? proc.handler.sql.stmts : void 0);
|
|
225
|
+
const inspected = inspectBehavior(plan, ir, !!proc && "ref" in proc.handler, p.requires, p.restrict);
|
|
226
|
+
const tool = tools.find((t) => t.kind === kind && t.source === name);
|
|
227
|
+
const title = resolveLocalizedText(p.title, "en", "en") ?? name;
|
|
228
|
+
const triggers = Object.entries(plan.triggers).filter(([, t]) => kind === "procedure" && t.procedure === name).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([id, t]) => ({ id, source: t.source }));
|
|
229
|
+
const surfaces = [.../* @__PURE__ */ new Set([
|
|
230
|
+
...view ? [view.surface, "admin", ...view.surface === "public" ? ["rest"] : []] : [],
|
|
231
|
+
...triggers.map((t) => t.source.kind === "mcp" ? t.source.surface : t.source.kind === "http" ? "rest" : t.source.kind)
|
|
232
|
+
])].sort();
|
|
233
|
+
if (!surfaces.length) surfaces.push("internal");
|
|
234
|
+
out.push({
|
|
235
|
+
id: `${kind}:${name}`,
|
|
236
|
+
name: tool?.name ?? mcpToolNameSegment(name),
|
|
237
|
+
kind,
|
|
238
|
+
surface: view?.surface ?? (surfaces.includes("public") || surfaces.includes("rest") ? "public" : surfaces.includes("admin") ? "admin" : "internal"),
|
|
239
|
+
surfaces,
|
|
240
|
+
triggers,
|
|
241
|
+
title,
|
|
242
|
+
description: resolveLocalizedText(p.description, "en", "en") ?? title,
|
|
243
|
+
inputSchema: tool?.inputSchema ?? view?.input ?? proc?.input ?? objectInput,
|
|
244
|
+
annotations: tool?.annotations ?? {},
|
|
245
|
+
requires: p.requires,
|
|
246
|
+
restrict: inspected.restrict,
|
|
247
|
+
schemas: inspected.schemas,
|
|
248
|
+
readSchemas: inspected.readSchemas,
|
|
249
|
+
readOnly: !inspected.opaque && inspected.readOnly,
|
|
250
|
+
opaque: inspected.opaque,
|
|
251
|
+
trustedOnly: !!proc?.trustedOnly,
|
|
252
|
+
variants: [],
|
|
253
|
+
behavior: { declaration: p, dependencies: inspected.dependencies }
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
const addRoute = (id, dependencies, inputSchema = objectInput) => {
|
|
258
|
+
const admin = id.startsWith("admin:");
|
|
259
|
+
out.push({
|
|
260
|
+
id,
|
|
261
|
+
name: id.replace(/[^a-zA-Z0-9_-]/g, "_"),
|
|
262
|
+
title: id,
|
|
263
|
+
description: id,
|
|
264
|
+
kind: admin ? "admin" : "rest",
|
|
265
|
+
surface: admin ? "admin" : "public",
|
|
266
|
+
surfaces: [admin ? "admin" : "rest"],
|
|
267
|
+
triggers: dependencies.flatMap((d) => d.triggers),
|
|
268
|
+
inputSchema,
|
|
269
|
+
annotations: {},
|
|
270
|
+
requires: admin ? { auth: { all: ["ctx.admin"] } } : dependencies[0]?.requires,
|
|
271
|
+
restrict: mergeRestrict(dependencies.map((d) => d.restrict), false),
|
|
272
|
+
schemas: [...new Set(dependencies.flatMap((d) => d.schemas))].sort(),
|
|
273
|
+
readSchemas: [...new Set(dependencies.flatMap((d) => d.readSchemas))].sort(),
|
|
274
|
+
readOnly: dependencies.length > 0 && dependencies.every((d) => d.readOnly) && (!admin || id.startsWith("admin:GET ") || id === "admin:POST /operations/:name" || id === "admin:POST /webmcp/:tool"),
|
|
275
|
+
opaque: dependencies.some((d) => d.opaque),
|
|
276
|
+
trustedOnly: dependencies.some((d) => d.trustedOnly),
|
|
277
|
+
variants: dependencies,
|
|
278
|
+
behavior: dependencies.map((d) => ({ id: d.id, behavior: d.behavior, surfaces: d.surfaces, triggers: d.triggers, input: d.inputSchema, requires: d.requires, restrict: d.restrict, trustedOnly: d.trustedOnly }))
|
|
279
|
+
});
|
|
280
|
+
};
|
|
281
|
+
const declarations = [...out];
|
|
282
|
+
const adminOperations = new Set(mcpTools(plan, "admin").filter((t) => t.kind === "procedure").map((t) => `procedure:${t.source}`));
|
|
283
|
+
for (const d of declarations) if (d.kind === "view" && d.surfaces.includes("public")) addRoute(`rest:GET /api/views/${d.id.slice(5)}`, [d], d.inputSchema);
|
|
284
|
+
for (const [, t] of Object.entries(plan.triggers).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) if (t.source.kind === "http") {
|
|
285
|
+
const d = declarations.find((d2) => d2.id === `procedure:${t.procedure}`);
|
|
286
|
+
addRoute(`rest:${t.source.method} ${pathTemplate(t.source.path)}`, [d], d.inputSchema);
|
|
287
|
+
}
|
|
288
|
+
const generated = [];
|
|
289
|
+
for (const [schema, s] of Object.entries(plan.schemas).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) if (s.publishing) for (const [verb, from, to] of publishingTransitions) {
|
|
290
|
+
addRoute(`procedure:${s.name}.${verb}`, [], publishingInput);
|
|
291
|
+
const d = out.at(-1);
|
|
292
|
+
const inspected = inspectBehavior(plan, void 0, false, void 0, void 0, [{ schema, operation: verb === "publish" ? "publish" : "update" }]);
|
|
293
|
+
Object.assign(d, {
|
|
294
|
+
kind: "procedure",
|
|
295
|
+
name: mcpToolNameSegment(`${verb}_${s.name}`),
|
|
296
|
+
surface: "admin",
|
|
297
|
+
surfaces: ["admin"],
|
|
298
|
+
requires: { auth: { all: ["ctx.admin"] } },
|
|
299
|
+
schemas: [.../* @__PURE__ */ new Set([schema, ...inspected.schemas])].sort(),
|
|
300
|
+
readSchemas: [.../* @__PURE__ */ new Set([schema, ...inspected.readSchemas])].sort(),
|
|
301
|
+
opaque: inspected.opaque,
|
|
302
|
+
behavior: { schema, verb, from, to, dependencies: inspected.dependencies }
|
|
303
|
+
});
|
|
304
|
+
generated.push(d);
|
|
305
|
+
}
|
|
306
|
+
for (const tool of mediaDefinitions()) {
|
|
307
|
+
addRoute(`admin:tool:${tool.name}`, [], tool.inputSchema);
|
|
308
|
+
const d = out.at(-1);
|
|
309
|
+
Object.assign(d, { name: tool.name, readOnly: tool.annotations.readOnlyHint, opaque: !tool.annotations.readOnlyHint, annotations: tool.annotations, behavior: { tool, schemas: plan.schemas } });
|
|
310
|
+
generated.push(d);
|
|
311
|
+
}
|
|
312
|
+
for (const route of adminRoutes) {
|
|
313
|
+
const deps = route.includes("/views/:") ? declarations.filter((d2) => d2.kind === "view" && (route.includes("/developer/") || plan.views[d2.id.slice(5)]?.surface === "admin")) : route.includes("/operations/:") ? declarations.filter((d2) => adminOperations.has(d2.id)) : route === "POST /webmcp/:tool" ? declarations.filter((d2) => mcpTools(plan, "admin").some((t) => `${t.kind}:${t.source}` === d2.id)).concat(generated) : [];
|
|
314
|
+
const generic = route.includes("/entries") || route.includes("/statistics") || route === "GET /bootstrap";
|
|
315
|
+
addRoute(`admin:${route}`, deps, deps.length ? { ...objectInput, anyOf: deps.map((d2) => ({ type: "object", properties: { [route.includes("/webmcp/") ? "tool" : "name"]: { type: "string", const: route.includes("/webmcp/") ? d2.name : d2.id.slice(d2.kind === "view" ? 5 : 10) } } })) } : objectInput);
|
|
316
|
+
const d = out.at(-1);
|
|
317
|
+
if (generic) {
|
|
318
|
+
const operation = route === "POST /entries" ? "create" : route === "DELETE /entries/:id" ? "delete" : route.startsWith("GET ") ? void 0 : route.endsWith("/publish") ? "publish" : "update";
|
|
319
|
+
const inspected = inspectBehavior(plan, void 0, false, void 0, void 0, operation ? Object.keys(plan.schemas).map((schema) => ({ schema, operation })) : []);
|
|
320
|
+
d.schemas = Object.keys(plan.schemas).sort();
|
|
321
|
+
d.readSchemas = d.schemas;
|
|
322
|
+
d.opaque = inspected.opaque;
|
|
323
|
+
d.behavior = { schemas: plan.schemas, dependencies: inspected.dependencies };
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
return [...new Map(out.map((d) => [d.id, d])).values()].sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// src/domain/describe/target-hash.ts
|
|
330
|
+
async function hash(value) {
|
|
331
|
+
const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(canonical(value)));
|
|
332
|
+
return [...new Uint8Array(digest)].map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
333
|
+
}
|
|
334
|
+
function hashDefinition(plan, d) {
|
|
335
|
+
return hash({
|
|
336
|
+
id: d.id,
|
|
337
|
+
surfaces: d.surfaces,
|
|
338
|
+
triggers: d.triggers,
|
|
339
|
+
behavior: d.behavior,
|
|
340
|
+
input: d.inputSchema,
|
|
341
|
+
requires: d.requires,
|
|
342
|
+
restrict: d.restrict,
|
|
343
|
+
dialect: plan.dialect,
|
|
344
|
+
schemas: Object.fromEntries(d.schemas.map((name) => [name, plan.schemas[name]])),
|
|
345
|
+
userFields: plan.access?.userFields,
|
|
346
|
+
readOnly: d.readOnly,
|
|
347
|
+
opaque: d.opaque,
|
|
348
|
+
trustedOnly: d.trustedOnly
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
async function targetHash(plan, targetId) {
|
|
352
|
+
const target = targetDefinitions(plan).find((d) => d.id === targetId);
|
|
353
|
+
if (!target) throw new TypeError(`Unknown target '${targetId}'.`);
|
|
354
|
+
return hashDefinition(plan, target);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
export {
|
|
358
|
+
canonical,
|
|
359
|
+
targetDefinitions,
|
|
360
|
+
hash,
|
|
361
|
+
hashDefinition,
|
|
362
|
+
targetHash
|
|
363
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { RuntimePlan } from "../../build/compiler.js";
|
|
2
|
+
import type { PlanRestrict } from "../../build/spec/domain/model/RuntimePlan.js";
|
|
3
|
+
import type { UserFieldSpec } from "../../build/spec/domain/model/UserFields.js";
|
|
4
|
+
import { type TargetDefinition } from "./targets.js";
|
|
5
|
+
export { targetHash } from "./target-hash.js";
|
|
6
|
+
export interface DescribeTarget {
|
|
7
|
+
name: string;
|
|
8
|
+
title: string;
|
|
9
|
+
description: string;
|
|
10
|
+
inputSchema: import("../../build/compiler.js").JsonSchema;
|
|
11
|
+
annotations: import("../../build/spec/domain/model/ManifestGrammar.js").ProcedureMcpAnnotations;
|
|
12
|
+
_meta: {
|
|
13
|
+
surfaces: string[];
|
|
14
|
+
triggers: TargetDefinition["triggers"];
|
|
15
|
+
id: string;
|
|
16
|
+
targetHash: string;
|
|
17
|
+
readOnly: boolean;
|
|
18
|
+
scope: PlanRestrict;
|
|
19
|
+
restrict: PlanRestrict;
|
|
20
|
+
opaque: boolean;
|
|
21
|
+
unscopedReads: boolean;
|
|
22
|
+
trustedOnly: boolean;
|
|
23
|
+
variants: {
|
|
24
|
+
id: string;
|
|
25
|
+
scope: PlanRestrict;
|
|
26
|
+
restrict: PlanRestrict;
|
|
27
|
+
requires: Requirements;
|
|
28
|
+
inputSchema: DescribeTarget["inputSchema"];
|
|
29
|
+
readOnly: boolean;
|
|
30
|
+
trustedOnly: boolean;
|
|
31
|
+
opaque: boolean;
|
|
32
|
+
unscopedReads: boolean;
|
|
33
|
+
}[];
|
|
34
|
+
requires: Requirements;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
interface Requirements {
|
|
38
|
+
all: readonly (string | {
|
|
39
|
+
readonly "ctx.auth.scope": string;
|
|
40
|
+
})[];
|
|
41
|
+
guard?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface AppDescription {
|
|
44
|
+
schemaVersion: 1;
|
|
45
|
+
access: Readonly<Record<string, UserFieldSpec>>;
|
|
46
|
+
targets: DescribeTarget[];
|
|
47
|
+
}
|
|
48
|
+
/** A report of sealed declarations; no SQL or row values leave this function. */
|
|
49
|
+
export declare function describeApp(plan: RuntimePlan): Promise<AppDescription>;
|
|
50
|
+
export interface AppChange {
|
|
51
|
+
id: string;
|
|
52
|
+
field: string;
|
|
53
|
+
direction: "widened" | "narrowed" | "changed";
|
|
54
|
+
before?: unknown;
|
|
55
|
+
after?: unknown;
|
|
56
|
+
}
|
|
57
|
+
/** Report widening on any reachable surface or dispatcher variant. */
|
|
58
|
+
export declare function diffApp(a: AppDescription, b: AppDescription): AppChange[];
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import {
|
|
2
|
+
canonical,
|
|
3
|
+
hashDefinition,
|
|
4
|
+
targetDefinitions,
|
|
5
|
+
targetHash
|
|
6
|
+
} from "./chunk-ZIQVLA7X.js";
|
|
7
|
+
|
|
8
|
+
// src/domain/describe/index.ts
|
|
9
|
+
function requirements(d, surface) {
|
|
10
|
+
const all = d.requires?.auth?.all ?? [];
|
|
11
|
+
return {
|
|
12
|
+
all: surface === "admin" && !all.includes("ctx.admin") ? ["ctx.admin", ...all] : all,
|
|
13
|
+
...d.requires?.guard ? { guard: d.requires.guard.procedure } : {}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
async function describeApp(plan) {
|
|
17
|
+
const targets = await Promise.all(targetDefinitions(plan).map(async (d) => {
|
|
18
|
+
const scope = Object.fromEntries(d.schemas.map((name) => {
|
|
19
|
+
const s = plan.schemas[name];
|
|
20
|
+
return [name, { ...s.scope ? { owner: s.scope } : {}, terms: s.userScopes ?? [] }];
|
|
21
|
+
}));
|
|
22
|
+
return { name: d.name, title: d.title, description: d.description, inputSchema: d.inputSchema, annotations: { ...d.annotations, readOnlyHint: d.readOnly }, _meta: {
|
|
23
|
+
surfaces: d.surfaces,
|
|
24
|
+
triggers: d.triggers,
|
|
25
|
+
id: d.id,
|
|
26
|
+
targetHash: await hashDefinition(plan, d),
|
|
27
|
+
readOnly: d.readOnly,
|
|
28
|
+
scope,
|
|
29
|
+
restrict: d.restrict,
|
|
30
|
+
opaque: d.opaque,
|
|
31
|
+
unscopedReads: d.readSchemas.some((name) => !plan.schemas[name]?.scope && !plan.schemas[name]?.userScopes?.length),
|
|
32
|
+
trustedOnly: d.trustedOnly,
|
|
33
|
+
variants: d.variants.map((v) => ({
|
|
34
|
+
id: v.id,
|
|
35
|
+
restrict: v.restrict,
|
|
36
|
+
requires: requirements(v, d.surface),
|
|
37
|
+
inputSchema: v.inputSchema,
|
|
38
|
+
readOnly: v.readOnly,
|
|
39
|
+
trustedOnly: v.trustedOnly,
|
|
40
|
+
opaque: v.opaque,
|
|
41
|
+
unscopedReads: v.readSchemas.some((name) => !plan.schemas[name]?.scope && !plan.schemas[name]?.userScopes?.length),
|
|
42
|
+
scope: Object.fromEntries(v.schemas.map((name) => {
|
|
43
|
+
const s = plan.schemas[name];
|
|
44
|
+
return [name, { ...s.scope ? { owner: s.scope } : {}, terms: s.userScopes ?? [] }];
|
|
45
|
+
}))
|
|
46
|
+
})),
|
|
47
|
+
requires: requirements(d, d.surface)
|
|
48
|
+
} };
|
|
49
|
+
}));
|
|
50
|
+
return JSON.parse(canonical({ schemaVersion: 1, access: plan.access?.userFields ?? {}, targets }));
|
|
51
|
+
}
|
|
52
|
+
var securityFlags = ["readOnly", "trustedOnly", "opaque", "unscopedReads"];
|
|
53
|
+
var flagDirection = (field, value) => (field === "readOnly" || field === "trustedOnly" ? !value : value) ? "widened" : "narrowed";
|
|
54
|
+
var inclusion = (before, after) => before.some((t) => !after.includes(t)) ? "widened" : after.some((t) => !before.includes(t)) ? "narrowed" : "changed";
|
|
55
|
+
var exposureDirection = (before, after) => after.some((t) => !before.includes(t) && t !== canonical("internal")) ? "widened" : before.some((t) => !after.includes(t) && t !== canonical("internal")) ? "narrowed" : "changed";
|
|
56
|
+
var combine = (directions) => directions.includes("widened") ? "widened" : directions.length && directions.every((d) => d === "narrowed") ? "narrowed" : "changed";
|
|
57
|
+
var terms = (p) => [...p.owner ? [canonical({ owner: p.owner })] : [], ...p.terms.map(canonical)];
|
|
58
|
+
function policyDirection(before, after, scope) {
|
|
59
|
+
const directions = [];
|
|
60
|
+
for (const schema of /* @__PURE__ */ new Set([...Object.keys(before), ...Object.keys(after)])) {
|
|
61
|
+
const x = before[schema], y = after[schema];
|
|
62
|
+
if (canonical(x) === canonical(y)) continue;
|
|
63
|
+
directions.push(scope && (!x || !y) ? x ? "narrowed" : "widened" : inclusion(x ? terms(x) : [], y ? terms(y) : []));
|
|
64
|
+
}
|
|
65
|
+
return combine(directions);
|
|
66
|
+
}
|
|
67
|
+
function requiresDirection(x, y) {
|
|
68
|
+
const directions = [];
|
|
69
|
+
if (canonical(x.all) !== canonical(y.all)) directions.push(inclusion(x.all.map(canonical), y.all.map(canonical)));
|
|
70
|
+
if (x.guard !== y.guard) directions.push(!y.guard ? "widened" : !x.guard ? "narrowed" : "changed");
|
|
71
|
+
return combine(directions);
|
|
72
|
+
}
|
|
73
|
+
function diffApp(a, b) {
|
|
74
|
+
if (a.schemaVersion !== 1 || b.schemaVersion !== 1) throw new TypeError("Unsupported describe schemaVersion.");
|
|
75
|
+
const changes = [], old = new Map(a.targets.map((t) => [t._meta.id, t])), next = new Map(b.targets.map((t) => [t._meta.id, t]));
|
|
76
|
+
for (const id of [.../* @__PURE__ */ new Set([...old.keys(), ...next.keys()])].sort()) {
|
|
77
|
+
const before = old.get(id), after = next.get(id);
|
|
78
|
+
if (!before || !after) {
|
|
79
|
+
changes.push({ id, field: "target", direction: before ? "narrowed" : "widened" });
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const x = before._meta, y = after._meta, start = changes.length;
|
|
83
|
+
const record = (field, left, right, direction) => {
|
|
84
|
+
if (canonical(left) !== canonical(right)) changes.push({ id, field, direction, before: left, after: right });
|
|
85
|
+
};
|
|
86
|
+
record("scope", x.scope, y.scope, policyDirection(x.scope, y.scope, true));
|
|
87
|
+
record("restrict", x.restrict, y.restrict, policyDirection(x.restrict, y.restrict, false));
|
|
88
|
+
record("requires", x.requires, y.requires, requiresDirection(x.requires, y.requires));
|
|
89
|
+
for (const field of ["surfaces", "triggers"]) record(field, x[field], y[field], exposureDirection(x[field].map(canonical), y[field].map(canonical)));
|
|
90
|
+
for (const field of securityFlags) record(field, x[field], y[field], flagDirection(field, y[field]));
|
|
91
|
+
record("inputSchema", before.inputSchema, after.inputSchema, "changed");
|
|
92
|
+
const directions = [];
|
|
93
|
+
const variants = new Map(x.variants.map((v) => [v.id, v])), added = new Map(y.variants.map((v) => [v.id, v]));
|
|
94
|
+
for (const name of /* @__PURE__ */ new Set([...variants.keys(), ...added.keys()])) {
|
|
95
|
+
const left = variants.get(name), right = added.get(name);
|
|
96
|
+
if (canonical(left) === canonical(right)) continue;
|
|
97
|
+
if (!left || !right) directions.push(left ? "narrowed" : "widened");
|
|
98
|
+
else {
|
|
99
|
+
if (canonical(left.scope) !== canonical(right.scope)) directions.push(policyDirection(left.scope, right.scope, true));
|
|
100
|
+
if (canonical(left.restrict) !== canonical(right.restrict)) directions.push(policyDirection(left.restrict, right.restrict, false));
|
|
101
|
+
if (canonical(left.requires) !== canonical(right.requires)) directions.push(requiresDirection(left.requires, right.requires));
|
|
102
|
+
if (canonical(left.inputSchema) !== canonical(right.inputSchema)) directions.push("changed");
|
|
103
|
+
for (const field of securityFlags) if (left[field] !== right[field]) directions.push(flagDirection(field, right[field]));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
record("variants", x.variants, y.variants, combine(directions));
|
|
107
|
+
if (changes.length === start && x.targetHash !== y.targetHash) changes.push({ id, field: "behavior", direction: "changed" });
|
|
108
|
+
}
|
|
109
|
+
return changes;
|
|
110
|
+
}
|
|
111
|
+
export {
|
|
112
|
+
describeApp,
|
|
113
|
+
diffApp,
|
|
114
|
+
targetHash
|
|
115
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RuntimePlan } from "../../build/compiler.js";
|
|
2
|
+
import { type TargetDefinition } from "./targets.js";
|
|
3
|
+
import { canonical } from "../../build/spec/domain/service/PlanFingerprint.js";
|
|
4
|
+
export { canonical };
|
|
5
|
+
export declare function hash(value: unknown): Promise<string>;
|
|
6
|
+
export declare function hashDefinition(plan: RuntimePlan, d: TargetDefinition): Promise<string>;
|
|
7
|
+
/** Opt-in runtime export. No compiler, parser, database or Node API is loaded. */
|
|
8
|
+
export declare function targetHash(plan: RuntimePlan, targetId: string): Promise<string>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { RuntimePlan } from "../../build/compiler.js";
|
|
2
|
+
import type { PlanRestrict } from "../../build/spec/domain/model/RuntimePlan.js";
|
|
3
|
+
import { type JsonSchema, type AuthorizationRequirements, type ProcedureMcpAnnotations } from "../../build/spec/domain/model/ManifestGrammar.js";
|
|
4
|
+
export interface TargetDefinition {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
surface: string;
|
|
8
|
+
surfaces: string[];
|
|
9
|
+
triggers: {
|
|
10
|
+
id: string;
|
|
11
|
+
source: RuntimePlan["triggers"][string]["source"];
|
|
12
|
+
}[];
|
|
13
|
+
kind: "view" | "procedure" | "rest" | "admin";
|
|
14
|
+
title: string;
|
|
15
|
+
description: string;
|
|
16
|
+
inputSchema: JsonSchema;
|
|
17
|
+
annotations: ProcedureMcpAnnotations;
|
|
18
|
+
requires?: AuthorizationRequirements;
|
|
19
|
+
restrict: PlanRestrict;
|
|
20
|
+
schemas: string[];
|
|
21
|
+
readSchemas: string[];
|
|
22
|
+
readOnly: boolean;
|
|
23
|
+
opaque: boolean;
|
|
24
|
+
trustedOnly: boolean;
|
|
25
|
+
behavior: unknown;
|
|
26
|
+
variants: TargetDefinition[];
|
|
27
|
+
}
|
|
28
|
+
/** Walk sealed IR, including nested statements and expanded View dependencies. */
|
|
29
|
+
export declare function inspectSql(value: unknown): {
|
|
30
|
+
schemas: string[];
|
|
31
|
+
readSchemas: string[];
|
|
32
|
+
readOnly: boolean;
|
|
33
|
+
writes: {
|
|
34
|
+
schema: string;
|
|
35
|
+
operation: string;
|
|
36
|
+
}[];
|
|
37
|
+
};
|
|
38
|
+
/** Built-in Admin API templates, relative to the configured Admin API base. */
|
|
39
|
+
export declare const adminRoutes: readonly ["GET /me", "GET /site", "GET /collections", "GET /views-manifest", "GET /operations", "GET /webmcp", "POST /webmcp/:tool", "GET /bootstrap", "GET /views/:name/export", "GET /views/:name", "GET /developer/views/:name", "POST /operations/:name", "GET /developer-console", "GET /collections/:name/statistics", "GET /entries", "GET /entries/export", "GET /entries/:id", "POST /entries", "PATCH /entries/:id", "POST /entries/:id/publish", "POST /entries/:id/unpublish", "POST /entries/:id/archive", "DELETE /entries/:id", "GET /site-settings", "PATCH /site-settings", "POST /media/uploads", "POST /media/uploads/:groupId/commit", "GET /media", "GET /media/:id", "PATCH /media/:id", "DELETE /media/:id", "GET /admin", "GET /members", "PATCH /admin/:id/role", "POST /admin/invitations", "DELETE /admin/invitations/:id"];
|
|
40
|
+
export declare function targetDefinitions(plan: RuntimePlan): TargetDefinition[];
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Direct entry files: one View or Procedure per module, so a request bundle excludes the others. */
|
|
2
|
+
/**
|
|
3
|
+
* Stable, injective build-only export names, so a stale entry file cannot bind a new ordinal: every byte outside [A-Za-z0-9]
|
|
4
|
+
* (including `$` and `_`) is `$` and two hex digits.
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export const exportName = (kind, name) => kind + "_" + name.replace(/[^A-Za-z0-9]+/g, run => Array.from(new TextEncoder().encode(run), b => "$" + b.toString(16).padStart(2, "0")).join(""));
|
|
8
|
+
/** A direct entry: `import` then `export`, because Bun 1.3 drops a bare `export { x as default } from` binding under "sideEffects": false. `extra` is any further re-export line. */
|
|
9
|
+
/** @internal */
|
|
10
|
+
export const entry = (kind, name, types, extra = "") => `import { ${exportName(kind, name)} as operation } from "../generated.js";\nexport default operation;\nexport type { ${types} } from "../generated.js";\n${extra}`;
|
|
11
|
+
/** Source text of a JSON value. @internal */
|
|
12
|
+
export const q = JSON.stringify;
|
|
13
|
+
/** Whether a target's database is SQLite (bun:sqlite or D1). @internal */
|
|
14
|
+
export const isSqlite = (target) => target === "bun-sqlite" || target === "cloudflare-d1";
|
|
15
|
+
/** A View's lazy paged boundary and validated query reader, bound as `page<index>` and `<query><index>`. @internal */
|
|
16
|
+
export const viewImports = (name, index, query = "query") => [`const page${index}: typeof import("./paged/views/${encodeURIComponent(name)}.js").default = async (...args) => (await import("./paged/views/${encodeURIComponent(name)}.js")).default(...args);`, `import { query as ${query}${index} } from "./validation/views/${encodeURIComponent(name)}.js";`];
|
|
17
|
+
/** A generated host handle import, shared by the optional boundaries. @internal */
|
|
18
|
+
export const driverFor = (target) => target === "bun-sqlite" ? "bun-sqlite" : target === "cloudflare-d1" ? "d1" : "postgres";
|
|
19
|
+
export const databaseImport = (target) => driverFor(target) === "postgres" ? 'import type { Postgres as Database } from "@aotter/mantle/contracts";' : `import type { Handle as Database } from "@aotter/mantle/driver/${driverFor(target)}";`;
|
|
20
|
+
/** Shared source ownership marker; only newly emitted files are wrapped. */
|
|
21
|
+
export const GENERATED = "Generated by mantle generate — do not edit.";
|
|
22
|
+
export function generatedFiles(files) {
|
|
23
|
+
return Object.fromEntries(Object.entries(files).map(([name, source]) => [name,
|
|
24
|
+
`${name.endsWith(".sql") ? "--" : "//"} ${GENERATED}\n${source}`]));
|
|
25
|
+
}
|
|
26
|
+
/** JavaScript data literals preserve own __proto__ keys instead of mutating the object's prototype. */
|
|
27
|
+
export function literal(value) {
|
|
28
|
+
if (Array.isArray(value))
|
|
29
|
+
return `[${value.map(literal).join(",")}]`;
|
|
30
|
+
if (value && typeof value === "object")
|
|
31
|
+
return `{${Object.entries(value).map(([key, child]) => `${key === "__proto__" ? `[${q(key)}]` : q(key)}:${literal(child)}`).join(",")}}`;
|
|
32
|
+
return q(value);
|
|
33
|
+
}
|