Instalasi

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

Fungsi

query()

Fungsi utama untuk berinteraksi dengan Claude Code. Membuat generator async yang mengalirkan 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)

Mengembalikan

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)>undefinedMendefinisikan subagen secara programatis
allowedToolsstring[]Semua toolDaftar 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'Terdeteksi otomatisRuntime 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 maksimum untuk proses berpikir
maxTurnsnumberundefinedGiliran percakapan maksimum
mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Konfigurasi server MCP
modelstringDefault dari CLIModel Claude yang digunakan
pathToClaudeCodeExecutablestringTerdeteksi otomatisPath ke executable Claude Code
permissionModePermissionMode'default'Mode izin untuk sesi
permissionPromptToolNamestringundefinedNama tool MCP untuk prompt izin
resumestringundefinedID sesi untuk dilanjutkan
settingSourcesSettingSource[][] (tidak ada pengaturan)Kontrol pengaturan filesystem mana yang dimuat. Jika dihilangkan, tidak ada pengaturan yang dimuat
stderr(data: string) => voidundefinedCallback untuk output stderr
strictMcpConfigbooleanfalsePaksa validasi MCP yang ketat
systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (prompt kosong)Konfigurasi system prompt. Berikan string untuk prompt kustom, atau { type: 'preset', preset: 'claude_code' } untuk menggunakan system prompt Claude Code

Query

Interface 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 subagen yang didefinisikan secara programatis.
type AgentDefinition = {
  description: string;
  tools?: string[];
  prompt: string;
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}
FieldWajibDeskripsi
descriptionYaDeskripsi bahasa alami tentang kapan menggunakan agen ini
toolsTidakArray nama tool yang diizinkan. Jika dihilangkan, mewarisi semua tool
promptYaSystem prompt agen
modelTidakOverride model untuk agen ini. Jika dihilangkan, menggunakan model utama

SettingSource

Mengontrol sumber konfigurasi berbasis filesystem mana yang dimuat pengaturannya oleh SDK.
type SettingSource = 'user' | 'project' | 'local';
NilaiDeskripsiLokasi
'user'Pengaturan pengguna global~/.claude/settings.json
'project'Pengaturan proyek bersama (dikontrol versi).claude/settings.json
'local'Pengaturan proyek lokal (diabaikan git).claude/settings.local.json

Perilaku default

Ketika 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 yang dilakukan 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 user dan local
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 yang dibagi tim
    permissionMode: 'bypassPermissions'
  }
});
Aplikasi khusus SDK:
// Definisikan semuanya secara programatis (perilaku default)
// Tidak ada dependensi filesystem - settingSources default ke []
const result = query({
  prompt: "Review PR ini",
  options: {
    // settingSources: [] adalah default, tidak perlu dispesifikasi
    agents: { /* ... */ },
    mcpServers: { /* ... */ },
    allowedTools: ['Read', 'Grep', 'Glob']
  }
});

Prioritas pengaturan

Ketika beberapa sumber dimuat, pengaturan digabungkan dengan prioritas 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 mengganti pengaturan filesystem.

PermissionMode

type PermissionMode =
  | 'default'           // Perilaku izin standar
  | 'acceptEdits'       // Otomatis menerima edit file
  | 'bypassPermissions' // Lewati 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;
}

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 ketika 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 kompaksi 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

Interface 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 kembalian 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. T ipe-tipe ini diekspor dari @anthropic-ai/claude-agent-sdk dan dapat digunakan untuk interaksi tool yang type-safe.

ToolInput

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

Task

Nama tool: Task
interface AgentInput {
  /**
   * Deskripsi singkat (3-5 kata) dari tugas
   */
  description: string;
  /**
   * Tugas untuk dilakukan agen
   */
  prompt: string;
  /**
   * Jenis agen khusus yang digunakan untuk tugas ini
   */
  subagent_type: string;
}
Meluncurkan agen 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 yang jelas dan ringkas tentang apa yang dilakukan perintah ini dalam 5-10 kata
   */
  description?: string;
  /**
   * Set ke true untuk menjalankan perintah ini di latar belakang
   */
  run_in_background?: boolean;
}
Mengeksekusi perintah bash dalam sesi shell persisten dengan timeout opsional dan eksekusi latar belakang.

BashOutput

