184 lines
6.5 KiB
TypeScript
184 lines
6.5 KiB
TypeScript
import type { GatewayBrowserClient, GatewayHelloOk } from "./gateway";
|
|
import type { Tab } from "./navigation";
|
|
import type { UiSettings } from "./storage";
|
|
import type { ThemeMode } from "./theme";
|
|
import type { ThemeTransitionContext } from "./theme-transition";
|
|
import type {
|
|
ChannelsStatusSnapshot,
|
|
ConfigSnapshot,
|
|
CronJob,
|
|
CronRunLogEntry,
|
|
CronStatus,
|
|
HealthSnapshot,
|
|
LogEntry,
|
|
LogLevel,
|
|
PresenceEntry,
|
|
SessionsListResult,
|
|
SkillStatusReport,
|
|
StatusSummary,
|
|
} from "./types";
|
|
import type { ChatQueueItem, CronFormState } from "./ui-types";
|
|
import type { EventLogEntry } from "./app-events";
|
|
import type { SkillMessage } from "./controllers/skills";
|
|
import type {
|
|
ExecApprovalsFile,
|
|
ExecApprovalsSnapshot,
|
|
} from "./controllers/exec-approvals";
|
|
import type { DevicePairingList } from "./controllers/devices";
|
|
import type { ExecApprovalRequest } from "./controllers/exec-approval";
|
|
|
|
export type AppViewState = {
|
|
settings: UiSettings;
|
|
password: string;
|
|
tab: Tab;
|
|
basePath: string;
|
|
connected: boolean;
|
|
theme: ThemeMode;
|
|
themeResolved: "light" | "dark";
|
|
hello: GatewayHelloOk | null;
|
|
lastError: string | null;
|
|
eventLog: EventLogEntry[];
|
|
sessionKey: string;
|
|
chatLoading: boolean;
|
|
chatSending: boolean;
|
|
chatMessage: string;
|
|
chatMessages: unknown[];
|
|
chatToolMessages: unknown[];
|
|
chatStream: string | null;
|
|
chatRunId: string | null;
|
|
chatThinkingLevel: string | null;
|
|
chatQueue: ChatQueueItem[];
|
|
nodesLoading: boolean;
|
|
nodes: Array<Record<string, unknown>>;
|
|
devicesLoading: boolean;
|
|
devicesError: string | null;
|
|
devicesList: DevicePairingList | null;
|
|
execApprovalsLoading: boolean;
|
|
execApprovalsSaving: boolean;
|
|
execApprovalsDirty: boolean;
|
|
execApprovalsSnapshot: ExecApprovalsSnapshot | null;
|
|
execApprovalsForm: ExecApprovalsFile | null;
|
|
execApprovalsSelectedAgent: string | null;
|
|
execApprovalsTarget: "gateway" | "node";
|
|
execApprovalsTargetNodeId: string | null;
|
|
execApprovalQueue: ExecApprovalRequest[];
|
|
execApprovalBusy: boolean;
|
|
execApprovalError: string | null;
|
|
configLoading: boolean;
|
|
configRaw: string;
|
|
configValid: boolean | null;
|
|
configIssues: unknown[];
|
|
configSaving: boolean;
|
|
configApplying: boolean;
|
|
updateRunning: boolean;
|
|
configSnapshot: ConfigSnapshot | null;
|
|
configSchema: unknown | null;
|
|
configSchemaLoading: boolean;
|
|
configUiHints: Record<string, unknown>;
|
|
configForm: Record<string, unknown> | null;
|
|
configFormMode: "form" | "raw";
|
|
channelsLoading: boolean;
|
|
channelsSnapshot: ChannelsStatusSnapshot | null;
|
|
channelsError: string | null;
|
|
channelsLastSuccess: number | null;
|
|
whatsappLoginMessage: string | null;
|
|
whatsappLoginQrDataUrl: string | null;
|
|
whatsappLoginConnected: boolean | null;
|
|
whatsappBusy: boolean;
|
|
configFormDirty: boolean;
|
|
presenceLoading: boolean;
|
|
presenceEntries: PresenceEntry[];
|
|
presenceError: string | null;
|
|
presenceStatus: string | null;
|
|
sessionsLoading: boolean;
|
|
sessionsResult: SessionsListResult | null;
|
|
sessionsError: string | null;
|
|
sessionsFilterActive: string;
|
|
sessionsFilterLimit: string;
|
|
sessionsIncludeGlobal: boolean;
|
|
sessionsIncludeUnknown: boolean;
|
|
cronLoading: boolean;
|
|
cronJobs: CronJob[];
|
|
cronStatus: CronStatus | null;
|
|
cronError: string | null;
|
|
cronForm: CronFormState;
|
|
cronRunsJobId: string | null;
|
|
cronRuns: CronRunLogEntry[];
|
|
cronBusy: boolean;
|
|
skillsLoading: boolean;
|
|
skillsReport: SkillStatusReport | null;
|
|
skillsError: string | null;
|
|
skillsFilter: string;
|
|
skillEdits: Record<string, string>;
|
|
skillMessages: Record<string, SkillMessage>;
|
|
skillsBusyKey: string | null;
|
|
debugLoading: boolean;
|
|
debugStatus: StatusSummary | null;
|
|
debugHealth: HealthSnapshot | null;
|
|
debugModels: unknown[];
|
|
debugHeartbeat: unknown | null;
|
|
debugCallMethod: string;
|
|
debugCallParams: string;
|
|
debugCallResult: string | null;
|
|
debugCallError: string | null;
|
|
logsLoading: boolean;
|
|
logsError: string | null;
|
|
logsFile: string | null;
|
|
logsEntries: LogEntry[];
|
|
logsFilterText: string;
|
|
logsLevelFilters: Record<LogLevel, boolean>;
|
|
logsAutoFollow: boolean;
|
|
logsTruncated: boolean;
|
|
client: GatewayBrowserClient | null;
|
|
connect: () => void;
|
|
setTab: (tab: Tab) => void;
|
|
setTheme: (theme: ThemeMode, context?: ThemeTransitionContext) => void;
|
|
applySettings: (next: UiSettings) => void;
|
|
loadOverview: () => Promise<void>;
|
|
loadCron: () => Promise<void>;
|
|
handleWhatsAppStart: (force: boolean) => Promise<void>;
|
|
handleWhatsAppWait: () => Promise<void>;
|
|
handleWhatsAppLogout: () => Promise<void>;
|
|
handleChannelConfigSave: () => Promise<void>;
|
|
handleChannelConfigReload: () => Promise<void>;
|
|
handleExecApprovalDecision: (decision: "allow-once" | "allow-always" | "deny") => Promise<void>;
|
|
handleConfigLoad: () => Promise<void>;
|
|
handleConfigSave: () => Promise<void>;
|
|
handleConfigApply: () => Promise<void>;
|
|
handleConfigFormUpdate: (path: string, value: unknown) => void;
|
|
handleConfigFormModeChange: (mode: "form" | "raw") => void;
|
|
handleConfigRawChange: (raw: string) => void;
|
|
handleInstallSkill: (key: string) => Promise<void>;
|
|
handleUpdateSkill: (key: string) => Promise<void>;
|
|
handleToggleSkillEnabled: (key: string, enabled: boolean) => Promise<void>;
|
|
handleUpdateSkillEdit: (key: string, value: string) => void;
|
|
handleSaveSkillApiKey: (key: string, apiKey: string) => Promise<void>;
|
|
handleCronToggle: (jobId: string, enabled: boolean) => Promise<void>;
|
|
handleCronRun: (jobId: string) => Promise<void>;
|
|
handleCronRemove: (jobId: string) => Promise<void>;
|
|
handleCronAdd: () => Promise<void>;
|
|
handleCronRunsLoad: (jobId: string) => Promise<void>;
|
|
handleCronFormUpdate: (path: string, value: unknown) => void;
|
|
handleSessionsLoad: () => Promise<void>;
|
|
handleSessionsPatch: (key: string, patch: unknown) => Promise<void>;
|
|
handleLoadNodes: () => Promise<void>;
|
|
handleLoadPresence: () => Promise<void>;
|
|
handleLoadSkills: () => Promise<void>;
|
|
handleLoadDebug: () => Promise<void>;
|
|
handleLoadLogs: () => Promise<void>;
|
|
handleDebugCall: () => Promise<void>;
|
|
handleRunUpdate: () => Promise<void>;
|
|
setPassword: (next: string) => void;
|
|
setSessionKey: (next: string) => void;
|
|
setChatMessage: (next: string) => void;
|
|
handleChatSend: () => Promise<void>;
|
|
handleChatAbort: () => Promise<void>;
|
|
handleChatSelectQueueItem: (id: string) => void;
|
|
handleChatDropQueueItem: (id: string) => void;
|
|
handleChatClearQueue: () => void;
|
|
handleLogsFilterChange: (next: string) => void;
|
|
handleLogsLevelFilterToggle: (level: LogLevel) => void;
|
|
handleLogsAutoFollowToggle: (next: boolean) => void;
|
|
handleCallDebugMethod: (method: string, params: string) => Promise<void>;
|
|
};
|