npm install @anthropic-ai/claude-agent-sdkquery()La función principal para interactuar con Claude Code. Crea un generador asincrónico que transmite mensajes a medida que llegan.
function query({
prompt,
options
}: {
prompt: string | AsyncIterable<SDKUserMessage>;
options?: Options;
}): Query| Parámetro | Tipo | Descripción |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | El mensaje de entrada como una cadena o iterable asincrónico para modo de transmisión |
options | Options | Objeto de configuración opcional (ver tipo Options a continuación) |
Devuelve un objeto Query que extiende AsyncGenerator<SDKMessage, void> con métodos adicionales.
tool()Crea una definición de herramienta MCP segura de tipos para usar con servidores MCP del SDK.
function tool<Schema extends ZodRawShape>(
name: string,
description: string,
inputSchema: Schema,
handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>| Parámetro | Tipo | Descripción |
|---|---|---|
name | string | El nombre de la herramienta |
description | string | Una descripción de lo que hace la herramienta |
inputSchema | Schema extends ZodRawShape | Esquema Zod que define los parámetros de entrada de la herramienta |
handler | (args, extra) => Promise<CallToolResult> | Función asincrónica que ejecuta la lógica de la herramienta |
createSdkMcpServer()Crea una instancia de servidor MCP que se ejecuta en el mismo proceso que tu aplicación.
function createSdkMcpServer(options: {
name: string;
version?: string;
tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance| Parámetro | Tipo | Descripción |
|---|---|---|
options.name | string | El nombre del servidor MCP |
options.version | string | Cadena de versión opcional |
options.tools | Array<SdkMcpToolDefinition> | Matriz de definiciones de herramientas creadas con tool() |
OptionsObjeto de configuración para la función query().
| Propiedad | Tipo | Predeterminado | Descripción |
|---|---|---|---|
abortController | AbortController | new AbortController() | Controlador para cancelar operaciones |
additionalDirectories | string[] | [] | Directorios adicionales a los que Claude puede acceder |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Definir suagentes programáticamente |
QueryInterfaz devuelta por la función query().
interface Query extends AsyncGenerator<SDKMessage, void> {
interrupt(): Promise<void>;
setPermissionMode(mode: PermissionMode): Promise<void>;
}| Método | Descripción |
|---|---|
interrupt() | Interrumpe la consulta (solo disponible en modo de entrada de transmisión) |
setPermissionMode() | Cambia el modo de permiso (solo disponible en modo de entrada de transmisión) |
AgentDefinitionConfiguración para un suagente definido programáticamente.
type AgentDefinition = {
description: string;
tools?: string[];
prompt: string;
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}| Campo | Requerido | Descripción |
|---|---|---|
description | Sí | Descripción en lenguaje natural de cuándo usar este agente |
tools | No | Matriz de nombres de herramientas permitidas. Si se omite, hereda todas las herramientas |
prompt | Sí | El mensaje del sistema del agente |
model | No | Anulación de modelo para este agente. Si se omite, usa el modelo principal |
SettingSourceControla qué fuentes de configuración basadas en el sistema de archivos carga el SDK.
type SettingSource = 'user' | 'project' | 'local';| Valor | Descripción | Ubicación |
|---|---|---|
'user' | Configuración global del usuario | ~/.claude/settings.json |
'project' | Configuración compartida del proyecto (controlada por versión) | .claude/settings.json |
'local' | Configuración local del proyecto (ignorada por git) | .claude/settings.local.json |
Cuando settingSources está omitido o indefinido, el SDK no carga ninguna configuración del sistema de archivos. Esto proporciona aislamiento para aplicaciones SDK.
Cargar toda la configuración del sistema de archivos (comportamiento heredado):
// Cargar toda la configuración como lo hizo SDK v0.0.x
const result = query({
prompt: "Analiza este código",
options: {
settingSources: ['user', 'project', 'local'] // Cargar toda la configuración
}
});Cargar solo fuentes de configuración específicas:
// Cargar solo configuración del proyecto, ignorar usuario y local
const result = query({
prompt: "Ejecutar verificaciones de CI",
options: {
settingSources: ['project'] // Solo .claude/settings.json
}
});Entornos de prueba e integración continua:
// Garantizar comportamiento consistente en CI excluyendo configuración local
const result = query({
prompt: "Ejecutar pruebas",
options: {
settingSources: ['project'], // Solo configuración compartida del equipo
permissionMode: 'bypassPermissions'
}
});Aplicaciones solo SDK:
// Definir todo programáticamente (comportamiento predeterminado)
// Sin dependencias del sistema de archivos - settingSources predeterminado a []
const result = query({
prompt: "Revisar este PR",
options: {
// settingSources: [] es el predeterminado, no es necesario especificar
agents: { /* ... */ },
mcpServers: { /* ... */ },
allowedTools: ['Read', 'Grep', 'Glob']
}
});Cargar instrucciones del proyecto CLAUDE.md:
// Cargar configuración del proyecto para incluir archivos CLAUDE.md
const result = query({
prompt: "Agregar una nueva característica siguiendo las convenciones del proyecto",
options: {
systemPrompt: {
type: 'preset',
preset: 'claude_code' // Requerido para usar CLAUDE.md
},
settingSources: ['project'], // Carga CLAUDE.md desde el directorio del proyecto
allowedTools: ['Read', 'Write', 'Edit']
}
});Cuando se cargan múltiples fuentes, la configuración se fusiona con esta precedencia (mayor a menor):
.claude/settings.local.json).claude/settings.json)~/.claude/settings.json)Las opciones programáticas (como agents, allowedTools) siempre anulan la configuración del sistema de archivos.
PermissionModetype PermissionMode =
| 'default' // Comportamiento de permiso estándar
| 'acceptEdits' // Aceptar automáticamente ediciones de archivos
| 'bypassPermissions' // Omitir todas las verificaciones de permiso
| 'plan' // Modo de planificación - sin ejecuciónCanUseToolTipo de función de permiso personalizado para controlar el uso de herramientas.
type CanUseTool = (
toolName: string,
input: ToolInput,
options: {
signal: AbortSignal;
suggestions?: PermissionUpdate[];
}
) => Promise<PermissionResult>;PermissionResultResultado de una verificación de permiso.
type PermissionResult =
| {
behavior: 'allow';
updatedInput: ToolInput;
updatedPermissions?: PermissionUpdate[];
}
| {
behavior: 'deny';
message: string;
interrupt?: boolean;
}McpServerConfigConfiguración para servidores MCP.
type McpServerConfig =
| McpStdioServerConfig
| McpSSEServerConfig
| McpHttpServerConfig
| McpSdkServerConfigWithInstance;McpStdioServerConfigtype McpStdioServerConfig = {
type?: 'stdio';
command: string;
args?: string[];
env?: Record<string, string>;
}McpSSEServerConfigtype McpSSEServerConfig = {
type: 'sse';
url: string;
headers?: Record<string, string>;
}McpHttpServerConfigtype McpHttpServerConfig = {
type: 'http';
url: string;
headers?: Record<string, string>;
}McpSdkServerConfigWithInstancetype McpSdkServerConfigWithInstance = {
type: 'sdk';
name: string;
instance: McpServer;
}SdkPluginConfigConfiguración para cargar complementos en el SDK.
type SdkPluginConfig = {
type: 'local';
path: string;
}| Campo | Tipo | Descripción |
|---|---|---|
type | 'local' | Debe ser 'local' (actualmente solo se admiten complementos locales) |
path | string | Ruta absoluta o relativa al directorio del complemento |
Ejemplo:
plugins: [
{ type: 'local', path: './my-plugin' },
{ type: 'local', path: '/absolute/path/to/plugin' }
]Para información completa sobre cómo crear y usar complementos, ver Complementos.
SDKMessageTipo de unión de todos los mensajes posibles devueltos por la consulta.
type SDKMessage =
| SDKAssistantMessage
| SDKUserMessage
| SDKUserMessageReplay
| SDKResultMessage
| SDKSystemMessage
| SDKPartialAssistantMessage
| SDKCompactBoundaryMessage;SDKAssistantMessageMensaje de respuesta del asistente.
type SDKAssistantMessage = {
type: 'assistant';
uuid: UUID;
session_id: string;
message: APIAssistantMessage; // Del SDK de Anthropic
parent_tool_use_id: string | null;
}SDKUserMessageMensaje de entrada del usuario.
type SDKUserMessage = {
type: 'user';
uuid?: UUID;
session_id: string;
message: APIUserMessage; // Del SDK de Anthropic
parent_tool_use_id: string | null;
}SDKUserMessageReplayMensaje de usuario reproducido con UUID requerido.
type SDKUserMessageReplay = {
type: 'user';
uuid: UUID;
session_id: string;
message: APIUserMessage;
parent_tool_use_id: string | null;
}SDKResultMessageMensaje de resultado final.
type SDKResultMessage =
| {
type: 'result';
subtype: 'success';
uuid: UUID;
session_id: string;
duration_ms: number;
duration_api_ms: number;
is_error: boolean;
num_turns: number;
result: string;
total_cost_usd: number;
usage: NonNullableUsage;
permission_denials: SDKPermissionDenial[];
}
| {
type: 'result';
subtype: 'error_max_turns' | 'error_during_execution';
uuid: UUID;
session_id: string;
duration_ms: number;
duration_api_ms: number;
is_error: boolean;
num_turns: number;
total_cost_usd: number;
usage: NonNullableUsage;
permission_denials: SDKPermissionDenial[];
}SDKSystemMessageMensaje de inicialización del sistema.
type SDKSystemMessage = {
type: 'system';
subtype: 'init';
uuid: UUID;
session_id: string;
apiKeySource: ApiKeySource;
cwd: string;
tools: string[];
mcp_servers: {
name: string;
status: string;
}[];
model: string;
permissionMode: PermissionMode;
slash_commands: string[];
output_style: string;
}SDKPartialAssistantMessageMensaje parcial de transmisión (solo cuando includePartialMessages es verdadero).
type SDKPartialAssistantMessage = {
type: 'stream_event';
event: RawMessageStreamEvent; // Del SDK de Anthropic
parent_tool_use_id: string | null;
uuid: UUID;
session_id: string;
}SDKCompactBoundaryMessageMensaje que indica un límite de compactación de conversación.
type SDKCompactBoundaryMessage = {
type: 'system';
subtype: 'compact_boundary';
uuid: UUID;
session_id: string;
compact_metadata: {
trigger: 'manual' | 'auto';
pre_tokens: number;
};
}SDKPermissionDenialInformación sobre un uso de herramienta denegado.
type SDKPermissionDenial = {
tool_name: string;
tool_use_id: string;
tool_input: ToolInput;
}HookEventEventos de gancho disponibles.
type HookEvent =
| 'PreToolUse'
| 'PostToolUse'
| 'Notification'
| 'UserPromptSubmit'
| 'SessionStart'
| 'SessionEnd'
| 'Stop'
| 'SubagentStop'
| 'PreCompact';HookCallbackTipo de función de devolución de llamada de gancho.
type HookCallback = (
input: HookInput, // Unión de todos los tipos de entrada de gancho
toolUseID: string | undefined,
options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;HookCallbackMatcherConfiguración de gancho con coincidencia opcional.
interface HookCallbackMatcher {
matcher?: string;
hooks: HookCallback[];
}HookInputTipo de unión de todos los tipos de entrada de gancho.
type HookInput =
| PreToolUseHookInput
| PostToolUseHookInput
| NotificationHookInput
| UserPromptSubmitHookInput
| SessionStartHookInput
| SessionEndHookInput
| StopHookInput
| SubagentStopHookInput
| PreCompactHookInput;BaseHookInputInterfaz base que todos los tipos de entrada de gancho extienden.
type BaseHookInput = {
session_id: string;
transcript_path: string;
cwd: string;
permission_mode?: string;
}PreToolUseHookInputtype PreToolUseHookInput = BaseHookInput & {
hook_event_name: 'PreToolUse';
tool_name: string;
tool_input: ToolInput;
}PostToolUseHookInputtype PostToolUseHookInput = BaseHookInput & {
hook_event_name: 'PostToolUse';
tool_name: string;
tool_input: ToolInput;
tool_response: ToolOutput;
}NotificationHookInputtype NotificationHookInput = BaseHookInput & {
hook_event_name: 'Notification';
message: string;
title?: string;
}UserPromptSubmitHookInputtype UserPromptSubmitHookInput = BaseHookInput & {
hook_event_name: 'UserPromptSubmit';
prompt: string;
}SessionStartHookInputtype SessionStartHookInput = BaseHookInput & {
hook_event_name: 'SessionStart';
source: 'startup' | 'resume' | 'clear' | 'compact';
}SessionEndHookInputtype SessionEndHookInput = BaseHookInput & {
hook_event_name: 'SessionEnd';
reason: 'clear' | 'logout' | 'prompt_input_exit' | 'other';
}StopHookInputtype StopHookInput = BaseHookInput & {
hook_event_name: 'Stop';
stop_hook_active: boolean;
}SubagentStopHookInputtype SubagentStopHookInput = BaseHookInput & {
hook_event_name: 'SubagentStop';
stop_hook_active: boolean;
}PreCompactHookInputtype PreCompactHookInput = BaseHookInput & {
hook_event_name: 'PreCompact';
trigger: 'manual' | 'auto';
custom_instructions: string | null;
}HookJSONOutputValor de retorno del gancho.
type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;AsyncHookJSONOutputtype AsyncHookJSONOutput = {
async: true;
asyncTimeout?: number;
}SyncHookJSONOutputtype SyncHookJSONOutput = {
continue?: boolean;
suppressOutput?: boolean;
stopReason?: string;
decision?: 'approve' | 'block';
systemMessage?: string;
reason?: string;
hookSpecificOutput?:
| {
hookEventName: 'PreToolUse';
permissionDecision?: 'allow' | 'deny' | 'ask';
permissionDecisionReason?: string;
}
| {
hookEventName: 'UserPromptSubmit';
additionalContext?: string;
}
| {
hookEventName: 'SessionStart';
additionalContext?: string;
}
| {
hookEventName: 'PostToolUse';
additionalContext?: string;
};
}Documentación de esquemas de entrada para todas las herramientas integradas de Claude Code. Estos tipos se exportan desde @anthropic-ai/claude-agent-sdk y se pueden usar para interacciones de herramientas seguras de tipos.
ToolInputNota: Este es un tipo de solo documentación para claridad. Representa la unión de todos los tipos de entrada de herramienta.
type ToolInput =
| AgentInput
| BashInput
| BashOutputInput
| FileEditInput
| FileReadInput
| FileWriteInput
| GlobInput
| GrepInput
| KillShellInput
| NotebookEditInput
| WebFetchInput
| WebSearchInput
| TodoWriteInput
| ExitPlanModeInput
| ListMcpResourcesInput
| ReadMcpResourceInput;Nombre de herramienta: Task
interface AgentInput {
/**
* Una descripción breve (3-5 palabras) de la tarea
*/
description: string;
/**
* La tarea que el agente debe realizar
*/
prompt: string;
/**
* El tipo de agente especializado a usar para esta tarea
*/
subagent_type: string;
}Lanza un nuevo agente para manejar tareas complejas y multietapa de forma autónoma.
Nombre de herramienta: Bash
interface BashInput {
/**
* El comando a ejecutar
*/
command: string;
/**
* Tiempo de espera opcional en milisegundos (máximo 600000)
*/
timeout?: number;
/**
* Descripción clara y concisa de lo que hace este comando en 5-10 palabras
*/
description?: string;
/**
* Establecer en verdadero para ejecutar este comando en segundo plano
*/
run_in_background?: boolean;
}Ejecuta comandos bash en una sesión de shell persistente con tiempo de espera opcional y ejecución en segundo plano.
Nombre de herramienta: BashOutput
interface BashOutputInput {
/**
* El ID del shell en segundo plano del que recuperar la salida
*/
bash_id: string;
/**
* Expresión regular opcional para filtrar líneas de salida
*/
filter?: string;
}Recupera la salida de un shell bash en segundo plano en ejecución o completado.
Nombre de herramienta: Edit
interface FileEditInput {
/**
* La ruta absoluta al archivo a modificar
*/
file_path: string;
/**
* El texto a reemplazar
*/
old_string: string;
/**
* El texto para reemplazarlo (debe ser diferente de old_string)
*/
new_string: string;
/**
* Reemplazar todas las ocurrencias de old_string (predeterminado falso)
*/
replace_all?: boolean;
}Realiza reemplazos de cadenas exactas en archivos.
Nombre de herramienta: Read
interface FileReadInput {
/**
* La ruta absoluta al archivo a leer
*/
file_path: string;
/**
* El número de línea desde el que comenzar a leer
*/
offset?: number;
/**
* El número de líneas a leer
*/
limit?: number;
}Lee archivos del sistema de archivos local, incluyendo texto, imágenes, PDFs y cuadernos Jupyter.
Nombre de herramienta: Write
interface FileWriteInput {
/**
* La ruta absoluta al archivo a escribir
*/
file_path: string;
/**
* El contenido a escribir en el archivo
*/
content: string;
}Escribe un archivo en el sistema de archivos local, sobrescribiendo si existe.
Nombre de herramienta: Glob
interface GlobInput {
/**
* El patrón glob para coincidir archivos
*/
pattern: string;
/**
* El directorio a buscar (predeterminado a cwd)
*/
path?: string;
}Coincidencia rápida de patrones de archivo que funciona con cualquier tamaño de base de código.
Nombre de herramienta: Grep
interface GrepInput {
/**
* El patrón de expresión regular a buscar
*/
pattern: string;
/**
* Archivo o directorio a buscar (predeterminado a cwd)
*/
path?: string;
/**
* Patrón glob para filtrar archivos (p. ej. "*.js")
*/
glob?: string;
/**
* Tipo de archivo a buscar (p. ej. "js", "py", "rust")
*/
type?: string;
/**
* Modo de salida: "content", "files_with_matches", o "count"
*/
output_mode?: 'content' | 'files_with_matches' | 'count';
/**
* Búsqueda sin distinción de mayúsculas y minúsculas
*/
'-i'?: boolean;
/**
* Mostrar números de línea (para modo de contenido)
*/
'-n'?: boolean;
/**
* Líneas a mostrar antes de cada coincidencia
*/
'-B'?: number;
/**
* Líneas a mostrar después de cada coincidencia
*/
'-A'?: number;
/**
* Líneas a mostrar antes y después de cada coincidencia
*/
'-C'?: number;
/**
* Limitar la salida a las primeras N líneas/entradas
*/
head_limit?: number;
/**
* Habilitar modo multilínea
*/
multiline?: boolean;
}Herramienta de búsqueda potente construida en ripgrep con soporte de expresiones regulares.
Nombre de herramienta: KillBash
interface KillShellInput {
/**
* El ID del shell en segundo plano a matar
*/
shell_id: string;
}Mata un shell bash en segundo plano en ejecución por su ID.
Nombre de herramienta: NotebookEdit
interface NotebookEditInput {
/**
* La ruta absoluta al archivo del cuaderno Jupyter
*/
notebook_path: string;
/**
* El ID de la celda a editar
*/
cell_id?: string;
/**
* La nueva fuente para la celda
*/
new_source: string;
/**
* El tipo de la celda (código o markdown)
*/
cell_type?: 'code' | 'markdown';
/**
* El tipo de edición (reemplazar, insertar, eliminar)
*/
edit_mode?: 'replace' | 'insert' | 'delete';
}Edita celdas en archivos de cuaderno Jupyter.
Nombre de herramienta: WebFetch
interface WebFetchInput {
/**
* La URL de la que obtener contenido
*/
url: string;
/**
* El mensaje a ejecutar en el contenido obtenido
*/
prompt: string;
}Obtiene contenido de una URL y lo procesa con un modelo de IA.
Nombre de herramienta: WebSearch
interface WebSearchInput {
/**
* La consulta de búsqueda a usar
*/
query: string;
/**
* Solo incluir resultados de estos dominios
*/
allowed_domains?: string[];
/**
* Nunca incluir resultados de estos dominios
*/
blocked_domains?: string[];
}Busca en la web y devuelve resultados formateados.
Nombre de herramienta: TodoWrite
interface TodoWriteInput {
/**
* La lista de tareas actualizada
*/
todos: Array<{
/**
* La descripción de la tarea
*/
content: string;
/**
* El estado de la tarea
*/
status: 'pending' | 'in_progress' | 'completed';
/**
* Forma activa de la descripción de la tarea
*/
activeForm: string;
}>;
}Crea y gestiona una lista de tareas estructurada para rastrear el progreso.
Nombre de herramienta: ExitPlanMode
interface ExitPlanModeInput {
/**
* El plan a ejecutar por el usuario para aprobación
*/
plan: string;
}Sale del modo de planificación e indica al usuario que apruebe el plan.
Nombre de herramienta: ListMcpResources
interface ListMcpResourcesInput {
/**
* Nombre de servidor opcional para filtrar recursos por
*/
server?: string;
}Lista los recursos MCP disponibles de servidores conectados.
Nombre de herramienta: ReadMcpResource
interface ReadMcpResourceInput {
/**
* El nombre del servidor MCP
*/
server: string;
/**
* El URI del recurso a leer
*/
uri: string;
}Lee un recurso MCP específico de un servidor.
Documentación de esquemas de salida para todas las herramientas integradas de Claude Code. Estos tipos representan los datos de respuesta reales devueltos por cada herramienta.
ToolOutputNota: Este es un tipo de solo documentación para claridad. Representa la unión de todos los tipos de salida de herramienta.
type ToolOutput =
| TaskOutput
| BashOutput
| BashOutputToolOutput
| EditOutput
| ReadOutput
| WriteOutput
| GlobOutput
| GrepOutput
| KillBashOutput
| NotebookEditOutput
| WebFetchOutput
| WebSearchOutput
| TodoWriteOutput
| ExitPlanModeOutput
| ListMcpResourcesOutput
| ReadMcpResourceOutput;Nombre de herramienta: Task
interface TaskOutput {
/**
* Mensaje de resultado final del suagente
*/
result: string;
/**
* Estadísticas de uso de tokens
*/
usage?: {
input_tokens: number;
output_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
};
/**
* Costo total en USD
*/
total_cost_usd?: number;
/**
* Duración de ejecución en milisegundos
*/
duration_ms?: number;
}Devuelve el resultado final del suagente después de completar la tarea delegada.
Nombre de herramienta: Bash
interface BashOutput {
/**
* Salida combinada de stdout y stderr
*/
output: string;
/**
* Código de salida del comando
*/
exitCode: number;
/**
* Si el comando fue matado debido a tiempo de espera
*/
killed?: boolean;
/**
* ID de shell para procesos en segundo plano
*/
shellId?: string;
}Devuelve la salida del comando con estado de salida. Los comandos en segundo plano devuelven inmediatamente con un shellId.
Nombre de herramienta: BashOutput
interface BashOutputToolOutput {
/**
* Nueva salida desde la última verificación
*/
output: string;
/**
* Estado actual del shell
*/
status: 'running' | 'completed' | 'failed';
/**
* Código de salida (cuando se completa)
*/
exitCode?: number;
}Devuelve la salida incremental de shells en segundo plano.
Nombre de herramienta: Edit
interface EditOutput {
/**
* Mensaje de confirmación
*/
message: string;
/**
* Número de reemplazos realizados
*/
replacements: number;
/**
* Ruta del archivo que fue editado
*/
file_path: string;
}Devuelve confirmación de ediciones exitosas con recuento de reemplazos.
Nombre de herramienta: Read
type ReadOutput =
| TextFileOutput
| ImageFileOutput
| PDFFileOutput
| NotebookFileOutput;
interface TextFileOutput {
/**
* Contenido del archivo con números de línea
*/
content: string;
/**
* Número total de líneas en el archivo
*/
total_lines: number;
/**
* Líneas realmente devueltas
*/
lines_returned: number;
}
interface ImageFileOutput {
/**
* Datos de imagen codificados en base64
*/
image: string;
/**
* Tipo MIME de imagen
*/
mime_type: string;
/**
* Tamaño del archivo en bytes
*/
file_size: number;
}
interface PDFFileOutput {
/**
* Matriz de contenidos de página
*/
pages: Array<{
page_number: number;
text?: string;
images?: Array<{
image: string;
mime_type: string;
}>;
}>;
/**
* Número total de páginas
*/
total_pages: number;
}
interface NotebookFileOutput {
/**
* Celdas del cuaderno Jupyter
*/
cells: Array<{
cell_type: 'code' | 'markdown';
source: string;
outputs?: any[];
execution_count?: number;
}>;
/**
* Metadatos del cuaderno
*/
metadata?: Record<string, any>;
}Devuelve el contenido del archivo en formato apropiado para el tipo de archivo.
Nombre de herramienta: Write
interface WriteOutput {
/**
* Mensaje de éxito
*/
message: string;
/**
* Número de bytes escritos
*/
bytes_written: number;
/**
* Ruta del archivo que fue escrito
*/
file_path: string;
}Devuelve confirmación después de escribir exitosamente el archivo.
Nombre de herramienta: Glob
interface GlobOutput {
/**
* Matriz de rutas de archivo coincidentes
*/
matches: string[];
/**
* Número de coincidencias encontradas
*/
count: number;
/**
* Directorio de búsqueda utilizado
*/
search_path: string;
}Devuelve rutas de archivo que coinciden con el patrón glob, ordenadas por tiempo de modificación.
Nombre de herramienta: Grep
type GrepOutput =
| GrepContentOutput
| GrepFilesOutput
| GrepCountOutput;
interface GrepContentOutput {
/**
* Líneas coincidentes con contexto
*/
matches: Array<{
file: string;
line_number?: number;
line: string;
before_context?: string[];
after_context?: string[];
}>;
/**
* Número total de coincidencias
*/
total_matches: number;
}
interface GrepFilesOutput {
/**
* Archivos que contienen coincidencias
*/
files: string[];
/**
* Número de archivos con coincidencias
*/
count: number;
}
interface GrepCountOutput {
/**
* Recuentos de coincidencias por archivo
*/
counts: Array<{
file: string;
count: number;
}>;
/**
* Total de coincidencias en todos los archivos
*/
total: number;
}Devuelve resultados de búsqueda en el formato especificado por output_mode.
Nombre de herramienta: KillBash
interface KillBashOutput {
/**
* Mensaje de éxito
*/
message: string;
/**
* ID del shell matado
*/
shell_id: string;
}Devuelve confirmación después de terminar el shell en segundo plano.
Nombre de herramienta: NotebookEdit
interface NotebookEditOutput {
/**
* Mensaje de éxito
*/
message: string;
/**
* Tipo de edición realizada
*/
edit_type: 'replaced' | 'inserted' | 'deleted';
/**
* ID de celda que fue afectada
*/
cell_id?: string;
/**
* Total de celdas en el cuaderno después de la edición
*/
total_cells: number;
}Devuelve confirmación después de modificar el cuaderno Jupyter.
Nombre de herramienta: WebFetch
interface WebFetchOutput {
/**
* Respuesta del modelo de IA al mensaje
*/
response: string;
/**
* URL que fue obtenida
*/
url: string;
/**
* URL final después de redirecciones
*/
final_url?: string;
/**
* Código de estado HTTP
*/
status_code?: number;
}Devuelve el análisis de la IA del contenido web obtenido.
Nombre de herramienta: WebSearch
interface WebSearchOutput {
/**
* Resultados de búsqueda
*/
results: Array<{
title: string;
url: string;
snippet: string;
/**
* Metadatos adicionales si están disponibles
*/
metadata?: Record<string, any>;
}>;
/**
* Número total de resultados
*/
total_results: number;
/**
* La consulta que fue buscada
*/
query: string;
}Devuelve resultados de búsqueda formateados de la web.
Nombre de herramienta: TodoWrite
interface TodoWriteOutput {
/**
* Mensaje de éxito
*/
message: string;
/**
* Estadísticas de tareas actuales
*/
stats: {
total: number;
pending: number;
in_progress: number;
completed: number;
};
}Devuelve confirmación con estadísticas de tareas actuales.
Nombre de herramienta: ExitPlanMode
interface ExitPlanModeOutput {
/**
* Mensaje de confirmación
*/
message: string;
/**
* Si el usuario aprobó el plan
*/
approved?: boolean;
}Devuelve confirmación después de salir del modo de planificación.
Nombre de herramienta: ListMcpResources
interface ListMcpResourcesOutput {
/**
* Recursos disponibles
*/
resources: Array<{
uri: string;
name: string;
description?: string;
mimeType?: string;
server: string;
}>;
/**
* Número total de recursos
*/
total: number;
}Devuelve lista de recursos MCP disponibles.
Nombre de herramienta: ReadMcpResource
interface ReadMcpResourceOutput {
/**
* Contenidos del recurso
*/
contents: Array<{
uri: string;
mimeType?: string;
text?: string;
blob?: string;
}>;
/**
* Servidor que proporcionó el recurso
*/
server: string;
}Devuelve el contenido del recurso MCP solicitado.
PermissionUpdateOperaciones para actualizar permisos.
type PermissionUpdate =
| {
type: 'addRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'replaceRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'removeRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'setMode';
mode: PermissionMode;
destination: PermissionUpdateDestination;
}
| {
type: 'addDirectories';
directories: string[];
destination: PermissionUpdateDestination;
}
| {
type: 'removeDirectories';
directories: string[];
destination: PermissionUpdateDestination;
}PermissionBehaviortype PermissionBehavior = 'allow' | 'deny' | 'ask';PermissionUpdateDestinationtype PermissionUpdateDestination =
| 'userSettings' // Configuración global del usuario
| 'projectSettings' // Configuración del proyecto por directorio
| 'localSettings' // Configuración local ignorada por git
| 'session' // Solo sesión actualPermissionRuleValuetype PermissionRuleValue = {
toolName: string;
ruleContent?: string;
}ApiKeySourcetype ApiKeySource = 'user' | 'project' | 'org' | 'temporary';ConfigScopetype ConfigScope = 'local' | 'user' | 'project';NonNullableUsageUna versión de Usage con todos los campos anulables hechos no anulables.
type NonNullableUsage = {
[K in keyof Usage]: NonNullable<Usage[K]>;
}UsageEstadísticas de uso de tokens (de @anthropic-ai/sdk).
type Usage = {
input_tokens: number | null;
output_tokens: number | null;
cache_creation_input_tokens?: number | null;
cache_read_input_tokens?: number | null;
}CallToolResultTipo de resultado de herramienta MCP (de @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
content: Array<{
type: 'text' | 'image' | 'resource';
// Los campos adicionales varían según el tipo
}>;
isError?: boolean;
}AbortErrorClase de error personalizada para operaciones de aborto.
class AbortError extends Error {}allowedTools |
string[] |
| Todas las herramientas |
| Lista de nombres de herramientas permitidas |
canUseTool | CanUseTool | undefined | Función de permiso personalizada para el uso de herramientas |
continue | boolean | false | Continuar la conversación más reciente |
cwd | string | process.cwd() | Directorio de trabajo actual |
disallowedTools | string[] | [] | Lista de nombres de herramientas no permitidas |
env | Dict<string> | process.env | Variables de entorno |
executable | 'bun' | 'deno' | 'node' | Detectado automáticamente | Tiempo de ejecución de JavaScript a usar |
executableArgs | string[] | [] | Argumentos a pasar al ejecutable |
extraArgs | Record<string, string | null> | {} | Argumentos adicionales |
fallbackModel | string | undefined | Modelo a usar si el principal falla |
forkSession | boolean | false | Al reanudar con resume, bifurcar a un nuevo ID de sesión en lugar de continuar la sesión original |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Devoluciones de llamada de gancho para eventos |
includePartialMessages | boolean | false | Incluir eventos de mensajes parciales |
maxThinkingTokens | number | undefined | Tokens máximos para el proceso de pensamiento |
maxTurns | number | undefined | Turnos de conversación máximos |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Configuraciones de servidor MCP |
model | string | Predeterminado de CLI | Modelo Claude a usar |
pathToClaudeCodeExecutable | string | Detectado automáticamente | Ruta al ejecutable de Claude Code |
permissionMode | PermissionMode | 'default' | Modo de permiso para la sesión |
permissionPromptToolName | string | undefined | Nombre de herramienta MCP para mensajes de permiso |
plugins | SdkPluginConfig[] | [] | Cargar complementos personalizados desde rutas locales. Ver Complementos para detalles |
resume | string | undefined | ID de sesión a reanudar |
settingSources | SettingSource[] | [] (sin configuración) | Controlar qué configuración del sistema de archivos cargar. Cuando se omite, no se carga ninguna configuración. Nota: Debe incluir 'project' para cargar archivos CLAUDE.md |
stderr | (data: string) => void | undefined | Devolución de llamada para salida de stderr |
strictMcpConfig | boolean | false | Aplicar validación MCP estricta |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string } | undefined (mensaje vacío) | Configuración del mensaje del sistema. Pasar una cadena para un mensaje personalizado, o { type: 'preset', preset: 'claude_code' } para usar el mensaje del sistema de Claude Code. Al usar la forma de objeto preestablecido, agregue append para extender el mensaje del sistema con instrucciones adicionales |