npm install @anthropic-ai/claude-agent-sdkquery()Fungsi utama untuk berinteraksi dengan Claude Code. Membuat generator asinkron yang melakukan streaming pesan saat tiba.
function query({
prompt,
options
}: {
prompt: string | AsyncIterable<SDKUserMessage>;
options?: Options;
}): Query| Parameter | Tipe | Deskripsi |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | Prompt input sebagai string atau async iterable untuk mode streaming |
options | Options | Objek konfigurasi opsional (lihat tipe Options di bawah) |
Mengembalikan objek Query yang memperluas AsyncGenerator<SDKMessage, void> dengan metode tambahan.
tool()Membuat definisi tool MCP yang aman tipe 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 | Tipe | Deskripsi |
|---|---|---|
name | string | Nama tool |
description | string | Deskripsi tentang apa yang dilakukan tool |
inputSchema | Schema extends ZodRawShape | Skema Zod yang mendefinisikan parameter input tool |
handler | (args, extra) => Promise<CallToolResult> | Fungsi asinkron 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 | Tipe | Deskripsi |
|---|---|---|
options.name | string | Nama server MCP |
options.version | string | String versi opsional |
options.tools | Array<SdkMcpToolDefinition> | Array definisi tool yang dibuat dengan tool() |
OptionsObjek konfigurasi untuk fungsi query().
| Properti | Tipe | Default | Deskripsi |
|---|---|---|---|
abortController | AbortController | new AbortController() | Pengontrol untuk membatalkan operasi |
additionalDirectories | string[] | [] | Direktori tambahan yang dapat diakses Claude |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Tentukan subagent secara terprogram |
QueryAntarmuka yang dikembalikan oleh fungsi query().
interface Query extends AsyncGenerator<SDKMessage, void> {
interrupt(): Promise<void>;
setPermissionMode(mode: PermissionMode): Promise<void>;
}| Metode | Deskripsi |
|---|---|
interrupt() | Mengganggu query (hanya tersedia dalam mode input streaming) |
setPermissionMode() | Mengubah mode izin (hanya tersedia dalam mode input streaming) |
AgentDefinitionKonfigurasi untuk subagent yang didefinisikan secara terprogram.
type AgentDefinition = {
description: string;
tools?: string[];
prompt: string;
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}| Field | Diperlukan | Deskripsi |
|---|---|---|
description | Ya | Deskripsi bahasa alami tentang kapan menggunakan agent ini |
tools | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi semua tool |
prompt | Ya | System prompt agent |
model | Tidak | Override model untuk agent ini. Jika dihilangkan, menggunakan model utama |
SettingSourceMengontrol sumber konfigurasi berbasis filesystem mana yang dimuat pengaturan SDK.
type SettingSource = 'user' | 'project' | 'local';| Nilai | Deskripsi | Lokasi |
|---|---|---|
'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 |
Saat settingSources dihilangkan atau undefined, SDK tidak memuat pengaturan filesystem apa pun. Ini memberikan isolasi untuk aplikasi SDK.
Muat semua pengaturan filesystem (perilaku legacy):
// Muat semua pengaturan seperti SDK v0.0.x
const result = query({
prompt: "Analyze this code",
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: "Run CI checks",
options: {
settingSources: ['project'] // Hanya .claude/settings.json
}
});Lingkungan testing dan CI:
// Pastikan perilaku konsisten di CI dengan mengecualikan pengaturan lokal
const result = query({
prompt: "Run tests",
options: {
settingSources: ['project'], // Hanya pengaturan bersama tim
permissionMode: 'bypassPermissions'
}
});Aplikasi SDK-only:
// Tentukan semuanya secara terprogram (perilaku default)
// Tidak ada dependensi filesystem - settingSources default ke []
const result = query({
prompt: "Review this PR",
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: "Add a new feature following project conventions",
options: {
systemPrompt: {
type: 'preset',
preset: 'claude_code' // Diperlukan untuk menggunakan CLAUDE.md
},
settingSources: ['project'], // Memuat CLAUDE.md dari direktori proyek
allowedTools: ['Read', 'Write', 'Edit']
}
});Saat beberapa sumber dimuat, pengaturan digabungkan dengan preseden ini (tertinggi ke terendah):
.claude/settings.local.json).claude/settings.json)~/.claude/settings.json)Opsi terprogram (seperti agents, allowedTools) selalu menimpa pengaturan filesystem.
PermissionModetype PermissionMode =
| 'default' // Perilaku izin standar
| 'acceptEdits' // Auto-accept file edits
| 'bypassPermissions' // Bypass semua pemeriksaan izin
| 'plan' // Mode perencanaan - tidak ada eksekusiCanUseToolTipe fungsi izin khusus untuk mengontrol penggunaan tool.
type CanUseTool = (
toolName: string,
input: ToolInput,
options: {
signal: AbortSignal;
suggestions?: PermissionUpdate[];
}
) => Promise<PermissionResult>;PermissionResultHasil pemeriksaan izin.
type PermissionResult =
| {
behavior: 'allow';
updatedInput: ToolInput;
updatedPermissions?: PermissionUpdate[];
}
| {
behavior: 'deny';
message: string;
interrupt?: boolean;
}McpServerConfigKonfigurasi untuk server MCP.
type McpServerConfig =
| McpStdioServerConfig
| McpSSEServerConfig
| McpHttpServerConfig
| McpSdkServerConfigWithInstance;McpStdioServerConfigtype McpStdioServerConfig = {
type?: 'stdio';
command: string;
args?: string[];
env?: Record<string, string>;
}McpSSEServerConfigtype McpSSEServerConfig = {
type: 'sse';
url: string;
headers?: Record<string, string>;
}McpHttpServerConfigtype McpHttpServerConfig = {
type: 'http';
url: string;
headers?: Record<string, string>;
}McpSdkServerConfigWithInstancetype McpSdkServerConfigWithInstance = {
type: 'sdk';
name: string;
instance: McpServer;
}SdkPluginConfigKonfigurasi untuk memuat plugin di SDK.
type SdkPluginConfig = {
type: 'local';
path: string;
}| Field | Tipe | Deskripsi |
|---|---|---|
type | 'local' | Harus 'local' (hanya plugin lokal yang didukung saat ini) |
path | string | Path 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.
SDKMessageTipe union dari semua pesan yang mungkin dikembalikan oleh query.
type SDKMessage =
| SDKAssistantMessage
| SDKUserMessage
| SDKUserMessageReplay
| SDKResultMessage
| SDKSystemMessage
| SDKPartialAssistantMessage
| SDKCompactBoundaryMessage;SDKAssistantMessagePesan respons assistant.
type SDKAssistantMessage = {
type: 'assistant';
uuid: UUID;
session_id: string;
message: APIAssistantMessage; // Dari Anthropic SDK
parent_tool_use_id: string | null;
}SDKUserMessagePesan input pengguna.
type SDKUserMessage = {
type: 'user';
uuid?: UUID;
session_id: string;
message: APIUserMessage; // Dari Anthropic SDK
parent_tool_use_id: string | null;
}SDKUserMessageReplayPesan 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;
}SDKResultMessagePesan 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[];
}SDKSystemMessagePesan 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;
}SDKPartialAssistantMessagePesan 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;
}SDKCompactBoundaryMessagePesan 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;
};
}SDKPermissionDenialInformasi tentang penggunaan tool yang ditolak.
type SDKPermissionDenial = {
tool_name: string;
tool_use_id: string;
tool_input: ToolInput;
}HookEventEvent hook yang tersedia.
type HookEvent =
| 'PreToolUse'
| 'PostToolUse'
| 'Notification'
| 'UserPromptSubmit'
| 'SessionStart'
| 'SessionEnd'
| 'Stop'
| 'SubagentStop'
| 'PreCompact';HookCallbackTipe fungsi callback hook.
type HookCallback = (
input: HookInput, // Union dari semua tipe input hook
toolUseID: string | undefined,
options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;HookCallbackMatcherKonfigurasi hook dengan matcher opsional.
interface HookCallbackMatcher {
matcher?: string;
hooks: HookCallback[];
}HookInputTipe union dari semua tipe input hook.
type HookInput =
| PreToolUseHookInput
| PostToolUseHookInput
| NotificationHookInput
| UserPromptSubmitHookInput
| SessionStartHookInput
| SessionEndHookInput
| StopHookInput
| SubagentStopHookInput
| PreCompactHookInput;BaseHookInputAntarmuka dasar yang diperluas oleh semua tipe input hook.
type BaseHookInput = {
session_id: string;
transcript_path: string;
cwd: string;
permission_mode?: string;
}PreToolUseHookInputtype PreToolUseHookInput = BaseHookInput & {
hook_event_name: 'PreToolUse';
tool_name: string;
tool_input: ToolInput;
}PostToolUseHookInputtype PostToolUseHookInput = BaseHookInput & {
hook_event_name: 'PostToolUse';
tool_name: string;
tool_input: ToolInput;
tool_response: ToolOutput;
}NotificationHookInputtype NotificationHookInput = BaseHookInput & {
hook_event_name: 'Notification';
message: string;
title?: string;
}UserPromptSubmitHookInputtype UserPromptSubmitHookInput = BaseHookInput & {
hook_event_name: 'UserPromptSubmit';
prompt: string;
}SessionStartHookInputtype SessionStartHookInput = BaseHookInput & {
hook_event_name: 'SessionStart';
source: 'startup' | 'resume' | 'clear' | 'compact';
}SessionEndHookInputtype SessionEndHookInput = BaseHookInput & {
hook_event_name: 'SessionEnd';
reason: 'clear' | 'logout' | 'prompt_input_exit' | 'other';
}StopHookInputtype StopHookInput = BaseHookInput & {
hook_event_name: 'Stop';
stop_hook_active: boolean;
}SubagentStopHookInputtype SubagentStopHookInput = BaseHookInput & {
hook_event_name: 'SubagentStop';
stop_hook_active: boolean;
}PreCompactHookInputtype PreCompactHookInput = BaseHookInput & {
hook_event_name: 'PreCompact';
trigger: 'manual' | 'auto';
custom_instructions: string | null;
}HookJSONOutputNilai pengembalian hook.
type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;AsyncHookJSONOutputtype AsyncHookJSONOutput = {
async: true;
asyncTimeout?: number;
}SyncHookJSONOutputtype SyncHookJSONOutput = {
continue?: boolean;
suppressOutput?: boolean;
stopReason?: string;
decision?: 'approve' | 'block';
systemMessage?: string;
reason?: string;
hookSpecificOutput?:
| {
hookEventName: 'PreToolUse';
permissionDecision?: 'allow' | 'deny' | 'ask';
permissionDecisionReason?: string;
}
| {
hookEventName: 'UserPromptSubmit';
additionalContext?: string;
}
| {
hookEventName: 'SessionStart';
additionalContext?: string;
}
| {
hookEventName: 'PostToolUse';
additionalContext?: string;
};
}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 aman tipe.
ToolInputCatatan: Ini adalah tipe dokumentasi saja 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;Nama tool: Task
interface AgentInput {
/**
* Deskripsi singkat (3-5 kata) dari tugas
*/
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.
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.
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.
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.
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.
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.
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.
Nama tool: Grep
interface GrepInput {
/**
* Pola ekspresi reguler untuk dicari
*/
pattern: string;
/**
* File atau direktori untuk dicari (default ke cwd)
*/
path?: string;
/**
* Pola glob untuk memfilter file (misalnya "*.js")
*/
glob?: string;
/**
* Tipe file untuk dicari (misalnya "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.
Nama tool: KillBash
interface KillShellInput {
/**
* ID shell background yang akan dibunuh
*/
shell_id: string;
}Membunuh shell bash background yang sedang berjalan berdasarkan ID-nya.
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.
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.
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.
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.
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.
Nama tool: ListMcpResources
interface ListMcpResourcesInput {
/**
* Nama server opsional untuk memfilter resource
*/
server?: string;
}Mencantumkan resource MCP yang tersedia dari server yang terhubung.
Nama tool: ReadMcpResource
interface ReadMcpResourceInput {
/**
* Nama server MCP
*/
server: string;
/**
* URI resource yang akan dibaca
*/
uri: string;
}Membaca resource MCP tertentu dari server.
Dokumentasi skema output untuk semua tool Claude Code bawaan. Tipe-tipe ini mewakili data respons aktual yang dikembalikan oleh setiap tool.
ToolOutputCatatan: Ini adalah tipe dokumentasi saja 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;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.
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.
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.
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.
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.
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.
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.
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.
Nama tool: KillBash
interface KillBashOutput {
/**
* Pesan sukses
*/
message: string;
/**
* ID shell yang dibunuh
*/
shell_id: string;
}Mengembalikan konfirmasi setelah menghentikan shell background.
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.
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.
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.
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.
Nama tool: ExitPlanMode
interface ExitPlanModeOutput {
/**
* Pesan konfirmasi
*/
message: string;
/**
* Apakah pengguna menyetujui rencana
*/
approved?: boolean;
}Mengembalikan konfirmasi setelah keluar dari mode perencanaan.
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.
Nama alat: 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.
PermissionUpdateOperasi 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;
}PermissionBehaviortype PermissionBehavior = 'allow' | 'deny' | 'ask';PermissionUpdateDestinationtype PermissionUpdateDestination =
| 'userSettings' // Pengaturan pengguna global
| 'projectSettings' // Pengaturan proyek per-direktori
| 'localSettings' // Pengaturan lokal yang diabaikan git
| 'session' // Sesi saat ini sajaPermissionRuleValuetype PermissionRuleValue = {
toolName: string;
ruleContent?: string;
}ApiKeySourcetype ApiKeySource = 'user' | 'project' | 'org' | 'temporary';ConfigScopetype ConfigScope = 'local' | 'user' | 'project';NonNullableUsageVersi dari Usage dengan semua bidang yang dapat bernilai null dibuat tidak dapat bernilai null.
type NonNullableUsage = {
[K in keyof Usage]: NonNullable<Usage[K]>;
}UsageStatistik 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;
}CallToolResultJenis hasil alat MCP (dari @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
content: Array<{
type: 'text' | 'image' | 'resource';
// Bidang tambahan bervariasi menurut jenis
}>;
isError?: boolean;
}AbortErrorKelas kesalahan khusus untuk operasi pembatalan.
class AbortError extends Error {}allowedTools |
string[] |
| Semua tool |
| Daftar nama tool yang diizinkan |
canUseTool | CanUseTool | undefined | Fungsi izin khusus untuk penggunaan tool |
continue | boolean | false | Lanjutkan percakapan terbaru |
cwd | string | process.cwd() | Direktori kerja saat ini |
disallowedTools | string[] | [] | Daftar nama tool yang tidak diizinkan |
env | Dict<string> | process.env | Variabel lingkungan |
executable | 'bun' | 'deno' | 'node' | Terdeteksi otomatis | Runtime JavaScript yang digunakan |
executableArgs | string[] | [] | Argumen yang diteruskan ke executable |
extraArgs | Record<string, string | null> | {} | Argumen tambahan |
fallbackModel | string | undefined | Model yang digunakan jika model utama gagal |
forkSession | boolean | false | Saat melanjutkan dengan resume, fork ke ID sesi baru alih-alih melanjutkan sesi asli |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Callback hook untuk event |
includePartialMessages | boolean | false | Sertakan event pesan parsial |
maxThinkingTokens | number | undefined | Token maksimal untuk proses pemikiran |
maxTurns | number | undefined | Putaran percakapan maksimal |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Konfigurasi server MCP |
model | string | Default dari CLI | Model Claude yang digunakan |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Tentukan format output untuk hasil agent. Lihat Structured outputs untuk detail |
pathToClaudeCodeExecutable | string | Menggunakan executable bawaan | Path ke executable Claude Code |
permissionMode | PermissionMode | 'default' | Mode izin untuk sesi |
permissionPromptToolName | string | undefined | Nama tool MCP untuk prompt izin |
plugins | SdkPluginConfig[] | [] | Muat plugin khusus dari path lokal. Lihat Plugins untuk detail |
resume | string | undefined | ID sesi untuk dilanjutkan |
settingSources | SettingSource[] | [] (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) => void | undefined | Callback untuk output stderr |
strictMcpConfig | boolean | false | Terapkan validasi MCP ketat |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string } | undefined (prompt kosong) | Konfigurasi system prompt. Teruskan string untuk prompt khusus, 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 |