Spaces:
Sleeping
Sleeping
| 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('<query>', 'The research query to investigate') | |
| .option('-t, --token-budget <number>', '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 <number>', '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(); | |