Установка

npm install @anthropic-ai/claude-agent-sdk

Функции

query()

Основная функция для взаимодействия с Claude Code. Создает асинхронный генератор, который передает сообщения по мере их поступления.
function query({
  prompt,
  options
}: {
  prompt: string | AsyncIterable<SDKUserMessage>;
  options?: Options;
}): Query

Параметры

ПараметрТипОписание
promptstring | AsyncIterable<SDKUserMessage>Входной запрос как строка или асинхронный итератор для режима потоковой передачи
optionsOptionsНеобязательный объект конфигурации (см. тип Options ниже)

Возвращает

Возвращает объект Query, который расширяет AsyncGenerator<SDKMessage, void> дополнительными методами.

tool()

Создает типобезопасное определение MCP инструмента для использования с SDK MCP серверами.
function tool<Schema extends ZodRawShape>(
  name: string,
  description: string,
  inputSchema: Schema,
  handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>

Параметры

ПараметрТипОписание
namestringИмя инструмента
descriptionstringОписание того, что делает инструмент
inputSchemaSchema extends ZodRawShapeZod схема, определяющая входные параметры инструмента
handler(args, extra) => Promise<CallToolResult>Асинхронная функция, которая выполняет логику инструмента

createSdkMcpServer()

Создает экземпляр MCP сервера, который работает в том же процессе, что и ваше приложение.
function createSdkMcpServer(options: {
  name: string;
  version?: string;
  tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance

Параметры

ПараметрТипОписание
options.namestringИмя MCP сервера
options.versionstringНеобязательная строка версии
options.toolsArray<SdkMcpToolDefinition>Массив определений инструментов, созданных с помощью tool()

Типы

Options

Объект конфигурации для функции query().
СвойствоТипПо умолчаниюОписание
abortControllerAbortControllernew AbortController()Контроллер для отмены операций
additionalDirectoriesstring[][]Дополнительные директории, к которым Claude может получить доступ
agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedПрограммно определить подагентов
allowedToolsstring[]Все инструментыСписок разрешенных имен инструментов
canUseToolCanUseToolundefinedПользовательская функция разрешений для использования инструментов
continuebooleanfalseПродолжить самый последний разговор
cwdstringprocess.cwd()Текущая рабочая директория
disallowedToolsstring[][]Список запрещенных имен инструментов
envDict<string>process.envПеременные окружения
executable'bun' | 'deno' | 'node'АвтоопределениеJavaScript среда выполнения для использования
executableArgsstring[][]Аргументы для передачи исполняемому файлу
extraArgsRecord<string, string | null>{}Дополнительные аргументы
fallbackModelstringundefinedМодель для использования, если основная не работает
forkSessionbooleanfalseПри возобновлении с resume, создать новый ID сессии вместо продолжения оригинальной сессии
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Обратные вызовы хуков для событий
includePartialMessagesbooleanfalseВключить события частичных сообщений
maxThinkingTokensnumberundefinedМаксимальное количество токенов для процесса размышления
maxTurnsnumberundefinedМаксимальное количество ходов разговора
mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Конфигурации MCP серверов
modelstringПо умолчанию из CLIМодель Claude для использования
pathToClaudeCodeExecutablestringАвтоопределениеПуть к исполняемому файлу Claude Code
permissionModePermissionMode'default'Режим разрешений для сессии
permissionPromptToolNamestringundefinedИмя MCP инструмента для запросов разрешений
resumestringundefinedID сессии для возобновления
settingSourcesSettingSource[][] (без настроек)Контролировать, какие настройки файловой системы загружать. Если опущено, настройки не загружаются
stderr(data: string) => voidundefinedОбратный вызов для вывода stderr
strictMcpConfigbooleanfalseПринудительная строгая MCP валидация
systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (пустой запрос)Конфигурация системного запроса. Передайте строку для пользовательского запроса, или { type: 'preset', preset: 'claude_code' } для использования системного запроса Claude Code

Query

Интерфейс, возвращаемый функцией query().
interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>;
  setPermissionMode(mode: PermissionMode): Promise<void>;
}

Методы

МетодОписание
interrupt()Прерывает запрос (доступно только в режиме потокового ввода)
setPermissionMode()Изменяет режим разрешений (доступно только в режиме потокового ввода)

AgentDefinition

Конфигурация для подагента, определенного программно.
type AgentDefinition = {
  description: string;
  tools?: string[];
  prompt: string;
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}
ПолеОбязательноОписание
descriptionДаОписание на естественном языке о том, когда использовать этого агента
toolsНетМассив разрешенных имен инструментов. Если опущено, наследует все инструменты
promptДаСистемный запрос агента
modelНетПереопределение модели для этого агента. Если опущено, использует основную модель

SettingSource

Контролирует, из каких источников конфигурации на основе файловой системы SDK загружает настройки.
type SettingSource = 'user' | 'project' | 'local';
ЗначениеОписаниеРасположение
'user'Глобальные пользовательские настройки~/.claude/settings.json
'project'Общие настройки проекта (под контролем версий).claude/settings.json
'local'Локальные настройки проекта (игнорируются git).claude/settings.local.json

Поведение по умолчанию

Когда settingSources опущено или undefined, SDK не загружает никаких настроек файловой системы. Это обеспечивает изоляцию для SDK приложений.

Зачем использовать settingSources?

Загрузить все настройки файловой системы (устаревшее поведение):
// Загрузить все настройки как делал SDK v0.0.x
const result = query({
  prompt: "Проанализируй этот код",
  options: {
    settingSources: ['user', 'project', 'local']  // Загрузить все настройки
  }
});
Загрузить только определенные источники настроек:
// Загрузить только настройки проекта, игнорировать пользовательские и локальные
const result = query({
  prompt: "Запустить проверки CI",
  options: {
    settingSources: ['project']  // Только .claude/settings.json
  }
});
Среды тестирования и CI:
// Обеспечить согласованное поведение в CI, исключив локальные настройки
const result = query({
  prompt: "Запустить тесты",
  options: {
    settingSources: ['project'],  // Только общие настройки команды
    permissionMode: 'bypassPermissions'
  }
});
Приложения только для SDK:
// Определить все программно (поведение по умолчанию)
// Никаких зависимостей от файловой системы - settingSources по умолчанию []
const result = query({
  prompt: "Просмотреть этот PR",
  options: {
    // settingSources: [] по умолчанию, не нужно указывать
    agents: { /* ... */ },
    mcpServers: { /* ... */ },
    allowedTools: ['Read', 'Grep', 'Glob']
  }
});

Приоритет настроек

Когда загружается несколько источников, настройки объединяются с этим приоритетом (от высшего к низшему):
  1. Локальные настройки (.claude/settings.local.json)
  2. Настройки проекта (.claude/settings.json)
  3. Пользовательские настройки (~/.claude/settings.json)
Программные опции (такие как agents, allowedTools) всегда переопределяют настройки файловой системы.

PermissionMode

type PermissionMode =
  | 'default'           // Стандартное поведение разрешений
  | 'acceptEdits'       // Автоматически принимать редактирование файлов
  | 'bypassPermissions' // Обходить все проверки разрешений
  | 'plan'              // Режим планирования - без выполнения

CanUseTool

Тип пользовательской функции разрешений для контроля использования инструментов.
type CanUseTool = (
  toolName: string,
  input: ToolInput,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
  }
) => Promise<PermissionResult>;

PermissionResult

Результат проверки разрешений.
type PermissionResult = 
  | {
      behavior: 'allow';
      updatedInput: ToolInput;
      updatedPermissions?: PermissionUpdate[];
    }
  | {
      behavior: 'deny';
      message: string;
      interrupt?: boolean;
    }

McpServerConfig

Конфигурация для MCP серверов.
type McpServerConfig = 
  | McpStdioServerConfig
  | McpSSEServerConfig
  | McpHttpServerConfig
  | McpSdkServerConfigWithInstance;

McpStdioServerConfig

type McpStdioServerConfig = {
  type?: 'stdio';
  command: string;
  args?: string[];
  env?: Record<string, string>;
}

McpSSEServerConfig

type McpSSEServerConfig = {
  type: 'sse';
  url: string;
  headers?: Record<string, string>;
}

McpHttpServerConfig

type McpHttpServerConfig = {
  type: 'http';
  url: string;
  headers?: Record<string, string>;
}

McpSdkServerConfigWithInstance

type McpSdkServerConfigWithInstance = {
  type: 'sdk';
  name: string;
  instance: McpServer;
}

Типы сообщений

SDKMessage

Объединенный тип всех возможных сообщений, возвращаемых запросом.
type SDKMessage = 
  | SDKAssistantMessage
  | SDKUserMessage
  | SDKUserMessageReplay
  | SDKResultMessage
  | SDKSystemMessage
  | SDKPartialAssistantMessage
  | SDKCompactBoundaryMessage;

SDKAssistantMessage

Сообщение ответа ассистента.
type SDKAssistantMessage = {
  type: 'assistant';
  uuid: UUID;
  session_id: string;
  message: APIAssistantMessage; // Из Anthropic SDK
  parent_tool_use_id: string | null;
}

SDKUserMessage

Сообщение ввода пользователя.
type SDKUserMessage = {
  type: 'user';
  uuid?: UUID;
  session_id: string;
  message: APIUserMessage; // Из Anthropic SDK
  parent_tool_use_id: string | null;
}

SDKUserMessageReplay

Воспроизведенное сообщение пользователя с обязательным UUID.
type SDKUserMessageReplay = {
  type: 'user';
  uuid: UUID;
  session_id: string;
  message: APIUserMessage;
  parent_tool_use_id: string | null;
}

SDKResultMessage

Финальное сообщение результата.
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[];
    }

