@minicor/mcp-server 3.0.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/state.test.js +27 -1
- package/dist/__tests__/state.test.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +102 -48
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +8 -2
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +48 -7
- package/dist/lib.js.map +1 -1
- package/dist/prompts/debug-execution.d.ts.map +1 -1
- package/dist/prompts/debug-execution.js +5 -3
- package/dist/prompts/debug-execution.js.map +1 -1
- package/dist/setup.js +86 -32
- package/dist/setup.js.map +1 -1
- package/dist/state.d.ts +4 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +11 -0
- package/dist/state.js.map +1 -1
- package/dist/tools/agents.d.ts.map +1 -1
- package/dist/tools/agents.js +34 -20
- package/dist/tools/agents.js.map +1 -1
- package/dist/tools/config-stores.d.ts.map +1 -1
- package/dist/tools/config-stores.js +59 -11
- package/dist/tools/config-stores.js.map +1 -1
- package/dist/tools/core.d.ts.map +1 -1
- package/dist/tools/core.js +141 -33
- package/dist/tools/core.js.map +1 -1
- package/dist/tools/issues.d.ts.map +1 -1
- package/dist/tools/issues.js +41 -9
- package/dist/tools/issues.js.map +1 -1
- package/dist/tools/sync-tools.d.ts.map +1 -1
- package/dist/tools/sync-tools.js +29 -12
- package/dist/tools/sync-tools.js.map +1 -1
- package/dist/tools/tfa.d.ts.map +1 -1
- package/dist/tools/tfa.js +42 -22
- package/dist/tools/tfa.js.map +1 -1
- package/dist/tools/vm-rpa.d.ts.map +1 -1
- package/dist/tools/vm-rpa.js +15 -7
- package/dist/tools/vm-rpa.js.map +1 -1
- package/dist/tools/vm.d.ts.map +1 -1
- package/dist/tools/vm.js +349 -3
- package/dist/tools/vm.js.map +1 -1
- package/dist/tools/workflow-ops.d.ts.map +1 -1
- package/dist/tools/workflow-ops.js +46 -30
- package/dist/tools/workflow-ops.js.map +1 -1
- package/dist/types.d.ts +6 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/tools/vm.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { ok, text, json, NOT_CONNECTED_VM } from "../helpers.js";
|
|
3
|
-
import { ldsConnection, setLdsConnection, ldsAuth, setVmCache, getCachedVm } from "../state.js";
|
|
3
|
+
import { ldsConnection, setLdsConnection, ldsAuth, setVmCache, getCachedVm, getWorkspaceRegion } from "../state.js";
|
|
4
4
|
import * as lds from "../lds-client.js";
|
|
5
5
|
import * as vmService from "../vm-service-client.js";
|
|
6
6
|
import { generateInspectScript } from "../inspect-scripts.js";
|
|
7
7
|
import { apiBaseToRegion } from "../paths.js";
|
|
8
|
+
const regionParam = z
|
|
9
|
+
.enum(["us", "ca"])
|
|
10
|
+
.optional()
|
|
11
|
+
.describe("Region (us or ca). Auto-detected from workspace if omitted.");
|
|
8
12
|
function requireVM() {
|
|
9
13
|
if (!ldsConnection)
|
|
10
14
|
return text(NOT_CONNECTED_VM);
|
|
@@ -19,13 +23,14 @@ export function register(deps) {
|
|
|
19
23
|
channelId: z.string().optional().describe("Filter by channel ID"),
|
|
20
24
|
}, async ({ workspaceId, region, channelId }) => {
|
|
21
25
|
try {
|
|
22
|
-
const
|
|
26
|
+
const wsRegion = (region === "us" || region === "ca" ? region : undefined) ?? getWorkspaceRegion(workspaceId);
|
|
27
|
+
const keys = await deps.client(wsRegion).listApiKeys(workspaceId);
|
|
23
28
|
const apiKeyList = Array.isArray(keys) ? keys : keys?.api_keys ?? keys?.data ?? [];
|
|
24
29
|
if (!apiKeyList.length) {
|
|
25
30
|
return text(`No API keys found for workspace ${workspaceId}. Create one in the Laminar dashboard.`);
|
|
26
31
|
}
|
|
27
32
|
const workspaceApiKey = apiKeyList[0].apiKey ?? apiKeyList[0].api_key ?? apiKeyList[0].key ?? apiKeyList[0];
|
|
28
|
-
const effectiveRegion = region ?? apiBaseToRegion(deps.getApiBase());
|
|
33
|
+
const effectiveRegion = region ?? apiBaseToRegion(deps.getApiBase(wsRegion));
|
|
29
34
|
const vms = await vmService.listVms(deps.getVmServiceBase(), typeof workspaceApiKey === "string" ? workspaceApiKey : String(workspaceApiKey), { region: effectiveRegion, channelId });
|
|
30
35
|
setVmCache({ vms, fetchedAt: Date.now() });
|
|
31
36
|
return ok({
|
|
@@ -44,6 +49,60 @@ export function register(deps) {
|
|
|
44
49
|
return text(`Failed to list VMs: ${e.message}`);
|
|
45
50
|
}
|
|
46
51
|
});
|
|
52
|
+
// ── VM deployment ──────────────────────────────────────────
|
|
53
|
+
server.tool("deploy_vm", "Provision a new Windows VM on Azure. Uses smart region selection — pass 'us' or 'canada' " +
|
|
54
|
+
"and the service finds a region with available quota. Deployment is async (~5-10 min). " +
|
|
55
|
+
"Poll vm_list to check when deployment_status becomes 'deployed'.", {
|
|
56
|
+
workspaceId: z.number().describe("Workspace ID"),
|
|
57
|
+
location: z.enum(["us", "canada", "europe"]).default("us").describe("Geography — auto-selects best region by quota"),
|
|
58
|
+
vmSize: z.string().default("Standard_D2s_v3").describe("Azure VM size"),
|
|
59
|
+
vmNamePrefix: z.string().optional().describe("Custom name prefix (max 15 chars, auto-generated if omitted)"),
|
|
60
|
+
enableRecording: z.boolean().default(true),
|
|
61
|
+
}, async ({ workspaceId, location, vmSize, vmNamePrefix, enableRecording }) => {
|
|
62
|
+
try {
|
|
63
|
+
const authToken = deps.getAuthToken?.();
|
|
64
|
+
if (!authToken)
|
|
65
|
+
return text("No auth token available. Please re-authenticate.");
|
|
66
|
+
const vmServiceUrl = deps.getVmServiceBase();
|
|
67
|
+
const res = await fetch(`${vmServiceUrl}/workspaces/${workspaceId}/vms`, {
|
|
68
|
+
method: "POST",
|
|
69
|
+
headers: {
|
|
70
|
+
"Content-Type": "application/json",
|
|
71
|
+
"Authorization": `Bearer ${authToken}`,
|
|
72
|
+
},
|
|
73
|
+
body: JSON.stringify({
|
|
74
|
+
workspace_id: String(workspaceId),
|
|
75
|
+
location,
|
|
76
|
+
vm_size: vmSize,
|
|
77
|
+
vm_name_prefix: vmNamePrefix || undefined,
|
|
78
|
+
exposed_ports: [1016, 3389],
|
|
79
|
+
enable_recording: enableRecording,
|
|
80
|
+
enable_queue_and_lock: false,
|
|
81
|
+
install_laminar_service: false,
|
|
82
|
+
windows_version: "2022-datacenter",
|
|
83
|
+
}),
|
|
84
|
+
});
|
|
85
|
+
if (!res.ok) {
|
|
86
|
+
const errBody = await res.text().catch(() => "");
|
|
87
|
+
return text(`VM deployment failed (HTTP ${res.status}): ${errBody}`);
|
|
88
|
+
}
|
|
89
|
+
const result = await res.json();
|
|
90
|
+
return ok({
|
|
91
|
+
message: "VM deployment started. It takes ~5-10 minutes.",
|
|
92
|
+
vm_name: result.vm_name,
|
|
93
|
+
username: result.username,
|
|
94
|
+
password: result.password,
|
|
95
|
+
next_steps: [
|
|
96
|
+
"Poll vm_list to check when deployment_status becomes 'deployed'",
|
|
97
|
+
"Once deployed, use install_mds_on_vm to install MDS",
|
|
98
|
+
"Then use vm_connect to connect",
|
|
99
|
+
],
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
catch (e) {
|
|
103
|
+
return text(`VM deployment failed: ${e.message}`);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
47
106
|
// ── Connection management ─────────────────────────────────
|
|
48
107
|
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
108
|
vmId: z.number().optional().describe("VM ID from vm_list — auto-fills url, apiKey, serviceId"),
|
|
@@ -356,5 +415,292 @@ print(json.dumps({"clipboard": clipboard_text}))
|
|
|
356
415
|
return text(`Clipboard read failed: ${e.message}`);
|
|
357
416
|
}
|
|
358
417
|
});
|
|
418
|
+
// ── MDS Installation ───────────────────────────────────────
|
|
419
|
+
const INSTALL_SCRIPT_URL = "https://www.minicor.com/installs/desktop-service/ps1";
|
|
420
|
+
/** Escape for single-quoted PowerShell strings (only ' needs doubling). */
|
|
421
|
+
const psEscape = (s) => s.replace(/'/g, "''");
|
|
422
|
+
server.tool("get_mds_install_command", "Generate a pre-filled PowerShell one-liner to install Minicor Desktop Service on a VM. " +
|
|
423
|
+
"Returns a command the user can paste into an elevated PowerShell window on the target machine.", {
|
|
424
|
+
vmId: z.number().optional().describe("VM ID from vm_list — auto-fills serviceId and apiKey"),
|
|
425
|
+
serviceId: z.string().optional().describe("MDS service ID (manual override)"),
|
|
426
|
+
apiKey: z.string().optional().describe("MDS API key (manual override)"),
|
|
427
|
+
enableRecording: z.boolean().default(true),
|
|
428
|
+
resolution: z.string().default("1280x720"),
|
|
429
|
+
installerUrl: z.string().optional().describe("Override installer URL (e.g. ngrok URL for testing)"),
|
|
430
|
+
}, async ({ vmId, serviceId, apiKey, enableRecording, resolution, installerUrl }) => {
|
|
431
|
+
let sid = serviceId;
|
|
432
|
+
let key = apiKey;
|
|
433
|
+
if (vmId) {
|
|
434
|
+
const vm = getCachedVm(vmId);
|
|
435
|
+
if (vm) {
|
|
436
|
+
sid = sid || vm.service_id;
|
|
437
|
+
key = key || vm.api_key;
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
return text("VM not found in cache. Run vm_list first to discover available VMs.");
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
const envVars = [];
|
|
444
|
+
if (sid)
|
|
445
|
+
envVars.push(`$env:MDS_SERVICE_ID='${psEscape(sid)}'`);
|
|
446
|
+
if (key)
|
|
447
|
+
envVars.push(`$env:MDS_VM_API_KEY='${psEscape(key)}'`);
|
|
448
|
+
envVars.push(`$env:MDS_RECORDING='${enableRecording}'`);
|
|
449
|
+
envVars.push(`$env:MDS_RESOLUTION='${psEscape(resolution)}'`);
|
|
450
|
+
const scriptUrl = installerUrl || INSTALL_SCRIPT_URL;
|
|
451
|
+
const command = `New-Item -ItemType Directory -Path C:\\temp -Force | Out-Null; ${envVars.join("; ")}; irm '${psEscape(scriptUrl)}' -OutFile C:\\temp\\install.ps1; powershell -ExecutionPolicy Bypass -File C:\\temp\\install.ps1`;
|
|
452
|
+
return ok({
|
|
453
|
+
command,
|
|
454
|
+
instructions: "Run this command in an elevated PowerShell window on the target Windows machine.",
|
|
455
|
+
params: {
|
|
456
|
+
serviceId: sid,
|
|
457
|
+
apiKey: key ? `${key.substring(0, 8)}...` : undefined,
|
|
458
|
+
enableRecording,
|
|
459
|
+
resolution,
|
|
460
|
+
installerUrl: scriptUrl,
|
|
461
|
+
},
|
|
462
|
+
});
|
|
463
|
+
});
|
|
464
|
+
server.tool("install_mds_on_vm", "Install Minicor Desktop Service on an Azure VM automatically via Azure Run Command. " +
|
|
465
|
+
"Falls back to generating a manual install command if automated install fails.", {
|
|
466
|
+
workspaceId: z.number().describe("Workspace ID"),
|
|
467
|
+
vmId: z.number().describe("VM ID from vm_list"),
|
|
468
|
+
enableRecording: z.boolean().default(true),
|
|
469
|
+
resolution: z.string().default("1280x720"),
|
|
470
|
+
installerUrl: z.string().optional().describe("Override installer URL (e.g. ngrok URL for testing)"),
|
|
471
|
+
}, async ({ workspaceId, vmId, enableRecording, resolution, installerUrl }) => {
|
|
472
|
+
const vm = getCachedVm(vmId);
|
|
473
|
+
if (!vm) {
|
|
474
|
+
return text("VM not found in cache. Run vm_list first to discover available VMs.");
|
|
475
|
+
}
|
|
476
|
+
const scriptUrl = installerUrl || INSTALL_SCRIPT_URL;
|
|
477
|
+
const key = vm.api_key;
|
|
478
|
+
// Fetch VM credentials for auto-logon (ensures active desktop session for RPA)
|
|
479
|
+
let autoLogonUser = "";
|
|
480
|
+
let autoLogonPass = "";
|
|
481
|
+
try {
|
|
482
|
+
const authToken = deps.getAuthToken?.();
|
|
483
|
+
if (authToken) {
|
|
484
|
+
const credRes = await fetch(`${deps.getVmServiceBase()}/workspaces/${workspaceId}/vms/${vmId}/credentials`, { headers: { "Authorization": `Bearer ${authToken}` } });
|
|
485
|
+
if (credRes.ok) {
|
|
486
|
+
const creds = await credRes.json();
|
|
487
|
+
autoLogonUser = creds.admin_username || "";
|
|
488
|
+
autoLogonPass = creds.admin_password || "";
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
catch { /* credentials fetch failed, skip auto-logon */ }
|
|
493
|
+
// Use single quotes for values that may contain special chars (&, !, }, etc.)
|
|
494
|
+
const psEscape = (s) => s.replace(/'/g, "''"); // only ' needs escaping in single-quoted PS strings
|
|
495
|
+
const envVars = [
|
|
496
|
+
`$env:MDS_VM_API_KEY='${psEscape(key || "")}'`,
|
|
497
|
+
`$env:MDS_RECORDING='${enableRecording}'`,
|
|
498
|
+
`$env:MDS_RESOLUTION='${psEscape(resolution)}'`,
|
|
499
|
+
];
|
|
500
|
+
if (autoLogonUser && autoLogonPass) {
|
|
501
|
+
envVars.push(`$env:MDS_AUTOLOGON_USER='${psEscape(autoLogonUser)}'`);
|
|
502
|
+
envVars.push(`$env:MDS_AUTOLOGON_PASS='${psEscape(autoLogonPass)}'`);
|
|
503
|
+
}
|
|
504
|
+
const installScript = [
|
|
505
|
+
...envVars,
|
|
506
|
+
`New-Item -ItemType Directory -Path "C:\\temp" -Force | Out-Null`,
|
|
507
|
+
`Invoke-WebRequest -Uri "${scriptUrl}" -OutFile "C:\\temp\\install-mds.ps1" -UseBasicParsing`,
|
|
508
|
+
`powershell -ExecutionPolicy Bypass -File "C:\\temp\\install-mds.ps1"`,
|
|
509
|
+
].join("; ");
|
|
510
|
+
try {
|
|
511
|
+
const vmServiceUrl = deps.getVmServiceBase();
|
|
512
|
+
const authToken = deps.getAuthToken?.();
|
|
513
|
+
if (!authToken) {
|
|
514
|
+
return text("No auth token available. Please re-authenticate the MCP.");
|
|
515
|
+
}
|
|
516
|
+
const res = await fetch(`${vmServiceUrl}/workspaces/${workspaceId}/vms/${vmId}/run-script`, {
|
|
517
|
+
method: "POST",
|
|
518
|
+
headers: {
|
|
519
|
+
"Content-Type": "application/json",
|
|
520
|
+
"Authorization": `Bearer ${authToken}`,
|
|
521
|
+
},
|
|
522
|
+
body: JSON.stringify({ script: installScript, timeout: 900, description: "MDS CLI installer via MCP" }),
|
|
523
|
+
});
|
|
524
|
+
if (!res.ok) {
|
|
525
|
+
const errBody = await res.text().catch(() => "");
|
|
526
|
+
const envVars = [`$env:MDS_VM_API_KEY="${key}"`];
|
|
527
|
+
return ok({
|
|
528
|
+
automated: false,
|
|
529
|
+
reason: `Automated install failed (HTTP ${res.status}: ${errBody}). Use this manual command instead:`,
|
|
530
|
+
command: `${envVars.join("; ")}; irm ${scriptUrl} -OutFile C:\\temp\\install.ps1; powershell -ExecutionPolicy Bypass -File C:\\temp\\install.ps1`,
|
|
531
|
+
instructions: "Run this in an elevated PowerShell window on the VM.",
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
const result = await res.json();
|
|
535
|
+
const rebootScheduled = (result.stdout || "").includes("REBOOT_SCHEDULED=true");
|
|
536
|
+
if (rebootScheduled) {
|
|
537
|
+
return ok({
|
|
538
|
+
automated: true,
|
|
539
|
+
message: "MDS installed successfully. VM is rebooting to activate auto-logon (~30-60 seconds). After reboot, call start_mds_on_vm to launch MDS in the interactive desktop session.",
|
|
540
|
+
reboot_scheduled: true,
|
|
541
|
+
stdout: result.stdout,
|
|
542
|
+
stderr: result.stderr,
|
|
543
|
+
next_steps: [
|
|
544
|
+
"Wait 45-60 seconds for the VM to reboot and auto-logon to complete",
|
|
545
|
+
`Call start_mds_on_vm with workspaceId ${workspaceId} and vmId ${vmId}`,
|
|
546
|
+
`Then use vm_connect with vmId ${vmId} to connect`,
|
|
547
|
+
"Take vm_screenshot to verify the desktop",
|
|
548
|
+
],
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
return ok({
|
|
552
|
+
automated: true,
|
|
553
|
+
message: "MDS installation completed via Azure Run Command.",
|
|
554
|
+
stdout: result.stdout,
|
|
555
|
+
stderr: result.stderr,
|
|
556
|
+
next_steps: [
|
|
557
|
+
"Use vm_list to check VM health status",
|
|
558
|
+
`Use vm_connect with vmId ${vmId} to connect`,
|
|
559
|
+
"Take vm_screenshot to verify the desktop",
|
|
560
|
+
],
|
|
561
|
+
});
|
|
562
|
+
}
|
|
563
|
+
catch (e) {
|
|
564
|
+
return ok({
|
|
565
|
+
automated: false,
|
|
566
|
+
reason: `Automated install failed: ${e.message}`,
|
|
567
|
+
command: `New-Item -ItemType Directory -Path C:\\temp -Force | Out-Null; $env:MDS_VM_API_KEY='${psEscape(key || "")}'; irm '${psEscape(scriptUrl)}' -OutFile C:\\temp\\install.ps1; powershell -ExecutionPolicy Bypass -File C:\\temp\\install.ps1`,
|
|
568
|
+
instructions: "Run this in an elevated PowerShell window on the VM.",
|
|
569
|
+
});
|
|
570
|
+
}
|
|
571
|
+
});
|
|
572
|
+
// ── Start MDS after install ────────────────────────────────
|
|
573
|
+
server.tool("start_mds_on_vm", "Start Minicor Desktop Service on an Azure VM via Azure Run Command. " +
|
|
574
|
+
"Use after install_mds_on_vm when MDS installed but health check failed (Session 0 issue). " +
|
|
575
|
+
"Creates a one-shot scheduled task to launch MDS in the interactive desktop session.", {
|
|
576
|
+
workspaceId: z.number().describe("Workspace ID"),
|
|
577
|
+
vmId: z.number().describe("VM ID from vm_list"),
|
|
578
|
+
}, async ({ workspaceId, vmId }) => {
|
|
579
|
+
const vm = getCachedVm(vmId);
|
|
580
|
+
if (!vm) {
|
|
581
|
+
return text("VM not found in cache. Run vm_list first.");
|
|
582
|
+
}
|
|
583
|
+
// PowerShell script that starts MDS in the interactive session
|
|
584
|
+
// Uses WMI to find the logged-on user (more reliable than `query session`)
|
|
585
|
+
const startScript = `
|
|
586
|
+
$exePath = "C:\\Program Files\\MinicorDesktopService\\MinicorDesktopService.exe"
|
|
587
|
+
$installDir = "C:\\Program Files\\MinicorDesktopService"
|
|
588
|
+
if (-not (Test-Path $exePath)) { Write-Error "MDS not installed"; exit 1 }
|
|
589
|
+
|
|
590
|
+
# Ensure cloudflared service is running (tunnel must be up for vm_connect)
|
|
591
|
+
$cfService = Get-Service -Name "Cloudflared" -ErrorAction SilentlyContinue
|
|
592
|
+
if ($cfService) {
|
|
593
|
+
if ($cfService.Status -ne "Running") {
|
|
594
|
+
Start-Service -Name "Cloudflared" -ErrorAction SilentlyContinue
|
|
595
|
+
Start-Sleep -Seconds 3
|
|
596
|
+
Write-Output "cloudflared service started"
|
|
597
|
+
} else {
|
|
598
|
+
Write-Output "cloudflared service already running"
|
|
599
|
+
}
|
|
600
|
+
} else {
|
|
601
|
+
# Service not registered - try to register it now
|
|
602
|
+
$cfBat = Join-Path $installDir "cloudflared\\install-service.bat"
|
|
603
|
+
if (Test-Path $cfBat) {
|
|
604
|
+
$envContent = Get-Content (Join-Path $installDir ".env") -Raw -ErrorAction SilentlyContinue
|
|
605
|
+
if ($envContent -match "CLOUDFLARE_TUNNEL_TOKEN=.+") {
|
|
606
|
+
cmd.exe /c "\`"$cfBat\`" \`"$installDir\`""
|
|
607
|
+
Start-Service -Name "Cloudflared" -ErrorAction SilentlyContinue
|
|
608
|
+
Start-Sleep -Seconds 3
|
|
609
|
+
Write-Output "cloudflared service registered and started"
|
|
610
|
+
} else {
|
|
611
|
+
Write-Output "WARNING: No tunnel token in .env - cloudflared cannot start"
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
$proc = Get-Process -Name MinicorDesktopService -ErrorAction SilentlyContinue
|
|
617
|
+
if ($proc) {
|
|
618
|
+
try { $h = Invoke-WebRequest -Uri "http://localhost:1016/health" -UseBasicParsing -TimeoutSec 3; Write-Output "MDS running and healthy (PID $($proc.Id))"; exit 0 } catch {}
|
|
619
|
+
Write-Output "MDS running but unhealthy, restarting..."
|
|
620
|
+
Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue; Start-Sleep -Seconds 2
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
# Find logged-on interactive user via WMI (retry for up to 30s after reboot)
|
|
624
|
+
$user = $null
|
|
625
|
+
for ($retry = 0; $retry -lt 6; $retry++) {
|
|
626
|
+
$user = (Get-WmiObject -Class Win32_ComputerSystem).UserName
|
|
627
|
+
if (-not $user) {
|
|
628
|
+
$explorer = Get-WmiObject Win32_Process -Filter "name='explorer.exe'" | Select-Object -First 1
|
|
629
|
+
if ($explorer) {
|
|
630
|
+
$owner = $explorer.GetOwner()
|
|
631
|
+
$user = "$($owner.Domain)\\$($owner.User)"
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
if ($user) { break }
|
|
635
|
+
Write-Output "Waiting for interactive user login (attempt $($retry + 1)/6)..."
|
|
636
|
+
Start-Sleep -Seconds 5
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
$taskName = "MinicorDesktopService-Start"
|
|
640
|
+
Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue
|
|
641
|
+
|
|
642
|
+
$action = New-ScheduledTaskAction -Execute $exePath -WorkingDirectory $installDir
|
|
643
|
+
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddSeconds(2)
|
|
644
|
+
$trigger.EndBoundary = (Get-Date).AddMinutes(5).ToString("yyyy-MM-ddTHH:mm:ss")
|
|
645
|
+
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
|
|
646
|
+
|
|
647
|
+
if ($user) {
|
|
648
|
+
$shortUser = if ($user.Contains("\\")) { $user.Split("\\")[1] } else { $user }
|
|
649
|
+
$principal = New-ScheduledTaskPrincipal -UserId $shortUser -LogonType Interactive -RunLevel Highest
|
|
650
|
+
Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Settings $settings -Principal $principal -Force | Out-Null
|
|
651
|
+
} else {
|
|
652
|
+
Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Settings $settings -RunLevel Highest -Force | Out-Null
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
Start-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue
|
|
656
|
+
Start-Sleep -Seconds 8
|
|
657
|
+
|
|
658
|
+
$proc = Get-Process -Name MinicorDesktopService -ErrorAction SilentlyContinue
|
|
659
|
+
Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue
|
|
660
|
+
|
|
661
|
+
if ($proc) {
|
|
662
|
+
# Check health
|
|
663
|
+
try {
|
|
664
|
+
$health = Invoke-WebRequest -Uri "http://localhost:1016/health" -UseBasicParsing -TimeoutSec 5
|
|
665
|
+
Write-Output "MDS running (PID $($proc.Id)), health: $($health.StatusCode)"
|
|
666
|
+
} catch {
|
|
667
|
+
Write-Output "MDS running (PID $($proc.Id)), health endpoint not ready yet"
|
|
668
|
+
}
|
|
669
|
+
} else {
|
|
670
|
+
Write-Output "MDS process not detected after scheduled task launch"
|
|
671
|
+
}
|
|
672
|
+
`.trim();
|
|
673
|
+
try {
|
|
674
|
+
const vmServiceUrl = deps.getVmServiceBase();
|
|
675
|
+
const authToken = deps.getAuthToken?.();
|
|
676
|
+
if (!authToken)
|
|
677
|
+
return text("No auth token available. Please re-authenticate the MCP.");
|
|
678
|
+
const res = await fetch(`${vmServiceUrl}/workspaces/${workspaceId}/vms/${vmId}/run-script`, {
|
|
679
|
+
method: "POST",
|
|
680
|
+
headers: {
|
|
681
|
+
"Content-Type": "application/json",
|
|
682
|
+
"Authorization": `Bearer ${authToken}`,
|
|
683
|
+
},
|
|
684
|
+
body: JSON.stringify({ script: startScript, timeout: 120, description: "Start MDS in interactive session" }),
|
|
685
|
+
});
|
|
686
|
+
if (!res.ok) {
|
|
687
|
+
const errBody = await res.text().catch(() => "");
|
|
688
|
+
return text(`Failed to start MDS (HTTP ${res.status}): ${errBody}`);
|
|
689
|
+
}
|
|
690
|
+
const result = await res.json();
|
|
691
|
+
return ok({
|
|
692
|
+
message: "MDS start command executed.",
|
|
693
|
+
stdout: result.stdout,
|
|
694
|
+
stderr: result.stderr,
|
|
695
|
+
next_steps: [
|
|
696
|
+
`Use vm_connect with vmId ${vmId} to connect`,
|
|
697
|
+
"Take vm_screenshot to verify the desktop",
|
|
698
|
+
],
|
|
699
|
+
});
|
|
700
|
+
}
|
|
701
|
+
catch (e) {
|
|
702
|
+
return text(`Failed to start MDS: ${e.message}`);
|
|
703
|
+
}
|
|
704
|
+
});
|
|
359
705
|
}
|
|
360
706
|
//# sourceMappingURL=vm.js.map
|
package/dist/tools/vm.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-ops.d.ts","sourceRoot":"","sources":["../../src/tools/workflow-ops.ts"],"names":[],"mappings":"
|
|
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,QA+YtC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { ok, text } from "../helpers.js";
|
|
3
3
|
import { computeDiff } from "../diff.js";
|
|
4
|
+
const regionParam = z
|
|
5
|
+
.enum(["us", "ca"])
|
|
6
|
+
.optional()
|
|
7
|
+
.describe("Region (us or ca). Auto-detected from workspace if omitted.");
|
|
4
8
|
export function register(deps) {
|
|
5
9
|
const { server } = deps;
|
|
6
10
|
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 to Laminar.", {
|
|
@@ -13,10 +17,12 @@ export function register(deps) {
|
|
|
13
17
|
.string()
|
|
14
18
|
.optional()
|
|
15
19
|
.describe("New description (if changing)"),
|
|
16
|
-
|
|
20
|
+
region: regionParam,
|
|
21
|
+
}, async ({ flowId, proposedProgram, proposedName, proposedDescription, region }) => {
|
|
22
|
+
const r = region;
|
|
17
23
|
try {
|
|
18
|
-
const flow = await deps.client().getFlow(flowId);
|
|
19
|
-
const currentCode = await deps.client().readFlow(flowId);
|
|
24
|
+
const flow = await deps.client(r).getFlow(flowId);
|
|
25
|
+
const currentCode = await deps.client(r).readFlow(flowId);
|
|
20
26
|
const current = typeof currentCode === "string"
|
|
21
27
|
? currentCode
|
|
22
28
|
: JSON.stringify(currentCode, null, 2);
|
|
@@ -49,17 +55,19 @@ export function register(deps) {
|
|
|
49
55
|
.number()
|
|
50
56
|
.optional()
|
|
51
57
|
.describe("Number of recent executions to include (default 3)"),
|
|
52
|
-
|
|
58
|
+
region: regionParam,
|
|
59
|
+
}, async ({ workflowId, includeExecutions = 3, region }) => {
|
|
60
|
+
const r = region;
|
|
53
61
|
try {
|
|
54
62
|
const [workflow, flows, executions] = await Promise.all([
|
|
55
|
-
deps.client().getWorkflow(workflowId),
|
|
56
|
-
deps.client().getWorkflowFlows(workflowId),
|
|
57
|
-
deps.client().listExecutions(workflowId, { size: includeExecutions }),
|
|
63
|
+
deps.client(r).getWorkflow(workflowId),
|
|
64
|
+
deps.client(r).getWorkflowFlows(workflowId),
|
|
65
|
+
deps.client(r).listExecutions(workflowId, { size: includeExecutions }),
|
|
58
66
|
]);
|
|
59
67
|
const flowList = Array.isArray(flows) ? flows : [];
|
|
60
68
|
const flowsWithCode = await Promise.all(flowList.map(async (f) => {
|
|
61
69
|
try {
|
|
62
|
-
const code = await deps.client().readFlow(f.id);
|
|
70
|
+
const code = await deps.client(r).readFlow(f.id);
|
|
63
71
|
return {
|
|
64
72
|
...f,
|
|
65
73
|
code: typeof code === "string" ? code : JSON.stringify(code),
|
|
@@ -90,9 +98,11 @@ export function register(deps) {
|
|
|
90
98
|
server.tool("get_execution_input", "Get the input data from a specific execution, so you can reuse it to test the workflow again. Returns data.input from the first step.", {
|
|
91
99
|
workflowId: z.number().describe("Workflow ID"),
|
|
92
100
|
executionId: z.number().describe("Execution ID to get input from"),
|
|
93
|
-
|
|
101
|
+
region: regionParam,
|
|
102
|
+
}, async ({ workflowId, executionId, region }) => {
|
|
103
|
+
const r = region;
|
|
94
104
|
try {
|
|
95
|
-
const exec = await deps.client().getExecution(workflowId, executionId);
|
|
105
|
+
const exec = await deps.client(r).getExecution(workflowId, executionId);
|
|
96
106
|
const flowRuns = exec?.flowRuns || [];
|
|
97
107
|
if (flowRuns.length === 0)
|
|
98
108
|
return text("No flow runs found in this execution.");
|
|
@@ -146,7 +156,9 @@ export function register(deps) {
|
|
|
146
156
|
.union([z.number(), z.string()])
|
|
147
157
|
.optional()
|
|
148
158
|
.describe("Configuration store ID (number or string)"),
|
|
149
|
-
|
|
159
|
+
region: regionParam,
|
|
160
|
+
}, async ({ workflowId, step, mode, body, configurationId, region }) => {
|
|
161
|
+
const r = region;
|
|
150
162
|
try {
|
|
151
163
|
const params = { configuration_id: configurationId };
|
|
152
164
|
if (mode === "up_to") {
|
|
@@ -160,7 +172,7 @@ export function register(deps) {
|
|
|
160
172
|
params.start_from_step = step;
|
|
161
173
|
}
|
|
162
174
|
const result = await deps
|
|
163
|
-
.client()
|
|
175
|
+
.client(r)
|
|
164
176
|
.executeWorkflow(workflowId, body, params);
|
|
165
177
|
return ok(result);
|
|
166
178
|
}
|
|
@@ -175,13 +187,15 @@ export function register(deps) {
|
|
|
175
187
|
.optional()
|
|
176
188
|
.describe("First version ID (omit for current)"),
|
|
177
189
|
versionB: z.number().describe("Second version ID to compare against"),
|
|
178
|
-
|
|
190
|
+
region: regionParam,
|
|
191
|
+
}, async ({ flowId, versionA, versionB, region }) => {
|
|
192
|
+
const r = region;
|
|
179
193
|
try {
|
|
180
194
|
const [codeA, codeB] = await Promise.all([
|
|
181
195
|
versionA
|
|
182
|
-
? deps.client().readFlowVersion(flowId, versionA)
|
|
183
|
-
: deps.client().readFlow(flowId),
|
|
184
|
-
deps.client().readFlowVersion(flowId, versionB),
|
|
196
|
+
? deps.client(r).readFlowVersion(flowId, versionA)
|
|
197
|
+
: deps.client(r).readFlow(flowId),
|
|
198
|
+
deps.client(r).readFlowVersion(flowId, versionB),
|
|
185
199
|
]);
|
|
186
200
|
const strA = typeof codeA === "string" ? codeA : JSON.stringify(codeA, null, 2);
|
|
187
201
|
const strB = typeof codeB === "string" ? codeB : JSON.stringify(codeB, null, 2);
|
|
@@ -196,10 +210,12 @@ export function register(deps) {
|
|
|
196
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.", {
|
|
197
211
|
workflowId: z.number().describe("Workflow ID"),
|
|
198
212
|
executionId: z.number().describe("Execution ID to diagnose"),
|
|
199
|
-
|
|
213
|
+
region: regionParam,
|
|
214
|
+
}, async ({ workflowId, executionId, region }) => {
|
|
215
|
+
const r = region;
|
|
200
216
|
try {
|
|
201
217
|
const exec = await deps
|
|
202
|
-
.client()
|
|
218
|
+
.client(r)
|
|
203
219
|
.getExecution(workflowId, executionId);
|
|
204
220
|
const flowRuns = exec?.flowRuns || [];
|
|
205
221
|
const failures = flowRuns.filter((r) => r.status === "FAILED");
|
|
@@ -217,11 +233,11 @@ export function register(deps) {
|
|
|
217
233
|
stepSummary: summary,
|
|
218
234
|
});
|
|
219
235
|
}
|
|
220
|
-
const details = failures.map((
|
|
221
|
-
const prevStep = flowRuns.find((p) => p.executionOrder ===
|
|
236
|
+
const details = failures.map((run) => {
|
|
237
|
+
const prevStep = flowRuns.find((p) => p.executionOrder === run.executionOrder - 1 &&
|
|
222
238
|
p.status === "SUCCESS");
|
|
223
|
-
const errorStr = JSON.stringify(
|
|
224
|
-
const programStr = JSON.stringify(
|
|
239
|
+
const errorStr = JSON.stringify(run.executionLog || run.response || "");
|
|
240
|
+
const programStr = JSON.stringify(run.program || "");
|
|
225
241
|
const isRpa = programStr.includes("lam.rpa") ||
|
|
226
242
|
programStr.includes("lam.httpRequest") ||
|
|
227
243
|
programStr.includes("pyautogui") ||
|
|
@@ -277,13 +293,13 @@ export function register(deps) {
|
|
|
277
293
|
}
|
|
278
294
|
}
|
|
279
295
|
return {
|
|
280
|
-
stepName:
|
|
281
|
-
executionOrder:
|
|
282
|
-
status:
|
|
283
|
-
duration:
|
|
284
|
-
error:
|
|
285
|
-
transformation:
|
|
286
|
-
program:
|
|
296
|
+
stepName: run.flowName,
|
|
297
|
+
executionOrder: run.executionOrder,
|
|
298
|
+
status: run.status,
|
|
299
|
+
duration: run.durationMs,
|
|
300
|
+
error: run.executionLog || run.response,
|
|
301
|
+
transformation: run.transformation,
|
|
302
|
+
program: run.program,
|
|
287
303
|
precedingStepOutput: prevStep
|
|
288
304
|
? {
|
|
289
305
|
name: prevStep.flowName,
|
|
@@ -293,7 +309,7 @@ export function register(deps) {
|
|
|
293
309
|
...(rpaAnalysis && { rpaFailureAnalysis: rpaAnalysis }),
|
|
294
310
|
};
|
|
295
311
|
});
|
|
296
|
-
const baseUrl = deps.getApiBase();
|
|
312
|
+
const baseUrl = deps.getApiBase(r);
|
|
297
313
|
return ok({
|
|
298
314
|
executionId,
|
|
299
315
|
overallStatus: exec.status,
|