import type { CliRuntimeConfig } from '../adapters/cli/runtime.js'; export interface DashboardBotDescriptor { larkAppId: string; botName?: string | null; botAvatarUrl?: string; cliId?: string; /** 租户品牌(bots.json 的 BotConfig.brand)。决定飞书后台深链 host。 * 缺省 → 前端 normalizeBrand 兜底 feishu,向后兼容旧 payload。 */ brand?: string; cliRuntime?: CliRuntimeConfig; /** Legacy executable override. Private Bot Defaults payload only. */ cliPathOverride?: string; wrapperCli?: string; model?: string; reasoningEffort?: string; /** dsh runner turn timeout (ms); dashboard exposes it for the dsh CLI only. */ turnTimeoutMs?: number; /** dsh runtime variant ('official' | 'tui'); dashboard exposes it for the dsh CLI only. */ dshRuntime?: 'official' | 'tui' | null; } /** * per-bot brand(feishu / lark)按 larkAppId 的映射,供 dashboard 前端派生飞书 * 后台深链 host。brand 只在 bots.json 里(DaemonRegistry 的心跳态不带它),而 * 配置加载在 BOTS_CONFIG 缺失 / bots.json 尚未创建 / 临时不可读时会抛——这里 * 用 try/catch 兜底返回空 Map(与 dashboard 的 configuredCliIds / * configuredBotAgentFields 同款失败语义),保证冷缓存 /api/groups 与 /api/bots * 仍能基于 DaemonRegistry 走降级 roster(前端拿不到 brand → normalizeBrand * 兜底 feishu),不因缺配置而 500。`load` 注入配置源便于单测。 */ export declare function brandMapByAppId(load: () => ReadonlyArray<{ larkAppId: string; brand?: string; }>): Map; export declare function botSummaryPayload(bot: DashboardBotDescriptor): { brand?: string | undefined; cliId?: string | undefined; botAvatarUrl?: string | undefined; larkAppId: string; botName: string | null | undefined; }; export declare function botDefaultsPayload(bot: DashboardBotDescriptor, j?: any, error?: string): { error: string; online: boolean; agentSelectionKey?: string | undefined; dshRuntime?: "official" | "tui" | undefined; turnTimeoutMs?: number | undefined; reasoningEffort?: string | undefined; model?: string | undefined; wrapperCli?: string | undefined; cliPathOverride?: string | undefined; cliRuntime?: CliRuntimeConfig | undefined; brand?: string | undefined; cliId?: string | undefined; larkAppId: string; botName: string | null | undefined; } | { displayName: any; larkBotName: any; defaultOncall: any; defaultWorkingDir: any; defaultWorkingDirAutoWorktree: boolean; autoboundChatCount: any; brandLabel: any; sandbox: boolean; sandboxPaths: { readWrite: any; readOnly: any; deny: any; } | null; readIsolationSupported: boolean; backendType: any; usageDisplay: import("../bot-registry.js").UsageDisplayMode; usageSupported: boolean; disableStreamingCard: boolean; silentTurnReactions: boolean; codexAppCleanInput: boolean; writableTerminalLinkInCard: boolean; privateCard: boolean; overloadAlert: boolean; botToBotSameDir: boolean; autoStartOnGroupJoin: boolean; autoStartOnGroupJoinPrompt: any; autoStartOnNewTopic: boolean; summaryRange: any; summaryMemory: boolean; summaryMemoryPath: any; regularGroupReplyMode: any; regularGroupMentionMode: any; docSubscribeDefaultMode: string; substituteMode: any; feedback: any; restrictGrantCommands: boolean; autoGrantRequestCards: boolean; p2pOpen: boolean; grantDefaultDurationMs: any; messageQuotaDefaultLimit: any; p2pMode: string; envelopeInjection: string; skillInjection: any; skillInjectionDefault: any; skillInjectionSupport: any; maxLiveWorkers: any; logicalSessionCount: any; residentSessionCount: any; dormantSessionCount: any; sessionOwnerReminder: any; startupCommands: any; customPassthroughCommands: any; canTalkDaemonCommands: any; launchShell: any; env: any; riff: any; skills: any; online: boolean; agentSelectionKey?: string | undefined; dshRuntime?: "official" | "tui" | undefined; turnTimeoutMs?: number | undefined; reasoningEffort?: string | undefined; model?: string | undefined; wrapperCli?: string | undefined; cliPathOverride?: string | undefined; cliRuntime?: CliRuntimeConfig | undefined; brand?: string | undefined; cliId?: string | undefined; larkAppId: string; botName: string | null | undefined; }; //# sourceMappingURL=bot-payload.d.ts.map