Instalasi

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

Fungsi

query()

Fungsi utama untuk berinteraksi dengan Claude Code. Membuat async generator yang melakukan streaming pesan saat tiba.
function query({
  prompt,
  options
}: {
  prompt: string | AsyncIterable<SDKUserMessage>;
  options?: Options;
}): Query

Parameter

ParameterTipeDeskripsi
promptstring | AsyncIterable<SDKUserMessage>Prompt input sebagai string atau async iterable untuk mode streaming
optionsOptionsObjek konfigurasi opsional (lihat tipe Options di bawah)

Pengembalian

Mengembalikan objek Query yang memperluas AsyncGenerator<SDKMessage, void> dengan metode tambahan.

tool()

Membuat definisi tool MCP yang type-safe untuk digunakan dengan server MCP SDK.
function tool<Schema extends ZodRawShape>(
  name: string,
  description: string,
  inputSchema: Schema,
  handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>

Parameter

ParameterTipeDeskripsi
namestringNama tool
descriptionstringDeskripsi tentang apa yang dilakukan tool
inputSchemaSchema extends ZodRawShapeSkema Zod yang mendefinisikan parameter input tool
handler(args, extra) => Promise<CallToolResult>Fungsi async yang mengeksekusi logika tool

createSdkMcpServer()

Membuat instance server MCP yang berjalan dalam proses yang sama dengan aplikasi Anda.
function createSdkMcpServer(options: {
  name: string;
  version?: string;
  tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance

Parameter

ParameterTipeDeskripsi
options.namestringNama server MCP
options.versionstringString versi opsional
options.toolsArray<SdkMcpToolDefinition>Array definisi tool yang dibuat dengan tool()

Tipe

Options

Objek konfigurasi untuk fungsi query().
PropertiTipeDefaultDeskripsi
abortControllerAbortControllernew AbortController()Controller untuk membatalkan operasi
additionalDirectoriesstring[][]Direktori tambahan yang dapat diakses Claude
agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedTentukan subagent secara programatis
allowedToolsstring[]Semua toolsDaftar nama tool yang diizinkan
canUseToolCanUseToolundefinedFungsi izin kustom untuk penggunaan tool
continuebooleanfalseLanjutkan percakapan terbaru
cwdstringprocess.cwd()Direktori kerja saat ini
disallowedToolsstring[][]Daftar nama tool yang tidak diizinkan
envDict<string>process.envVariabel lingkungan
executable'bun' | 'deno' | 'node'Auto-detectedRuntime JavaScript yang digunakan
executableArgsstring[][]Argumen untuk diteruskan ke executable
extraArgsRecord<string, string | null>{}Argumen tambahan
fallbackModelstringundefinedModel yang digunakan jika model utama gagal
forkSessionbooleanfalseSaat melanjutkan dengan resume, fork ke ID sesi baru alih-alih melanjutkan sesi asli
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Callback hook untuk event
includePartialMessagesbooleanfalseSertakan event pesan parsial
maxThinkingTokensnumberundefinedToken maksimal untuk proses thinking
maxTurnsnumberundefinedPutaran percakapan maksimal
mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Konfigurasi server MCP
modelstringDefault dari CLIModel Claude yang digunakan
pathToClaudeCodeExecutablestringAuto-detectedPath ke executable Claude Code
permissionModePermissionMode'default'Mode izin untuk sesi
permissionPromptToolNamestringundefinedNama tool MCP untuk prompt izin
pluginsSdkPluginConfig[][]Muat plugin kustom dari path lokal. Lihat Plugins untuk detail
resumestringundefinedID sesi untuk dilanjutkan
settingSourcesSettingSource[][] (tidak ada pengaturan)Kontrol sumber pengaturan filesystem mana yang akan dimuat. Saat dihilangkan, tidak ada pengaturan yang dimuat. Catatan: Harus menyertakan 'project' untuk memuat file CLAUDE.md
stderr(data: string) => voidundefinedCallback untuk output stderr
strictMcpConfigbooleanfalseTerapkan validasi MCP yang ketat
systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (prompt kosong)Konfigurasi system prompt. Teruskan string untuk prompt kustom, atau { type: 'preset', preset: 'claude_code' } untuk menggunakan system prompt Claude Code. Saat menggunakan bentuk objek preset, tambahkan append untuk memperluas system prompt dengan instruksi tambahan

Query

Antarmuka yang dikembalikan oleh fungsi query().
interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>;
  setPermissionMode(mode: PermissionMode): Promise<void>;
}

Metode

MetodeDeskripsi
interrupt()Mengganggu query (hanya tersedia dalam mode input streaming)
setPermissionMode()Mengubah mode izin (hanya tersedia dalam mode input streaming)

AgentDefinition

Konfigurasi untuk subagent yang didefinisikan secara programatis.
type AgentDefinition = {
  description: string;
  tools?: string[];
  prompt: string;
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}
FieldDiperlukanDeskripsi
descriptionYaDeskripsi bahasa alami tentang kapan menggunakan agent ini
toolsTidakArray nama tool yang diizinkan. Jika dihilangkan, mewarisi semua tools
promptYaSystem prompt agent
modelTidakOverride model untuk agent ini. Jika dihilangkan, menggunakan model utama

SettingSource

Mengontrol sumber konfigurasi berbasis filesystem mana yang dimuat pengaturan SDK.
type SettingSource = 'user' | 'project' | 'local';
NilaiDeskripsiLokasi
'user'Pengaturan pengguna global~/.claude/settings.json
'project'Pengaturan proyek bersama (version controlled).claude/settings.json
'local'Pengaturan proyek lokal (gitignored).claude/settings.local.json

Perilaku default

Saat settingSources dihilangkan atau undefined, SDK tidak memuat pengaturan filesystem apa pun. Ini memberikan isolasi untuk aplikasi SDK.

Mengapa menggunakan settingSources?

Muat semua pengaturan filesystem (perilaku legacy):
// Muat semua pengaturan seperti SDK v0.0.x
const result = query({
  prompt: "Analisis kode ini",
  options: {
    settingSources: ['user', 'project', 'local']  // Muat semua pengaturan
  }
});
Muat hanya sumber pengaturan tertentu:
// Muat hanya pengaturan proyek, abaikan pengguna dan lokal
const result = query({
  prompt: "Jalankan pemeriksaan CI",
  options: {
    settingSources: ['project']  // Hanya .claude/settings.json
  }
});
Lingkungan testing dan CI:
// Pastikan perilaku konsisten di CI dengan mengecualikan pengaturan lokal
const result = query({
  prompt: "Jalankan tes",
  options: {
    settingSources: ['project'],  // Hanya pengaturan bersama tim
    permissionMode: 'bypassPermissions'
  }
});
Aplikasi SDK-only:
// Tentukan semuanya secara programatis (perilaku default)
// Tidak ada dependensi filesystem - settingSources default ke []
const result = query({
  prompt: "Tinjau PR ini",
  options: {
    // settingSources: [] adalah default, tidak perlu ditentukan
    agents: { /* ... */ },
    mcpServers: { /* ... */ },
    allowedTools: ['Read', 'Grep', 'Glob']
  }
});
Memuat instruksi proyek CLAUDE.md:
// Muat pengaturan proyek untuk menyertakan file CLAUDE.md
const result = query({
  prompt: "Tambahkan fitur baru mengikuti konvensi proyek",
  options: {
    systemPrompt: {
      type: 'preset',
      preset: 'claude_code'  // Diperlukan untuk menggunakan CLAUDE.md
    },
    settingSources: ['project'],  // Memuat CLAUDE.md dari direktori proyek
    allowedTools: ['Read', 'Write', 'Edit']
  }
});

Preseden pengaturan

Saat beberapa sumber dimuat, pengaturan digabungkan dengan preseden ini (tertinggi ke terendah):
  1. Pengaturan lokal (.claude/settings.local.json)
  2. Pengaturan proyek (.claude/settings.json)
  3. Pengaturan pengguna (~/.claude/settings.json)
Opsi programatis (seperti agents, allowedTools) selalu menimpa pengaturan filesystem.

PermissionMode

type PermissionMode =
  | 'default'           // Perilaku izin standar
  | 'acceptEdits'       // Auto-accept edit file
  | 'bypassPermissions' // Bypass semua pemeriksaan izin
  | 'plan'              // Mode perencanaan - tidak ada eksekusi

CanUseTool

Tipe fungsi izin kustom untuk mengontrol penggunaan tool.
type CanUseTool = (
  toolName: string,
  input: ToolInput,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
  }
) => Promise<PermissionResult>;

PermissionResult

Hasil pemeriksaan izin.
type PermissionResult = 
  | {
      behavior: 'allow';
      updatedInput: ToolInput;
      updatedPermissions?: PermissionUpdate[];
    }
  | {
      behavior: 'deny';
      message: string;
      interrupt?: boolean;
    }

McpServerConfig

Konfigurasi untuk server 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;
}

