@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,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,3 @@
1
+ import type { ToolDeps } from "../types.js";
2
+ export declare function register(deps: ToolDeps): void;
3
+ //# sourceMappingURL=recording.d.ts.map
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording.js","sourceRoot":"","sources":["../../src/tools/recording.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-ops.d.ts","sourceRoot":"","sources":["../../src/tools/workflow-ops.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QA4UtC"}
1
+ {"version":3,"file":"workflow-ops.d.ts","sourceRoot":"","sources":["../../src/tools/workflow-ops.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAgF5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QAiWtC"}
@@ -1,10 +1,73 @@
1
1
  import { z } from "zod";
2
- import { ok, text, analyzeRpaFailure } from "../helpers.js";
2
+ import { ok, json, text, analyzeRpaFailure } from "../helpers.js";
3
3
  import { computeDiff } from "../diff.js";
4
+ import { extractFramesFromUrl } from "../recording-frames.js";
5
+ import { seeerAnalyze, seeerAvailable, seeerFrames, seeerZoom } from "../seeer-client.js";
4
6
  const regionParam = z
5
7
  .enum(["us", "ca"])
6
8
  .optional()
7
9
  .describe("Region (us or ca). Auto-detected from workspace if omitted.");
10
+ /**
11
+ * Visual evidence for a failed RPA step: what the screen looked like around the
12
+ * failure. Uses the step's own recording. With the seeer service: the frame
13
+ * after the step's LAST detected UI event plus a native-res zoom of the region
14
+ * that changed (usually the error dialog itself). Without it: the last frames
15
+ * of the step's recording via local ffmpeg. Best-effort — returns [] when the
16
+ * step has no recording or extraction fails, never breaking the diagnosis.
17
+ */
18
+ async function failureRecordingEvidence(deps, r, workflowId, executionId, flowRunId, stepName) {
19
+ let url;
20
+ try {
21
+ ({ url } = await deps
22
+ .client(r)
23
+ .getFlowRunRecording(workflowId, executionId, flowRunId));
24
+ }
25
+ catch {
26
+ return []; // no recording for this step
27
+ }
28
+ const blocks = [];
29
+ const opts = { userToken: deps.getAuthToken?.(r) };
30
+ try {
31
+ if (seeerAvailable()) {
32
+ const analysis = await seeerAnalyze({ videoUrl: url }, opts);
33
+ const last = analysis.events[analysis.events.length - 1];
34
+ const t = last ? last.tAfter : Math.max(analysis.duration - 0.1, 0);
35
+ const { frames } = await seeerFrames({ videoUrl: url, timestamps: [t], width: 1280 }, opts);
36
+ if (frames.length > 0) {
37
+ blocks.push({
38
+ type: "text",
39
+ text: `── Failed step "${stepName}" (flow run ${flowRunId}): screen at t=${frames[0].t}s, after the last detected UI event ──`,
40
+ });
41
+ blocks.push({ type: "image", data: frames[0].jpegBase64, mimeType: "image/jpeg" });
42
+ }
43
+ if (last && last.type !== "screen_transition") {
44
+ const zoom = await seeerZoom({ videoUrl: url, t, eventId: last.id }, opts);
45
+ blocks.push({
46
+ type: "text",
47
+ text: `── Native-resolution zoom of the last UI change (x=${zoom.region.x} y=${zoom.region.y} ${zoom.region.width}x${zoom.region.height})${last.click ? `, click at (${last.click[0]}, ${last.click[1]})` : ""} ──`,
48
+ });
49
+ blocks.push({ type: "image", data: zoom.jpegBase64, mimeType: "image/jpeg" });
50
+ }
51
+ }
52
+ else {
53
+ const frames = await extractFramesFromUrl(url, { count: 3, maxWidth: 1280 });
54
+ if (frames.length > 0) {
55
+ blocks.push({
56
+ type: "text",
57
+ text: `── Failed step "${stepName}" (flow run ${flowRunId}): recording frames ──`,
58
+ });
59
+ for (const f of frames) {
60
+ blocks.push({ type: "text", text: `── ${f.label} ──` });
61
+ blocks.push({ type: "image", data: f.base64, mimeType: "image/jpeg" });
62
+ }
63
+ }
64
+ }
65
+ }
66
+ catch {
67
+ // Visual evidence is a bonus; the textual diagnosis stands on its own.
68
+ }
69
+ return blocks;
70
+ }
8
71
  export function register(deps) {
9
72
  const { server } = deps;
10
73
  server.tool("preview_flow_changes", "Show a diff of the current flow code vs your proposed changes BEFORE updating. Use this to review changes before pushing them.", {
@@ -207,11 +270,15 @@ export function register(deps) {
207
270
  return text(`Error: ${e.message}`);
208
271
  }
209
272
  });
210
- server.tool("diagnose_execution", "Analyze a workflow execution to find failures. Returns failed steps with errors, preceding step output, code, and for RPA flows: specific failure pattern analysis and fix suggestions.", {
273
+ server.tool("diagnose_execution", "Analyze a workflow execution to find failures. Returns failed steps with errors, preceding step output, code, and for RPA flows: specific failure pattern analysis and fix suggestions. When a failed RPA step has a screen recording, the diagnosis automatically includes visual evidence: the screen around the failure and a native-resolution zoom of the last UI change (set includeRecording false to skip).", {
211
274
  workflowId: z.number().describe("Workflow ID"),
212
275
  executionId: z.number().describe("Execution ID to diagnose"),
276
+ includeRecording: z
277
+ .boolean()
278
+ .optional()
279
+ .describe("Attach recording frames of the first failed step when available (default true)."),
213
280
  region: regionParam,
214
- }, async ({ workflowId, executionId, region }) => {
281
+ }, async ({ workflowId, executionId, includeRecording, region }) => {
215
282
  const r = region;
216
283
  try {
217
284
  const exec = await deps
@@ -257,7 +324,7 @@ export function register(deps) {
257
324
  };
258
325
  });
259
326
  const baseUrl = deps.getApiBase(r);
260
- return ok({
327
+ const diagnosis = {
261
328
  executionId,
262
329
  overallStatus: exec.status,
263
330
  startedAt: exec.startedAt,
@@ -266,7 +333,14 @@ export function register(deps) {
266
333
  totalSteps: flowRuns.length,
267
334
  failures: details,
268
335
  viewInPlatform: `${baseUrl.replace("/api.", "/app.")}/workflow/${workflowId}/execution/${executionId}`,
269
- });
336
+ };
337
+ const content = [{ type: "text", text: json(diagnosis) }];
338
+ if (includeRecording !== false) {
339
+ // Visual evidence for the FIRST failure only — frames are token-expensive.
340
+ const first = failures[0];
341
+ content.push(...(await failureRecordingEvidence(deps, r, workflowId, executionId, first.id, first.flowName ?? String(first.id))));
342
+ }
343
+ return { content };
270
344
  }
271
345
  catch (e) {
272
346
  return text(`Error: ${e.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-ops.js","sourceRoot":"","sources":["../../src/tools/workflow-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-ops.js","sourceRoot":"","sources":["../../src/tools/workflow-ops.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minicor/mcp-server",
3
- "version": "4.0.0",
3
+ "version": "4.2.0",
4
4
  "description": "Desktop and browser RPA automation, workflow management, and AI-powered debugging for the Minicor platform. Formerly Laminar.",
5
5
  "type": "module",
6
6
  "main": "dist/lib.js",
@@ -118,13 +118,16 @@ run_job(
118
118
 
119
119
  The failing step's `workflowId` (from `inspect_job_execution` or `resolve_job_state`):
120
120
 
121
- 1. `dev_mode_load(workflowId)` — loads the workflow into the workspace's shared draft.
121
+ 1. `dev_mode_load(workflowId)` — creates your user-scoped Dev Mode branch of the workflow
122
+ (or returns the branch you already have). All later dev_mode calls take `workflowId`.
122
123
  2. `dev_mode_get_step_list` / `dev_mode_get_step` — find the failing flow step.
123
124
  3. `dev_mode_edit_step` — fix the program.
124
- 4. `dev_mode_run(startStep..endStep, input, vmId)` — run through the failing step with the
125
- input the job fed it (visible in the inspect output). Every dev_mode_run needs `vmId`.
126
- 5. `dev_mode_publish(confirm=true)` — **jobs execute PUBLISHED workflows**, so the fix is
127
- invisible to the job until published.
125
+ 4. `dev_mode_run(workflowId, startStep..endStep, input, vmId)` — run through the failing
126
+ step with the input the job fed it (visible in the inspect output). Every dev_mode_run
127
+ needs `vmId` — the VM that executes RPA steps.
128
+ 5. `dev_mode_publish(workflowId, confirm=true)` — **jobs execute PUBLISHED workflows**, so
129
+ the fix is invisible to the job until published. A 409 conflict means production changed
130
+ after you branched: discard with `dev_mode_delete_draft`, re-branch, reapply.
128
131
  6. Back to Step 3: `run_tests(variant="draft")`.
129
132
 
130
133
  For brand-new RPA steps use `create_rpa_flow` and follow the `rpa-testing-workflow` skill
@@ -157,7 +160,7 @@ runs, fixes through the executor).
157
160
  - Building a definition before any test case exists (no green-gate).
158
161
  - Re-running the entire job to debug one mid-graph step (use fromStepId + seedExecutionId).
159
162
  - Using a range run WITHOUT `seedExecutionId` for a mid-graph start (ctx will be empty).
160
- - Editing a workflow draft and re-running job tests without `dev_mode_publish` (the job
161
- still executes the old published workflow).
163
+ - Editing a workflow's Dev Mode branch and re-running job tests without `dev_mode_publish`
164
+ (the job still executes the old published workflow).
162
165
  - Publishing a job while the draft suite is red.
163
166
  - Fixing RPA failures via `vm_execute_script` instead of through the executor.