UNPKG

@every-env/cli

Version:

Multi-agent orchestrator for AI-powered development workflows

73 lines 3.37 kB
import chalk from 'chalk'; import { join } from 'path'; import { LiquidEngine } from '../templates/liquid-engine.js'; import { execCommand } from '../utils/exec.js'; import { logger } from '../utils/logger.js'; import { updateLastUsedAgent } from '../utils/command-state.js'; export async function parseWorkTarget(args) { const workTarget = args.join(' '); // If no target provided, we'll pass empty string and let the workflow handle it return workTarget; } export async function renderWorkTemplate(baseDir, workTarget) { const liquidEngine = new LiquidEngine(baseDir); const workTemplatePath = '.claude/commands/workflows/work.md'; const renderedPrompt = await liquidEngine.renderFile(workTemplatePath, { ARGUMENTS: workTarget }); return renderedPrompt; } export async function executeWorkCommand(cli, renderedPrompt, args) { // Build command: cli "prompt" args... const commandArgs = [renderedPrompt, ...args]; // Execute command - this will take over the terminal await execCommand(cli, commandArgs); } export async function runWorkCommand(args, options = {}) { const baseDir = options.baseDir || process.cwd(); const configPath = options.configPath || join(baseDir, '.every-env', 'config.json'); try { // Step 1: Parse work target const workTarget = await parseWorkTarget(args); // Step 2: Load runtime config to get agent configurations const { readRuntimeConfigIfExists } = await import('../utils/runtime-config.js'); const runtimeConfig = await readRuntimeConfigIfExists(configPath); let cli = 'claude'; let configArgs = []; if (options.agentcli) { // Use the specified agent from config const agentConfig = runtimeConfig?.agents?.[options.agentcli]; if (agentConfig && typeof agentConfig.cli === 'string') { cli = agentConfig.cli; configArgs = Array.isArray(agentConfig.args) ? agentConfig.args : []; } else { // Fallback to using the agentcli as the command itself cli = options.agentcli; } // Save the last used agent updateLastUsedAgent('work', options.agentcli); } else { // Use default agent const defaultAgent = runtimeConfig?.defaultAgent || 'claude'; const defaultConfig = runtimeConfig?.agents?.[defaultAgent]; if (defaultConfig && typeof defaultConfig.cli === 'string') { cli = defaultConfig.cli; configArgs = Array.isArray(defaultConfig.args) ? defaultConfig.args : []; } } // Step 3: Render work template const renderedPrompt = await renderWorkTemplate(baseDir, workTarget); console.log(chalk.cyan(`\n🔨 Starting work${workTarget ? ` on: "${workTarget}"` : ''}\n`)); // Step 4: Execute command with pass-through args const allArgs = [...configArgs, ...(options.passThroughArgs || [])]; await executeWorkCommand(cli, renderedPrompt, allArgs); } catch (error) { logger.error('Work command failed:', error); console.error(chalk.red(`\n✖ Error: ${error instanceof Error ? error.message : 'Unknown error'}`)); throw error; } } //# sourceMappingURL=work.js.map