SDKSystemMessage

Сообщение инициализации системы.
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;
}

SDKPartialAssistantMessage

Частичное сообщение потоковой передачи (только когда includePartialMessages равно true).
type SDKPartialAssistantMessage = {
  type: 'stream_event';
  event: RawMessageStreamEvent; // Из Anthropic SDK
  parent_tool_use_id: string | null;
  uuid: UUID;
  session_id: string;
}

SDKCompactBoundaryMessage

Сообщение, указывающее границу сжатия разговора.
type SDKCompactBoundaryMessage = {
  type: 'system';
  subtype: 'compact_boundary';
  uuid: UUID;
  session_id: string;
  compact_metadata: {
    trigger: 'manual' | 'auto';
    pre_tokens: number;
  };
}

SDKPermissionDenial

Информация об отклоненном использовании инструмента.
type SDKPermissionDenial = {
  tool_name: string;
  tool_use_id: string;
  tool_input: ToolInput;
}

Типы хуков

HookEvent

Доступные события хуков.
type HookEvent = 
  | 'PreToolUse'
  | 'PostToolUse'
  | 'Notification'
  | 'UserPromptSubmit'
  | 'SessionStart'
  | 'SessionEnd'
  | 'Stop'
  | 'SubagentStop'
  | 'PreCompact';

