Installazione

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

Funzioni

query()

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

Parametri

ParametroTipoDescrizione
promptstring | AsyncIterable<SDKUserMessage>Il prompt di input come stringa o iterabile asincrono per la modalità streaming
optionsOptionsOggetto di configurazione opzionale (vedi tipo Options sotto)

Restituisce

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 SDK.
function tool<Schema extends ZodRawShape>(
  name: string,
  description: string,
  inputSchema: Schema,
  handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>

Parametri

ParametroTipoDescrizione
namestringIl nome dello strumento
descriptionstringUna descrizione di cosa fa lo strumento
inputSchemaSchema extends ZodRawShapeSchema 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 del server MCP che viene eseguita nello stesso processo della tua applicazione.
function createSdkMcpServer(options: {
  name: string;
  version?: string;
  tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance

Parametri

ParametroTipoDescrizione
options.namestringIl nome del server MCP
options.versionstringStringa di versione opzionale
options.toolsArray<SdkMcpToolDefinition>Array di definizioni di strumenti create con tool()

Tipi

Options

Oggetto di configurazione per la funzione query().
ProprietàTipoPredefinitoDescrizione
abortControllerAbortControllernew AbortController()Controller per annullare le operazioni
additionalDirectoriesstring[][]Directory aggiuntive a cui Claude può accedere
agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedDefinisce programmaticamente i subagenti
allowedToolsstring[]Tutti gli strumentiElenco dei nomi degli strumenti consentiti
canUseToolCanUseToolundefinedFunzione di permesso personalizzata per l’uso degli strumenti
continuebooleanfalseContinua la conversazione più recente
cwdstringprocess.cwd()Directory di lavoro corrente
disallowedToolsstring[][]Elenco dei nomi degli strumenti non consentiti
envDict<string>process.envVariabili d’ambiente
executable'bun' | 'deno' | 'node'Rilevato automaticamenteRuntime JavaScript da utilizzare
executableArgsstring[][]Argomenti da passare all’eseguibile
extraArgsRecord<string, string | null>{}Argomenti aggiuntivi
fallbackModelstringundefinedModello da utilizzare se quello primario fallisce
forkSessionbooleanfalseQuando si riprende con resume, crea una nuova sessione ID invece di continuare la sessione originale
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Callback hook per eventi
includePartialMessagesbooleanfalseIncludi eventi di messaggi parziali
maxThinkingTokensnumberundefinedToken massimi per il processo di pensiero
maxTurnsnumberundefinedTurni di conversazione massimi
mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Configurazioni del server MCP
modelstringPredefinito da CLIModello Claude da utilizzare
pathToClaudeCodeExecutablestringRilevato automaticamentePercorso all’eseguibile Claude Code
permissionModePermissionMode'default'Modalità di permesso per la sessione
permissionPromptToolNamestringundefinedNome dello strumento MCP per i prompt di permesso
resumestringundefinedID sessione da riprendere
settingSourcesSettingSource[][] (nessuna impostazione)Controlla quali impostazioni del filesystem caricare. Quando omesso, nessuna impostazione viene caricata
stderr(data: string) => voidundefinedCallback per l’output stderr
strictMcpConfigbooleanfalseApplica validazione MCP rigorosa
systemPromptstring | { 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

Query

Interfaccia restituita dalla funzione query().
interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>;
  setPermissionMode(mode: PermissionMode): Promise<void>;
}

Metodi

MetodoDescrizione
interrupt()Interrompe la query (disponibile solo in modalità input streaming)
setPermissionMode()Cambia la modalità di permesso (disponibile solo in modalità input streaming)

AgentDefinition

Configurazione per un subagente definito programmaticamente.
type AgentDefinition = {
  description: string;
  tools?: string[];
  prompt: string;
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}
CampoRichiestoDescrizione
descriptionDescrizione in linguaggio naturale di quando utilizzare questo agente
toolsNoArray di nomi di strumenti consentiti. Se omesso, eredita tutti gli strumenti
promptIl prompt di sistema dell’agente
modelNoOverride del modello per questo agente. Se omesso, utilizza il modello principale

SettingSource

Controlla da quali fonti di configurazione basate sul filesystem l’SDK carica le impostazioni.
type SettingSource = 'user' | 'project' | 'local';
ValoreDescrizionePosizione
'user'Impostazioni utente globali~/.claude/settings.json
'project'Impostazioni progetto condivise (controllo versione).claude/settings.json
'local'Impostazioni progetto locali (gitignored).claude/settings.local.json

Comportamento predefinito

Quando settingSources è omesso o undefined, l’SDK non carica alcuna impostazione del filesystem. Questo fornisce isolamento per le applicazioni SDK.

Perché utilizzare settingSources?

Carica tutte le impostazioni del filesystem (comportamento legacy):
// Carica tutte le impostazioni come faceva 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 del progetto, ignora utente e locali
const result = query({
  prompt: "Esegui controlli CI",
  options: {
    settingSources: ['project']  // Solo .claude/settings.json
  }
});
Ambienti di test e CI:
// Assicura comportamento coerente in CI escludendo le impostazioni locali
const result = query({
  prompt: "Esegui test",
  options: {
    settingSources: ['project'],  // Solo impostazioni condivise del team
    permissionMode: 'bypassPermissions'
  }
});
Applicazioni solo SDK:
// Definisci tutto programmaticamente (comportamento predefinito)
// Nessuna dipendenza dal filesystem - settingSources predefinito a []
const result = query({
  prompt: "Rivedi questa PR",
  options: {
    // settingSources: [] è il predefinito, non è necessario specificarlo
    agents: { /* ... */ },
    mcpServers: { /* ... */ },
    allowedTools: ['Read', 'Grep', 'Glob']
  }
});

Precedenza delle impostazioni

Quando vengono caricate più fonti, le impostazioni vengono unite con questa precedenza (dalla più alta alla più bassa):
  1. Impostazioni locali (.claude/settings.local.json)
  2. Impostazioni progetto (.claude/settings.json)
  3. Impostazioni utente (~/.claude/settings.json)
Le opzioni programmatiche (come agents, allowedTools) sovrascrivono sempre le impostazioni del filesystem.

PermissionMode

type PermissionMode =
  | 'default'           // Comportamento di permesso standard
  | 'acceptEdits'       // Accetta automaticamente le modifiche ai file
  | 'bypassPermissions' // Bypassa tutti i controlli di permesso
  | 'plan'              // Modalità pianificazione - nessuna esecuzione

CanUseTool

Tipo di funzione di permesso personalizzata per controllare l’uso degli strumenti.
type CanUseTool = (
  toolName: string,
  input: ToolInput,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
  }
) => Promise<PermissionResult>;

PermissionResult

Risultato di un controllo di permesso.
type PermissionResult = 
  | {
      behavior: 'allow';
      updatedInput: ToolInput;
      updatedPermissions?: PermissionUpdate[];
    }
  | {
      behavior: 'deny';
      message: string;
      interrupt?: boolean;
    }

McpServerConfig

Configurazione per i 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;
}

Tipi di Messaggio

SDKMessage

Tipo unione di tutti i possibili messaggi restituiti dalla query.
type SDKMessage = 
  | SDKAssistantMessage
  | SDKUserMessage
  | SDKUserMessageReplay
  | SDKResultMessage
  | SDKSystemMessage
  | SDKPartialAssistantMessage
  | SDKCompactBoundaryMessage;

SDKAssistantMessage

Messaggio di risposta dell’assistente.
type SDKAssistantMessage = {
  type: 'assistant';
  uuid: UUID;
  session_id: string;
  message: APIAssistantMessage; // Da Anthropic SDK
  parent_tool_use_id: string | null;
}

SDKUserMessage

Messaggio di input dell’utente.
type SDKUserMessage = {
  type: 'user';
  uuid?: UUID;
  session_id: string;
  message: APIUserMessage; // Da Anthropic SDK
  parent_tool_use_id: string | null;
}

SDKUserMessageReplay

Messaggio utente riprodotto con UUID richiesto.
type SDKUserMessageReplay = {
  type: 'user';
  uuid: UUID;
  session_id: string;
  message: APIUserMessage;
  parent_tool_use_id: string | null;
}

SDKResultMessage

Messaggio 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[];
    }

