/** * [WHO]: createAgentTool, createTaskToolAlias — the "Agent" / "Task" tool for LLM invocation * [FROM]: Depends on @catui/agent-core ( @sinclair/typebox, ./agent-definition, ./agent-input-output, ./agent-registry, ./agent-tool-filter, ./sub-agent-backend * [TO]: Consumed by core/tools/index.ts ( tool registration ), core/runtime/agent-session.ts * [HERE]: core/sub-agent/agent-tool.ts - The Agent tool implementation per CC §VI (full spawn flow) * [COVENANT]: Change tool schema → update agent-input-output.ts */ import type { AgentTool } from "@catui/agent-core"; import type { Model } from "@catui/ai/types"; import { type Static } from "@sinclair/typebox"; import type { ModelRegistry } from "../model-registry.js"; import type { AgentPermissionMode } from "./agent-definition.js"; import type { AgentDefinitionRegistry } from "./agent-registry.js"; import { InProcessSubAgentBackend } from "./sub-agent-backend.js"; import type { CreateSessionFn } from "./sub-agent-backend.js"; import type { SubAgentEvent } from "./sub-agent-types.js"; import { WorktreeManager } from "../workspace/index.js"; import type { AgentSession } from "../runtime/agent-session.js"; export declare const AGENT_TOOL_NAME = "Agent"; export declare const TASK_TOOL_NAME = "Task"; declare const agentSchema: import("@sinclair/typebox").TObject<{ description: import("@sinclair/typebox").TString; prompt: import("@sinclair/typebox").TString; subagent_type: import("@sinclair/typebox").TOptional; model: import("@sinclair/typebox").TOptional, import("@sinclair/typebox").TLiteral<"opus">, import("@sinclair/typebox").TLiteral<"haiku">, import("@sinclair/typebox").TString]>>; run_in_background: import("@sinclair/typebox").TOptional; name: import("@sinclair/typebox").TOptional; mode: import("@sinclair/typebox").TOptional, import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"bypassPermissions">, import("@sinclair/typebox").TLiteral<"default">, import("@sinclair/typebox").TLiteral<"dontAsk">, import("@sinclair/typebox").TLiteral<"plan">]>>; isolation: import("@sinclair/typebox").TOptional>; }>; export type AgentToolInput = Static; export interface AgentToolConfig { /** The parent AgentSession (for inheriting model, prompt, messages) */ parentSession: AgentSession; /** The parent session's current permission mode */ parentPermissionMode: AgentPermissionMode; /** The parent session's model */ parentModel?: Model; /** Agent definition registry (for looking up agent types) */ registry?: AgentDefinitionRegistry; /** Worktree manager (for isolation mode) */ worktreeManager?: WorktreeManager; /** Whether background tasks are disabled (CC: CLAUDE_CODE_DISABLE_BACKGROUND_TASKS) */ disableBackgroundTasks?: boolean; /** Whether this agent is already a fork worker (prevents recursive fork) */ isForkWorker?: boolean; /** Whether this agent is in a team context */ isTeamContext?: boolean; /** Whether this agent is an in-process teammate */ isInProcessTeam?: boolean; /** MCP tools available to sub-agents */ mcpTools?: AgentTool[]; /** Auto-background threshold override (default: 2 minutes) */ autoBackgroundMs?: number; /** Tool use context for system prompt building */ toolUseContext?: unknown; /** Callback for forwarding sub-agent events to parent's UI */ onSubAgentEvent?: (event: SubAgentEvent) => void; /** Model registry for resolving tier names to concrete models (CC §VI step 7) */ modelRegistry?: ModelRegistry; /** Factory for creating AgentSession instances (injected to avoid cycle with runtime/sdk) */ createSession: CreateSessionFn; /** Shared InProcessSubAgentBackend for session tracking (SendMessage routing, CC §XI) */ backend?: InProcessSubAgentBackend; } export declare function createAgentTool(config: AgentToolConfig): AgentTool; /** * Create the Task tool alias (CC: eI="Task" is an alias for Agent). * Same functionality, different name. */ export declare function createTaskToolAlias(config: AgentToolConfig): AgentTool; export {};