fix: ensure config.json is copied to production docker image (#43)

* fix: ensure config.json is copied to production docker image

Co-Authored-By: Han Xiao <han.xiao@jina.ai>

* fix: remove unused config parameter in reduce callback

Co-Authored-By: Han Xiao <han.xiao@jina.ai>

* refactor: simplify tools configuration using Object.fromEntries

Co-Authored-By: Han Xiao <han.xiao@jina.ai>

* test: increase timeout for async search test

Co-Authored-By: Han Xiao <han.xiao@jina.ai>

* test: remove setTimeout from agent test

Co-Authored-By: Han Xiao <han.xiao@jina.ai>

* test: remove trivial tests and improve test coverage

Co-Authored-By: Han Xiao <han.xiao@jina.ai>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Han Xiao <han.xiao@jina.ai>
This commit is contained in:
devin-ai-integration[bot]
2025-02-07 14:17:48 +08:00
committed by GitHub
parent 3e60f712d9
commit a4de4cc444
10 changed files with 18 additions and 186 deletions

View File

@@ -1,11 +1,15 @@
import { getResponse } from '../agent';
describe('getResponse', () => {
afterEach(() => {
jest.useRealTimers();
});
it('should handle search action', async () => {
const result = await getResponse('What is TypeScript?', 1000);
const result = await getResponse('What is TypeScript?', 10000);
expect(result.result.action).toBeDefined();
expect(result.context).toBeDefined();
expect(result.context.tokenTracker).toBeDefined();
expect(result.context.actionTracker).toBeDefined();
});
}, 30000);
});

View File

@@ -1,40 +0,0 @@
import { exec } from 'child_process';
import { promisify } from 'util';
const execAsync = promisify(exec);
// Mock environment variables
process.env.GEMINI_API_KEY = 'test-key';
process.env.JINA_API_KEY = 'test-key';
jest.mock('../agent', () => ({
getResponse: jest.fn().mockResolvedValue({
result: {
action: 'answer',
answer: 'Test answer',
references: []
}
})
}));
describe('CLI', () => {
test('shows version', async () => {
const { stdout } = await execAsync('ts-node src/cli.ts --version');
expect(stdout.trim()).toMatch(/\d+\.\d+\.\d+/);
});
test('shows help', async () => {
const { stdout } = await execAsync('ts-node src/cli.ts --help');
expect(stdout).toContain('deepresearch');
expect(stdout).toContain('AI-powered research assistant');
});
test('handles invalid token budget', async () => {
try {
await execAsync('ts-node src/cli.ts -t invalid "test query"');
fail('Should have thrown');
} catch (error) {
expect((error as { stderr: string }).stderr).toContain('Invalid token budget: must be a number');
}
});
});