@minicor/mcp-server 3.5.0 → 3.8.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 +75 -11
  2. package/dist/__tests__/laminar-client.test.js +24 -0
  3. package/dist/__tests__/laminar-client.test.js.map +1 -1
  4. package/dist/__tests__/middleware-service-client.test.js +10 -3
  5. package/dist/__tests__/middleware-service-client.test.js.map +1 -1
  6. package/dist/__tests__/paths.test.d.ts +2 -0
  7. package/dist/__tests__/paths.test.d.ts.map +1 -0
  8. package/dist/__tests__/paths.test.js +55 -0
  9. package/dist/__tests__/paths.test.js.map +1 -0
  10. package/dist/__tests__/recording-frames.test.d.ts +2 -0
  11. package/dist/__tests__/recording-frames.test.d.ts.map +1 -0
  12. package/dist/__tests__/recording-frames.test.js +46 -0
  13. package/dist/__tests__/recording-frames.test.js.map +1 -0
  14. package/dist/cli.js +4 -3
  15. package/dist/cli.js.map +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +54 -13
  18. package/dist/index.js.map +1 -1
  19. package/dist/laminar-client.d.ts +6 -0
  20. package/dist/laminar-client.d.ts.map +1 -1
  21. package/dist/laminar-client.js +6 -0
  22. package/dist/laminar-client.js.map +1 -1
  23. package/dist/lib.d.ts.map +1 -1
  24. package/dist/lib.js +38 -8
  25. package/dist/lib.js.map +1 -1
  26. package/dist/middleware-service-client.d.ts +94 -3
  27. package/dist/middleware-service-client.d.ts.map +1 -1
  28. package/dist/middleware-service-client.js +30 -4
  29. package/dist/middleware-service-client.js.map +1 -1
  30. package/dist/paths.d.ts +4 -0
  31. package/dist/paths.d.ts.map +1 -1
  32. package/dist/paths.js +33 -0
  33. package/dist/paths.js.map +1 -1
  34. package/dist/prompts/debug-execution.d.ts.map +1 -1
  35. package/dist/prompts/debug-execution.js +3 -2
  36. package/dist/prompts/debug-execution.js.map +1 -1
  37. package/dist/recording-frames.d.ts +58 -0
  38. package/dist/recording-frames.d.ts.map +1 -0
  39. package/dist/recording-frames.js +244 -0
  40. package/dist/recording-frames.js.map +1 -0
  41. package/dist/seed-skills.js +3 -2
  42. package/dist/seed-skills.js.map +1 -1
  43. package/dist/setup.js +67 -31
  44. package/dist/setup.js.map +1 -1
  45. package/dist/tools/core.d.ts.map +1 -1
  46. package/dist/tools/core.js +114 -0
  47. package/dist/tools/core.js.map +1 -1
  48. package/dist/tools/jobs.d.ts.map +1 -1
  49. package/dist/tools/jobs.js +154 -9
  50. package/dist/tools/jobs.js.map +1 -1
  51. package/dist/types.d.ts +9 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +1 -1
