@aotter/mantle-runtime 0.0.11-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +14 -0
- package/dist/domain/index.d.ts +4 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +4 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/model/EntryRow.d.ts +59 -0
- package/dist/domain/model/EntryRow.d.ts.map +1 -0
- package/dist/domain/model/EntryRow.js +42 -0
- package/dist/domain/model/EntryRow.js.map +1 -0
- package/dist/domain/model/HandlerContext.d.ts +65 -0
- package/dist/domain/model/HandlerContext.d.ts.map +1 -0
- package/dist/domain/model/HandlerContext.js +2 -0
- package/dist/domain/model/HandlerContext.js.map +1 -0
- package/dist/domain/model/SeoMeta.d.ts +49 -0
- package/dist/domain/model/SeoMeta.d.ts.map +1 -0
- package/dist/domain/model/SeoMeta.js +2 -0
- package/dist/domain/model/SeoMeta.js.map +1 -0
- package/dist/domain/model/TemplateRegistry.d.ts +47 -0
- package/dist/domain/model/TemplateRegistry.d.ts.map +1 -0
- package/dist/domain/model/TemplateRegistry.js +17 -0
- package/dist/domain/model/TemplateRegistry.js.map +1 -0
- package/dist/domain/model/index.d.ts +7 -0
- package/dist/domain/model/index.d.ts.map +1 -0
- package/dist/domain/model/index.js +6 -0
- package/dist/domain/model/index.js.map +1 -0
- package/dist/domain/port/AssetServer.d.ts +21 -0
- package/dist/domain/port/AssetServer.d.ts.map +1 -0
- package/dist/domain/port/AssetServer.js +2 -0
- package/dist/domain/port/AssetServer.js.map +1 -0
- package/dist/domain/port/Clock.d.ts +13 -0
- package/dist/domain/port/Clock.d.ts.map +1 -0
- package/dist/domain/port/Clock.js +2 -0
- package/dist/domain/port/Clock.js.map +1 -0
- package/dist/domain/port/DatabaseDriver.d.ts +91 -0
- package/dist/domain/port/DatabaseDriver.d.ts.map +1 -0
- package/dist/domain/port/DatabaseDriver.js +2 -0
- package/dist/domain/port/DatabaseDriver.js.map +1 -0
- package/dist/domain/port/DeferredHookDispatcher.d.ts +55 -0
- package/dist/domain/port/DeferredHookDispatcher.d.ts.map +1 -0
- package/dist/domain/port/DeferredHookDispatcher.js +16 -0
- package/dist/domain/port/DeferredHookDispatcher.js.map +1 -0
- package/dist/domain/port/EmailSender.d.ts +31 -0
- package/dist/domain/port/EmailSender.d.ts.map +1 -0
- package/dist/domain/port/EmailSender.js +2 -0
- package/dist/domain/port/EmailSender.js.map +1 -0
- package/dist/domain/port/EntryRepository.d.ts +132 -0
- package/dist/domain/port/EntryRepository.d.ts.map +1 -0
- package/dist/domain/port/EntryRepository.js +2 -0
- package/dist/domain/port/EntryRepository.js.map +1 -0
- package/dist/domain/port/HandlerRegistry.d.ts +38 -0
- package/dist/domain/port/HandlerRegistry.d.ts.map +1 -0
- package/dist/domain/port/HandlerRegistry.js +27 -0
- package/dist/domain/port/HandlerRegistry.js.map +1 -0
- package/dist/domain/port/IdGenerator.d.ts +28 -0
- package/dist/domain/port/IdGenerator.d.ts.map +1 -0
- package/dist/domain/port/IdGenerator.js +5 -0
- package/dist/domain/port/IdGenerator.js.map +1 -0
- package/dist/domain/port/KvCache.d.ts +34 -0
- package/dist/domain/port/KvCache.d.ts.map +1 -0
- package/dist/domain/port/KvCache.js +2 -0
- package/dist/domain/port/KvCache.js.map +1 -0
- package/dist/domain/port/LifecycleHookRunner.d.ts +41 -0
- package/dist/domain/port/LifecycleHookRunner.d.ts.map +1 -0
- package/dist/domain/port/LifecycleHookRunner.js +2 -0
- package/dist/domain/port/LifecycleHookRunner.js.map +1 -0
- package/dist/domain/port/MediaStorage.d.ts +102 -0
- package/dist/domain/port/MediaStorage.d.ts.map +1 -0
- package/dist/domain/port/MediaStorage.js +2 -0
- package/dist/domain/port/MediaStorage.js.map +1 -0
- package/dist/domain/port/PublishOrchestrator.d.ts +25 -0
- package/dist/domain/port/PublishOrchestrator.d.ts.map +1 -0
- package/dist/domain/port/PublishOrchestrator.js +2 -0
- package/dist/domain/port/PublishOrchestrator.js.map +1 -0
- package/dist/domain/port/SiteConfigRepository.d.ts +27 -0
- package/dist/domain/port/SiteConfigRepository.d.ts.map +1 -0
- package/dist/domain/port/SiteConfigRepository.js +2 -0
- package/dist/domain/port/SiteConfigRepository.js.map +1 -0
- package/dist/domain/port/index.d.ts +30 -0
- package/dist/domain/port/index.d.ts.map +1 -0
- package/dist/domain/port/index.js +5 -0
- package/dist/domain/port/index.js.map +1 -0
- package/dist/domain/service/AbsoluteUrl.d.ts +6 -0
- package/dist/domain/service/AbsoluteUrl.d.ts.map +1 -0
- package/dist/domain/service/AbsoluteUrl.js +33 -0
- package/dist/domain/service/AbsoluteUrl.js.map +1 -0
- package/dist/domain/service/AuthPredicateEvaluator.d.ts +29 -0
- package/dist/domain/service/AuthPredicateEvaluator.d.ts.map +1 -0
- package/dist/domain/service/AuthPredicateEvaluator.js +48 -0
- package/dist/domain/service/AuthPredicateEvaluator.js.map +1 -0
- package/dist/domain/service/BuiltinProjector.d.ts +50 -0
- package/dist/domain/service/BuiltinProjector.d.ts.map +1 -0
- package/dist/domain/service/BuiltinProjector.js +61 -0
- package/dist/domain/service/BuiltinProjector.js.map +1 -0
- package/dist/domain/service/EntrySeoSupport.d.ts +27 -0
- package/dist/domain/service/EntrySeoSupport.d.ts.map +1 -0
- package/dist/domain/service/EntrySeoSupport.js +13 -0
- package/dist/domain/service/EntrySeoSupport.js.map +1 -0
- package/dist/domain/service/HtmlRenderer.d.ts +32 -0
- package/dist/domain/service/HtmlRenderer.d.ts.map +1 -0
- package/dist/domain/service/HtmlRenderer.js +38 -0
- package/dist/domain/service/HtmlRenderer.js.map +1 -0
- package/dist/domain/service/LocaleNegotiator.d.ts +29 -0
- package/dist/domain/service/LocaleNegotiator.d.ts.map +1 -0
- package/dist/domain/service/LocaleNegotiator.js +62 -0
- package/dist/domain/service/LocaleNegotiator.js.map +1 -0
- package/dist/domain/service/MarkdownSerializer.d.ts +48 -0
- package/dist/domain/service/MarkdownSerializer.d.ts.map +1 -0
- package/dist/domain/service/MarkdownSerializer.js +109 -0
- package/dist/domain/service/MarkdownSerializer.js.map +1 -0
- package/dist/domain/service/McpToolNaming.d.ts +12 -0
- package/dist/domain/service/McpToolNaming.d.ts.map +1 -0
- package/dist/domain/service/McpToolNaming.js +14 -0
- package/dist/domain/service/McpToolNaming.js.map +1 -0
- package/dist/domain/service/Pagination.d.ts +15 -0
- package/dist/domain/service/Pagination.d.ts.map +1 -0
- package/dist/domain/service/Pagination.js +29 -0
- package/dist/domain/service/Pagination.js.map +1 -0
- package/dist/domain/service/PathMatcher.d.ts +15 -0
- package/dist/domain/service/PathMatcher.d.ts.map +1 -0
- package/dist/domain/service/PathMatcher.js +54 -0
- package/dist/domain/service/PathMatcher.js.map +1 -0
- package/dist/domain/service/PreviewBanner.d.ts +10 -0
- package/dist/domain/service/PreviewBanner.d.ts.map +1 -0
- package/dist/domain/service/PreviewBanner.js +37 -0
- package/dist/domain/service/PreviewBanner.js.map +1 -0
- package/dist/domain/service/PublicPathResolver.d.ts +41 -0
- package/dist/domain/service/PublicPathResolver.d.ts.map +1 -0
- package/dist/domain/service/PublicPathResolver.js +24 -0
- package/dist/domain/service/PublicPathResolver.js.map +1 -0
- package/dist/domain/service/PublishKeys.d.ts +42 -0
- package/dist/domain/service/PublishKeys.d.ts.map +1 -0
- package/dist/domain/service/PublishKeys.js +69 -0
- package/dist/domain/service/PublishKeys.js.map +1 -0
- package/dist/domain/service/SeoMetaComposer.d.ts +47 -0
- package/dist/domain/service/SeoMetaComposer.d.ts.map +1 -0
- package/dist/domain/service/SeoMetaComposer.js +174 -0
- package/dist/domain/service/SeoMetaComposer.js.map +1 -0
- package/dist/domain/service/SitemapSerializer.d.ts +19 -0
- package/dist/domain/service/SitemapSerializer.d.ts.map +1 -0
- package/dist/domain/service/SitemapSerializer.js +27 -0
- package/dist/domain/service/SitemapSerializer.js.map +1 -0
- package/dist/domain/service/TriggerIndex.d.ts +27 -0
- package/dist/domain/service/TriggerIndex.d.ts.map +1 -0
- package/dist/domain/service/TriggerIndex.js +52 -0
- package/dist/domain/service/TriggerIndex.js.map +1 -0
- package/dist/domain/service/ViewParamCoercer.d.ts +20 -0
- package/dist/domain/service/ViewParamCoercer.d.ts.map +1 -0
- package/dist/domain/service/ViewParamCoercer.js +82 -0
- package/dist/domain/service/ViewParamCoercer.js.map +1 -0
- package/dist/domain/service/ViewSqlCompiler.d.ts +29 -0
- package/dist/domain/service/ViewSqlCompiler.d.ts.map +1 -0
- package/dist/domain/service/ViewSqlCompiler.js +147 -0
- package/dist/domain/service/ViewSqlCompiler.js.map +1 -0
- package/dist/domain/service/index.d.ts +28 -0
- package/dist/domain/service/index.d.ts.map +1 -0
- package/dist/domain/service/index.js +28 -0
- package/dist/domain/service/index.js.map +1 -0
- package/dist/domain/service/io/EntryWriteGuard.d.ts +19 -0
- package/dist/domain/service/io/EntryWriteGuard.d.ts.map +1 -0
- package/dist/domain/service/io/EntryWriteGuard.js +109 -0
- package/dist/domain/service/io/EntryWriteGuard.js.map +1 -0
- package/dist/domain/service/io/JoinedEntryReader.d.ts +33 -0
- package/dist/domain/service/io/JoinedEntryReader.d.ts.map +1 -0
- package/dist/domain/service/io/JoinedEntryReader.js +95 -0
- package/dist/domain/service/io/JoinedEntryReader.js.map +1 -0
- package/dist/domain/service/io/PublishedEntries.d.ts +69 -0
- package/dist/domain/service/io/PublishedEntries.d.ts.map +1 -0
- package/dist/domain/service/io/PublishedEntries.js +116 -0
- package/dist/domain/service/io/PublishedEntries.js.map +1 -0
- package/dist/domain/service/io/index.d.ts +9 -0
- package/dist/domain/service/io/index.d.ts.map +1 -0
- package/dist/domain/service/io/index.js +9 -0
- package/dist/domain/service/io/index.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/boot/canonicalMigrations.d.ts +9 -0
- package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -0
- package/dist/infrastructure/boot/canonicalMigrations.js +162 -0
- package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -0
- package/dist/infrastructure/boot/index.d.ts +2 -0
- package/dist/infrastructure/boot/index.d.ts.map +1 -0
- package/dist/infrastructure/boot/index.js +2 -0
- package/dist/infrastructure/boot/index.js.map +1 -0
- package/dist/infrastructure/http/DiagnosticResponse.d.ts +12 -0
- package/dist/infrastructure/http/DiagnosticResponse.d.ts.map +1 -0
- package/dist/infrastructure/http/DiagnosticResponse.js +14 -0
- package/dist/infrastructure/http/DiagnosticResponse.js.map +1 -0
- package/dist/infrastructure/http/index.d.ts +2 -0
- package/dist/infrastructure/http/index.d.ts.map +1 -0
- package/dist/infrastructure/http/index.js +2 -0
- package/dist/infrastructure/http/index.js.map +1 -0
- package/dist/infrastructure/index.d.ts +12 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +12 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +60 -0
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -0
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +281 -0
- package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -0
- package/dist/infrastructure/mcp/McpResponses.d.ts +14 -0
- package/dist/infrastructure/mcp/McpResponses.d.ts.map +1 -0
- package/dist/infrastructure/mcp/McpResponses.js +49 -0
- package/dist/infrastructure/mcp/McpResponses.js.map +1 -0
- package/dist/infrastructure/mcp/McpToolCatalog.d.ts +68 -0
- package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -0
- package/dist/infrastructure/mcp/McpToolCatalog.js +231 -0
- package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -0
- package/dist/infrastructure/mcp/index.d.ts +4 -0
- package/dist/infrastructure/mcp/index.d.ts.map +1 -0
- package/dist/infrastructure/mcp/index.js +4 -0
- package/dist/infrastructure/mcp/index.js.map +1 -0
- package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +35 -0
- package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -0
- package/dist/infrastructure/persistence/DatabaseEntryRepository.js +228 -0
- package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -0
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts +12 -0
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -0
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +101 -0
- package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -0
- package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.d.ts +74 -0
- package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.d.ts.map +1 -0
- package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.js +208 -0
- package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.js.map +1 -0
- package/dist/infrastructure/persistence/index.d.ts +4 -0
- package/dist/infrastructure/persistence/index.d.ts.map +1 -0
- package/dist/infrastructure/persistence/index.js +4 -0
- package/dist/infrastructure/persistence/index.js.map +1 -0
- package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts +34 -0
- package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts.map +1 -0
- package/dist/infrastructure/render/HtmlPublishOrchestrator.js +116 -0
- package/dist/infrastructure/render/HtmlPublishOrchestrator.js.map +1 -0
- package/dist/infrastructure/render/index.d.ts +2 -0
- package/dist/infrastructure/render/index.d.ts.map +1 -0
- package/dist/infrastructure/render/index.js +2 -0
- package/dist/infrastructure/render/index.js.map +1 -0
- package/dist/runtime.d.ts +132 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +142 -0
- package/dist/runtime.js.map +1 -0
- package/dist/usecase/boot/ValidateBootUseCase.d.ts +57 -0
- package/dist/usecase/boot/ValidateBootUseCase.d.ts.map +1 -0
- package/dist/usecase/boot/ValidateBootUseCase.js +181 -0
- package/dist/usecase/boot/ValidateBootUseCase.js.map +1 -0
- package/dist/usecase/boot/index.d.ts +2 -0
- package/dist/usecase/boot/index.d.ts.map +1 -0
- package/dist/usecase/boot/index.js +2 -0
- package/dist/usecase/boot/index.js.map +1 -0
- package/dist/usecase/content/ArchiveUseCase.d.ts +20 -0
- package/dist/usecase/content/ArchiveUseCase.d.ts.map +1 -0
- package/dist/usecase/content/ArchiveUseCase.js +47 -0
- package/dist/usecase/content/ArchiveUseCase.js.map +1 -0
- package/dist/usecase/content/ContentPublishEffects.d.ts +11 -0
- package/dist/usecase/content/ContentPublishEffects.d.ts.map +1 -0
- package/dist/usecase/content/ContentPublishEffects.js +21 -0
- package/dist/usecase/content/ContentPublishEffects.js.map +1 -0
- package/dist/usecase/content/CreateDraftUseCase.d.ts +22 -0
- package/dist/usecase/content/CreateDraftUseCase.d.ts.map +1 -0
- package/dist/usecase/content/CreateDraftUseCase.js +61 -0
- package/dist/usecase/content/CreateDraftUseCase.js.map +1 -0
- package/dist/usecase/content/DeleteEntryUseCase.d.ts +20 -0
- package/dist/usecase/content/DeleteEntryUseCase.d.ts.map +1 -0
- package/dist/usecase/content/DeleteEntryUseCase.js +34 -0
- package/dist/usecase/content/DeleteEntryUseCase.js.map +1 -0
- package/dist/usecase/content/GetEntryUseCase.d.ts +13 -0
- package/dist/usecase/content/GetEntryUseCase.d.ts.map +1 -0
- package/dist/usecase/content/GetEntryUseCase.js +24 -0
- package/dist/usecase/content/GetEntryUseCase.js.map +1 -0
- package/dist/usecase/content/ListEntriesUseCase.d.ts +39 -0
- package/dist/usecase/content/ListEntriesUseCase.d.ts.map +1 -0
- package/dist/usecase/content/ListEntriesUseCase.js +58 -0
- package/dist/usecase/content/ListEntriesUseCase.js.map +1 -0
- package/dist/usecase/content/RequestPublishUseCase.d.ts +30 -0
- package/dist/usecase/content/RequestPublishUseCase.d.ts.map +1 -0
- package/dist/usecase/content/RequestPublishUseCase.js +111 -0
- package/dist/usecase/content/RequestPublishUseCase.js.map +1 -0
- package/dist/usecase/content/UnpublishUseCase.d.ts +19 -0
- package/dist/usecase/content/UnpublishUseCase.d.ts.map +1 -0
- package/dist/usecase/content/UnpublishUseCase.js +46 -0
- package/dist/usecase/content/UnpublishUseCase.js.map +1 -0
- package/dist/usecase/content/UpdateDraftUseCase.d.ts +20 -0
- package/dist/usecase/content/UpdateDraftUseCase.d.ts.map +1 -0
- package/dist/usecase/content/UpdateDraftUseCase.js +86 -0
- package/dist/usecase/content/UpdateDraftUseCase.js.map +1 -0
- package/dist/usecase/content/diagnostics.d.ts +26 -0
- package/dist/usecase/content/diagnostics.d.ts.map +1 -0
- package/dist/usecase/content/diagnostics.js +100 -0
- package/dist/usecase/content/diagnostics.js.map +1 -0
- package/dist/usecase/content/index.d.ts +15 -0
- package/dist/usecase/content/index.d.ts.map +1 -0
- package/dist/usecase/content/index.js +15 -0
- package/dist/usecase/content/index.js.map +1 -0
- package/dist/usecase/dto/content/index.d.ts +73 -0
- package/dist/usecase/dto/content/index.d.ts.map +1 -0
- package/dist/usecase/dto/content/index.js +2 -0
- package/dist/usecase/dto/content/index.js.map +1 -0
- package/dist/usecase/dto/index.d.ts +13 -0
- package/dist/usecase/dto/index.d.ts.map +1 -0
- package/dist/usecase/dto/index.js +13 -0
- package/dist/usecase/dto/index.js.map +1 -0
- package/dist/usecase/dto/lifecycle/index.d.ts +15 -0
- package/dist/usecase/dto/lifecycle/index.d.ts.map +1 -0
- package/dist/usecase/dto/lifecycle/index.js +2 -0
- package/dist/usecase/dto/lifecycle/index.js.map +1 -0
- package/dist/usecase/dto/media/index.d.ts +32 -0
- package/dist/usecase/dto/media/index.d.ts.map +1 -0
- package/dist/usecase/dto/media/index.js +8 -0
- package/dist/usecase/dto/media/index.js.map +1 -0
- package/dist/usecase/dto/procedure/index.d.ts +37 -0
- package/dist/usecase/dto/procedure/index.d.ts.map +1 -0
- package/dist/usecase/dto/procedure/index.js +2 -0
- package/dist/usecase/dto/procedure/index.js.map +1 -0
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts +14 -0
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js +2 -0
- package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js.map +1 -0
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts +8 -0
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js +2 -0
- package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js.map +1 -0
- package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts +11 -0
- package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/ComposeSitemapRequest.js +2 -0
- package/dist/usecase/dto/render/ComposeSitemapRequest.js.map +1 -0
- package/dist/usecase/dto/render/PreviewEntryRequest.d.ts +27 -0
- package/dist/usecase/dto/render/PreviewEntryRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/PreviewEntryRequest.js +2 -0
- package/dist/usecase/dto/render/PreviewEntryRequest.js.map +1 -0
- package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts +17 -0
- package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/RenderEntryLiveRequest.js +2 -0
- package/dist/usecase/dto/render/RenderEntryLiveRequest.js.map +1 -0
- package/dist/usecase/dto/render/RenderListLiveRequest.d.ts +11 -0
- package/dist/usecase/dto/render/RenderListLiveRequest.d.ts.map +1 -0
- package/dist/usecase/dto/render/RenderListLiveRequest.js +2 -0
- package/dist/usecase/dto/render/RenderListLiveRequest.js.map +1 -0
- package/dist/usecase/dto/render/index.d.ts +7 -0
- package/dist/usecase/dto/render/index.d.ts.map +1 -0
- package/dist/usecase/dto/render/index.js +7 -0
- package/dist/usecase/dto/render/index.js.map +1 -0
- package/dist/usecase/dto/view/ExecuteViewRequest.d.ts +16 -0
- package/dist/usecase/dto/view/ExecuteViewRequest.d.ts.map +1 -0
- package/dist/usecase/dto/view/ExecuteViewRequest.js +2 -0
- package/dist/usecase/dto/view/ExecuteViewRequest.js.map +1 -0
- package/dist/usecase/dto/view/index.d.ts +2 -0
- package/dist/usecase/dto/view/index.d.ts.map +1 -0
- package/dist/usecase/dto/view/index.js +2 -0
- package/dist/usecase/dto/view/index.js.map +1 -0
- package/dist/usecase/index.d.ts +16 -0
- package/dist/usecase/index.d.ts.map +1 -0
- package/dist/usecase/index.js +16 -0
- package/dist/usecase/index.js.map +1 -0
- package/dist/usecase/lifecycle/RunDeferredHookUseCase.d.ts +26 -0
- package/dist/usecase/lifecycle/RunDeferredHookUseCase.d.ts.map +1 -0
- package/dist/usecase/lifecycle/RunDeferredHookUseCase.js +44 -0
- package/dist/usecase/lifecycle/RunDeferredHookUseCase.js.map +1 -0
- package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.d.ts +38 -0
- package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.d.ts.map +1 -0
- package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.js +67 -0
- package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.js.map +1 -0
- package/dist/usecase/lifecycle/index.d.ts +3 -0
- package/dist/usecase/lifecycle/index.d.ts.map +1 -0
- package/dist/usecase/lifecycle/index.js +3 -0
- package/dist/usecase/lifecycle/index.js.map +1 -0
- package/dist/usecase/media/CommitMediaUploadUseCase.d.ts +15 -0
- package/dist/usecase/media/CommitMediaUploadUseCase.d.ts.map +1 -0
- package/dist/usecase/media/CommitMediaUploadUseCase.js +43 -0
- package/dist/usecase/media/CommitMediaUploadUseCase.js.map +1 -0
- package/dist/usecase/media/CreateMediaUploadUseCase.d.ts +18 -0
- package/dist/usecase/media/CreateMediaUploadUseCase.d.ts.map +1 -0
- package/dist/usecase/media/CreateMediaUploadUseCase.js +71 -0
- package/dist/usecase/media/CreateMediaUploadUseCase.js.map +1 -0
- package/dist/usecase/media/PendingUploadRecord.d.ts +17 -0
- package/dist/usecase/media/PendingUploadRecord.d.ts.map +1 -0
- package/dist/usecase/media/PendingUploadRecord.js +2 -0
- package/dist/usecase/media/PendingUploadRecord.js.map +1 -0
- package/dist/usecase/media/diagnostics.d.ts +15 -0
- package/dist/usecase/media/diagnostics.d.ts.map +1 -0
- package/dist/usecase/media/diagnostics.js +88 -0
- package/dist/usecase/media/diagnostics.js.map +1 -0
- package/dist/usecase/media/index.d.ts +4 -0
- package/dist/usecase/media/index.d.ts.map +1 -0
- package/dist/usecase/media/index.js +4 -0
- package/dist/usecase/media/index.js.map +1 -0
- package/dist/usecase/media/mediaAllowlist.d.ts +30 -0
- package/dist/usecase/media/mediaAllowlist.d.ts.map +1 -0
- package/dist/usecase/media/mediaAllowlist.js +53 -0
- package/dist/usecase/media/mediaAllowlist.js.map +1 -0
- package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +43 -0
- package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -0
- package/dist/usecase/procedure/InvokeBuiltinUseCase.js +202 -0
- package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -0
- package/dist/usecase/procedure/InvokeProcedureUseCase.d.ts +50 -0
- package/dist/usecase/procedure/InvokeProcedureUseCase.d.ts.map +1 -0
- package/dist/usecase/procedure/InvokeProcedureUseCase.js +191 -0
- package/dist/usecase/procedure/InvokeProcedureUseCase.js.map +1 -0
- package/dist/usecase/procedure/index.d.ts +3 -0
- package/dist/usecase/procedure/index.d.ts.map +1 -0
- package/dist/usecase/procedure/index.js +3 -0
- package/dist/usecase/procedure/index.js.map +1 -0
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts +25 -0
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts.map +1 -0
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js +55 -0
- package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js.map +1 -0
- package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +19 -0
- package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +1 -0
- package/dist/usecase/render/ComposeLlmsTxtUseCase.js +40 -0
- package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +1 -0
- package/dist/usecase/render/ComposeSitemapUseCase.d.ts +15 -0
- package/dist/usecase/render/ComposeSitemapUseCase.d.ts.map +1 -0
- package/dist/usecase/render/ComposeSitemapUseCase.js +29 -0
- package/dist/usecase/render/ComposeSitemapUseCase.js.map +1 -0
- package/dist/usecase/render/PreviewEntryUseCase.d.ts +26 -0
- package/dist/usecase/render/PreviewEntryUseCase.d.ts.map +1 -0
- package/dist/usecase/render/PreviewEntryUseCase.js +69 -0
- package/dist/usecase/render/PreviewEntryUseCase.js.map +1 -0
- package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +35 -0
- package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +1 -0
- package/dist/usecase/render/RenderEntryLiveUseCase.js +59 -0
- package/dist/usecase/render/RenderEntryLiveUseCase.js.map +1 -0
- package/dist/usecase/render/RenderListLiveUseCase.d.ts +23 -0
- package/dist/usecase/render/RenderListLiveUseCase.d.ts.map +1 -0
- package/dist/usecase/render/RenderListLiveUseCase.js +41 -0
- package/dist/usecase/render/RenderListLiveUseCase.js.map +1 -0
- package/dist/usecase/render/index.d.ts +7 -0
- package/dist/usecase/render/index.d.ts.map +1 -0
- package/dist/usecase/render/index.js +10 -0
- package/dist/usecase/render/index.js.map +1 -0
- package/dist/usecase/view/ExecuteViewUseCase.d.ts +31 -0
- package/dist/usecase/view/ExecuteViewUseCase.d.ts.map +1 -0
- package/dist/usecase/view/ExecuteViewUseCase.js +78 -0
- package/dist/usecase/view/ExecuteViewUseCase.js.map +1 -0
- package/dist/usecase/view/index.d.ts +2 -0
- package/dist/usecase/view/index.d.ts.map +1 -0
- package/dist/usecase/view/index.js +2 -0
- package/dist/usecase/view/index.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import { DiagnosticError, redactForWire, } from "@aotter/mantle-spec";
|
|
2
|
+
import { mcpToolNameSegment } from "../../domain/service/McpToolNaming.js";
|
|
3
|
+
import { CREATE_DRAFT_PREFIX, QUERY_VIEW_PREFIX, UPDATE_DRAFT_PREFIX, buildMcpToolCatalog, extractCollectionSegment, } from "./McpToolCatalog.js";
|
|
4
|
+
import { jsonRpcError, jsonRpcOk, jsonRpcOkRaw, } from "./McpResponses.js";
|
|
5
|
+
export class McpJsonRpcDispatcher {
|
|
6
|
+
useCases;
|
|
7
|
+
schemas;
|
|
8
|
+
options;
|
|
9
|
+
catalog;
|
|
10
|
+
catalogWireJson;
|
|
11
|
+
/** segment → original `Schema.metadata.name`. Built once at
|
|
12
|
+
* construction; the per-collection routing path looks up the
|
|
13
|
+
* segment from the tool name and recovers the canonical
|
|
14
|
+
* collection name. */
|
|
15
|
+
schemaBySegment;
|
|
16
|
+
viewBySegment;
|
|
17
|
+
constructor(useCases, schemas, options = {}) {
|
|
18
|
+
this.useCases = useCases;
|
|
19
|
+
this.schemas = schemas;
|
|
20
|
+
this.options = options;
|
|
21
|
+
this.catalog = buildMcpToolCatalog(schemas, {
|
|
22
|
+
surface: options.surface ?? "staff",
|
|
23
|
+
mediaEnabled: useCases.media !== undefined,
|
|
24
|
+
mediaPurposes: useCases.media?.purposes,
|
|
25
|
+
views: options.views,
|
|
26
|
+
});
|
|
27
|
+
this.catalogWireJson = `{"tools":${JSON.stringify(this.catalog)}}`;
|
|
28
|
+
const map = new Map();
|
|
29
|
+
for (const s of schemas)
|
|
30
|
+
map.set(mcpToolNameSegment(s.metadata.name), s.metadata.name);
|
|
31
|
+
this.schemaBySegment = map;
|
|
32
|
+
const views = new Map();
|
|
33
|
+
for (const v of options.views ?? [])
|
|
34
|
+
views.set(mcpToolNameSegment(v.metadata.name), v);
|
|
35
|
+
this.viewBySegment = views;
|
|
36
|
+
}
|
|
37
|
+
async dispatch(req, auth) {
|
|
38
|
+
if (req.method === "GET") {
|
|
39
|
+
return new Response("MCP endpoint — POST JSON-RPC here.", { status: 200 });
|
|
40
|
+
}
|
|
41
|
+
if (req.method !== "POST") {
|
|
42
|
+
return new Response("method not allowed", { status: 405 });
|
|
43
|
+
}
|
|
44
|
+
let body;
|
|
45
|
+
try {
|
|
46
|
+
body = (await req.json());
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return jsonRpcError(null, -32700, "parse error");
|
|
50
|
+
}
|
|
51
|
+
const { id = null, method, params } = body;
|
|
52
|
+
switch (method) {
|
|
53
|
+
case "initialize":
|
|
54
|
+
return jsonRpcOk(id, {
|
|
55
|
+
protocolVersion: "2025-03-26",
|
|
56
|
+
capabilities: { tools: { listChanged: false } },
|
|
57
|
+
serverInfo: { name: "@aotter/mantle-runtime/mcp", version: "0.0.7-alpha" },
|
|
58
|
+
});
|
|
59
|
+
case "tools/list":
|
|
60
|
+
return jsonRpcOkRaw(id, this.catalogWireJson);
|
|
61
|
+
case "tools/call":
|
|
62
|
+
return this.handleToolCall(id, params, auth);
|
|
63
|
+
default:
|
|
64
|
+
return jsonRpcError(id, -32601, `unknown method: ${method}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async handleToolCall(reqId, params, auth) {
|
|
68
|
+
const p = params;
|
|
69
|
+
if (!p || typeof p.name !== "string") {
|
|
70
|
+
return jsonRpcError(reqId, -32602, "missing tool name");
|
|
71
|
+
}
|
|
72
|
+
const args = (p.arguments ?? {});
|
|
73
|
+
try {
|
|
74
|
+
const result = await this.dispatchToolByName(p.name, args, auth);
|
|
75
|
+
if (result === UNKNOWN_TOOL) {
|
|
76
|
+
return jsonRpcError(reqId, -32601, `unknown tool: ${p.name}`);
|
|
77
|
+
}
|
|
78
|
+
if (result === MISSING_ARG) {
|
|
79
|
+
return jsonRpcError(reqId, -32602, "missing required arg");
|
|
80
|
+
}
|
|
81
|
+
return jsonRpcOk(reqId, {
|
|
82
|
+
content: [{ type: "text", text: JSON.stringify(result) }],
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
if (e instanceof DiagnosticError) {
|
|
87
|
+
return jsonRpcError(reqId, -32000, e.diagnostic.message, redactForWire(e.diagnostic));
|
|
88
|
+
}
|
|
89
|
+
// Don't leak raw exception strings to MCP clients — adapter
|
|
90
|
+
// exceptions can carry binding / driver detail. Real cause goes
|
|
91
|
+
// to server-side logs; the wire stays opaque.
|
|
92
|
+
console.error("[McpJsonRpcDispatcher] unhandled tool-call error", e);
|
|
93
|
+
return jsonRpcError(reqId, -32000, "Internal error.");
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async dispatchToolByName(name, args, auth) {
|
|
97
|
+
if ((this.options.surface ?? "staff") === "public") {
|
|
98
|
+
const viewSegment = extractCollectionSegment(name, QUERY_VIEW_PREFIX);
|
|
99
|
+
if (!viewSegment)
|
|
100
|
+
return UNKNOWN_TOOL;
|
|
101
|
+
const view = this.viewBySegment.get(viewSegment);
|
|
102
|
+
if (!view || !this.useCases.executeView)
|
|
103
|
+
return UNKNOWN_TOOL;
|
|
104
|
+
// Build ctx from the bearer-derived McpAuthContext so the
|
|
105
|
+
// executeView use case can evaluate `requires.auth.all`. Without
|
|
106
|
+
// this, every auth-gated public-surface View returned
|
|
107
|
+
// UNAUTHENTICATED for every caller including authenticated staff.
|
|
108
|
+
const result = await this.useCases.executeView.execute({
|
|
109
|
+
view,
|
|
110
|
+
options: {
|
|
111
|
+
params: stripViewReservedArgs(args),
|
|
112
|
+
page: typeof args["page"] === "number" ? args["page"] : undefined,
|
|
113
|
+
show: typeof args["show"] === "number" ? args["show"] : undefined,
|
|
114
|
+
},
|
|
115
|
+
pathPrefix: `MCP ${name}`,
|
|
116
|
+
ctx: {
|
|
117
|
+
user: { id: auth.userId },
|
|
118
|
+
staff: auth.staff
|
|
119
|
+
? { id: auth.staff.userId, role: auth.staff.role }
|
|
120
|
+
: null,
|
|
121
|
+
env: {},
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
switch (name) {
|
|
127
|
+
case "list_entries": {
|
|
128
|
+
const collection = args["collection"];
|
|
129
|
+
if (typeof collection !== "string")
|
|
130
|
+
return MISSING_ARG;
|
|
131
|
+
// MCP exposes the cursored shape so agents can walk pages
|
|
132
|
+
// through `nextCursor`. App code reaches for `execute()`
|
|
133
|
+
// instead and gets a flat array.
|
|
134
|
+
return this.useCases.listEntries.executePage({
|
|
135
|
+
collection,
|
|
136
|
+
status: args["status"],
|
|
137
|
+
limit: typeof args["limit"] === "number" ? args["limit"] : undefined,
|
|
138
|
+
cursor: typeof args["cursor"] === "string" ? args["cursor"] : undefined,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
case "get_entry": {
|
|
142
|
+
const id = args["id"];
|
|
143
|
+
if (typeof id !== "string")
|
|
144
|
+
return MISSING_ARG;
|
|
145
|
+
return this.useCases.getEntry.execute({ id });
|
|
146
|
+
}
|
|
147
|
+
case "request_publish": {
|
|
148
|
+
const id = args["id"];
|
|
149
|
+
if (typeof id !== "string")
|
|
150
|
+
return MISSING_ARG;
|
|
151
|
+
return this.useCases.requestPublish.execute({ id });
|
|
152
|
+
}
|
|
153
|
+
case "unpublish_entry": {
|
|
154
|
+
const id = args["id"];
|
|
155
|
+
if (typeof id !== "string")
|
|
156
|
+
return MISSING_ARG;
|
|
157
|
+
return this.useCases.unpublish.execute({ id });
|
|
158
|
+
}
|
|
159
|
+
case "archive_entry": {
|
|
160
|
+
const id = args["id"];
|
|
161
|
+
const expected = args["expected_version"];
|
|
162
|
+
if (typeof id !== "string" || typeof expected !== "number")
|
|
163
|
+
return MISSING_ARG;
|
|
164
|
+
return this.useCases.archive.execute({ id, expectedVersion: expected });
|
|
165
|
+
}
|
|
166
|
+
case "delete_entry": {
|
|
167
|
+
const id = args["id"];
|
|
168
|
+
if (typeof id !== "string")
|
|
169
|
+
return MISSING_ARG;
|
|
170
|
+
return this.useCases.deleteEntry.execute({ id });
|
|
171
|
+
}
|
|
172
|
+
case "create_media_upload": {
|
|
173
|
+
if (!this.useCases.media)
|
|
174
|
+
return UNKNOWN_TOOL;
|
|
175
|
+
const filename = args["filename"];
|
|
176
|
+
const mimeType = args["mimeType"];
|
|
177
|
+
const byteSize = args["byteSize"];
|
|
178
|
+
if (typeof filename !== "string" ||
|
|
179
|
+
typeof mimeType !== "string" ||
|
|
180
|
+
typeof byteSize !== "number") {
|
|
181
|
+
return MISSING_ARG;
|
|
182
|
+
}
|
|
183
|
+
return this.useCases.media.createUpload.execute({
|
|
184
|
+
filename,
|
|
185
|
+
mimeType,
|
|
186
|
+
byteSize,
|
|
187
|
+
alt: typeof args["alt"] === "string" ? args["alt"] : undefined,
|
|
188
|
+
caption: typeof args["caption"] === "string" ? args["caption"] : undefined,
|
|
189
|
+
purpose: typeof args["purpose"] === "string" ? args["purpose"] : undefined,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
case "commit_media_upload": {
|
|
193
|
+
if (!this.useCases.media)
|
|
194
|
+
return UNKNOWN_TOOL;
|
|
195
|
+
const uploadId = args["uploadId"];
|
|
196
|
+
if (typeof uploadId !== "string")
|
|
197
|
+
return MISSING_ARG;
|
|
198
|
+
return this.useCases.media.commitUpload.execute({
|
|
199
|
+
uploadId,
|
|
200
|
+
alt: typeof args["alt"] === "string" ? args["alt"] : undefined,
|
|
201
|
+
caption: typeof args["caption"] === "string" ? args["caption"] : undefined,
|
|
202
|
+
checksum: typeof args["checksum"] === "string" ? args["checksum"] : undefined,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
default: {
|
|
206
|
+
// Per-collection authoring tools: `create_draft_<segment>` /
|
|
207
|
+
// `update_draft_<segment>`. The agent sends Schema fields at
|
|
208
|
+
// the top level; we rebuild `data` for the chokepoint.
|
|
209
|
+
// `hookCtx` plumbs the authenticated MCP user into lifecycle
|
|
210
|
+
// hook context so consumers can branch on `ctx.user` (e.g.
|
|
211
|
+
// bypass captcha checks for authenticated agents).
|
|
212
|
+
const hookCtx = {
|
|
213
|
+
user: { id: auth.userId },
|
|
214
|
+
staff: auth.staff ? { id: auth.staff.userId, role: auth.staff.role } : null,
|
|
215
|
+
env: {},
|
|
216
|
+
};
|
|
217
|
+
const createSegment = extractCollectionSegment(name, CREATE_DRAFT_PREFIX);
|
|
218
|
+
if (createSegment) {
|
|
219
|
+
const collection = this.schemaBySegment.get(createSegment);
|
|
220
|
+
if (!collection)
|
|
221
|
+
return UNKNOWN_TOOL;
|
|
222
|
+
return this.useCases.createDraft.execute({
|
|
223
|
+
collection,
|
|
224
|
+
data: stripReservedArgs(args),
|
|
225
|
+
authorId: auth.userId,
|
|
226
|
+
ctx: hookCtx,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
const updateSegment = extractCollectionSegment(name, UPDATE_DRAFT_PREFIX);
|
|
230
|
+
if (updateSegment) {
|
|
231
|
+
const collection = this.schemaBySegment.get(updateSegment);
|
|
232
|
+
if (!collection)
|
|
233
|
+
return UNKNOWN_TOOL;
|
|
234
|
+
const id = args["id"];
|
|
235
|
+
const expected = args["expected_version"];
|
|
236
|
+
if (typeof id !== "string" || typeof expected !== "number")
|
|
237
|
+
return MISSING_ARG;
|
|
238
|
+
// Caller may also call get_entry separately; we don't need
|
|
239
|
+
// the collection on the chokepoint args because UpdateDraft
|
|
240
|
+
// looks it up from the existing row.
|
|
241
|
+
return this.useCases.updateDraft.execute({
|
|
242
|
+
id,
|
|
243
|
+
expectedVersion: expected,
|
|
244
|
+
data: stripReservedArgs(args),
|
|
245
|
+
ctx: hookCtx,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
return UNKNOWN_TOOL;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
const UNKNOWN_TOOL = Symbol("unknown-tool");
|
|
254
|
+
const MISSING_ARG = Symbol("missing-arg");
|
|
255
|
+
/**
|
|
256
|
+
* Strip the `id` + `expected_version` envelope keys before passing
|
|
257
|
+
* the rest to the chokepoint as `data`. Per-collection update tools
|
|
258
|
+
* mix routing keys (id, expected_version) with authoring fields at
|
|
259
|
+
* the same level; this re-separates them.
|
|
260
|
+
*/
|
|
261
|
+
const RESERVED_ARG_KEYS = ["id", "expected_version"];
|
|
262
|
+
function stripReservedArgs(args) {
|
|
263
|
+
const out = {};
|
|
264
|
+
for (const [k, v] of Object.entries(args)) {
|
|
265
|
+
if (RESERVED_ARG_KEYS.includes(k))
|
|
266
|
+
continue;
|
|
267
|
+
out[k] = v;
|
|
268
|
+
}
|
|
269
|
+
return out;
|
|
270
|
+
}
|
|
271
|
+
const VIEW_RESERVED_ARG_KEYS = ["page", "show"];
|
|
272
|
+
function stripViewReservedArgs(args) {
|
|
273
|
+
const out = {};
|
|
274
|
+
for (const [k, v] of Object.entries(args)) {
|
|
275
|
+
if (VIEW_RESERVED_ARG_KEYS.includes(k))
|
|
276
|
+
continue;
|
|
277
|
+
out[k] = v;
|
|
278
|
+
}
|
|
279
|
+
return out;
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=McpJsonRpcDispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpJsonRpcDispatcher.js","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpJsonRpcDispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Diagnostic } from "@aotter/mantle-spec";
|
|
2
|
+
export declare function jsonRpcOk(id: unknown, result: unknown): Response;
|
|
3
|
+
export declare function jsonRpcOkRaw(id: unknown, resultJson: string): Response;
|
|
4
|
+
export declare function jsonRpcError(id: unknown, code: number, message: string, data?: unknown): Response;
|
|
5
|
+
/**
|
|
6
|
+
* Build a JSON-RPC error `Response` carrying a structured Diagnostic.
|
|
7
|
+
* Used by transport adapters at the layer outside the dispatcher for
|
|
8
|
+
* HTTP-level rejections (missing bearer token, non-staff caller) that
|
|
9
|
+
* never enter the JSON-RPC dispatcher's own catch path.
|
|
10
|
+
*/
|
|
11
|
+
export declare function mcpJsonRpcError(diagnostic: Diagnostic, requestId?: unknown): Response;
|
|
12
|
+
/** Helper to construct an "unauthenticated" MCP error response. */
|
|
13
|
+
export declare function mcpUnauthenticated(message: string): Response;
|
|
14
|
+
//# sourceMappingURL=McpResponses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpResponses.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpResponses.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAE7B,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,CAIhE;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CAKtE;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAMjG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,GAAE,OAAc,GAAG,QAAQ,CAW3F;AAED,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAU5D"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { httpStatusFor, redactForWire, runtimeDiagnostic, } from "@aotter/mantle-spec";
|
|
2
|
+
export function jsonRpcOk(id, result) {
|
|
3
|
+
return new Response(JSON.stringify({ jsonrpc: "2.0", id, result }), {
|
|
4
|
+
headers: { "content-type": "application/json" },
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
export function jsonRpcOkRaw(id, resultJson) {
|
|
8
|
+
const idJson = JSON.stringify(id);
|
|
9
|
+
return new Response(`{"jsonrpc":"2.0","id":${idJson},"result":${resultJson}}`, {
|
|
10
|
+
headers: { "content-type": "application/json" },
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export function jsonRpcError(id, code, message, data) {
|
|
14
|
+
const error = { code, message };
|
|
15
|
+
if (data !== undefined)
|
|
16
|
+
error.data = data;
|
|
17
|
+
return new Response(JSON.stringify({ jsonrpc: "2.0", id, error }), {
|
|
18
|
+
headers: { "content-type": "application/json" },
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Build a JSON-RPC error `Response` carrying a structured Diagnostic.
|
|
23
|
+
* Used by transport adapters at the layer outside the dispatcher for
|
|
24
|
+
* HTTP-level rejections (missing bearer token, non-staff caller) that
|
|
25
|
+
* never enter the JSON-RPC dispatcher's own catch path.
|
|
26
|
+
*/
|
|
27
|
+
export function mcpJsonRpcError(diagnostic, requestId = null) {
|
|
28
|
+
const redacted = redactForWire(diagnostic);
|
|
29
|
+
const body = JSON.stringify({
|
|
30
|
+
jsonrpc: "2.0",
|
|
31
|
+
id: requestId,
|
|
32
|
+
error: { code: -32000, message: redacted.message, data: redacted },
|
|
33
|
+
});
|
|
34
|
+
return new Response(body, {
|
|
35
|
+
status: httpStatusFor(diagnostic),
|
|
36
|
+
headers: { "content-type": "application/json" },
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/** Helper to construct an "unauthenticated" MCP error response. */
|
|
40
|
+
export function mcpUnauthenticated(message) {
|
|
41
|
+
return mcpJsonRpcError(runtimeDiagnostic({
|
|
42
|
+
code: "UNAUTHENTICATED",
|
|
43
|
+
severity: "error",
|
|
44
|
+
path: "mcp:fetch",
|
|
45
|
+
expected: "valid bearer token",
|
|
46
|
+
message,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=McpResponses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpResponses.js","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpResponses.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,SAAS,CAAC,EAAW,EAAE,MAAe;IACpD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QAClE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAW,EAAE,UAAkB;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAClC,OAAO,IAAI,QAAQ,CAAC,yBAAyB,MAAM,aAAa,UAAU,GAAG,EAAE;QAC7E,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAW,EAAE,IAAY,EAAE,OAAe,EAAE,IAAc;IACrF,MAAM,KAAK,GAAsD,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACnF,IAAI,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACjE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,UAAsB,EAAE,YAAqB,IAAI;IAC/E,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;KACnE,CAAC,CAAC;IACH,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC;QACjC,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,eAAe,CACpB,iBAAiB,CAAC;QAChB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,oBAAoB;QAC9B,OAAO;KACR,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { type SchemaManifest, type ViewManifest } from "@aotter/mantle-spec";
|
|
2
|
+
import { mcpToolNameSegment } from "../../domain/service/McpToolNaming.js";
|
|
3
|
+
/**
|
|
4
|
+
* MCP tool catalog. Mix of generic tools (read paths, status flips
|
|
5
|
+
* that take only an `id`) plus per-collection emitted authoring
|
|
6
|
+
* tools (`create_draft_<collection>`, `update_draft_<collection>`)
|
|
7
|
+
* with the Schema's properties inlined into the tool's `inputSchema`
|
|
8
|
+
* so MCP clients (LLM agents) see typed authoring contracts without
|
|
9
|
+
* a separate `get_schema` round trip.
|
|
10
|
+
*
|
|
11
|
+
* Per-collection emission rules (POC ADR-0014 + PR #48 collision fix):
|
|
12
|
+
*
|
|
13
|
+
* - tool name suffix = `Schema.metadata.name` lowercased + `kebab-`
|
|
14
|
+
* to-`snake_` (`post-translations` → `post_translations`)
|
|
15
|
+
* - input schema = `Schema.spec.schema.properties` minus any
|
|
16
|
+
* property carrying `x-clam-bind` (those are server-stamped and
|
|
17
|
+
* the agent must not send them)
|
|
18
|
+
* - `required` = intersection of `Schema.spec.schema.required` with
|
|
19
|
+
* the surviving authoring fields
|
|
20
|
+
* - `update_draft_<collection>` adds `id` + `expected_version` to
|
|
21
|
+
* the schema and to `required`
|
|
22
|
+
* - the dispatcher unwraps the typed top-level fields back into the
|
|
23
|
+
* chokepoint's `data` arg — the wire surface is flatter than
|
|
24
|
+
* `{ data: {...} }`, the storage shape is unchanged.
|
|
25
|
+
*
|
|
26
|
+
* Two Schemas that mangle to the same tool-name suffix (`foo-bar` and
|
|
27
|
+
* `foo_bar` both → `foo_bar`) are caught at boot with
|
|
28
|
+
* `MCP_TOOL_NAME_COLLISION`.
|
|
29
|
+
*/
|
|
30
|
+
export interface McpToolDefinition {
|
|
31
|
+
readonly name: string;
|
|
32
|
+
readonly description: string;
|
|
33
|
+
readonly inputSchema: Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
export declare const MEDIA_TOOLS: readonly McpToolDefinition[];
|
|
36
|
+
export declare const GENERIC_TOOLS: readonly McpToolDefinition[];
|
|
37
|
+
export declare const CREATE_DRAFT_PREFIX = "create_draft_";
|
|
38
|
+
export declare const UPDATE_DRAFT_PREFIX = "update_draft_";
|
|
39
|
+
export declare const QUERY_VIEW_PREFIX = "query_view_";
|
|
40
|
+
export type McpToolSurface = "staff" | "public";
|
|
41
|
+
/**
|
|
42
|
+
* Build the full tool catalog from the manifest's Schemas. The
|
|
43
|
+
* runtime constructs this once at boot (post-validation) and the
|
|
44
|
+
* dispatcher reads it for `tools/list` + name-based routing.
|
|
45
|
+
*/
|
|
46
|
+
export interface BuildMcpToolCatalogOpts {
|
|
47
|
+
/** When true, registers `create_media_upload` + `commit_media_upload`.
|
|
48
|
+
* Adapters set this from the runtime's `media` field (non-null when
|
|
49
|
+
* a `mediaStorage` was bound). */
|
|
50
|
+
readonly mediaEnabled?: boolean;
|
|
51
|
+
/** Declared `siteDefaults.media.purposes`; when supplied, the
|
|
52
|
+
* `create_media_upload` schema marks purpose as required and emits
|
|
53
|
+
* this set as an enum so agents can self-correct from tools/list. */
|
|
54
|
+
readonly mediaPurposes?: readonly string[];
|
|
55
|
+
/** Staff surface exposes authoring / lifecycle tools. Public
|
|
56
|
+
* surface exposes only read-only View queries for v0.1. */
|
|
57
|
+
readonly surface?: McpToolSurface;
|
|
58
|
+
readonly views?: ReadonlyArray<ViewManifest>;
|
|
59
|
+
}
|
|
60
|
+
export declare function buildMcpToolCatalog(schemas: ReadonlyArray<SchemaManifest>, opts?: BuildMcpToolCatalogOpts): readonly McpToolDefinition[];
|
|
61
|
+
/** Re-export the naming util from `domain/service/` so existing
|
|
62
|
+
* consumers of `McpToolCatalog` (the dispatcher) keep their import
|
|
63
|
+
* surface stable. */
|
|
64
|
+
export { mcpToolNameSegment as toolNameSegment };
|
|
65
|
+
/** Inverse routing: given a tool name and its prefix, recover the
|
|
66
|
+
* segment. Returns `null` if the name doesn't carry the prefix. */
|
|
67
|
+
export declare function extractCollectionSegment(toolName: string, prefix: string): string | null;
|
|
68
|
+
//# sourceMappingURL=McpToolCatalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpToolCatalog.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpToolCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,iBAAiB,EAiBnD,CAAC;AAoCF,eAAO,MAAM,aAAa,EAAE,SAAS,iBAAiB,EA+DrD,CAAC;AAEF,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;uCAEmC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;0EAEsE;IACtE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;gEAC4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;CAC9C;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,EACtC,IAAI,GAAE,uBAA4B,GACjC,SAAS,iBAAiB,EAAE,CAY9B;AAED;;sBAEsB;AACtB,OAAO,EAAE,kBAAkB,IAAI,eAAe,EAAE,CAAC;AAEjD;oEACoE;AACpE,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAIf"}
|