import type { SubAgentManager } from "./sub-agent-manager.js"; import type { ACodeMcpConnection } from "./runtime.js"; import type { TerminalManager } from "./terminal-types.js"; import type { ACodePluginBridge } from "./plugin-types.js"; import type { CapabilityState } from "./capability-prompt.js"; export interface ACodeMcpServerSpec { type?: "stdio" | "sse" | "http"; command?: string; args?: string[]; env?: Record; cwd?: string; url?: string; headers?: Record; [key: string]: unknown; } export interface ACodeConfigFile { model?: string; systemPrompt?: string; commandDirs?: string[]; commands?: { directories?: string[]; [key: string]: unknown; }; permissions?: ACodePermissionConfig; allowedTools?: string[]; deniedTools?: string[]; mcpServers?: Record; provider?: Record; [key: string]: unknown; }>; [key: string]: unknown; } export interface ACodeSkillMetadata { name: string; description?: string; directory: string; content: string; } export interface ACodeSkillGroup { dir: string; exists: boolean; skills: ACodeSkillMetadata[]; } export type ACodeEventType = "session_started" | "startup_phase" | "ai_request" | "thinking_delta" | "assistant_delta" | "command_output" | "command_status" | "mcp_status" | "skill_status" | "warning" | "turn_complete" | "session_complete" | "context_compaction" | "question_request" | "tool_permission_request" | "error" | "background_command_completed"; export interface ACodeEvent { type: ACodeEventType; sessionId: string; timestamp: string; data: Record; } export interface ACodeCommandSpec { name: string; description?: string; allowedTools?: string[]; argumentHint?: string; body: string; sourcePath: string; plugin?: string; } export type ACodePermissionMode = "default" | "bypassPermissions"; export interface ACodePermissionConfig { mode?: ACodePermissionMode; allow?: string[]; deny?: string[]; } export interface ACodeResolvedPermissionConfig { mode: ACodePermissionMode; allow: string[]; deny: string[]; } export type ACodeHookEventName = "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop"; export interface ACodeHookEvent { name: ACodeHookEventName; sessionId: string; timestamp: string; data: Record; } export interface ACodeHookResult { decision?: "allow" | "deny" | "modify"; message?: string; data?: Record; } export type ACodeHookHandler = (event: ACodeHookEvent) => ACodeHookResult | undefined | Promise; export interface ACodeRuntimeConfig { sessionId: string; workingDirectory: string; agentId?: string; configPath?: string; skillsDir?: string; pluginsDir?: string; initialPrompt?: string; model?: string; effort?: string; systemPrompt?: string; globalPrompt?: string; rolePrompt?: string; memory?: string; env?: Record; commandDirs?: string[]; hooks?: ACodeHookHandler[]; permissions?: ACodePermissionConfig; subAgentManager?: SubAgentManager; terminalManager?: TerminalManager; pluginBridge?: ACodePluginBridge; sharedMcpConnections?: ACodeMcpConnection[]; subAgentModel?: string; subAgentEffort?: string; subAgentAllowedTools?: string[]; onFileChange?: import("./built-in-file-tools.js").OnAgentFileChange; toolPermissionPolicy?: import("./built-in-file-tools.js").ToolPermissionPolicy; extraBuiltInTools?: import("./built-in-file-tools.js").ACodeBuiltInTool[]; subAgentSuiteTools?: import("./built-in-file-tools.js").ACodeBuiltInTool[]; subAgentSuiteToolProvider?: (patterns: string[]) => Promise; capabilityState?: (featureKey: string) => CapabilityState; } export interface ACodeResolvedProviderConfig { model: string; baseURL?: string; apiKey?: string; effort?: string; systemPrompt?: string; stream: boolean; requestTimeoutMs: number; requestTotalTimeoutMs: number; requestRetryCount: number; requestFirstByteTimeoutMs: number; requestStreamIdleTimeoutMs: number; mcpToolTimeoutMs: number; mcpPollingToolTimeoutMs: number; supportsImageInput: boolean; contextLimit?: number; inputLimit?: number; maxOutput?: number; }