SDKSystemMessage

Messaggio 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;
}

SDKPartialAssistantMessage

Messaggio parziale in 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;
}

SDKCompactBoundaryMessage

Messaggio che indica un confine di compattazione della conversazione.
type SDKCompactBoundaryMessage = {
  type: 'system';
  subtype: 'compact_boundary';
  uuid: UUID;
  session_id: string;
  compact_metadata: {
    trigger: 'manual' | 'auto';
    pre_tokens: number;
  };
}

SDKPermissionDenial

Informazioni su un uso di strumento negato.
type SDKPermissionDenial = {
  tool_name: string;
  tool_use_id: string;
  tool_input: ToolInput;
}

Tipi Hook

HookEvent

Eventi hook disponibili.
type HookEvent = 
  | 'PreToolUse'
  | 'PostToolUse'
  | 'Notification'
  | 'UserPromptSubmit'
  | 'SessionStart'
  | 'SessionEnd'
  | 'Stop'
  | 'SubagentStop'
  | 'PreCompact';

HookCallback

Tipo di funzione callback hook.
type HookCallback = (
  input: HookInput, // Unione di tutti i tipi di input hook
  toolUseID: string | undefined,
  options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;

HookCallbackMatcher

Configurazione hook con matcher opzionale.
interface HookCallbackMatcher {
  matcher?: string;
  hooks: HookCallback[];
}

HookInput

Tipo unione di tutti i tipi di input hook.
type HookInput = 
  | PreToolUseHookInput
  | PostToolUseHookInput
  | NotificationHookInput
  | UserPromptSubmitHookInput
  | SessionStartHookInput
  | SessionEndHookInput
  | StopHookInput
  | SubagentStopHookInput
  | PreCompactHookInput;

BaseHookInput

Interfaccia base che tutti i tipi di input hook estendono.
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

Valore di ritorno 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;
      };
}

