@minicor/mcp-server 2.0.8 → 3.0.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 (79) hide show
  1. package/README.md +29 -2
  2. package/dist/__tests__/state.test.d.ts +2 -0
  3. package/dist/__tests__/state.test.d.ts.map +1 -0
  4. package/dist/__tests__/state.test.js +90 -0
  5. package/dist/__tests__/state.test.js.map +1 -0
  6. package/dist/__tests__/vm-service-client.test.d.ts +2 -0
  7. package/dist/__tests__/vm-service-client.test.d.ts.map +1 -0
  8. package/dist/__tests__/vm-service-client.test.js +80 -0
  9. package/dist/__tests__/vm-service-client.test.js.map +1 -0
  10. package/dist/agent-service-client.d.ts +34 -0
  11. package/dist/agent-service-client.d.ts.map +1 -0
  12. package/dist/agent-service-client.js +64 -0
  13. package/dist/agent-service-client.js.map +1 -0
  14. package/dist/helpers.d.ts +1 -1
  15. package/dist/helpers.d.ts.map +1 -1
  16. package/dist/helpers.js +1 -1
  17. package/dist/helpers.js.map +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +13 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/lib.d.ts +2 -0
  22. package/dist/lib.d.ts.map +1 -1
  23. package/dist/lib.js +8 -0
  24. package/dist/lib.js.map +1 -1
  25. package/dist/prompts/build-rpa.d.ts.map +1 -1
  26. package/dist/prompts/build-rpa.js +39 -5
  27. package/dist/prompts/build-rpa.js.map +1 -1
  28. package/dist/state.d.ts +10 -0
  29. package/dist/state.d.ts.map +1 -1
  30. package/dist/state.js +9 -0
  31. package/dist/state.js.map +1 -1
  32. package/dist/tools/{stats.d.ts → agents.d.ts} +1 -1
  33. package/dist/tools/agents.d.ts.map +1 -0
  34. package/dist/tools/agents.js +78 -0
  35. package/dist/tools/agents.js.map +1 -0
  36. package/dist/tools/issues.d.ts.map +1 -1
  37. package/dist/tools/issues.js +12 -9
  38. package/dist/tools/issues.js.map +1 -1
  39. package/dist/tools/vm.d.ts.map +1 -1
  40. package/dist/tools/vm.js +81 -12
  41. package/dist/tools/vm.js.map +1 -1
  42. package/dist/types.d.ts +3 -0
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/vm-service-client.d.ts +24 -0
  45. package/dist/vm-service-client.d.ts.map +1 -0
  46. package/dist/vm-service-client.js +23 -0
  47. package/dist/vm-service-client.js.map +1 -0
  48. package/package.json +2 -2
  49. package/dist/browser-client.d.ts +0 -42
  50. package/dist/browser-client.d.ts.map +0 -1
  51. package/dist/browser-client.js +0 -66
  52. package/dist/browser-client.js.map +0 -1
  53. package/dist/prompts/build-browser-rpa.d.ts +0 -3
  54. package/dist/prompts/build-browser-rpa.d.ts.map +0 -1
  55. package/dist/prompts/build-browser-rpa.js +0 -90
  56. package/dist/prompts/build-browser-rpa.js.map +0 -1
  57. package/dist/prompts/build-nerve-rpa.d.ts +0 -3
  58. package/dist/prompts/build-nerve-rpa.d.ts.map +0 -1
  59. package/dist/prompts/build-nerve-rpa.js +0 -148
  60. package/dist/prompts/build-nerve-rpa.js.map +0 -1
  61. package/dist/services.d.ts +0 -61
  62. package/dist/services.d.ts.map +0 -1
  63. package/dist/services.js +0 -249
  64. package/dist/services.js.map +0 -1
  65. package/dist/tools/browser.d.ts +0 -3
  66. package/dist/tools/browser.d.ts.map +0 -1
  67. package/dist/tools/browser.js +0 -254
  68. package/dist/tools/browser.js.map +0 -1
  69. package/dist/tools/cron.d.ts +0 -3
  70. package/dist/tools/cron.d.ts.map +0 -1
  71. package/dist/tools/cron.js +0 -168
  72. package/dist/tools/cron.js.map +0 -1
  73. package/dist/tools/elasticsearch.d.ts +0 -3
  74. package/dist/tools/elasticsearch.d.ts.map +0 -1
  75. package/dist/tools/elasticsearch.js +0 -248
  76. package/dist/tools/elasticsearch.js.map +0 -1
  77. package/dist/tools/stats.d.ts.map +0 -1
  78. package/dist/tools/stats.js +0 -18
  79. package/dist/tools/stats.js.map +0 -1
