import path from 'path';
process.env.RUNBOOK_ROOT = path.resolve('tests/fixtures');
import { loadConfig } from '../../src/adapters/config.mjs';
import { createFsAdapter } from '../../src/adapters/fsio.mjs';
import { createIndexer } from '../../src/services/indexer.mjs';
import { createSearchService } from '../../src/services/searchService.mjs';
import { createChecklistService } from '../../src/services/checklistService.mjs';
import { createCommandExtractService } from '../../src/services/commandExtractService.mjs';
import { createSearchTool } from '../../src/mcp/tools/search.mjs';
import { createReadTool } from '../../src/mcp/tools/read.mjs';
import { createChecklistTool } from '../../src/mcp/tools/checklist.mjs';
import { createCommandsTool } from '../../src/mcp/tools/commands.mjs';
import { describe, test, expect, runTests } from '../unit/core/_harness.mjs';
const config = loadConfig(process.env);
const fsAdapter = createFsAdapter(config.root);
const indexer = createIndexer({ fsAdapter, config, logger:{ log:()=>{} } });
describe('us1:tools-integration', () => {
test('search -> read -> checklist -> commands workflow', async () => {
const index = await indexer.buildIndex();
// Create services
const searchService = createSearchService({ index, config, logger:{ log:()=>{} } });
const checklistService = createChecklistService({ logger:{ log:()=>{} } });
const commandExtractService = createCommandExtractService({ logger:{ log:()=>{} } });
// Create tools
const searchTool = createSearchTool({ searchService, logger:{ log:()=>{} } });
const readTool = createReadTool({ index, fsAdapter, logger:{ log:()=>{} } });
const checklistTool = createChecklistTool({ searchService, checklistService, index, logger:{ log:()=>{} } });
const commandsTool = createCommandsTool({ searchService, commandExtractService, index, logger:{ log:()=>{} } });
// Test search tool
const searchResult = await searchTool.handler({ q: 'restart' });
expect(searchResult.results.length >= 1).toBe(true);
expect(searchResult.results[0].doc_id).toBe('runbook-a.md');
// Test read tool
const readResult = await readTool.handler({ doc_id: 'runbook-a.md' });
expect(readResult.title).toBe('Service A Restart');
expect(typeof readResult.metadata.stale).toBe('boolean');
// Test checklist tool
const checklistResult = await checklistTool.handler({ q: 'restart' });
expect(Array.isArray(checklistResult.checklist)).toBe(true);
// Test commands tool
const commandsResult = await commandsTool.handler({ q: 'restart' });
expect(Array.isArray(commandsResult.safe_commands)).toBe(true);
expect(Array.isArray(commandsResult.risky_commands)).toBe(true);
});
});
await runTests();