DeepResearch / src /cli.ts
zhengr's picture
init
0bcc252
raw
history blame
1.59 kB
#!/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('<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();