@aotter/mantle 0.1.4 → 0.2.0-alpha.1
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 +39 -306
- package/dist/admin/consent.d.ts +17 -0
- package/dist/admin/consent.d.ts.map +1 -0
- package/dist/admin/consent.js +17 -0
- package/dist/admin/consent.js.map +1 -0
- package/dist/admin/createAdminSurface.d.ts +22 -0
- package/dist/admin/createAdminSurface.d.ts.map +1 -0
- package/dist/admin/createAdminSurface.js +589 -0
- package/dist/admin/createAdminSurface.js.map +1 -0
- package/dist/admin/developerConsole.d.ts +264 -0
- package/dist/admin/developerConsole.d.ts.map +1 -0
- package/dist/admin/developerConsole.js +136 -0
- package/dist/admin/developerConsole.js.map +1 -0
- package/dist/admin/identity.d.ts +62 -0
- package/dist/admin/identity.d.ts.map +1 -0
- package/dist/admin/identity.js +7 -0
- package/dist/admin/identity.js.map +1 -0
- package/dist/admin/index.d.ts +4 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +4 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/procedureFlow.d.ts +25 -0
- package/dist/admin/procedureFlow.d.ts.map +1 -0
- package/dist/admin/procedureFlow.js +154 -0
- package/dist/admin/procedureFlow.js.map +1 -0
- package/dist/auth/ConsoleEmailSender.d.ts +15 -0
- package/dist/auth/ConsoleEmailSender.d.ts.map +1 -0
- package/dist/auth/ConsoleEmailSender.js +19 -0
- package/dist/auth/ConsoleEmailSender.js.map +1 -0
- package/dist/auth/appleClientSecret.d.ts +75 -0
- package/dist/auth/appleClientSecret.d.ts.map +1 -0
- package/dist/auth/appleClientSecret.js +116 -0
- package/dist/auth/appleClientSecret.js.map +1 -0
- package/dist/auth/buildAuth.d.ts +4565 -0
- package/dist/auth/buildAuth.d.ts.map +1 -0
- package/dist/auth/buildAuth.js +307 -0
- package/dist/auth/buildAuth.js.map +1 -0
- package/dist/auth/callerResolver.d.ts +48 -0
- package/dist/auth/callerResolver.d.ts.map +1 -0
- package/dist/auth/callerResolver.js +49 -0
- package/dist/auth/callerResolver.js.map +1 -0
- package/dist/auth/createAuthRoutes.d.ts +22 -0
- package/dist/auth/createAuthRoutes.d.ts.map +1 -0
- package/dist/auth/createAuthRoutes.js +128 -0
- package/dist/auth/createAuthRoutes.js.map +1 -0
- package/dist/auth/createMantleAuth.d.ts +3 -0
- package/dist/auth/createMantleAuth.d.ts.map +1 -0
- package/dist/auth/createMantleAuth.js +483 -0
- package/dist/auth/createMantleAuth.js.map +1 -0
- package/dist/auth/db.d.ts +17 -0
- package/dist/auth/db.d.ts.map +1 -0
- package/dist/auth/db.js +24 -0
- package/dist/auth/db.js.map +1 -0
- package/dist/auth/emailTemplates.d.ts +7 -0
- package/dist/auth/emailTemplates.d.ts.map +1 -0
- package/dist/auth/emailTemplates.js +27 -0
- package/dist/auth/emailTemplates.js.map +1 -0
- package/dist/auth/index.d.ts +9 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +7 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/methods.d.ts +717 -0
- package/dist/auth/methods.d.ts.map +1 -0
- package/dist/auth/methods.js +321 -0
- package/dist/auth/methods.js.map +1 -0
- package/dist/auth/oauthTokens.d.ts +24 -0
- package/dist/auth/oauthTokens.d.ts.map +1 -0
- package/dist/auth/oauthTokens.js +146 -0
- package/dist/auth/oauthTokens.js.map +1 -0
- package/dist/auth/setupIncomplete.d.ts +16 -0
- package/dist/auth/setupIncomplete.d.ts.map +1 -0
- package/dist/auth/setupIncomplete.js +50 -0
- package/dist/auth/setupIncomplete.js.map +1 -0
- package/dist/auth/types.d.ts +440 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +10 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/bun/index.d.ts +65 -0
- package/dist/bun/index.d.ts.map +1 -0
- package/dist/bun/index.js +130 -0
- package/dist/bun/index.js.map +1 -0
- package/dist/cli/emitModule.d.ts +7 -0
- package/dist/cli/emitModule.d.ts.map +1 -0
- package/dist/cli/emitModule.js +127 -0
- package/dist/cli/emitModule.js.map +1 -0
- package/dist/cli/generate.d.ts +4 -16
- package/dist/cli/generate.d.ts.map +1 -1
- package/dist/cli/generate.js +332 -165
- package/dist/cli/generate.js.map +1 -1
- package/dist/cli/main.d.ts +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +15 -71
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/preset.d.ts +18 -0
- package/dist/cli/preset.d.ts.map +1 -0
- package/dist/cli/preset.js +352 -0
- package/dist/cli/preset.js.map +1 -0
- package/dist/cloudflare/index.d.ts +21 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +14 -0
- package/dist/cloudflare/index.js.map +1 -0
- package/dist/cloudflare/r2Media.d.ts +43 -0
- package/dist/cloudflare/r2Media.d.ts.map +1 -0
- package/dist/cloudflare/r2Media.js +69 -0
- package/dist/cloudflare/r2Media.js.map +1 -0
- package/dist/core/caller.d.ts +35 -0
- package/dist/core/caller.d.ts.map +1 -0
- package/dist/core/caller.js +3 -0
- package/dist/core/caller.js.map +1 -0
- package/dist/core/createMantle.d.ts +22 -0
- package/dist/core/createMantle.d.ts.map +1 -0
- package/dist/core/createMantle.js +117 -0
- package/dist/core/createMantle.js.map +1 -0
- package/dist/core/dialect.d.ts +41 -0
- package/dist/core/dialect.d.ts.map +1 -0
- package/dist/core/dialect.js +7 -0
- package/dist/core/dialect.js.map +1 -0
- package/dist/core/driver.d.ts +17 -0
- package/dist/core/driver.d.ts.map +1 -0
- package/dist/core/driver.js +2 -0
- package/dist/core/driver.js.map +1 -0
- package/dist/core/email.d.ts +17 -0
- package/dist/core/email.d.ts.map +1 -0
- package/dist/core/email.js +2 -0
- package/dist/core/email.js.map +1 -0
- package/dist/core/index.d.ts +16 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +16 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/invocation.d.ts +66 -0
- package/dist/core/invocation.d.ts.map +1 -0
- package/dist/core/invocation.js +3 -0
- package/dist/core/invocation.js.map +1 -0
- package/dist/core/runtime/auth.d.ts +9 -0
- package/dist/core/runtime/auth.d.ts.map +1 -0
- package/dist/core/runtime/auth.js +39 -0
- package/dist/core/runtime/auth.js.map +1 -0
- package/dist/core/runtime/createRuntime.d.ts +23 -0
- package/dist/core/runtime/createRuntime.d.ts.map +1 -0
- package/dist/core/runtime/createRuntime.js +214 -0
- package/dist/core/runtime/createRuntime.js.map +1 -0
- package/dist/core/runtime/verifyPlan.d.ts +34 -0
- package/dist/core/runtime/verifyPlan.d.ts.map +1 -0
- package/dist/core/runtime/verifyPlan.js +301 -0
- package/dist/core/runtime/verifyPlan.js.map +1 -0
- package/dist/core/service.d.ts +45 -0
- package/dist/core/service.d.ts.map +1 -0
- package/dist/core/service.js +2 -0
- package/dist/core/service.js.map +1 -0
- package/dist/core/site.d.ts +117 -0
- package/dist/core/site.d.ts.map +1 -0
- package/dist/core/site.js +2 -0
- package/dist/core/site.js.map +1 -0
- package/dist/core/siteConfig.d.ts +5 -0
- package/dist/core/siteConfig.d.ts.map +1 -0
- package/dist/core/siteConfig.js +24 -0
- package/dist/core/siteConfig.js.map +1 -0
- package/dist/core/sql/allowlist.d.ts +65 -0
- package/dist/core/sql/allowlist.d.ts.map +1 -0
- package/dist/core/sql/allowlist.js +705 -0
- package/dist/core/sql/allowlist.js.map +1 -0
- package/dist/core/sql/ast.d.ts +24 -0
- package/dist/core/sql/ast.d.ts.map +1 -0
- package/dist/core/sql/ast.js +32 -0
- package/dist/core/sql/ast.js.map +1 -0
- package/dist/core/sql/compile.d.ts +50 -0
- package/dist/core/sql/compile.d.ts.map +1 -0
- package/dist/core/sql/compile.js +48 -0
- package/dist/core/sql/compile.js.map +1 -0
- package/dist/core/sql/policy.d.ts +121 -0
- package/dist/core/sql/policy.d.ts.map +1 -0
- package/dist/core/sql/policy.js +379 -0
- package/dist/core/sql/policy.js.map +1 -0
- package/dist/core/sql/positions.d.ts +30 -0
- package/dist/core/sql/positions.d.ts.map +1 -0
- package/dist/core/sql/positions.js +22 -0
- package/dist/core/sql/positions.js.map +1 -0
- package/dist/core/sql/run.d.ts +76 -0
- package/dist/core/sql/run.d.ts.map +1 -0
- package/dist/core/sql/run.js +267 -0
- package/dist/core/sql/run.js.map +1 -0
- package/dist/core/store/createStore.d.ts +49 -0
- package/dist/core/store/createStore.d.ts.map +1 -0
- package/dist/core/store/createStore.js +227 -0
- package/dist/core/store/createStore.js.map +1 -0
- package/dist/core/store/cursor.d.ts +4 -0
- package/dist/core/store/cursor.d.ts.map +1 -0
- package/dist/core/store/cursor.js +22 -0
- package/dist/core/store/cursor.js.map +1 -0
- package/dist/core/store/json.d.ts +80 -0
- package/dist/core/store/json.d.ts.map +1 -0
- package/dist/core/store/json.js +342 -0
- package/dist/core/store/json.js.map +1 -0
- package/dist/core/store.d.ts +160 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +2 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/wire.d.ts +20 -0
- package/dist/core/wire.d.ts.map +1 -0
- package/dist/core/wire.js +84 -0
- package/dist/core/wire.js.map +1 -0
- package/dist/core/withCaller.d.ts +16 -0
- package/dist/core/withCaller.d.ts.map +1 -0
- package/dist/core/withCaller.js +29 -0
- package/dist/core/withCaller.js.map +1 -0
- package/dist/d1/adapter.d.ts +12 -0
- package/dist/d1/adapter.d.ts.map +1 -0
- package/dist/d1/adapter.js +23 -0
- package/dist/d1/adapter.js.map +1 -0
- package/dist/d1/codec.d.ts +14 -0
- package/dist/d1/codec.d.ts.map +1 -0
- package/dist/d1/codec.js +136 -0
- package/dist/d1/codec.js.map +1 -0
- package/dist/d1/compile/index.d.ts +9 -0
- package/dist/d1/compile/index.d.ts.map +1 -0
- package/dist/d1/compile/index.js +9 -0
- package/dist/d1/compile/index.js.map +1 -0
- package/dist/d1/dialect.d.ts +4 -0
- package/dist/d1/dialect.d.ts.map +1 -0
- package/dist/d1/dialect.js +13 -0
- package/dist/d1/dialect.js.map +1 -0
- package/dist/d1/executor.d.ts +13 -0
- package/dist/d1/executor.d.ts.map +1 -0
- package/dist/d1/executor.js +91 -0
- package/dist/d1/executor.js.map +1 -0
- package/dist/d1/index.d.ts +6 -0
- package/dist/d1/index.d.ts.map +1 -0
- package/dist/d1/index.js +6 -0
- package/dist/d1/index.js.map +1 -0
- package/dist/d1/lower.d.ts +8 -0
- package/dist/d1/lower.d.ts.map +1 -0
- package/dist/d1/lower.js +167 -0
- package/dist/d1/lower.js.map +1 -0
- package/dist/d1/media.d.ts +5 -0
- package/dist/d1/media.d.ts.map +1 -0
- package/dist/d1/media.js +157 -0
- package/dist/d1/media.js.map +1 -0
- package/dist/d1/migrations.d.ts +12 -0
- package/dist/d1/migrations.d.ts.map +1 -0
- package/dist/d1/migrations.js +111 -0
- package/dist/d1/migrations.js.map +1 -0
- package/dist/d1/print.d.ts +28 -0
- package/dist/d1/print.d.ts.map +1 -0
- package/dist/d1/print.js +54 -0
- package/dist/d1/print.js.map +1 -0
- package/dist/d1/site.d.ts +17 -0
- package/dist/d1/site.d.ts.map +1 -0
- package/dist/d1/site.js +63 -0
- package/dist/d1/site.js.map +1 -0
- package/dist/d1/storage.d.ts +34 -0
- package/dist/d1/storage.d.ts.map +1 -0
- package/dist/d1/storage.js +288 -0
- package/dist/d1/storage.js.map +1 -0
- package/dist/d1/tz.d.ts +21 -0
- package/dist/d1/tz.d.ts.map +1 -0
- package/dist/d1/tz.js +54 -0
- package/dist/d1/tz.js.map +1 -0
- package/dist/d1/validator.d.ts +10 -0
- package/dist/d1/validator.d.ts.map +1 -0
- package/dist/d1/validator.js +33 -0
- package/dist/d1/validator.js.map +1 -0
- package/dist/mcp/apps.d.ts +43 -0
- package/dist/mcp/apps.d.ts.map +1 -0
- package/dist/mcp/apps.js +57 -0
- package/dist/mcp/apps.js.map +1 -0
- package/dist/mcp/catalog.d.ts +55 -0
- package/dist/mcp/catalog.d.ts.map +1 -0
- package/dist/mcp/catalog.js +81 -0
- package/dist/mcp/catalog.js.map +1 -0
- package/dist/mcp/createMcpSurface.d.ts +34 -0
- package/dist/mcp/createMcpSurface.d.ts.map +1 -0
- package/dist/mcp/createMcpSurface.js +150 -0
- package/dist/mcp/createMcpSurface.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +4 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/postgres/adapter.d.ts +20 -0
- package/dist/postgres/adapter.d.ts.map +1 -0
- package/dist/postgres/adapter.js +44 -0
- package/dist/postgres/adapter.js.map +1 -0
- package/dist/postgres/codec.d.ts +13 -0
- package/dist/postgres/codec.d.ts.map +1 -0
- package/dist/postgres/codec.js +110 -0
- package/dist/postgres/codec.js.map +1 -0
- package/dist/postgres/compile/index.d.ts +9 -0
- package/dist/postgres/compile/index.d.ts.map +1 -0
- package/dist/postgres/compile/index.js +9 -0
- package/dist/postgres/compile/index.js.map +1 -0
- package/dist/postgres/driver.d.ts +92 -0
- package/dist/postgres/driver.d.ts.map +1 -0
- package/dist/postgres/driver.js +110 -0
- package/dist/postgres/driver.js.map +1 -0
- package/dist/postgres/executor.d.ts +20 -0
- package/dist/postgres/executor.d.ts.map +1 -0
- package/dist/postgres/executor.js +69 -0
- package/dist/postgres/executor.js.map +1 -0
- package/dist/postgres/index.d.ts +7 -0
- package/dist/postgres/index.d.ts.map +1 -0
- package/dist/postgres/index.js +7 -0
- package/dist/postgres/index.js.map +1 -0
- package/dist/postgres/lower.d.ts +6 -0
- package/dist/postgres/lower.d.ts.map +1 -0
- package/dist/postgres/lower.js +157 -0
- package/dist/postgres/lower.js.map +1 -0
- package/dist/postgres/print.d.ts +11 -0
- package/dist/postgres/print.d.ts.map +1 -0
- package/dist/postgres/print.js +121 -0
- package/dist/postgres/print.js.map +1 -0
- package/dist/postgres/storage.d.ts +19 -0
- package/dist/postgres/storage.d.ts.map +1 -0
- package/dist/postgres/storage.js +201 -0
- package/dist/postgres/storage.js.map +1 -0
- package/dist/postgres/textRows.d.ts +10 -0
- package/dist/postgres/textRows.d.ts.map +1 -0
- package/dist/postgres/textRows.js +44 -0
- package/dist/postgres/textRows.js.map +1 -0
- package/dist/postgres/validator.d.ts +12 -0
- package/dist/postgres/validator.d.ts.map +1 -0
- package/dist/postgres/validator.js +46 -0
- package/dist/postgres/validator.js.map +1 -0
- package/dist/spec/domain/index.d.ts +3 -0
- package/dist/spec/domain/index.d.ts.map +1 -0
- package/dist/spec/domain/index.js +3 -0
- package/dist/spec/domain/index.js.map +1 -0
- package/dist/spec/domain/model/ContentState.d.ts +8 -0
- package/dist/spec/domain/model/ContentState.d.ts.map +1 -0
- package/dist/spec/domain/model/ContentState.js +7 -0
- package/dist/spec/domain/model/ContentState.js.map +1 -0
- package/dist/spec/domain/model/Entry.d.ts +29 -0
- package/dist/spec/domain/model/Entry.d.ts.map +1 -0
- package/dist/spec/domain/model/Entry.js +16 -0
- package/dist/spec/domain/model/Entry.js.map +1 -0
- package/dist/spec/domain/model/Locale.d.ts +30 -0
- package/dist/spec/domain/model/Locale.d.ts.map +1 -0
- package/dist/spec/domain/model/Locale.js +33 -0
- package/dist/spec/domain/model/Locale.js.map +1 -0
- package/dist/spec/domain/model/ManifestGrammar.d.ts +452 -0
- package/dist/spec/domain/model/ManifestGrammar.d.ts.map +1 -0
- package/dist/spec/domain/model/ManifestGrammar.js +149 -0
- package/dist/spec/domain/model/ManifestGrammar.js.map +1 -0
- package/dist/spec/domain/model/MediaMimeAccept.d.ts +55 -0
- package/dist/spec/domain/model/MediaMimeAccept.d.ts.map +1 -0
- package/dist/spec/domain/model/MediaMimeAccept.js +90 -0
- package/dist/spec/domain/model/MediaMimeAccept.js.map +1 -0
- package/dist/spec/domain/model/RuntimePlan.d.ts +94 -0
- package/dist/spec/domain/model/RuntimePlan.d.ts.map +1 -0
- package/dist/spec/domain/model/RuntimePlan.js +4 -0
- package/dist/spec/domain/model/RuntimePlan.js.map +1 -0
- package/dist/spec/domain/model/SiteConfig.d.ts +173 -0
- package/dist/spec/domain/model/SiteConfig.d.ts.map +1 -0
- package/dist/spec/domain/model/SiteConfig.js +13 -0
- package/dist/spec/domain/model/SiteConfig.js.map +1 -0
- package/dist/spec/domain/model/SqlIr.d.ts +96 -0
- package/dist/spec/domain/model/SqlIr.d.ts.map +1 -0
- package/dist/spec/domain/model/SqlIr.js +95 -0
- package/dist/spec/domain/model/SqlIr.js.map +1 -0
- package/dist/spec/domain/model/index.d.ts +14 -0
- package/dist/spec/domain/model/index.d.ts.map +1 -0
- package/dist/spec/domain/model/index.js +14 -0
- package/dist/spec/domain/model/index.js.map +1 -0
- package/dist/spec/domain/service/CloudflareCron.d.ts +2 -0
- package/dist/spec/domain/service/CloudflareCron.d.ts.map +1 -0
- package/dist/spec/domain/service/CloudflareCron.js +63 -0
- package/dist/spec/domain/service/CloudflareCron.js.map +1 -0
- package/dist/spec/domain/service/CrossSchemaChecker.d.ts +34 -0
- package/dist/spec/domain/service/CrossSchemaChecker.d.ts.map +1 -0
- package/dist/spec/domain/service/CrossSchemaChecker.js +114 -0
- package/dist/spec/domain/service/CrossSchemaChecker.js.map +1 -0
- package/dist/spec/domain/service/EntryDataValidator.d.ts +56 -0
- package/dist/spec/domain/service/EntryDataValidator.d.ts.map +1 -0
- package/dist/spec/domain/service/EntryDataValidator.js +88 -0
- package/dist/spec/domain/service/EntryDataValidator.js.map +1 -0
- package/dist/spec/domain/service/JsonSchemaToZod.d.ts +29 -0
- package/dist/spec/domain/service/JsonSchemaToZod.d.ts.map +1 -0
- package/dist/spec/domain/service/JsonSchemaToZod.js +156 -0
- package/dist/spec/domain/service/JsonSchemaToZod.js.map +1 -0
- package/dist/spec/domain/service/LifecycleStateMachine.d.ts +75 -0
- package/dist/spec/domain/service/LifecycleStateMachine.d.ts.map +1 -0
- package/dist/spec/domain/service/LifecycleStateMachine.js +76 -0
- package/dist/spec/domain/service/LifecycleStateMachine.js.map +1 -0
- package/dist/spec/domain/service/LocaleCanonicalizer.d.ts +29 -0
- package/dist/spec/domain/service/LocaleCanonicalizer.d.ts.map +1 -0
- package/dist/spec/domain/service/LocaleCanonicalizer.js +96 -0
- package/dist/spec/domain/service/LocaleCanonicalizer.js.map +1 -0
- package/dist/spec/domain/service/ManifestFieldChecks.d.ts +60 -0
- package/dist/spec/domain/service/ManifestFieldChecks.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestFieldChecks.js +116 -0
- package/dist/spec/domain/service/ManifestFieldChecks.js.map +1 -0
- package/dist/spec/domain/service/ManifestGraphValidator.d.ts +15 -0
- package/dist/spec/domain/service/ManifestGraphValidator.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestGraphValidator.js +225 -0
- package/dist/spec/domain/service/ManifestGraphValidator.js.map +1 -0
- package/dist/spec/domain/service/ManifestLinker.d.ts +45 -0
- package/dist/spec/domain/service/ManifestLinker.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestLinker.js +92 -0
- package/dist/spec/domain/service/ManifestLinker.js.map +1 -0
- package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts +16 -0
- package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestLocaleTrimmer.js +76 -0
- package/dist/spec/domain/service/ManifestLocaleTrimmer.js.map +1 -0
- package/dist/spec/domain/service/ManifestParser.d.ts +49 -0
- package/dist/spec/domain/service/ManifestParser.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestParser.js +203 -0
- package/dist/spec/domain/service/ManifestParser.js.map +1 -0
- package/dist/spec/domain/service/ManifestPartition.d.ts +9 -0
- package/dist/spec/domain/service/ManifestPartition.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestPartition.js +19 -0
- package/dist/spec/domain/service/ManifestPartition.js.map +1 -0
- package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts +33 -0
- package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestPathDiagnoser.js +43 -0
- package/dist/spec/domain/service/ManifestPathDiagnoser.js.map +1 -0
- package/dist/spec/domain/service/ManifestSourceSpans.d.ts +10 -0
- package/dist/spec/domain/service/ManifestSourceSpans.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestSourceSpans.js +76 -0
- package/dist/spec/domain/service/ManifestSourceSpans.js.map +1 -0
- package/dist/spec/domain/service/McpToolNaming.d.ts +25 -0
- package/dist/spec/domain/service/McpToolNaming.d.ts.map +1 -0
- package/dist/spec/domain/service/McpToolNaming.js +50 -0
- package/dist/spec/domain/service/McpToolNaming.js.map +1 -0
- package/dist/spec/domain/service/PlanFingerprint.d.ts +4 -0
- package/dist/spec/domain/service/PlanFingerprint.d.ts.map +1 -0
- package/dist/spec/domain/service/PlanFingerprint.js +14 -0
- package/dist/spec/domain/service/PlanFingerprint.js.map +1 -0
- package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts +4 -0
- package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts.map +1 -0
- package/dist/spec/domain/service/ProcedureViewSpecChecks.js +211 -0
- package/dist/spec/domain/service/ProcedureViewSpecChecks.js.map +1 -0
- package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts +42 -0
- package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +1 -0
- package/dist/spec/domain/service/SchemaAdminUiChecker.js +289 -0
- package/dist/spec/domain/service/SchemaAdminUiChecker.js.map +1 -0
- package/dist/spec/domain/service/SchemaIndexChecker.d.ts +33 -0
- package/dist/spec/domain/service/SchemaIndexChecker.d.ts.map +1 -0
- package/dist/spec/domain/service/SchemaIndexChecker.js +256 -0
- package/dist/spec/domain/service/SchemaIndexChecker.js.map +1 -0
- package/dist/spec/domain/service/SchemaSearchChecker.d.ts +11 -0
- package/dist/spec/domain/service/SchemaSearchChecker.d.ts.map +1 -0
- package/dist/spec/domain/service/SchemaSearchChecker.js +78 -0
- package/dist/spec/domain/service/SchemaSearchChecker.js.map +1 -0
- package/dist/spec/domain/service/SchemaSpecChecks.d.ts +31 -0
- package/dist/spec/domain/service/SchemaSpecChecks.d.ts.map +1 -0
- package/dist/spec/domain/service/SchemaSpecChecks.js +445 -0
- package/dist/spec/domain/service/SchemaSpecChecks.js.map +1 -0
- package/dist/spec/domain/service/SiteDefaultsValidator.d.ts +39 -0
- package/dist/spec/domain/service/SiteDefaultsValidator.d.ts.map +1 -0
- package/dist/spec/domain/service/SiteDefaultsValidator.js +194 -0
- package/dist/spec/domain/service/SiteDefaultsValidator.js.map +1 -0
- package/dist/spec/domain/service/SqlClassify.d.ts +19 -0
- package/dist/spec/domain/service/SqlClassify.d.ts.map +1 -0
- package/dist/spec/domain/service/SqlClassify.js +42 -0
- package/dist/spec/domain/service/SqlClassify.js.map +1 -0
- package/dist/spec/domain/service/SqlRefusal.d.ts +16 -0
- package/dist/spec/domain/service/SqlRefusal.d.ts.map +1 -0
- package/dist/spec/domain/service/SqlRefusal.js +20 -0
- package/dist/spec/domain/service/SqlRefusal.js.map +1 -0
- package/dist/spec/domain/service/SqlTypes.d.ts +40 -0
- package/dist/spec/domain/service/SqlTypes.d.ts.map +1 -0
- package/dist/spec/domain/service/SqlTypes.js +110 -0
- package/dist/spec/domain/service/SqlTypes.js.map +1 -0
- package/dist/spec/domain/service/StaffRoleHierarchy.d.ts +3 -0
- package/dist/spec/domain/service/StaffRoleHierarchy.d.ts.map +1 -0
- package/dist/spec/domain/service/StaffRoleHierarchy.js +19 -0
- package/dist/spec/domain/service/StaffRoleHierarchy.js.map +1 -0
- package/dist/spec/domain/service/TriggerGraphChecks.d.ts +16 -0
- package/dist/spec/domain/service/TriggerGraphChecks.d.ts.map +1 -0
- package/dist/spec/domain/service/TriggerGraphChecks.js +337 -0
- package/dist/spec/domain/service/TriggerGraphChecks.js.map +1 -0
- package/dist/spec/domain/service/TriggerSpecChecks.d.ts +4 -0
- package/dist/spec/domain/service/TriggerSpecChecks.d.ts.map +1 -0
- package/dist/spec/domain/service/TriggerSpecChecks.js +89 -0
- package/dist/spec/domain/service/TriggerSpecChecks.js.map +1 -0
- package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts +11 -0
- package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts.map +1 -0
- package/dist/spec/domain/service/ValidatedAdminUiProjection.js +26 -0
- package/dist/spec/domain/service/ValidatedAdminUiProjection.js.map +1 -0
- package/dist/spec/domain/service/ViewAdminUiChecker.d.ts +14 -0
- package/dist/spec/domain/service/ViewAdminUiChecker.d.ts.map +1 -0
- package/dist/spec/domain/service/ViewAdminUiChecker.js +53 -0
- package/dist/spec/domain/service/ViewAdminUiChecker.js.map +1 -0
- package/dist/spec/domain/service/index.d.ts +24 -0
- package/dist/spec/domain/service/index.d.ts.map +1 -0
- package/dist/spec/domain/service/index.js +24 -0
- package/dist/spec/domain/service/index.js.map +1 -0
- package/dist/spec/index.d.ts +10 -0
- package/dist/spec/index.d.ts.map +1 -0
- package/dist/spec/index.js +12 -0
- package/dist/spec/index.js.map +1 -0
- package/dist/spec/infrastructure/cli/parseArgsError.d.ts +16 -0
- package/dist/spec/infrastructure/cli/parseArgsError.d.ts.map +1 -0
- package/dist/spec/infrastructure/cli/parseArgsError.js +34 -0
- package/dist/spec/infrastructure/cli/parseArgsError.js.map +1 -0
- package/dist/spec/infrastructure/index.d.ts +2 -0
- package/dist/spec/infrastructure/index.d.ts.map +1 -0
- package/dist/spec/infrastructure/index.js +2 -0
- package/dist/spec/infrastructure/index.js.map +1 -0
- package/dist/spec/infrastructure/sql/PgQueryParser.d.ts +18 -0
- package/dist/spec/infrastructure/sql/PgQueryParser.d.ts.map +1 -0
- package/dist/spec/infrastructure/sql/PgQueryParser.js +17 -0
- package/dist/spec/infrastructure/sql/PgQueryParser.js.map +1 -0
- package/dist/spec/infrastructure/sql/compilePlan.d.ts +37 -0
- package/dist/spec/infrastructure/sql/compilePlan.d.ts.map +1 -0
- package/dist/spec/infrastructure/sql/compilePlan.js +282 -0
- package/dist/spec/infrastructure/sql/compilePlan.js.map +1 -0
- package/dist/spec/infrastructure/sql/compileSql.d.ts +35 -0
- package/dist/spec/infrastructure/sql/compileSql.d.ts.map +1 -0
- package/dist/spec/infrastructure/sql/compileSql.js +92 -0
- package/dist/spec/infrastructure/sql/compileSql.js.map +1 -0
- package/dist/spec/infrastructure/sql/frontEnd.d.ts +8 -0
- package/dist/spec/infrastructure/sql/frontEnd.d.ts.map +1 -0
- package/dist/spec/infrastructure/sql/frontEnd.js +100 -0
- package/dist/spec/infrastructure/sql/frontEnd.js.map +1 -0
- package/dist/spec/infrastructure/sql/index.d.ts +4 -0
- package/dist/spec/infrastructure/sql/index.d.ts.map +1 -0
- package/dist/spec/infrastructure/sql/index.js +4 -0
- package/dist/spec/infrastructure/sql/index.js.map +1 -0
- package/dist/spec/kernel/diagnostic.d.ts +137 -0
- package/dist/spec/kernel/diagnostic.d.ts.map +1 -0
- package/dist/spec/kernel/diagnostic.js +296 -0
- package/dist/spec/kernel/diagnostic.js.map +1 -0
- package/dist/spec/kernel/index.d.ts +8 -0
- package/dist/spec/kernel/index.d.ts.map +1 -0
- package/dist/spec/kernel/index.js +8 -0
- package/dist/spec/kernel/index.js.map +1 -0
- package/dist/spec/usecase/EmitTypes.d.ts +22 -0
- package/dist/spec/usecase/EmitTypes.d.ts.map +1 -0
- package/dist/spec/usecase/EmitTypes.js +182 -0
- package/dist/spec/usecase/EmitTypes.js.map +1 -0
- package/dist/spec/usecase/ValidateManifestsUseCase.d.ts +8 -0
- package/dist/spec/usecase/ValidateManifestsUseCase.d.ts.map +1 -0
- package/dist/spec/usecase/ValidateManifestsUseCase.js +101 -0
- package/dist/spec/usecase/ValidateManifestsUseCase.js.map +1 -0
- package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts +27 -0
- package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts.map +1 -0
- package/dist/spec/usecase/dto/ValidateManifestsRequest.js +2 -0
- package/dist/spec/usecase/dto/ValidateManifestsRequest.js.map +1 -0
- package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts +14 -0
- package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts.map +1 -0
- package/dist/spec/usecase/dto/ValidateManifestsResponse.js +2 -0
- package/dist/spec/usecase/dto/ValidateManifestsResponse.js.map +1 -0
- package/dist/spec/usecase/dto/index.d.ts +3 -0
- package/dist/spec/usecase/dto/index.d.ts.map +1 -0
- package/dist/spec/usecase/dto/index.js +3 -0
- package/dist/spec/usecase/dto/index.js.map +1 -0
- package/dist/spec/usecase/index.d.ts +10 -0
- package/dist/spec/usecase/index.d.ts.map +1 -0
- package/dist/spec/usecase/index.js +10 -0
- package/dist/spec/usecase/index.js.map +1 -0
- package/dist/testing/cases/before-hook.d.ts +4 -0
- package/dist/testing/cases/before-hook.d.ts.map +1 -0
- package/dist/testing/cases/before-hook.js +71 -0
- package/dist/testing/cases/before-hook.js.map +1 -0
- package/dist/testing/cases/corpus.d.ts +12 -0
- package/dist/testing/cases/corpus.d.ts.map +1 -0
- package/dist/testing/cases/corpus.js +91 -0
- package/dist/testing/cases/corpus.js.map +1 -0
- package/dist/testing/cases/policy.d.ts +74 -0
- package/dist/testing/cases/policy.d.ts.map +1 -0
- package/dist/testing/cases/policy.js +142 -0
- package/dist/testing/cases/policy.js.map +1 -0
- package/dist/testing/cases/printer.d.ts +4 -0
- package/dist/testing/cases/printer.d.ts.map +1 -0
- package/dist/testing/cases/printer.js +32 -0
- package/dist/testing/cases/printer.js.map +1 -0
- package/dist/testing/cases/report-view.d.ts +5 -0
- package/dist/testing/cases/report-view.d.ts.map +1 -0
- package/dist/testing/cases/report-view.js +33 -0
- package/dist/testing/cases/report-view.js.map +1 -0
- package/dist/testing/cases/requisition.d.ts +4 -0
- package/dist/testing/cases/requisition.d.ts.map +1 -0
- package/dist/testing/cases/requisition.js +38 -0
- package/dist/testing/cases/requisition.js.map +1 -0
- package/dist/testing/cases/search-places.d.ts +4 -0
- package/dist/testing/cases/search-places.d.ts.map +1 -0
- package/dist/testing/cases/search-places.js +60 -0
- package/dist/testing/cases/search-places.js.map +1 -0
- package/dist/testing/cases/stock.d.ts +4 -0
- package/dist/testing/cases/stock.d.ts.map +1 -0
- package/dist/testing/cases/stock.js +35 -0
- package/dist/testing/cases/stock.js.map +1 -0
- package/dist/testing/cases/store.d.ts +4 -0
- package/dist/testing/cases/store.d.ts.map +1 -0
- package/dist/testing/cases/store.js +100 -0
- package/dist/testing/cases/store.js.map +1 -0
- package/dist/testing/harness.d.ts +94 -0
- package/dist/testing/harness.d.ts.map +1 -0
- package/dist/testing/harness.js +168 -0
- package/dist/testing/harness.js.map +1 -0
- package/dist/testing/index.d.ts +37 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +43 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/report.d.ts +15 -0
- package/dist/testing/report.d.ts.map +1 -0
- package/dist/testing/report.js +22 -0
- package/dist/testing/report.js.map +1 -0
- package/dist/web/createRestSurface.d.ts +7 -0
- package/dist/web/createRestSurface.d.ts.map +1 -0
- package/dist/web/createRestSurface.js +39 -0
- package/dist/web/createRestSurface.js.map +1 -0
- package/dist/web/index.d.ts +2 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +2 -0
- package/dist/web/index.js.map +1 -0
- package/docs/adr/0008-structured-diagnostic-shape.md +2 -2
- package/docs/adr/0011-adapter-port-spec.md +2 -2
- package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +21 -2
- package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +5 -1
- package/docs/adr/0021-retire-starter-scaffolding.md +1 -1
- package/docs/adr/0022-caller-observed-version-occ.md +1 -1
- package/docs/adr/0024-manifest-native-schema-tables.md +2 -2
- package/docs/adr/0026-progressive-generate.md +36 -0
- package/docs/adr/0027-scheduled-procedure-triggers.md +31 -0
- package/docs/adr/0028-schema-ttl-expiry.md +33 -0
- package/docs/adr/0029-mcp-apps-interaction-contracts.md +324 -0
- package/docs/adr/0030-store.md +40 -0
- package/docs/adr/0031-host-cloud-core-contract.md +25 -0
- package/docs/adr/0032-store-centric-core-and-service-contract.md +361 -0
- package/docs/adr/0033-storage-converges-to-the-plan.md +92 -0
- package/docs/adr/0034-store-is-authored-as-sql.md +192 -0
- package/docs/adr/0035-sql-dialects.md +154 -0
- package/docs/adr/0036-host-and-dialect.md +65 -0
- package/docs/adr/0037-postgresql-is-the-reference-dialect.md +124 -0
- package/docs/adr/0038-bun-native-host.md +63 -0
- package/docs/adr/README.md +26 -8
- package/docs/adr/adr-lite-861-admin-webmcp.md +6 -0
- package/docs/adr/adr-lite-909-admin-ui-kit.md +1 -1
- package/docs/examples/README.md +16 -18
- package/docs/examples/commerce-inventory.md +481 -0
- package/docs/examples/commerce.md +254 -0
- package/docs/examples/guarded-api.md +238 -0
- package/docs/examples/intake-hooks.md +237 -0
- package/docs/examples/intake.md +127 -0
- package/docs/examples/legal-documents.md +218 -0
- package/docs/examples/procurement.md +215 -0
- package/docs/examples/publication.md +211 -0
- package/docs/examples/reference-service/.dev.vars.example +4 -0
- package/docs/examples/reference-service/.mantle/generated/mantle.ts +174 -0
- package/docs/examples/reference-service/.mantle/generated/plan.json +1936 -0
- package/docs/examples/reference-service/README.md +33 -0
- package/docs/examples/reference-service/manifests/catalog.yaml +103 -0
- package/docs/examples/reference-service/manifests/orders.yaml +120 -0
- package/docs/examples/reference-service/mantle.config.json +1 -0
- package/docs/examples/reference-service/package.json +27 -0
- package/docs/examples/reference-service/smoke.mjs +156 -0
- package/docs/examples/reference-service/src/handlers.ts +36 -0
- package/docs/examples/reference-service/src/index.ts +33 -0
- package/docs/examples/reference-service/src/service.ts +78 -0
- package/docs/examples/{host-minimal-worker → reference-service}/tsconfig.json +7 -2
- package/docs/examples/reference-service/wrangler.jsonc +26 -0
- package/docs/examples/reservation.md +142 -0
- package/docs/handbook/cloudflare/authentication.md +96 -299
- package/docs/handbook/cloudflare/chatgpt-sites.md +104 -15
- package/docs/handbook/cloudflare/deploy-and-operate.md +77 -71
- package/docs/handbook/cloudflare/media-r2.md +64 -187
- package/docs/handbook/cloudflare/service-entry.md +138 -0
- package/docs/handbook/concepts/authorization.md +104 -94
- package/docs/handbook/concepts/four-atoms.md +68 -144
- package/docs/handbook/concepts/lifecycle-and-locales.md +62 -114
- package/docs/handbook/concepts/mcp-and-agents.md +112 -117
- package/docs/handbook/concepts/procedures-and-triggers.md +126 -181
- package/docs/handbook/concepts/runtime-and-adapters.md +177 -156
- package/docs/handbook/concepts/views.md +97 -173
- package/docs/handbook/examples/hub.md +17 -6
- package/docs/handbook/guides/admin-ui.md +101 -96
- package/docs/handbook/guides/agent-setup.md +56 -71
- package/docs/handbook/guides/typed-queries.md +105 -111
- package/docs/handbook/navigation.json +8 -32
- package/docs/handbook/reference/authorization.md +52 -271
- package/docs/handbook/reference/diagnostics.md +69 -173
- package/docs/handbook/reference/features.md +48 -50
- package/docs/handbook/reference/manifest.md +56 -116
- package/docs/handbook/reference/procedure.md +92 -229
- package/docs/handbook/reference/schema.md +156 -215
- package/docs/handbook/reference/site-config.md +58 -211
- package/docs/handbook/reference/surface.md +69 -181
- package/docs/handbook/reference/trigger.md +73 -162
- package/docs/handbook/reference/view.md +140 -241
- package/docs/handbook/releases/index.md +58 -22
- package/docs/handbook/start/overview.md +59 -48
- package/docs/handbook/start/project-and-cli.md +127 -116
- package/docs/handbook/start/quickstart-worker.md +102 -151
- package/docs/skills/develop/SKILL.md +114 -232
- package/docs/skills/develop/mcp-app.md +79 -0
- package/docs/skills/integrate/SKILL.md +96 -0
- package/docs/skills/media-gc/SKILL.md +21 -10
- package/docs/skills/provision/SKILL.md +68 -162
- package/docs/skills/update/SKILL.md +33 -34
- package/docs/upgrade-0.1-to-0.2.md +211 -0
- package/package.json +87 -105
- package/dist/admin-ui.d.ts +0 -2
- package/dist/admin-ui.d.ts.map +0 -1
- package/dist/admin-ui.js +0 -2
- package/dist/admin-ui.js.map +0 -1
- package/dist/admin.d.ts +0 -2
- package/dist/admin.d.ts.map +0 -1
- package/dist/admin.js +0 -2
- package/dist/admin.js.map +0 -1
- package/dist/auth.d.ts +0 -2
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -2
- package/dist/auth.js.map +0 -1
- package/dist/bun.d.ts +0 -2
- package/dist/bun.d.ts.map +0 -1
- package/dist/bun.js +0 -2
- package/dist/bun.js.map +0 -1
- package/dist/cli/harness.d.ts +0 -3
- package/dist/cli/harness.d.ts.map +0 -1
- package/dist/cli/harness.js +0 -214
- package/dist/cli/harness.js.map +0 -1
- package/dist/cli/skills.d.ts +0 -3
- package/dist/cli/skills.d.ts.map +0 -1
- package/dist/cli/skills.js +0 -128
- package/dist/cli/skills.js.map +0 -1
- package/dist/cloudflare.d.ts +0 -2
- package/dist/cloudflare.d.ts.map +0 -1
- package/dist/cloudflare.js +0 -2
- package/dist/cloudflare.js.map +0 -1
- package/dist/codegen/emitMantleModule.d.ts +0 -22
- package/dist/codegen/emitMantleModule.d.ts.map +0 -1
- package/dist/codegen/emitMantleModule.js +0 -291
- package/dist/codegen/emitMantleModule.js.map +0 -1
- package/dist/codegen.d.ts +0 -2
- package/dist/codegen.d.ts.map +0 -1
- package/dist/codegen.js +0 -2
- package/dist/codegen.js.map +0 -1
- package/dist/runtime-testing.d.ts +0 -2
- package/dist/runtime-testing.d.ts.map +0 -1
- package/dist/runtime-testing.js +0 -2
- package/dist/runtime-testing.js.map +0 -1
- package/dist/runtime.d.ts +0 -2
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js +0 -2
- package/dist/runtime.js.map +0 -1
- package/dist/spec.d.ts +0 -2
- package/dist/spec.d.ts.map +0 -1
- package/dist/spec.js +0 -2
- package/dist/spec.js.map +0 -1
- package/dist/vercel-libsql.d.ts +0 -2
- package/dist/vercel-libsql.d.ts.map +0 -1
- package/dist/vercel-libsql.js +0 -2
- package/dist/vercel-libsql.js.map +0 -1
- package/dist/vercel.d.ts +0 -2
- package/dist/vercel.d.ts.map +0 -1
- package/dist/vercel.js +0 -2
- package/dist/vercel.js.map +0 -1
- package/dist/web.d.ts +0 -2
- package/dist/web.d.ts.map +0 -1
- package/dist/web.js +0 -2
- package/dist/web.js.map +0 -1
- package/docs/adapter-guide.md +0 -222
- package/docs/agent-prompts.md +0 -102
- package/docs/api-mcp-authorization.md +0 -5
- package/docs/assets/mantle-admin-developer.png +0 -0
- package/docs/assets/mantle-admin-operations.png +0 -0
- package/docs/assets/mantle-hero.jpg +0 -0
- package/docs/auth-hosting-model.md +0 -166
- package/docs/cloudflare-low-level-composition.md +0 -5
- package/docs/consumer-onboarding-audit.md +0 -65
- package/docs/deferred-lifecycle-queues.md +0 -5
- package/docs/design-atoms.md +0 -16
- package/docs/design-references/editorial-blog-2026-05-05.md +0 -218
- package/docs/direct-authoring.md +0 -5
- package/docs/examples/builtin-commerce.md +0 -269
- package/docs/examples/builtin-intake.md +0 -143
- package/docs/examples/builtin-legal-documents.md +0 -189
- package/docs/examples/builtin-procurement.md +0 -241
- package/docs/examples/builtin-publication.md +0 -241
- package/docs/examples/builtin-reservation.md +0 -149
- package/docs/examples/cf-primitives-commerce-inventory.md +0 -809
- package/docs/examples/cf-primitives-guarded-api.md +0 -429
- package/docs/examples/cf-primitives-intake-hooks.md +0 -319
- package/docs/examples/host-chatgpt-sites/.openai/hosting.json +0 -1
- package/docs/examples/host-chatgpt-sites/README.md +0 -70
- package/docs/examples/host-chatgpt-sites/drizzle/0000_sites_users.sql +0 -8
- package/docs/examples/host-chatgpt-sites/drizzle/0001_mantle.sql +0 -294
- package/docs/examples/host-chatgpt-sites/drizzle/0002_article_cover.sql +0 -5
- package/docs/examples/host-chatgpt-sites/drizzle/0003_store_instance_id.sql +0 -1
- package/docs/examples/host-chatgpt-sites/drizzle/meta/_journal.json +0 -1
- package/docs/examples/host-chatgpt-sites/manifests/site.yaml +0 -27
- package/docs/examples/host-chatgpt-sites/package.json +0 -1
- package/docs/examples/host-chatgpt-sites/public/site.css +0 -1
- package/docs/examples/host-chatgpt-sites/scripts/build.mjs +0 -13
- package/docs/examples/host-chatgpt-sites/scripts/check.mjs +0 -101
- package/docs/examples/host-chatgpt-sites/scripts/migration.mjs +0 -9
- package/docs/examples/host-chatgpt-sites/src/chatgpt-auth.ts +0 -63
- package/docs/examples/host-chatgpt-sites/src/index.ts +0 -46
- package/docs/examples/host-chatgpt-sites/src/mcp.ts +0 -49
- package/docs/examples/host-chatgpt-sites/src/media.ts +0 -109
- package/docs/examples/host-chatgpt-sites/src/r2-lab.ts +0 -38
- package/docs/examples/host-chatgpt-sites/src/storage-fingerprint.json +0 -1
- package/docs/examples/host-chatgpt-sites/src/web.ts +0 -35
- package/docs/examples/host-chatgpt-sites/tsconfig.json +0 -1
- package/docs/examples/host-chatgpt-sites/wrangler.jsonc +0 -10
- package/docs/examples/host-local-admin-otp/.dev.vars.example +0 -3
- package/docs/examples/host-local-admin-otp/README.md +0 -80
- package/docs/examples/host-local-admin-otp/ensure-dev-vars.mjs +0 -5
- package/docs/examples/host-local-admin-otp/manifests/site.yaml +0 -25
- package/docs/examples/host-local-admin-otp/package.json +0 -29
- package/docs/examples/host-local-admin-otp/public/.gitkeep +0 -1
- package/docs/examples/host-local-admin-otp/smoke.mjs +0 -141
- package/docs/examples/host-local-admin-otp/src/index.ts +0 -54
- package/docs/examples/host-local-admin-otp/tsconfig.json +0 -17
- package/docs/examples/host-local-admin-otp/wrangler.jsonc +0 -23
- package/docs/examples/host-minimal-worker/README.md +0 -41
- package/docs/examples/host-minimal-worker/manifests/site.yaml +0 -25
- package/docs/examples/host-minimal-worker/package.json +0 -26
- package/docs/examples/host-minimal-worker/smoke.mjs +0 -23
- package/docs/examples/host-minimal-worker/src/index.ts +0 -4
- package/docs/examples/host-minimal-worker/wrangler.jsonc +0 -22
- package/docs/handbook/chatgpt-sites/equipment-checkout.md +0 -231
- package/docs/handbook/chatgpt-sites/host-reference.md +0 -113
- package/docs/handbook/chatgpt-sites/index.md +0 -123
- package/docs/handbook/cloudflare/bindings.md +0 -298
- package/docs/handbook/cloudflare/conventional-worker.md +0 -162
- package/docs/handbook/cloudflare/deferred-hooks-queues.md +0 -170
- package/docs/handbook/cloudflare/low-level-composition.md +0 -169
- package/docs/handbook/cloudflare/public-web.md +0 -144
- package/docs/handbook/cloudflare/site-chrome.md +0 -75
- package/docs/handbook/examples/commerce-transaction.md +0 -11
- package/docs/handbook/examples/commerce.md +0 -11
- package/docs/handbook/examples/guarded-api.md +0 -10
- package/docs/handbook/examples/intake-form.md +0 -12
- package/docs/handbook/examples/intake-hooks.md +0 -11
- package/docs/handbook/examples/legal-documents.md +0 -10
- package/docs/handbook/examples/procurement-approvals.md +0 -10
- package/docs/handbook/examples/publication.md +0 -10
- package/docs/handbook/examples/reservation.md +0 -10
- package/docs/handbook/start/quickstart-admin.md +0 -50
- package/docs/labels.md +0 -71
- package/docs/media-uploads.md +0 -5
- package/docs/migration-0.1.2.md +0 -13
- package/docs/performance-harness.md +0 -228
- package/docs/release-process.md +0 -244
- package/docs/schema-indexes.md +0 -5
- package/docs/sealed-pipeline-ownership.md +0 -101
- package/docs/skills/plugin/SKILL.md +0 -132
- package/docs/skills/theme/SKILL.md +0 -77
- package/docs/spec-only-host-adoption.md +0 -157
- package/docs/transaction-patterns.md +0 -5
- package/skills/README.md +0 -125
- package/skills/develop/SKILL.md +0 -250
- package/skills/install/SKILL.md +0 -149
- package/skills/media-gc/SKILL.md +0 -85
- package/skills/plugin/SKILL.md +0 -132
- package/skills/provision/SKILL.md +0 -194
- package/skills/theme/SKILL.md +0 -77
- package/skills/update/SKILL.md +0 -51
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* K8s-style manifest envelope, scoped to the cms group of the mantle universe.
|
|
3
|
+
*
|
|
4
|
+
* apiVersion: cms.mantle.aotter.net/v2
|
|
5
|
+
* kind: <Kind>
|
|
6
|
+
* metadata: { name }
|
|
7
|
+
* spec: { ... kind-specific ... }
|
|
8
|
+
*
|
|
9
|
+
* Sibling group `analytics.mantle.aotter.net/v1` lives in the parallel mantle (OLAP)
|
|
10
|
+
* project and is parsed there — the two systems share lineage and mantle.ai
|
|
11
|
+
* domain but not parsers.
|
|
12
|
+
*
|
|
13
|
+
* The parser rejects keys and enum values outside this shipped grammar.
|
|
14
|
+
* Future syntax is added only with its implementation.
|
|
15
|
+
*/
|
|
16
|
+
export const API_VERSION = "cms.mantle.aotter.net/v2";
|
|
17
|
+
export function isMediaMcpHint(value) {
|
|
18
|
+
return (value === "media" ||
|
|
19
|
+
value === "media-image" ||
|
|
20
|
+
value === "media-video" ||
|
|
21
|
+
value === "media-file");
|
|
22
|
+
}
|
|
23
|
+
export const MANTLE_REF_KEYWORD = "x-mantle-ref";
|
|
24
|
+
/**
|
|
25
|
+
* A property's string options: its `enum`, or a `oneOf` whose every branch is a string `const` (the standard way to give each
|
|
26
|
+
* option a `title`). Undefined when the property is neither.
|
|
27
|
+
*/
|
|
28
|
+
export function enumOptions(property) {
|
|
29
|
+
if (property?.enum?.length && property.enum.every((v) => typeof v === "string"))
|
|
30
|
+
return property.enum.map((value) => ({ value: value }));
|
|
31
|
+
const branches = property?.oneOf;
|
|
32
|
+
if (!branches?.length || !branches.every((b) => typeof b.const === "string"))
|
|
33
|
+
return undefined;
|
|
34
|
+
return branches.map((b) => ({ value: b.const, ...(b.title !== undefined ? { title: b.title } : {}) }));
|
|
35
|
+
}
|
|
36
|
+
/** Normalize either `x-mantle-ref` form, or `null` when the property carries
|
|
37
|
+
* none (or a malformed value, which graph validation reports). */
|
|
38
|
+
export function resolveMantleRef(property) {
|
|
39
|
+
if (typeof property !== "object" || property === null)
|
|
40
|
+
return null;
|
|
41
|
+
const ref = property[MANTLE_REF_KEYWORD];
|
|
42
|
+
if (typeof ref === "string")
|
|
43
|
+
return ref.length > 0 ? { schema: ref, field: "id" } : null;
|
|
44
|
+
if (typeof ref !== "object" || ref === null || Array.isArray(ref))
|
|
45
|
+
return null;
|
|
46
|
+
const { schema, field } = ref;
|
|
47
|
+
return typeof schema === "string" && schema.length > 0 && typeof field === "string" && field.length > 0
|
|
48
|
+
? { schema, field }
|
|
49
|
+
: null;
|
|
50
|
+
}
|
|
51
|
+
export const MCP_HINT_KEYWORD = "x-mcp-hint";
|
|
52
|
+
/** A 0.1.x Schema-property keyword; 0.2.0 refuses it (Schema.spec.scope and a Procedure's SQL replace it). */
|
|
53
|
+
export const MANTLE_BIND_KEYWORD = "x-mantle-bind";
|
|
54
|
+
/**
|
|
55
|
+
* Resolve a `LocalizedText` value to a single displayable string for
|
|
56
|
+
* `preferred` (typically the viewer's chosen admin language), falling
|
|
57
|
+
* back to `canonical` (the site's canonical locale) and finally to the
|
|
58
|
+
* record's first own-enumerable entry (insertion order). A plain
|
|
59
|
+
* string is returned as-is — even an empty string, since only
|
|
60
|
+
* `null`/`undefined` map to `null` here; shape validation (rejecting
|
|
61
|
+
* empty strings) is the parser's job, not this resolver's. `null` /
|
|
62
|
+
* `undefined` input (the field was never set) resolves to `null`, and
|
|
63
|
+
* an empty record (structurally invalid, but resolved defensively)
|
|
64
|
+
* also resolves to `null` since there is nothing to fall back to.
|
|
65
|
+
*/
|
|
66
|
+
export function resolveLocalizedText(value, preferred, canonical) {
|
|
67
|
+
if (value == null)
|
|
68
|
+
return null;
|
|
69
|
+
if (typeof value === "string")
|
|
70
|
+
return value;
|
|
71
|
+
if (Object.prototype.hasOwnProperty.call(value, preferred)) {
|
|
72
|
+
return value[preferred];
|
|
73
|
+
}
|
|
74
|
+
if (canonical && Object.prototype.hasOwnProperty.call(value, canonical)) {
|
|
75
|
+
return value[canonical];
|
|
76
|
+
}
|
|
77
|
+
const firstKey = Object.keys(value)[0];
|
|
78
|
+
return firstKey !== undefined ? value[firstKey] : null;
|
|
79
|
+
}
|
|
80
|
+
export const VIEW_SURFACES = ["public", "staff", "internal"];
|
|
81
|
+
/** Reserved query-string names on the View REST surface. A View `input` may
|
|
82
|
+
* not declare them (`VIEW_INPUT_RESERVED_NAME`). */
|
|
83
|
+
export const VIEW_INPUT_RESERVED = ["limit", "cursor"];
|
|
84
|
+
export const PROCEDURE_TARGET_KEYS = ["schema", "id", "version"];
|
|
85
|
+
export const PROCEDURE_MCP_ANNOTATION_KEYS = ["readOnlyHint", "destructiveHint", "openWorldHint"];
|
|
86
|
+
/**
|
|
87
|
+
* Staff role hierarchy. `users` is the base identity layer (runtime);
|
|
88
|
+
* `staff` is the privilege overlay (one row per privileged user). A
|
|
89
|
+
* user without a staff row is a regular site member with no admin
|
|
90
|
+
* access.
|
|
91
|
+
*
|
|
92
|
+
* owner — full control, manages staff, manages settings
|
|
93
|
+
* editor — publish, approve/reject, manage all entries
|
|
94
|
+
* contributor — create and edit drafts
|
|
95
|
+
*
|
|
96
|
+
* `StaffRole` lives in spec because the manifest grammar references
|
|
97
|
+
* it directly: `requires.auth.all: [{ "ctx.staff": [<role>, ...] }]`
|
|
98
|
+
* — the parser checks each role string is in `STAFF_ROLES` at boot.
|
|
99
|
+
* The `Staff` runtime row shape (with grantedBy / grantedAt) lives in
|
|
100
|
+
* `mantle-runtime`; only the closed enum is grammar.
|
|
101
|
+
*/
|
|
102
|
+
export const STAFF_ROLES = ["owner", "editor", "contributor"];
|
|
103
|
+
// `meetsRole` (role-rank comparison) moved to
|
|
104
|
+
// `domain/service/StaffRoleHierarchy.ts` — this file is pure grammar
|
|
105
|
+
// types referenced by the parser.
|
|
106
|
+
export function isStaffRole(s) {
|
|
107
|
+
return STAFF_ROLES.includes(s);
|
|
108
|
+
}
|
|
109
|
+
/** Shipped v0.1 lifecycle hook vocabulary: before/after ×
|
|
110
|
+
* create/update/delete plus the publish boundary. New entries require an
|
|
111
|
+
* explicit grammar-revise round. */
|
|
112
|
+
export const LIFECYCLE_HOOKS = [
|
|
113
|
+
"before_create",
|
|
114
|
+
"after_create",
|
|
115
|
+
"before_update",
|
|
116
|
+
"after_update",
|
|
117
|
+
"before_delete",
|
|
118
|
+
"after_delete",
|
|
119
|
+
"before_publish",
|
|
120
|
+
"after_publish",
|
|
121
|
+
];
|
|
122
|
+
/** Surfaces an MCP-source Trigger can be bound to. `staff` ⇒
|
|
123
|
+
* `/mcp/staff` (bearer + role gate); `public` ⇒ `/mcp` (bearer only).
|
|
124
|
+
* The procedure's own `requires.auth` still gates the call —
|
|
125
|
+
* surface determines visibility in `tools/list`. */
|
|
126
|
+
export const MCP_TRIGGER_SURFACES = ["staff", "public"];
|
|
127
|
+
/** Storage-row metadata columns reserved across every Schema. Used by
|
|
128
|
+
* the View SQL compiler (to project them as native columns rather
|
|
129
|
+
* than `json_extract`) and by the type emitter (to surface them on
|
|
130
|
+
* every Entry interface). Adding a new reserved column is a grammar
|
|
131
|
+
* revise — touch this constant + every consumer. */
|
|
132
|
+
export const RESERVED_ENTRY_COLUMNS = [
|
|
133
|
+
"id",
|
|
134
|
+
"status",
|
|
135
|
+
"version",
|
|
136
|
+
"createdAt",
|
|
137
|
+
"updatedAt",
|
|
138
|
+
"authorId",
|
|
139
|
+
];
|
|
140
|
+
/**
|
|
141
|
+
* Reserved Procedure input wire names. `expectedVersion` is the observed
|
|
142
|
+
* native `entry.version` at read time (not version+1). First-party Admin/SDK
|
|
143
|
+
* bind and hide it; other callers supply it. Schema `spec.schema.properties`
|
|
144
|
+
* must not collide — validate is fail-closed (`INVALID_MANIFEST_ENVELOPE`).
|
|
145
|
+
* New reserved names need an ADR (ADR-0022).
|
|
146
|
+
*/
|
|
147
|
+
export const EXPECTED_VERSION_PROPERTY = "expectedVersion";
|
|
148
|
+
export const RESERVED_PROCEDURE_INPUT_NAMES = [EXPECTED_VERSION_PROPERTY];
|
|
149
|
+
//# sourceMappingURL=ManifestGrammar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManifestGrammar.js","sourceRoot":"","sources":["../../../../src/spec/domain/model/ManifestGrammar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mime-accept grammar for `MediaPurposePolicy.required`.
|
|
3
|
+
*
|
|
4
|
+
* Each entry of `required` is parsed as one of:
|
|
5
|
+
* - a full mime type: `"image/jpeg"`, `"image/avif"`
|
|
6
|
+
* - a comma-list of full mimes: `"image/jpg,image/png"` (either is OK)
|
|
7
|
+
* - a shorthand subtype: `"webp"` → `"image/webp"`, `"jpg"` → `"image/jpeg"`
|
|
8
|
+
*
|
|
9
|
+
* Whitespace around commas and around full entries is tolerated; the
|
|
10
|
+
* grammar mirrors the HTML `<input accept="...">` attribute editors
|
|
11
|
+
* already know. Each entry yields a non-empty *acceptable mime set*
|
|
12
|
+
* for one slot. **Slot order is only used for per-slot mime coverage.
|
|
13
|
+
* Variant role (`primary` / `alternate`) is declared independently
|
|
14
|
+
* per variant by the agent; the use case enforces exactly one
|
|
15
|
+
* primary, but does not bind primary to slot 0.** This matters for
|
|
16
|
+
* back-compat: alpha.14 fixtures such as
|
|
17
|
+
* `["image/avif", "image/webp", "image/jpeg"]` declare avif at slot 0
|
|
18
|
+
* yet ship jpeg as the `<img>` fallback (`role: "primary"`).
|
|
19
|
+
*
|
|
20
|
+
* Per-asset, the agent picks ONE mime per slot from the slot's
|
|
21
|
+
* acceptable set and chooses which of those is the primary. Repeatable
|
|
22
|
+
* benefit: a `product-cover` purpose declared as
|
|
23
|
+
* `["image/jpg,image/png", "webp", "avif"]` accepts a transparent
|
|
24
|
+
* PNG primary (logos / icons) or an opaque JPEG primary (photos)
|
|
25
|
+
* under the same purpose name — no per-purpose split, no forced jpeg
|
|
26
|
+
* flatten that loses alpha.
|
|
27
|
+
*
|
|
28
|
+
* Validation:
|
|
29
|
+
* - Each entry must yield ≥1 mime after parsing.
|
|
30
|
+
* - Mime sets across slots MUST NOT overlap (otherwise variant→slot
|
|
31
|
+
* mapping is ambiguous at upload-policy enforcement time).
|
|
32
|
+
* - `maxBytes` MUST cover every expanded mime (not the literal
|
|
33
|
+
* `required[i]` string).
|
|
34
|
+
*
|
|
35
|
+
* See aotter/mantle#282 for the motivating editor-uploads-PNG-as-
|
|
36
|
+
* transparent-asset case.
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* Parse one `required[i]` entry into its acceptable mime set.
|
|
40
|
+
* Returns a deduped, order-preserving list (so error messages /
|
|
41
|
+
* tool descriptions show the entry the way the consumer wrote it).
|
|
42
|
+
*
|
|
43
|
+
* Throws nothing — invalid tokens are returned as-is and the
|
|
44
|
+
* validator's allowlist check flags them downstream. This keeps the
|
|
45
|
+
* parser pure data-shape; semantic validation lives one layer up.
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseMimeAccept(entry: string): readonly string[];
|
|
48
|
+
/**
|
|
49
|
+
* Expand a policy's `required` into per-slot mime sets. Slot ordering
|
|
50
|
+
* is preserved as the consumer wrote it. Variant role (primary /
|
|
51
|
+
* alternate / fallback) is declared independently per variant — see
|
|
52
|
+
* the file header. Returns a `[slot][mime]` matrix.
|
|
53
|
+
*/
|
|
54
|
+
export declare function expandPolicyRequired(required: readonly string[]): readonly (readonly string[])[];
|
|
55
|
+
//# sourceMappingURL=MediaMimeAccept.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaMimeAccept.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/model/MediaMimeAccept.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAsBH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAahE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAEhC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mime-accept grammar for `MediaPurposePolicy.required`.
|
|
3
|
+
*
|
|
4
|
+
* Each entry of `required` is parsed as one of:
|
|
5
|
+
* - a full mime type: `"image/jpeg"`, `"image/avif"`
|
|
6
|
+
* - a comma-list of full mimes: `"image/jpg,image/png"` (either is OK)
|
|
7
|
+
* - a shorthand subtype: `"webp"` → `"image/webp"`, `"jpg"` → `"image/jpeg"`
|
|
8
|
+
*
|
|
9
|
+
* Whitespace around commas and around full entries is tolerated; the
|
|
10
|
+
* grammar mirrors the HTML `<input accept="...">` attribute editors
|
|
11
|
+
* already know. Each entry yields a non-empty *acceptable mime set*
|
|
12
|
+
* for one slot. **Slot order is only used for per-slot mime coverage.
|
|
13
|
+
* Variant role (`primary` / `alternate`) is declared independently
|
|
14
|
+
* per variant by the agent; the use case enforces exactly one
|
|
15
|
+
* primary, but does not bind primary to slot 0.** This matters for
|
|
16
|
+
* back-compat: alpha.14 fixtures such as
|
|
17
|
+
* `["image/avif", "image/webp", "image/jpeg"]` declare avif at slot 0
|
|
18
|
+
* yet ship jpeg as the `<img>` fallback (`role: "primary"`).
|
|
19
|
+
*
|
|
20
|
+
* Per-asset, the agent picks ONE mime per slot from the slot's
|
|
21
|
+
* acceptable set and chooses which of those is the primary. Repeatable
|
|
22
|
+
* benefit: a `product-cover` purpose declared as
|
|
23
|
+
* `["image/jpg,image/png", "webp", "avif"]` accepts a transparent
|
|
24
|
+
* PNG primary (logos / icons) or an opaque JPEG primary (photos)
|
|
25
|
+
* under the same purpose name — no per-purpose split, no forced jpeg
|
|
26
|
+
* flatten that loses alpha.
|
|
27
|
+
*
|
|
28
|
+
* Validation:
|
|
29
|
+
* - Each entry must yield ≥1 mime after parsing.
|
|
30
|
+
* - Mime sets across slots MUST NOT overlap (otherwise variant→slot
|
|
31
|
+
* mapping is ambiguous at upload-policy enforcement time).
|
|
32
|
+
* - `maxBytes` MUST cover every expanded mime (not the literal
|
|
33
|
+
* `required[i]` string).
|
|
34
|
+
*
|
|
35
|
+
* See aotter/mantle#282 for the motivating editor-uploads-PNG-as-
|
|
36
|
+
* transparent-asset case.
|
|
37
|
+
*/
|
|
38
|
+
/** Shorthand → full-mime expansion. Lowercase keys; alias forms
|
|
39
|
+
* collapse to the canonical mime (`jpg` / `jpeg` / `image/jpg` →
|
|
40
|
+
* `image/jpeg`). */
|
|
41
|
+
const SHORTHAND_TO_MIME = {
|
|
42
|
+
jpg: "image/jpeg",
|
|
43
|
+
jpeg: "image/jpeg",
|
|
44
|
+
"image/jpg": "image/jpeg",
|
|
45
|
+
png: "image/png",
|
|
46
|
+
"image/png": "image/png",
|
|
47
|
+
webp: "image/webp",
|
|
48
|
+
"image/webp": "image/webp",
|
|
49
|
+
avif: "image/avif",
|
|
50
|
+
"image/avif": "image/avif",
|
|
51
|
+
gif: "image/gif",
|
|
52
|
+
"image/gif": "image/gif",
|
|
53
|
+
svg: "image/svg+xml",
|
|
54
|
+
"image/svg+xml": "image/svg+xml",
|
|
55
|
+
"image/svg": "image/svg+xml",
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Parse one `required[i]` entry into its acceptable mime set.
|
|
59
|
+
* Returns a deduped, order-preserving list (so error messages /
|
|
60
|
+
* tool descriptions show the entry the way the consumer wrote it).
|
|
61
|
+
*
|
|
62
|
+
* Throws nothing — invalid tokens are returned as-is and the
|
|
63
|
+
* validator's allowlist check flags them downstream. This keeps the
|
|
64
|
+
* parser pure data-shape; semantic validation lives one layer up.
|
|
65
|
+
*/
|
|
66
|
+
export function parseMimeAccept(entry) {
|
|
67
|
+
const seen = new Set();
|
|
68
|
+
const out = [];
|
|
69
|
+
for (const raw of entry.split(",")) {
|
|
70
|
+
const tok = raw.trim().toLowerCase();
|
|
71
|
+
if (!tok)
|
|
72
|
+
continue;
|
|
73
|
+
const expanded = SHORTHAND_TO_MIME[tok] ?? tok;
|
|
74
|
+
if (!seen.has(expanded)) {
|
|
75
|
+
seen.add(expanded);
|
|
76
|
+
out.push(expanded);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Expand a policy's `required` into per-slot mime sets. Slot ordering
|
|
83
|
+
* is preserved as the consumer wrote it. Variant role (primary /
|
|
84
|
+
* alternate / fallback) is declared independently per variant — see
|
|
85
|
+
* the file header. Returns a `[slot][mime]` matrix.
|
|
86
|
+
*/
|
|
87
|
+
export function expandPolicyRequired(required) {
|
|
88
|
+
return required.map(parseMimeAccept);
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=MediaMimeAccept.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaMimeAccept.js","sourceRoot":"","sources":["../../../../src/spec/domain/model/MediaMimeAccept.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;qBAEqB;AACrB,MAAM,iBAAiB,GAAqC;IAC1D,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;IACzB,GAAG,EAAE,WAAW;IAChB,WAAW,EAAE,WAAW;IACxB,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,YAAY;IAC1B,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,YAAY;IAC1B,GAAG,EAAE,WAAW;IAChB,WAAW,EAAE,WAAW;IACxB,GAAG,EAAE,eAAe;IACpB,eAAe,EAAE,eAAe;IAChC,WAAW,EAAE,eAAe;CAC7B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAA2B;IAE3B,OAAO,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sealed plan (ADR-0032 decision 5, ADR-0034): what the CLI compiles from the manifests and Core executes.
|
|
3
|
+
* Every SQL source is already IR here, so no Worker parses SQL. Pure types and constants.
|
|
4
|
+
*/
|
|
5
|
+
import type { AuthorizationRequirements, JsonSchema, LocalizedText, ProcedureMcpAnnotations, ProcedureTarget, TriggerSource } from "./ManifestGrammar.js";
|
|
6
|
+
import type { SqlNode, SqlPlan } from "./SqlIr.js";
|
|
7
|
+
export declare const RUNTIME_PLAN_VERSION: 6;
|
|
8
|
+
/** A Schema as storage and Store see it. Keys of `fields` and `names` are lower case: SQL folds unquoted identifiers. */
|
|
9
|
+
export interface PlanSchema {
|
|
10
|
+
/** The name as declared: the key of `schemas` is lower case. */
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly title?: LocalizedText;
|
|
13
|
+
readonly description?: LocalizedText;
|
|
14
|
+
/** Admin-only presentation, opaque to Core. */
|
|
15
|
+
readonly uiSchema?: Readonly<Record<string, unknown>>;
|
|
16
|
+
readonly localized?: boolean;
|
|
17
|
+
readonly scope?: string;
|
|
18
|
+
readonly ttl?: string;
|
|
19
|
+
readonly ttlSeconds?: number;
|
|
20
|
+
readonly publishing?: boolean;
|
|
21
|
+
/** column -> Mantle type: text integer real bool json timestamptz date numeric(p,s) geo */
|
|
22
|
+
readonly fields: Readonly<Record<string, string>>;
|
|
23
|
+
/** lower-cased column -> the name the JSON Schema declares */
|
|
24
|
+
readonly names: Readonly<Record<string, string>>;
|
|
25
|
+
/** The Schema's JSON Schema: Store validates the values of a write against it. */
|
|
26
|
+
readonly schema: JsonSchema;
|
|
27
|
+
/** Boolean expressions over the row's own columns, as IR. */
|
|
28
|
+
readonly checks?: readonly SqlNode[];
|
|
29
|
+
/** A translation publishes only once the parent entry that shares `on` is published (ADR-0010). Names as declared. */
|
|
30
|
+
readonly translates?: {
|
|
31
|
+
readonly parent: string;
|
|
32
|
+
readonly on: string;
|
|
33
|
+
};
|
|
34
|
+
readonly search?: readonly string[];
|
|
35
|
+
readonly unique?: readonly (readonly string[])[];
|
|
36
|
+
readonly indexes?: readonly (readonly string[])[];
|
|
37
|
+
}
|
|
38
|
+
export interface PlanView extends SqlPlan {
|
|
39
|
+
readonly title?: LocalizedText;
|
|
40
|
+
readonly description?: LocalizedText;
|
|
41
|
+
readonly uiSchema?: Readonly<Record<string, unknown>>;
|
|
42
|
+
/** input property -> Mantle type */
|
|
43
|
+
readonly inputs: Readonly<Record<string, string>>;
|
|
44
|
+
readonly input?: JsonSchema;
|
|
45
|
+
/** The SQL as authored, which Admin shows; the IR (`stmts`) is what runs. */
|
|
46
|
+
readonly source: string;
|
|
47
|
+
readonly surface: "public" | "staff" | "internal";
|
|
48
|
+
readonly requires?: AuthorizationRequirements;
|
|
49
|
+
/** Output name -> the Schema field it reads unchanged (`SELECT t.f`, `t.f AS f`, `*`, `created_at`) or a `sum`/`min`/`max` of it; the Store decodes these as `select` does. */
|
|
50
|
+
readonly columns?: Readonly<Record<string, {
|
|
51
|
+
readonly schema: string;
|
|
52
|
+
readonly field: string;
|
|
53
|
+
}>>;
|
|
54
|
+
}
|
|
55
|
+
export interface PlanProcedure {
|
|
56
|
+
readonly title?: LocalizedText;
|
|
57
|
+
readonly description?: LocalizedText;
|
|
58
|
+
readonly uiSchema?: Readonly<Record<string, unknown>>;
|
|
59
|
+
readonly input: JsonSchema;
|
|
60
|
+
readonly output: JsonSchema;
|
|
61
|
+
/** input property -> Mantle type, for an inline `sql` handler */
|
|
62
|
+
readonly inputs: Readonly<Record<string, string>>;
|
|
63
|
+
readonly requires?: AuthorizationRequirements;
|
|
64
|
+
readonly target?: ProcedureTarget;
|
|
65
|
+
readonly mcp?: ProcedureMcpAnnotations;
|
|
66
|
+
/** An inline handler carries its SQL as authored (`source`), which Admin shows; the IR is what runs. */
|
|
67
|
+
readonly handler: {
|
|
68
|
+
readonly ref: string;
|
|
69
|
+
} | {
|
|
70
|
+
readonly sql: SqlPlan;
|
|
71
|
+
readonly source: string;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export interface PlanTrigger {
|
|
75
|
+
readonly source: TriggerSource;
|
|
76
|
+
readonly procedure: string;
|
|
77
|
+
}
|
|
78
|
+
export interface RuntimePlan {
|
|
79
|
+
readonly version: typeof RUNTIME_PLAN_VERSION;
|
|
80
|
+
/** The dialect the SQL was compiled for (ADR-0035 decision 5); boot refuses a storage of another. */
|
|
81
|
+
readonly dialect: {
|
|
82
|
+
readonly name: string;
|
|
83
|
+
readonly version: string;
|
|
84
|
+
};
|
|
85
|
+
/** SHA-256 of the plan without this field (`planFingerprint`). */
|
|
86
|
+
readonly fingerprint: string;
|
|
87
|
+
readonly schemas: Readonly<Record<string, PlanSchema>>;
|
|
88
|
+
readonly views: Readonly<Record<string, PlanView>>;
|
|
89
|
+
readonly procedures: Readonly<Record<string, PlanProcedure>>;
|
|
90
|
+
readonly triggers: Readonly<Record<string, PlanTrigger>>;
|
|
91
|
+
}
|
|
92
|
+
/** The native columns a View may output that decode like a field of this type: the entry's timestamps. */
|
|
93
|
+
export declare const NATIVE_OUTPUT_TYPES: Readonly<Record<string, string>>;
|
|
94
|
+
//# sourceMappingURL=RuntimePlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimePlan.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/model/RuntimePlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export const RUNTIME_PLAN_VERSION = 6;
|
|
2
|
+
/** The native columns a View may output that decode like a field of this type: the entry's timestamps. */
|
|
3
|
+
export const NATIVE_OUTPUT_TYPES = { created_at: "timestamptz", updated_at: "timestamptz" };
|
|
4
|
+
//# sourceMappingURL=RuntimePlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimePlan.js","sourceRoot":"","sources":["../../../../src/spec/domain/model/RuntimePlan.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAU,CAAC;AA6E/C,0GAA0G;AAC1G,MAAM,CAAC,MAAM,mBAAmB,GAAqC,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Site-level declarative contract — sibling to the manifest grammar,
|
|
3
|
+
* not part of it.
|
|
4
|
+
*
|
|
5
|
+
* The 4-atom manifest grammar (Schema/View/Procedure/Trigger) describes
|
|
6
|
+
* content types. `SiteConfig` describes deployment metadata: locales the
|
|
7
|
+
* site publishes in, brand label, the operator-visible title and
|
|
8
|
+
* description, the canonical absolute origin used for canonical URLs.
|
|
9
|
+
*
|
|
10
|
+
* Lives in `mantle-spec` (not `-runtime`) because the spec validator
|
|
11
|
+
* checks declared `siteDefaults.locales` are canonical BCP 47 at boot
|
|
12
|
+
* (see `domain/service/SiteDefaultsValidator`). The runtime operations
|
|
13
|
+
* that read/write `site_config` rows from the DB live in
|
|
14
|
+
* `mantle-runtime` — they go through the `DatabaseDriver`.
|
|
15
|
+
*
|
|
16
|
+
* Future v0.1.x: optional standalone `site.yaml` parsed via a
|
|
17
|
+
* `kind: SiteConfig` envelope sibling to the 4-atom manifest grammar.
|
|
18
|
+
* Today the consumer declares `siteDefaults` in `src/mantle/config.ts` as a
|
|
19
|
+
* TS object; either path conforms to this type.
|
|
20
|
+
*/
|
|
21
|
+
export interface SiteConfig {
|
|
22
|
+
/** Site title — `<title>` suffix and og:site_name. */
|
|
23
|
+
readonly title: string;
|
|
24
|
+
/** Default `<meta name="description">` when an entry has none. */
|
|
25
|
+
readonly description: string;
|
|
26
|
+
/** Canonical absolute origin (no trailing slash), e.g. `https://my-blog.com`. */
|
|
27
|
+
readonly origin: string;
|
|
28
|
+
/** All locales the site publishes in. Empty = locale subsystem off
|
|
29
|
+
* site-wide (ADR-0010). Drives `<link rel="alternate" hreflang>`
|
|
30
|
+
* emission only when non-empty. */
|
|
31
|
+
readonly locales: readonly string[];
|
|
32
|
+
/** Canonical locale (`locales[0]`) or `null` when locales is empty.
|
|
33
|
+
* Templates emit `<html lang="">` only when this is non-null —
|
|
34
|
+
* silent omission is correct for zero-locale sites, not a fake
|
|
35
|
+
* default. */
|
|
36
|
+
readonly canonicalLocale: string | null;
|
|
37
|
+
/** Operator-facing brand label — admin chrome (sidebar header,
|
|
38
|
+
* sign-in card). Distinct from `title` so single-tenant operators
|
|
39
|
+
* can ship one and agencies can override the other. */
|
|
40
|
+
readonly brand: string;
|
|
41
|
+
/** One site identity shared by browser favicons, Admin chrome, and
|
|
42
|
+
* MCP `serverInfo.icons`. Always contains at least the SDK default. */
|
|
43
|
+
readonly icons: readonly SiteIcon[];
|
|
44
|
+
/** Starter-declared media taxonomy. Empty array = no first-party
|
|
45
|
+
* media uploads permitted; the runtime disables the
|
|
46
|
+
* `create_media_upload` / `commit_media_upload` MCP tools and the
|
|
47
|
+
* admin upload lifecycle on deployments that don't declare any
|
|
48
|
+
* purpose, symmetric with "no `MediaStorage` configured". When
|
|
49
|
+
* non-empty, `create_media_upload` rejects any `purpose` not in
|
|
50
|
+
* this set with `MEDIA_PURPOSE_REJECTED`. */
|
|
51
|
+
readonly media: SiteMediaConfig;
|
|
52
|
+
}
|
|
53
|
+
/** Runtime read shape for the `media` section of `SiteConfig`. Always
|
|
54
|
+
* present after seed; `purposes` may be empty when the consumer
|
|
55
|
+
* didn't declare any. Each purpose carries the required mime set the
|
|
56
|
+
* Worker enforces and the per-mime byte cap the uploader is held to. */
|
|
57
|
+
export interface SiteMediaConfig {
|
|
58
|
+
readonly purposes: readonly MediaPurposePolicy[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Per-purpose policy. `name` is the slug consumers reference from
|
|
62
|
+
* `create_media_upload`; `required` is the closed set of mime types
|
|
63
|
+
* the variants manifest MUST cover; `maxBytes` caps each variant's
|
|
64
|
+
* byteSize keyed by its declared mime.
|
|
65
|
+
*
|
|
66
|
+
* Optimization runs agent-side in the MCP client's runtime; the
|
|
67
|
+
* Worker only verifies the uploaded bytes match the policy. The
|
|
68
|
+
* runtime also enforces a "suspicious shape" heuristic so an uploader
|
|
69
|
+
* that ships a 200KB jpeg + a 400KB "avif" (i.e. forgot to optimize)
|
|
70
|
+
* fails closed rather than producing a `<picture>` that's slower than
|
|
71
|
+
* a plain `<img>`.
|
|
72
|
+
*/
|
|
73
|
+
export interface MediaPurposePolicy {
|
|
74
|
+
/** Lowercase-slug identifier; matches `MEDIA_PURPOSE_SLUG_PATTERN`. */
|
|
75
|
+
readonly name: string;
|
|
76
|
+
/**
|
|
77
|
+
* Ordered list of acceptable mime slots. Each entry uses the HTML
|
|
78
|
+
* `<input accept="...">` grammar:
|
|
79
|
+
*
|
|
80
|
+
* - full mime: `"image/jpeg"`, `"image/avif"`
|
|
81
|
+
* - comma-list of mimes: `"image/jpg,image/png"` (either is OK)
|
|
82
|
+
* - shorthand subtype: `"webp"` → `"image/webp"`,
|
|
83
|
+
* `"jpg"` → `"image/jpeg"`
|
|
84
|
+
*
|
|
85
|
+
* Slot position does NOT determine variant role. Per-asset, the
|
|
86
|
+
* agent picks ONE mime per slot from that slot's acceptable set
|
|
87
|
+
* and independently declares exactly one supplied variant as
|
|
88
|
+
* `role: "primary"` (the format `<img>` falls back to); the rest
|
|
89
|
+
* are `role: "alternate"` (preferred via `<picture><source>`).
|
|
90
|
+
* This decoupling preserves back-compat with alpha.14 fixtures
|
|
91
|
+
* such as `["image/avif", "image/webp", "image/jpeg"]` that ship
|
|
92
|
+
* jpeg as primary despite avif occupying slot 0. The multi-mime
|
|
93
|
+
* slot form (e.g. `"image/jpg,image/png"`) lets a single purpose
|
|
94
|
+
* accept either jpeg-primary (photos) or png-primary (logos /
|
|
95
|
+
* transparent assets) without splitting into two purposes.
|
|
96
|
+
*
|
|
97
|
+
* Parse + expand via `parseMimeAccept` / `expandPolicyRequired`.
|
|
98
|
+
* Mime sets across slots MUST NOT overlap; `maxBytes` keys MUST
|
|
99
|
+
* cover every mime that appears in any expanded slot.
|
|
100
|
+
*
|
|
101
|
+
* See aotter/mantle#282 for the editor-uploads-transparent-PNG
|
|
102
|
+
* motivating case.
|
|
103
|
+
*/
|
|
104
|
+
readonly required: readonly string[];
|
|
105
|
+
/** Per-mime byte cap, keyed by FULLY-EXPANDED mime type (e.g.
|
|
106
|
+
* `"image/jpeg"`, not the shorthand `"jpg"`). MUST cover every
|
|
107
|
+
* mime that appears in any slot of `required` after parsing.
|
|
108
|
+
* Mimes outside the expanded set are ignored. The use case
|
|
109
|
+
* rejects with `MEDIA_VARIANT_SIZE_EXCEEDED` when a variant's
|
|
110
|
+
* declared `byteSize` exceeds its cap. */
|
|
111
|
+
readonly maxBytes: Readonly<Record<string, number>>;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Defaults declared by the consumer in `src/mantle/config.ts`. Operator-owned
|
|
115
|
+
* fields seed once, while deployment-owned fields (`origin`, `icons`, `locales`,
|
|
116
|
+
* and media purposes) sync on every boot. Empty / blank fields skip, preventing a
|
|
117
|
+
* partial declaration from clobbering stored values.
|
|
118
|
+
*
|
|
119
|
+
* Validated during storage preparation by `assertSiteDefaultsCanonical`; a
|
|
120
|
+
* non-canonical locale tag rejects boot rather than corrupting the seed.
|
|
121
|
+
*
|
|
122
|
+
* `SiteDefaults` is the **author-time** declaration (what the consumer
|
|
123
|
+
* writes); `SiteConfig` (above) is the **runtime read shape**
|
|
124
|
+
* (what the dispatcher and templates see after the seed has been
|
|
125
|
+
* applied and the operator has had a chance to edit). The runtime's
|
|
126
|
+
* `DatabaseSiteConfigRepository` owns that seed/load conversion; spec defines
|
|
127
|
+
* both types and the validator.
|
|
128
|
+
*/
|
|
129
|
+
export interface SiteDefaults {
|
|
130
|
+
readonly locales?: ReadonlyArray<string>;
|
|
131
|
+
readonly brand?: string;
|
|
132
|
+
readonly title?: string;
|
|
133
|
+
/** Default `<meta name="description">` and og:description for entries
|
|
134
|
+
* that don't carry their own. */
|
|
135
|
+
readonly description?: string;
|
|
136
|
+
/** Canonical absolute origin (no trailing slash), e.g.
|
|
137
|
+
* `https://my-blog.com`. The render pipeline uses this to build
|
|
138
|
+
* absolute URLs in `/llms.txt` and the `.md` mirrors; an empty
|
|
139
|
+
* origin produces relative URLs that are useless to off-site agent
|
|
140
|
+
* consumers. The runtime syncs it from `src/mantle/config.ts` on every boot
|
|
141
|
+
* so a later custom-domain change becomes canonical without a D1 edit. */
|
|
142
|
+
readonly origin?: string;
|
|
143
|
+
/** Browser / Admin / MCP icon renditions. Root-relative or absolute HTTPS. */
|
|
144
|
+
readonly icons?: ReadonlyArray<SiteIcon>;
|
|
145
|
+
/** Starter-declared media taxonomy. See `SiteConfig.media` for
|
|
146
|
+
* runtime semantics. Omit the whole `media` key (or declare it
|
|
147
|
+
* with an empty `purposes` array) on archetypes that don't
|
|
148
|
+
* exercise first-party media uploads — the runtime will keep the
|
|
149
|
+
* upload tools disabled, symmetric with "no `MediaStorage`
|
|
150
|
+
* configured". Each purpose's `name` is slug-shaped
|
|
151
|
+
* (`^[a-z0-9]+(-[a-z0-9]+)*$`); validated synchronously at boot. */
|
|
152
|
+
readonly media?: SiteMediaDefaults;
|
|
153
|
+
}
|
|
154
|
+
export interface SiteMediaDefaults {
|
|
155
|
+
readonly purposes?: ReadonlyArray<MediaPurposePolicy>;
|
|
156
|
+
}
|
|
157
|
+
/** MCP-compatible icon metadata, reused directly by every site surface. */
|
|
158
|
+
export interface SiteIcon {
|
|
159
|
+
readonly src: string;
|
|
160
|
+
readonly mimeType?: "image/png" | "image/jpeg" | "image/svg+xml" | "image/webp";
|
|
161
|
+
readonly sizes?: ReadonlyArray<string>;
|
|
162
|
+
readonly theme?: "light" | "dark";
|
|
163
|
+
}
|
|
164
|
+
export declare const DEFAULT_SITE_ICONS: readonly SiteIcon[];
|
|
165
|
+
/** Slug regex for `media.purposes[].name`. Matches a lowercase
|
|
166
|
+
* alphanumeric word, optionally followed by dash-separated
|
|
167
|
+
* alphanumeric segments — no leading/trailing dashes, no double
|
|
168
|
+
* dashes. The R2 adapter already uses a looser variant of this for
|
|
169
|
+
* storage-key prefixes (`/^[a-z0-9-]+$/`); spec-level validation is
|
|
170
|
+
* stricter so admin / docs / object-store dashboards see clean
|
|
171
|
+
* slugs. */
|
|
172
|
+
export declare const MEDIA_PURPOSE_SLUG_PATTERN: RegExp;
|
|
173
|
+
//# sourceMappingURL=SiteConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiteConfig.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/model/SiteConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,UAAU;IACzB,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;wCAEoC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;mBAGe;IACf,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;4DAEwD;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;4EACwE;IACxE,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC;;;;;;kDAM8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;CACjC;AAED;;;yEAGyE;AACzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;+CAK2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;sCACkC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;+EAK2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACzC;;;;;;yEAMqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACvD;AAED,2EAA2E;AAC3E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACnC;AAED,eAAO,MAAM,kBAAkB,EAAE,SAAS,QAAQ,EAGjD,CAAC;AAEF;;;;;;aAMa;AACb,eAAO,MAAM,0BAA0B,QAA6B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const DEFAULT_SITE_ICONS = [
|
|
2
|
+
{ src: "/admin/favicon.png", mimeType: "image/png", sizes: ["64x64"] },
|
|
3
|
+
{ src: "/admin/favicon.svg", mimeType: "image/svg+xml", sizes: ["any"] },
|
|
4
|
+
];
|
|
5
|
+
/** Slug regex for `media.purposes[].name`. Matches a lowercase
|
|
6
|
+
* alphanumeric word, optionally followed by dash-separated
|
|
7
|
+
* alphanumeric segments — no leading/trailing dashes, no double
|
|
8
|
+
* dashes. The R2 adapter already uses a looser variant of this for
|
|
9
|
+
* storage-key prefixes (`/^[a-z0-9-]+$/`); spec-level validation is
|
|
10
|
+
* stricter so admin / docs / object-store dashboards see clean
|
|
11
|
+
* slugs. */
|
|
12
|
+
export const MEDIA_PURPOSE_SLUG_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
13
|
+
//# sourceMappingURL=SiteConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiteConfig.js","sourceRoot":"","sources":["../../../../src/spec/domain/model/SiteConfig.ts"],"names":[],"mappings":"AAyKA,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,EAAE,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;IACtE,EAAE,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;CACzE,CAAC;AAEF;;;;;;aAMa;AACb,MAAM,CAAC,MAAM,0BAA0B,GAAG,0BAA0B,CAAC"}
|