@minicor/mcp-server 4.0.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.
Files changed (53) hide show
  1. package/README.md +6 -0
  2. package/dist/__tests__/dev-mode-draft.test.js +27 -19
  3. package/dist/__tests__/dev-mode-draft.test.js.map +1 -1
  4. package/dist/__tests__/jobs-tools.test.js +1 -0
  5. package/dist/__tests__/jobs-tools.test.js.map +1 -1
  6. package/dist/__tests__/laminar-client.test.js +31 -31
  7. package/dist/__tests__/laminar-client.test.js.map +1 -1
  8. package/dist/__tests__/lib-dev-mode.test.js +2 -2
  9. package/dist/__tests__/lib-dev-mode.test.js.map +1 -1
  10. package/dist/__tests__/recording-frames.test.js +42 -1
  11. package/dist/__tests__/recording-frames.test.js.map +1 -1
  12. package/dist/__tests__/server-surface.test.js +11 -9
  13. package/dist/__tests__/server-surface.test.js.map +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/laminar-client.d.ts +11 -14
  16. package/dist/laminar-client.d.ts.map +1 -1
  17. package/dist/laminar-client.js +25 -25
  18. package/dist/laminar-client.js.map +1 -1
  19. package/dist/lib.js +1 -1
  20. package/dist/recording-frames.d.ts +82 -9
  21. package/dist/recording-frames.d.ts.map +1 -1
  22. package/dist/recording-frames.js +254 -32
  23. package/dist/recording-frames.js.map +1 -1
  24. package/dist/seeer-client.d.ts +153 -0
  25. package/dist/seeer-client.d.ts.map +1 -0
  26. package/dist/seeer-client.js +146 -0
  27. package/dist/seeer-client.js.map +1 -0
  28. package/dist/server-surface.d.ts.map +1 -1
  29. package/dist/server-surface.js +12 -7
  30. package/dist/server-surface.js.map +1 -1
  31. package/dist/sync.js +3 -2
  32. package/dist/sync.js.map +1 -1
  33. package/dist/tools/core.d.ts.map +1 -1
  34. package/dist/tools/core.js +188 -22
  35. package/dist/tools/core.js.map +1 -1
  36. package/dist/tools/dev-mode-draft.d.ts.map +1 -1
  37. package/dist/tools/dev-mode-draft.js +63 -49
  38. package/dist/tools/dev-mode-draft.js.map +1 -1
  39. package/dist/tools/jobs.js +1 -1
  40. package/dist/tools/jobs.js.map +1 -1
  41. package/dist/tools/recording-common.d.ts +11 -0
  42. package/dist/tools/recording-common.d.ts.map +1 -0
  43. package/dist/tools/recording-common.js +15 -0
  44. package/dist/tools/recording-common.js.map +1 -0
  45. package/dist/tools/recording.d.ts +3 -0
  46. package/dist/tools/recording.d.ts.map +1 -0
  47. package/dist/tools/recording.js +235 -0
  48. package/dist/tools/recording.js.map +1 -0
  49. package/dist/tools/workflow-ops.d.ts.map +1 -1
  50. package/dist/tools/workflow-ops.js +79 -5
  51. package/dist/tools/workflow-ops.js.map +1 -1
  52. package/package.json +1 -1
  53. package/skills/general/job-build-loop.md +10 -7
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Client for the seeer (video_tool) video-understanding service.
3
+ *
4
+ * seeer runs the CV analysis (UI events, click inference, segments, step
5
+ * timeline) and heavy frame extraction server-side, with derived results
6
+ * cached as blobs next to the recording.
7
+ *
8
+ * BASE-URL SELECTION (mirrors middleware-service-client.ts):
9
+ *
10
+ * 1. PROXY mode — set `SEEER_SERVICE_PROXY_BASE` (the deployed frontend
11
+ * origin, e.g. https://app.laminar.run). Requests go to
12
+ * `${proxyBase}${prefix}/<path>` where `prefix` defaults to
13
+ * `/api/video-tool` (override with SEEER_SERVICE_PROXY_PREFIX) and the
14
+ * leading `/v1/` is stripped. Auth is the USER's Laminar bearer token —
15
+ * the frontend validates it and forwards with the service's API key,
16
+ * the same pattern as the agents / stitchy / cron proxies.
17
+ *
18
+ * 2. DIRECT — set `SEEER_SERVICE_URL` (e.g. the Cloud Run URL). Auth is the
19
+ * shared app token via `SEEER_SERVICE_TOKEN` (sent as X-API-Key). The
20
+ * service runs IAM-gated on Cloud Run (org policy forbids public access),
21
+ * so requests also need a Google identity token in Authorization:
22
+ * SEEER_SERVICE_ID_TOKEN static token (local testing:
23
+ * `gcloud auth print-identity-token`)
24
+ * SEEER_SERVICE_USE_GCP_IDENTITY set to 1 when the MCP itself runs on
25
+ * GCP; tokens come from the metadata
26
+ * server with the service URL audience
27
+ *
28
+ * Precedence: PROXY (1) > DIRECT (2) > disabled. When disabled, the
29
+ * frame/zoom/clip tools fall back to local ffmpeg (recording-frames.ts);
30
+ * analysis/annotation tools require the service.
31
+ */
32
+ export function seeerServiceUrl() {
33
+ const url = process.env.SEEER_SERVICE_URL?.trim();
34
+ return url ? url.replace(/\/+$/, "") : undefined;
35
+ }
36
+ export function seeerProxyBase() {
37
+ const base = process.env.SEEER_SERVICE_PROXY_BASE?.trim();
38
+ return base ? base.replace(/\/+$/, "") : undefined;
39
+ }
40
+ function seeerProxyPrefix() {
41
+ return ("/" +
42
+ (process.env.SEEER_SERVICE_PROXY_PREFIX ?? "/api/video-tool")
43
+ .replace(/^\/+/, "")
44
+ .replace(/\/+$/, ""));
45
+ }
46
+ export function seeerAvailable() {
47
+ return seeerProxyBase() != null || seeerServiceUrl() != null;
48
+ }
49
+ let cachedIdentity = null;
50
+ /** Identity token for IAM-gated Cloud Run, from env or the GCP metadata server. */
51
+ async function identityToken(audience) {
52
+ const staticToken = process.env.SEEER_SERVICE_ID_TOKEN;
53
+ if (staticToken)
54
+ return staticToken;
55
+ if (process.env.SEEER_SERVICE_USE_GCP_IDENTITY !== "1")
56
+ return null;
57
+ if (cachedIdentity &&
58
+ cachedIdentity.audience === audience &&
59
+ Date.now() < cachedIdentity.expiresAtMs) {
60
+ return cachedIdentity.token;
61
+ }
62
+ const res = await fetch("http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity" +
63
+ `?audience=${encodeURIComponent(audience)}`, {
64
+ headers: { "Metadata-Flavor": "Google" },
65
+ // Never let a stalled metadata server hang recording-tool calls.
66
+ signal: AbortSignal.timeout(10_000),
67
+ });
68
+ if (!res.ok) {
69
+ throw new Error(`failed to fetch GCP identity token (${res.status})`);
70
+ }
71
+ const token = await res.text();
72
+ // Identity tokens last 1h; refresh with a 5 min buffer.
73
+ cachedIdentity = { audience, token, expiresAtMs: Date.now() + 55 * 60 * 1000 };
74
+ return token;
75
+ }
76
+ async function call(path, body, opts = {}, timeoutMs = 120_000) {
77
+ const proxy = seeerProxyBase();
78
+ const direct = seeerServiceUrl();
79
+ if (!proxy && !direct) {
80
+ throw new Error("The video-tool service is not configured (set SEEER_SERVICE_PROXY_BASE or SEEER_SERVICE_URL).");
81
+ }
82
+ const headers = { "Content-Type": "application/json" };
83
+ let url;
84
+ if (proxy) {
85
+ // PROXY mode: the frontend validates the USER bearer and forwards with the
86
+ // service API key (agents/stitchy/cron proxy convention).
87
+ if (!opts.userToken) {
88
+ throw new Error("video-tool proxy mode requires the user's bearer token.");
89
+ }
90
+ url = `${proxy}${seeerProxyPrefix()}/${path.replace(/^\/v1\//, "").replace(/^\/+/, "")}`;
91
+ headers["Authorization"] = `Bearer ${opts.userToken}`;
92
+ }
93
+ else {
94
+ // DIRECT mode: app token in X-API-Key; Authorization stays free for the
95
+ // Google identity token that IAM-gated Cloud Run requires.
96
+ url = `${direct}${path}`;
97
+ const token = process.env.SEEER_SERVICE_TOKEN;
98
+ if (token)
99
+ headers["X-API-Key"] = token;
100
+ const idToken = await identityToken(direct);
101
+ if (idToken)
102
+ headers["Authorization"] = `Bearer ${idToken}`;
103
+ }
104
+ const controller = new AbortController();
105
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
106
+ try {
107
+ const res = await fetch(url, {
108
+ method: "POST",
109
+ headers,
110
+ body: JSON.stringify(body),
111
+ signal: controller.signal,
112
+ });
113
+ if (!res.ok) {
114
+ let detail = `${res.status}`;
115
+ try {
116
+ const parsed = (await res.json());
117
+ if (parsed.detail)
118
+ detail = `${res.status}: ${parsed.detail}`;
119
+ }
120
+ catch {
121
+ /* non-JSON error body */
122
+ }
123
+ throw new Error(`seeer service error (${detail})`);
124
+ }
125
+ return (await res.json());
126
+ }
127
+ finally {
128
+ clearTimeout(timer);
129
+ }
130
+ }
131
+ export async function seeerAnalyze(params, opts = {}) {
132
+ return call("/v1/analyze", params, opts);
133
+ }
134
+ export async function seeerFrames(params, opts = {}) {
135
+ return call("/v1/frames", params, opts);
136
+ }
137
+ export async function seeerZoom(params, opts = {}) {
138
+ return call("/v1/zoom", params, opts);
139
+ }
140
+ export async function seeerClip(params, opts = {}) {
141
+ return call("/v1/clip", params, opts);
142
+ }
143
+ export async function seeerAnnotate(params, opts = {}) {
144
+ return call("/v1/annotate", params, opts);
145
+ }
146
+ //# sourceMappingURL=seeer-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeer-client.js","sourceRoot":"","sources":["../src/seeer-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-surface.d.ts","sourceRoot":"","sources":["../src/server-surface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAsB3C,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AA6DD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAI7D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,QA6BnE"}
1
+ {"version":3,"file":"server-surface.d.ts","sourceRoot":"","sources":["../src/server-surface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAuB3C,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAgED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAI7D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,QA8BnE"}
@@ -10,6 +10,7 @@ import { register as registerIssues } from "./tools/issues.js";
10
10
  import { register as registerAgents } from "./tools/agents.js";
11
11
  import { register as registerSkills } from "./tools/skills.js";
12
12
  import { register as registerJobs } from "./tools/jobs.js";
13
+ import { register as registerRecording } from "./tools/recording.js";
13
14
  import { register as registerSession } from "./tools/session.js";
14
15
  import { register as registerWorkflowGuide } from "./prompts/workflow-guide.js";
15
16
  import { register as registerDebugExecution } from "./prompts/debug-execution.js";
@@ -41,7 +42,7 @@ const JOBS_LOOP = `THE MINICOR BUILD LOOP (test-case-first - follow it in this o
41
42
  fromStepId/toStepId + seedExecutionId=<failed execution> (seeds ctx so
42
43
  mid-graph starts resolve earlier steps' values).
43
44
  - Workflow-level bug (microscope): the failing step's workflowId ->
44
- dev_mode_load, edit/run the draft's flow steps (dev_mode_run needs vmId),
45
+ dev_mode_load, edit/run the branch's flow steps (dev_mode_run needs vmId),
45
46
  dev_mode_publish, then back to step 3 - jobs execute PUBLISHED workflows.
46
47
  6. PUBLISH. When run_tests variant=draft is green, publish_job promotes the
47
48
  draft; runtime traffic at /m/:slug serves it immediately.
@@ -55,12 +56,15 @@ trigger filter. cancel_build stops an autonomous teach-loop build.
55
56
  When in doubt about a job, call resolve_job_state - it returns the concrete
56
57
  next tool calls for this loop.
57
58
 
58
- Dev Mode notes: find or create the workflow, call dev_mode_load, inspect and
59
- edit its draft steps, and use the configuration-store tools when the draft
60
- needs configuration values. Every dev_mode_run call must include vmId. Test
61
- the draft before publishing; publishing requires confirm: true. Run progress
62
- is ephemeral; dev_mode_stop_run requests a cooperative stop after the current
63
- step. Jobs execute PUBLISHED workflows, not unpublished Dev Mode drafts.
59
+ Dev Mode notes: find or create the workflow, call dev_mode_load to create your
60
+ user-scoped branch of it (all dev_mode calls take workflowId), inspect and
61
+ edit the branch's steps, and use the configuration-store tools when the branch
62
+ needs configuration values. Every dev_mode_run call must include vmId (the VM
63
+ that executes RPA steps). Test the branch before publishing;
64
+ publishing requires confirm: true and fails with a 409 conflict when
65
+ production changed after the branch was created. Run progress is ephemeral;
66
+ dev_mode_stop_run requests a cooperative stop after the current step. Jobs
67
+ execute PUBLISHED workflows, not unpublished Dev Mode branches.
64
68
 
65
69
  For the microscope details, load get_skill("job-build-loop") and
66
70
  get_skill("rpa-testing-workflow").`;
@@ -91,6 +95,7 @@ export function registerSurface(deps, opts) {
91
95
  registerAgents(deps);
92
96
  registerSkills(deps);
93
97
  registerJobs(deps);
98
+ registerRecording(deps);
94
99
  if (opts.localTools) {
95
100
  registerSyncTools(deps);
96
101
  registerSession(deps);
@@ -1 +1 @@
1
- {"version":3,"file":"server-surface.js","sourceRoot":"","sources":["../src/server-surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-surface.js","sourceRoot":"","sources":["../src/server-surface.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,QAAQ,IAAI,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,QAAQ,IAAI,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAEtF,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AAWrC;;;;GAIG;AACH,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA2CiB,CAAC;AAEpC,MAAM,gBAAgB,GAAG;;;;;;;;;;CAUxB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,UAAmB;IACnD,MAAM,MAAM,GACV,8EAA8E,CAAC;IACjF,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,IAAoB;IAClE,YAAY,CAAC,IAAI,CAAC,CAAC;IACnB,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,WAAW,CAAC,IAAI,CAAC,CAAC;IAClB,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,YAAY,CAAC,IAAI,CAAC,CAAC;IACnB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAExB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7B,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,uEAAuE;QACvE,uEAAuE;QACvE,oEAAoE;QACpE,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
package/dist/sync.js CHANGED
@@ -617,8 +617,9 @@ If \`.minicor/context.md\` exists, read it and skip full analysis. Update it at
617
617
  - Connect to a VM: \`vm_connect\` with tunnel URL from \`.minicor/vms.json\`
618
618
  - Screenshot, inspect UI, write Python scripts
619
619
  - Save steps with \`create_rpa_flow\` (never \`create_flow\` for RPA)
620
- - Or edit an existing workflow's draft: \`dev_mode_load\` -> edit steps -> \`dev_mode_run\`
621
- (needs vmId) -> \`dev_mode_publish\` (jobs execute PUBLISHED workflows)
620
+ - Or edit an existing workflow via your Dev Mode branch — every dev_mode call takes
621
+ workflowId: \`dev_mode_load\` -> edit steps -> \`dev_mode_run\` (also needs vmId) ->
622
+ \`dev_mode_publish\` with confirm=true (jobs execute PUBLISHED workflows)
622
623
 
623
624
  ### Phase 4: Test — run the gate, drill failures top-down
624
625
 
package/dist/sync.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/tools/core.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAuB5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QA+nBtC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/tools/core.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqC5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QAg2BtC"}
@@ -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
- server.tool("get_recording_frames", "Sample 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. 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 sampled. Requires ffmpeg on the MCP host — if unavailable, use get_execution_recording / get_flow_run_recording to get the raw video URL instead.", {
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("Number of evenly-spaced frames to sample (default 4, max 12). Frames are token-expensive, so keep this small."),
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
- const client = deps.client(r);
319
- const { url } = flowRunId != null
320
- ? await client.getFlowRunRecording(workflowId, executionId, flowRunId)
321
- : await client.getExecutionRecording(workflowId, executionId);
322
- const frames = await extractFramesFromUrl(url, { count: frameCount ?? 4, maxWidth });
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 source = flowRunId != null
327
- ? `flow run ${flowRunId} (execution ${executionId})`
328
- : `execution ${executionId}`;
329
- const content = [
330
- {
331
- type: "text",
332
- text: `Sampled ${frames.length} frame(s) from the recording for ${source}, in chronological order:`,
333
- },
334
- ];
335
- for (const frame of frames) {
336
- content.push({ type: "text", text: `── ${frame.label} ──` });
337
- content.push({ type: "image", data: frame.base64, mimeType: "image/jpeg" });
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 { content };
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}`);