CI (SIAX Cloud) / integration (push) Skipped
CI (SIAX Cloud) / sonar (push) Skipped
masterplan-lock / check (push) Successful in 5s
Security Scan (SIAX Cloud) / security (push) Successful in 15s
CI (SIAX Cloud) / security (push) Successful in 16s
CI (SIAX Cloud) / sonar (pull_request) Skipped
masterplan-lock / check (pull_request) Successful in 7s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 21s
CI (SIAX Cloud) / security (pull_request) Successful in 25s
CI (SIAX Cloud) / quality (push) Successful in 1m17s
CI (SIAX Cloud) / integration (pull_request) Successful in 54s
CI (SIAX Cloud) / quality (pull_request) Successful in 1m7s
53 lines
2.0 KiB
TypeScript
53 lines
2.0 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { TOOL_CANDIDATES, candidatesForRole } from '../../src/document-workbench/candidate-catalog';
|
|
|
|
describe('candidate catalog', () => {
|
|
it('includes the selected and alternative tools without marking them ready', () => {
|
|
const ids = TOOL_CANDIDATES.map((tool) => tool.id);
|
|
expect(new Set(ids).size).toBe(ids.length);
|
|
expect(ids).toEqual(
|
|
expect.arrayContaining([
|
|
'docling',
|
|
'unstructured',
|
|
'tika',
|
|
'tesseract',
|
|
'paddleocr',
|
|
'duckdb',
|
|
'polars',
|
|
'frictionless',
|
|
'pandera',
|
|
'great-expectations',
|
|
'valentine',
|
|
'rapidfuzz',
|
|
'splink',
|
|
'assistant-ui',
|
|
'temporal',
|
|
'langgraph',
|
|
'openmeter',
|
|
'openrouter',
|
|
]),
|
|
);
|
|
expect(TOOL_CANDIDATES.every((tool) => tool.status === 'qualification_required')).toBe(true);
|
|
});
|
|
it('finds alternatives by role and flags restricted services for extra review', () => {
|
|
expect(candidatesForRole('ocr').map((tool) => tool.id)).toEqual(
|
|
expect.arrayContaining(['tesseract', 'paddleocr', 'ocrmypdf']),
|
|
);
|
|
for (const id of ['pymupdf', 'marker', 'mineru', 'dify', 'n8n', 'open-webui', 'openrouter']) {
|
|
expect(TOOL_CANDIDATES.find((tool) => tool.id === id)?.review).toBe(
|
|
'additional_license_or_service_review',
|
|
);
|
|
}
|
|
});
|
|
it('records bounded-decision, agent and evaluation candidates without authorizing execution', () => {
|
|
expect(candidatesForRole('decision').map((tool) => tool.id)).toContain('jev');
|
|
expect(candidatesForRole('agent').map((tool) => tool.id)).toEqual(
|
|
expect.arrayContaining(['langgraph', 'pydantic-ai', 'microsoft-agent-framework', 'crewai']),
|
|
);
|
|
expect(candidatesForRole('evaluation').map((tool) => tool.id)).toEqual(
|
|
expect.arrayContaining(['promptfoo', 'deepeval', 'ragas', 'langfuse']),
|
|
);
|
|
expect(TOOL_CANDIDATES.every((tool) => tool.status === 'qualification_required')).toBe(true);
|
|
});
|
|
});
|