labgate 0.5.31 → 0.5.33
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/README.md +50 -2
- package/dist/cli.js +533 -0
- package/dist/cli.js.map +1 -1
- package/dist/lib/config.d.ts +11 -0
- package/dist/lib/config.js +45 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/container.d.ts +3 -3
- package/dist/lib/container.js +144 -12
- package/dist/lib/container.js.map +1 -1
- package/dist/lib/display-mcp.d.ts +10 -0
- package/dist/lib/display-mcp.js +160 -0
- package/dist/lib/display-mcp.js.map +1 -0
- package/dist/lib/display-store.d.ts +24 -0
- package/dist/lib/display-store.js +150 -0
- package/dist/lib/display-store.js.map +1 -0
- package/dist/lib/explorer-autopilot.d.ts +16 -0
- package/dist/lib/explorer-autopilot.js +573 -0
- package/dist/lib/explorer-autopilot.js.map +1 -0
- package/dist/lib/explorer-claude.d.ts +16 -0
- package/dist/lib/explorer-claude.js +361 -0
- package/dist/lib/explorer-claude.js.map +1 -0
- package/dist/lib/explorer-compare.d.ts +9 -0
- package/dist/lib/explorer-compare.js +190 -0
- package/dist/lib/explorer-compare.js.map +1 -0
- package/dist/lib/explorer-eval.d.ts +23 -0
- package/dist/lib/explorer-eval.js +161 -0
- package/dist/lib/explorer-eval.js.map +1 -0
- package/dist/lib/explorer-gc.d.ts +11 -0
- package/dist/lib/explorer-gc.js +304 -0
- package/dist/lib/explorer-gc.js.map +1 -0
- package/dist/lib/explorer-git.d.ts +14 -0
- package/dist/lib/explorer-git.js +136 -0
- package/dist/lib/explorer-git.js.map +1 -0
- package/dist/lib/explorer-lock.d.ts +5 -0
- package/dist/lib/explorer-lock.js +100 -0
- package/dist/lib/explorer-lock.js.map +1 -0
- package/dist/lib/explorer-mcp.d.ts +11 -0
- package/dist/lib/explorer-mcp.js +611 -0
- package/dist/lib/explorer-mcp.js.map +1 -0
- package/dist/lib/explorer-retention.d.ts +4 -0
- package/dist/lib/explorer-retention.js +58 -0
- package/dist/lib/explorer-retention.js.map +1 -0
- package/dist/lib/explorer-store.d.ts +77 -0
- package/dist/lib/explorer-store.js +950 -0
- package/dist/lib/explorer-store.js.map +1 -0
- package/dist/lib/explorer-types.d.ts +161 -0
- package/dist/lib/explorer-types.js +3 -0
- package/dist/lib/explorer-types.js.map +1 -0
- package/dist/lib/explorer.d.ts +31 -0
- package/dist/lib/explorer.js +247 -0
- package/dist/lib/explorer.js.map +1 -0
- package/dist/lib/results-store.js +37 -3
- package/dist/lib/results-store.js.map +1 -1
- package/dist/lib/test/integration-harness.js +1 -1
- package/dist/lib/test/integration-harness.js.map +1 -1
- package/dist/lib/ui.html +5115 -2052
- package/dist/lib/ui.js +906 -39
- package/dist/lib/ui.js.map +1 -1
- package/dist/lib/web-terminal.js +4 -3
- package/dist/lib/web-terminal.js.map +1 -1
- package/dist/mcp-bundles/dataset-mcp.bundle.mjs +0 -8
- package/dist/mcp-bundles/display-mcp.bundle.mjs +30209 -0
- package/dist/mcp-bundles/explorer-mcp.bundle.mjs +40036 -0
- package/dist/mcp-bundles/results-mcp.bundle.mjs +30 -4
- package/package.json +3 -2
- package/templates/tsp-lab/API_CONTRACT.md +20 -0
- package/templates/tsp-lab/EVAL.md +20 -0
- package/templates/tsp-lab/PROBLEM.md +18 -0
- package/templates/tsp-lab/data/generate_instances.py +51 -0
- package/templates/tsp-lab/data/instances.jsonl +12 -0
- package/templates/tsp-lab/eval.py +148 -0
- package/templates/tsp-lab/solver.py +88 -0
- package/templates/tsp-lab/stub-patches/enable_two_opt.patch +14 -0
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LabGate Explorer MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Experiment orchestration primitives for Solution Explorer:
|
|
6
|
+
* - experiment lifecycle
|
|
7
|
+
* - git/worktree helpers
|
|
8
|
+
* - eval execution
|
|
9
|
+
* - run/tree/leaderboard queries
|
|
10
|
+
* - manual run step execution
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.main = main;
|
|
14
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
15
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
16
|
+
const zod_1 = require("zod");
|
|
17
|
+
const fs_1 = require("fs");
|
|
18
|
+
const path_1 = require("path");
|
|
19
|
+
const config_js_1 = require("./config.js");
|
|
20
|
+
const explorer_store_js_1 = require("./explorer-store.js");
|
|
21
|
+
const explorer_git_js_1 = require("./explorer-git.js");
|
|
22
|
+
const explorer_eval_js_1 = require("./explorer-eval.js");
|
|
23
|
+
const explorer_js_1 = require("./explorer.js");
|
|
24
|
+
function asJson(payload) {
|
|
25
|
+
return {
|
|
26
|
+
content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function asText(text) {
|
|
30
|
+
return {
|
|
31
|
+
content: [{ type: 'text', text }],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function asError(text) {
|
|
35
|
+
return {
|
|
36
|
+
content: [{ type: 'text', text }],
|
|
37
|
+
isError: true,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function parseDbPathFromArgs(args) {
|
|
41
|
+
let dbPath;
|
|
42
|
+
for (let i = 0; i < args.length; i++) {
|
|
43
|
+
const arg = args[i];
|
|
44
|
+
if (arg === '--db') {
|
|
45
|
+
const next = args[i + 1];
|
|
46
|
+
if (!next)
|
|
47
|
+
throw new Error('Missing value for --db');
|
|
48
|
+
dbPath = next;
|
|
49
|
+
i++;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (arg.startsWith('--db=')) {
|
|
53
|
+
const inline = arg.slice('--db='.length);
|
|
54
|
+
if (!inline)
|
|
55
|
+
throw new Error('Missing value for --db');
|
|
56
|
+
dbPath = inline;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return dbPath;
|
|
60
|
+
}
|
|
61
|
+
function normalizeJsonString(value) {
|
|
62
|
+
try {
|
|
63
|
+
return JSON.stringify(value ?? {});
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return '{}';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function parseObject(value) {
|
|
70
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
71
|
+
return {};
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
const EXPERIMENT_CREATE_INPUT_SCHEMA = {
|
|
75
|
+
name: zod_1.z.string(),
|
|
76
|
+
source_repo_path: zod_1.z.string(),
|
|
77
|
+
eval_command: zod_1.z.string(),
|
|
78
|
+
base_ref: zod_1.z.string().optional().default('HEAD'),
|
|
79
|
+
eval_timeout_sec: zod_1.z.number().int().min(5).max(86400).optional().default(120),
|
|
80
|
+
policy: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
|
|
81
|
+
constraints: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
|
|
82
|
+
prompt_preamble: zod_1.z.string().optional().default(''),
|
|
83
|
+
};
|
|
84
|
+
function createExperimentFromInput(input, store) {
|
|
85
|
+
return (0, explorer_js_1.createExplorerExperiment)({
|
|
86
|
+
name: input.name,
|
|
87
|
+
source_repo_path: input.source_repo_path,
|
|
88
|
+
eval_command: input.eval_command,
|
|
89
|
+
base_ref: input.base_ref,
|
|
90
|
+
eval_timeout_sec: input.eval_timeout_sec,
|
|
91
|
+
policy: parseObject(input.policy),
|
|
92
|
+
constraints: parseObject(input.constraints),
|
|
93
|
+
prompt_preamble: input.prompt_preamble,
|
|
94
|
+
}, store);
|
|
95
|
+
}
|
|
96
|
+
function runExperimentBaselineInit(experimentId, store) {
|
|
97
|
+
const experiment = store.getExperiment(experimentId);
|
|
98
|
+
if (!experiment) {
|
|
99
|
+
throw new Error(`Experiment not found: ${experimentId}`);
|
|
100
|
+
}
|
|
101
|
+
const artifactDir = (0, config_js_1.getExplorerArtifactDir)(experiment.id, 'baseline');
|
|
102
|
+
const baseline = (0, explorer_eval_js_1.runEvaluation)({
|
|
103
|
+
worktree_path: experiment.repo_path,
|
|
104
|
+
eval_command: experiment.eval_command,
|
|
105
|
+
timeout_sec: experiment.eval_timeout_sec,
|
|
106
|
+
artifact_dir: artifactDir,
|
|
107
|
+
});
|
|
108
|
+
const evalPayload = {
|
|
109
|
+
status: baseline.status,
|
|
110
|
+
score: baseline.score ?? null,
|
|
111
|
+
metrics: baseline.metrics || {},
|
|
112
|
+
eval_command: baseline.eval_command,
|
|
113
|
+
started_at: baseline.started_at,
|
|
114
|
+
finished_at: baseline.finished_at,
|
|
115
|
+
runtime_ms: baseline.runtime_ms,
|
|
116
|
+
exit_code: baseline.exit_code,
|
|
117
|
+
signal: baseline.signal,
|
|
118
|
+
stdout_path: baseline.stdout_path,
|
|
119
|
+
stderr_path: baseline.stderr_path,
|
|
120
|
+
error: baseline.error || null,
|
|
121
|
+
};
|
|
122
|
+
(0, fs_1.mkdirSync)(artifactDir, { recursive: true, mode: 0o700 });
|
|
123
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(artifactDir, 'eval.json'), JSON.stringify(evalPayload, null, 2) + '\n', 'utf-8');
|
|
124
|
+
store.createEvent(experiment.id, 'note', {
|
|
125
|
+
message: 'experiment initialized with baseline evaluation',
|
|
126
|
+
status: baseline.status,
|
|
127
|
+
score: baseline.score ?? null,
|
|
128
|
+
artifact_dir: artifactDir,
|
|
129
|
+
error: baseline.error || null,
|
|
130
|
+
});
|
|
131
|
+
return {
|
|
132
|
+
experiment,
|
|
133
|
+
baseline: evalPayload,
|
|
134
|
+
artifact_dir: artifactDir,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
async function main(args = process.argv.slice(2)) {
|
|
138
|
+
const dbPath = parseDbPathFromArgs(args) || process.env.LABGATE_EXPLORER_DB;
|
|
139
|
+
const store = dbPath ? new explorer_store_js_1.ExplorerStore(dbPath) : new explorer_store_js_1.ExplorerStore();
|
|
140
|
+
const server = new mcp_js_1.McpServer({
|
|
141
|
+
name: 'labgate-explorer',
|
|
142
|
+
version: '1.0.0',
|
|
143
|
+
}, {
|
|
144
|
+
capabilities: {
|
|
145
|
+
tools: {},
|
|
146
|
+
},
|
|
147
|
+
instructions: 'LabGate Solution Explorer orchestration tools. Use these to create experiments, run ticks, and query run trees/leaderboards.',
|
|
148
|
+
});
|
|
149
|
+
server.registerTool('experiment_create', {
|
|
150
|
+
title: 'Create Experiment',
|
|
151
|
+
description: 'Create a new Solution Explorer experiment from a source repository.',
|
|
152
|
+
inputSchema: EXPERIMENT_CREATE_INPUT_SCHEMA,
|
|
153
|
+
}, async (input) => {
|
|
154
|
+
try {
|
|
155
|
+
const created = createExperimentFromInput(input, store);
|
|
156
|
+
return asJson(created);
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
return asError(`Failed to create experiment: ${err?.message ?? String(err)}`);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
server.registerTool('experiment_register', {
|
|
163
|
+
title: 'Register Experiment',
|
|
164
|
+
description: 'Alias for experiment_create. Registers optimization objective/eval and prepares isolated repo clone.',
|
|
165
|
+
inputSchema: EXPERIMENT_CREATE_INPUT_SCHEMA,
|
|
166
|
+
}, async (input) => {
|
|
167
|
+
try {
|
|
168
|
+
const created = createExperimentFromInput(input, store);
|
|
169
|
+
return asJson(created);
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
return asError(`Failed to register experiment: ${err?.message ?? String(err)}`);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
server.registerTool('experiment_init', {
|
|
176
|
+
title: 'Initialize Experiment',
|
|
177
|
+
description: 'Initialize experiment runtime state and optionally run baseline evaluation artifact generation.',
|
|
178
|
+
inputSchema: {
|
|
179
|
+
experiment_id: zod_1.z.string(),
|
|
180
|
+
run_baseline_eval: zod_1.z.boolean().optional().default(true),
|
|
181
|
+
},
|
|
182
|
+
}, async ({ experiment_id, run_baseline_eval }) => {
|
|
183
|
+
try {
|
|
184
|
+
const experiment = store.getExperiment(experiment_id);
|
|
185
|
+
if (!experiment)
|
|
186
|
+
return asError(`Experiment not found: ${experiment_id}`);
|
|
187
|
+
const shouldRunBaseline = run_baseline_eval !== false;
|
|
188
|
+
const init = shouldRunBaseline
|
|
189
|
+
? runExperimentBaselineInit(experiment_id, store)
|
|
190
|
+
: { experiment, baseline: null, artifact_dir: (0, config_js_1.getExplorerArtifactDir)(experiment_id, 'baseline') };
|
|
191
|
+
const overview = (0, explorer_js_1.getExperimentOverview)(experiment_id, store);
|
|
192
|
+
return asJson({
|
|
193
|
+
initialized: true,
|
|
194
|
+
experiment: init.experiment,
|
|
195
|
+
baseline: init.baseline,
|
|
196
|
+
artifact_dir: init.artifact_dir,
|
|
197
|
+
overview,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
catch (err) {
|
|
201
|
+
return asError(`Failed to initialize experiment: ${err?.message ?? String(err)}`);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
server.registerTool('experiment_get', {
|
|
205
|
+
title: 'Get Experiment',
|
|
206
|
+
description: 'Fetch experiment metadata by id.',
|
|
207
|
+
inputSchema: {
|
|
208
|
+
experiment_id: zod_1.z.string(),
|
|
209
|
+
},
|
|
210
|
+
}, async ({ experiment_id }) => {
|
|
211
|
+
const experiment = store.getExperiment(experiment_id);
|
|
212
|
+
if (!experiment)
|
|
213
|
+
return asError(`Experiment not found: ${experiment_id}`);
|
|
214
|
+
return asJson(experiment);
|
|
215
|
+
});
|
|
216
|
+
server.registerTool('experiment_get_overview', {
|
|
217
|
+
title: 'Get Experiment Overview',
|
|
218
|
+
description: 'Get one aggregated experiment payload for UI: status, counts, best/latest run, and active-run count.',
|
|
219
|
+
inputSchema: {
|
|
220
|
+
experiment_id: zod_1.z.string(),
|
|
221
|
+
},
|
|
222
|
+
}, async ({ experiment_id }) => {
|
|
223
|
+
const overview = (0, explorer_js_1.getExperimentOverview)(experiment_id, store);
|
|
224
|
+
if (!overview)
|
|
225
|
+
return asError(`Experiment not found: ${experiment_id}`);
|
|
226
|
+
return asJson(overview);
|
|
227
|
+
});
|
|
228
|
+
server.registerTool('experiment_set_retention', {
|
|
229
|
+
title: 'Set Retention Policy',
|
|
230
|
+
description: 'Update experiment retention policy knobs used by explore gc.',
|
|
231
|
+
inputSchema: {
|
|
232
|
+
experiment_id: zod_1.z.string(),
|
|
233
|
+
keep_worktrees: zod_1.z.boolean().optional(),
|
|
234
|
+
artifacts: zod_1.z.enum(['all', 'minimal', 'none']).optional(),
|
|
235
|
+
keep_last_n: zod_1.z.number().int().min(0).optional(),
|
|
236
|
+
keep_best: zod_1.z.boolean().optional(),
|
|
237
|
+
keep_failed_last_n: zod_1.z.number().int().min(0).optional(),
|
|
238
|
+
prune_artifacts_after_days: zod_1.z.number().int().min(1).optional(),
|
|
239
|
+
max_delete_runs: zod_1.z.number().int().min(1).optional(),
|
|
240
|
+
},
|
|
241
|
+
}, async (input) => {
|
|
242
|
+
const patch = {
|
|
243
|
+
...(input.keep_worktrees !== undefined ? { keep_worktrees: input.keep_worktrees } : {}),
|
|
244
|
+
...(input.artifacts !== undefined ? { artifacts: input.artifacts } : {}),
|
|
245
|
+
...(input.keep_last_n !== undefined ? { keep_last_n: input.keep_last_n } : {}),
|
|
246
|
+
...(input.keep_best !== undefined ? { keep_best: input.keep_best } : {}),
|
|
247
|
+
...(input.keep_failed_last_n !== undefined ? { keep_failed_last_n: input.keep_failed_last_n } : {}),
|
|
248
|
+
...(input.prune_artifacts_after_days !== undefined ? { prune_artifacts_after_days: input.prune_artifacts_after_days } : {}),
|
|
249
|
+
...(input.max_delete_runs !== undefined ? { max_delete_runs: input.max_delete_runs } : {}),
|
|
250
|
+
};
|
|
251
|
+
const ok = (0, explorer_js_1.setExperimentRetentionPolicy)(input.experiment_id, patch, store);
|
|
252
|
+
if (!ok)
|
|
253
|
+
return asError(`Experiment not found: ${input.experiment_id}`);
|
|
254
|
+
const overview = (0, explorer_js_1.getExperimentOverview)(input.experiment_id, store);
|
|
255
|
+
return asJson(overview?.retention_policy || {});
|
|
256
|
+
});
|
|
257
|
+
server.registerTool('experiment_pause', {
|
|
258
|
+
title: 'Pause Experiment',
|
|
259
|
+
description: 'Set experiment status to paused.',
|
|
260
|
+
inputSchema: { experiment_id: zod_1.z.string() },
|
|
261
|
+
}, async ({ experiment_id }) => {
|
|
262
|
+
const ok = (0, explorer_js_1.setExperimentStatus)(experiment_id, 'paused', store);
|
|
263
|
+
if (!ok)
|
|
264
|
+
return asError(`Experiment not found: ${experiment_id}`);
|
|
265
|
+
return asText(`Experiment ${experiment_id} paused.`);
|
|
266
|
+
});
|
|
267
|
+
server.registerTool('experiment_resume', {
|
|
268
|
+
title: 'Resume Experiment',
|
|
269
|
+
description: 'Set experiment status to active.',
|
|
270
|
+
inputSchema: { experiment_id: zod_1.z.string() },
|
|
271
|
+
}, async ({ experiment_id }) => {
|
|
272
|
+
const ok = (0, explorer_js_1.setExperimentStatus)(experiment_id, 'active', store);
|
|
273
|
+
if (!ok)
|
|
274
|
+
return asError(`Experiment not found: ${experiment_id}`);
|
|
275
|
+
return asText(`Experiment ${experiment_id} resumed.`);
|
|
276
|
+
});
|
|
277
|
+
server.registerTool('git_get_base_ref', {
|
|
278
|
+
title: 'Resolve Base Ref',
|
|
279
|
+
description: 'Resolve the experiment base ref to an immutable commit SHA.',
|
|
280
|
+
inputSchema: {
|
|
281
|
+
experiment_id: zod_1.z.string(),
|
|
282
|
+
},
|
|
283
|
+
}, async ({ experiment_id }) => {
|
|
284
|
+
try {
|
|
285
|
+
const experiment = store.getExperiment(experiment_id);
|
|
286
|
+
if (!experiment)
|
|
287
|
+
return asError(`Experiment not found: ${experiment_id}`);
|
|
288
|
+
const sha = (0, explorer_git_js_1.resolveGitSha)(experiment.repo_path, experiment.base_ref);
|
|
289
|
+
return asJson({ sha });
|
|
290
|
+
}
|
|
291
|
+
catch (err) {
|
|
292
|
+
return asError(err?.message || String(err));
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
server.registerTool('git_create_run_workspace', {
|
|
296
|
+
title: 'Create Run Workspace',
|
|
297
|
+
description: 'Create a git worktree and branch for a run.',
|
|
298
|
+
inputSchema: {
|
|
299
|
+
experiment_id: zod_1.z.string(),
|
|
300
|
+
parent_sha: zod_1.z.string(),
|
|
301
|
+
run_id: zod_1.z.string(),
|
|
302
|
+
},
|
|
303
|
+
}, async ({ experiment_id, parent_sha, run_id }) => {
|
|
304
|
+
try {
|
|
305
|
+
const experiment = store.getExperiment(experiment_id);
|
|
306
|
+
if (!experiment)
|
|
307
|
+
return asError(`Experiment not found: ${experiment_id}`);
|
|
308
|
+
const { getExplorerWorktreesDir } = await import('./config.js');
|
|
309
|
+
const worktreePath = (0, path_1.join)(getExplorerWorktreesDir(experiment_id), run_id);
|
|
310
|
+
const workspace = (0, explorer_git_js_1.createRunWorkspace)(experiment.repo_path, worktreePath, parent_sha, experiment_id, run_id);
|
|
311
|
+
return asJson(workspace);
|
|
312
|
+
}
|
|
313
|
+
catch (err) {
|
|
314
|
+
return asError(err?.message || String(err));
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
server.registerTool('git_commit_all', {
|
|
318
|
+
title: 'Commit All',
|
|
319
|
+
description: 'Commit all staged/unstaged changes in a run worktree.',
|
|
320
|
+
inputSchema: {
|
|
321
|
+
worktree_path: zod_1.z.string(),
|
|
322
|
+
message: zod_1.z.string(),
|
|
323
|
+
},
|
|
324
|
+
}, async ({ worktree_path, message }) => {
|
|
325
|
+
try {
|
|
326
|
+
const commitSha = (0, explorer_git_js_1.commitAll)(worktree_path, message);
|
|
327
|
+
return asJson({ commit_sha: commitSha });
|
|
328
|
+
}
|
|
329
|
+
catch (err) {
|
|
330
|
+
return asError(err?.message || String(err));
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
server.registerTool('git_get_diff', {
|
|
334
|
+
title: 'Get Diff',
|
|
335
|
+
description: 'Get patch text between two commits.',
|
|
336
|
+
inputSchema: {
|
|
337
|
+
experiment_id: zod_1.z.string(),
|
|
338
|
+
parent_sha: zod_1.z.string(),
|
|
339
|
+
commit_sha: zod_1.z.string(),
|
|
340
|
+
},
|
|
341
|
+
}, async ({ experiment_id, parent_sha, commit_sha }) => {
|
|
342
|
+
try {
|
|
343
|
+
const experiment = store.getExperiment(experiment_id);
|
|
344
|
+
if (!experiment)
|
|
345
|
+
return asError(`Experiment not found: ${experiment_id}`);
|
|
346
|
+
const patchText = (0, explorer_git_js_1.getDiff)(experiment.repo_path, parent_sha, commit_sha);
|
|
347
|
+
return asJson({ patch_text: patchText });
|
|
348
|
+
}
|
|
349
|
+
catch (err) {
|
|
350
|
+
return asError(err?.message || String(err));
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
server.registerTool('git_cleanup_workspace', {
|
|
354
|
+
title: 'Cleanup Workspace',
|
|
355
|
+
description: 'Remove a git worktree and optionally delete its branch.',
|
|
356
|
+
inputSchema: {
|
|
357
|
+
experiment_id: zod_1.z.string(),
|
|
358
|
+
worktree_path: zod_1.z.string(),
|
|
359
|
+
branch_name: zod_1.z.string().optional(),
|
|
360
|
+
},
|
|
361
|
+
}, async ({ experiment_id, worktree_path, branch_name }) => {
|
|
362
|
+
try {
|
|
363
|
+
const experiment = store.getExperiment(experiment_id);
|
|
364
|
+
if (!experiment)
|
|
365
|
+
return asError(`Experiment not found: ${experiment_id}`);
|
|
366
|
+
(0, explorer_git_js_1.cleanupWorkspace)(experiment.repo_path, worktree_path, branch_name || undefined);
|
|
367
|
+
return asText('Workspace cleaned up.');
|
|
368
|
+
}
|
|
369
|
+
catch (err) {
|
|
370
|
+
return asError(err?.message || String(err));
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
server.registerTool('eval_run', {
|
|
374
|
+
title: 'Run Evaluation',
|
|
375
|
+
description: 'Run experiment evaluation command in a worktree and parse score JSON.',
|
|
376
|
+
inputSchema: {
|
|
377
|
+
worktree_path: zod_1.z.string(),
|
|
378
|
+
eval_command: zod_1.z.string(),
|
|
379
|
+
timeout_sec: zod_1.z.number().int().min(1).max(86400),
|
|
380
|
+
artifact_dir: zod_1.z.string(),
|
|
381
|
+
},
|
|
382
|
+
}, async ({ worktree_path, eval_command, timeout_sec, artifact_dir }) => {
|
|
383
|
+
const result = (0, explorer_eval_js_1.runEvaluation)({
|
|
384
|
+
worktree_path,
|
|
385
|
+
eval_command,
|
|
386
|
+
timeout_sec,
|
|
387
|
+
artifact_dir,
|
|
388
|
+
});
|
|
389
|
+
return asJson(result);
|
|
390
|
+
});
|
|
391
|
+
server.registerTool('run_record_start', {
|
|
392
|
+
title: 'Record Run Start',
|
|
393
|
+
description: 'Set run state to running and stamp start timestamp.',
|
|
394
|
+
inputSchema: {
|
|
395
|
+
run_id: zod_1.z.string(),
|
|
396
|
+
},
|
|
397
|
+
}, async ({ run_id }) => {
|
|
398
|
+
const ok = store.markRunStarted(run_id);
|
|
399
|
+
if (!ok)
|
|
400
|
+
return asError(`Run not found: ${run_id}`);
|
|
401
|
+
return asText(`Run ${run_id} started.`);
|
|
402
|
+
});
|
|
403
|
+
server.registerTool('run_record_commit', {
|
|
404
|
+
title: 'Record Run Commit',
|
|
405
|
+
description: 'Persist commit SHA and move run state to commit_ok.',
|
|
406
|
+
inputSchema: {
|
|
407
|
+
run_id: zod_1.z.string(),
|
|
408
|
+
commit_sha: zod_1.z.string(),
|
|
409
|
+
},
|
|
410
|
+
}, async ({ run_id, commit_sha }) => {
|
|
411
|
+
const ok = store.recordRunCommit(run_id, commit_sha);
|
|
412
|
+
if (!ok)
|
|
413
|
+
return asError(`Run not found: ${run_id}`);
|
|
414
|
+
return asText(`Run ${run_id} commit recorded.`);
|
|
415
|
+
});
|
|
416
|
+
server.registerTool('run_record_result', {
|
|
417
|
+
title: 'Record Run Result',
|
|
418
|
+
description: 'Persist terminal run status, score, metrics, and summary.',
|
|
419
|
+
inputSchema: {
|
|
420
|
+
run_id: zod_1.z.string(),
|
|
421
|
+
status: zod_1.z.enum(['eval_ok', 'failed_build', 'failed_eval', 'timeout', 'invalid_output']),
|
|
422
|
+
score: zod_1.z.number().optional(),
|
|
423
|
+
metrics: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
|
|
424
|
+
summary_md: zod_1.z.string().optional().default(''),
|
|
425
|
+
},
|
|
426
|
+
}, async ({ run_id, status, score, metrics, summary_md }) => {
|
|
427
|
+
const ok = store.recordRunResult(run_id, {
|
|
428
|
+
status,
|
|
429
|
+
score: Number.isFinite(score) ? Number(score) : null,
|
|
430
|
+
metrics_json: normalizeJsonString(metrics || {}),
|
|
431
|
+
summary_md,
|
|
432
|
+
});
|
|
433
|
+
if (!ok)
|
|
434
|
+
return asError(`Run not found: ${run_id}`);
|
|
435
|
+
return asText(`Run ${run_id} result recorded.`);
|
|
436
|
+
});
|
|
437
|
+
server.registerTool('run_get', {
|
|
438
|
+
title: 'Get Run',
|
|
439
|
+
description: 'Fetch run details by id.',
|
|
440
|
+
inputSchema: {
|
|
441
|
+
run_id: zod_1.z.string(),
|
|
442
|
+
},
|
|
443
|
+
}, async ({ run_id }) => {
|
|
444
|
+
const run = store.getRun(run_id);
|
|
445
|
+
if (!run)
|
|
446
|
+
return asError(`Run not found: ${run_id}`);
|
|
447
|
+
return asJson(run);
|
|
448
|
+
});
|
|
449
|
+
server.registerTool('run_get_artifacts', {
|
|
450
|
+
title: 'Get Run Artifacts',
|
|
451
|
+
description: 'Get canonical artifact paths for a run.',
|
|
452
|
+
inputSchema: {
|
|
453
|
+
run_id: zod_1.z.string(),
|
|
454
|
+
},
|
|
455
|
+
}, async ({ run_id }) => {
|
|
456
|
+
const artifacts = (0, explorer_js_1.getRunArtifacts)(run_id, store);
|
|
457
|
+
if (!artifacts)
|
|
458
|
+
return asError(`Run not found: ${run_id}`);
|
|
459
|
+
return asJson(artifacts);
|
|
460
|
+
});
|
|
461
|
+
server.registerTool('run_get_details', {
|
|
462
|
+
title: 'Get Run Details',
|
|
463
|
+
description: 'Get run + experiment metadata and artifact paths in one response.',
|
|
464
|
+
inputSchema: {
|
|
465
|
+
run_id: zod_1.z.string(),
|
|
466
|
+
},
|
|
467
|
+
}, async ({ run_id }) => {
|
|
468
|
+
const details = (0, explorer_js_1.getRunDetails)(run_id, store);
|
|
469
|
+
if (!details)
|
|
470
|
+
return asError(`Run not found: ${run_id}`);
|
|
471
|
+
return asJson(details);
|
|
472
|
+
});
|
|
473
|
+
server.registerTool('run_list', {
|
|
474
|
+
title: 'List Runs',
|
|
475
|
+
description: 'List runs for an experiment.',
|
|
476
|
+
inputSchema: {
|
|
477
|
+
experiment_id: zod_1.z.string(),
|
|
478
|
+
limit: zod_1.z.number().int().min(1).max(1000).optional().default(50),
|
|
479
|
+
offset: zod_1.z.number().int().min(0).optional().default(0),
|
|
480
|
+
},
|
|
481
|
+
}, async ({ experiment_id, limit, offset }) => {
|
|
482
|
+
const runs = store.listRuns(experiment_id, { limit, offset });
|
|
483
|
+
return asJson({
|
|
484
|
+
total_estimate: store.getRunCount(experiment_id),
|
|
485
|
+
returned: runs.length,
|
|
486
|
+
runs,
|
|
487
|
+
});
|
|
488
|
+
});
|
|
489
|
+
server.registerTool('tree_get', {
|
|
490
|
+
title: 'Get Run Tree',
|
|
491
|
+
description: 'Return run tree for an experiment in best_path or full mode.',
|
|
492
|
+
inputSchema: {
|
|
493
|
+
experiment_id: zod_1.z.string(),
|
|
494
|
+
mode: zod_1.z.enum(['best_path', 'full']).optional().default('best_path'),
|
|
495
|
+
},
|
|
496
|
+
}, async ({ experiment_id, mode }) => {
|
|
497
|
+
return asJson((0, explorer_js_1.getExperimentTree)(experiment_id, mode, store));
|
|
498
|
+
});
|
|
499
|
+
server.registerTool('leaderboard_get', {
|
|
500
|
+
title: 'Get Leaderboard',
|
|
501
|
+
description: 'Return top scoring runs for an experiment.',
|
|
502
|
+
inputSchema: {
|
|
503
|
+
experiment_id: zod_1.z.string(),
|
|
504
|
+
top_k: zod_1.z.number().int().min(1).max(500).optional().default(10),
|
|
505
|
+
},
|
|
506
|
+
}, async ({ experiment_id, top_k }) => {
|
|
507
|
+
return asJson((0, explorer_js_1.getExperimentLeaderboard)(experiment_id, top_k, store));
|
|
508
|
+
});
|
|
509
|
+
server.registerTool('experiment_gc', {
|
|
510
|
+
title: 'Experiment GC',
|
|
511
|
+
description: 'Plan/apply retention-driven GC for run worktrees and artifacts.',
|
|
512
|
+
inputSchema: {
|
|
513
|
+
experiment_id: zod_1.z.string(),
|
|
514
|
+
dry_run: zod_1.z.boolean().optional().default(true),
|
|
515
|
+
prune_worktrees: zod_1.z.boolean().optional().default(true),
|
|
516
|
+
prune_artifacts: zod_1.z.boolean().optional().default(true),
|
|
517
|
+
retention: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
|
|
518
|
+
},
|
|
519
|
+
}, async ({ experiment_id, dry_run, prune_worktrees, prune_artifacts, retention }) => {
|
|
520
|
+
try {
|
|
521
|
+
const result = (0, explorer_js_1.runExperimentGc)(experiment_id, {
|
|
522
|
+
dry_run: dry_run !== false,
|
|
523
|
+
prune_worktrees: prune_worktrees !== false,
|
|
524
|
+
prune_artifacts: prune_artifacts !== false,
|
|
525
|
+
retention: parseObject(retention),
|
|
526
|
+
}, store);
|
|
527
|
+
return asJson(result);
|
|
528
|
+
}
|
|
529
|
+
catch (err) {
|
|
530
|
+
return asError(err?.message || String(err));
|
|
531
|
+
}
|
|
532
|
+
});
|
|
533
|
+
server.registerTool('run_compare', {
|
|
534
|
+
title: 'Run Compare',
|
|
535
|
+
description: 'Compare selected run against best/parent/explicit run and return score+diff deltas.',
|
|
536
|
+
inputSchema: {
|
|
537
|
+
experiment_id: zod_1.z.string(),
|
|
538
|
+
run_id: zod_1.z.string(),
|
|
539
|
+
compare_to: zod_1.z.string().optional().default('best'),
|
|
540
|
+
include_patch: zod_1.z.boolean().optional().default(false),
|
|
541
|
+
},
|
|
542
|
+
}, async ({ experiment_id, run_id, compare_to, include_patch }) => {
|
|
543
|
+
try {
|
|
544
|
+
const result = (0, explorer_js_1.compareRun)({
|
|
545
|
+
experiment_id,
|
|
546
|
+
run_id,
|
|
547
|
+
compare_to,
|
|
548
|
+
include_patch: include_patch === true,
|
|
549
|
+
}, store);
|
|
550
|
+
return asJson(result);
|
|
551
|
+
}
|
|
552
|
+
catch (err) {
|
|
553
|
+
return asError(err?.message || String(err));
|
|
554
|
+
}
|
|
555
|
+
});
|
|
556
|
+
server.registerTool('autopilot_tick', {
|
|
557
|
+
title: 'Run Step',
|
|
558
|
+
description: 'Run one serialized manual step for the experiment.',
|
|
559
|
+
inputSchema: {
|
|
560
|
+
experiment_id: zod_1.z.string(),
|
|
561
|
+
},
|
|
562
|
+
}, async ({ experiment_id }) => {
|
|
563
|
+
const result = (0, explorer_js_1.runAutopilotTick)(experiment_id, store);
|
|
564
|
+
return asJson(result);
|
|
565
|
+
});
|
|
566
|
+
server.registerTool('experiment_step', {
|
|
567
|
+
title: 'Experiment Step',
|
|
568
|
+
description: 'Explicit single-step execution tool for manual chat-driven exploration (alias of autopilot_tick).',
|
|
569
|
+
inputSchema: {
|
|
570
|
+
experiment_id: zod_1.z.string(),
|
|
571
|
+
},
|
|
572
|
+
}, async ({ experiment_id }) => {
|
|
573
|
+
const result = (0, explorer_js_1.runAutopilotTick)(experiment_id, store);
|
|
574
|
+
return asJson(result);
|
|
575
|
+
});
|
|
576
|
+
server.registerTool('experiment_go', {
|
|
577
|
+
title: 'Go (Manual Step)',
|
|
578
|
+
description: 'High-level alias for a single run step. Use repeated calls from chat/MCP for manual control.',
|
|
579
|
+
inputSchema: {
|
|
580
|
+
experiment_id: zod_1.z.string(),
|
|
581
|
+
},
|
|
582
|
+
}, async ({ experiment_id }) => {
|
|
583
|
+
const result = (0, explorer_js_1.runAutopilotTick)(experiment_id, store);
|
|
584
|
+
return asJson({
|
|
585
|
+
experiment_id,
|
|
586
|
+
did_work: result.did_work,
|
|
587
|
+
result,
|
|
588
|
+
});
|
|
589
|
+
});
|
|
590
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
591
|
+
await server.connect(transport);
|
|
592
|
+
process.on('SIGINT', () => {
|
|
593
|
+
store.close();
|
|
594
|
+
process.exit(0);
|
|
595
|
+
});
|
|
596
|
+
process.on('SIGTERM', () => {
|
|
597
|
+
store.close();
|
|
598
|
+
process.exit(0);
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
function isDirectRun() {
|
|
602
|
+
const argv1 = process.argv[1] || '';
|
|
603
|
+
return /(?:^|\/|\\)explorer-mcp(?:\.bundle)?(?:\.(?:js|mjs))?$/.test(argv1);
|
|
604
|
+
}
|
|
605
|
+
if (isDirectRun()) {
|
|
606
|
+
main(process.argv.slice(2)).catch((err) => {
|
|
607
|
+
console.error('Explorer MCP server error:', err);
|
|
608
|
+
process.exit(1);
|
|
609
|
+
});
|
|
610
|
+
}
|
|
611
|
+
//# sourceMappingURL=explorer-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explorer-mcp.js","sourceRoot":"","sources":["../../src/lib/explorer-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RetentionPolicy } from './explorer-types.js';
|
|
2
|
+
export declare function defaultRetentionPolicy(): RetentionPolicy;
|
|
3
|
+
export declare function normalizeRetentionPolicy(input: unknown): RetentionPolicy;
|
|
4
|
+
export declare function mergeRetentionPolicy(base: RetentionPolicy, override?: Partial<RetentionPolicy> | null): RetentionPolicy;
|