import type { IncomingMessage, ServerResponse } from 'node:http'; export interface DashboardCompatModule { supported: boolean; route?: string; } declare const DASHBOARD_MODULE_SPECS: { readonly overview: { readonly supported: true; readonly route: "#/"; readonly capabilities: readonly ["overview.read"]; }; readonly sessions: { readonly supported: true; readonly route: "#/sessions"; readonly capabilities: readonly ["sessions.read", "sessions.manage", "sessions.terminal", "asks.read", "asks.answer"]; }; readonly groups: { readonly supported: true; readonly route: "#/groups"; readonly capabilities: readonly ["groups.read", "groups.manage"]; }; readonly roles: { readonly supported: true; readonly route: "#/roles"; readonly capabilities: readonly ["roles.read", "roles.manage"]; }; readonly monitoring: { readonly supported: true; readonly route: "#/monitoring"; readonly capabilities: readonly ["monitoring.read"]; }; readonly insights: { readonly supported: true; readonly route: "#/insights"; readonly capabilities: readonly ["insights.read"]; }; readonly schedules: { readonly supported: true; readonly route: "#/schedules"; readonly capabilities: readonly ["schedules.read", "schedules.manage"]; }; readonly whiteboards: { readonly supported: true; readonly route: "#/whiteboards"; readonly capabilities: readonly ["whiteboards.read", "whiteboards.manage"]; }; readonly office: { readonly supported: true; readonly route: "#/office"; readonly capabilities: readonly ["office.read"]; }; readonly bots: { readonly supported: true; readonly route: "#/bot-defaults"; readonly capabilities: readonly ["bots.read", "bots.configure"]; }; readonly skills: { readonly supported: true; readonly route: "#/skills"; readonly capabilities: readonly ["skills.read", "skills.manage"]; }; readonly plugins: { readonly supported: true; readonly route: "#/plugins"; readonly capabilities: readonly ["plugins.read", "plugins.manage"]; }; readonly team: { readonly supported: true; readonly route: "#/team"; readonly capabilities: readonly ["team.read", "team.manage"]; }; readonly connectors: { readonly supported: true; readonly route: "#/connectors"; readonly capabilities: readonly ["connectors.read", "connectors.manage"]; }; readonly settings: { readonly supported: true; readonly route: "#/settings"; readonly capabilities: readonly ["settings.read", "settings.manage", "updates.read", "updates.manage"]; }; readonly workflow: { readonly supported: false; readonly capabilities: readonly ["workflow.read", "workflow.manage"]; }; }; type DashboardModuleSpec = typeof DASHBOARD_MODULE_SPECS[keyof typeof DASHBOARD_MODULE_SPECS]; export type DashboardCompatCapability = DashboardModuleSpec['capabilities'][number]; export interface DesktopCompatManifest { schemaVersion: 1; product: 'botmux'; runtimeVersion: string; dashboardProtocolVersion: 2; desktopShell: { supported: true; minAppVersion?: string; }; runtimeIdentity?: { source: 'platform-binding'; machineId: string; }; features: string[]; routes: string[]; modules: Record; capabilities: Record; } export interface BuildCompatManifestOptions { runtimeVersion?: string; /** * Override the machine identity used by tests or an embedding host. * `null` explicitly means that no reliable machine identity is available. */ machineId?: string | null; } export declare function buildCompatManifest(options?: BuildCompatManifestOptions): DesktopCompatManifest; export declare function compatMachineIdForAuthenticatedRequest(presentedToken: string | undefined, activeToken: string | null | undefined, boundMachineId: string | null | undefined): string | null; export declare function handleDesktopCompat(req: IncomingMessage, res: ServerResponse, url: URL, options?: BuildCompatManifestOptions): boolean; export {}; //# sourceMappingURL=compat.d.ts.map