@@ -205,8 +205,8 @@ export class MiddlewareServiceClient {
205
205
  async deleteMiddleware(workspaceId, middlewareId) {
206
206
  return this.request("DELETE", `${this.middlewaresBase(workspaceId)}/${middlewareId}`);
207
207
  }
208
- async runJob(workspaceId, middlewareId, routeId, input, trigger = "mcp") {
209
- return this.request("POST", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/run`, { input, trigger });
208
+ async runJob(workspaceId, middlewareId, routeId, input, trigger = "mcp", variant = "published") {
209
+ return this.request("POST", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/run`, { input, trigger, variant });
210
210
  }
211
211
  async getExecution(workspaceId, middlewareId, routeId, executionId) {
212
212
  return this.request("GET", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/executions/${executionId}`);
@@ -235,8 +235,34 @@ export class MiddlewareServiceClient {
235
235
  return this.request("PUT", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/test-cases/${testCaseId}`, body);
236
236
  }
237
237
  // ── Test runs ──────────────────────────────────────────────
238
- async startTestRun(workspaceId, middlewareId, routeId, testCaseIds) {
239
- return this.request("POST", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/test-runs`, testCaseIds ? { testCaseIds } : {});
238
+ async startTestRun(workspaceId, middlewareId, routeId, testCaseIds, variant = "published") {
239
+ return this.request("POST", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/test-runs`, { ...(testCaseIds ? { testCaseIds } : {}), variant });
240
+ }
241
+ // ── Teach-by-example ───────────────────────────────────────
242
+ /** Teach a job by example (management door; same pipeline as the envelope). */
243
+ async teachJob(workspaceId, middlewareId, routeId, body) {
244
+ return this.request("POST", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/teach`, body);
245
+ }
246
+ /** Publish the draft definition (snapshot version, draft -> published). */
247
+ async publishJob(workspaceId, middlewareId, routeId) {
248
+ return this.request("POST", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/publish`);
249
+ }
250
+ async listBuildRuns(workspaceId, middlewareId, routeId) {
251
+ return this.request("GET", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/builds`);
252
+ }
253
+ async getBuildRun(workspaceId, middlewareId, routeId, buildId) {
254
+ return this.request("GET", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/builds/${buildId}`);
255
+ }
256
+ async answerBuildQuestion(workspaceId, middlewareId, routeId, buildId, questionId, answer) {
257
+ return this.request("POST", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/builds/${buildId}/answers`, { questionId, answer });
258
+ }
259
+ /** Builder-facing lifecycle update (status/summary/questions). */
260
+ async updateBuildRun(workspaceId, middlewareId, routeId, buildId, patch) {
261
+ return this.request("PUT", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/builds/${buildId}`, patch);
262
+ }
263
+ /** Artifacts taught onto a job (build-agent context). */
264
+ async listJobArtifacts(workspaceId, middlewareId, routeId) {
265
+ return this.request("GET", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/artifacts`);
240
266
  }
241
267
  async getTestRun(workspaceId, middlewareId, routeId, testRunId) {
242
268
  return this.request("GET", `${this.routesBase(workspaceId, middlewareId)}/${routeId}/test-runs/${testRunId}`);
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-service-client.js","sourceRoot":"","sources":["../src/middleware-service-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware-service-client.js","sourceRoot":"","sources":["../src/middleware-service-client.ts"],"names":[],"mappings":"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"}
package/dist/paths.d.ts CHANGED
@@ -13,5 +13,9 @@ export declare function getConfigPath(): string;
13
13
  export declare function getWriteConfigPath(): string;
14
14
  export type Region = "us" | "ca";
15
15
  export declare function regionToApiBase(region: Region): string;
16
+ export declare function normalizeBaseUrl(baseUrl: string): string;
17
+ export declare function validateApiBaseUrl(baseUrl: string): string;
18
+ export declare function resolveDefaultApiBase(region: Region): string;
19
+ export declare function resolveApiBase(region: Region, storedApiBase?: string | null): string;
16
20
  export declare function apiBaseToRegion(apiBase: string): Region;
17
21
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,QAAA,MAAM,WAAW,QAAsC,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,wBAAgB,YAAY,IAAI,MAAM,CAMrC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,QAAA,MAAM,WAAW,QAAsC,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,wBAAgB,YAAY,IAAI,MAAM,CAMrC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAe1D;AAWD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC5B,MAAM,CAMR;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD"}
package/dist/paths.js CHANGED
@@ -40,6 +40,39 @@ export function regionToApiBase(region) {
40
40
  ? "https://ca.api.laminar.run"
41
41
  : "https://api.laminar.run";
42
42
  }
43
+ export function normalizeBaseUrl(baseUrl) {
44
+ return baseUrl.trim().replace(/\/+$/, "");
45
+ }
46
+ export function validateApiBaseUrl(baseUrl) {
47
+ const normalized = normalizeBaseUrl(baseUrl);
48
+ let parsed;
49
+ try {
50
+ parsed = new URL(normalized);
51
+ }
52
+ catch {
53
+ throw new Error("Backend API URL must be a valid URL.");
54
+ }
55
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
56
+ throw new Error("Backend API URL must start with http:// or https://.");
57
+ }
58
+ return normalized;
59
+ }
60
+ function envApiBase(region) {
61
+ const regional = region === "ca"
62
+ ? process.env.MINICOR_API_BASE_URL_CA
63
+ : process.env.MINICOR_API_BASE_URL_US;
64
+ const base = regional ?? process.env.MINICOR_API_BASE_URL;
65
+ return base && base.trim() !== "" ? normalizeBaseUrl(base) : undefined;
66
+ }
67
+ export function resolveDefaultApiBase(region) {
68
+ return envApiBase(region) ?? regionToApiBase(region);
69
+ }
70
+ export function resolveApiBase(region, storedApiBase) {
71
+ const stored = storedApiBase && storedApiBase.trim() !== ""
72
+ ? normalizeBaseUrl(storedApiBase)
73
+ : undefined;
74
+ return envApiBase(region) ?? stored ?? regionToApiBase(region);
75
+ }
43
76
  export function apiBaseToRegion(apiBase) {
44
77
  return apiBase.includes("ca.api") ? "ca" : "us";
45
78
  }
package/dist/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,MAAM,UAAU,YAAY;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IACjD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IACjD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC;AAID,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,MAAM,KAAK,IAAI;QACpB,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,yBAAyB,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"debug-execution.d.ts","sourceRoot":"","sources":["../../src/prompts/debug-execution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,QA2EpD"}
1
+ {"version":3,"file":"debug-execution.d.ts","sourceRoot":"","sources":["../../src/prompts/debug-execution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,QA4EpD"}
@@ -52,8 +52,9 @@ Analyze the execution, identify failures, explain root causes, and suggest speci
52
52
  - Look at preceding successful steps for context
53
53
 
54
54
  ### 2. Check for video recordings
55
- - RPA step executions include \`recording.blobName\` in their response data (e.g. \`rpa_1_step-name.mp4\`)
56
- - These MP4 recordings can be viewed in the Minicor platform for visual debugging
55
+ - To visually inspect what happened, use \`get_recording_frames\` — it samples full-resolution still frames (as images) from the execution recording, or from a single step when you pass its flow run ID. Great for confirming the on-screen state at the point of failure
56
+ - To hand a full video to a human (or embed it), use \`get_execution_recording\` for a 24h signed URL to the full recording, or \`get_flow_run_recording\` for a single step's recording
57
+ - RPA step executions also include \`recording.blobName\` in their response data (e.g. \`rpa_1_step-name.mp4\`)
57
58
 
58
59
  ### 3. If a VM is connected — reproduce on the live VM
59
60
  - Use \`replay_execution_step\` with the failed flow run ID to re-run the exact script with before/after screenshots
@@ -1 +1 @@
1
- {"version":3,"file":"debug-execution.js","sourceRoot":"","sources":["../../src/prompts/debug-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,MAAM,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAY;IACnD,MAAM,CAAC,MAAM,CACX,0BAA0B,EAC1B,uDAAuD,EACvD;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACvD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACvD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KAC5D,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,aAAkB,CAAC;QACvB,IAAI,SAAc,CAAC;QAEnB,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACvD,SAAS,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,mCAAmC,CAAC,CAAC,OAAO,EAAE;yBACrD;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;;;EAGlB,IAAI,CAAC,SAAS,CAAC;;;EAGf,IAAI,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;wEAuBmD;qBAC3D;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"debug-execution.js","sourceRoot":"","sources":["../../src/prompts/debug-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,MAAM,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAY;IACnD,MAAM,CAAC,MAAM,CACX,0BAA0B,EAC1B,uDAAuD,EACvD;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACvD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACvD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KAC5D,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,aAAkB,CAAC;QACvB,IAAI,SAAc,CAAC;QAEnB,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACvD,SAAS,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,mCAAmC,CAAC,CAAC,OAAO,EAAE;yBACrD;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;;;EAGlB,IAAI,CAAC,SAAS,CAAC;;;EAGf,IAAI,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;wEAwBmD;qBAC3D;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Extracts sampled still frames from a recording (MP4) so that a vision-capable
3
+ * model can visually verify or debug an execution.
4
+ *
5
+ * The recording endpoints return a signed URL to an MP4. A model cannot "watch"
6
+ * a video URL, so this module downloads the video and uses ffmpeg to sample a
7
+ * handful of frames, returned as base64 JPEGs. ffmpeg (and ideally ffprobe) must
8
+ * be available on the MCP host; when they are missing we throw a clear error so
9
+ * the caller can fall back to handing the raw URL to a human.
10
+ */
11
+ export interface ExtractedFrame {
12
+ /** Human-readable label, e.g. "t=12.3s" or "frame 2". */
13
+ label: string;
14
+ /** Frame position in seconds when known, otherwise null. */
15
+ timestampSeconds: number | null;
16
+ /** Base64-encoded JPEG (no data: prefix). */
17
+ base64: string;
18
+ }
19
+ export interface ExtractFramesOptions {
20
+ /** Number of evenly-spaced frames to sample. Default 4. */
21
+ count?: number;
22
+ /**
23
+ * Optional max output width in px. When omitted (the default) frames keep the
24
+ * recording's ORIGINAL resolution — important for reading fine on-screen detail.
25
+ * Only set this if you explicitly want to trade resolution for smaller frames.
26
+ */
27
+ maxWidth?: number;
28
+ /** Max bytes to download before aborting. Default 200 MB. */
29
+ maxBytes?: number;
30
+ /** Overall download timeout in ms. Default 60s. */
31
+ downloadTimeoutMs?: number;
32
+ /** Per-ffmpeg/ffprobe command timeout in ms. Default 30s. */
33
+ commandTimeoutMs?: number;
34
+ ffmpegPath?: string;
35
+ ffprobePath?: string;
36
+ }
37
+ /**
38
+ * Computes evenly-spaced sample timestamps centered within the duration, so we
39
+ * avoid black/blank frames at the very start and end.
40
+ */
41
+ export declare function computeSampleTimestamps(durationSeconds: number, count: number): number[];
42
+ /**
43
+ * Builds an ffmpeg scale filter that caps width while preserving aspect ratio.
44
+ * Returns null when no cap is requested, so frames keep their original resolution.
45
+ */
46
+ export declare function buildScaleFilter(maxWidth?: number): string | null;
47
+ export interface CommandResult {
48
+ code: number | null;
49
+ stdout: string;
50
+ stderr: string;
51
+ }
52
+ export declare function runCommand(command: string, args: string[], timeoutMs: number): Promise<CommandResult>;
53
+ /**
54
+ * Downloads the recording at `url` and returns sampled JPEG frames.
55
+ * Throws with a clear message when ffmpeg is unavailable.
56
+ */
57
+ export declare function extractFramesFromUrl(url: string, options?: ExtractFramesOptions): Promise<ExtractedFrame[]>;
58
+ //# sourceMappingURL=recording-frames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording-frames.d.ts","sourceRoot":"","sources":["../src/recording-frames.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAWD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CASxF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKjE;AAID,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CA4CxB;AAqHD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,cAAc,EAAE,CAAC,CAuF3B"}
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Extracts sampled still frames from a recording (MP4) so that a vision-capable
3
+ * model can visually verify or debug an execution.
4
+ *
5
+ * The recording endpoints return a signed URL to an MP4. A model cannot "watch"
6
+ * a video URL, so this module downloads the video and uses ffmpeg to sample a
7
+ * handful of frames, returned as base64 JPEGs. ffmpeg (and ideally ffprobe) must
8
+ * be available on the MCP host; when they are missing we throw a clear error so
9
+ * the caller can fall back to handing the raw URL to a human.
10
+ */
11
+ import { spawn } from "node:child_process";
12
+ import { mkdtemp, open, readFile, readdir, rm } from "node:fs/promises";
13
+ import { tmpdir } from "node:os";
14
+ import path from "node:path";
15
+ const DEFAULTS = {
16
+ count: 4,
17
+ maxBytes: 200 * 1024 * 1024,
18
+ downloadTimeoutMs: 60_000,
19
+ commandTimeoutMs: 30_000,
20
+ ffmpegPath: "ffmpeg",
21
+ ffprobePath: "ffprobe",
22
+ };
23
+ /**
24
+ * Computes evenly-spaced sample timestamps centered within the duration, so we
25
+ * avoid black/blank frames at the very start and end.
26
+ */
27
+ export function computeSampleTimestamps(durationSeconds, count) {
28
+ if (!Number.isFinite(durationSeconds) || durationSeconds <= 0 || count <= 0) {
29
+ return [];
30
+ }
31
+ const n = Math.min(count, Math.max(1, Math.floor(count)));
32
+ return Array.from({ length: n }, (_, i) => {
33
+ const fraction = (i + 0.5) / n;
34
+ return Number((durationSeconds * fraction).toFixed(3));
35
+ });
36
+ }
37
+ /**
38
+ * Builds an ffmpeg scale filter that caps width while preserving aspect ratio.
39
+ * Returns null when no cap is requested, so frames keep their original resolution.
40
+ */
41
+ export function buildScaleFilter(maxWidth) {
42
+ if (maxWidth == null || !Number.isFinite(maxWidth) || maxWidth <= 0) {
43
+ return null;
44
+ }
45
+ return `scale='min(${maxWidth},iw)':-2`;
46
+ }
47
+ class CommandNotFoundError extends Error {
48
+ }
49
+ export function runCommand(command, args, timeoutMs) {
50
+ return new Promise((resolve, reject) => {
51
+ const child = spawn(command, args, { stdio: ["ignore", "pipe", "pipe"] });
52
+ let stdout = "";
53
+ let stderr = "";
54
+ let settled = false;
55
+ const timer = setTimeout(() => {
56
+ if (settled)
57
+ return;
58
+ settled = true;
59
+ child.kill("SIGKILL");
60
+ reject(new Error(`${command} timed out after ${timeoutMs}ms`));
61
+ }, timeoutMs);
62
+ child.stdout?.on("data", (d) => (stdout += d.toString()));
63
+ child.stderr?.on("data", (d) => (stderr += d.toString()));
64
+ child.on("error", (err) => {
65
+ if (settled)
66
+ return;
67
+ settled = true;
68
+ clearTimeout(timer);
69
+ if (err.code === "ENOENT") {
70
+ reject(new CommandNotFoundError(`'${command}' not found on the MCP host`));
71
+ }
72
+ else {
73
+ reject(err);
74
+ }
75
+ });
76
+ child.on("close", (code) => {
77
+ if (settled)
78
+ return;
79
+ settled = true;
80
+ clearTimeout(timer);
81
+ if (code !== 0) {
82
+ const detail = stderr.trim().split("\n").slice(-3).join("; ");
83
+ reject(new Error(`${command} exited with code ${code}${detail ? `: ${detail}` : ""}`));
84
+ return;
85
+ }
86
+ resolve({ code, stdout, stderr });
87
+ });
88
+ });
89
+ }
90
+ async function downloadToFile(url, dest, maxBytes, timeoutMs) {
91
+ const controller = new AbortController();
92
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
93
+ try {
94
+ const res = await fetch(url, { signal: controller.signal });
95
+ if (!res.ok) {
96
+ throw new Error(`failed to download recording (${res.status})`);
97
+ }
98
+ const contentLength = Number(res.headers.get("content-length") ?? "0");
99
+ if (contentLength && contentLength > maxBytes) {
100
+ throw new Error(`recording too large (${contentLength} bytes > ${maxBytes} limit)`);
101
+ }
102
+ if (!res.body) {
103
+ throw new Error("recording download returned an empty body");
104
+ }
105
+ const handle = await open(dest, "w");
106
+ try {
107
+ let total = 0;
108
+ for await (const chunk of res.body) {
109
+ total += chunk.length;
110
+ if (total > maxBytes) {
111
+ throw new Error(`recording exceeded max size (${maxBytes} bytes)`);
112
+ }
113
+ await handle.write(chunk);
114
+ }
115
+ }
116
+ finally {
117
+ await handle.close();
118
+ }
119
+ }
120
+ finally {
121
+ clearTimeout(timer);
122
+ }
123
+ }
124
+ async function probeDurationSeconds(file, ffprobePath, timeoutMs) {
125
+ try {
126
+ const { stdout } = await runCommand(ffprobePath, ["-v", "error", "-show_entries", "format=duration", "-of", "default=nw=1:nk=1", file], timeoutMs);
127
+ const duration = parseFloat(stdout.trim());
128
+ return Number.isFinite(duration) && duration > 0 ? duration : null;
129
+ }
130
+ catch (e) {
131
+ if (e instanceof CommandNotFoundError) {
132
+ return null; // ffprobe missing; caller falls back to thumbnail sampling
133
+ }
134
+ return null;
135
+ }
136
+ }
137
+ async function extractFrameAt(file, timestampSeconds, outPath, scaleFilter, ffmpegPath, timeoutMs) {
138
+ const args = ["-ss", String(timestampSeconds), "-i", file, "-frames:v", "1"];
139
+ if (scaleFilter) {
140
+ args.push("-vf", scaleFilter);
141
+ }
142
+ // -q:v 2 = highest-quality JPEG, so the original resolution is preserved with minimal artifacts.
143
+ args.push("-q:v", "2", "-y", outPath);
144
+ await runCommand(ffmpegPath, args, timeoutMs);
145
+ }
146
+ async function extractThumbnails(file, count, outPattern, scaleFilter, ffmpegPath, timeoutMs) {
147
+ const vf = scaleFilter ? `thumbnail,${scaleFilter}` : "thumbnail";
148
+ await runCommand(ffmpegPath, [
149
+ "-i",
150
+ file,
151
+ "-vf",
152
+ vf,
153
+ "-frames:v",
154
+ String(count),
155
+ "-vsync",
156
+ "vfr",
157
+ "-q:v",
158
+ "2",
159
+ "-y",
160
+ outPattern,
161
+ ], timeoutMs);
162
+ }
163
+ async function readJpegBase64(file) {
164
+ try {
165
+ const buf = await readFile(file);
166
+ return buf.length > 0 ? buf.toString("base64") : null;
167
+ }
168
+ catch {
169
+ return null;
170
+ }
171
+ }
172
+ /**
173
+ * Downloads the recording at `url` and returns sampled JPEG frames.
174
+ * Throws with a clear message when ffmpeg is unavailable.
175
+ */
176
+ export async function extractFramesFromUrl(url, options = {}) {
177
+ const opts = { ...DEFAULTS, ...options };
178
+ const scaleFilter = buildScaleFilter(opts.maxWidth);
179
+ const workDir = await mkdtemp(path.join(tmpdir(), "laminar-frames-"));
180
+ const videoPath = path.join(workDir, "recording.mp4");
181
+ try {
182
+ await downloadToFile(url, videoPath, opts.maxBytes, opts.downloadTimeoutMs);
183
+ const duration = await probeDurationSeconds(videoPath, opts.ffprobePath, opts.commandTimeoutMs);
184
+ const frames = [];
185
+ try {
186
+ if (duration != null) {
187
+ const timestamps = computeSampleTimestamps(duration, opts.count);
188
+ let lastError = null;
189
+ for (let i = 0; i < timestamps.length; i++) {
190
+ const outPath = path.join(workDir, `frame-${i}.jpg`);
191
+ try {
192
+ await extractFrameAt(videoPath, timestamps[i], outPath, scaleFilter, opts.ffmpegPath, opts.commandTimeoutMs);
193
+ }
194
+ catch (e) {
195
+ // ffmpeg missing is fatal; a single bad frame (e.g. a seek that lands
196
+ // past the end) should not abort the whole sample — record it and move on.
197
+ if (e instanceof CommandNotFoundError)
198
+ throw e;
199
+ lastError = e;
200
+ continue;
201
+ }
202
+ const base64 = await readJpegBase64(outPath);
203
+ if (base64) {
204
+ frames.push({
205
+ label: `t=${timestamps[i].toFixed(1)}s`,
206
+ timestampSeconds: timestamps[i],
207
+ base64,
208
+ });
209
+ }
210
+ }
211
+ // Surface a genuine failure instead of pretending nothing was recorded.
212
+ if (frames.length === 0 && lastError) {
213
+ throw lastError;
214
+ }
215
+ }
216
+ else {
217
+ // No duration (ffprobe missing) — fall back to thumbnail sampling.
218
+ const outPattern = path.join(workDir, "thumb-%03d.jpg");
219
+ await extractThumbnails(videoPath, opts.count, outPattern, scaleFilter, opts.ffmpegPath, opts.commandTimeoutMs);
220
+ const files = (await readdir(workDir))
221
+ .filter((f) => f.startsWith("thumb-") && f.endsWith(".jpg"))
222
+ .sort();
223
+ for (let i = 0; i < files.length; i++) {
224
+ const base64 = await readJpegBase64(path.join(workDir, files[i]));
225
+ if (base64) {
226
+ frames.push({ label: `frame ${i + 1}`, timestampSeconds: null, base64 });
227
+ }
228
+ }
229
+ }
230
+ }
231
+ catch (e) {
232
+ if (e instanceof CommandNotFoundError) {
233
+ throw new Error("ffmpeg is not installed on the MCP host, so frames cannot be extracted. " +
234
+ "Install ffmpeg, or use get_execution_recording / get_flow_run_recording to get the raw video URL.");
235
+ }
236
+ throw e;
237
+ }
238
+ return frames;
239
+ }
240
+ finally {
241
+ await rm(workDir, { recursive: true, force: true }).catch(() => { });
242
+ }
243
+ }
244
+ //# sourceMappingURL=recording-frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording-frames.js","sourceRoot":"","sources":["../src/recording-frames.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  import fs from "node:fs";
13
13
  import { loadAllSkills } from "./skills.js";
14
14
  import { apiToPlatformBase } from "./agent-service-client.js";
15
- import { getTokenPath } from "./paths.js";
15
+ import { getTokenPath, resolveApiBase } from "./paths.js";
16
16
  const adminKey = process.env.SKILLS_ADMIN_KEY;
17
17
  if (!adminKey) {
18
18
  console.error("SKILLS_ADMIN_KEY is required");
@@ -25,11 +25,12 @@ function loadAuthToken() {
25
25
  return null;
26
26
  const raw = JSON.parse(fs.readFileSync(tokenPath, "utf-8"));
27
27
  const region = raw.us || raw.ca || raw;
28
+ const regionKey = raw.ca || region.region === "ca" ? "ca" : "us";
28
29
  if (!region?.access_token)
29
30
  return null;
30
31
  return {
31
32
  token: region.access_token,
32
- apiBase: region.api_base || "https://api.laminar.run",
33
+ apiBase: resolveApiBase(regionKey, region.api_base),
33
34
  };
34
35
  }
35
36
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"seed-skills.js","sourceRoot":"","sources":["../src/seed-skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seed-skills.js","sourceRoot":"","sources":["../src/seed-skills.ts"],"names":[],"mappings":"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"}