Tipi di Input Strumento

Documentazione degli schemi di input per tutti gli strumenti integrati di Claude Code. Questi tipi sono esportati da @anthropic-ai/claude-agent-sdk e possono essere utilizzati per interazioni con strumenti type-safe.

ToolInput

Nota: Questo è un tipo solo per documentazione per chiarezza. Rappresenta l’unione di tutti i tipi di input strumento.
type ToolInput = 
  | AgentInput
  | BashInput
  | BashOutputInput
  | FileEditInput
  | FileMultiEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | KillShellInput
  | NotebookEditInput
  | WebFetchInput
  | WebSearchInput
  | TodoWriteInput
  | ExitPlanModeInput
  | ListMcpResourcesInput
  | ReadMcpResourceInput;

Task

Nome strumento: Task
interface AgentInput {
  /**
   * Una breve descrizione del compito (3-5 parole)
   */
  description: string;
  /**
   * Il compito che l'agente deve eseguire
   */
  prompt: string;
  /**
   * Il tipo di agente specializzato da utilizzare per questo compito
   */
  subagent_type: string;
}
Lancia un nuovo agente per gestire compiti complessi e multi-step in modo autonomo.

Bash

Nome 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;
  /**
   * Imposta a 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.

BashOutput

Nome 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.

Edit

Nome 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 esatte di stringhe nei file.

MultiEdit

Nome strumento: MultiEdit
interface FileMultiEditInput {
  /**
   * Il percorso assoluto del file da modificare
   */
  file_path: string;
  /**
   * Array di operazioni di modifica da eseguire sequenzialmente
   */
  edits: Array<{
    /**
     * Il testo da sostituire
     */
    old_string: string;
    /**
     * Il testo con cui sostituirlo
     */
    new_string: string;
    /**
     * Sostituisci tutte le occorrenze (predefinito false)
     */
    replace_all?: boolean;
  }>;
}
Effettua più modifiche a un singolo file in un’operazione.

Read

Nome 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 file dal filesystem locale, inclusi testo, immagini, PDF e notebook Jupyter.

Write

Nome 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.

Glob

Nome strumento: Glob
interface GlobInput {
  /**
   * Il pattern glob per abbinare i file
   */
  pattern: string;
  /**
   * La directory in cui cercare (predefinito cwd)
   */
  path?: string;
}
Abbinamento veloce di pattern di file che funziona con qualsiasi dimensione di codebase.

Grep

Nome 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 (es. "*.js")
   */
  glob?: string;
  /**
   * Tipo di file da cercare (es. "js", "py", "rust")
   */
  type?: string;
  /**
   * Modalità di output: "content", "files_with_matches", o "count"
   */
  output_mode?: 'content' | 'files_with_matches' | 'count';
  /**
   * Ricerca case insensitive
   */
  '-i'?: boolean;
  /**
   * Mostra numeri di riga (per 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 modalità multiriga
   */
  multiline?: boolean;
}
Potente strumento di ricerca basato su ripgrep con supporto regex.

KillBash

Nome strumento: KillBash
interface KillShellInput {
  /**
   * L'ID della shell in background da terminare
   */
  shell_id: string;
}
Termina una shell bash in background in esecuzione tramite il suo ID.

NotebookEdit