SdkPluginConfig

Konfigurasi untuk memuat plugin di SDK.
type SdkPluginConfig = {
  type: 'local';
  path: string;
}
FieldTipeDeskripsi
type'local'Harus 'local' (hanya plugin lokal yang didukung saat ini)
pathstringPath absolut atau relatif ke direktori plugin
Contoh:
plugins: [
  { type: 'local', path: './my-plugin' },
  { type: 'local', path: '/absolute/path/to/plugin' }
]
Untuk informasi lengkap tentang membuat dan menggunakan plugin, lihat Plugins.

Tipe Pesan

SDKMessage

Tipe union dari semua pesan yang mungkin dikembalikan oleh query.
type SDKMessage = 
  | SDKAssistantMessage
  | SDKUserMessage
  | SDKUserMessageReplay
  | SDKResultMessage
  | SDKSystemMessage
  | SDKPartialAssistantMessage
  | SDKCompactBoundaryMessage;

SDKAssistantMessage

Pesan respons asisten.
type SDKAssistantMessage = {
  type: 'assistant';
  uuid: UUID;
  session_id: string;
  message: APIAssistantMessage; // Dari Anthropic SDK
  parent_tool_use_id: string | null;
}

SDKUserMessage

Pesan input pengguna.
type SDKUserMessage = {
  type: 'user';
  uuid?: UUID;
  session_id: string;
  message: APIUserMessage; // Dari Anthropic SDK
  parent_tool_use_id: string | null;
}

