@minicor/mcp-server 4.1.0 → 4.2.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/README.md +8 -2
- package/dist/__tests__/recording-frames.test.js +42 -1
- package/dist/__tests__/recording-frames.test.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/lib.js +1 -1
- package/dist/recording-frames.d.ts +82 -9
- package/dist/recording-frames.d.ts.map +1 -1
- package/dist/recording-frames.js +254 -32
- package/dist/recording-frames.js.map +1 -1
- package/dist/seeer-client.d.ts +153 -0
- package/dist/seeer-client.d.ts.map +1 -0
- package/dist/seeer-client.js +146 -0
- package/dist/seeer-client.js.map +1 -0
- package/dist/server-surface.d.ts.map +1 -1
- package/dist/server-surface.js +2 -0
- package/dist/server-surface.js.map +1 -1
- package/dist/tools/core.d.ts.map +1 -1
- package/dist/tools/core.js +188 -22
- package/dist/tools/core.js.map +1 -1
- package/dist/tools/recording-common.d.ts +11 -0
- package/dist/tools/recording-common.d.ts.map +1 -0
- package/dist/tools/recording-common.js +15 -0
- package/dist/tools/recording-common.js.map +1 -0
- package/dist/tools/recording.d.ts +3 -0
- package/dist/tools/recording.d.ts.map +1 -0
- package/dist/tools/recording.js +235 -0
- package/dist/tools/recording.js.map +1 -0
- package/dist/tools/workflow-ops.d.ts.map +1 -1
- package/dist/tools/workflow-ops.js +79 -5
- package/dist/tools/workflow-ops.js.map +1 -1
- package/package.json +1 -1
package/dist/tools/core.js
CHANGED
|
@@ -2,7 +2,9 @@ import { z } from "zod";
|
|
|
2
2
|
import { ok, text, safe } from "../helpers.js";
|
|
3
3
|
import { setWorkspaceRegion, getWorkspaceRegion } from "../state.js";
|
|
4
4
|
import { validateApiBaseUrl } from "../paths.js";
|
|
5
|
-
import { extractFramesFromUrl } from "../recording-frames.js";
|
|
5
|
+
import { extractFramesFromUrl, } from "../recording-frames.js";
|
|
6
|
+
import { seeerAvailable, seeerClip, seeerFrames, } from "../seeer-client.js";
|
|
7
|
+
import { recordingUrl as sharedRecordingUrl, recordingSource, } from "./recording-common.js";
|
|
6
8
|
import { registerCreateWorkflow, registerGetWorkflow, registerListWorkflows, registerListWorkspaces, } from "./discovery.js";
|
|
7
9
|
const regionParam = z
|
|
8
10
|
.enum(["us", "ca"])
|
|
@@ -291,7 +293,60 @@ export function register(deps) {
|
|
|
291
293
|
flowRunId: z.number().describe("Flow Run ID"),
|
|
292
294
|
region: regionParam,
|
|
293
295
|
}, async ({ workflowId, executionId, flowRunId, region }) => safe(() => deps.client(region).getFlowRunRecording(workflowId, executionId, flowRunId)));
|
|
294
|
-
|
|
296
|
+
// Shared bits for the recording frame/zoom/clip tools.
|
|
297
|
+
const recordingUrl = (r, workflowId, executionId, flowRunId) => sharedRecordingUrl(deps, r, workflowId, executionId, flowRunId);
|
|
298
|
+
/**
|
|
299
|
+
* Extract frames via the seeer service when configured (hosted MCP: no local
|
|
300
|
+
* ffmpeg needed, downloads cached server-side), else with local ffmpeg.
|
|
301
|
+
*/
|
|
302
|
+
const callOpts = (r) => ({
|
|
303
|
+
userToken: deps.getAuthToken?.(r),
|
|
304
|
+
});
|
|
305
|
+
const extractFrames = async (url, opts, r) => {
|
|
306
|
+
if (seeerAvailable()) {
|
|
307
|
+
try {
|
|
308
|
+
const res = await seeerFrames({
|
|
309
|
+
videoUrl: url,
|
|
310
|
+
// Sorted copy: the tool promises chronological output.
|
|
311
|
+
timestamps: opts.timestamps
|
|
312
|
+
? [...opts.timestamps].sort((a, b) => a - b)
|
|
313
|
+
: undefined,
|
|
314
|
+
range: opts.range,
|
|
315
|
+
count: opts.count,
|
|
316
|
+
width: opts.maxWidth,
|
|
317
|
+
region: opts.region,
|
|
318
|
+
}, callOpts(r));
|
|
319
|
+
return res.frames.map((f) => ({
|
|
320
|
+
label: `t=${f.t.toFixed(1)}s`,
|
|
321
|
+
timestampSeconds: f.t,
|
|
322
|
+
base64: f.jpegBase64,
|
|
323
|
+
}));
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
// Service hiccup — fall back to local extraction.
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return extractFramesFromUrl(url, opts);
|
|
330
|
+
};
|
|
331
|
+
const framesContent = (intro, frames) => {
|
|
332
|
+
const content = [{ type: "text", text: intro }];
|
|
333
|
+
for (const frame of frames) {
|
|
334
|
+
content.push({ type: "text", text: `── ${frame.label} ──` });
|
|
335
|
+
content.push({ type: "image", data: frame.base64, mimeType: "image/jpeg" });
|
|
336
|
+
}
|
|
337
|
+
return { content };
|
|
338
|
+
};
|
|
339
|
+
const cropRegionParam = z
|
|
340
|
+
.object({
|
|
341
|
+
x: z.number().int().describe("Left edge in native video pixels"),
|
|
342
|
+
y: z.number().int().describe("Top edge in native video pixels"),
|
|
343
|
+
width: z.number().int().min(1),
|
|
344
|
+
height: z.number().int().min(1),
|
|
345
|
+
pad: z.number().int().min(0).optional().describe("Extra context padding in px (default 0)"),
|
|
346
|
+
})
|
|
347
|
+
.optional()
|
|
348
|
+
.describe("Optional crop region (native video pixels). Crops every frame to this region BEFORE any scaling — use it to zoom into a dialog/field so small text stays readable.");
|
|
349
|
+
server.tool("get_recording_frames", "Extract still frames (as images) from an execution's or a single flow run's screen recording so you can visually verify or debug what happened on screen. Three modes: (1) default — evenly-spaced frames across the whole recording, (2) timestamps — exact moments you want to see (e.g. [41.5, 42]), (3) startTime+endTime — dense sampling of a window at fps. Add cropRegion to zoom into a screen area across all frames. Frames keep the recording's ORIGINAL resolution by default so fine on-screen detail (text, fields, errors) stays readable. Provide flowRunId to target one step; otherwise the full execution recording is used. The video download is cached, so follow-up calls on the same recording are fast — start with an overview, then drill into timestamps/regions. Requires ffmpeg on the MCP host — if unavailable, use get_execution_recording / get_flow_run_recording to get the raw video URL instead.", {
|
|
295
350
|
workflowId: z.number().describe("Workflow ID"),
|
|
296
351
|
executionId: z.number().describe("Execution ID"),
|
|
297
352
|
flowRunId: z
|
|
@@ -304,7 +359,29 @@ export function register(deps) {
|
|
|
304
359
|
.min(1)
|
|
305
360
|
.max(12)
|
|
306
361
|
.optional()
|
|
307
|
-
.describe("
|
|
362
|
+
.describe("Evenly-spaced mode: number of frames to sample (default 4, max 12). Ignored when timestamps or startTime/endTime are provided. Frames are token-expensive, so keep this small."),
|
|
363
|
+
timestamps: z
|
|
364
|
+
.array(z.number().min(0))
|
|
365
|
+
.max(16)
|
|
366
|
+
.optional()
|
|
367
|
+
.describe("Exact timestamps in seconds to extract (max 16). Takes precedence over startTime/endTime and frameCount."),
|
|
368
|
+
startTime: z
|
|
369
|
+
.number()
|
|
370
|
+
.min(0)
|
|
371
|
+
.optional()
|
|
372
|
+
.describe("Range mode: window start in seconds. Use with endTime to densely sample a specific moment."),
|
|
373
|
+
endTime: z
|
|
374
|
+
.number()
|
|
375
|
+
.min(0)
|
|
376
|
+
.optional()
|
|
377
|
+
.describe("Range mode: window end in seconds."),
|
|
378
|
+
fps: z
|
|
379
|
+
.number()
|
|
380
|
+
.min(0.1)
|
|
381
|
+
.max(4)
|
|
382
|
+
.optional()
|
|
383
|
+
.describe("Range mode: sampling rate within the window (default 1, max 4). Capped at 16 total frames."),
|
|
384
|
+
cropRegion: cropRegionParam,
|
|
308
385
|
maxWidth: z
|
|
309
386
|
.number()
|
|
310
387
|
.int()
|
|
@@ -312,31 +389,120 @@ export function register(deps) {
|
|
|
312
389
|
.optional()
|
|
313
390
|
.describe("Optional max frame width in px. Omit to keep the recording's original resolution (recommended); only set to trade detail for smaller images."),
|
|
314
391
|
region: regionParam,
|
|
315
|
-
}, async ({ workflowId, executionId, flowRunId, frameCount, maxWidth, region }) => {
|
|
392
|
+
}, async ({ workflowId, executionId, flowRunId, frameCount, timestamps, startTime, endTime, fps, cropRegion, maxWidth, region, }) => {
|
|
316
393
|
const r = region;
|
|
317
394
|
try {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
const frames = await
|
|
395
|
+
if ((startTime != null) !== (endTime != null)) {
|
|
396
|
+
return text("Error: startTime and endTime must be provided together.");
|
|
397
|
+
}
|
|
398
|
+
const url = await recordingUrl(r, workflowId, executionId, flowRunId);
|
|
399
|
+
const frames = await extractFrames(url, {
|
|
400
|
+
count: frameCount ?? 4,
|
|
401
|
+
timestamps,
|
|
402
|
+
range: startTime != null && endTime != null
|
|
403
|
+
? { start: startTime, end: endTime, fps: fps ?? 1 }
|
|
404
|
+
: undefined,
|
|
405
|
+
region: cropRegion,
|
|
406
|
+
maxWidth,
|
|
407
|
+
}, r);
|
|
323
408
|
if (frames.length === 0) {
|
|
324
409
|
return text("No frames could be extracted from the recording.");
|
|
325
410
|
}
|
|
326
|
-
const
|
|
327
|
-
? `
|
|
328
|
-
:
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
411
|
+
const cropNote = cropRegion
|
|
412
|
+
? ` (cropped to x=${cropRegion.x} y=${cropRegion.y} ${cropRegion.width}x${cropRegion.height})`
|
|
413
|
+
: "";
|
|
414
|
+
return framesContent(`Extracted ${frames.length} frame(s) from the recording for ${recordingSource(executionId, flowRunId)}${cropNote}, in chronological order:`, frames);
|
|
415
|
+
}
|
|
416
|
+
catch (e) {
|
|
417
|
+
return text(`Error: ${e.message}`);
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
server.tool("get_recording_zoom", "Zoom into a screen region of an execution's or flow run's recording at a specific moment: returns one NATIVE-resolution crop image. Use this after an overview frame showed something you need to read precisely (a dialog, an error message, a form field) — full frames downscale small text into mush, a zoom keeps it readable. Coordinates are native video pixels (recordings are typically the VM's full desktop resolution, e.g. 2560x1440). The video download is cached, so zooming repeatedly into the same recording is cheap.", {
|
|
421
|
+
workflowId: z.number().describe("Workflow ID"),
|
|
422
|
+
executionId: z.number().describe("Execution ID"),
|
|
423
|
+
flowRunId: z
|
|
424
|
+
.number()
|
|
425
|
+
.optional()
|
|
426
|
+
.describe("Flow Run ID. If provided, targets that single step's recording instead of the full execution recording."),
|
|
427
|
+
time: z.number().min(0).describe("Timestamp in seconds to zoom into"),
|
|
428
|
+
x: z.number().int().describe("Region left edge in native video pixels"),
|
|
429
|
+
y: z.number().int().describe("Region top edge in native video pixels"),
|
|
430
|
+
width: z.number().int().min(1).describe("Region width in native video pixels"),
|
|
431
|
+
height: z.number().int().min(1).describe("Region height in native video pixels"),
|
|
432
|
+
pad: z
|
|
433
|
+
.number()
|
|
434
|
+
.int()
|
|
435
|
+
.min(0)
|
|
436
|
+
.optional()
|
|
437
|
+
.describe("Extra context padding around the region in px (default 48)"),
|
|
438
|
+
region: regionParam,
|
|
439
|
+
}, async ({ workflowId, executionId, flowRunId, time, x, y, width, height, pad, region }) => {
|
|
440
|
+
const r = region;
|
|
441
|
+
try {
|
|
442
|
+
const url = await recordingUrl(r, workflowId, executionId, flowRunId);
|
|
443
|
+
const frames = await extractFrames(url, {
|
|
444
|
+
timestamps: [time],
|
|
445
|
+
region: { x, y, width, height, pad: pad ?? 48 },
|
|
446
|
+
}, r);
|
|
447
|
+
if (frames.length === 0) {
|
|
448
|
+
return text("No frame could be extracted at that timestamp.");
|
|
449
|
+
}
|
|
450
|
+
return framesContent(`Native-resolution zoom of ${recordingSource(executionId, flowRunId)} at ${frames[0].label}, region x=${x} y=${y} ${width}x${height}:`, frames);
|
|
451
|
+
}
|
|
452
|
+
catch (e) {
|
|
453
|
+
return text(`Error: ${e.message}`);
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
server.tool("get_recording_clip", "Cut a time window out of an execution's or flow run's screen recording and return it as a filmstrip: a chronological sequence of labeled frames sampled at fps. Use it to understand exactly what happened during a specific moment (an error appearing, a step failing, a dialog flow) without re-sampling the whole video. Combine with cropRegion to follow one screen area through time. Set asVideoUrl to instead get a signed URL to a downloadable MP4 sub-clip (for sharing with humans; requires the seeer service). The video download is cached across calls.", {
|
|
457
|
+
workflowId: z.number().describe("Workflow ID"),
|
|
458
|
+
executionId: z.number().describe("Execution ID"),
|
|
459
|
+
flowRunId: z
|
|
460
|
+
.number()
|
|
461
|
+
.optional()
|
|
462
|
+
.describe("Flow Run ID. If provided, targets that single step's recording instead of the full execution recording."),
|
|
463
|
+
startTime: z.number().min(0).describe("Clip start in seconds"),
|
|
464
|
+
endTime: z.number().min(0).describe("Clip end in seconds"),
|
|
465
|
+
fps: z
|
|
466
|
+
.number()
|
|
467
|
+
.min(0.1)
|
|
468
|
+
.max(4)
|
|
469
|
+
.optional()
|
|
470
|
+
.describe("Frames per second in the filmstrip (default 2, max 4). Capped at 16 total frames — for longer windows the frames spread out evenly."),
|
|
471
|
+
cropRegion: cropRegionParam,
|
|
472
|
+
maxWidth: z
|
|
473
|
+
.number()
|
|
474
|
+
.int()
|
|
475
|
+
.min(1)
|
|
476
|
+
.optional()
|
|
477
|
+
.describe("Optional max frame width in px. Omit to keep the recording's original resolution."),
|
|
478
|
+
asVideoUrl: z
|
|
479
|
+
.boolean()
|
|
480
|
+
.optional()
|
|
481
|
+
.describe("Return a signed URL to an actual MP4 sub-clip instead of a filmstrip (requires the seeer service; useful for handing to a human)."),
|
|
482
|
+
region: regionParam,
|
|
483
|
+
}, async ({ workflowId, executionId, flowRunId, startTime, endTime, fps, cropRegion, maxWidth, asVideoUrl, region }) => {
|
|
484
|
+
const r = region;
|
|
485
|
+
try {
|
|
486
|
+
if (endTime <= startTime) {
|
|
487
|
+
return text("Error: endTime must be greater than startTime.");
|
|
488
|
+
}
|
|
489
|
+
const url = await recordingUrl(r, workflowId, executionId, flowRunId);
|
|
490
|
+
if (asVideoUrl) {
|
|
491
|
+
if (!seeerAvailable()) {
|
|
492
|
+
return text("Error: asVideoUrl requires the seeer service (set SEEER_SERVICE_URL). Omit it to get a filmstrip instead.");
|
|
493
|
+
}
|
|
494
|
+
const clip = await seeerClip({ videoUrl: url, start: startTime, end: endTime }, callOpts(r));
|
|
495
|
+
return ok(clip);
|
|
496
|
+
}
|
|
497
|
+
const frames = await extractFrames(url, {
|
|
498
|
+
range: { start: startTime, end: endTime, fps: fps ?? 2 },
|
|
499
|
+
region: cropRegion,
|
|
500
|
+
maxWidth,
|
|
501
|
+
}, r);
|
|
502
|
+
if (frames.length === 0) {
|
|
503
|
+
return text("No frames could be extracted for that time window.");
|
|
338
504
|
}
|
|
339
|
-
return {
|
|
505
|
+
return framesContent(`Filmstrip of ${recordingSource(executionId, flowRunId)} from t=${startTime}s to t=${endTime}s (${frames.length} frames):`, frames);
|
|
340
506
|
}
|
|
341
507
|
catch (e) {
|
|
342
508
|
return text(`Error: ${e.message}`);
|
package/dist/tools/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/tools/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/tools/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helpers for the recording tool groups (core.ts frame primitives and
|
|
3
|
+
* recording.ts analysis tools), so recording-endpoint selection can't diverge.
|
|
4
|
+
*/
|
|
5
|
+
import type { Region } from "../paths.js";
|
|
6
|
+
import type { ToolDeps } from "../types.js";
|
|
7
|
+
/** Signed URL for an execution's (or one flow run's) recording. */
|
|
8
|
+
export declare function recordingUrl(deps: ToolDeps, r: Region | undefined, workflowId: number, executionId: number, flowRunId?: number): Promise<string>;
|
|
9
|
+
/** Human-readable label for which recording a tool result refers to. */
|
|
10
|
+
export declare function recordingSource(executionId: number, flowRunId?: number): string;
|
|
11
|
+
//# sourceMappingURL=recording-common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording-common.d.ts","sourceRoot":"","sources":["../../src/tools/recording-common.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,mEAAmE;AACnE,wBAAsB,YAAY,CAChC,IAAI,EAAE,QAAQ,EACd,CAAC,EAAE,MAAM,GAAG,SAAS,EACrB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAI/E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Signed URL for an execution's (or one flow run's) recording. */
|
|
2
|
+
export async function recordingUrl(deps, r, workflowId, executionId, flowRunId) {
|
|
3
|
+
const client = deps.client(r);
|
|
4
|
+
const { url } = flowRunId != null
|
|
5
|
+
? await client.getFlowRunRecording(workflowId, executionId, flowRunId)
|
|
6
|
+
: await client.getExecutionRecording(workflowId, executionId);
|
|
7
|
+
return url;
|
|
8
|
+
}
|
|
9
|
+
/** Human-readable label for which recording a tool result refers to. */
|
|
10
|
+
export function recordingSource(executionId, flowRunId) {
|
|
11
|
+
return flowRunId != null
|
|
12
|
+
? `flow run ${flowRunId} (execution ${executionId})`
|
|
13
|
+
: `execution ${executionId}`;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=recording-common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording-common.js","sourceRoot":"","sources":["../../src/tools/recording-common.ts"],"names":[],"mappings":"AAOA,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAc,EACd,CAAqB,EACrB,UAAkB,EAClB,WAAmB,EACnB,SAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,EAAE,GACX,SAAS,IAAI,IAAI;QACf,CAAC,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC;QACtE,CAAC,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAClE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,SAAkB;IACrE,OAAO,SAAS,IAAI,IAAI;QACtB,CAAC,CAAC,YAAY,SAAS,eAAe,WAAW,GAAG;QACpD,CAAC,CAAC,aAAa,WAAW,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording.d.ts","sourceRoot":"","sources":["../../src/tools/recording.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA4C5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QAqPtC"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic recording analysis tools, backed by the seeer service.
|
|
3
|
+
*
|
|
4
|
+
* These give an agent a MAP of an execution recording before it spends tokens
|
|
5
|
+
* looking at frames: detected UI events with change regions and click
|
|
6
|
+
* positions, segments cut at screen transitions, and (for stitched execution
|
|
7
|
+
* recordings) the step-to-video-time timeline. The frame-level primitives
|
|
8
|
+
* (get_recording_frames / get_recording_zoom / get_recording_clip in core.ts)
|
|
9
|
+
* are the follow-up drills.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { text } from "../helpers.js";
|
|
13
|
+
import { seeerAnalyze, seeerAnnotate, seeerAvailable, seeerFrames, seeerZoom, } from "../seeer-client.js";
|
|
14
|
+
import { recordingUrl as sharedRecordingUrl } from "./recording-common.js";
|
|
15
|
+
const regionParam = z
|
|
16
|
+
.enum(["us", "ca"])
|
|
17
|
+
.optional()
|
|
18
|
+
.describe("Region (us or ca). Auto-detected from workspace if omitted.");
|
|
19
|
+
const NOT_CONFIGURED = "Error: the video-tool service is not configured (set SEEER_SERVICE_PROXY_BASE or SEEER_SERVICE_URL). " +
|
|
20
|
+
"You can still inspect the recording manually with get_recording_frames / get_recording_zoom / get_recording_clip.";
|
|
21
|
+
function img(base64) {
|
|
22
|
+
return { type: "image", data: base64, mimeType: "image/jpeg" };
|
|
23
|
+
}
|
|
24
|
+
function txt(t) {
|
|
25
|
+
return { type: "text", text: t };
|
|
26
|
+
}
|
|
27
|
+
/** Does a flow run's response payload reference a per-step recording blob? */
|
|
28
|
+
function flowRunHasRecording(flowRun) {
|
|
29
|
+
const response = flowRun?.response;
|
|
30
|
+
if (response == null)
|
|
31
|
+
return false;
|
|
32
|
+
if (typeof response === "string")
|
|
33
|
+
return response.includes('"recording"');
|
|
34
|
+
if (typeof response === "object") {
|
|
35
|
+
return response.recording != null || JSON.stringify(response).includes('"recording"');
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
export function register(deps) {
|
|
40
|
+
const { server } = deps;
|
|
41
|
+
const callOpts = (r) => ({
|
|
42
|
+
userToken: deps.getAuthToken?.(r),
|
|
43
|
+
});
|
|
44
|
+
const recordingUrl = (r, workflowId, executionId, flowRunId) => sharedRecordingUrl(deps, r, workflowId, executionId, flowRunId);
|
|
45
|
+
/**
|
|
46
|
+
* For a stitched execution recording, collect the per-step recording URLs in
|
|
47
|
+
* concat (executionOrder) order so seeer can compute the step timeline.
|
|
48
|
+
*/
|
|
49
|
+
const collectSteps = async (r, workflowId, executionId) => {
|
|
50
|
+
const client = deps.client(r);
|
|
51
|
+
const steps = [];
|
|
52
|
+
try {
|
|
53
|
+
const execution = await client.getExecution(workflowId, executionId);
|
|
54
|
+
const flowRuns = Array.isArray(execution?.flowRuns) ? execution.flowRuns : [];
|
|
55
|
+
flowRuns.sort((a, b) => (a.executionOrder ?? 0) - (b.executionOrder ?? 0));
|
|
56
|
+
for (const fr of flowRuns) {
|
|
57
|
+
if (!flowRunHasRecording(fr))
|
|
58
|
+
continue;
|
|
59
|
+
try {
|
|
60
|
+
const { url } = await client.getFlowRunRecording(workflowId, executionId, fr.id);
|
|
61
|
+
steps.push({ flowRunId: fr.id, flowName: fr.flowName ?? undefined, videoUrl: url });
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Step advertises a recording we cannot sign — skip it; the timeline
|
|
65
|
+
// will simply stop before this step rather than be wrong.
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Execution fetch failed — analysis still works, just without the timeline.
|
|
72
|
+
}
|
|
73
|
+
return steps;
|
|
74
|
+
};
|
|
75
|
+
server.tool("analyze_recording", "Analyze an execution's (or one flow run's) screen recording with computer vision and return a complete MAP of what happened: UI events (moments the screen changed) with timestamps, change regions and click positions (recorded from input telemetry when available, CV-inferred otherwise), segments cut at full-screen transitions, and — for stitched execution recordings — a step-to-video-time timeline telling you which seconds belong to which flow run. Results are cached per recording, so calling this repeatedly is cheap. Use this FIRST when investigating a recording, then drill into moments with get_recording_event, get_recording_frames, get_recording_zoom or get_recording_clip. Set includeFrames to also get one overview image per segment.", {
|
|
76
|
+
workflowId: z.number().describe("Workflow ID"),
|
|
77
|
+
executionId: z.number().describe("Execution ID"),
|
|
78
|
+
flowRunId: z
|
|
79
|
+
.number()
|
|
80
|
+
.optional()
|
|
81
|
+
.describe("Flow Run ID. If provided, analyzes that single step's recording instead of the full execution recording."),
|
|
82
|
+
includeFrames: z
|
|
83
|
+
.boolean()
|
|
84
|
+
.optional()
|
|
85
|
+
.describe("Also return one overview frame per detected segment (default false; costs tokens)."),
|
|
86
|
+
force: z
|
|
87
|
+
.boolean()
|
|
88
|
+
.optional()
|
|
89
|
+
.describe("Recompute even if a cached analysis exists."),
|
|
90
|
+
region: regionParam,
|
|
91
|
+
}, async ({ workflowId, executionId, flowRunId, includeFrames, force, region }) => {
|
|
92
|
+
const r = region;
|
|
93
|
+
if (!seeerAvailable())
|
|
94
|
+
return text(NOT_CONFIGURED);
|
|
95
|
+
try {
|
|
96
|
+
const url = await recordingUrl(r, workflowId, executionId, flowRunId);
|
|
97
|
+
const steps = flowRunId == null ? await collectSteps(r, workflowId, executionId) : undefined;
|
|
98
|
+
const analysis = await seeerAnalyze({
|
|
99
|
+
videoUrl: url,
|
|
100
|
+
steps: steps && steps.length > 0 ? steps : undefined,
|
|
101
|
+
force,
|
|
102
|
+
}, callOpts(r));
|
|
103
|
+
const content = [txt(JSON.stringify(analysis, null, 2))];
|
|
104
|
+
if (includeFrames && analysis.segments.length > 0) {
|
|
105
|
+
const timestamps = analysis.segments
|
|
106
|
+
.slice(0, 6)
|
|
107
|
+
.map((s) => Math.min(s.start + 0.2, Math.max(s.end - 0.05, s.start)));
|
|
108
|
+
const { frames } = await seeerFrames({ videoUrl: url, timestamps, width: 1280 }, callOpts(r));
|
|
109
|
+
for (let i = 0; i < frames.length; i++) {
|
|
110
|
+
content.push(txt(`── Segment ${analysis.segments[i]?.id ?? i} overview, t=${frames[i].t}s ──`));
|
|
111
|
+
content.push(img(frames[i].jpegBase64));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { content };
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
return text(`Error: ${e.message}`);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
server.tool("annotate_recording", "Render a recording frame WITH the analysis drawn on it — green boxes around detected UI events, click markers (red = recorded input telemetry, orange = CV-inferred), optionally the cursor trail, plus a legend. This is the tool for SHOWING a human what happened: 'here is where the bot clicked and what changed'. Target a moment with t (seconds) or an eventId from analyze_recording (highlights that event). Set allEvents to draw the whole recording's events on one frame (a visual summary), includeClean to also get the unannotated frame for before/after comparison, or annotations=false for just the clean frame. Runs analyze automatically if the recording hasn't been analyzed yet.", {
|
|
121
|
+
workflowId: z.number().describe("Workflow ID"),
|
|
122
|
+
executionId: z.number().describe("Execution ID"),
|
|
123
|
+
flowRunId: z
|
|
124
|
+
.number()
|
|
125
|
+
.optional()
|
|
126
|
+
.describe("Flow Run ID. If provided, targets that single step's recording instead of the full execution recording."),
|
|
127
|
+
t: z.number().min(0).optional().describe("Timestamp in seconds to annotate."),
|
|
128
|
+
eventId: z
|
|
129
|
+
.number()
|
|
130
|
+
.optional()
|
|
131
|
+
.describe("Annotate the frame right after this event and highlight it (alternative to t)."),
|
|
132
|
+
annotations: z
|
|
133
|
+
.boolean()
|
|
134
|
+
.optional()
|
|
135
|
+
.describe("Master toggle (default true). false returns the clean frame only."),
|
|
136
|
+
showTrail: z.boolean().optional().describe("Also draw the cursor trail up to t."),
|
|
137
|
+
allEvents: z
|
|
138
|
+
.boolean()
|
|
139
|
+
.optional()
|
|
140
|
+
.describe("Draw every detected event on this one frame — a whole-recording visual summary."),
|
|
141
|
+
includeClean: z
|
|
142
|
+
.boolean()
|
|
143
|
+
.optional()
|
|
144
|
+
.describe("Also return the unannotated frame for side-by-side comparison."),
|
|
145
|
+
width: z
|
|
146
|
+
.number()
|
|
147
|
+
.int()
|
|
148
|
+
.min(320)
|
|
149
|
+
.optional()
|
|
150
|
+
.describe("Output width cap in px (default 1280)."),
|
|
151
|
+
region: regionParam,
|
|
152
|
+
}, async ({ workflowId, executionId, flowRunId, t, eventId, annotations, showTrail, allEvents, includeClean, width, region }) => {
|
|
153
|
+
const r = region;
|
|
154
|
+
if (!seeerAvailable())
|
|
155
|
+
return text(NOT_CONFIGURED);
|
|
156
|
+
try {
|
|
157
|
+
if (t == null && eventId == null) {
|
|
158
|
+
return text("Error: provide t (seconds) or eventId (from analyze_recording).");
|
|
159
|
+
}
|
|
160
|
+
const url = await recordingUrl(r, workflowId, executionId, flowRunId);
|
|
161
|
+
const result = await seeerAnnotate({
|
|
162
|
+
videoUrl: url,
|
|
163
|
+
t,
|
|
164
|
+
eventId,
|
|
165
|
+
annotations,
|
|
166
|
+
showTrail,
|
|
167
|
+
allEvents,
|
|
168
|
+
includeClean,
|
|
169
|
+
width: width ?? 1280,
|
|
170
|
+
}, callOpts(r));
|
|
171
|
+
const content = [];
|
|
172
|
+
const shown = result.events
|
|
173
|
+
.filter((e) => e.type !== "screen_transition")
|
|
174
|
+
.map((e) => `event ${e.id} (${e.type}, t=${e.t}s${e.click ? `, click at ${e.click[0]},${e.click[1]} [${e.clickSource}]` : ""})`);
|
|
175
|
+
if (result.annotated) {
|
|
176
|
+
content.push(txt(`── Annotated frame at t=${result.t}s${shown.length ? ` — showing ${shown.join("; ")}` : ""} ──`));
|
|
177
|
+
content.push(img(result.annotated));
|
|
178
|
+
}
|
|
179
|
+
if (result.clean) {
|
|
180
|
+
content.push(txt(`── Clean frame at t=${result.t}s (annotations off) ──`));
|
|
181
|
+
content.push(img(result.clean));
|
|
182
|
+
}
|
|
183
|
+
if (content.length === 0) {
|
|
184
|
+
return text("No frame could be rendered at that timestamp.");
|
|
185
|
+
}
|
|
186
|
+
return { content };
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
return text(`Error: ${e.message}`);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
server.tool("get_recording_event", "Look at one detected UI event from analyze_recording up close: returns the event's metadata, a post-event overview frame, and a NATIVE-resolution zoom of exactly the screen region that changed (so dialog text, field values and error messages are readable). Call analyze_recording first to get event ids.", {
|
|
193
|
+
workflowId: z.number().describe("Workflow ID"),
|
|
194
|
+
executionId: z.number().describe("Execution ID"),
|
|
195
|
+
flowRunId: z
|
|
196
|
+
.number()
|
|
197
|
+
.optional()
|
|
198
|
+
.describe("Flow Run ID. If provided, targets that single step's recording instead of the full execution recording."),
|
|
199
|
+
eventId: z.number().describe("Event id from analyze_recording"),
|
|
200
|
+
region: regionParam,
|
|
201
|
+
}, async ({ workflowId, executionId, flowRunId, eventId, region }) => {
|
|
202
|
+
const r = region;
|
|
203
|
+
if (!seeerAvailable())
|
|
204
|
+
return text(NOT_CONFIGURED);
|
|
205
|
+
try {
|
|
206
|
+
const url = await recordingUrl(r, workflowId, executionId, flowRunId);
|
|
207
|
+
// Cached analysis lookup (cheap after the first analyze_recording call).
|
|
208
|
+
const analysis = await seeerAnalyze({ videoUrl: url }, callOpts(r));
|
|
209
|
+
const event = analysis.events.find((e) => e.id === eventId);
|
|
210
|
+
if (!event) {
|
|
211
|
+
return text(`Error: event ${eventId} not found — this recording has events ${analysis.events
|
|
212
|
+
.map((e) => e.id)
|
|
213
|
+
.join(", ")}.`);
|
|
214
|
+
}
|
|
215
|
+
const content = [txt(JSON.stringify(event, null, 2))];
|
|
216
|
+
const { frames } = await seeerFrames({ videoUrl: url, timestamps: [event.tAfter], width: 1280 }, callOpts(r));
|
|
217
|
+
if (frames.length > 0) {
|
|
218
|
+
content.push(txt(`── After event ${eventId} (overview), t=${frames[0].t}s ──`));
|
|
219
|
+
content.push(img(frames[0].jpegBase64));
|
|
220
|
+
}
|
|
221
|
+
// screen_transition events cover the whole screen — the overview IS the zoom.
|
|
222
|
+
if (event.type !== "screen_transition") {
|
|
223
|
+
const zoom = await seeerZoom({ videoUrl: url, t: event.tAfter, eventId }, callOpts(r));
|
|
224
|
+
content.push(txt(`── Event ${eventId} change region (native resolution), t=${zoom.t}s, ` +
|
|
225
|
+
`x=${zoom.region.x} y=${zoom.region.y} ${zoom.region.width}x${zoom.region.height} ──`));
|
|
226
|
+
content.push(img(zoom.jpegBase64));
|
|
227
|
+
}
|
|
228
|
+
return { content };
|
|
229
|
+
}
|
|
230
|
+
catch (e) {
|
|
231
|
+
return text(`Error: ${e.message}`);
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=recording.js.map
|