HookCallback

Тип функции обратного вызова хука.
type HookCallback = (
  input: HookInput, // Объединение всех типов входных данных хука
  toolUseID: string | undefined,
  options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;

HookCallbackMatcher

Конфигурация хука с необязательным сопоставителем.
interface HookCallbackMatcher {
  matcher?: string;
  hooks: HookCallback[];
}

HookInput

Объединенный тип всех типов входных данных хука.
type HookInput = 
  | PreToolUseHookInput
  | PostToolUseHookInput
  | NotificationHookInput
  | UserPromptSubmitHookInput
  | SessionStartHookInput
  | SessionEndHookInput
  | StopHookInput
  | SubagentStopHookInput
  | PreCompactHookInput;

BaseHookInput

Базовый интерфейс, который расширяют все типы входных данных хука.
type BaseHookInput = {
  session_id: string;
  transcript_path: string;
  cwd: string;
  permission_mode?: string;
}

PreToolUseHookInput

type PreToolUseHookInput = BaseHookInput & {
  hook_event_name: 'PreToolUse';
  tool_name: string;
  tool_input: ToolInput;
}

PostToolUseHookInput

type PostToolUseHookInput = BaseHookInput & {
  hook_event_name: 'PostToolUse';
  tool_name: string;
  tool_input: ToolInput;
  tool_response: ToolOutput;
}

NotificationHookInput

type NotificationHookInput = BaseHookInput & {
  hook_event_name: 'Notification';
  message: string;
  title?: string;
}

UserPromptSubmitHookInput

type UserPromptSubmitHookInput = BaseHookInput & {
  hook_event_name: 'UserPromptSubmit';
  prompt: string;
}

SessionStartHookInput

type SessionStartHookInput = BaseHookInput & {
  hook_event_name: 'SessionStart';
  source: 'startup' | 'resume' | 'clear' | 'compact';
}

SessionEndHookInput

type SessionEndHookInput = BaseHookInput & {
  hook_event_name: 'SessionEnd';
  reason: 'clear' | 'logout' | 'prompt_input_exit' | 'other';
}

StopHookInput

type StopHookInput = BaseHookInput & {
  hook_event_name: 'Stop';
  stop_hook_active: boolean;
}

SubagentStopHookInput

type SubagentStopHookInput = BaseHookInput & {
  hook_event_name: 'SubagentStop';
  stop_hook_active: boolean;
}

PreCompactHookInput

type PreCompactHookInput = BaseHookInput & {
  hook_event_name: 'PreCompact';
  trigger: 'manual' | 'auto';
  custom_instructions: string | null;
}

HookJSONOutput

Возвращаемое значение хука.
type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

AsyncHookJSONOutput

type AsyncHookJSONOutput = {
  async: true;
  asyncTimeout?: number;
}

SyncHookJSONOutput

type 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;
      };
}