SDKUserMessageReplay

Pesan pengguna yang diputar ulang dengan UUID yang diperlukan.
type SDKUserMessageReplay = {
  type: 'user';
  uuid: UUID;
  session_id: string;
  message: APIUserMessage;
  parent_tool_use_id: string | null;
}

SDKResultMessage

Pesan hasil akhir.
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

Pesan inisialisasi sistem.
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

Pesan parsial streaming (hanya saat includePartialMessages adalah true).
type SDKPartialAssistantMessage = {
  type: 'stream_event';
  event: RawMessageStreamEvent; // Dari Anthropic SDK
  parent_tool_use_id: string | null;
  uuid: UUID;
  session_id: string;
}

SDKCompactBoundaryMessage

Pesan yang menunjukkan batas pemadatan percakapan.
type SDKCompactBoundaryMessage = {
  type: 'system';
  subtype: 'compact_boundary';
  uuid: UUID;
  session_id: string;
  compact_metadata: {
    trigger: 'manual' | 'auto';
    pre_tokens: number;
  };
}

SDKPermissionDenial

Informasi tentang penggunaan tool yang ditolak.
type SDKPermissionDenial = {
  tool_name: string;
  tool_use_id: string;
  tool_input: ToolInput;
}

Tipe Hook

HookEvent

Event hook yang tersedia.
type HookEvent = 
  | 'PreToolUse'
  | 'PostToolUse'
  | 'Notification'
  | 'UserPromptSubmit'
  | 'SessionStart'
  | 'SessionEnd'
  | 'Stop'
  | 'SubagentStop'
  | 'PreCompact';

HookCallback

Tipe fungsi callback hook.
type HookCallback = (
  input: HookInput, // Union dari semua tipe input hook
  toolUseID: string | undefined,
  options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;

HookCallbackMatcher

Konfigurasi hook dengan matcher opsional.
interface HookCallbackMatcher {
  matcher?: string;
  hooks: HookCallback[];
}

HookInput

Tipe union dari semua tipe input hook.
type HookInput = 
  | PreToolUseHookInput
  | PostToolUseHookInput
  | NotificationHookInput
  | UserPromptSubmitHookInput
  | SessionStartHookInput
  | SessionEndHookInput
  | StopHookInput
  | SubagentStopHookInput
  | PreCompactHookInput;

BaseHookInput

Antarmuka dasar yang diperluas oleh semua tipe input hook.
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

Nilai pengembalian hook.
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;
      };
}

Tipe Input Tool

Dokumentasi skema input untuk semua tool Claude Code bawaan. Tipe-tipe ini diekspor dari @anthropic-ai/claude-agent-sdk dan dapat digunakan untuk interaksi tool yang type-safe.

