@aotter/mantle 0.1.5-alpha.1 → 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 +318 -262
- 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/0022-caller-observed-version-occ.md +1 -1
- package/docs/adr/0024-manifest-native-schema-tables.md +2 -2
- package/docs/adr/0027-scheduled-procedure-triggers.md +1 -1
- package/docs/adr/0028-schema-ttl-expiry.md +3 -3
- 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 +23 -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 -316
- 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 -163
- 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 -33
- package/docs/handbook/reference/authorization.md +52 -271
- package/docs/handbook/reference/diagnostics.md +69 -178
- package/docs/handbook/reference/features.md +48 -50
- package/docs/handbook/reference/manifest.md +56 -116
- package/docs/handbook/reference/procedure.md +91 -279
- package/docs/handbook/reference/schema.md +154 -239
- package/docs/handbook/reference/site-config.md +58 -211
- package/docs/handbook/reference/surface.md +69 -181
- package/docs/handbook/reference/trigger.md +72 -181
- package/docs/handbook/reference/view.md +140 -241
- package/docs/handbook/releases/index.md +58 -77
- package/docs/handbook/start/overview.md +59 -51
- package/docs/handbook/start/project-and-cli.md +132 -105
- package/docs/handbook/start/quickstart-worker.md +102 -160
- package/docs/skills/develop/SKILL.md +114 -240
- package/docs/skills/develop/mcp-app.md +79 -0
- package/docs/skills/integrate/SKILL.md +83 -47
- 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 -106
- package/dist/admin-ui.d.ts +0 -2
- package/dist/admin-ui.d.ts.map +0 -1
- package/dist/admin-ui.js +0 -2
- package/dist/admin-ui.js.map +0 -1
- package/dist/admin.d.ts +0 -2
- package/dist/admin.d.ts.map +0 -1
- package/dist/admin.js +0 -2
- package/dist/admin.js.map +0 -1
- package/dist/auth.d.ts +0 -2
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -2
- package/dist/auth.js.map +0 -1
- package/dist/bun.d.ts +0 -2
- package/dist/bun.d.ts.map +0 -1
- package/dist/bun.js +0 -2
- package/dist/bun.js.map +0 -1
- package/dist/cli/generate-cloudflare.d.ts +0 -7
- package/dist/cli/generate-cloudflare.d.ts.map +0 -1
- package/dist/cli/generate-cloudflare.js +0 -123
- package/dist/cli/generate-cloudflare.js.map +0 -1
- package/dist/cli/generate-project.d.ts +0 -25
- package/dist/cli/generate-project.d.ts.map +0 -1
- package/dist/cli/generate-project.js +0 -282
- package/dist/cli/generate-project.js.map +0 -1
- package/dist/cli/generate-sites.d.ts +0 -8
- package/dist/cli/generate-sites.d.ts.map +0 -1
- package/dist/cli/generate-sites.js +0 -273
- package/dist/cli/generate-sites.js.map +0 -1
- package/dist/cli/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 -64
- package/docs/api-mcp-authorization.md +0 -5
- package/docs/assets/mantle-admin-developer.png +0 -0
- package/docs/assets/mantle-admin-operations.png +0 -0
- package/docs/assets/mantle-hero.jpg +0 -0
- package/docs/auth-hosting-model.md +0 -166
- package/docs/cloudflare-low-level-composition.md +0 -5
- package/docs/consumer-onboarding-audit.md +0 -65
- package/docs/deferred-lifecycle-queues.md +0 -5
- package/docs/design-atoms.md +0 -16
- package/docs/design-references/editorial-blog-2026-05-05.md +0 -218
- package/docs/direct-authoring.md +0 -5
- package/docs/examples/builtin-commerce.md +0 -269
- package/docs/examples/builtin-intake.md +0 -143
- package/docs/examples/builtin-legal-documents.md +0 -189
- package/docs/examples/builtin-procurement.md +0 -241
- package/docs/examples/builtin-publication.md +0 -241
- package/docs/examples/builtin-reservation.md +0 -149
- package/docs/examples/cf-primitives-commerce-inventory.md +0 -809
- package/docs/examples/cf-primitives-guarded-api.md +0 -429
- package/docs/examples/cf-primitives-intake-hooks.md +0 -319
- package/docs/examples/host-chatgpt-sites/.openai/hosting.json +0 -1
- package/docs/examples/host-chatgpt-sites/README.md +0 -70
- package/docs/examples/host-chatgpt-sites/drizzle/0000_sites_users.sql +0 -8
- package/docs/examples/host-chatgpt-sites/drizzle/0001_mantle.sql +0 -294
- package/docs/examples/host-chatgpt-sites/drizzle/0002_article_cover.sql +0 -5
- package/docs/examples/host-chatgpt-sites/drizzle/0003_store_instance_id.sql +0 -1
- package/docs/examples/host-chatgpt-sites/drizzle/0004_mantle.sql +0 -10
- package/docs/examples/host-chatgpt-sites/drizzle/0005_mantle.sql +0 -24
- package/docs/examples/host-chatgpt-sites/drizzle/meta/_journal.json +0 -1
- package/docs/examples/host-chatgpt-sites/drizzle/meta/mantle-state.json +0 -60
- package/docs/examples/host-chatgpt-sites/manifests/site.yaml +0 -27
- package/docs/examples/host-chatgpt-sites/package.json +0 -1
- package/docs/examples/host-chatgpt-sites/public/site.css +0 -1
- package/docs/examples/host-chatgpt-sites/scripts/build.mjs +0 -13
- package/docs/examples/host-chatgpt-sites/scripts/check.mjs +0 -101
- package/docs/examples/host-chatgpt-sites/scripts/migration.mjs +0 -43
- package/docs/examples/host-chatgpt-sites/src/chatgpt-auth.ts +0 -66
- package/docs/examples/host-chatgpt-sites/src/index.ts +0 -46
- package/docs/examples/host-chatgpt-sites/src/mcp.ts +0 -49
- package/docs/examples/host-chatgpt-sites/src/media.ts +0 -109
- package/docs/examples/host-chatgpt-sites/src/r2-lab.ts +0 -38
- package/docs/examples/host-chatgpt-sites/src/storage-fingerprint.json +0 -1
- package/docs/examples/host-chatgpt-sites/src/web.ts +0 -35
- package/docs/examples/host-chatgpt-sites/tsconfig.json +0 -1
- package/docs/examples/host-chatgpt-sites/wrangler.jsonc +0 -10
- package/docs/examples/host-local-admin-otp/.dev.vars.example +0 -3
- package/docs/examples/host-local-admin-otp/README.md +0 -80
- package/docs/examples/host-local-admin-otp/ensure-dev-vars.mjs +0 -5
- package/docs/examples/host-local-admin-otp/manifests/site.yaml +0 -25
- package/docs/examples/host-local-admin-otp/package.json +0 -29
- package/docs/examples/host-local-admin-otp/public/.gitkeep +0 -1
- package/docs/examples/host-local-admin-otp/smoke.mjs +0 -141
- package/docs/examples/host-local-admin-otp/src/index.ts +0 -54
- package/docs/examples/host-local-admin-otp/tsconfig.json +0 -17
- package/docs/examples/host-local-admin-otp/wrangler.jsonc +0 -23
- package/docs/examples/host-minimal-worker/README.md +0 -41
- package/docs/examples/host-minimal-worker/manifests/site.yaml +0 -25
- package/docs/examples/host-minimal-worker/package.json +0 -26
- package/docs/examples/host-minimal-worker/smoke.mjs +0 -23
- package/docs/examples/host-minimal-worker/src/index.ts +0 -4
- package/docs/examples/host-minimal-worker/wrangler.jsonc +0 -22
- package/docs/handbook/chatgpt-sites/equipment-checkout.md +0 -231
- package/docs/handbook/chatgpt-sites/generated-app.md +0 -84
- package/docs/handbook/chatgpt-sites/host-reference.md +0 -113
- package/docs/handbook/chatgpt-sites/index.md +0 -133
- package/docs/handbook/cloudflare/bindings.md +0 -291
- package/docs/handbook/cloudflare/conventional-worker.md +0 -166
- package/docs/handbook/cloudflare/deferred-hooks-queues.md +0 -170
- package/docs/handbook/cloudflare/low-level-composition.md +0 -169
- package/docs/handbook/cloudflare/public-web.md +0 -144
- package/docs/handbook/cloudflare/site-chrome.md +0 -75
- package/docs/handbook/examples/commerce-transaction.md +0 -11
- package/docs/handbook/examples/commerce.md +0 -11
- package/docs/handbook/examples/guarded-api.md +0 -10
- package/docs/handbook/examples/intake-form.md +0 -12
- package/docs/handbook/examples/intake-hooks.md +0 -11
- package/docs/handbook/examples/legal-documents.md +0 -10
- package/docs/handbook/examples/procurement-approvals.md +0 -10
- package/docs/handbook/examples/publication.md +0 -10
- package/docs/handbook/examples/reservation.md +0 -10
- package/docs/handbook/start/quickstart-admin.md +0 -52
- package/docs/labels.md +0 -71
- package/docs/media-uploads.md +0 -5
- package/docs/migration-0.1.2.md +0 -13
- package/docs/performance-harness.md +0 -228
- package/docs/release-process.md +0 -244
- package/docs/schema-indexes.md +0 -5
- package/docs/sealed-pipeline-ownership.md +0 -101
- package/docs/skills/plugin/SKILL.md +0 -132
- package/docs/skills/theme/SKILL.md +0 -77
- package/docs/spec-only-host-adoption.md +0 -157
- package/docs/transaction-patterns.md +0 -5
- package/skills/README.md +0 -127
- package/skills/develop/SKILL.md +0 -258
- package/skills/install/SKILL.md +0 -112
- package/skills/integrate/SKILL.md +0 -60
- package/skills/media-gc/SKILL.md +0 -85
- package/skills/plugin/SKILL.md +0 -132
- package/skills/provision/SKILL.md +0 -194
- package/skills/theme/SKILL.md +0 -77
- package/skills/update/SKILL.md +0 -51
- package/templates/chatgpt-sites/auth.ts +0 -66
- package/templates/chatgpt-sites/build.mjs +0 -14
- package/templates/chatgpt-sites/env.ts +0 -1
- package/templates/chatgpt-sites/mcp.ts +0 -48
- package/templates/chatgpt-sites/public-mcp.ts +0 -29
- package/templates/chatgpt-sites/smoke-local.mjs +0 -20
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/** Graph checks across Triggers, Procedures and Views: targets, guards, sql handlers, and MCP tool names. */
|
|
2
|
+
import { validateDiagnostic } from "../../kernel/diagnostic.js";
|
|
3
|
+
import { resolveLocalizedText } from "../model/ManifestGrammar.js";
|
|
4
|
+
import { jsonSchemaToZod } from "./JsonSchemaToZod.js";
|
|
5
|
+
import { bestMatch, manifestPath } from "./ManifestPathDiagnoser.js";
|
|
6
|
+
import { mcpToolNameSegment } from "./McpToolNaming.js";
|
|
7
|
+
/** `Procedure.spec.target` names what the handler mutates and locks. */
|
|
8
|
+
export function checkProcedureTarget(procedure, schemasByName, filePaths) {
|
|
9
|
+
const target = procedure.spec.target;
|
|
10
|
+
if (!target)
|
|
11
|
+
return [];
|
|
12
|
+
const name = procedure.metadata.name;
|
|
13
|
+
const fail = (pointer, value, expected, message, candidates) => [validateDiagnostic({
|
|
14
|
+
code: "PROCEDURE_TARGET_INVALID",
|
|
15
|
+
severity: "error",
|
|
16
|
+
path: manifestPath("Procedure", name, `/spec/target${pointer}`, filePaths),
|
|
17
|
+
value,
|
|
18
|
+
expected,
|
|
19
|
+
...(candidates ? { candidates } : {}),
|
|
20
|
+
message,
|
|
21
|
+
})];
|
|
22
|
+
if (!schemasByName.has(target.schema)) {
|
|
23
|
+
return fail("/schema", target.schema, "the metadata.name of an existing Schema", `Procedure '${name}' target references unknown Schema '${target.schema}'.`, [...schemasByName.keys()]);
|
|
24
|
+
}
|
|
25
|
+
const input = procedure.spec.input;
|
|
26
|
+
const properties = input.properties ?? {};
|
|
27
|
+
const required = new Set(input.required ?? []);
|
|
28
|
+
if (!required.has(target.id) || !hasType(properties[target.id], ["string"])) {
|
|
29
|
+
return fail("/id", target.id, "a required string input property", `Procedure '${name}' target.id '${target.id}' must be a required string property of spec.input.`, Object.keys(properties));
|
|
30
|
+
}
|
|
31
|
+
if (target.version !== undefined && !hasType(properties[target.version], ["number", "integer"])) {
|
|
32
|
+
return fail("/version", target.version, "a number input property", `Procedure '${name}' target.version '${target.version}' must be a number property of spec.input.`, Object.keys(properties));
|
|
33
|
+
}
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Whether native SQL names a Schema's table (bare, `"quoted"`, `` `quoted` ``
|
|
38
|
+
* or `[bracketed]`). Mantle tables are named after their Schema, so every
|
|
39
|
+
* read of a TTL table spells its name. A match inside a literal or comment
|
|
40
|
+
* over-rejects, which is the safe direction.
|
|
41
|
+
*/
|
|
42
|
+
function referencesTable(sql, table) {
|
|
43
|
+
const name = table.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
|
|
44
|
+
return new RegExp(`(?<![\\p{L}\\p{N}_$])${name}(?![\\p{L}\\p{N}_$])`, "iu").test(sql);
|
|
45
|
+
}
|
|
46
|
+
export function checkViewRefs(v, schemasByName, filePaths) {
|
|
47
|
+
// Schema, column and input references are checked where the SQL is parsed (compilePlan).
|
|
48
|
+
// A shared cache is the one rule that needs the referenced Schemas, and it reads the
|
|
49
|
+
// statement's table names the same way the old native SQL check did.
|
|
50
|
+
if (!v.spec.cache)
|
|
51
|
+
return [];
|
|
52
|
+
return [...schemasByName.values()]
|
|
53
|
+
.filter((schema) => referencesTable(v.spec.sql, schema.metadata.name)
|
|
54
|
+
&& (schema.spec.ttl || (schema.spec.lifecycle ?? "publishing") !== "publishing"))
|
|
55
|
+
.map((schema) => validateDiagnostic({
|
|
56
|
+
code: "VIEW_CACHE_INVALID",
|
|
57
|
+
severity: "error",
|
|
58
|
+
path: manifestPath("View", v.metadata.name, "/spec/cache", filePaths),
|
|
59
|
+
value: schema.metadata.name,
|
|
60
|
+
expected: "no shared cache over a TTL or operational Schema",
|
|
61
|
+
message: `View '${v.metadata.name}' cannot cache ${schema.spec.ttl ? "TTL" : "operational"} Schema '${schema.metadata.name}'.`,
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
export function checkSqlHandler(p, filePaths) {
|
|
65
|
+
// Declared annotations must not contradict what a `sql` handler proves (#972): it always writes,
|
|
66
|
+
// and a DELETE destroys. A false hint would tell a client to skip the confirmation the MCP spec
|
|
67
|
+
// defaults to. What the statements do is otherwise checked by compilePlan; a `DELETE FROM` inside
|
|
68
|
+
// a string literal over-rejects, which is the safe direction.
|
|
69
|
+
const h = p.spec.handler;
|
|
70
|
+
if (!("sql" in h))
|
|
71
|
+
return [];
|
|
72
|
+
const hint = (key, value, message) => p.spec.mcp?.[key] === value
|
|
73
|
+
? [validateDiagnostic({
|
|
74
|
+
code: "INVALID_MANIFEST_ENVELOPE",
|
|
75
|
+
severity: "error",
|
|
76
|
+
path: manifestPath("Procedure", p.metadata.name, `/spec/mcp/${key}`, filePaths),
|
|
77
|
+
value,
|
|
78
|
+
expected: `no ${key}, or ${key}: ${!value}, on this sql handler`,
|
|
79
|
+
message: `Procedure '${p.metadata.name}' declares mcp.${key}: ${value} but its sql handler ${message}.`,
|
|
80
|
+
})]
|
|
81
|
+
: [];
|
|
82
|
+
return [
|
|
83
|
+
...hint("readOnlyHint", true, "writes"),
|
|
84
|
+
...(/\bdelete\s+from\b/i.test(h.sql) ? hint("destructiveHint", false, "deletes") : []),
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
export function checkGuards(targets, proceduresByName, filePaths) {
|
|
88
|
+
const out = [];
|
|
89
|
+
for (const target of targets) {
|
|
90
|
+
const guardName = target.spec.requires?.guard?.procedure;
|
|
91
|
+
if (!guardName)
|
|
92
|
+
continue;
|
|
93
|
+
const path = manifestPath(target.kind, target.metadata.name, "/spec/requires/guard/procedure", filePaths);
|
|
94
|
+
const guard = proceduresByName.get(guardName);
|
|
95
|
+
if (!guard) {
|
|
96
|
+
out.push(validateDiagnostic({
|
|
97
|
+
code: "GUARD_PROCEDURE_UNKNOWN",
|
|
98
|
+
severity: "error",
|
|
99
|
+
path,
|
|
100
|
+
value: guardName,
|
|
101
|
+
expected: "name of a declared Procedure",
|
|
102
|
+
candidates: [...proceduresByName.keys()],
|
|
103
|
+
suggestion: bestMatch(guardName, [...proceduresByName.keys()]),
|
|
104
|
+
message: `${target.kind} '${target.metadata.name}' references unknown guard Procedure '${guardName}'.`,
|
|
105
|
+
}));
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (target.kind === "Procedure" && target.metadata.name === guardName) {
|
|
109
|
+
out.push(validateDiagnostic({
|
|
110
|
+
code: "GUARD_SELF_REFERENCE",
|
|
111
|
+
severity: "error",
|
|
112
|
+
path,
|
|
113
|
+
value: guardName,
|
|
114
|
+
expected: "a different, unguarded Procedure",
|
|
115
|
+
message: `Procedure '${target.metadata.name}' cannot guard itself.`,
|
|
116
|
+
}));
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (!("ref" in guard.spec.handler)) {
|
|
120
|
+
out.push(validateDiagnostic({
|
|
121
|
+
code: "GUARD_PROCEDURE_NOT_REF",
|
|
122
|
+
severity: "error",
|
|
123
|
+
path,
|
|
124
|
+
value: guardName,
|
|
125
|
+
expected: "a Procedure with a ref handler",
|
|
126
|
+
message: `${target.kind} '${target.metadata.name}' uses '${guardName}' as a guard, but guard Procedures must use a ref handler.`,
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
if (guard.spec.requires?.guard) {
|
|
130
|
+
out.push(validateDiagnostic({
|
|
131
|
+
code: "GUARD_CHAIN_NOT_ALLOWED",
|
|
132
|
+
severity: "error",
|
|
133
|
+
path,
|
|
134
|
+
value: guardName,
|
|
135
|
+
expected: "an unguarded Procedure",
|
|
136
|
+
message: `${target.kind} '${target.metadata.name}' uses '${guardName}' as a guard, but guard chains are not allowed.`,
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return out;
|
|
141
|
+
}
|
|
142
|
+
export function checkTriggerRefs(triggers, proceduresByName, filePaths, schemasByName) {
|
|
143
|
+
const out = [];
|
|
144
|
+
const httpRoutes = new Map();
|
|
145
|
+
// One description warning per Procedure, not per surface it is exposed on.
|
|
146
|
+
const undescribedMcpProcedures = new Set();
|
|
147
|
+
for (const t of triggers) {
|
|
148
|
+
const procName = t.spec.target.procedure;
|
|
149
|
+
if (!proceduresByName.has(procName)) {
|
|
150
|
+
out.push(validateDiagnostic({
|
|
151
|
+
code: "TRIGGER_TARGET_PROCEDURE_UNKNOWN",
|
|
152
|
+
severity: "error",
|
|
153
|
+
path: manifestPath("Trigger", t.metadata.name, "/spec/target/procedure", filePaths),
|
|
154
|
+
value: procName,
|
|
155
|
+
expected: "name of a declared Procedure",
|
|
156
|
+
candidates: [...proceduresByName.keys()],
|
|
157
|
+
suggestion: bestMatch(procName, [...proceduresByName.keys()]),
|
|
158
|
+
message: `Trigger '${t.metadata.name}' targets unknown Procedure '${procName}'.`,
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
161
|
+
if (t.spec.source.kind === "schedule") {
|
|
162
|
+
const target = proceduresByName.get(procName);
|
|
163
|
+
if (target && (target.spec.requires?.auth?.all.length ?? 0) > 0) {
|
|
164
|
+
out.push(validateDiagnostic({
|
|
165
|
+
code: "SCHEDULE_AUTH_INVALID",
|
|
166
|
+
severity: "error",
|
|
167
|
+
path: manifestPath("Trigger", t.metadata.name, "/spec/target/procedure", filePaths),
|
|
168
|
+
value: procName,
|
|
169
|
+
expected: "a Procedure without user or staff authorization requirements",
|
|
170
|
+
message: `Scheduled Trigger '${t.metadata.name}' cannot satisfy '${procName}' authorization with a system caller.`,
|
|
171
|
+
}));
|
|
172
|
+
}
|
|
173
|
+
if (target && !jsonSchemaToZod(target.spec.input).safeParse({}).success) {
|
|
174
|
+
out.push(validateDiagnostic({
|
|
175
|
+
code: "SCHEDULE_INPUT_INVALID",
|
|
176
|
+
severity: "error",
|
|
177
|
+
path: manifestPath("Trigger", t.metadata.name, "/spec/target/procedure", filePaths),
|
|
178
|
+
value: procName,
|
|
179
|
+
expected: "a Procedure whose input accepts an empty object",
|
|
180
|
+
message: `Scheduled Trigger '${t.metadata.name}' cannot supply required Procedure input to '${procName}'.`,
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (t.spec.source.kind === "http") {
|
|
185
|
+
const httpPath = t.spec.source.path;
|
|
186
|
+
const isValidPrefix = httpPath.startsWith("/api/");
|
|
187
|
+
if (!isValidPrefix) {
|
|
188
|
+
out.push(validateDiagnostic({
|
|
189
|
+
code: "TRIGGER_PATH_INVALID",
|
|
190
|
+
severity: "error",
|
|
191
|
+
path: manifestPath("Trigger", t.metadata.name, "/spec/source/path", filePaths),
|
|
192
|
+
value: httpPath,
|
|
193
|
+
expected: "path starting with '/api/'",
|
|
194
|
+
message: `Trigger '${t.metadata.name}' has path '${httpPath}' — http Trigger ` +
|
|
195
|
+
`paths MUST start with '/api/' so adapters can route public ` +
|
|
196
|
+
`pages and Procedure endpoints without ambiguity.`,
|
|
197
|
+
}));
|
|
198
|
+
}
|
|
199
|
+
// Only track valid paths for collision detection — emitting both
|
|
200
|
+
// TRIGGER_PATH_INVALID and TRIGGER_PATH_COLLISION for the same
|
|
201
|
+
// bad path produces noisy diagnostics that misdescribe the root
|
|
202
|
+
// cause (collision is secondary; the path is the real error).
|
|
203
|
+
const key = `${t.spec.source.method} ${httpPath}`;
|
|
204
|
+
const prior = httpRoutes.get(key);
|
|
205
|
+
if (prior) {
|
|
206
|
+
out.push(validateDiagnostic({
|
|
207
|
+
code: "TRIGGER_PATH_COLLISION",
|
|
208
|
+
severity: "error",
|
|
209
|
+
path: manifestPath("Trigger", t.metadata.name, "/spec/source", filePaths),
|
|
210
|
+
value: key,
|
|
211
|
+
expected: `unique (method, path) across all http Triggers (also declared by '${prior}')`,
|
|
212
|
+
message: `Trigger '${t.metadata.name}' shares route ${key} with Trigger '${prior}'.`,
|
|
213
|
+
}));
|
|
214
|
+
}
|
|
215
|
+
else if (isValidPrefix) {
|
|
216
|
+
httpRoutes.set(key, t.metadata.name);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (t.spec.source.kind === "mcp") {
|
|
220
|
+
// An MCP tool is described to a cold agent by `spec.description`.
|
|
221
|
+
// The catalog falls back to "Invoke Procedure '<name>'." when it is
|
|
222
|
+
// absent, which reads like a description and hides the gap; the
|
|
223
|
+
// authoring gate is the one place that can still see it (#970).
|
|
224
|
+
const target = proceduresByName.get(procName);
|
|
225
|
+
if (target && !undescribedMcpProcedures.has(procName)
|
|
226
|
+
&& !resolveLocalizedText(target.spec.description, "en")?.trim()) {
|
|
227
|
+
undescribedMcpProcedures.add(procName);
|
|
228
|
+
out.push(validateDiagnostic({
|
|
229
|
+
code: "MCP_TOOL_DESCRIPTION_MISSING",
|
|
230
|
+
severity: "warning",
|
|
231
|
+
path: manifestPath("Procedure", procName, "/spec/description", filePaths),
|
|
232
|
+
value: null,
|
|
233
|
+
expected: "a description an agent can choose the tool by",
|
|
234
|
+
message: `Procedure '${procName}' is exposed as an MCP tool on the ${t.spec.source.surface} ` +
|
|
235
|
+
`surface by Trigger '${t.metadata.name}' but has no spec.description; ` +
|
|
236
|
+
`tools/list will show a generated placeholder.`,
|
|
237
|
+
}));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// a hook target is consumer code: an inline program would write inside a before hook, which fails open (ADR-0032 decision 3)
|
|
241
|
+
const hookTarget = t.spec.source.kind === "lifecycle" ? proceduresByName.get(t.spec.target.procedure) : undefined;
|
|
242
|
+
if (hookTarget && !("ref" in hookTarget.spec.handler)) {
|
|
243
|
+
out.push(validateDiagnostic({
|
|
244
|
+
code: "LIFECYCLE_TARGET_NOT_REF",
|
|
245
|
+
severity: "error",
|
|
246
|
+
path: manifestPath("Trigger", t.metadata.name, "/spec/target/procedure", filePaths),
|
|
247
|
+
value: t.spec.target.procedure,
|
|
248
|
+
expected: "a Procedure with a ref handler",
|
|
249
|
+
message: `Lifecycle Trigger '${t.metadata.name}' targets '${t.spec.target.procedure}', whose handler is an inline program; a hook target must use a ref handler.`,
|
|
250
|
+
}));
|
|
251
|
+
}
|
|
252
|
+
if (t.spec.source.kind === "lifecycle" && schemasByName && !schemasByName.has(t.spec.source.schema)) {
|
|
253
|
+
const schemaName = t.spec.source.schema;
|
|
254
|
+
out.push(validateDiagnostic({
|
|
255
|
+
code: "LIFECYCLE_SCHEMA_UNKNOWN",
|
|
256
|
+
severity: "error",
|
|
257
|
+
path: manifestPath("Trigger", t.metadata.name, "/spec/source/schema", filePaths),
|
|
258
|
+
value: schemaName,
|
|
259
|
+
expected: "name of a declared Schema",
|
|
260
|
+
candidates: [...schemasByName.keys()],
|
|
261
|
+
suggestion: bestMatch(schemaName, [...schemasByName.keys()]),
|
|
262
|
+
message: `Trigger '${t.metadata.name}' watches unknown Schema '${schemaName}'.`,
|
|
263
|
+
}));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return out;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* MCP tools come only from Views and Procedures (ADR-0032): a View's tool and a Procedure's tool share one namespace, named by the
|
|
270
|
+
* manifest name with kebab folded to snake. Internal Views are never tools.
|
|
271
|
+
*/
|
|
272
|
+
export function checkMcpToolNameCollisions(views, procedures, triggers, filePaths) {
|
|
273
|
+
const seen = new Map();
|
|
274
|
+
const out = [];
|
|
275
|
+
const exposed = new Set(triggers.flatMap((t) => (t.spec.source.kind === "mcp" ? [t.spec.target.procedure] : [])));
|
|
276
|
+
const claim = (kind, name) => {
|
|
277
|
+
const segment = mcpToolNameSegment(name);
|
|
278
|
+
if ((kind === "View" || exposed.has(name)) && (segment.length > 128 || !/^[A-Za-z0-9_.-]+$/.test(segment))) {
|
|
279
|
+
out.push(validateDiagnostic({
|
|
280
|
+
code: "MCP_TOOL_NAME_COLLISION",
|
|
281
|
+
severity: "error",
|
|
282
|
+
path: manifestPath(kind, name, "/metadata/name", filePaths),
|
|
283
|
+
value: segment,
|
|
284
|
+
expected: "an MCP tool name of at most 128 characters from [A-Za-z0-9_.-]",
|
|
285
|
+
message: `${kind} '${name}' cannot be an MCP tool name: it must be at most 128 characters from [A-Za-z0-9_.-].`,
|
|
286
|
+
}));
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
const prior = seen.get(segment);
|
|
290
|
+
if (prior && prior !== `${kind} ${name}`) {
|
|
291
|
+
out.push(validateDiagnostic({
|
|
292
|
+
code: "MCP_TOOL_NAME_COLLISION",
|
|
293
|
+
severity: "error",
|
|
294
|
+
path: manifestPath(kind, name, "/metadata/name", filePaths),
|
|
295
|
+
value: segment,
|
|
296
|
+
expected: `${kind} name unique after kebab→snake mangling (collides with ${prior})`,
|
|
297
|
+
message: `${kind} '${name}' mangles to MCP tool name '${segment}', which already comes from ${prior}.`,
|
|
298
|
+
}));
|
|
299
|
+
}
|
|
300
|
+
else if (!prior)
|
|
301
|
+
seen.set(segment, `${kind} ${name}`);
|
|
302
|
+
};
|
|
303
|
+
for (const view of views)
|
|
304
|
+
if (view.spec.surface !== "internal")
|
|
305
|
+
claim("View", view.metadata.name);
|
|
306
|
+
for (const procedure of procedures)
|
|
307
|
+
claim("Procedure", procedure.metadata.name);
|
|
308
|
+
const mcpTriggers = new Map();
|
|
309
|
+
for (const trigger of triggers) {
|
|
310
|
+
const source = trigger.spec.source;
|
|
311
|
+
if (source.kind !== "mcp")
|
|
312
|
+
continue;
|
|
313
|
+
const tool = mcpToolNameSegment(trigger.spec.target.procedure);
|
|
314
|
+
const key = `${source.surface}\0${tool}`;
|
|
315
|
+
const prior = mcpTriggers.get(key);
|
|
316
|
+
if (prior) {
|
|
317
|
+
out.push(validateDiagnostic({
|
|
318
|
+
code: "MCP_TOOL_NAME_COLLISION",
|
|
319
|
+
severity: "error",
|
|
320
|
+
path: manifestPath("Trigger", trigger.metadata.name, "/spec/source", filePaths),
|
|
321
|
+
value: tool,
|
|
322
|
+
expected: `one MCP Trigger per surface and tool name (already bound by '${prior}')`,
|
|
323
|
+
message: `Trigger '${trigger.metadata.name}' and Trigger '${prior}' both bind '${tool}' on the ${source.surface} MCP surface; invocation would lose Trigger identity.`,
|
|
324
|
+
}));
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
mcpTriggers.set(key, trigger.metadata.name);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return out;
|
|
331
|
+
}
|
|
332
|
+
function hasType(schema, types) {
|
|
333
|
+
const declared = schema?.type;
|
|
334
|
+
const list = Array.isArray(declared) ? declared : declared === undefined ? [] : [declared];
|
|
335
|
+
return list.length > 0 && list.every((type) => types.includes(type) || type === "null") && list.some((type) => types.includes(type));
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=TriggerGraphChecks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerGraphChecks.js","sourceRoot":"","sources":["../../../../src/spec/domain/service/TriggerGraphChecks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Trigger.spec and its sources: http, lifecycle, mcp and schedule. */
|
|
2
|
+
import type { TriggerManifest } from "../model/ManifestGrammar.js";
|
|
3
|
+
export declare function validateTriggerSpec(m: TriggerManifest, idx: number): TriggerManifest;
|
|
4
|
+
//# sourceMappingURL=TriggerSpecChecks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerSpecChecks.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/service/TriggerSpecChecks.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,KAAK,EAA6B,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA+F9F,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,CAgCpF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ManifestParseError, V01_HTTP_METHODS, V01_LIFECYCLE_HOOKS, V01_MCP_TRIGGER_SURFACES, V01_TRIGGER_SOURCE_KINDS, rejectUnknownKeys } from "./ManifestFieldChecks.js";
|
|
2
|
+
function validateHttpSource(source, idx) {
|
|
3
|
+
rejectUnknownKeys(source, ["kind", "method", "path"], idx, "/spec/source");
|
|
4
|
+
const method = source["method"];
|
|
5
|
+
if (typeof method !== "string" || !V01_HTTP_METHODS.has(method)) {
|
|
6
|
+
throw new ManifestParseError(`Trigger.spec.source.method must be one of ${[...V01_HTTP_METHODS].join(", ")} (v0.1); got ${JSON.stringify(method)}`, idx, "/spec/source/method");
|
|
7
|
+
}
|
|
8
|
+
const path = source["path"];
|
|
9
|
+
if (typeof path !== "string" || path.length === 0 || !path.startsWith("/")) {
|
|
10
|
+
throw new ManifestParseError("Trigger.spec.source.path is required (non-empty string starting with '/')", idx, "/spec/source/path");
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function validateLifecycleSource(source, idx) {
|
|
14
|
+
rejectUnknownKeys(source, ["kind", "schema", "on"], idx, "/spec/source");
|
|
15
|
+
if (typeof source["schema"] !== "string" || source["schema"].length === 0) {
|
|
16
|
+
throw new ManifestParseError("Trigger.spec.source.schema is required (Schema metadata.name) when source.kind is 'lifecycle'", idx, "/spec/source/schema");
|
|
17
|
+
}
|
|
18
|
+
const on = source["on"];
|
|
19
|
+
if (!Array.isArray(on) || on.length === 0) {
|
|
20
|
+
throw new ManifestParseError(`Trigger.spec.source.on must be a non-empty array of hook names (one of ${[...V01_LIFECYCLE_HOOKS].join(", ")})`, idx, "/spec/source/on");
|
|
21
|
+
}
|
|
22
|
+
for (let i = 0; i < on.length; i++) {
|
|
23
|
+
const hook = on[i];
|
|
24
|
+
if (typeof hook !== "string" || !V01_LIFECYCLE_HOOKS.has(hook)) {
|
|
25
|
+
throw new ManifestParseError(`Trigger.spec.source.on[${i}] must be one of ${[...V01_LIFECYCLE_HOOKS].join(", ")}; got ${JSON.stringify(hook)}`, idx, `/spec/source/on/${i}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function validateMcpSource(source, idx) {
|
|
30
|
+
rejectUnknownKeys(source, ["kind", "surface"], idx, "/spec/source");
|
|
31
|
+
const surface = source["surface"];
|
|
32
|
+
if (typeof surface !== "string" || !V01_MCP_TRIGGER_SURFACES.has(surface)) {
|
|
33
|
+
throw new ManifestParseError(`Trigger.spec.source.surface must be one of ${[...V01_MCP_TRIGGER_SURFACES].join(", ")}; got ${JSON.stringify(surface)}`, idx, "/spec/source/surface");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function validateScheduleSource(source, idx) {
|
|
37
|
+
rejectUnknownKeys(source, ["kind", "cron", "enabled"], idx, "/spec/source");
|
|
38
|
+
const cron = source["cron"];
|
|
39
|
+
// Five-field POSIX cron in UTC: weekday 0 = Sunday through 6.
|
|
40
|
+
const bounds = [[0, 59], [0, 23], [1, 31], [1, 12], [0, 6]];
|
|
41
|
+
const fields = typeof cron === "string" ? cron.split(" ") : [];
|
|
42
|
+
const valid = fields.length === 5 && fields.every((field, index) => {
|
|
43
|
+
const [min, max] = bounds[index];
|
|
44
|
+
return field.split(",").every((part) => {
|
|
45
|
+
const match = /^(\*|\d+)(?:-(\d+))?(?:\/(\d+))?$/.exec(part);
|
|
46
|
+
if (!match)
|
|
47
|
+
return false;
|
|
48
|
+
const start = match[1] === "*" ? min : Number(match[1]);
|
|
49
|
+
const end = match[2] === undefined ? (match[1] === "*" ? max : start) : Number(match[2]);
|
|
50
|
+
const step = match[3] === undefined ? 1 : Number(match[3]);
|
|
51
|
+
return start >= min && end <= max && start <= end && step >= 1 && (match[3] === undefined || match[1] === "*" || match[2] !== undefined);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
if (!valid)
|
|
55
|
+
throw new ManifestParseError("Trigger.spec.source.cron must be a five-field POSIX UTC cron expression (minute hour day month weekday, 0=Sunday)", idx, "/spec/source/cron");
|
|
56
|
+
if (source["enabled"] !== undefined && typeof source["enabled"] !== "boolean") {
|
|
57
|
+
throw new ManifestParseError("Trigger.spec.source.enabled must be boolean", idx, "/spec/source/enabled");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function validateTriggerSpec(m, idx) {
|
|
61
|
+
const s = m.spec;
|
|
62
|
+
rejectUnknownKeys(s, ["source", "target"], idx, "/spec");
|
|
63
|
+
const source = s["source"];
|
|
64
|
+
if (!source) {
|
|
65
|
+
throw new ManifestParseError("Trigger.spec.source is required", idx, "/spec/source");
|
|
66
|
+
}
|
|
67
|
+
const sourceKind = source["kind"];
|
|
68
|
+
if (typeof sourceKind !== "string") {
|
|
69
|
+
throw new ManifestParseError(`Trigger.spec.source.kind is required (one of ${[...V01_TRIGGER_SOURCE_KINDS].join(", ")})`, idx, "/spec/source/kind");
|
|
70
|
+
}
|
|
71
|
+
if (!V01_TRIGGER_SOURCE_KINDS.has(sourceKind)) {
|
|
72
|
+
throw new ManifestParseError(`Trigger.spec.source.kind must be one of ${[...V01_TRIGGER_SOURCE_KINDS].join(", ")}; got '${sourceKind}'`, idx, "/spec/source/kind");
|
|
73
|
+
}
|
|
74
|
+
if (sourceKind === "http")
|
|
75
|
+
validateHttpSource(source, idx);
|
|
76
|
+
else if (sourceKind === "lifecycle")
|
|
77
|
+
validateLifecycleSource(source, idx);
|
|
78
|
+
else if (sourceKind === "mcp")
|
|
79
|
+
validateMcpSource(source, idx);
|
|
80
|
+
else if (sourceKind === "schedule")
|
|
81
|
+
validateScheduleSource(source, idx);
|
|
82
|
+
const target = s["target"];
|
|
83
|
+
if (!target || typeof target["procedure"] !== "string") {
|
|
84
|
+
throw new ManifestParseError("Trigger.spec.target.procedure is required (string)", idx, "/spec/target/procedure");
|
|
85
|
+
}
|
|
86
|
+
rejectUnknownKeys(target, ["procedure"], idx, "/spec/target");
|
|
87
|
+
return m;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=TriggerSpecChecks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerSpecChecks.js","sourceRoot":"","sources":["../../../../src/spec/domain/service/TriggerSpecChecks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type SchemaManifest, type ViewManifest } from "../model/ManifestGrammar.js";
|
|
2
|
+
import type { SchemaListFilter, SchemaListPresentation, SchemaNavPresentation, ViewListPresentation } from "./SchemaAdminUiChecker.js";
|
|
3
|
+
/** Read descriptors from an already parsed and linked manifest; no authoring checks at request time. */
|
|
4
|
+
export declare function projectSchemaAdminUi(schema: SchemaManifest): {
|
|
5
|
+
readonly filter: SchemaListFilter | null;
|
|
6
|
+
readonly list: SchemaListPresentation;
|
|
7
|
+
readonly nav: SchemaNavPresentation | null;
|
|
8
|
+
readonly sortableFields: readonly string[];
|
|
9
|
+
};
|
|
10
|
+
export declare function projectViewAdminUi(view: ViewManifest): ViewListPresentation;
|
|
11
|
+
//# sourceMappingURL=ValidatedAdminUiProjection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidatedAdminUiProjection.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/service/ValidatedAdminUiProjection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACpH,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEvI,wGAAwG;AACxG,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG;IAC5D,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C,CAkBA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,oBAAoB,CAG3E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { enumOptions, resolveMantleRef } from "../model/ManifestGrammar.js";
|
|
2
|
+
/** Read descriptors from an already parsed and linked manifest; no authoring checks at request time. */
|
|
3
|
+
export function projectSchemaAdminUi(schema) {
|
|
4
|
+
const list = (schema.spec.uiSchema?.["list"] ?? {});
|
|
5
|
+
const field = list["filterField"];
|
|
6
|
+
const nav = schema.spec.uiSchema?.["nav"];
|
|
7
|
+
const required = new Set(schema.spec.schema.required ?? []);
|
|
8
|
+
const parentField = nav?.["standalone"] === true
|
|
9
|
+
? nav["parentField"] ?? Object.entries(schema.spec.schema.properties ?? {})
|
|
10
|
+
.find(([name, property]) => required.has(name) && resolveMantleRef(property)?.field === "id")?.[0]
|
|
11
|
+
: undefined;
|
|
12
|
+
const parent = parentField && resolveMantleRef(schema.spec.schema.properties?.[parentField]);
|
|
13
|
+
return {
|
|
14
|
+
filter: field ? { field, values: enumOptions(schema.spec.schema.properties?.[field])?.map((o) => o.value) ?? [] } : null,
|
|
15
|
+
list: { primaryField: list["primaryField"] ?? null, columns: list["columns"] ?? [] },
|
|
16
|
+
nav: nav?.["standalone"] === true && parentField && parent
|
|
17
|
+
? { standalone: true, parentField, parentCollection: parent.schema } : null,
|
|
18
|
+
sortableFields: [...new Set([...(schema.spec.uniqueIndexes ?? []), ...(schema.spec.indexes ?? [])]
|
|
19
|
+
.map((index) => index[0]).filter((name) => name !== undefined && required.has(name)))],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function projectViewAdminUi(view) {
|
|
23
|
+
const list = (view.spec.uiSchema?.["list"] ?? {});
|
|
24
|
+
return { columns: list["columns"] ?? [], searchFields: list["searchFields"] ?? [], filterFields: list["filterFields"] ?? [] };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=ValidatedAdminUiProjection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidatedAdminUiProjection.js","sourceRoot":"","sources":["../../../../src/spec/domain/service/ValidatedAdminUiProjection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** View.spec.uiSchema: the Admin list a View presents. */
|
|
2
|
+
import type { ViewManifest } from "../model/ManifestGrammar.js";
|
|
3
|
+
import type { SchemaAdminUiProblem } from "./SchemaAdminUiChecker.js";
|
|
4
|
+
export interface ViewListPresentation {
|
|
5
|
+
readonly columns: readonly string[];
|
|
6
|
+
readonly searchFields: readonly string[];
|
|
7
|
+
readonly filterFields: readonly string[];
|
|
8
|
+
}
|
|
9
|
+
/** Validate the deliberately small Admin list contract for staff Views. */
|
|
10
|
+
export declare function checkViewAdminUi(view: ViewManifest): {
|
|
11
|
+
readonly list: ViewListPresentation;
|
|
12
|
+
readonly problems: readonly SchemaAdminUiProblem[];
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=ViewAdminUiChecker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewAdminUiChecker.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/service/ViewAdminUiChecker.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAItE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAQD,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG;IACpD,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACpD,CA8EA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
const problem = (pointer, value, expected, message) => ({ pointer, value, expected, message });
|
|
2
|
+
const EMPTY_VIEW_LIST = {
|
|
3
|
+
columns: [],
|
|
4
|
+
searchFields: [],
|
|
5
|
+
filterFields: [],
|
|
6
|
+
};
|
|
7
|
+
/** Validate the deliberately small Admin list contract for staff Views. */
|
|
8
|
+
export function checkViewAdminUi(view) {
|
|
9
|
+
const uiSchema = view.spec.uiSchema;
|
|
10
|
+
if (uiSchema === undefined)
|
|
11
|
+
return { list: EMPTY_VIEW_LIST, problems: [] };
|
|
12
|
+
if (view.spec.surface !== "staff") {
|
|
13
|
+
return { list: EMPTY_VIEW_LIST, problems: [problem("/spec/uiSchema", uiSchema, "Admin UI configuration on a surface: staff View", "View.spec.uiSchema is only supported for surface: staff Views.")] };
|
|
14
|
+
}
|
|
15
|
+
if (!uiSchema || typeof uiSchema !== "object" || Array.isArray(uiSchema)) {
|
|
16
|
+
return { list: EMPTY_VIEW_LIST, problems: [problem("/spec/uiSchema", uiSchema, "an object", "View.spec.uiSchema must be an object.")] };
|
|
17
|
+
}
|
|
18
|
+
const unknownRoot = Object.keys(uiSchema).find((key) => key !== "list");
|
|
19
|
+
if (unknownRoot) {
|
|
20
|
+
return { list: EMPTY_VIEW_LIST, problems: [problem(`/spec/uiSchema/${unknownRoot}`, uiSchema[unknownRoot], "list", `View.spec.uiSchema.${unknownRoot} is not supported.`)] };
|
|
21
|
+
}
|
|
22
|
+
const list = uiSchema["list"];
|
|
23
|
+
if (list === undefined)
|
|
24
|
+
return { list: EMPTY_VIEW_LIST, problems: [] };
|
|
25
|
+
if (!list || typeof list !== "object" || Array.isArray(list)) {
|
|
26
|
+
return { list: EMPTY_VIEW_LIST, problems: [problem("/spec/uiSchema/list", list, "an object", "View.spec.uiSchema.list must be an object.")] };
|
|
27
|
+
}
|
|
28
|
+
const config = list;
|
|
29
|
+
const allowed = new Set(["columns", "searchFields", "filterFields"]);
|
|
30
|
+
const unknown = Object.keys(config).find((key) => !allowed.has(key));
|
|
31
|
+
if (unknown) {
|
|
32
|
+
return { list: EMPTY_VIEW_LIST, problems: [problem(`/spec/uiSchema/list/${unknown}`, config[unknown], "columns, searchFields, or filterFields", `View.spec.uiSchema.list.${unknown} is not supported.`)] };
|
|
33
|
+
}
|
|
34
|
+
const normalized = {
|
|
35
|
+
columns: [],
|
|
36
|
+
searchFields: [],
|
|
37
|
+
filterFields: [],
|
|
38
|
+
};
|
|
39
|
+
for (const key of Object.keys(normalized)) {
|
|
40
|
+
const raw = config[key];
|
|
41
|
+
if (raw === undefined)
|
|
42
|
+
continue;
|
|
43
|
+
if (!Array.isArray(raw) || !raw.every((field) => typeof field === "string" && field.length > 0 && !/["\\\0]/.test(field))) {
|
|
44
|
+
return { list: EMPTY_VIEW_LIST, problems: [problem(`/spec/uiSchema/list/${key}`, raw, "an array of non-empty View output field names", `View.spec.uiSchema.list.${key} must be an array of field-name strings.`)] };
|
|
45
|
+
}
|
|
46
|
+
if (new Set(raw).size !== raw.length) {
|
|
47
|
+
return { list: EMPTY_VIEW_LIST, problems: [problem(`/spec/uiSchema/list/${key}`, raw, "field names without duplicates", `View.spec.uiSchema.list.${key} must not repeat a field.`)] };
|
|
48
|
+
}
|
|
49
|
+
normalized[key] = raw;
|
|
50
|
+
}
|
|
51
|
+
return { list: normalized, problems: [] };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=ViewAdminUiChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewAdminUiChecker.js","sourceRoot":"","sources":["../../../../src/spec/domain/service/ViewAdminUiChecker.ts"],"names":[],"mappings":"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"}
|