/**
 * Unified agent definition — used for both interactive modes and subagents.
 *
 * Every agent explicitly declares its tools. No defaults, no categories.
 */
import type { ThinkingLevel } from '../core/core-types.js';
/**
 * API filter tags — control which methods appear in the system prompt per mode.
 * Used by api-reference.py (`# @tags action,ask`) and api-overlay.ts.
 */
export declare const API_TAG: {
    readonly ACTION: "action";
    readonly ASK: "ask";
    readonly APPROVAL: "approval";
};
export type ApiTag = (typeof API_TAG)[keyof typeof API_TAG];
export interface AgentDefinition {
    /** Unique name — used as mode name or subagent_type enum value */
    readonly name: string;
    /** Description shown to parent LLM (subagents) or in switch_mode listing */
    readonly description: string;
    /** System prompt for this agent */
    readonly systemPrompt: string;
    /** Explicit list of tool names. Every agent must declare its tools. */
    readonly tools: readonly string[];
    /** AgentController names this mode can switch to via switch_mode. Omit for subagents. */
    readonly switchTo?: readonly string[];
    /**
     * Model in "provider/id" format. Only used by subagents.
     * Interactive modes use whatever model the session has.
     */
    readonly model?: string;
    /** Thinking level. Only used by subagents. */
    readonly thinkingLevel?: ThinkingLevel;
    /** Timeout in seconds. Only used by subagents. */
    readonly timeoutSeconds?: number;
    /**
     * Subagent names this agent must not be allowed to launch via the task tool.
     * This is policy on the agent definition; the task tool consumes it at runtime.
     */
    readonly excludeSubagents?: readonly string[];
}
//# sourceMappingURL=agent-definition.d.ts.map