ToolInput

Catatan: Ini adalah tipe dokumentasi-only untuk kejelasan. Ini mewakili union dari semua tipe input tool.
type ToolInput = 
  | AgentInput
  | BashInput
  | BashOutputInput
  | FileEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | KillShellInput
  | NotebookEditInput
  | WebFetchInput
  | WebSearchInput
  | TodoWriteInput
  | ExitPlanModeInput
  | ListMcpResourcesInput
  | ReadMcpResourceInput;

Task

Nama tool: Task
interface AgentInput {
  /**
   * Deskripsi singkat tugas (3-5 kata)
   */
  description: string;
  /**
   * Tugas untuk dijalankan agent
   */
  prompt: string;
  /**
   * Tipe agent khusus yang digunakan untuk tugas ini
   */
  subagent_type: string;
}
Meluncurkan agent baru untuk menangani tugas kompleks multi-langkah secara otonom.

Bash

Nama tool: Bash
interface BashInput {
  /**
   * Perintah yang akan dieksekusi
   */
  command: string;
  /**
   * Timeout opsional dalam milidetik (maks 600000)
   */
  timeout?: number;
  /**
   * Deskripsi jelas dan ringkas tentang apa yang dilakukan perintah ini dalam 5-10 kata
   */
  description?: string;
  /**
   * Atur ke true untuk menjalankan perintah ini di background
   */
  run_in_background?: boolean;
}
Mengeksekusi perintah bash dalam sesi shell persisten dengan timeout opsional dan eksekusi background.

BashOutput

Nama tool: BashOutput
interface BashOutputInput {
  /**
   * ID shell background untuk mengambil output dari
   */
  bash_id: string;
  /**
   * Regex opsional untuk memfilter baris output
   */
  filter?: string;
}
Mengambil output dari shell bash background yang sedang berjalan atau selesai.

Edit

Nama tool: Edit
interface FileEditInput {
  /**
   * Path absolut ke file yang akan dimodifikasi
   */
  file_path: string;
  /**
   * Teks yang akan diganti
   */
  old_string: string;
  /**
   * Teks untuk menggantinya (harus berbeda dari old_string)
   */
  new_string: string;
  /**
   * Ganti semua kemunculan old_string (default false)
   */
  replace_all?: boolean;
}
Melakukan penggantian string yang tepat dalam file.

Read

Nama tool: Read
interface FileReadInput {
  /**
   * Path absolut ke file yang akan dibaca
   */
  file_path: string;
  /**
   * Nomor baris untuk mulai membaca dari
   */
  offset?: number;
  /**
   * Jumlah baris yang akan dibaca
   */
  limit?: number;
}
Membaca file dari filesystem lokal, termasuk teks, gambar, PDF, dan notebook Jupyter.

Write

Nama tool: Write
interface FileWriteInput {
  /**
   * Path absolut ke file yang akan ditulis
   */
  file_path: string;
  /**
   * Konten yang akan ditulis ke file
   */
  content: string;
}
Menulis file ke filesystem lokal, menimpa jika ada.

Glob

Nama tool: Glob
interface GlobInput {
  /**
   * Pola glob untuk mencocokkan file
   */
  pattern: string;
  /**
   * Direktori untuk dicari (default ke cwd)
   */
  path?: string;
}
Pencocokan pola file cepat yang bekerja dengan ukuran codebase apa pun.

Grep

Nama tool: Grep
interface GrepInput {
  /**
   * Pola regex untuk dicari
   */
  pattern: string;
  /**
   * File atau direktori untuk dicari (default ke cwd)
   */
  path?: string;
  /**
   * Pola glob untuk memfilter file (mis. "*.js")
   */
  glob?: string;
  /**
   * Tipe file untuk dicari (mis. "js", "py", "rust")
   */
  type?: string;
  /**
   * Mode output: "content", "files_with_matches", atau "count"
   */
  output_mode?: 'content' | 'files_with_matches' | 'count';
  /**
   * Pencarian case insensitive
   */
  '-i'?: boolean;
  /**
   * Tampilkan nomor baris (untuk mode content)
   */
  '-n'?: boolean;
  /**
   * Baris untuk ditampilkan sebelum setiap kecocokan
   */
  '-B'?: number;
  /**
   * Baris untuk ditampilkan setelah setiap kecocokan
   */
  '-A'?: number;
  /**
   * Baris untuk ditampilkan sebelum dan sesudah setiap kecocokan
   */
  '-C'?: number;
  /**
   * Batasi output ke N baris/entri pertama
   */
  head_limit?: number;
  /**
   * Aktifkan mode multiline
   */
  multiline?: boolean;
}
Tool pencarian yang kuat dibangun di atas ripgrep dengan dukungan regex.