Nome strumento: NotebookEdit
interface NotebookEditInput {
  /**
   * Il percorso assoluto del file notebook Jupyter
   */
  notebook_path: string;
  /**
   * L'ID della cella da modificare
   */
  cell_id?: string;
  /**
   * Il nuovo sorgente per la cella
   */
  new_source: string;
  /**
   * Il tipo della cella (code o markdown)
   */
  cell_type?: 'code' | 'markdown';
  /**
   * Il tipo di modifica (replace, insert, delete)
   */
  edit_mode?: 'replace' | 'insert' | 'delete';
}
Modifica celle nei file notebook Jupyter.

WebFetch

Nome strumento: WebFetch
interface WebFetchInput {
  /**
   * L'URL da cui recuperare il contenuto
   */
  url: string;
  /**
   * Il prompt da eseguire sul contenuto recuperato
   */
  prompt: string;
}
Recupera contenuto da un URL e lo elabora con un modello AI.

WebSearch

Nome strumento: WebSearch
interface WebSearchInput {
  /**
   * La query di ricerca da utilizzare
   */
  query: string;
  /**
   * Includi solo risultati da questi domini
   */
  allowed_domains?: string[];
  /**
   * Non includere mai risultati da questi domini
   */
  blocked_domains?: string[];
}
Cerca nel web e restituisce risultati formattati.

TodoWrite

Nome strumento: TodoWrite
interface TodoWriteInput {
  /**
   * L'elenco todo aggiornato
   */
  todos: Array<{
    /**
     * La descrizione del compito
     */
    content: string;
    /**
     * Lo stato del compito
     */
    status: 'pending' | 'in_progress' | 'completed';
    /**
     * Forma attiva della descrizione del compito
     */
    activeForm: string;
  }>;
}
Crea e gestisce un elenco di compiti strutturato per tracciare il progresso.

ExitPlanMode

Nome strumento: ExitPlanMode
interface ExitPlanModeInput {
  /**
   * Il piano da eseguire dall'utente per approvazione
   */
  plan: string;
}
Esce dalla modalità pianificazione e richiede all’utente di approvare il piano.

ListMcpResources

Nome strumento: ListMcpResources
interface ListMcpResourcesInput {
  /**
   * Nome server opzionale per filtrare le risorse
   */
  server?: string;
}
Elenca le risorse MCP disponibili dai server connessi.

ReadMcpResource

Nome 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.

Tipi di Output Strumento

Documentazione degli schemi di output per tutti gli strumenti integrati di Claude Code. Questi tipi rappresentano i dati di risposta effettivi restituiti da ogni strumento.

ToolOutput

Nota: Questo è un tipo solo per documentazione per chiarezza. Rappresenta l’unione di tutti i tipi di output strumento.
type ToolOutput = 
  | TaskOutput
  | BashOutput
  | BashOutputToolOutput
  | EditOutput
  | MultiEditOutput
  | ReadOutput
  | WriteOutput
  | GlobOutput
  | GrepOutput
  | KillBashOutput
  | NotebookEditOutput
  | WebFetchOutput
  | WebSearchOutput
  | TodoWriteOutput
  | ExitPlanModeOutput
  | ListMcpResourcesOutput
  | ReadMcpResourceOutput;

Task

Nome strumento: Task
interface TaskOutput {
  /**
   * Messaggio di risultato finale dal subagente
   */
  result: string;
  /**
   * Statistiche di utilizzo 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 di esecuzione in millisecondi
   */
  duration_ms?: number;
}
Restituisce il risultato finale dal subagente dopo aver completato il compito delegato.

Bash

Nome strumento: Bash
interface BashOutput {
  /**
   * Output combinato stdout e stderr
   */
  output: string;
  /**
   * Codice di uscita del comando
   */
  exitCode: number;
  /**
   * Se il comando è stato terminato a causa del timeout
   */
  killed?: boolean;
  /**
   * ID shell per processi in background
   */
  shellId?: string;
}
Restituisce l’output del comando con stato di uscita. I comandi in background restituiscono immediatamente con un shellId.

BashOutput

Nome strumento: BashOutput
interface BashOutputToolOutput {
  /**
   * Nuovo output dall'ultimo controllo
   */
  output: string;
  /**
   * Stato corrente della shell
   */
  status: 'running' | 'completed' | 'failed';
  /**
   * Codice di uscita (quando completato)
   */
  exitCode?: number;
}
Restituisce output incrementale dalle shell in background.

Edit

Nome 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 conferma delle modifiche riuscite con conteggio delle sostituzioni.

MultiEdit

