UNPKG

@ai-sdk/anthropic

Version:

The **[Anthropic provider](https://ai-sdk.dev/providers/ai-sdk-providers/anthropic)** for the [AI SDK](https://ai-sdk.dev/docs) contains language model support for the [Anthropic Messages API](https://docs.anthropic.com/claude/reference/messages_post).

282 lines (255 loc) 6.96 kB
import { createProviderToolFactoryWithOutputSchema, lazySchema, zodSchema, } from '@ai-sdk/provider-utils'; import { z } from 'zod/v4'; export const codeExecution_20250825OutputSchema = lazySchema(() => zodSchema( z.discriminatedUnion('type', [ z.object({ type: z.literal('code_execution_result'), stdout: z.string(), stderr: z.string(), return_code: z.number(), content: z .array( z.object({ type: z.literal('code_execution_output'), file_id: z.string(), }), ) .optional() .default([]), }), z.object({ type: z.literal('bash_code_execution_result'), content: z.array( z.object({ type: z.literal('bash_code_execution_output'), file_id: z.string(), }), ), stdout: z.string(), stderr: z.string(), return_code: z.number(), }), z.object({ type: z.literal('bash_code_execution_tool_result_error'), error_code: z.string(), }), z.object({ type: z.literal('text_editor_code_execution_tool_result_error'), error_code: z.string(), }), z.object({ type: z.literal('text_editor_code_execution_view_result'), content: z.string(), file_type: z.string(), num_lines: z.number().nullable(), start_line: z.number().nullable(), total_lines: z.number().nullable(), }), z.object({ type: z.literal('text_editor_code_execution_create_result'), is_file_update: z.boolean(), }), z.object({ type: z.literal('text_editor_code_execution_str_replace_result'), lines: z.array(z.string()).nullable(), new_lines: z.number().nullable(), new_start: z.number().nullable(), old_lines: z.number().nullable(), old_start: z.number().nullable(), }), ]), ), ); export const codeExecution_20250825InputSchema = lazySchema(() => zodSchema( z.discriminatedUnion('type', [ // Programmatic tool calling format (mapped from { code } by AI SDK) z.object({ type: z.literal('programmatic-tool-call'), code: z.string(), }), z.object({ type: z.literal('bash_code_execution'), command: z.string(), }), z.discriminatedUnion('command', [ z.object({ type: z.literal('text_editor_code_execution'), command: z.literal('view'), path: z.string(), }), z.object({ type: z.literal('text_editor_code_execution'), command: z.literal('create'), path: z.string(), file_text: z.string().nullish(), }), z.object({ type: z.literal('text_editor_code_execution'), command: z.literal('str_replace'), path: z.string(), old_str: z.string(), new_str: z.string(), }), ]), ]), ), ); const factory = createProviderToolFactoryWithOutputSchema< | { type: 'programmatic-tool-call'; /** * Programmatic tool calling: Python code to execute when code_execution * is used with allowedCallers to trigger client-executed tools. */ code: string; } | { type: 'bash_code_execution'; /** * Shell command to execute. */ command: string; } | { type: 'text_editor_code_execution'; command: 'view'; /** * The path to the file to view. */ path: string; } | { type: 'text_editor_code_execution'; command: 'create'; /** * The path to the file to edit. */ path: string; /** * The text of the file to edit. */ file_text?: string | null; } | { type: 'text_editor_code_execution'; command: 'str_replace'; /** * The path to the file to edit. */ path: string; /** * The string to replace. */ old_str: string; /** * The new string to replace the old string with. */ new_str: string; }, | { /** * Programmatic tool calling result: returned when code_execution runs code * that calls client-executed tools via allowedCallers. */ type: 'code_execution_result'; /** * Output from successful execution */ stdout: string; /** * Error messages if execution fails */ stderr: string; /** * 0 for success, non-zero for failure */ return_code: number; /** * Output file Id list */ content: Array<{ type: 'code_execution_output'; file_id: string }>; } | { type: 'bash_code_execution_result'; /** * Output file Id list */ content: Array<{ type: 'bash_code_execution_output'; file_id: string; }>; /** * Output from successful execution */ stdout: string; /** * Error messages if execution fails */ stderr: string; /** * 0 for success, non-zero for failure */ return_code: number; } | { type: 'bash_code_execution_tool_result_error'; /** * Available options: invalid_tool_input, unavailable, too_many_requests, * execution_time_exceeded, output_file_too_large. */ error_code: string; } | { type: 'text_editor_code_execution_tool_result_error'; /** * Available options: invalid_tool_input, unavailable, too_many_requests, * execution_time_exceeded, file_not_found. */ error_code: string; } | { type: 'text_editor_code_execution_view_result'; content: string; /** * The type of the file. Available options: text, image, pdf. */ file_type: string; num_lines: number | null; start_line: number | null; total_lines: number | null; } | { type: 'text_editor_code_execution_create_result'; is_file_update: boolean; } | { type: 'text_editor_code_execution_str_replace_result'; lines: string[] | null; new_lines: number | null; new_start: number | null; old_lines: number | null; old_start: number | null; }, { // no arguments } >({ id: 'anthropic.code_execution_20250825', inputSchema: codeExecution_20250825InputSchema, outputSchema: codeExecution_20250825OutputSchema, // Programmatic tool calling: tool results may be deferred to a later turn // when code execution triggers a client-executed tool that needs to be // resolved before the code execution result can be returned. supportsDeferredResults: true, }); export const codeExecution_20250825 = ( args: Parameters<typeof factory>[0] = {}, ) => { return factory(args); };