@ai-code-agents/cli 0.1.0-beta.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts","../src/util/logger.ts","../src/util/commander.ts","../src/commands/code-agent.ts","../src/util/paths.ts","../src/util/output.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { program } from '@commander-js/extra-typings';\nimport dotenv from 'dotenv';\nimport { withOptions, withErrorHandling } from './util/commander';\nimport {\n name as codeAgentName,\n description as codeAgentDescription,\n handler as codeAgentHandler,\n options as codeAgentOptions,\n} from './commands/code-agent';\n\n/**\n * Initializes the application.\n */\nfunction initialize() {\n dotenv.config();\n\n withOptions(program.command(codeAgentName), codeAgentOptions)\n .description(codeAgentDescription)\n .action(withErrorHandling(codeAgentHandler));\n}\n\n/**\n * Runs the application.\n */\nfunction run() {\n program.parse();\n}\n\ninitialize();\nrun();\n","import { styleText } from 'node:util';\n\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n SUCCESS = 2,\n WARN = 3,\n ERROR = 4,\n SILENT = 5,\n}\n\ntype TextStyles = 'bold' | 'cyan' | 'green' | 'red' | 'yellowBright';\n\nconst createStyledText =\n (style: TextStyles) =>\n (text: string): string =>\n styleText(style, text);\n\nconst formatBold = createStyledText('bold');\nconst colorError = createStyledText('red');\nconst colorWarning = createStyledText('yellowBright');\nconst colorSuccess = createStyledText('green');\nconst colorDebug = createStyledText('cyan');\n\nconst formatLogMessage = (text: string, level: LogLevel): string => {\n switch (level) {\n case LogLevel.DEBUG:\n return colorDebug(text);\n case LogLevel.SUCCESS:\n return formatBold(colorSuccess(`✅ ${text}`));\n case LogLevel.WARN:\n return formatBold(colorWarning(`⚠️ ${text}`));\n case LogLevel.ERROR:\n return formatBold(colorError(`❌ ${text}`));\n default:\n return text;\n }\n};\n\nconst DEFAULT_LOG_LEVEL = LogLevel.INFO;\nconst CURRENT_LOG_LEVEL =\n process.env['NODE_ENV'] === 'development' || process.env['DEBUG'] === 'true'\n ? LogLevel.DEBUG\n : process.env['SILENT'] === 'true'\n ? LogLevel.SILENT\n : DEFAULT_LOG_LEVEL;\n\n/**\n * Logger class for logging messages with different severity levels.\n */\nclass Logger {\n /**\n * Logs a debug message.\n *\n * @param text - The message to log.\n */\n debug(text: string): void {\n this.log(text, LogLevel.DEBUG);\n }\n\n /**\n * Logs an info message.\n *\n * @param text - The message to log.\n */\n info(text: string): void {\n this.log(text, LogLevel.INFO);\n }\n\n /**\n * Logs a success message.\n *\n * @param text - The message to log.\n */\n success(text: string): void {\n this.log(text, LogLevel.SUCCESS);\n }\n\n /**\n * Logs a warning message.\n *\n * @param text - The message to log.\n */\n warn(text: string): void {\n this.log(text, LogLevel.WARN);\n }\n\n /**\n * Logs an error message.\n *\n * @param text - The message to log.\n */\n error(text: string): void {\n this.log(text, LogLevel.ERROR);\n }\n\n /**\n * Logs a message with a log level.\n *\n * @param text - The message to log.\n * @param level - The log level. Defaults to LogLevel.INFO.\n */\n private log(text: string, level: LogLevel = LogLevel.INFO): void {\n if (level < CURRENT_LOG_LEVEL) {\n return;\n }\n process.stderr.write(`${formatLogMessage(text, level)}\\n`);\n }\n}\n\n/**\n * Default logger instance.\n */\nexport const logger = new Logger();\n","import type {\n CommandUnknownOpts,\n OptionValues,\n} from '@commander-js/extra-typings';\nimport { logger } from './logger';\n\nexport type HandlerArgs = [...unknown[], OptionValues, CommandUnknownOpts];\n\nexport type Handler = (...handlerArgs: HandlerArgs) => void | Promise<void>;\n\nexport type OptionsInput = Record<string, string | boolean>;\n\nexport const getArgs = (handlerArgs: HandlerArgs): string[] => {\n if (handlerArgs.length <= 2) {\n return [];\n }\n return handlerArgs.slice(0, -2).map(String);\n};\n\nexport const getVariadicArgs = (\n handlerArgs: HandlerArgs,\n index: number,\n): string[] => {\n if (handlerArgs.length <= index) {\n return [];\n }\n return handlerArgs[index] as string[];\n};\n\nexport const getOpt = (handlerArgs: HandlerArgs): OptionsInput => {\n if (handlerArgs.length <= 1) {\n return {};\n }\n return handlerArgs[handlerArgs.length - 2] as OptionsInput;\n};\n\nexport type Option = {\n description: string;\n argname: string;\n positional?: boolean;\n required?: boolean;\n defaults?: string;\n choices?: string[];\n parse?: (value: string) => string;\n variadic?: boolean; // For now, only supported for positional arguments.\n};\n\nexport const withOptions = (\n command: CommandUnknownOpts,\n options: Option[],\n): CommandUnknownOpts => {\n options.forEach(\n ({\n description,\n argname,\n positional,\n required,\n defaults,\n choices,\n parse,\n variadic,\n }) => {\n if (positional) {\n const variadicSuffix = variadic ? '...' : '';\n const argument = command.createArgument(\n required\n ? `<${argname}${variadicSuffix}>`\n : `[${argname}${variadicSuffix}]`,\n description,\n );\n if (defaults) {\n argument.default(defaults);\n }\n if (typeof parse === 'function') {\n argument.argParser(parse);\n }\n if (choices) {\n argument.choices(choices);\n }\n command.addArgument(argument);\n return;\n }\n\n const option = command.createOption(argname, description);\n if (required) {\n option.makeOptionMandatory(true);\n }\n if (defaults) {\n option.default(defaults);\n }\n if (typeof parse === 'function') {\n option.argParser(parse);\n }\n if (choices) {\n option.choices(choices);\n }\n command.addOption(option);\n },\n );\n return command;\n};\n\nexport const withErrorHandling =\n (handler: Handler): Handler =>\n async (...handlerArgs: [...unknown[], OptionValues, CommandUnknownOpts]) => {\n try {\n const result = handler(...handlerArgs);\n if (result instanceof Promise) {\n await result;\n }\n } catch (error) {\n if (error instanceof Error) {\n logger.error(error.message);\n }\n process.exitCode = 1;\n }\n };\n","import {\n createCodeAgent,\n createEnvironment,\n EnvironmentNames,\n EnvironmentToolSafetyLevels,\n type EnvironmentName,\n type EnvironmentToolSafetyLevel,\n} from 'ai-code-agents';\nimport {\n getArgs,\n getOpt,\n type HandlerArgs,\n type OptionsInput,\n} from '../util/commander';\nimport { logger } from '../util/logger';\nimport { normalizeAbsolutePath } from '../util/paths';\nimport { output } from '../util/output';\n\nexport const name = 'code-agent';\nexport const description = 'Runs a code agent to perform a specified task.';\n\nexport const options = [\n {\n argname: 'task',\n description: 'Task for the agent',\n positional: true,\n required: true,\n },\n {\n argname: '-m, --model <model>',\n description: 'Model to use for the agent',\n required: true,\n },\n {\n argname: '-e, --environment <environment>',\n description: 'Environment type to use',\n choices: EnvironmentNames,\n required: true,\n },\n {\n argname: '-d, --directory <directory>',\n description: 'Directory with the project to work on',\n parse: (value: string) => normalizeAbsolutePath(value),\n required: true,\n },\n {\n argname: '-t, --tools <tools>',\n description:\n 'ID of the environment, if relevant (e.g. Docker container ID)',\n choices: EnvironmentToolSafetyLevels,\n default: 'readonly',\n },\n {\n argname: '-i, --environment-id <environment-id>',\n description:\n 'ID of the environment, if relevant (e.g. Docker container ID)',\n },\n {\n argname: '-s, --system <system>',\n description: 'System instruction to guide the agent',\n },\n];\n\ntype CommandConfig = {\n environment: EnvironmentName;\n model: string;\n directory: string;\n tools: EnvironmentToolSafetyLevel;\n environmentId?: string;\n system?: string;\n};\n\nconst parseOptions = (opt: OptionsInput): CommandConfig => {\n const config: CommandConfig = {\n model: opt['model'] ? String(opt['model']) : '',\n environment: opt['environment'] as EnvironmentName,\n directory: opt['directory'] ? String(opt['directory']) : '',\n tools: opt['tools']\n ? (opt['tools'] as EnvironmentToolSafetyLevel)\n : 'readonly',\n };\n if (opt['environment-id']) {\n config.environmentId = String(opt['environment-id']);\n }\n if (opt['system']) {\n config.system = String(opt['system']);\n }\n return config;\n};\n\nexport const handler = async (...handlerArgs: HandlerArgs): Promise<void> => {\n const [task] = getArgs(handlerArgs);\n const { model, environment, directory, tools, environmentId, system } =\n parseOptions(getOpt(handlerArgs));\n\n const modelSuffix = model ? ` (using model ${model})` : '';\n logger.debug(\n `Running task \"${task}\" in ${environment} about code in ${directory}${modelSuffix}...`,\n );\n\n const environmentConfig = createEnvironmentConfig(\n environment,\n directory,\n environmentId,\n );\n\n const agent = createCodeAgent({\n model,\n environment: createEnvironment(environment, environmentConfig),\n environmentToolsDefinition: tools,\n maxSteps: 10,\n logStep: (log: string) => {\n logger.debug('\\n' + log);\n },\n system,\n });\n const result = await agent.generate({ prompt: task });\n const { text } = result;\n\n output(text);\n};\n\nconst createEnvironmentConfig = (\n environment: EnvironmentName,\n directory: string,\n environmentId?: string,\n) => {\n const config = {\n directoryPath: directory,\n };\n if (environment === 'docker' && environmentId) {\n return {\n ...config,\n containerId: environmentId,\n };\n }\n return config;\n};\n","import path from 'node:path';\n\n/**\n * Normalizes the given path to be an absolute path.\n *\n * @param filePath - The path to normalize.\n * @param rootDir - Optional. The root directory to use as the base for the path.\n * @returns The normalized path.\n */\nexport function normalizeAbsolutePath(\n filePath: string,\n rootDir: string | undefined = undefined,\n): string {\n if (!rootDir) {\n rootDir = process.cwd();\n }\n if (path.isAbsolute(filePath)) {\n return filePath;\n }\n return path.join(rootDir, filePath);\n}\n","/**\n * Prints command output.\n *\n * @param text - The text to print.\n */\nexport function output(text: string): void {\n process.stdout.write(`${text}\\n`);\n}\n\n/**\n * Prints command output without \"terminating\" the line.\n *\n * @param text - The text to print.\n */\nexport function outputPartial(text: string): void {\n process.stdout.write(text);\n}\n"],"mappings":"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","names":["options","description","handler","path","dotenv"]}
1
+ {"version":3,"sources":["../src/cli.ts","../src/commands/docker-code-agent.ts","../src/util/create-and-run-code-agent.ts","../src/commands/just-bash-code-agent.ts","../src/util/read-local-directory-files.ts","../src/commands/mock-filesystem-code-agent.ts","../src/commands/node-filesystem-code-agent.ts","../src/commands/unsafe-local-code-agent.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { program } from '@commander-js/extra-typings';\nimport { withOptions, withErrorHandling } from '@felixarntz/cli-utils';\nimport dotenv from 'dotenv';\nimport {\n name as dockerCodeAgentName,\n description as dockerCodeAgentDescription,\n handler as dockerCodeAgentHandler,\n options as dockerCodeAgentOptions,\n} from './commands/docker-code-agent';\nimport {\n name as justBashCodeAgentName,\n description as justBashCodeAgentDescription,\n handler as justBashCodeAgentHandler,\n options as justBashCodeAgentOptions,\n} from './commands/just-bash-code-agent';\nimport {\n name as mockFilesystemCodeAgentName,\n description as mockFilesystemCodeAgentDescription,\n handler as mockFilesystemCodeAgentHandler,\n options as mockFilesystemCodeAgentOptions,\n} from './commands/mock-filesystem-code-agent';\nimport {\n name as nodeFilesystemCodeAgentName,\n description as nodeFilesystemCodeAgentDescription,\n handler as nodeFilesystemCodeAgentHandler,\n options as nodeFilesystemCodeAgentOptions,\n} from './commands/node-filesystem-code-agent';\nimport {\n name as unsafeLocalCodeAgentName,\n description as unsafeLocalCodeAgentDescription,\n handler as unsafeLocalCodeAgentHandler,\n options as unsafeLocalCodeAgentOptions,\n} from './commands/unsafe-local-code-agent';\n\n/**\n * Initializes the application.\n */\nfunction initialize() {\n dotenv.config();\n\n withOptions(program.command(dockerCodeAgentName), dockerCodeAgentOptions)\n .description(dockerCodeAgentDescription)\n .action(withErrorHandling(dockerCodeAgentHandler));\n\n withOptions(program.command(justBashCodeAgentName), justBashCodeAgentOptions)\n .description(justBashCodeAgentDescription)\n .action(withErrorHandling(justBashCodeAgentHandler));\n\n withOptions(\n program.command(mockFilesystemCodeAgentName),\n mockFilesystemCodeAgentOptions,\n )\n .description(mockFilesystemCodeAgentDescription)\n .action(withErrorHandling(mockFilesystemCodeAgentHandler));\n\n withOptions(\n program.command(nodeFilesystemCodeAgentName),\n nodeFilesystemCodeAgentOptions,\n )\n .description(nodeFilesystemCodeAgentDescription)\n .action(withErrorHandling(nodeFilesystemCodeAgentHandler));\n\n withOptions(\n program.command(unsafeLocalCodeAgentName),\n unsafeLocalCodeAgentOptions,\n )\n .description(unsafeLocalCodeAgentDescription)\n .action(withErrorHandling(unsafeLocalCodeAgentHandler));\n}\n\n/**\n * Runs the application.\n */\nfunction run() {\n program.parse();\n}\n\ninitialize();\nrun();\n","import {\n createEnvironment,\n EnvironmentToolSafetyLevels,\n type EnvironmentToolSafetyLevel,\n} from 'ai-code-agents';\nimport {\n getOpt,\n type HandlerArgs,\n type OptionsInput,\n type Option,\n parseFileOptions,\n injectFileOptionsForCommander,\n promptMissingOptions,\n stripOptionFieldsForCommander,\n normalizeAbsolutePath,\n} from '@felixarntz/cli-utils';\nimport { createAndRunCodeAgent } from '../util/create-and-run-code-agent';\n\nexport const name = 'docker-code-agent';\nexport const description =\n 'Runs a code agent in a Docker container to perform a specified task.';\n\nconst actualOptions: Option[] = [\n {\n argname: '-p, --prompt <prompt>',\n description: 'Task prompt for the agent',\n required: true,\n },\n {\n argname: '-m, --model <model>',\n description: 'Model to use for the agent',\n required: true,\n },\n {\n argname: '-d, --directory <directory>',\n description: 'Directory with the project to work on',\n parse: (value: string) => normalizeAbsolutePath(value),\n required: true,\n },\n {\n argname: '-t, --tools <tools>',\n description: 'Tools to allow the agent to use in the environment',\n choices: EnvironmentToolSafetyLevels,\n defaults: 'readonly',\n },\n {\n argname: '-i, --container-id <container-id>',\n description: 'ID of the Docker container',\n required: true,\n },\n {\n argname: '-s, --system <system>',\n description: 'System instruction to guide the agent',\n },\n];\n\nexport const options = injectFileOptionsForCommander(actualOptions, [\n 'prompt',\n 'system',\n]).map((option) => stripOptionFieldsForCommander(option));\n\ntype CommandConfig = {\n prompt: string;\n model: string;\n directory: string;\n tools: EnvironmentToolSafetyLevel;\n containerId: string;\n system?: string;\n};\n\nconst parseOptions = (opt: OptionsInput): CommandConfig => {\n const config: CommandConfig = {\n prompt: String(opt['prompt']),\n model: opt['model'] ? String(opt['model']) : '',\n containerId: String(opt['container-id']),\n directory: opt['directory'] ? String(opt['directory']) : '',\n tools: opt['tools']\n ? (opt['tools'] as EnvironmentToolSafetyLevel)\n : 'readonly',\n };\n if (opt['system']) {\n config.system = String(opt['system']);\n }\n return config;\n};\n\nexport const handler = async (...handlerArgs: HandlerArgs): Promise<void> => {\n const { prompt, model, directory, tools, containerId, system } = parseOptions(\n await promptMissingOptions(\n actualOptions,\n await parseFileOptions(getOpt(handlerArgs), ['prompt', 'system']),\n ),\n );\n\n await createAndRunCodeAgent({\n environment: createEnvironment('docker', {\n directoryPath: directory,\n containerId,\n }),\n environmentToolsDefinition: tools,\n model,\n prompt,\n system,\n directory,\n });\n};\n","import {\n createCodeAgent,\n type Environment,\n type ToolsDefinition,\n} from 'ai-code-agents';\nimport { output, logger } from '@felixarntz/cli-utils';\n\n/**\n * Options for creating and running a code agent.\n */\nexport interface CreateAndRunCodeAgentOptions {\n /**\n * The environment to run the agent in.\n */\n environment: Environment;\n /**\n * Definition of tools to make available to the agent.\n */\n environmentToolsDefinition: ToolsDefinition;\n /**\n * Model identifier to use for the agent.\n */\n model: string;\n /**\n * Prompt/task for the agent to execute.\n */\n prompt: string;\n /**\n * System instruction to guide the agent behavior.\n */\n system?: string;\n /**\n * Maximum number of steps the agent can take.\n */\n maxSteps?: number;\n /**\n * Directory path being worked on.\n */\n directory: string;\n}\n\n/**\n * Creates and runs a code agent with the given options.\n *\n * @param options - The options for creating and running the code agent\n */\nexport const createAndRunCodeAgent = async (\n options: CreateAndRunCodeAgentOptions,\n): Promise<void> => {\n const {\n environment,\n environmentToolsDefinition,\n model,\n prompt,\n system,\n maxSteps = 10,\n directory,\n } = options;\n\n const modelSuffix = model ? ` (using model ${model})` : '';\n logger.debug(\n `Running task prompt in ${environment.name} about code in ${directory}${modelSuffix}...`,\n );\n\n const agent = createCodeAgent({\n model,\n environment,\n environmentToolsDefinition,\n maxSteps,\n instructions: system,\n logStep: (log: string) => {\n logger.debug('\\n' + log);\n },\n });\n\n const result = await agent.generate({ prompt });\n const { text } = result;\n\n output(text);\n};\n","import {\n EnvironmentToolSafetyLevels,\n type EnvironmentToolSafetyLevel,\n} from 'ai-code-agents';\nimport { JustBashEnvironment } from '@ai-code-agents/just-bash';\nimport {\n getOpt,\n type HandlerArgs,\n type OptionsInput,\n type Option,\n parseFileOptions,\n injectFileOptionsForCommander,\n promptMissingOptions,\n stripOptionFieldsForCommander,\n normalizeAbsolutePath,\n} from '@felixarntz/cli-utils';\nimport { createAndRunCodeAgent } from '../util/create-and-run-code-agent';\nimport { readLocalDirectoryFiles } from '../util/read-local-directory-files';\n\nexport const name = 'just-bash-code-agent';\nexport const description =\n 'Runs a code agent using a simulated bash environment to perform a specified task.';\n\nconst actualOptions: Option[] = [\n {\n argname: '-p, --prompt <prompt>',\n description: 'Task prompt for the agent',\n required: true,\n },\n {\n argname: '-m, --model <model>',\n description: 'Model to use for the agent',\n required: true,\n },\n {\n argname: '-d, --directory <directory>',\n description: 'Directory with the project to work on',\n parse: (value: string) => normalizeAbsolutePath(value),\n required: true,\n },\n {\n argname: '-t, --tools <tools>',\n description: 'Tools to allow the agent to use in the environment',\n choices: EnvironmentToolSafetyLevels,\n defaults: 'readonly',\n },\n {\n argname: '-l, --local-directory <local-directory>',\n description:\n 'Local directory to mount into the simulated environment (reads all files excluding gitignored)',\n parse: (value: string) => normalizeAbsolutePath(value),\n },\n {\n argname: '-s, --system <system>',\n description: 'System instruction to guide the agent',\n },\n];\n\nexport const options = injectFileOptionsForCommander(actualOptions, [\n 'prompt',\n 'system',\n]).map((option) => stripOptionFieldsForCommander(option));\n\ntype CommandConfig = {\n prompt: string;\n model: string;\n directory: string;\n tools: EnvironmentToolSafetyLevel;\n localDirectory?: string;\n system?: string;\n};\n\nconst parseOptions = (opt: OptionsInput): CommandConfig => {\n const config: CommandConfig = {\n prompt: String(opt['prompt']),\n model: opt['model'] ? String(opt['model']) : '',\n directory: opt['directory'] ? String(opt['directory']) : '',\n tools: opt['tools']\n ? (opt['tools'] as EnvironmentToolSafetyLevel)\n : 'readonly',\n };\n if (opt['local-directory']) {\n config.localDirectory = String(opt['local-directory']);\n }\n if (opt['system']) {\n config.system = String(opt['system']);\n }\n return config;\n};\n\nexport const handler = async (...handlerArgs: HandlerArgs): Promise<void> => {\n const { prompt, model, directory, tools, localDirectory, system } =\n parseOptions(\n await promptMissingOptions(\n actualOptions,\n await parseFileOptions(getOpt(handlerArgs), ['prompt', 'system']),\n ),\n );\n\n const files = localDirectory\n ? await readLocalDirectoryFiles(localDirectory)\n : undefined;\n\n await createAndRunCodeAgent({\n environment: JustBashEnvironment.create({\n directoryPath: directory,\n bashOptions: files ? { files } : undefined,\n }),\n environmentToolsDefinition: tools,\n model,\n prompt,\n system,\n directory,\n });\n};\n","import path from 'node:path';\nimport {\n UnsafeLocalEnvironment,\n GetProjectFileStructureTool,\n ReadManyFilesTool,\n} from 'ai-code-agents';\n\n/**\n * Reads all files from a local directory, excluding gitignored files.\n *\n * @param directoryPath - The absolute path to the directory to read.\n * @returns A record mapping file paths to their contents.\n */\nexport const readLocalDirectoryFiles = async (\n directoryPath: string,\n): Promise<Record<string, string>> => {\n const env = new UnsafeLocalEnvironment({ directoryPath });\n\n const getProjectFileStructureTool = new GetProjectFileStructureTool(env);\n const readManyFilesTool = new ReadManyFilesTool(env);\n\n const { files } = await getProjectFileStructureTool.execute(\n { excludeGitIgnored: true },\n {} as never,\n );\n\n if (files.length === 0) {\n return {};\n }\n\n const readResult = await readManyFilesTool.execute(\n { paths: files },\n {} as never,\n );\n\n const result: Record<string, string> = {};\n for (const [, fileResult] of Object.entries(readResult)) {\n const relativePath = path.relative(\n directoryPath,\n path.resolve(directoryPath, fileResult.path),\n );\n result[relativePath] = fileResult.content;\n }\n\n return result;\n};\n","import {\n createEnvironment,\n EnvironmentToolSafetyLevels,\n type EnvironmentToolSafetyLevel,\n} from 'ai-code-agents';\nimport {\n getOpt,\n type HandlerArgs,\n type OptionsInput,\n type Option,\n parseFileOptions,\n injectFileOptionsForCommander,\n promptMissingOptions,\n stripOptionFieldsForCommander,\n normalizeAbsolutePath,\n} from '@felixarntz/cli-utils';\nimport { createAndRunCodeAgent } from '../util/create-and-run-code-agent';\n\nexport const name = 'mock-filesystem-code-agent';\nexport const description =\n 'Runs a code agent on a mock filesystem to perform a specified task.';\n\nconst actualOptions: Option[] = [\n {\n argname: '-p, --prompt <prompt>',\n description: 'Task prompt for the agent',\n required: true,\n },\n {\n argname: '-m, --model <model>',\n description: 'Model to use for the agent',\n required: true,\n },\n {\n argname: '-d, --directory <directory>',\n description: 'Directory with the project to work on',\n parse: (value: string) => normalizeAbsolutePath(value),\n required: true,\n },\n {\n argname: '-t, --tools <tools>',\n description: 'Tools to allow the agent to use in the environment',\n choices: EnvironmentToolSafetyLevels,\n defaults: 'readonly',\n },\n {\n argname: '-s, --system <system>',\n description: 'System instruction to guide the agent',\n },\n];\n\nexport const options = injectFileOptionsForCommander(actualOptions, [\n 'prompt',\n 'system',\n]).map((option) => stripOptionFieldsForCommander(option));\n\ntype CommandConfig = {\n prompt: string;\n model: string;\n directory: string;\n tools: EnvironmentToolSafetyLevel;\n system?: string;\n};\n\nconst parseOptions = (opt: OptionsInput): CommandConfig => {\n const config: CommandConfig = {\n prompt: String(opt['prompt']),\n model: opt['model'] ? String(opt['model']) : '',\n directory: opt['directory'] ? String(opt['directory']) : '',\n tools: opt['tools']\n ? (opt['tools'] as EnvironmentToolSafetyLevel)\n : 'readonly',\n };\n if (opt['system']) {\n config.system = String(opt['system']);\n }\n return config;\n};\n\nexport const handler = async (...handlerArgs: HandlerArgs): Promise<void> => {\n const { prompt, model, directory, tools, system } = parseOptions(\n await promptMissingOptions(\n actualOptions,\n await parseFileOptions(getOpt(handlerArgs), ['prompt', 'system']),\n ),\n );\n\n await createAndRunCodeAgent({\n environment: createEnvironment('mock-filesystem', {\n directoryPath: directory,\n }),\n environmentToolsDefinition: tools,\n model,\n prompt,\n system,\n directory,\n });\n};\n","import {\n createEnvironment,\n EnvironmentToolSafetyLevels,\n type EnvironmentToolSafetyLevel,\n} from 'ai-code-agents';\nimport {\n getOpt,\n type HandlerArgs,\n type OptionsInput,\n type Option,\n parseFileOptions,\n injectFileOptionsForCommander,\n promptMissingOptions,\n stripOptionFieldsForCommander,\n normalizeAbsolutePath,\n} from '@felixarntz/cli-utils';\nimport { createAndRunCodeAgent } from '../util/create-and-run-code-agent';\n\nexport const name = 'node-filesystem-code-agent';\nexport const description =\n 'Runs a code agent locally using Node to perform a specified task.';\n\nconst actualOptions: Option[] = [\n {\n argname: '-p, --prompt <prompt>',\n description: 'Task prompt for the agent',\n required: true,\n },\n {\n argname: '-m, --model <model>',\n description: 'Model to use for the agent',\n required: true,\n },\n {\n argname: '-d, --directory <directory>',\n description: 'Directory with the project to work on',\n parse: (value: string) => normalizeAbsolutePath(value),\n required: true,\n },\n {\n argname: '-t, --tools <tools>',\n description: 'Tools to allow the agent to use in the environment',\n choices: EnvironmentToolSafetyLevels,\n defaults: 'readonly',\n },\n {\n argname: '-s, --system <system>',\n description: 'System instruction to guide the agent',\n },\n];\n\nexport const options = injectFileOptionsForCommander(actualOptions, [\n 'prompt',\n 'system',\n]).map((option) => stripOptionFieldsForCommander(option));\n\ntype CommandConfig = {\n prompt: string;\n model: string;\n directory: string;\n tools: EnvironmentToolSafetyLevel;\n system?: string;\n};\n\nconst parseOptions = (opt: OptionsInput): CommandConfig => {\n const config: CommandConfig = {\n prompt: String(opt['prompt']),\n model: opt['model'] ? String(opt['model']) : '',\n directory: opt['directory'] ? String(opt['directory']) : '',\n tools: opt['tools']\n ? (opt['tools'] as EnvironmentToolSafetyLevel)\n : 'readonly',\n };\n if (opt['system']) {\n config.system = String(opt['system']);\n }\n return config;\n};\n\nexport const handler = async (...handlerArgs: HandlerArgs): Promise<void> => {\n const { prompt, model, directory, tools, system } = parseOptions(\n await promptMissingOptions(\n actualOptions,\n await parseFileOptions(getOpt(handlerArgs), ['prompt', 'system']),\n ),\n );\n\n await createAndRunCodeAgent({\n environment: createEnvironment('node-filesystem', {\n directoryPath: directory,\n }),\n environmentToolsDefinition: tools,\n model,\n prompt,\n system,\n directory,\n });\n};\n","import {\n createEnvironment,\n EnvironmentToolSafetyLevels,\n type EnvironmentToolSafetyLevel,\n} from 'ai-code-agents';\nimport {\n getOpt,\n type HandlerArgs,\n type OptionsInput,\n type Option,\n parseFileOptions,\n injectFileOptionsForCommander,\n promptMissingOptions,\n stripOptionFieldsForCommander,\n normalizeAbsolutePath,\n} from '@felixarntz/cli-utils';\nimport { createAndRunCodeAgent } from '../util/create-and-run-code-agent';\n\nexport const name = 'unsafe-local-code-agent';\nexport const description =\n 'Runs a code agent locally to perform a specified task.';\n\nconst actualOptions: Option[] = [\n {\n argname: '-p, --prompt <prompt>',\n description: 'Task prompt for the agent',\n required: true,\n },\n {\n argname: '-m, --model <model>',\n description: 'Model to use for the agent',\n required: true,\n },\n {\n argname: '-d, --directory <directory>',\n description: 'Directory with the project to work on',\n parse: (value: string) => normalizeAbsolutePath(value),\n required: true,\n },\n {\n argname: '-t, --tools <tools>',\n description: 'Tools to allow the agent to use in the environment',\n choices: EnvironmentToolSafetyLevels,\n defaults: 'readonly',\n },\n {\n argname: '-s, --system <system>',\n description: 'System instruction to guide the agent',\n },\n];\n\nexport const options = injectFileOptionsForCommander(actualOptions, [\n 'prompt',\n 'system',\n]).map((option) => stripOptionFieldsForCommander(option));\n\ntype CommandConfig = {\n prompt: string;\n model: string;\n directory: string;\n tools: EnvironmentToolSafetyLevel;\n system?: string;\n};\n\nconst parseOptions = (opt: OptionsInput): CommandConfig => {\n const config: CommandConfig = {\n prompt: String(opt['prompt']),\n model: opt['model'] ? String(opt['model']) : '',\n directory: opt['directory'] ? String(opt['directory']) : '',\n tools: opt['tools']\n ? (opt['tools'] as EnvironmentToolSafetyLevel)\n : 'readonly',\n };\n if (opt['system']) {\n config.system = String(opt['system']);\n }\n return config;\n};\n\nexport const handler = async (...handlerArgs: HandlerArgs): Promise<void> => {\n const { prompt, model, directory, tools, system } = parseOptions(\n await promptMissingOptions(\n actualOptions,\n await parseFileOptions(getOpt(handlerArgs), ['prompt', 'system']),\n ),\n );\n\n await createAndRunCodeAgent({\n environment: createEnvironment('unsafe-local', {\n directoryPath: directory,\n }),\n environmentToolsDefinition: tools,\n model,\n prompt,\n system,\n directory,\n });\n};\n"],"mappings":"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","names":["import_cli_utils","import_ai_code_agents","import_cli_utils","options","import_ai_code_agents","import_cli_utils","import_ai_code_agents","path","name","description","actualOptions","options","parseOptions","handler","import_ai_code_agents","import_cli_utils","name","description","actualOptions","options","parseOptions","handler","import_ai_code_agents","import_cli_utils","name","description","actualOptions","options","parseOptions","handler","import_ai_code_agents","import_cli_utils","name","description","actualOptions","options","parseOptions","handler","dotenv","name","options","description","handler"]}