Типы входных данных инструментов

Документация схем входных данных для всех встроенных инструментов Claude Code. Эти типы экспортируются из @anthropic-ai/claude-agent-sdk и могут использоваться для типобезопасных взаимодействий с инструментами.

ToolInput

Примечание: Это тип только для документации для ясности. Он представляет объединение всех типов входных данных инструментов.
type ToolInput = 
  | AgentInput
  | BashInput
  | BashOutputInput
  | FileEditInput
  | FileMultiEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | KillShellInput
  | NotebookEditInput
  | WebFetchInput
  | WebSearchInput
  | TodoWriteInput
  | ExitPlanModeInput
  | ListMcpResourcesInput
  | ReadMcpResourceInput;

Task

Имя инструмента: Task
interface AgentInput {
  /**
   * Краткое (3-5 слов) описание задачи
   */
  description: string;
  /**
   * Задача для выполнения агентом
   */
  prompt: string;
  /**
   * Тип специализированного агента для использования в этой задаче
   */
  subagent_type: string;
}
Запускает нового агента для автономной обработки сложных многоэтапных задач.

Bash

Имя инструмента: Bash
interface BashInput {
  /**
   * Команда для выполнения
   */
  command: string;
  /**
   * Необязательный тайм-аут в миллисекундах (максимум 600000)
   */
  timeout?: number;
  /**
   * Четкое, краткое описание того, что делает эта команда в 5-10 словах
   */
  description?: string;
  /**
   * Установите в true для запуска этой команды в фоновом режиме
   */
  run_in_background?: boolean;
}
Выполняет bash команды в постоянной сессии оболочки с необязательным тайм-аутом и фоновым выполнением.

BashOutput

Имя инструмента: BashOutput
interface BashOutputInput {
  /**
   * ID фоновой оболочки для получения вывода
   */
  bash_id: string;
  /**
   * Необязательное регулярное выражение для фильтрации строк вывода
   */
  filter?: string;
}
Получает вывод из работающей или завершенной фоновой bash оболочки.

Edit

Имя инструмента: Edit
interface FileEditInput {
  /**
   * Абсолютный путь к файлу для изменения
   */
  file_path: string;
  /**
   * Текст для замены
   */
  old_string: string;
  /**
   * Текст для замены (должен отличаться от old_string)
   */
  new_string: string;
  /**
   * Заменить все вхождения old_string (по умолчанию false)
   */
  replace_all?: boolean;
}
Выполняет точные замены строк в файлах.

