import type { ConfigManager } from '../../config/manager.js'; import type { ChannelPluginRegistry, ChannelPolicyManager, RouteBindingManager, SurfaceRegistry } from '../../channels/index.js'; import type { KnowledgeGraphqlService, KnowledgeService } from '../../knowledge/index.js'; import type { ArtifactStore } from '../../artifacts/index.js'; import type { MediaProviderRegistry } from '../../media/index.js'; import type { MultimodalService } from '../../multimodal/index.js'; import type { VoiceService } from '../../voice/index.js'; import type { WebSearchService } from '../../web-search/index.js'; import type { IntegrationHelperService } from '../../runtime/integration/helpers.js'; import type { ApprovalBroker } from '../../control-plane/index.js'; import type { PlatformServiceManager } from '../service-manager.js'; import type { JsonRecord } from '../helpers.js'; import type { WatcherRegistry } from '../../watchers/index.js'; import type { DaemonChannelRouteContext, InboundMailHealthLike } from './channel-route-types.js'; import type { DaemonIntegrationRouteContext } from './integration-route-types.js'; import type { DaemonKnowledgeRouteContext } from './knowledge-route-types.js'; import type { DaemonMediaRouteContext } from './media-route-types.js'; import type { DaemonSystemRouteContext } from './system-route-types.js'; /** * The optional providers the daemon facade hands the router for /status. * * Both are late-bound: the router is constructed before the lifecycle sidecar * and the cluster coordinator exist. Absent means the section is simply not in * the payload, which is what an embedder without those subsystems should see, * never a fabricated default. */ export interface DaemonStatusProviders { /** * The running artifact's own release version, when this host ships one. The * platform build is reported separately and is never a stand-in for it, * see ControlRouteContext.buildVersion in daemon-sdk/src/control-routes.ts. */ readonly buildVersion?: (() => string | null) | undefined; /** Undelivered daemon receipts (update, crash-restart, migration notices). */ readonly collectReceipts?: (() => readonly { id: string; text: string; at: number; }[]) | undefined; /** * Which node on this network currently consumes inbound channel messages, * for on-request inspection. Elections are otherwise invisible: no * notification, no transcript line, no message on any surface. */ readonly collectClusterStatus?: (() => unknown) | undefined; } export declare function buildChannelRouteContext(input: { readonly channelPlugins: ChannelPluginRegistry; readonly channelPolicy: ChannelPolicyManager; readonly parseJsonBody: (request: Request) => Promise; readonly parseOptionalJsonBody: (request: Request) => Promise; readonly requireAdmin: (request: Request) => Response | null; readonly surfaceRegistry: SurfaceRegistry; /** Supplied by a composition that has the builtin channel runtime. */ readonly inboundMailHealth?: (() => InboundMailHealthLike | null) | undefined; }): DaemonChannelRouteContext; export declare function buildSystemRouteContext(input: { readonly approvalBroker: ApprovalBroker; readonly configManager: ConfigManager; readonly credentialStatus: DaemonSystemRouteContext['credentialStatus']; readonly integrationHelpers: IntegrationHelperService | null; readonly inspectInboundTls: (surface: 'controlPlane' | 'httpListener') => unknown; readonly inspectOutboundTls: () => unknown; readonly isValidConfigKey: (key: string) => boolean; readonly parseJsonBody: (request: Request) => Promise; readonly parseOptionalJsonBody: (request: Request) => Promise; readonly platformServiceManager: PlatformServiceManager; readonly recordApiResponse: (request: Request, path: string, response: Response, clientKind?: DaemonSystemRouteContext['recordApiResponse'] extends (req: Request, path: string, response: Response, clientKind?: infer T) => Response ? T : never) => Response; readonly requireAdmin: (request: Request) => Response | null; readonly requireAuthenticatedSession: (request: Request) => { username: string; roles: readonly string[]; } | null; readonly routeBindings: RouteBindingManager; readonly swapManager: DaemonSystemRouteContext['swapManager']; readonly watcherRegistry: WatcherRegistry; }): DaemonSystemRouteContext; export declare function buildKnowledgeRouteContext(input: { readonly artifactStore: ArtifactStore; readonly configManager: ConfigManager; readonly inspectGraphqlAccess: DaemonKnowledgeRouteContext['inspectGraphqlAccess']; readonly normalizeAtSchedule: DaemonKnowledgeRouteContext['normalizeAtSchedule']; readonly normalizeEverySchedule: DaemonKnowledgeRouteContext['normalizeEverySchedule']; readonly normalizeCronSchedule: DaemonKnowledgeRouteContext['normalizeCronSchedule']; readonly parseJsonBody: (request: Request) => Promise; readonly parseOptionalJsonBody: (request: Request) => Promise; readonly parseJsonText: (raw: string) => JsonRecord | Response; readonly requireAdmin: (request: Request) => Response | null; readonly resolveAuthenticatedPrincipal: (request: Request) => ReturnType; readonly knowledgeService: KnowledgeService; readonly knowledgeGraphqlService: KnowledgeGraphqlService; }): DaemonKnowledgeRouteContext; export declare function buildMediaRouteContext(input: { readonly artifactStore: ArtifactStore; readonly configManager: ConfigManager; readonly mediaProviders: MediaProviderRegistry; readonly multimodalService: MultimodalService; readonly parseJsonBody: (request: Request) => Promise; readonly requireAdmin: (request: Request) => Response | null; readonly voiceService: VoiceService; readonly webSearchService: WebSearchService; }): DaemonMediaRouteContext; export declare function buildIntegrationRouteContext(input: DaemonIntegrationRouteContext): DaemonIntegrationRouteContext; //# sourceMappingURL=router-route-contexts.d.ts.map