@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/agent.d.ts +78 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +565 -0
- package/dist/agent.js.map +1 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +513 -0
- package/dist/config.js.map +1 -0
- package/dist/eval.d.ts +18 -0
- package/dist/eval.d.ts.map +1 -0
- package/dist/eval.js +111 -0
- package/dist/eval.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +19 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +198 -0
- package/dist/mcp.js.map +1 -0
- package/dist/results.d.ts +17 -0
- package/dist/results.d.ts.map +1 -0
- package/dist/results.js +111 -0
- package/dist/results.js.map +1 -0
- package/dist/runner.d.ts +66 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +176 -0
- package/dist/runner.js.map +1 -0
- package/dist/trace.d.ts +7 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +11 -0
- package/dist/trace.js.map +1 -0
- package/dist/types.d.ts +268 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +49 -0
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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"}
|
package/dist/trace.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
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
|
+
}
|