MultiEdit

Имя инструмента: MultiEdit
interface FileMultiEditInput {
  /**
   * Абсолютный путь к файлу для изменения
   */
  file_path: string;
  /**
   * Массив операций редактирования для последовательного выполнения
   */
  edits: Array<{
    /**
     * Текст для замены
     */
    old_string: string;
    /**
     * Текст для замены
     */
    new_string: string;
    /**
     * Заменить все вхождения (по умолчанию false)
     */
    replace_all?: boolean;
  }>;
}
Выполняет несколько редактирований одного файла за одну операцию.

Read

Имя инструмента: Read
interface FileReadInput {
  /**
   * Абсолютный путь к файлу для чтения
   */
  file_path: string;
  /**
   * Номер строки для начала чтения
   */
  offset?: number;
  /**
   * Количество строк для чтения
   */
  limit?: number;
}
Читает файлы из локальной файловой системы, включая текст, изображения, PDF и Jupyter блокноты.

Write

Имя инструмента: Write
interface FileWriteInput {
  /**
   * Абсолютный путь к файлу для записи
   */
  file_path: string;
  /**
   * Содержимое для записи в файл
   */
  content: string;
}
Записывает файл в локальную файловую систему, перезаписывая, если он существует.

Glob

Имя инструмента: Glob
interface GlobInput {
  /**
   * Шаблон glob для сопоставления файлов
   */
  pattern: string;
  /**
   * Директория для поиска (по умолчанию cwd)
   */
  path?: string;
}
Быстрое сопоставление шаблонов файлов, которое работает с кодовой базой любого размера.

Grep

Имя инструмента: Grep
interface GrepInput {
  /**
   * Шаблон регулярного выражения для поиска
   */
  pattern: string;
  /**
   * Файл или директория для поиска (по умолчанию cwd)
   */
  path?: string;
  /**
   * Шаблон Glob для фильтрации файлов (например, "*.js")
   */
  glob?: string;
  /**
   * Тип файла для поиска (например, "js", "py", "rust")
   */
  type?: string;
  /**
   * Режим вывода: "content", "files_with_matches", или "count"
   */
  output_mode?: 'content' | 'files_with_matches' | 'count';
  /**
   * Поиск без учета регистра
   */
  '-i'?: boolean;
  /**
   * Показать номера строк (для режима content)
   */
  '-n'?: boolean;
  /**
   * Строки для показа перед каждым совпадением
   */
  '-B'?: number;
  /**
   * Строки для показа после каждого совпадения
   */
  '-A'?: number;
  /**
   * Строки для показа до и после каждого совпадения
   */
  '-C'?: number;
  /**
   * Ограничить вывод первыми N строками/записями
   */
  head_limit?: number;
  /**
   * Включить многострочный режим
   */
  multiline?: boolean;
}
Мощный инструмент поиска, построенный на ripgrep с поддержкой регулярных выражений.

KillBash

Имя инструмента: KillBash
interface KillShellInput {
  /**
   * ID фоновой оболочки для завершения
   */
  shell_id: string;
}
Завершает работающую фоновую bash оболочку по ее ID.

NotebookEdit

Имя инструмента: NotebookEdit
interface NotebookEditInput {
  /**
   * Абсолютный путь к файлу Jupyter блокнота
   */
  notebook_path: string;
  /**
   * ID ячейки для редактирования
   */
  cell_id?: string;
  /**
   * Новый исходный код для ячейки
   */
  new_source: string;
  /**
   * Тип ячейки (code или markdown)
   */
  cell_type?: 'code' | 'markdown';
  /**
   * Тип редактирования (replace, insert, delete)
   */
  edit_mode?: 'replace' | 'insert' | 'delete';
}
Редактирует ячейки в файлах Jupyter блокнотов.

WebFetch

Имя инструмента: WebFetch
interface WebFetchInput {
  /**
   * URL для получения содержимого
   */
  url: string;
  /**
   * Запрос для выполнения на полученном содержимом
   */
  prompt: string;
}
Получает содержимое с URL и обрабатывает его с помощью модели ИИ.