KillBash

Nama tool: KillBash
interface KillShellInput {
  /**
   * ID shell background yang akan dibunuh
   */
  shell_id: string;
}
Membunuh shell bash background yang sedang berjalan berdasarkan ID-nya.

NotebookEdit

Nama tool: NotebookEdit
interface NotebookEditInput {
  /**
   * Path absolut ke file notebook Jupyter
   */
  notebook_path: string;
  /**
   * ID sel yang akan diedit
   */
  cell_id?: string;
  /**
   * Source baru untuk sel
   */
  new_source: string;
  /**
   * Tipe sel (code atau markdown)
   */
  cell_type?: 'code' | 'markdown';
  /**
   * Tipe edit (replace, insert, delete)
   */
  edit_mode?: 'replace' | 'insert' | 'delete';
}
Mengedit sel dalam file notebook Jupyter.

WebFetch

Nama tool: WebFetch
interface WebFetchInput {
  /**
   * URL untuk mengambil konten dari
   */
  url: string;
  /**
   * Prompt untuk dijalankan pada konten yang diambil
   */
  prompt: string;
}
Mengambil konten dari URL dan memprosesnya dengan model AI.

WebSearch

Nama tool: WebSearch
interface WebSearchInput {
  /**
   * Query pencarian yang digunakan
   */
  query: string;
  /**
   * Hanya sertakan hasil dari domain ini
   */
  allowed_domains?: string[];
  /**
   * Jangan pernah sertakan hasil dari domain ini
   */
  blocked_domains?: string[];
}
Mencari web dan mengembalikan hasil yang diformat.

TodoWrite

Nama tool: TodoWrite
interface TodoWriteInput {
  /**
   * Daftar todo yang diperbarui
   */
  todos: Array<{
    /**
     * Deskripsi tugas
     */
    content: string;
    /**
     * Status tugas
     */
    status: 'pending' | 'in_progress' | 'completed';
    /**
     * Bentuk aktif dari deskripsi tugas
     */
    activeForm: string;
  }>;
}
Membuat dan mengelola daftar tugas terstruktur untuk melacak kemajuan.

ExitPlanMode

Nama tool: ExitPlanMode
interface ExitPlanModeInput {
  /**
   * Rencana yang akan dijalankan oleh pengguna untuk persetujuan
   */
  plan: string;
}
Keluar dari mode perencanaan dan minta pengguna untuk menyetujui rencana.

ListMcpResources

Nama tool: ListMcpResources
interface ListMcpResourcesInput {
  /**
   * Nama server opsional untuk memfilter resource
   */
  server?: string;
}
Mencantumkan resource MCP yang tersedia dari server yang terhubung.

ReadMcpResource

Nama tool: ReadMcpResource
interface ReadMcpResourceInput {
  /**
   * Nama server MCP
   */
  server: string;
  /**
   * URI resource yang akan dibaca
   */
  uri: string;
}
Membaca resource MCP tertentu dari server.

Tipe Output Tool

Dokumentasi skema output untuk semua tool Claude Code bawaan. Tipe-tipe ini mewakili data respons aktual yang dikembalikan oleh setiap tool.

ToolOutput

Catatan: Ini adalah tipe dokumentasi-only untuk kejelasan. Ini mewakili union dari semua tipe output tool.
type ToolOutput = 
  | TaskOutput
  | BashOutput
  | BashOutputToolOutput
  | EditOutput
  | ReadOutput
  | WriteOutput
  | GlobOutput
  | GrepOutput
  | KillBashOutput
  | NotebookEditOutput
  | WebFetchOutput
  | WebSearchOutput
  | TodoWriteOutput
  | ExitPlanModeOutput
  | ListMcpResourcesOutput
  | ReadMcpResourceOutput;

Task

