Функции

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 ZodRawShapeСхема Zod, определяющая входные параметры инструмента
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 может получить доступ
allowedToolsstring[]Все инструментыСписок разрешенных имен инструментов
appendSystemPromptstringundefinedТекст для добавления к системному запросу по умолчанию
canUseToolCanUseToolundefinedПользовательская функция разрешений для использования инструментов
continuebooleanfalseПродолжить самую последнюю беседу
customSystemPromptstringundefinedПолностью заменить системный запрос по умолчанию
cwdstringprocess.cwd()Текущий рабочий каталог
disallowedToolsstring[][]Список запрещенных имен инструментов
envDict<string>process.envПеременные окружения
executable'bun' | 'deno' | 'node'АвтоопределениеСреда выполнения JavaScript для использования
executableArgsstring[][]Аргументы для передачи исполняемому файлу
extraArgsRecord<string, string | null>{}Дополнительные аргументы
fallbackModelstringundefinedМодель для использования, если основная не работает
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Обратные вызовы хуков для событий
includePartialMessagesbooleanfalseВключить события частичных сообщений
maxThinkingTokensnumberundefinedМаксимальное количество токенов для процесса размышления
maxTurnsnumberundefinedМаксимальное количество ходов беседы
mcpServersRecord<string, McpServerConfig>{}Конфигурации серверов MCP
modelstringПо умолчанию из CLIМодель Claude для использования
pathToClaudeCodeExecutablestringАвтоопределениеПуть к исполняемому файлу Claude Code
permissionModePermissionMode'default'Режим разрешений для сессии
permissionPromptToolNamestringundefinedИмя инструмента MCP для запросов разрешений
resumestringundefinedID сессии для возобновления
stderr(data: string) => voidundefinedОбратный вызов для вывода stderr
strictMcpConfigbooleanfalseПринудительная строгая валидация MCP

Query

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

Методы

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

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/claude-code-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;
  };
  /**
   * Общая стоимость в долларах США
   */
  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 {}

См. также