Nome strumento: MultiEdit
interface MultiEditOutput {
  /**
   * Messaggio di successo
   */
  message: string;
  /**
   * Numero totale di modifiche applicate
   */
  edits_applied: number;
  /**
   * Percorso del file che è stato modificato
   */
  file_path: string;
}
Restituisce conferma dopo aver applicato tutte le modifiche sequenzialmente.

Read

Nome 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 delle pagine
   */
  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 nel formato appropriato al tipo di file.

Write

Nome 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 conferma dopo aver scritto con successo il file.

Glob

Nome strumento: Glob
interface GlobOutput {
  /**
   * Array di percorsi file corrispondenti
   */
  matches: string[];
  /**
   * Numero di corrispondenze trovate
   */
  count: number;
  /**
   * Directory di ricerca utilizzata
   */
  search_path: string;
}
Restituisce percorsi file che corrispondono al pattern glob, ordinati per tempo di modifica.

Grep

Nome 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 corrispondenze per file
   */
  counts: Array<{
    file: string;
    count: number;
  }>;
  /**
   * Corrispondenze totali in tutti i file
   */
  total: number;
}
Restituisce risultati di ricerca nel formato specificato da output_mode.

KillBash

Nome strumento: KillBash
interface KillBashOutput {
  /**
   * Messaggio di successo
   */
  message: string;
  /**
   * ID della shell terminata
   */
  shell_id: string;
}
Restituisce conferma dopo aver terminato la shell in background.

NotebookEdit

Nome strumento: NotebookEdit
interface NotebookEditOutput {
  /**
   * Messaggio di successo
   */
  message: string;
  /**
   * Tipo di modifica eseguita
   */
  edit_type: 'replaced' | 'inserted' | 'deleted';
  /**
   * ID della cella che è stata interessata
   */
  cell_id?: string;
  /**
   * Celle totali nel notebook dopo la modifica
   */
  total_cells: number;
}
Restituisce conferma dopo aver modificato il notebook Jupyter.

WebFetch

Nome strumento: WebFetch
interface WebFetchOutput {
  /**
   * Risposta del modello AI al prompt
   */
  response: string;
  /**
   * URL che è stato recuperato
   */
  url: string;
  /**
   * URL finale dopo i redirect
   */
  final_url?: string;
  /**
   * Codice di stato HTTP
   */
  status_code?: number;
}
Restituisce l’analisi dell’AI del contenuto web recuperato.

WebSearch

Nome strumento: WebSearch
interface WebSearchOutput {
  /**
   * Risultati di 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 risultati di ricerca formattati dal web.

TodoWrite

Nome strumento: TodoWrite
interface TodoWriteOutput {
  /**
   * Messaggio di successo
   */
  message: string;
  /**
   * Statistiche todo correnti
   */
  stats: {
    total: number;
    pending: number;
    in_progress: number;
    completed: number;
  };
}
Restituisce conferma con statistiche dei compiti correnti.

ExitPlanMode

Nome strumento: ExitPlanMode
interface ExitPlanModeOutput {
  /**
   * Messaggio di conferma
   */
  message: string;
  /**
   * Se l'utente ha approvato il piano
   */
  approved?: boolean;
}
Restituisce conferma dopo essere usciti dalla modalità piano.

ListMcpResources

Nome 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 elenco delle risorse MCP disponibili.

ReadMcpResource

Nome 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.

Tipi di Permesso

PermissionUpdate

Operazioni per aggiornare i 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;
    }

PermissionBehavior

type PermissionBehavior = 'allow' | 'deny' | 'ask';

PermissionUpdateDestination

type PermissionUpdateDestination = 
  | 'userSettings'     // Impostazioni utente globali
  | 'projectSettings'  // Impostazioni progetto per directory
  | 'localSettings'    // Impostazioni locali gitignored
  | 'session'          // Solo sessione corrente

PermissionRuleValue

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

Altri Tipi

ApiKeySource

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

ConfigScope

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

NonNullableUsage

Una versione di Usage con tutti i campi nullable resi non-nullable.
type NonNullableUsage = {
  [K in keyof Usage]: NonNullable<Usage[K]>;
}

Usage

Statistiche di utilizzo 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;
}

CallToolResult

Tipo di risultato strumento MCP (da @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
  content: Array<{
    type: 'text' | 'image' | 'resource';
    // Campi aggiuntivi variano per tipo
  }>;
  isError?: boolean;
}

AbortError

Classe di errore personalizzata per operazioni di abort.
class AbortError extends Error {}

Vedi anche