WebSearch

Имя инструмента: WebSearch
interface WebSearchInput {
  /**
   * Поисковый запрос для использования
   */
  query: string;
  /**
   * Включать результаты только с этих доменов
   */
  allowed_domains?: string[];
  /**
   * Никогда не включать результаты с этих доменов
   */
  blocked_domains?: string[];
}
Ищет в интернете и возвращает отформатированные результаты.

TodoWrite

Имя инструмента: TodoWrite
interface TodoWriteInput {
  /**
   * Обновленный список дел
   */
  todos: Array<{
    /**
     * Описание задачи
     */
    content: string;
    /**
     * Статус задачи
     */
    status: 'pending' | 'in_progress' | 'completed';
    /**
     * Активная форма описания задачи
     */
    activeForm: string;
  }>;
}
Создает и управляет структурированным списком задач для отслеживания прогресса.

ExitPlanMode

Имя инструмента: ExitPlanMode
interface ExitPlanModeInput {
  /**
   * План для выполнения пользователем для одобрения
   */
  plan: string;
}
Выходит из режима планирования и предлагает пользователю одобрить план.

ListMcpResources

Имя инструмента: ListMcpResources
interface ListMcpResourcesInput {
  /**
   * Необязательное имя сервера для фильтрации ресурсов
   */
  server?: string;
}
Перечисляет доступные MCP ресурсы с подключенных серверов.

ReadMcpResource

Имя инструмента: ReadMcpResource
interface ReadMcpResourceInput {
  /**
   * Имя MCP сервера
   */
  server: string;
  /**
   * URI ресурса для чтения
   */
  uri: string;
}
Читает определенный MCP ресурс с сервера.

Типы выходных данных инструментов

Документация схем выходных данных для всех встроенных инструментов Claude Code. Эти типы представляют фактические данные ответа, возвращаемые каждым инструментом.

ToolOutput

Примечание: Это тип только для документации для ясности. Он представляет объединение всех типов выходных данных инструментов.
type ToolOutput = 
  | TaskOutput
  | BashOutput
  | BashOutputToolOutput
  | EditOutput
  | MultiEditOutput
  | ReadOutput
  | WriteOutput
  | GlobOutput
  | GrepOutput
  | KillBashOutput
  | NotebookEditOutput
  | WebFetchOutput
  | WebSearchOutput
  | TodoWriteOutput
  | ExitPlanModeOutput
  | ListMcpResourcesOutput
  | ReadMcpResourceOutput;

Task

Имя инструмента: Task
interface TaskOutput {
  /**
   * Финальное сообщение результата от подагента
   */
  result: string;
  /**
   * Статистика использования токенов
   */
  usage?: {
    input_tokens: number;
    output_tokens: number;
    cache_creation_input_tokens?: number;
    cache_read_input_tokens?: number;
  };
  /**
   * Общая стоимость в USD
   */
  total_cost_usd?: number;
  /**
   * Продолжительность выполнения в миллисекундах
   */
  duration_ms?: number;
}
Возвращает финальный результат от подагента после завершения делегированной задачи.

Bash

Имя инструмента: Bash
interface BashOutput {
  /**
   * Объединенный вывод stdout и stderr
   */
  output: string;
  /**
   * Код выхода команды
   */
  exitCode: number;
  /**
   * Была ли команда завершена из-за тайм-аута
   */
  killed?: boolean;
  /**
   * ID оболочки для фоновых процессов
   */
  shellId?: string;
}
Возвращает вывод команды со статусом выхода. Фоновые команды возвращаются немедленно с shellId.

BashOutput

Имя инструмента: BashOutput
interface BashOutputToolOutput {
  /**
   * Новый вывод с последней проверки
   */
  output: string;
  /**
   * Текущий статус оболочки
   */
  status: 'running' | 'completed' | 'failed';
  /**
   * Код выхода (когда завершено)
   */
  exitCode?: number;
}
Возвращает инкрементальный вывод из фоновых оболочек.

Edit

