@inspectr/mcplab-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/runner.js ADDED
@@ -0,0 +1,176 @@
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import { isAbsolute, join, resolve } from 'node:path';
3
+ import { stringify as stringifyYaml } from 'yaml';
4
+ import { TraceWriter } from './trace.js';
5
+ import { McpClientManager } from './mcp.js';
6
+ import { runAgentScenario } from './agent.js';
7
+ import { evaluateScenario, extractValues } from './eval.js';
8
+ import { aggregateResults, renderSummaryMarkdown } from './results.js';
9
+ export async function runAll(config, options) {
10
+ throwIfAborted(options.signal);
11
+ const emitProgress = async (event) => {
12
+ if (!options.onProgress)
13
+ return;
14
+ await options.onProgress(event);
15
+ };
16
+ const runId = createRunId();
17
+ const runRoot = options.runsDir?.trim() || 'runs';
18
+ const runsBaseDir = isAbsolute(runRoot) ? runRoot : resolve(process.cwd(), runRoot);
19
+ const runDir = join(runsBaseDir, runId);
20
+ mkdirSync(runDir, { recursive: true });
21
+ const tracePath = join(runDir, 'trace.jsonl');
22
+ const resolvedConfigPath = join(runDir, 'resolved-config.yaml');
23
+ writeFileSync(resolvedConfigPath, `${stringifyYaml(config)}\n`, 'utf8');
24
+ const trace = new TraceWriter(tracePath);
25
+ trace.write({
26
+ type: 'trace_meta',
27
+ trace_version: 3,
28
+ run_id: runId,
29
+ ts: new Date().toISOString()
30
+ });
31
+ const totalScenarioRuns = config.scenarios.length * options.runsPerScenario;
32
+ await emitProgress({
33
+ type: 'run_started',
34
+ runId,
35
+ totalScenarioRuns,
36
+ runsPerScenario: options.runsPerScenario
37
+ });
38
+ const mcp = new McpClientManager();
39
+ await emitProgress({
40
+ type: 'mcp_connect_started',
41
+ serverCount: Object.keys(config.servers).length
42
+ });
43
+ await mcp.connectAll(config.servers, options.signal);
44
+ await emitProgress({
45
+ type: 'mcp_connect_finished',
46
+ serverCount: Object.keys(config.servers).length
47
+ });
48
+ const scenarioRuns = [];
49
+ let scenarioRunIndex = 0;
50
+ for (const scenario of config.scenarios) {
51
+ throwIfAborted(options.signal);
52
+ if (!scenario.agent) {
53
+ throw new Error(`Scenario '${scenario.id}' has no execution agent. Provide run agent selection or config run_defaults.selected_agents.`);
54
+ }
55
+ const agent = config.agents[scenario.agent];
56
+ if (!agent) {
57
+ throw new Error(`Agent not found: ${scenario.agent}`);
58
+ }
59
+ const runs = [];
60
+ for (let runIndex = 0; runIndex < options.runsPerScenario; runIndex += 1) {
61
+ throwIfAborted(options.signal);
62
+ scenarioRunIndex += 1;
63
+ await emitProgress({
64
+ type: 'scenario_run_started',
65
+ scenarioId: scenario.id,
66
+ agentName: scenario.agent,
67
+ scenarioRunIndex,
68
+ totalScenarioRuns,
69
+ runIndex,
70
+ runsPerScenario: options.runsPerScenario
71
+ });
72
+ const runResult = await runAgentScenario({
73
+ scenario,
74
+ agent,
75
+ mcp,
76
+ signal: options.signal,
77
+ onProgress: async (event) => {
78
+ await emitProgress({
79
+ type: 'agent_progress',
80
+ scenarioRunIndex,
81
+ totalScenarioRuns,
82
+ event
83
+ });
84
+ }
85
+ });
86
+ const evalResult = evaluateScenario(runResult.finalText, runResult.toolSequence, scenario.eval);
87
+ const extracted = extractValues(runResult.finalText, scenario.extract?.map((rule) => ({ name: rule.name, regex: rule.regex })) ?? []);
88
+ const toolUsage = {};
89
+ for (const tool of runResult.toolSequence) {
90
+ toolUsage[tool] = (toolUsage[tool] ?? 0) + 1;
91
+ }
92
+ const scenarioRun = {
93
+ run_index: runIndex,
94
+ pass: evalResult.pass,
95
+ failures: evalResult.failures,
96
+ tool_calls: runResult.toolSequence,
97
+ tool_call_count: runResult.toolSequence.length,
98
+ tool_sequence: runResult.toolSequence,
99
+ tool_usage: toolUsage,
100
+ tool_durations_ms: runResult.toolDurationsMs,
101
+ final_text: runResult.finalText,
102
+ extracted
103
+ };
104
+ runs.push(scenarioRun);
105
+ const traceRecord = {
106
+ type: 'scenario_run',
107
+ trace_version: 3,
108
+ run_index: runIndex,
109
+ scenario_id: scenario.id,
110
+ agent: scenario.agent,
111
+ provider: runResult.traceProvider,
112
+ model: runResult.traceModel,
113
+ ts_start: runResult.traceStartedAt,
114
+ ts_end: runResult.traceEndedAt,
115
+ pass: evalResult.pass,
116
+ messages: runResult.traceMessages,
117
+ metrics: {
118
+ tool_call_count: runResult.toolSequence.length,
119
+ total_tool_duration_ms: runResult.toolDurationsMs.reduce((sum, ms) => sum + ms, 0)
120
+ }
121
+ };
122
+ trace.write(traceRecord);
123
+ await emitProgress({
124
+ type: 'scenario_run_finished',
125
+ scenarioId: scenario.id,
126
+ agentName: scenario.agent,
127
+ scenarioRunIndex,
128
+ totalScenarioRuns,
129
+ runIndex,
130
+ runsPerScenario: options.runsPerScenario,
131
+ pass: evalResult.pass,
132
+ toolCallCount: runResult.toolSequence.length
133
+ });
134
+ }
135
+ scenarioRuns.push({
136
+ scenario_id: scenario.id,
137
+ scenario_name: scenario.name,
138
+ agent: scenario.agent,
139
+ eval: scenario.eval,
140
+ runs
141
+ });
142
+ }
143
+ const results = aggregateResults({
144
+ runId,
145
+ timestamp: new Date().toISOString(),
146
+ gitCommit: options.gitCommit,
147
+ configHash: options.configHash,
148
+ cliVersion: options.cliVersion,
149
+ scenarioRuns
150
+ });
151
+ const resultsPath = join(runDir, 'results.json');
152
+ writeFileSync(resultsPath, `${JSON.stringify(results, null, 2)}\n`, 'utf8');
153
+ const summaryPath = join(runDir, 'summary.md');
154
+ writeFileSync(summaryPath, renderSummaryMarkdown(results), 'utf8');
155
+ await emitProgress({ type: 'run_finished', runId, totalScenarioRuns });
156
+ return { runDir, results };
157
+ }
158
+ function createRunId() {
159
+ const now = new Date();
160
+ const pad = (value) => String(value).padStart(2, '0');
161
+ return [
162
+ now.getFullYear(),
163
+ pad(now.getMonth() + 1),
164
+ pad(now.getDate()),
165
+ '-',
166
+ pad(now.getHours()),
167
+ pad(now.getMinutes()),
168
+ pad(now.getSeconds())
169
+ ].join('');
170
+ }
171
+ function throwIfAborted(signal) {
172
+ if (signal?.aborted) {
173
+ throw new Error('Run aborted by user');
174
+ }
175
+ }
176
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { PersistedTraceRecord } from './types.js';
2
+ export declare class TraceWriter {
3
+ private readonly path;
4
+ constructor(path: string);
5
+ write(record: PersistedTraceRecord): void;
6
+ }
7
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM;IAEzC,KAAK,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;CAG1C"}
package/dist/trace.js ADDED
@@ -0,0 +1,11 @@
1
+ import { appendFileSync } from 'node:fs';
2
+ export class TraceWriter {
3
+ path;
4
+ constructor(path) {
5
+ this.path = path;
6
+ }
7
+ write(record) {
8
+ appendFileSync(this.path, `${JSON.stringify(record)}\n`, 'utf8');
9
+ }
10
+ }
11
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC,MAAM,OAAO,WAAW;IACO;IAA7B,YAA6B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAE7C,KAAK,CAAC,MAA4B;QAChC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;CACF"}
@@ -0,0 +1,268 @@
1
+ export type TransportType = 'http';
2
+ export interface ServerAuthBearer {
3
+ type: 'bearer';
4
+ env: string;
5
+ }
6
+ export interface ServerAuthOauthClientCredentials {
7
+ type: 'oauth_client_credentials';
8
+ token_url: string;
9
+ client_id_env: string;
10
+ client_secret_env: string;
11
+ scope?: string;
12
+ audience?: string;
13
+ token_params?: Record<string, string>;
14
+ }
15
+ export interface ServerAuthOauthAuthorizationCode {
16
+ type: 'oauth_authorization_code';
17
+ client_id: string;
18
+ client_secret?: string;
19
+ redirect_url: string;
20
+ scope?: string;
21
+ }
22
+ export type ServerAuth = ServerAuthBearer | ServerAuthOauthClientCredentials | ServerAuthOauthAuthorizationCode;
23
+ export interface ServerConfig {
24
+ name?: string;
25
+ transport: TransportType;
26
+ url: string;
27
+ auth?: ServerAuth;
28
+ }
29
+ export interface ServerInlineEntry extends ServerConfig {
30
+ id: string;
31
+ name?: string;
32
+ }
33
+ export interface ServerRefEntry {
34
+ ref: string;
35
+ }
36
+ export type ServerListEntry = ServerInlineEntry | ServerRefEntry;
37
+ export interface AgentConfig {
38
+ name?: string;
39
+ provider: 'openai' | 'anthropic' | 'azure_openai';
40
+ model: string;
41
+ temperature?: number;
42
+ max_tokens?: number;
43
+ system?: string;
44
+ }
45
+ export interface AgentInlineEntry extends AgentConfig {
46
+ id: string;
47
+ name?: string;
48
+ }
49
+ export interface AgentRefEntry {
50
+ ref: string;
51
+ }
52
+ export type AgentListEntry = AgentInlineEntry | AgentRefEntry;
53
+ export interface ToolConstraints {
54
+ required_tools?: string[];
55
+ forbidden_tools?: string[];
56
+ }
57
+ export interface ToolSequenceRules {
58
+ allow?: string[][];
59
+ }
60
+ export interface ResponseAssertionRegex {
61
+ type: 'regex';
62
+ pattern: string;
63
+ }
64
+ export interface ResponseAssertionJsonPath {
65
+ type: 'jsonpath';
66
+ path: string;
67
+ equals?: string | number | boolean;
68
+ }
69
+ export type ResponseAssertion = ResponseAssertionRegex | ResponseAssertionJsonPath;
70
+ export interface EvalRules {
71
+ tool_constraints?: ToolConstraints;
72
+ tool_sequence?: ToolSequenceRules;
73
+ response_assertions?: ResponseAssertion[];
74
+ }
75
+ export interface ExtractRule {
76
+ name: string;
77
+ from: 'final_text';
78
+ regex: string;
79
+ }
80
+ export interface Scenario {
81
+ id: string;
82
+ name?: string;
83
+ servers: string[];
84
+ prompt: string;
85
+ snapshot_eval?: {
86
+ enabled?: boolean;
87
+ baseline_snapshot_id?: string;
88
+ baseline_source_run_id?: string;
89
+ last_updated_at?: string;
90
+ };
91
+ eval?: EvalRules;
92
+ extract?: ExtractRule[];
93
+ }
94
+ export interface ScenarioRefEntry {
95
+ ref: string;
96
+ }
97
+ export type ScenarioInlineEntry = Scenario;
98
+ export type ScenarioListEntry = ScenarioInlineEntry | ScenarioRefEntry;
99
+ export interface SnapshotEvalPolicy {
100
+ enabled: boolean;
101
+ mode: 'warn' | 'fail_on_drift';
102
+ baseline_snapshot_id?: string;
103
+ baseline_source_run_id?: string;
104
+ last_updated_at?: string;
105
+ }
106
+ export interface EvalConfig {
107
+ name?: string;
108
+ servers: Record<string, ServerConfig>;
109
+ agents: Record<string, AgentConfig>;
110
+ scenarios: Scenario[];
111
+ run_defaults?: {
112
+ selected_agents?: string[];
113
+ };
114
+ snapshot_eval?: SnapshotEvalPolicy;
115
+ }
116
+ export interface SourceEvalConfig extends Omit<EvalConfig, 'scenarios' | 'agents' | 'servers'> {
117
+ servers: ServerListEntry[];
118
+ agents: AgentListEntry[];
119
+ scenarios: ScenarioListEntry[];
120
+ }
121
+ export interface ExecutableScenario extends Scenario {
122
+ agent: string;
123
+ scenario_exec_id?: string;
124
+ }
125
+ export interface ExecutableEvalConfig extends Omit<EvalConfig, 'scenarios'> {
126
+ scenarios: ExecutableScenario[];
127
+ }
128
+ export interface ToolDef {
129
+ name: string;
130
+ description?: string;
131
+ inputSchema?: unknown;
132
+ }
133
+ export interface ToolCall {
134
+ id?: string;
135
+ name: string;
136
+ arguments: Record<string, unknown> | unknown;
137
+ server?: string;
138
+ }
139
+ export interface LlmMessage {
140
+ role: 'system' | 'user' | 'assistant' | 'tool';
141
+ content: string;
142
+ tool_call_id?: string;
143
+ name?: string;
144
+ tool_calls?: ToolCall[];
145
+ }
146
+ export interface LlmResponse {
147
+ content?: string;
148
+ tool_calls?: ToolCall[];
149
+ raw?: unknown;
150
+ usage?: {
151
+ input_tokens?: number;
152
+ output_tokens?: number;
153
+ total_tokens?: number;
154
+ };
155
+ }
156
+ export interface TraceMessageUsage {
157
+ input_tokens?: number;
158
+ output_tokens?: number;
159
+ total_tokens?: number;
160
+ }
161
+ export type TraceMessageContentBlock = {
162
+ type: 'text';
163
+ text: string;
164
+ } | {
165
+ type: 'tool_use';
166
+ id: string;
167
+ name: string;
168
+ input: unknown;
169
+ server: string;
170
+ } | {
171
+ type: 'tool_result';
172
+ tool_use_id: string;
173
+ name: string;
174
+ content: Array<{
175
+ type: 'text';
176
+ text: string;
177
+ }>;
178
+ is_error: boolean;
179
+ duration_ms?: number;
180
+ ts_start?: string;
181
+ ts_end?: string;
182
+ server?: string;
183
+ };
184
+ export interface TraceMessage {
185
+ role: 'user' | 'assistant' | 'tool';
186
+ ts?: string;
187
+ usage?: TraceMessageUsage;
188
+ content: TraceMessageContentBlock[];
189
+ }
190
+ export interface ScenarioRunTraceRecord {
191
+ type: 'scenario_run';
192
+ trace_version: 3;
193
+ run_index: number;
194
+ scenario_id: string;
195
+ agent: string;
196
+ provider: string;
197
+ model: string;
198
+ ts_start: string;
199
+ ts_end: string;
200
+ pass: boolean;
201
+ messages: TraceMessage[];
202
+ metrics?: {
203
+ tool_call_count: number;
204
+ total_tool_duration_ms: number;
205
+ };
206
+ }
207
+ export interface TraceFileLegacyMeta {
208
+ type: 'trace_meta';
209
+ trace_version: number;
210
+ run_id: string;
211
+ ts: string;
212
+ }
213
+ export type PersistedTraceRecord = ScenarioRunTraceRecord | TraceFileLegacyMeta | Record<string, unknown>;
214
+ export interface ScenarioRunResult {
215
+ run_index: number;
216
+ pass: boolean;
217
+ failures: string[];
218
+ tool_calls: string[];
219
+ tool_call_count: number;
220
+ tool_sequence: string[];
221
+ tool_usage: Record<string, number>;
222
+ tool_durations_ms: number[];
223
+ final_text: string;
224
+ extracted: Record<string, string | number | boolean | null>;
225
+ }
226
+ export interface ScenarioAggregate {
227
+ scenario_id: string;
228
+ scenario_name?: string;
229
+ agent: string;
230
+ eval?: EvalRules;
231
+ tool_constraints_stats?: {
232
+ required: Record<string, number>;
233
+ forbidden: Record<string, number>;
234
+ };
235
+ runs: ScenarioRunResult[];
236
+ pass_rate: number;
237
+ distinct_sequences: Record<string, number>;
238
+ tool_usage_frequency: Record<string, number>;
239
+ extracted_values: Record<string, Record<string, number>>;
240
+ last_final_answer: string;
241
+ }
242
+ export interface ResultsJson {
243
+ metadata: {
244
+ run_id: string;
245
+ timestamp: string;
246
+ git_commit?: string;
247
+ config_hash: string;
248
+ cli_version: string;
249
+ snapshot_eval?: {
250
+ applied: boolean;
251
+ mode: 'warn' | 'fail_on_drift';
252
+ baseline_snapshot_id: string;
253
+ baseline_source_run_id?: string;
254
+ overall_score: number;
255
+ status: 'Match' | 'Warn' | 'Drift';
256
+ impacted_scenarios: string[];
257
+ };
258
+ };
259
+ summary: {
260
+ total_scenarios: number;
261
+ total_runs: number;
262
+ pass_rate: number;
263
+ avg_tool_calls_per_run: number;
264
+ avg_tool_latency_ms: number | null;
265
+ };
266
+ scenarios: ScenarioAggregate[];
267
+ }
268
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@inspectr/mcplab-core",
3
+ "version": "0.1.0",
4
+ "description": "Core evaluation engine for MCPLab — agent adapters, MCP client, scenario runner, and result types",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/inspectr-hq/mcplab.git"
9
+ },
10
+ "keywords": [
11
+ "mcp",
12
+ "model-context-protocol",
13
+ "llm",
14
+ "evaluation",
15
+ "testing",
16
+ "ai",
17
+ "agents"
18
+ ],
19
+ "engines": {
20
+ "node": ">=20.19.0"
21
+ },
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "type": "module",
26
+ "main": "dist/index.js",
27
+ "types": "dist/index.d.ts",
28
+ "files": [
29
+ "dist"
30
+ ],
31
+ "exports": {
32
+ ".": "./dist/index.js"
33
+ },
34
+ "scripts": {
35
+ "build": "tsc -b",
36
+ "test": "vitest run"
37
+ },
38
+ "devDependencies": {
39
+ "vitest": "^3.2.4"
40
+ },
41
+ "dependencies": {
42
+ "@modelcontextprotocol/sdk": "^1.26.0",
43
+ "@anthropic-ai/sdk": "^0.78.0",
44
+ "jsonpath-plus": "^10.3.0",
45
+ "openai": "^4.104.0",
46
+ "yaml": "^2.8.2",
47
+ "zod": "^3.25.76"
48
+ }
49
+ }