#!/usr/bin/env node import { Command } from 'commander'; import { getResponse } from './agent'; import { version } from '../package.json'; const program = new Command(); program .name('deepresearch') .description('AI-powered research assistant that keeps searching until it finds the answer') .version(version) .argument('', 'The research query to investigate') .option('-t, --token-budget ', 'Maximum token budget', (val) => { const num = parseInt(val); if (isNaN(num)) throw new Error('Invalid token budget: must be a number'); return num; }, 1000000) .option('-m, --max-attempts ', 'Maximum bad attempts before giving up', (val) => { const num = parseInt(val); if (isNaN(num)) throw new Error('Invalid max attempts: must be a number'); return num; }, 3) .option('-v, --verbose', 'Show detailed progress') .action(async (query: string, options: any) => { try { const { result } = await getResponse( query, parseInt(options.tokenBudget), parseInt(options.maxAttempts) ); if (result.action === 'answer') { console.log('\nAnswer:', result.answer); if (result.references?.length) { console.log('\nReferences:'); result.references.forEach(ref => { console.log(`- ${ref.url}`); console.log(` "${ref.exactQuote}"`); }); } } } catch (error) { console.error('Error:', error instanceof Error ? error.message : String(error)); process.exit(1); } }); program.parse();