import type { Config as AppConfig } from "../core/config.js"; import type { Config as McpConfig } from "../core/mcp/config.js"; import type { Manager as McpManager } from "../core/mcp/index.js"; import type { Registry as SkillsRegistry } from "../core/skills/registry.js"; export type ConfigureAppProps = { config: AppConfig; mcpConfig: McpConfig; mcpManager: McpManager; skills: SkillsRegistry; onExit: () => void; }; export type Screen = { kind: "home"; } | { kind: "config-general"; } | { kind: "config"; } | { kind: "config-providers"; } | { kind: "config-provider-add-type"; name: string; } | { kind: "config-provider-edit"; name: string; } | { kind: "config-provider-type"; name: string; } | { kind: "config-provider-anthropic-thinking"; name: string; } | { kind: "config-provider-ollama-thinking"; name: string; } | { kind: "config-provider-delete-confirm"; name: string; } | { kind: "config-tools"; } | { kind: "config-llms"; } | { kind: "config-llm-edit"; name: string; } | { kind: "config-llm-provider"; name: string; } | { kind: "config-llm-delete-confirm"; name: string; } | { kind: "config-prompts"; } | { kind: "config-search"; } | { kind: "config-search-provider"; } | { kind: "mcp"; } | { kind: "mcp-stdio-edit"; originalName?: string; } | { kind: "mcp-remote-edit"; transportType: "streamable-http" | "sse"; originalName?: string; } | { kind: "mcp-delete-confirm"; name: string; } | { kind: "skills"; } | { kind: "skills-delete-confirm"; folder: string; displayName: string; } | { kind: "skills-search-results"; query: string; }; export type Notice = { kind: "success" | "error" | "info"; text: string; }; export type PromptState = { title: string; label: string; initialValue?: string; placeholder?: string; note?: string; onSubmit: (value: string) => void | Promise; onCancel?: () => void; }; export type MenuAction = () => void | Promise; export type MenuItem = { key?: string; label: string; /** First occurrence in `label` is rendered bold (MCP server name, skill title, etc.). */ boldSubstring?: string; oauthStatus?: "authenticated" | "expired" | "unauthenticated"; value: MenuAction; };