npm install @anthropic-ai/claude-agent-sdkquery()La funzione principale per interagire con Claude Code. Crea un generatore asincrono che trasmette i messaggi man mano che arrivano.
function query({
prompt,
options
}: {
prompt: string | AsyncIterable<SDKUserMessage>;
options?: Options;
}): Query| Parametro | Tipo | Descrizione |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | Il prompt di input come stringa o iterabile asincrono per la modalità di streaming |
options | Options | Oggetto di configurazione opzionale (vedi il tipo Options di seguito) |
Restituisce un oggetto Query che estende AsyncGenerator<SDKMessage, void> con metodi aggiuntivi.
tool()Crea una definizione di strumento MCP type-safe per l'uso con i server MCP dell'SDK.
function tool<Schema extends ZodRawShape>(
name: string,
description: string,
inputSchema: Schema,
handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>| Parametro | Tipo | Descrizione |
|---|---|---|
name | string | Il nome dello strumento |
description | string | Una descrizione di cosa fa lo strumento |
inputSchema | Schema extends ZodRawShape | Schema Zod che definisce i parametri di input dello strumento |
handler | (args, extra) => Promise<CallToolResult> | Funzione asincrona che esegue la logica dello strumento |
createSdkMcpServer()Crea un'istanza di server MCP che viene eseguita nello stesso processo della tua applicazione.
function createSdkMcpServer(options: {
name: string;
version?: string;
tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance| Parametro | Tipo | Descrizione |
|---|---|---|
options.name | string | Il nome del server MCP |
options.version | string | Stringa di versione opzionale |
options.tools | Array<SdkMcpToolDefinition> | Array di definizioni di strumenti creati con tool() |
OptionsOggetto di configurazione per la funzione query().
| Proprietà | Tipo | Predefinito | Descrizione |
|---|---|---|---|
abortController | AbortController | new AbortController() | Controller per annullare le operazioni |
additionalDirectories | string[] | [] | Directory aggiuntive a cui Claude può accedere |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Definisci programmaticamente i subagent |
allowedTools | string[] | Tutti gli strumenti | Elenco dei nomi degli strumenti consentiti |
canUseTool | CanUseTool | undefined | Funzione di autorizzazione personalizzata per l'utilizzo dello strumento |
continue | boolean | false | Continua la conversazione più recente |
cwd | string | process.cwd() | Directory di lavoro corrente |
disallowedTools | string[] | [] | Elenco dei nomi degli strumenti non consentiti |
env | Dict<string> | process.env | Variabili di ambiente |
executable | 'bun' | 'deno' | 'node' | Rilevamento automatico | Runtime JavaScript da utilizzare |
executableArgs | string[] | [] | Argomenti da passare all'eseguibile |
extraArgs | Record<string, string | null> | {} | Argomenti aggiuntivi |
fallbackModel | string | undefined | Modello da utilizzare se il primario non riesce |
forkSession | boolean | false | Quando si riprende con resume, esegui il fork a un nuovo ID di sessione invece di continuare la sessione originale |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Callback di hook per gli eventi |
includePartialMessages | boolean | false | Includi gli eventi di messaggi parziali |
maxThinkingTokens | number | undefined | Token massimi per il processo di pensiero |
maxTurns | number | undefined | Turni di conversazione massimi |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Configurazioni del server MCP |
model | string | Predefinito dalla CLI | Modello Claude da utilizzare |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Definisci il formato di output per i risultati dell'agente. Vedi Output strutturati per i dettagli |
pathToClaudeCodeExecutable | string | Usa l'eseguibile integrato | Percorso all'eseguibile Claude Code |
permissionMode | PermissionMode | 'default' | Modalità di autorizzazione per la sessione |
permissionPromptToolName | string | undefined | Nome dello strumento MCP per i prompt di autorizzazione |
plugins | SdkPluginConfig[] | [] | Carica plugin personalizzati da percorsi locali. Vedi Plugin per i dettagli |
resume | string | undefined | ID di sessione da riprendere |
settingSources | SettingSource[] | [] (nessuna impostazione) | Controlla quali impostazioni del filesystem caricare. Se omesso, nessuna impostazione viene caricata. Nota: Deve includere 'project' per caricare i file CLAUDE.md |
stderr | (data: string) => void | undefined | Callback per l'output stderr |
strictMcpConfig | boolean | false | Applica la convalida MCP rigorosa |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string } | undefined (prompt vuoto) | Configurazione del prompt di sistema. Passa una stringa per un prompt personalizzato, o { type: 'preset', preset: 'claude_code' } per utilizzare il prompt di sistema di Claude Code. Quando si utilizza la forma dell'oggetto preset, aggiungi append per estendere il prompt di sistema con istruzioni aggiuntive |
QueryInterfaccia restituita dalla funzione query().
interface Query extends AsyncGenerator<SDKMessage, void> {
interrupt(): Promise<void>;
setPermissionMode(mode: PermissionMode): Promise<void>;
}| Metodo | Descrizione |
|---|---|
interrupt() | Interrompe la query (disponibile solo in modalità input di streaming) |
setPermissionMode() | Cambia la modalità di autorizzazione (disponibile solo in modalità input di streaming) |
AgentDefinitionConfigurazione per un subagent definito programmaticamente.
type AgentDefinition = {
description: string;
tools?: string[];
prompt: string;
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}| Campo | Obbligatorio | Descrizione |
|---|---|---|
description | Sì | Descrizione in linguaggio naturale di quando utilizzare questo agente |
tools | No | Array dei nomi degli strumenti consentiti. Se omesso, eredita tutti gli strumenti |
prompt | Sì | Il prompt di sistema dell'agente |
model | No | Override del modello per questo agente. Se omesso, utilizza il modello principale |
SettingSourceControlla quali fonti di configurazione basate sul filesystem l'SDK carica le impostazioni da.
type SettingSource = 'user' | 'project' | 'local';| Valore | Descrizione | Posizione |
|---|---|---|
'user' | Impostazioni utente globali | ~/.claude/settings.json |
'project' | Impostazioni di progetto condivise (controllate dalla versione) | .claude/settings.json |
'local' | Impostazioni di progetto locali (gitignored) | .claude/settings.local.json |
Quando settingSources è omesso o undefined, l'SDK non carica alcuna impostazione del filesystem. Questo fornisce isolamento per le applicazioni SDK.
Carica tutte le impostazioni del filesystem (comportamento legacy):
// Carica tutte le impostazioni come faceva l'SDK v0.0.x
const result = query({
prompt: "Analizza questo codice",
options: {
settingSources: ['user', 'project', 'local'] // Carica tutte le impostazioni
}
});Carica solo fonti di impostazioni specifiche:
// Carica solo le impostazioni di progetto, ignora quelle utente e locali
const result = query({
prompt: "Esegui i controlli CI",
options: {
settingSources: ['project'] // Solo .claude/settings.json
}
});Ambienti di test e CI:
// Assicura un comportamento coerente in CI escludendo le impostazioni locali
const result = query({
prompt: "Esegui i test",
options: {
settingSources: ['project'], // Solo impostazioni condivise dal team
permissionMode: 'bypassPermissions'
}
});Applicazioni solo SDK:
// Definisci tutto programmaticamente (comportamento predefinito)
// Nessuna dipendenza dal filesystem - settingSources è predefinito a []
const result = query({
prompt: "Rivedi questo PR",
options: {
// settingSources: [] è il predefinito, non è necessario specificare
agents: { /* ... */ },
mcpServers: { /* ... */ },
allowedTools: ['Read', 'Grep', 'Glob']
}
});Caricamento delle istruzioni di progetto CLAUDE.md:
// Carica le impostazioni di progetto per includere i file CLAUDE.md
const result = query({
prompt: "Aggiungi una nuova funzionalità seguendo le convenzioni del progetto",
options: {
systemPrompt: {
type: 'preset',
preset: 'claude_code' // Obbligatorio per utilizzare CLAUDE.md
},
settingSources: ['project'], // Carica CLAUDE.md dalla directory del progetto
allowedTools: ['Read', 'Write', 'Edit']
}
});Quando più fonti vengono caricate, le impostazioni vengono unite con questa precedenza (da più alta a più bassa):
.claude/settings.local.json).claude/settings.json)~/.claude/settings.json)Le opzioni programmatiche (come agents, allowedTools) sostituiscono sempre le impostazioni del filesystem.
PermissionModetype PermissionMode =
| 'default' // Comportamento di autorizzazione standard
| 'acceptEdits' // Accetta automaticamente le modifiche ai file
| 'bypassPermissions' // Ignora tutti i controlli di autorizzazione
| 'plan' // Modalità di pianificazione - nessuna esecuzioneCanUseToolTipo di funzione di autorizzazione personalizzata per controllare l'utilizzo dello strumento.
type CanUseTool = (
toolName: string,
input: ToolInput,
options: {
signal: AbortSignal;
suggestions?: PermissionUpdate[];
}
) => Promise<PermissionResult>;PermissionResultRisultato di un controllo di autorizzazione.
type PermissionResult =
| {
behavior: 'allow';
updatedInput: ToolInput;
updatedPermissions?: PermissionUpdate[];
}
| {
behavior: 'deny';
message: string;
interrupt?: boolean;
}McpServerConfigConfigurazione per i 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;
}SdkPluginConfigConfigurazione per il caricamento dei plugin nell'SDK.
type SdkPluginConfig = {
type: 'local';
path: string;
}| Campo | Tipo | Descrizione |
|---|---|---|
type | 'local' | Deve essere 'local' (attualmente sono supportati solo i plugin locali) |
path | string | Percorso assoluto o relativo alla directory del plugin |
Esempio:
plugins: [
{ type: 'local', path: './my-plugin' },
{ type: 'local', path: '/absolute/path/to/plugin' }
]Per informazioni complete sulla creazione e l'utilizzo dei plugin, vedi Plugin.
SDKMessageTipo di unione di tutti i possibili messaggi restituiti dalla query.
type SDKMessage =
| SDKAssistantMessage
| SDKUserMessage
| SDKUserMessageReplay
| SDKResultMessage
| SDKSystemMessage
| SDKPartialAssistantMessage
| SDKCompactBoundaryMessage;SDKAssistantMessageMessaggio di risposta dell'assistente.
type SDKAssistantMessage = {
type: 'assistant';
uuid: UUID;
session_id: string;
message: APIAssistantMessage; // Da Anthropic SDK
parent_tool_use_id: string | null;
}SDKUserMessageMessaggio di input dell'utente.
type SDKUserMessage = {
type: 'user';
uuid?: UUID;
session_id: string;
message: APIUserMessage; // Da Anthropic SDK
parent_tool_use_id: string | null;
}SDKUserMessageReplayMessaggio utente riprodotto con UUID obbligatorio.
type SDKUserMessageReplay = {
type: 'user';
uuid: UUID;
session_id: string;
message: APIUserMessage;
parent_tool_use_id: string | null;
}SDKResultMessageMessaggio di risultato finale.
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[];
}SDKSystemMessageMessaggio di inizializzazione del sistema.
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;
}SDKPartialAssistantMessageMessaggio parziale di streaming (solo quando includePartialMessages è true).
type SDKPartialAssistantMessage = {
type: 'stream_event';
event: RawMessageStreamEvent; // Da Anthropic SDK
parent_tool_use_id: string | null;
uuid: UUID;
session_id: string;
}SDKCompactBoundaryMessageMessaggio che indica un limite di compattazione della conversazione.
type SDKCompactBoundaryMessage = {
type: 'system';
subtype: 'compact_boundary';
uuid: UUID;
session_id: string;
compact_metadata: {
trigger: 'manual' | 'auto';
pre_tokens: number;
};
}SDKPermissionDenialInformazioni su un utilizzo di strumento negato.
type SDKPermissionDenial = {
tool_name: string;
tool_use_id: string;
tool_input: ToolInput;
}HookEventEventi di hook disponibili.
type HookEvent =
| 'PreToolUse'
| 'PostToolUse'
| 'Notification'
| 'UserPromptSubmit'
| 'SessionStart'
| 'SessionEnd'
| 'Stop'
| 'SubagentStop'
| 'PreCompact';HookCallbackTipo di funzione di callback di hook.
type HookCallback = (
input: HookInput, // Unione di tutti i tipi di input di hook
toolUseID: string | undefined,
options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;HookCallbackMatcherConfigurazione di hook con matcher opzionale.
interface HookCallbackMatcher {
matcher?: string;
hooks: HookCallback[];
}HookInputTipo di unione di tutti i tipi di input di hook.
type HookInput =
| PreToolUseHookInput
| PostToolUseHookInput
| NotificationHookInput
| UserPromptSubmitHookInput
| SessionStartHookInput
| SessionEndHookInput
| StopHookInput
| SubagentStopHookInput
| PreCompactHookInput;BaseHookInputInterfaccia di base che tutti i tipi di input di hook estendono.
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;
}HookJSONOutputValore di ritorno di 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;
};
}Documentazione degli schemi di input per tutti gli strumenti Claude Code integrati. Questi tipi vengono esportati da @anthropic-ai/claude-agent-sdk e possono essere utilizzati per interazioni di strumenti type-safe.
ToolInputNota: Questo è un tipo di sola documentazione per chiarezza. Rappresenta l'unione di tutti i tipi di input dello strumento.
type ToolInput =
| AgentInput
| BashInput
| BashOutputInput
| FileEditInput
| FileReadInput
| FileWriteInput
| GlobInput
| GrepInput
| KillShellInput
| NotebookEditInput
| WebFetchInput
| WebSearchInput
| TodoWriteInput
| ExitPlanModeInput
| ListMcpResourcesInput
| ReadMcpResourceInput;Nome dello strumento: Task
interface AgentInput {
/**
* Una breve descrizione (3-5 parole) dell'attività
*/
description: string;
/**
* L'attività che l'agente deve eseguire
*/
prompt: string;
/**
* Il tipo di agente specializzato da utilizzare per questa attività
*/
subagent_type: string;
}Avvia un nuovo agente per gestire attività complesse e multi-step in modo autonomo.
Nome dello strumento: Bash
interface BashInput {
/**
* Il comando da eseguire
*/
command: string;
/**
* Timeout opzionale in millisecondi (max 600000)
*/
timeout?: number;
/**
* Descrizione chiara e concisa di cosa fa questo comando in 5-10 parole
*/
description?: string;
/**
* Impostare su true per eseguire questo comando in background
*/
run_in_background?: boolean;
}Esegue comandi bash in una sessione shell persistente con timeout opzionale ed esecuzione in background.
Nome dello strumento: BashOutput
interface BashOutputInput {
/**
* L'ID della shell in background da cui recuperare l'output
*/
bash_id: string;
/**
* Regex opzionale per filtrare le righe di output
*/
filter?: string;
}Recupera l'output da una shell bash in background in esecuzione o completata.
Nome dello strumento: Edit
interface FileEditInput {
/**
* Il percorso assoluto del file da modificare
*/
file_path: string;
/**
* Il testo da sostituire
*/
old_string: string;
/**
* Il testo con cui sostituirlo (deve essere diverso da old_string)
*/
new_string: string;
/**
* Sostituisci tutte le occorrenze di old_string (predefinito false)
*/
replace_all?: boolean;
}Esegue sostituzioni di stringhe esatte nei file.
Nome dello strumento: Read
interface FileReadInput {
/**
* Il percorso assoluto del file da leggere
*/
file_path: string;
/**
* Il numero di riga da cui iniziare a leggere
*/
offset?: number;
/**
* Il numero di righe da leggere
*/
limit?: number;
}Legge i file dal filesystem locale, inclusi testo, immagini, PDF e notebook Jupyter.
Nome dello strumento: Write
interface FileWriteInput {
/**
* Il percorso assoluto del file da scrivere
*/
file_path: string;
/**
* Il contenuto da scrivere nel file
*/
content: string;
}Scrive un file nel filesystem locale, sovrascrivendo se esiste.
Nome dello strumento: Glob
interface GlobInput {
/**
* Il pattern glob per abbinare i file
*/
pattern: string;
/**
* La directory in cui cercare (predefinito cwd)
*/
path?: string;
}Corrispondenza di pattern di file veloce che funziona con qualsiasi dimensione di codebase.
Nome dello strumento: Grep
interface GrepInput {
/**
* Il pattern di espressione regolare da cercare
*/
pattern: string;
/**
* File o directory in cui cercare (predefinito cwd)
*/
path?: string;
/**
* Pattern glob per filtrare i file (ad es. "*.js")
*/
glob?: string;
/**
* Tipo di file da cercare (ad es. "js", "py", "rust")
*/
type?: string;
/**
* Modalità di output: "content", "files_with_matches", o "count"
*/
output_mode?: 'content' | 'files_with_matches' | 'count';
/**
* Ricerca senza distinzione tra maiuscole e minuscole
*/
'-i'?: boolean;
/**
* Mostra i numeri di riga (per la modalità content)
*/
'-n'?: boolean;
/**
* Righe da mostrare prima di ogni corrispondenza
*/
'-B'?: number;
/**
* Righe da mostrare dopo ogni corrispondenza
*/
'-A'?: number;
/**
* Righe da mostrare prima e dopo ogni corrispondenza
*/
'-C'?: number;
/**
* Limita l'output alle prime N righe/voci
*/
head_limit?: number;
/**
* Abilita la modalità multiriga
*/
multiline?: boolean;
}Potente strumento di ricerca basato su ripgrep con supporto regex.
Nome dello strumento: KillBash
interface KillShellInput {
/**
* L'ID della shell in background da terminare
*/
shell_id: string;
}Termina una shell bash in background in esecuzione per ID.
Nome dello strumento: NotebookEdit
interface NotebookEditInput {
/**
* Il percorso assoluto del file notebook Jupyter
*/
notebook_path: string;
/**
* L'ID della cella da modificare
*/
cell_id?: string;
/**
* La nuova sorgente per la cella
*/
new_source: string;
/**
* Il tipo di cella (code o markdown)
*/
cell_type?: 'code' | 'markdown';
/**
* Il tipo di modifica (replace, insert, delete)
*/
edit_mode?: 'replace' | 'insert' | 'delete';
}Modifica le celle nei file notebook Jupyter.
Nome dello strumento: WebFetch
interface WebFetchInput {
/**
* L'URL da cui recuperare il contenuto
*/
url: string;
/**
* Il prompt da eseguire sul contenuto recuperato
*/
prompt: string;
}Recupera il contenuto da un URL e lo elabora con un modello AI.
Nome dello strumento: WebSearch
interface WebSearchInput {
/**
* La query di ricerca da utilizzare
*/
query: string;
/**
* Includi solo i risultati da questi domini
*/
allowed_domains?: string[];
/**
* Non includere mai i risultati da questi domini
*/
blocked_domains?: string[];
}Cerca il web e restituisce i risultati formattati.
Nome dello strumento: TodoWrite
interface TodoWriteInput {
/**
* L'elenco di attività aggiornato
*/
todos: Array<{
/**
* La descrizione dell'attività
*/
content: string;
/**
* Lo stato dell'attività
*/
status: 'pending' | 'in_progress' | 'completed';
/**
* Forma attiva della descrizione dell'attività
*/
activeForm: string;
}>;
}Crea e gestisce un elenco di attività strutturato per tracciare i progressi.
Nome dello strumento: ExitPlanMode
interface ExitPlanModeInput {
/**
* Il piano da eseguire dall'utente per l'approvazione
*/
plan: string;
}Esce dalla modalità di pianificazione e richiede all'utente di approvare il piano.
Nome dello strumento: ListMcpResources
interface ListMcpResourcesInput {
/**
* Nome del server opzionale per filtrare le risorse per
*/
server?: string;
}Elenca le risorse MCP disponibili dai server connessi.
Nome dello strumento: ReadMcpResource
interface ReadMcpResourceInput {
/**
* Il nome del server MCP
*/
server: string;
/**
* L'URI della risorsa da leggere
*/
uri: string;
}Legge una risorsa MCP specifica da un server.
Documentazione degli schemi di output per tutti gli strumenti Claude Code integrati. Questi tipi rappresentano i dati di risposta effettivi restituiti da ogni strumento.
ToolOutputNota: Questo è un tipo di sola documentazione per chiarezza. Rappresenta l'unione di tutti i tipi di output dello strumento.
type ToolOutput =
| TaskOutput
| BashOutput
| BashOutputToolOutput
| EditOutput
| ReadOutput
| WriteOutput
| GlobOutput
| GrepOutput
| KillBashOutput
| NotebookEditOutput
| WebFetchOutput
| WebSearchOutput
| TodoWriteOutput
| ExitPlanModeOutput
| ListMcpResourcesOutput
| ReadMcpResourceOutput;Nome dello strumento: Task
interface TaskOutput {
/**
* Messaggio di risultato finale dal subagent
*/
result: string;
/**
* Statistiche di utilizzo dei token
*/
usage?: {
input_tokens: number;
output_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
};
/**
* Costo totale in USD
*/
total_cost_usd?: number;
/**
* Durata dell'esecuzione in millisecondi
*/
duration_ms?: number;
}Restituisce il risultato finale dal subagent dopo aver completato l'attività delegata.
Nome dello strumento: Bash
interface BashOutput {
/**
* Output combinato di stdout e stderr
*/
output: string;
/**
* Codice di uscita del comando
*/
exitCode: number;
/**
* Se il comando è stato terminato a causa del timeout
*/
killed?: boolean;
/**
* ID della shell per i processi in background
*/
shellId?: string;
}Restituisce l'output del comando con lo stato di uscita. I comandi in background vengono restituiti immediatamente con uno shellId.
Nome dello strumento: BashOutput
interface BashOutputToolOutput {
/**
* Nuovo output dall'ultimo controllo
*/
output: string;
/**
* Stato della shell corrente
*/
status: 'running' | 'completed' | 'failed';
/**
* Codice di uscita (quando completato)
*/
exitCode?: number;
}Restituisce l'output incrementale dalle shell in background.
Nome dello strumento: Edit
interface EditOutput {
/**
* Messaggio di conferma
*/
message: string;
/**
* Numero di sostituzioni effettuate
*/
replacements: number;
/**
* Percorso del file che è stato modificato
*/
file_path: string;
}Restituisce la conferma delle modifiche riuscite con il conteggio delle sostituzioni.
Nome dello strumento: Read
type ReadOutput =
| TextFileOutput
| ImageFileOutput
| PDFFileOutput
| NotebookFileOutput;
interface TextFileOutput {
/**
* Contenuto del file con numeri di riga
*/
content: string;
/**
* Numero totale di righe nel file
*/
total_lines: number;
/**
* Righe effettivamente restituite
*/
lines_returned: number;
}
interface ImageFileOutput {
/**
* Dati immagine codificati in base64
*/
image: string;
/**
* Tipo MIME dell'immagine
*/
mime_type: string;
/**
* Dimensione del file in byte
*/
file_size: number;
}
interface PDFFileOutput {
/**
* Array dei contenuti della pagina
*/
pages: Array<{
page_number: number;
text?: string;
images?: Array<{
image: string;
mime_type: string;
}>;
}>;
/**
* Numero totale di pagine
*/
total_pages: number;
}
interface NotebookFileOutput {
/**
* Celle del notebook Jupyter
*/
cells: Array<{
cell_type: 'code' | 'markdown';
source: string;
outputs?: any[];
execution_count?: number;
}>;
/**
* Metadati del notebook
*/
metadata?: Record<string, any>;
}Restituisce il contenuto del file in un formato appropriato al tipo di file.
Nome dello strumento: Write
interface WriteOutput {
/**
* Messaggio di successo
*/
message: string;
/**
* Numero di byte scritti
*/
bytes_written: number;
/**
* Percorso del file che è stato scritto
*/
file_path: string;
}Restituisce la conferma dopo aver scritto con successo il file.
Nome dello strumento: Glob
interface GlobOutput {
/**
* Array dei percorsi dei file corrispondenti
*/
matches: string[];
/**
* Numero di corrispondenze trovate
*/
count: number;
/**
* Directory di ricerca utilizzata
*/
search_path: string;
}Restituisce i percorsi dei file che corrispondono al pattern glob, ordinati per ora di modifica.
Nome dello strumento: Grep
type GrepOutput =
| GrepContentOutput
| GrepFilesOutput
| GrepCountOutput;
interface GrepContentOutput {
/**
* Righe corrispondenti con contesto
*/
matches: Array<{
file: string;
line_number?: number;
line: string;
before_context?: string[];
after_context?: string[];
}>;
/**
* Numero totale di corrispondenze
*/
total_matches: number;
}
interface GrepFilesOutput {
/**
* File contenenti corrispondenze
*/
files: string[];
/**
* Numero di file con corrispondenze
*/
count: number;
}
interface GrepCountOutput {
/**
* Conteggi delle corrispondenze per file
*/
counts: Array<{
file: string;
count: number;
}>;
/**
* Corrispondenze totali in tutti i file
*/
total: number;
}Restituisce i risultati della ricerca nel formato specificato da output_mode.
Nome dello strumento: KillBash
interface KillBashOutput {
/**
* Messaggio di successo
*/
message: string;
/**
* ID della shell terminata
*/
shell_id: string;
}Restituisce la conferma dopo aver terminato la shell in background.
Nome dello strumento: NotebookEdit
interface NotebookEditOutput {
/**
* Messaggio di successo
*/
message: string;
/**
* Tipo di modifica eseguita
*/
edit_type: 'replaced' | 'inserted' | 'deleted';
/**
* ID della cella interessata
*/
cell_id?: string;
/**
* Celle totali nel notebook dopo la modifica
*/
total_cells: number;
}Restituisce la conferma dopo aver modificato il notebook Jupyter.
Nome dello strumento: WebFetch
interface WebFetchOutput {
/**
* Risposta del modello AI al prompt
*/
response: string;
/**
* URL che è stato recuperato
*/
url: string;
/**
* URL finale dopo i reindirizzamenti
*/
final_url?: string;
/**
* Codice di stato HTTP
*/
status_code?: number;
}Restituisce l'analisi dell'IA del contenuto web recuperato.
Nome dello strumento: WebSearch
interface WebSearchOutput {
/**
* Risultati della ricerca
*/
results: Array<{
title: string;
url: string;
snippet: string;
/**
* Metadati aggiuntivi se disponibili
*/
metadata?: Record<string, any>;
}>;
/**
* Numero totale di risultati
*/
total_results: number;
/**
* La query che è stata cercata
*/
query: string;
}Restituisce i risultati della ricerca formattati dal web.
Nome dello strumento: TodoWrite
interface TodoWriteOutput {
/**
* Messaggio di successo
*/
message: string;
/**
* Statistiche attuali delle attività
*/
stats: {
total: number;
pending: number;
in_progress: number;
completed: number;
};
}Restituisce la conferma con le statistiche attuali delle attività.
Nome dello strumento: ExitPlanMode
interface ExitPlanModeOutput {
/**
* Messaggio di conferma
*/
message: string;
/**
* Se l'utente ha approvato il piano
*/
approved?: boolean;
}Restituisce la conferma dopo aver uscito dalla modalità di pianificazione.
Nome dello strumento: ListMcpResources
interface ListMcpResourcesOutput {
/**
* Risorse disponibili
*/
resources: Array<{
uri: string;
name: string;
description?: string;
mimeType?: string;
server: string;
}>;
/**
* Numero totale di risorse
*/
total: number;
}Restituisce l'elenco delle risorse MCP disponibili.
Nome dello strumento: ReadMcpResource
interface ReadMcpResourceOutput {
/**
* Contenuti della risorsa
*/
contents: Array<{
uri: string;
mimeType?: string;
text?: string;
blob?: string;
}>;
/**
* Server che ha fornito la risorsa
*/
server: string;
}Restituisce i contenuti della risorsa MCP richiesta.
PermissionUpdateOperazioni per l'aggiornamento dei permessi.
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' // Impostazioni globali dell'utente
| 'projectSettings' // Impostazioni del progetto per directory
| 'localSettings' // Impostazioni locali ignorate da Git
| 'session' // Solo sessione correntePermissionRuleValuetype PermissionRuleValue = {
toolName: string;
ruleContent?: string;
}ApiKeySourcetype ApiKeySource = 'user' | 'project' | 'org' | 'temporary';ConfigScopetype ConfigScope = 'local' | 'user' | 'project';NonNullableUsageUna versione di Usage con tutti i campi nullable resi non-nullable.
type NonNullableUsage = {
[K in keyof Usage]: NonNullable<Usage[K]>;
}UsageStatistiche di utilizzo dei token (da @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;
}CallToolResultTipo di risultato dello strumento MCP (da @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
content: Array<{
type: 'text' | 'image' | 'resource';
// I campi aggiuntivi variano in base al tipo
}>;
isError?: boolean;
}AbortErrorClasse di errore personalizzata per le operazioni di interruzione.
class AbortError extends Error {}