@measey/mycoder-agent
Version:
Agent module for mycoder - an AI-powered software development assistant
59 lines • 2.18 kB
JavaScript
import { describe, it, expect } from 'vitest';
import { TokenTracker } from '../core/tokens.js';
import { MockLogger } from '../utils/mockLogger.js';
import { AgentTracker } from './agent/AgentTracker.js';
import { getTools } from './getTools.js';
import { SessionTracker } from './session/SessionTracker.js';
import { ShellTracker } from './shell/ShellTracker.js';
// Mock context
export const getMockToolContext = () => ({
logger: new MockLogger(),
tokenTracker: new TokenTracker(),
workingDirectory: '.',
headless: true,
userSession: false,
githubMode: true,
provider: 'anthropic',
model: 'claude-3-7-sonnet-20250219',
maxTokens: 4096,
temperature: 0.7,
agentTracker: new AgentTracker('test'),
shellTracker: new ShellTracker('test'),
browserTracker: new SessionTracker('test'),
});
describe('getTools', () => {
it('should return a successful result with tools', () => {
const tools = getTools();
expect(tools).toBeInstanceOf(Array);
expect(tools.length).toBeGreaterThanOrEqual(5); // At least core tools
});
it('should include core tools', () => {
const tools = getTools();
const toolNames = tools.map((tool) => tool.name);
// Check for essential tools
expect(toolNames.length).greaterThan(0);
});
it('should have unique tool names', () => {
const tools = getTools();
const toolNames = tools.map((tool) => tool.name);
const uniqueNames = new Set(toolNames);
expect(toolNames).toHaveLength(uniqueNames.size);
});
it('should have valid schema for each tool', () => {
const tools = getTools();
for (const tool of tools) {
expect(tool).toEqual(expect.objectContaining({
name: expect.any(String),
description: expect.any(String),
parameters: expect.any(Object),
}));
}
});
it('should have executable functions', () => {
const tools = getTools();
for (const tool of tools) {
expect(tool.execute).toBeTypeOf('function');
}
});
});
//# sourceMappingURL=getTools.test.js.map