Nama tool: Task
interface TaskOutput {
  /**
   * Pesan hasil akhir dari subagent
   */
  result: string;
  /**
   * Statistik penggunaan token
   */
  usage?: {
    input_tokens: number;
    output_tokens: number;
    cache_creation_input_tokens?: number;
    cache_read_input_tokens?: number;
  };
  /**
   * Total biaya dalam USD
   */
  total_cost_usd?: number;
  /**
   * Durasi eksekusi dalam milidetik
   */
  duration_ms?: number;
}
Mengembalikan hasil akhir dari subagent setelah menyelesaikan tugas yang didelegasikan.

Bash

Nama tool: Bash
interface BashOutput {
  /**
   * Output stdout dan stderr gabungan
   */
  output: string;
  /**
   * Exit code dari perintah
   */
  exitCode: number;
  /**
   * Apakah perintah dibunuh karena timeout
   */
  killed?: boolean;
  /**
   * Shell ID untuk proses background
   */
  shellId?: string;
}
Mengembalikan output perintah dengan status exit. Perintah background kembali segera dengan shellId.

BashOutput

Nama tool: BashOutput
interface BashOutputToolOutput {
  /**
   * Output baru sejak pemeriksaan terakhir
   */
  output: string;
  /**
   * Status shell saat ini
   */
  status: 'running' | 'completed' | 'failed';
  /**
   * Exit code (saat selesai)
   */
  exitCode?: number;
}
Mengembalikan output inkremental dari shell background.

Edit

Nama tool: Edit
interface EditOutput {
  /**
   * Pesan konfirmasi
   */
  message: string;
  /**
   * Jumlah penggantian yang dilakukan
   */
  replacements: number;
  /**
   * Path file yang diedit
   */
  file_path: string;
}
Mengembalikan konfirmasi edit yang berhasil dengan jumlah penggantian.

Read

Nama tool: Read
type ReadOutput = 
  | TextFileOutput
  | ImageFileOutput
  | PDFFileOutput
  | NotebookFileOutput;

interface TextFileOutput {
  /**
   * Konten file dengan nomor baris
   */
  content: string;
  /**
   * Total jumlah baris dalam file
   */
  total_lines: number;
  /**
   * Baris yang benar-benar dikembalikan
   */
  lines_returned: number;
}

interface ImageFileOutput {
  /**
   * Data gambar yang dikodekan Base64
   */
  image: string;
  /**
   * Tipe MIME gambar
   */
  mime_type: string;
  /**
   * Ukuran file dalam byte
   */
  file_size: number;
}

interface PDFFileOutput {
  /**
   * Array konten halaman
   */
  pages: Array<{
    page_number: number;
    text?: string;
    images?: Array<{
      image: string;
      mime_type: string;
    }>;
  }>;
  /**
   * Total jumlah halaman
   */
  total_pages: number;
}

interface NotebookFileOutput {
  /**
   * Sel notebook Jupyter
   */
  cells: Array<{
    cell_type: 'code' | 'markdown';
    source: string;
    outputs?: any[];
    execution_count?: number;
  }>;
  /**
   * Metadata notebook
   */
  metadata?: Record<string, any>;
}
Mengembalikan konten file dalam format yang sesuai dengan tipe file.

Write

Nama tool: Write
interface WriteOutput {
  /**
   * Pesan sukses
   */
  message: string;
  /**
   * Jumlah byte yang ditulis
   */
  bytes_written: number;
  /**
   * Path file yang ditulis
   */
  file_path: string;
}
Mengembalikan konfirmasi setelah berhasil menulis file.

Glob

Nama tool: Glob
interface GlobOutput {
  /**
   * Array path file yang cocok
   */
  matches: string[];
  /**
   * Jumlah kecocokan yang ditemukan
   */
  count: number;
  /**
   * Direktori pencarian yang digunakan
   */
  search_path: string;
}
Mengembalikan path file yang cocok dengan pola glob, diurutkan berdasarkan waktu modifikasi.

Grep

Nama tool: Grep
type GrepOutput = 
  | GrepContentOutput
  | GrepFilesOutput
  | GrepCountOutput;

interface GrepContentOutput {
  /**
   * Baris yang cocok dengan konteks
   */
  matches: Array<{
    file: string;
    line_number?: number;
    line: string;
    before_context?: string[];
    after_context?: string[];
  }>;
  /**
   * Total jumlah kecocokan
   */
  total_matches: number;
}

interface GrepFilesOutput {
  /**
   * File yang berisi kecocokan
   */
  files: string[];
  /**
   * Jumlah file dengan kecocokan
   */
  count: number;
}

