import { createProviderToolFactoryWithOutputSchema, lazySchema, zodSchema, } from '@ai-sdk/provider-utils'; import { z } from 'zod/v4'; export const localShellInputSchema = lazySchema(() => zodSchema( z.object({ action: z.object({ type: z.literal('exec'), command: z.array(z.string()), timeoutMs: z.number().optional(), user: z.string().optional(), workingDirectory: z.string().optional(), env: z.record(z.string(), z.string()).optional(), }), }), ), ); export const localShellOutputSchema = lazySchema(() => zodSchema(z.object({ output: z.string() })), ); export const localShell = createProviderToolFactoryWithOutputSchema< { /** * Execute a shell command on the server. */ action: { type: 'exec'; /** * The command to run. */ command: string[]; /** * Optional timeout in milliseconds for the command. */ timeoutMs?: number; /** * Optional user to run the command as. */ user?: string; /** * Optional working directory to run the command in. */ workingDirectory?: string; /** * Environment variables to set for the command. */ env?: Record; }; }, { /** * The output of local shell tool call. */ output: string; }, {} >({ id: 'openai.local_shell', inputSchema: localShellInputSchema, outputSchema: localShellOutputSchema, });