@@ -173,7 +173,10 @@ Before writing any automation:
173
173
  - \`vm_screenshot\` immediately after
174
174
  - If result is wrong, go back to (b)
175
175
 
176
- **e. SAVE — Call \`create_rpa_flow\` (only after c + d pass)**
176
+ **e. SAVE — Call \`create_rpa_flow\` (only after c + d pass) — then test it through Minicor individually**
177
+ - After saving, run \`execute_workflow_async\` with \`start_from_step\`/\`end_at_step\` to isolate this step
178
+ - Poll \`get_execution_status\`, then \`vm_screenshot\` to verify the Minicor-executed result
179
+ - Only proceed to the next step once this one passes through the real executor
177
180
  - Pass the validated Python script, step name, description, flowId, and executionOrder
178
181
  - The tool handles all JS wrapping automatically
179
182
  - For browser/CDP automations: set \`dispatchPattern: "browser"\` — routes to \`/execute/browser\` (parallel-safe)
@@ -215,10 +218,11 @@ mrn = data.input.mrn # WRONG — data object doesn't exist in Python
215
218
  - \`data.input\` interpolation only works through the JS wrapper
216
219
  - Step-to-step data flow (\`data.step_N\`) only works in the real executor
217
220
 
218
- **After saving ALL steps, you MUST test through Minicor:**
221
+ **After saving ALL steps, you MUST test end-to-end through Minicor:**
219
222
 
220
- a. \`execute_workflow\` with **real input data** and a **configurationId** pointing to the correct config store
221
- b. If a step fails \`diagnose_execution\` to identify the issue
223
+ a. \`execute_workflow_async\` with **real input data** and a **configurationId** use async so you can monitor
224
+ a2. Poll \`get_execution_status\` every 5-10s and take \`vm_screenshot\` at intervals to observe progress
225
+ b. If a step fails → \`diagnose_execution\` + \`vm_screenshot\` to identify the issue
222
226
  c. Use \`test_workflow_step\` to re-run individual failing steps through Minicor (NOT \`vm_execute_script\`)
223
227
  d. Fix with \`update_flow\`, then re-test through \`execute_workflow\` again
224
228
  e. Iterate until the **full workflow passes end-to-end** through \`execute_workflow\`
@@ -229,6 +233,21 @@ e. Iterate until the **full workflow passes end-to-end** through \`execute_workf
229
233
  - Present completed workflow summary with execution results from Minicor
230
234
  - Make adjustments, re-validate changed steps through \`execute_workflow\`
231
235
 
236
+ ### 8. Offer Agent Setup
237
+ After a workflow passes end-to-end, offer to create an agent to manage it:
238
+
239
+ "Workflow is working. Want me to set up a monitoring agent? It can:
240
+ - **Watch for failures** and auto-recover (monitor mode)
241
+ - **Run on a schedule** (scheduled mode, e.g. daily at 9am)
242
+ - **Notify Slack** when runs complete or fail"
243
+
244
+ If the user agrees, call \`create_agent\` with:
245
+ - \`mode: "monitor"\` + \`watchWorkflowId\` for failure monitoring
246
+ - \`mode: "scheduled"\` + a cron expression for recurring runs
247
+ - \`task\`: describe the recovery/check behavior (e.g. "When this workflow fails, take a screenshot, check if the login expired, and re-run")
248
+ - \`vmUrl\`: the same VM URL used during the build
249
+ - Same \`workspaceId\`
250
+
232
251
  ## Data Extraction Strategy
233
252
 
234
253
  When you need to READ data from the screen (not just click/type), follow this priority order. **Do NOT rely solely on screenshots for data reading.**
@@ -279,6 +298,20 @@ When you need to READ data from the screen (not just click/type), follow this pr
279
298
  - **\`batch_test_rpa\`** — run the workflow with multiple test inputs.
280
299
  - **Video Recordings** — Minicor records MP4 videos of each RPA step execution. Use \`get_full_execution\` to see recording references (\`recording.blobName\`). These can be viewed in the Minicor platform for visual debugging.
281
300
 
301
+ ## State Reset (Idempotency)
302
+
303
+ The workflow MUST return the system to its original state so it can run repeatedly:
304
+ - Last step must reset — close dialogs, navigate back to the starting screen
305
+ - Don't include login/window-opening — those belong in a separate setup workflow
306
+ - After a successful run, immediately re-run to verify idempotency
307
+
308
+ ## Context Persistence
309
+
310
+ Use \`create_issue\` / \`update_issue\` to persist learned context across builds:
311
+ - \`[Agent:<name>] Rules\` — app-specific behaviors (e.g., "Reports tab takes 15s to load")
312
+ - \`[Agent:<name>] Context\` — persistent facts (URLs, credential rotation dates)
313
+ - Read these at the start of future builds to avoid re-learning things
314
+
282
315
  ## Important Rules
283
316
  - **VALIDATE BEFORE SAVING** — no exceptions unless user explicitly opts out
284
317
  - **TEST THROUGH MINICOR** — \`vm_execute_script\` is for prototyping. Always run \`execute_workflow\` with real inputs before declaring done.
@@ -290,7 +323,8 @@ When you need to READ data from the screen (not just click/type), follow this pr
290
323
  - **Start simple** — get basic automation working before adding sophistication
291
324
  - **Add waits** — use \`time.sleep()\` or element-wait patterns between actions
292
325
  - **Handle errors** — try/except with meaningful messages
293
- - **Keep scripts focused** — one logical action per step`,
326
+ - **Keep scripts focused** — one logical action per step
327
+ - **Reset to original state** — every workflow must be idempotent (see State Reset section above)`,
294
328
  },
295
329
  },
296
330
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"build-rpa.js","sourceRoot":"","sources":["../../src/prompts/build-rpa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAY;IAC3C,MAAM,CAAC,MAAM,CACX,oBAAoB,EACpB,wSAAwS,EACxS;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACxD,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,CACP,iHAAiH,CAClH;QACH,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,CACP,uFAAuF,CACxF;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,sEAAsE,CACvE;KACJ,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QACrD,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;;;EAGhB,IAAI;;;EAGJ,OAAO;;;MAGH,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,2BAA2B,UAAU,+BAA+B,CAAC,CAAC,CAAC,8CAA8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAoH1I,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yDAmJsC;iBAC9C;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"build-rpa.js","sourceRoot":"","sources":["../../src/prompts/build-rpa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAY;IAC3C,MAAM,CAAC,MAAM,CACX,oBAAoB,EACpB,wSAAwS,EACxS;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACxD,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,CACP,iHAAiH,CAClH;QACH,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,CACP,uFAAuF,CACxF;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,sEAAsE,CACvE;KACJ,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QACrD,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;;;EAGhB,IAAI;;;EAGJ,OAAO;;;MAGH,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,2BAA2B,UAAU,+BAA+B,CAAC,CAAC,CAAC,8CAA8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAoH1I,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kGAqL+E;iBACvF;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
package/dist/state.d.ts CHANGED
@@ -3,12 +3,22 @@
3
3
  * Imported by tool modules that need to read/write connection state.
4
4
  */
5
5
  import type * as lds from "./lds-client.js";
6
+ import type { VmInfo } from "./vm-service-client.js";
6
7
  export interface LdsConnection {
7
8
  url: string;
8
9
  apiKey?: string;
9
10
  serviceId?: string;
11
+ vmId?: number;
12
+ vmName?: string;
10
13
  }
11
14
  export declare let ldsConnection: LdsConnection | null;
12
15
  export declare function setLdsConnection(conn: LdsConnection | null): void;
13
16
  export declare function ldsAuth(): lds.LdsAuth | undefined;
17
+ export interface VmCacheEntry {
18
+ vms: VmInfo[];
19
+ fetchedAt: number;
20
+ }
21
+ export declare let vmCache: VmCacheEntry | null;
22
+ export declare function setVmCache(entry: VmCacheEntry | null): void;
23
+ export declare function getCachedVm(vmId: number): VmInfo | undefined;
14
24
  //# sourceMappingURL=state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,iBAAiB,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,IAAI,aAAa,EAAE,aAAa,GAAG,IAAW,CAAC;AAEtD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,QAE1D;AAED,wBAAgB,OAAO,IAAI,GAAG,CAAC,OAAO,GAAG,SAAS,CAKjD"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,IAAI,aAAa,EAAE,aAAa,GAAG,IAAW,CAAC;AAEtD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,QAE1D;AAED,wBAAgB,OAAO,IAAI,GAAG,CAAC,OAAO,GAAG,SAAS,CAKjD;AAID,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,IAAI,OAAO,EAAE,YAAY,GAAG,IAAW,CAAC;AAE/C,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,QAEpD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5D"}
package/dist/state.js CHANGED
@@ -12,4 +12,13 @@ export function ldsAuth() {
12
12
  }
13
13
  return undefined;
14
14
  }
15
+ export let vmCache = null;
16
+ export function setVmCache(entry) {
17
+ vmCache = entry;
18
+ }
19
+ export function getCachedVm(vmId) {
20
+ if (!vmCache)
21
+ return undefined;
22
+ return vmCache.vms.find((vm) => vm.id === vmId);
23
+ }
15
24
  //# sourceMappingURL=state.js.map
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,CAAC,IAAI,aAAa,GAAyB,IAAI,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACzD,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,IAAI,aAAa,EAAE,MAAM,IAAI,aAAa,EAAE,SAAS,EAAE,CAAC;QACtD,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC;IAC9E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,MAAM,CAAC,IAAI,aAAa,GAAyB,IAAI,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACzD,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,IAAI,aAAa,EAAE,MAAM,IAAI,aAAa,EAAE,SAAS,EAAE,CAAC;QACtD,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC;IAC9E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AASD,MAAM,CAAC,IAAI,OAAO,GAAwB,IAAI,CAAC;AAE/C,MAAM,UAAU,UAAU,CAAC,KAA0B;IACnD,OAAO,GAAG,KAAK,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;AAClD,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { ToolDeps } from "../types.js";
2
2
  export declare function register(deps: ToolDeps): void;
3
- //# sourceMappingURL=stats.d.ts.map
3
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QAkHtC"}
@@ -0,0 +1,78 @@
1
+ import { z } from "zod";
2
+ import { safe } from "../helpers.js";
3
+ import { AgentServiceClient } from "../agent-service-client.js";
4
+ export function register(deps) {
5
+ const { server } = deps;
6
+ function getClient() {
7
+ const token = deps.getAuthToken?.() || "";
8
+ return new AgentServiceClient(deps.getApiBase(), token);
9
+ }
10
+ server.tool("list_agents", "List agents in a workspace. Agents are autonomous runners that can execute tasks on VMs, monitor workflows, or run on a schedule.", {
11
+ workspaceId: z
12
+ .number()
13
+ .optional()
14
+ .describe("Filter by workspace ID"),
15
+ }, async ({ workspaceId }) => safe(() => getClient().listAgents(workspaceId)));
16
+ server.tool("get_agent", "Get details of a specific agent including its task, mode, VM URL, and run history stats", {
17
+ agentId: z.string().describe("Agent ID (e.g. agt_abc123)"),
18
+ }, async ({ agentId }) => safe(() => getClient().getAgent(agentId)));
19
+ server.tool("create_agent", "Create a new agent in a workspace. The agent can run tasks on a VM using MCP tools. Modes: 'on-demand' (manual/API trigger), 'scheduled' (cron), 'monitor' (triggered by workflow failures).", {
20
+ name: z.string().describe("Agent name"),
21
+ task: z
22
+ .string()
23
+ .describe("The task/instructions for the agent (what it should do when triggered)"),
24
+ vmUrl: z.string().describe("Cloudflare Tunnel URL of the target VM"),
25
+ workspaceId: z.number().describe("Workspace ID"),
26
+ model: z
27
+ .string()
28
+ .optional()
29
+ .describe("Model to use (default: anthropic-sonnet-4)"),
30
+ maxSteps: z
31
+ .number()
32
+ .optional()
33
+ .describe("Max tool-calling steps (default: 50)"),
34
+ mode: z
35
+ .enum(["on-demand", "scheduled", "monitor"])
36
+ .optional()
37
+ .describe("Trigger mode (default: on-demand)"),
38
+ serviceId: z
39
+ .string()
40
+ .optional()
41
+ .describe("LDS service ID for VM authentication"),
42
+ watchWorkflowId: z
43
+ .number()
44
+ .optional()
45
+ .describe("Workflow ID to monitor (for monitor mode)"),
46
+ watchWorkflowName: z
47
+ .string()
48
+ .optional()
49
+ .describe("Workflow name being monitored (for display)"),
50
+ recoveryTask: z
51
+ .string()
52
+ .optional()
53
+ .describe("Recovery instructions when a monitored workflow fails"),
54
+ slackWebhookUrl: z
55
+ .string()
56
+ .optional()
57
+ .describe("Slack webhook URL for run notifications"),
58
+ slackChannel: z
59
+ .string()
60
+ .optional()
61
+ .describe("Slack channel name for notifications"),
62
+ }, async ({ name, task, vmUrl, workspaceId, model, maxSteps, mode, serviceId, watchWorkflowId, watchWorkflowName, recoveryTask, slackWebhookUrl, slackChannel, }) => safe(() => getClient().createAgent({
63
+ name,
64
+ task,
65
+ vm_url: vmUrl,
66
+ workspace_id: workspaceId,
67
+ model,
68
+ max_steps: maxSteps,
69
+ mode,
70
+ service_id: serviceId,
71
+ watch_workflow_id: watchWorkflowId,
72
+ watch_workflow_name: watchWorkflowName,
73
+ recovery_task: recoveryTask,
74
+ slack_webhook_url: slackWebhookUrl,
75
+ slack_channel: slackChannel,
76
+ })));
77
+ }
78
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/tools/issues.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QAwEtC"}
1
+ {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/tools/issues.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QA2EtC"}
@@ -2,15 +2,15 @@ import { z } from "zod";
2
2
  import { safe } from "../helpers.js";
3
3
  export function register(deps) {
4
4
  const { server } = deps;
5
- server.tool("list_issues", "List all issues in a workspace", { workspaceId: z.number().describe("Workspace ID") }, async ({ workspaceId }) => safe(() => deps.client().listIssues(workspaceId)));
6
- server.tool("get_issue", "Get issue details", {
5
+ server.tool("list_issues", "List all issues in a workspace. Issues with titles starting with '[Agent:' are agent-managed context (rules, session notes, persistent state).", { workspaceId: z.number().describe("Workspace ID") }, async ({ workspaceId }) => safe(() => deps.client().listIssues(workspaceId)));
6
+ server.tool("get_issue", "Get a specific issue by ID, including its full description", {
7
7
  workspaceId: z.number().describe("Workspace ID"),
8
8
  issueId: z.number().describe("Issue ID"),
9
9
  }, async ({ workspaceId, issueId }) => safe(() => deps.client().getIssue(workspaceId, issueId)));
10
- server.tool("create_issue", "Create a new issue in a workspace", {
10
+ server.tool("create_issue", "Create an issue in a workspace. Agents use this to persist context across runs — use title prefix '[Agent:<name>] Rules|Context|Session YYYY-MM-DD' and Markdown description.", {
11
11
  workspaceId: z.number().describe("Workspace ID"),
12
12
  title: z.string().describe("Issue title"),
13
- description: z.string().describe("Issue description"),
13
+ description: z.string().describe("Issue description (Markdown supported)"),
14
14
  assignedUserId: z
15
15
  .number()
16
16
  .optional()
@@ -20,18 +20,21 @@ export function register(deps) {
20
20
  description,
21
21
  assignedUserId,
22
22
  })));
23
- server.tool("update_issue", "Update an existing issue (title, description, status, assignee)", {
23
+ server.tool("update_issue", "Update an existing issue's title, description, status, or assignee", {
24
24
  workspaceId: z.number().describe("Workspace ID"),
25
25
  issueId: z.number().describe("Issue ID"),
26
26
  title: z.string().optional().describe("New title"),
27
- description: z.string().optional().describe("New description"),
27
+ description: z.string().optional().describe("New description (Markdown)"),
28
28
  status: z
29
29
  .enum(["OPEN", "IN_PROGRESS", "BLOCKED", "REVIEW", "DONE", "CLOSED"])
30
30
  .optional()
31
31
  .describe("New status"),
32
- assignedUserId: z.number().optional().describe("New assignee user ID"),
33
- }, async ({ workspaceId, issueId, ...data }) => safe(() => deps.client().updateIssue(workspaceId, issueId, data)));
34
- server.tool("delete_issue", "Delete an issue", {
32
+ assignedUserId: z
33
+ .number()
34
+ .optional()
35
+ .describe("User ID to assign the issue to"),
36
+ }, async ({ workspaceId, issueId, ...updates }) => safe(() => deps.client().updateIssue(workspaceId, issueId, updates)));
37
+ server.tool("delete_issue", "Delete an issue from a workspace", {
35
38
  workspaceId: z.number().describe("Workspace ID"),
36
39
  issueId: z.number().describe("Issue ID"),
37
40
  }, async ({ workspaceId, issueId }) => safe(() => deps.client().deleteIssue(workspaceId, issueId)));
@@ -1 +1 @@
1
- {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/tools/issues.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/tools/issues.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vm.d.ts","sourceRoot":"","sources":["../../src/tools/vm.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QAoWtC"}
1
+ {"version":3,"file":"vm.d.ts","sourceRoot":"","sources":["../../src/tools/vm.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QAwbtC"}
package/dist/tools/vm.js CHANGED
@@ -1,8 +1,10 @@
1
1
  import { z } from "zod";
2
2
  import { ok, text, json, NOT_CONNECTED_VM } from "../helpers.js";
3
- import { ldsConnection, setLdsConnection, ldsAuth } from "../state.js";
3
+ import { ldsConnection, setLdsConnection, ldsAuth, setVmCache, getCachedVm } from "../state.js";
4
4
  import * as lds from "../lds-client.js";
5
+ import * as vmService from "../vm-service-client.js";
5
6
  import { generateInspectScript } from "../inspect-scripts.js";
7
+ import { apiBaseToRegion } from "../paths.js";
6
8
  function requireVM() {
7
9
  if (!ldsConnection)
8
10
  return text(NOT_CONNECTED_VM);
@@ -10,19 +12,80 @@ function requireVM() {
10
12
  }
11
13
  export function register(deps) {
12
14
  const { server } = deps;
15
+ // ── VM discovery ─────────────────────────────────────────────
16
+ server.tool("vm_list", "List available VMs for a workspace. Returns VM details including connection info. Use vm_connect with a vmId from the results to connect.", {
17
+ workspaceId: z.number().describe("Workspace ID"),
18
+ region: z.string().optional().describe("Filter by region (e.g. 'us', 'ca')"),
19
+ channelId: z.string().optional().describe("Filter by channel ID"),
20
+ }, async ({ workspaceId, region, channelId }) => {
21
+ try {
22
+ const keys = await deps.client().listApiKeys(workspaceId);
23
+ const apiKeyList = Array.isArray(keys) ? keys : keys?.api_keys ?? keys?.data ?? [];
24
+ if (!apiKeyList.length) {
25
+ return text(`No API keys found for workspace ${workspaceId}. Create one in the Laminar dashboard.`);
26
+ }
27
+ const workspaceApiKey = apiKeyList[0].apiKey ?? apiKeyList[0].api_key ?? apiKeyList[0].key ?? apiKeyList[0];
28
+ const effectiveRegion = region ?? apiBaseToRegion(deps.getApiBase());
29
+ const vms = await vmService.listVms(deps.getVmServiceBase(), typeof workspaceApiKey === "string" ? workspaceApiKey : String(workspaceApiKey), { region: effectiveRegion, channelId });
30
+ setVmCache({ vms, fetchedAt: Date.now() });
31
+ return ok({
32
+ count: vms.length,
33
+ vms: vms.map((vm) => ({
34
+ id: vm.id,
35
+ name: vm.vm_name,
36
+ status: vm.deployment_status ?? vm.status,
37
+ agent_status: vm.agent_status,
38
+ tunnel_url: vm.tunnel_url,
39
+ description: vm.description,
40
+ })),
41
+ });
42
+ }
43
+ catch (e) {
44
+ return text(`Failed to list VMs: ${e.message}`);
45
+ }
46
+ });
13
47
  // ── Connection management ─────────────────────────────────
14
- server.tool("vm_connect", "Connect to a VM via Minicor Desktop Service (Cloudflare Tunnel URL). Must be called before any other vm_* tool. Returns connection info and guidance on available automation approaches (CDP for browsers, uiautomation for desktop, requests for APIs).", {
15
- url: z.string().describe("MDS base URL (Cloudflare Tunnel)"),
16
- apiKey: z.string().optional().describe("MDS API key"),
17
- serviceId: z.string().optional().describe("MDS service ID"),
18
- }, async ({ url, apiKey, serviceId }) => {
48
+ server.tool("vm_connect", "Connect to a VM. Provide vmId (from vm_list) to auto-fill credentials, or provide url directly. Must be called before any other vm_* tool.", {
49
+ vmId: z.number().optional().describe("VM ID from vm_list — auto-fills url, apiKey, serviceId"),
50
+ url: z.string().optional().describe("MDS base URL (Cloudflare Tunnel) — use this OR vmId"),
51
+ apiKey: z.string().optional().describe("MDS API key (not needed with vmId)"),
52
+ serviceId: z.string().optional().describe("MDS service ID (not needed with vmId)"),
53
+ }, async ({ vmId, url, apiKey, serviceId }) => {
54
+ let connectUrl = url;
55
+ let connectApiKey = apiKey;
56
+ let connectServiceId = serviceId;
57
+ let vmName;
58
+ if (vmId) {
59
+ const vm = getCachedVm(vmId);
60
+ if (!vm) {
61
+ return text("VM not found in cache. Run vm_list first to discover available VMs.");
62
+ }
63
+ if (!vm.tunnel_url) {
64
+ return text(`VM "${vm.vm_name}" has no tunnel URL — it may not be running.`);
65
+ }
66
+ connectUrl = vm.tunnel_url;
67
+ connectApiKey = vm.api_key;
68
+ connectServiceId = vm.service_id;
69
+ vmName = vm.vm_name;
70
+ }
71
+ if (!connectUrl) {
72
+ return text("Provide either vmId (from vm_list) or url to connect.");
73
+ }
19
74
  try {
20
- const health = await lds.health(url);
21
- setLdsConnection({ url, apiKey, serviceId });
75
+ const health = await lds.health(connectUrl);
76
+ setLdsConnection({
77
+ url: connectUrl,
78
+ apiKey: connectApiKey,
79
+ serviceId: connectServiceId,
80
+ vmId,
81
+ vmName,
82
+ });
22
83
  return ok({
23
84
  connected: true,
24
- url,
25
- authenticated: !!(apiKey && serviceId),
85
+ url: connectUrl,
86
+ vmId,
87
+ vmName,
88
+ authenticated: !!(connectApiKey && connectServiceId),
26
89
  service: health,
27
90
  next_steps: [
28
91
  "Take vm_screenshot to see the current desktop state",
@@ -38,7 +101,7 @@ export function register(deps) {
38
101
  });
39
102
  }
40
103
  catch (e) {
41
- return text(`Failed to connect to VM at ${url}: ${e.message}`);
104
+ return text(`Failed to connect to VM at ${connectUrl}: ${e.message}`);
42
105
  }
43
106
  });
44
107
  server.tool("vm_disconnect", "Disconnect from the current VM", {}, async () => {
@@ -51,7 +114,13 @@ export function register(deps) {
51
114
  return err;
52
115
  try {
53
116
  const health = await lds.health(ldsConnection.url);
54
- return ok({ connected: true, url: ldsConnection.url, ...health });
117
+ return ok({
118
+ connected: true,
119
+ url: ldsConnection.url,
120
+ vmId: ldsConnection.vmId,
121
+ vmName: ldsConnection.vmName,
122
+ ...health,
123
+ });
55
124
  }
56
125
  catch (e) {
57
126
  return text(`VM unreachable: ${e.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"vm.js","sourceRoot":"","sources":["../../src/tools/vm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vm.js","sourceRoot":"","sources":["../../src/tools/vm.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -7,5 +7,8 @@ export interface ToolDeps {
7
7
  server: McpServer;
8
8
  client: () => LaminarClient;
9
9
  getApiBase: () => string;
10
+ getVmServiceBase: () => string;
11
+ /** The raw auth token (bearer or API key) for passing to proxied services. */
12
+ getAuthToken?: () => string;
10
13
  }
11
14
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,aAAa,CAAC;IAC5B,UAAU,EAAE,MAAM,MAAM,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,aAAa,CAAC;IAC5B,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Stateless HTTP client for the VM Manager service (abuja).
3
+ * Mirrors the lds-client.ts pattern — pure functions, no shared state.
4
+ */
5
+ export interface VmInfo {
6
+ id: number;
7
+ vm_name: string;
8
+ status?: string;
9
+ deployment_status?: string;
10
+ tunnel_url: string | null;
11
+ api_key: string;
12
+ service_id: string;
13
+ channel_id?: string;
14
+ agent_status?: string;
15
+ description?: string;
16
+ tags?: string[] | null;
17
+ workspace_id?: string;
18
+ last_heartbeat_at?: string;
19
+ }
20
+ export declare function listVms(baseUrl: string, workspaceApiKey: string, opts?: {
21
+ region?: string;
22
+ channelId?: string;
23
+ }): Promise<VmInfo[]>;
24
+ //# sourceMappingURL=vm-service-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-service-client.d.ts","sourceRoot":"","sources":["../src/vm-service-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AASD,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBnB"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Stateless HTTP client for the VM Manager service (abuja).
3
+ * Mirrors the lds-client.ts pattern — pure functions, no shared state.
4
+ */
5
+ export async function listVms(baseUrl, workspaceApiKey, opts) {
6
+ const params = new URLSearchParams();
7
+ if (opts?.region)
8
+ params.set("region", opts.region);
9
+ if (opts?.channelId)
10
+ params.set("channel_id", opts.channelId);
11
+ const qs = params.toString();
12
+ const url = `${baseUrl}/vms/list${qs ? `?${qs}` : ""}`;
13
+ const res = await fetch(url, {
14
+ headers: { "X-API-KEY": workspaceApiKey },
15
+ });
16
+ if (!res.ok) {
17
+ const body = await res.text().catch(() => "");
18
+ throw new Error(`VM service returned ${res.status}: ${body}`);
19
+ }
20
+ const data = await res.json();
21
+ return data.vms;
22
+ }
23
+ //# sourceMappingURL=vm-service-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-service-client.js","sourceRoot":"","sources":["../src/vm-service-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,eAAuB,EACvB,IAA8C;IAE9C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,IAAI,EAAE,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,IAAI,EAAE,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,GAAG,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEvD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,OAAO,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE;KAC1C,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,IAAI,GAAoB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minicor/mcp-server",
3
- "version": "2.0.8",
3
+ "version": "3.0.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",
@@ -24,7 +24,7 @@
24
24
  ],
25
25
  "repository": {
26
26
  "type": "git",
27
- "url": "https://github.com/minicor/mcp.git"
27
+ "url": "git+https://github.com/laminar-run/mcp.git"
28
28
  },
29
29
  "homepage": "https://minicor.com",
30
30
  "scripts": {
@@ -1,42 +0,0 @@
1
- /**
2
- * Stateless HTTP client for Browser RPA sessions.
3
- *
4
- * Matches the session-based API pattern from Sully QA workspace:
5
- * POST /sessions → create session
6
- * POST /sessions/:id/act → send action
7
- * POST /sessions/:id/extract → extract data
8
- * GET /sessions/:id/screenshot → screenshot
9
- * DELETE /sessions/:id → close session
10
- */
11
- export interface BrowserAuth {
12
- bearerToken: string;
13
- }
14
- export interface BrowserSessionResponse {
15
- sessionId: string;
16
- [key: string]: unknown;
17
- }
18
- export interface BrowserActResponse {
19
- success?: boolean;
20
- result?: unknown;
21
- [key: string]: unknown;
22
- }
23
- export interface BrowserExtractResponse {
24
- success?: boolean;
25
- data?: unknown;
26
- [key: string]: unknown;
27
- }
28
- export interface BrowserScreenshotResponse {
29
- image?: string;
30
- screenshot?: string;
31
- [key: string]: unknown;
32
- }
33
- export declare function createSession(baseUrl: string, auth: BrowserAuth, opts?: {
34
- slackChannelId?: string;
35
- }): Promise<BrowserSessionResponse>;
36
- export declare function act(baseUrl: string, sessionId: string, message: string, auth: BrowserAuth): Promise<BrowserActResponse>;
37
- export declare function extract(baseUrl: string, sessionId: string, instructions: string, auth: BrowserAuth): Promise<BrowserExtractResponse>;
38
- export declare function screenshot(baseUrl: string, sessionId: string, auth: BrowserAuth): Promise<BrowserScreenshotResponse>;
39
- export declare function closeSession(baseUrl: string, sessionId: string, auth: BrowserAuth): Promise<{
40
- closed: boolean;
41
- }>;
42
- //# sourceMappingURL=browser-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-client.d.ts","sourceRoot":"","sources":["../src/browser-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAwBD,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAOjC;AAED,wBAAsB,GAAG,CACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAO7B;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,sBAAsB,CAAC,CAOjC;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,yBAAyB,CAAC,CAKpC;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAO9B"}