interface GrepCountOutput {
  /**
   * Jumlah kecocokan per file
   */
  counts: Array<{
    file: string;
    count: number;
  }>;
  /**
   * Total kecocokan di semua file
   */
  total: number;
}
Mengembalikan hasil pencarian dalam format yang ditentukan oleh output_mode.

KillBash

Nama tool: KillBash
interface KillBashOutput {
  /**
   * Pesan sukses
   */
  message: string;
  /**
   * ID shell yang dibunuh
   */
  shell_id: string;
}
Mengembalikan konfirmasi setelah menghentikan shell background.

NotebookEdit

Nama tool: NotebookEdit
interface NotebookEditOutput {
  /**
   * Pesan sukses
   */
  message: string;
  /**
   * Tipe edit yang dilakukan
   */
  edit_type: 'replaced' | 'inserted' | 'deleted';
  /**
   * ID sel yang terpengaruh
   */
  cell_id?: string;
  /**
   * Total sel dalam notebook setelah edit
   */
  total_cells: number;
}
Mengembalikan konfirmasi setelah memodifikasi notebook Jupyter.

WebFetch

Nama tool: WebFetch
interface WebFetchOutput {
  /**
   * Respons model AI terhadap prompt
   */
  response: string;
  /**
   * URL yang diambil
   */
  url: string;
  /**
   * URL akhir setelah redirect
   */
  final_url?: string;
  /**
   * Kode status HTTP
   */
  status_code?: number;
}
Mengembalikan analisis AI tentang konten web yang diambil.

WebSearch

Nama tool: WebSearch
interface WebSearchOutput {
  /**
   * Hasil pencarian
   */
  results: Array<{
    title: string;
    url: string;
    snippet: string;
    /**
     * Metadata tambahan jika tersedia
     */
    metadata?: Record<string, any>;
  }>;
  /**
   * Total jumlah hasil
   */
  total_results: number;
  /**
   * Query yang dicari
   */
  query: string;
}
Mengembalikan hasil pencarian yang diformat dari web.

TodoWrite

Nama tool: TodoWrite
interface TodoWriteOutput {
  /**
   * Pesan sukses
   */
  message: string;
  /**
   * Statistik todo saat ini
   */
  stats: {
    total: number;
    pending: number;
    in_progress: number;
    completed: number;
  };
}
Mengembalikan konfirmasi dengan statistik tugas saat ini.

ExitPlanMode

Nama tool: ExitPlanMode
interface ExitPlanModeOutput {
  /**
   * Pesan konfirmasi
   */
  message: string;
  /**
   * Apakah pengguna menyetujui rencana
   */
  approved?: boolean;
}
Mengembalikan konfirmasi setelah keluar dari mode perencanaan.

ListMcpResources

Nama tool: ListMcpResources
interface ListMcpResourcesOutput {
  /**
   * Resource yang tersedia
   */
  resources: Array<{
    uri: string;
    name: string;
    description?: string;
    mimeType?: string;
    server: string;
  }>;
  /**
   * Total jumlah resource
   */
  total: number;
}
Mengembalikan daftar resource MCP yang tersedia.

ReadMcpResource

Nama tool: ReadMcpResource
interface ReadMcpResourceOutput {
  /**
   * Konten resource
   */
  contents: Array<{
    uri: string;
    mimeType?: string;
    text?: string;
    blob?: string;
  }>;
  /**
   * Server yang menyediakan resource
   */
  server: string;
}
Mengembalikan konten resource MCP yang diminta.

Tipe Izin

PermissionUpdate

Operasi untuk memperbarui izin.
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'     // Pengaturan pengguna global
  | 'projectSettings'  // Pengaturan proyek per-direktori
  | 'localSettings'    // Pengaturan lokal gitignored
  | 'session'          // Hanya sesi saat ini

PermissionRuleValue

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

Tipe Lainnya

ApiKeySource

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

ConfigScope

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

NonNullableUsage

Versi Usage dengan semua field nullable dibuat non-nullable.
type NonNullableUsage = {
  [K in keyof Usage]: NonNullable<Usage[K]>;
}

Usage

Statistik penggunaan token (dari @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

Tipe hasil tool MCP (dari @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
  content: Array<{
    type: 'text' | 'image' | 'resource';
    // Field tambahan bervariasi berdasarkan tipe
  }>;
  isError?: boolean;
}

AbortError

Kelas error kustom untuk operasi abort.
class AbortError extends Error {}

Lihat juga