Nama tool: BashOutput
interface BashOutputInput {
  /**
   * ID shell latar belakang untuk mengambil output
   */
  bash_id: string;
  /**
   * Regex opsional untuk memfilter baris output
   */
  filter?: string;
}
Mengambil output dari shell bash latar belakang yang 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 pengganti (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.

MultiEdit

Nama tool: MultiEdit
interface FileMultiEditInput {
  /**
   * Path absolut ke file yang akan dimodifikasi
   */
  file_path: string;
  /**
   * Array operasi edit yang dilakukan secara berurutan
   */
  edits: Array<{
    /**
     * Teks yang akan diganti
     */
    old_string: string;
    /**
     * Teks pengganti
     */
    new_string: string;
    /**
     * Ganti semua kemunculan (default false)
     */
    replace_all?: boolean;
  }>;
}
Membuat beberapa edit pada satu file dalam satu operasi.

Read

Nama tool: Read
interface FileReadInput {
  /**
   * Path absolut ke file yang akan dibaca
   */
  file_path: string;
  /**
   * Nomor baris untuk mulai membaca
   */
  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 sudah 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 regular expression untuk dicari
   */
  pattern: string;
  /**
   * File atau direktori untuk dicari (default ke cwd)
   */
  path?: string;
  /**
   * Pola glob untuk memfilter file (mis. "*.js")
   */
  glob?: string;
  /**
   * Jenis 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 tidak sensitif huruf besar-kecil
   */
  '-i'?: boolean;
  /**
   * Tampilkan nomor baris (untuk mode content)
   */
  '-n'?: boolean;
  /**
   * Baris yang ditampilkan sebelum setiap kecocokan
   */
  '-B'?: number;
  /**
   * Baris yang ditampilkan setelah setiap kecocokan
   */
  '-A'?: number;
  /**
   * Baris yang ditampilkan sebelum dan setelah 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 latar belakang yang akan dibunuh
   */
  shell_id: string;
}
Membunuh shell bash latar belakang yang 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;
  /**
   * Sumber baru untuk sel
   */
  new_source: string;
  /**
   * Jenis sel (code atau markdown)
   */
  cell_type?: 'code' | 'markdown';
  /**
   * Jenis 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
   */
  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 meminta pengguna untuk menyetujui rencana.

ListMcpResources

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

ReadMcpResource

Nama tool: ReadMcpResource
interface ReadMcpResourceInput {
  /**
   * Nama server MCP
   */
  server: string;
  /**
   * URI sumber daya yang akan dibaca
   */
  uri: string;
}
Membaca sumber daya 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 khusus dokumentasi untuk kejelasan. Ini mewakili union dari semua tipe output tool.
type ToolOutput = 
  | TaskOutput
  | BashOutput
  | BashOutputToolOutput
  | EditOutput
  | MultiEditOutput
  | ReadOutput
  | WriteOutput
  | GlobOutput
  | GrepOutput
  | KillBashOutput
  | NotebookEditOutput
  | WebFetchOutput
  | WebSearchOutput
  | TodoWriteOutput
  | ExitPlanModeOutput
  | ListMcpResourcesOutput
  | ReadMcpResourceOutput;

Task

Nama tool: Task
interface TaskOutput {
  /**
   * Pesan hasil akhir dari subagen
   */
  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 subagen setelah menyelesaikan tugas yang didelegasikan.

Bash

Nama tool: Bash
interface BashOutput {
  /**
   * Output stdout dan stderr yang digabungkan
   */
  output: string;
  /**
   * Kode keluar dari perintah
   */
  exitCode: number;
  /**
   * Apakah perintah dibunuh karena timeout
   */
  killed?: boolean;
  /**
   * ID shell untuk proses latar belakang
   */
  shellId?: string;
}
Mengembalikan output perintah dengan status keluar. Perintah latar belakang mengembalikan segera dengan shellId.

BashOutput

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

Edit

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

MultiEdit

Nama tool: MultiEdit
interface MultiEditOutput {
  /**
   * Pesan sukses
   */
  message: string;
  /**
   * Total jumlah edit yang diterapkan
   */
  edits_applied: number;
  /**
   * Path file yang diedit
   */
  file_path: string;
}
Mengembalikan konfirmasi setelah menerapkan semua edit secara berurutan.

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 jenis 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 latar belakang.

NotebookEdit

Nama tool: NotebookEdit
interface NotebookEditOutput {
  /**
   * Pesan sukses
   */
  message: string;
  /**
   * Jenis 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 dari 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 rencana.

ListMcpResources

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

ReadMcpResource

Nama tool: ReadMcpResource
interface ReadMcpResourceOutput {
  /**
   * Konten sumber daya
   */
  contents: Array<{
    uri: string;
    mimeType?: string;
    text?: string;
    blob?: string;
  }>;
  /**
   * Server yang menyediakan sumber daya
   */
  server: string;
}
Mengembalikan konten sumber daya 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 yang diabaikan Git
  | '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