Имя инструмента: Edit
interface EditOutput {
  /**
   * Сообщение подтверждения
   */
  message: string;
  /**
   * Количество выполненных замен
   */
  replacements: number;
  /**
   * Путь к файлу, который был отредактирован
   */
  file_path: string;
}
Возвращает подтверждение успешных редактирований с количеством замен.

MultiEdit

Имя инструмента: MultiEdit
interface MultiEditOutput {
  /**
   * Сообщение об успехе
   */
  message: string;
  /**
   * Общее количество примененных редактирований
   */
  edits_applied: number;
  /**
   * Путь к файлу, который был отредактирован
   */
  file_path: string;
}
Возвращает подтверждение после применения всех редактирований последовательно.

Read

Имя инструмента: Read
type ReadOutput = 
  | TextFileOutput
  | ImageFileOutput
  | PDFFileOutput
  | NotebookFileOutput;

interface TextFileOutput {
  /**
   * Содержимое файла с номерами строк
   */
  content: string;
  /**
   * Общее количество строк в файле
   */
  total_lines: number;
  /**
   * Фактически возвращенные строки
   */
  lines_returned: number;
}

interface ImageFileOutput {
  /**
   * Данные изображения в кодировке Base64
   */
  image: string;
  /**
   * MIME тип изображения
   */
  mime_type: string;
  /**
   * Размер файла в байтах
   */
  file_size: number;
}

interface PDFFileOutput {
  /**
   * Массив содержимого страниц
   */
  pages: Array<{
    page_number: number;
    text?: string;
    images?: Array<{
      image: string;
      mime_type: string;
    }>;
  }>;
  /**
   * Общее количество страниц
   */
  total_pages: number;
}

interface NotebookFileOutput {
  /**
   * Ячейки Jupyter блокнота
   */
  cells: Array<{
    cell_type: 'code' | 'markdown';
    source: string;
    outputs?: any[];
    execution_count?: number;
  }>;
  /**
   * Метаданные блокнота
   */
  metadata?: Record<string, any>;
}
Возвращает содержимое файла в формате, соответствующем типу файла.

Write

Имя инструмента: Write
interface WriteOutput {
  /**
   * Сообщение об успехе
   */
  message: string;
  /**
   * Количество записанных байт
   */
  bytes_written: number;
  /**
   * Путь к файлу, который был записан
   */
  file_path: string;
}
Возвращает подтверждение после успешной записи файла.

Glob

Имя инструмента: Glob
interface GlobOutput {
  /**
   * Массив соответствующих путей файлов
   */
  matches: string[];
  /**
   * Количество найденных совпадений
   */
  count: number;
  /**
   * Используемая директория поиска
   */
  search_path: string;
}
Возвращает пути файлов, соответствующие шаблону glob, отсортированные по времени изменения.

Grep

Имя инструмента: Grep
type GrepOutput = 
  | GrepContentOutput
  | GrepFilesOutput
  | GrepCountOutput;

interface GrepContentOutput {
  /**
   * Соответствующие строки с контекстом
   */
  matches: Array<{
    file: string;
    line_number?: number;
    line: string;
    before_context?: string[];
    after_context?: string[];
  }>;
  /**
   * Общее количество совпадений
   */
  total_matches: number;
}

interface GrepFilesOutput {
  /**
   * Файлы, содержащие совпадения
   */
  files: string[];
  /**
   * Количество файлов с совпадениями
   */
  count: number;
}

interface GrepCountOutput {
  /**
   * Количество совпадений по файлам
   */
  counts: Array<{
    file: string;
    count: number;
  }>;
  /**
   * Общие совпадения по всем файлам
   */
  total: number;
}
Возвращает результаты поиска в формате, указанном output_mode.

KillBash

Имя инструмента: KillBash
interface KillBashOutput {
  /**
   * Сообщение об успехе
   */
  message: string;
  /**
   * ID завершенной оболочки
   */
  shell_id: string;
}
Возвращает подтверждение после завершения фоновой оболочки.

NotebookEdit

