/**
 * Built-in Agent Registry — CC-aligned agent definitions for fork/subagent.
 *
 * Each built-in agent defines a role with constrained tools, system prompt,
 * and execution budget. The LLM can invoke these via the AgentTool.
 */
import type { PermissionRole, IsolationMode } from "./task-types.js";
export interface AgentDefinition {
    /** Unique identifier for the agent (kebab-case). */
    name: string;
    /** Human-readable label. */
    label: string;
    /** Short description (appears in tool_search / LLM prompt). */
    description: string;
    /** Maximum turns this agent can execute before forced stop. */
    maxTurns: number;
    /** Tool capability profile. This is not a user permission mode. */
    toolCapabilityProfile: "all_tools" | "read_tools" | "no_tools";
    /** Explicit allowed tool names (if empty, uses toolCapabilityProfile filter). */
    allowedTools?: string[];
    /** Whether this agent can fork sub-agents itself. */
    canFork: boolean;
    /** System prompt override for this agent. */
    systemPromptSuffix?: string;
    /** Permission role context (CC: interactive/coordinator/worker). Default: "worker". */
    permissionRole?: PermissionRole;
    /** Isolation mode (CC: shared/worktree/container). Default: "shared". */
    isolation?: IsolationMode;
}
/**
 * Get the full list of built-in agent definitions.
 */
export declare function getBuiltInAgents(): AgentDefinition[];
/**
 * Look up a built-in agent by name.
 */
export declare function getBuiltInAgent(name: string): AgentDefinition | undefined;
/**
 * Check if a given agent name is a built-in agent.
 */
export declare function isBuiltInAgent(name: string): boolean;
/**
 * Resolve tool access for an agent definition.
 * Returns the set of tool names the agent is allowed to use.
 */
export declare function resolveAgentToolSet(agent: AgentDefinition, availableTools: string[]): string[];