Имя инструмента: NotebookEdit
interface NotebookEditOutput {
  /**
   * Сообщение об успехе
   */
  message: string;
  /**
   * Тип выполненного редактирования
   */
  edit_type: 'replaced' | 'inserted' | 'deleted';
  /**
   * ID ячейки, которая была затронута
   */
  cell_id?: string;
  /**
   * Общее количество ячеек в блокноте после редактирования
   */
  total_cells: number;
}
Возвращает подтверждение после изменения Jupyter блокнота.

WebFetch

Имя инструмента: WebFetch
interface WebFetchOutput {
  /**
   * Ответ модели ИИ на зап рос
   */
  response: string;
  /**
   * URL, который был получен
   */
  url: string;
  /**
   * Финальный URL после перенаправлений
   */
  final_url?: string;
  /**
   * HTTP код статуса
   */
  status_code?: number;
}
Возвращает анализ ИИ полученного веб-содержимого.

WebSearch

Имя инструмента: WebSearch
interface WebSearchOutput {
  /**
   * Результаты поиска
   */
  results: Array<{
    title: string;
    url: string;
    snippet: string;
    /**
     * Дополнительные метаданные, если доступны
     */
    metadata?: Record<string, any>;
  }>;
  /**
   * Общее количество результатов
   */
  total_results: number;
  /**
   * Запрос, который был найден
   */
  query: string;
}
Возвращает отформатированные результаты поиска из интернета.

TodoWrite

Имя инструмента: TodoWrite
interface TodoWriteOutput {
  /**
   * Сообщение об успехе
   */
  message: string;
  /**
   * Текущая статистика дел
   */
  stats: {
    total: number;
    pending: number;
    in_progress: number;
    completed: number;
  };
}
Возвращает подтверждение с текущей статистикой задач.

ExitPlanMode

Имя инструмента: ExitPlanMode
interface ExitPlanModeOutput {
  /**
   * Сообщение подтверждения
   */
  message: string;
  /**
   * Одобрил ли пользователь план
   */
  approved?: boolean;
}
Возвращает подтверждение после выхода из режима планирования.

ListMcpResources

Имя инструмента: ListMcpResources
interface ListMcpResourcesOutput {
  /**
   * Доступные ресурсы
   */
  resources: Array<{
    uri: string;
    name: string;
    description?: string;
    mimeType?: string;
    server: string;
  }>;
  /**
   * Общее количество ресурсов
   */
  total: number;
}
Возвращает список доступных MCP ресурсов.

ReadMcpResource

Имя инструмента: ReadMcpResource
interface ReadMcpResourceOutput {
  /**
   * Содержимое ресурса
   */
  contents: Array<{
    uri: string;
    mimeType?: string;
    text?: string;
    blob?: string;
  }>;
  /**
   * Сервер, который предоставил ресурс
   */
  server: string;
}
Возвращает содержимое запрошенного MCP ресурса.

Типы разрешений

PermissionUpdate

Операции для обновления разрешений.
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;
    }

PermissionBehavior

type PermissionBehavior = 'allow' | 'deny' | 'ask';

PermissionUpdateDestination

type PermissionUpdateDestination = 
  | 'userSettings'     // Глобальные пользовательские настройки
  | 'projectSettings'  // Настройки проекта по директориям
  | 'localSettings'    // Локальные настройки, игнорируемые git
  | 'session'          // Только текущая сессия

PermissionRuleValue

type PermissionRuleValue = {
  toolName: string;
  ruleContent?: string;
}

Другие типы

ApiKeySource

type ApiKeySource = 'user' | 'project' | 'org' | 'temporary';

ConfigScope

type ConfigScope = 'local' | 'user' | 'project';

NonNullableUsage

Версия Usage со всеми nullable полями, сделанными non-nullable.
type NonNullableUsage = {
  [K in keyof Usage]: NonNullable<Usage[K]>;
}

Usage

Статистика использования токенов (из @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;
}

CallToolResult

Тип результата MCP инструмента (из @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
  content: Array<{
    type: 'text' | 'image' | 'resource';
    // Дополнительные поля варьируются по типу
  }>;
  isError?: boolean;
}

AbortError

Пользовательский класс ошибки для операций прерывания.
class AbortError extends Error {}

См. также