@minicor/mcp-server 4.7.0 → 4.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 (116) hide show
  1. package/README.md +18 -7
  2. package/dist/__tests__/config-stores.test.js +8 -7
  3. package/dist/__tests__/config-stores.test.js.map +1 -1
  4. package/dist/__tests__/dev-mode-draft.test.js +9 -10
  5. package/dist/__tests__/dev-mode-draft.test.js.map +1 -1
  6. package/dist/__tests__/discovery.test.js +6 -5
  7. package/dist/__tests__/discovery.test.js.map +1 -1
  8. package/dist/__tests__/helpers.test.js +20 -0
  9. package/dist/__tests__/helpers.test.js.map +1 -1
  10. package/dist/__tests__/http-server.test.js +118 -0
  11. package/dist/__tests__/http-server.test.js.map +1 -1
  12. package/dist/__tests__/mds-errors.test.d.ts +2 -0
  13. package/dist/__tests__/mds-errors.test.d.ts.map +1 -0
  14. package/dist/__tests__/mds-errors.test.js +91 -0
  15. package/dist/__tests__/mds-errors.test.js.map +1 -0
  16. package/dist/__tests__/state.test.js +104 -44
  17. package/dist/__tests__/state.test.js.map +1 -1
  18. package/dist/__tests__/vm-broker.test.d.ts +2 -0
  19. package/dist/__tests__/vm-broker.test.d.ts.map +1 -0
  20. package/dist/__tests__/vm-broker.test.js +812 -0
  21. package/dist/__tests__/vm-broker.test.js.map +1 -0
  22. package/dist/__tests__/vm-management.test.d.ts +2 -0
  23. package/dist/__tests__/vm-management.test.d.ts.map +1 -0
  24. package/dist/__tests__/vm-management.test.js +507 -0
  25. package/dist/__tests__/vm-management.test.js.map +1 -0
  26. package/dist/agent-service-client.d.ts +12 -0
  27. package/dist/agent-service-client.d.ts.map +1 -1
  28. package/dist/agent-service-client.js +74 -0
  29. package/dist/agent-service-client.js.map +1 -1
  30. package/dist/helpers.d.ts +14 -2
  31. package/dist/helpers.d.ts.map +1 -1
  32. package/dist/helpers.js +12 -3
  33. package/dist/helpers.js.map +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +4 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/lds-client.d.ts +59 -10
  38. package/dist/lds-client.d.ts.map +1 -1
  39. package/dist/lds-client.js +53 -9
  40. package/dist/lds-client.js.map +1 -1
  41. package/dist/lib.d.ts +6 -0
  42. package/dist/lib.d.ts.map +1 -1
  43. package/dist/lib.js +5 -1
  44. package/dist/lib.js.map +1 -1
  45. package/dist/mds-errors.d.ts +32 -0
  46. package/dist/mds-errors.d.ts.map +1 -0
  47. package/dist/mds-errors.js +61 -0
  48. package/dist/mds-errors.js.map +1 -0
  49. package/dist/server-surface.d.ts +2 -0
  50. package/dist/server-surface.d.ts.map +1 -1
  51. package/dist/server-surface.js +5 -2
  52. package/dist/server-surface.js.map +1 -1
  53. package/dist/state.d.ts +28 -14
  54. package/dist/state.d.ts.map +1 -1
  55. package/dist/state.js +58 -40
  56. package/dist/state.js.map +1 -1
  57. package/dist/tools/agents.d.ts.map +1 -1
  58. package/dist/tools/agents.js +2 -3
  59. package/dist/tools/agents.js.map +1 -1
  60. package/dist/tools/config-stores.d.ts.map +1 -1
  61. package/dist/tools/config-stores.js +11 -12
  62. package/dist/tools/config-stores.js.map +1 -1
  63. package/dist/tools/context.d.ts.map +1 -1
  64. package/dist/tools/context.js +1 -2
  65. package/dist/tools/context.js.map +1 -1
  66. package/dist/tools/core.d.ts.map +1 -1
  67. package/dist/tools/core.js +2 -3
  68. package/dist/tools/core.js.map +1 -1
  69. package/dist/tools/dev-mode-draft.d.ts.map +1 -1
  70. package/dist/tools/dev-mode-draft.js +16 -17
  71. package/dist/tools/dev-mode-draft.js.map +1 -1
  72. package/dist/tools/discovery.d.ts.map +1 -1
  73. package/dist/tools/discovery.js +7 -8
  74. package/dist/tools/discovery.js.map +1 -1
  75. package/dist/tools/issues.d.ts.map +1 -1
  76. package/dist/tools/issues.js +7 -8
  77. package/dist/tools/issues.js.map +1 -1
  78. package/dist/tools/jobs.d.ts.map +1 -1
  79. package/dist/tools/jobs.js +1 -2
  80. package/dist/tools/jobs.js.map +1 -1
  81. package/dist/tools/session.d.ts.map +1 -1
  82. package/dist/tools/session.js +9 -10
  83. package/dist/tools/session.js.map +1 -1
  84. package/dist/tools/skills.d.ts.map +1 -1
  85. package/dist/tools/skills.js +2 -3
  86. package/dist/tools/skills.js.map +1 -1
  87. package/dist/tools/sync-tools.d.ts.map +1 -1
  88. package/dist/tools/sync-tools.js +2 -3
  89. package/dist/tools/sync-tools.js.map +1 -1
  90. package/dist/tools/tasks.d.ts +3 -0
  91. package/dist/tools/tasks.d.ts.map +1 -0
  92. package/dist/tools/tasks.js +51 -0
  93. package/dist/tools/tasks.js.map +1 -0
  94. package/dist/tools/tfa.d.ts.map +1 -1
  95. package/dist/tools/tfa.js +14 -5
  96. package/dist/tools/tfa.js.map +1 -1
  97. package/dist/tools/vm-rpa.d.ts +2 -1
  98. package/dist/tools/vm-rpa.d.ts.map +1 -1
  99. package/dist/tools/vm-rpa.js +82 -38
  100. package/dist/tools/vm-rpa.js.map +1 -1
  101. package/dist/tools/vm.d.ts +2 -1
  102. package/dist/tools/vm.d.ts.map +1 -1
  103. package/dist/tools/vm.js +511 -114
  104. package/dist/tools/vm.js.map +1 -1
  105. package/dist/tools/workflow-ops.d.ts.map +1 -1
  106. package/dist/tools/workflow-ops.js.map +1 -1
  107. package/dist/types.d.ts +6 -0
  108. package/dist/types.d.ts.map +1 -1
  109. package/dist/vm-service-client.d.ts +8 -2
  110. package/dist/vm-service-client.d.ts.map +1 -1
  111. package/dist/vm-service-client.js.map +1 -1
  112. package/dist/vm-target.d.ts +55 -0
  113. package/dist/vm-target.d.ts.map +1 -0
  114. package/dist/vm-target.js +134 -0
  115. package/dist/vm-target.js.map +1 -0
  116. package/package.json +1 -1
@@ -0,0 +1,91 @@
1
+ import { describe, expect, it, vi, afterEach } from "vitest";
2
+ import { MdsError, formatMdsError, mdsErrorFromBody } from "../mds-errors.js";
3
+ import * as lds from "../lds-client.js";
4
+ afterEach(() => {
5
+ vi.unstubAllGlobals();
6
+ });
7
+ describe("formatMdsError", () => {
8
+ it("renders code, status, and the MDS detail (the contract's actionable text)", () => {
9
+ const message = formatMdsError({
10
+ code: "session_start_disabled",
11
+ httpStatus: 409,
12
+ detail: "session keeper is disabled on this VM (keeper_enabled=false); sign the user in manually or enable the keeper",
13
+ });
14
+ expect(message).toContain("MDS error 'session_start_disabled' (HTTP 409)");
15
+ expect(message).toContain("sign the user in manually or enable the keeper");
16
+ });
17
+ it("lists knownUsers with a pick-one hint for routing errors", () => {
18
+ const message = formatMdsError({
19
+ code: "target_user_required",
20
+ httpStatus: 400,
21
+ knownUsers: ["robot1", "robot2"],
22
+ });
23
+ expect(message).toContain("Registered users on this VM: robot1, robot2");
24
+ expect(message).toContain("targetUser");
25
+ expect(message).toContain("vm_list_sessions");
26
+ });
27
+ it("renders codes this build has never seen the same way (no special-casing)", () => {
28
+ const message = formatMdsError({
29
+ code: "quantum_entanglement_failure",
30
+ httpStatus: 418,
31
+ detail: "flux capacitor drained",
32
+ });
33
+ expect(message).toBe("MDS error 'quantum_entanglement_failure' (HTTP 418): flux capacitor drained");
34
+ });
35
+ });
36
+ describe("mdsErrorFromBody", () => {
37
+ it("parses a typed body into an MdsError with code, detail and knownUsers", () => {
38
+ const err = mdsErrorFromBody(404, JSON.stringify({
39
+ success: false,
40
+ error: "no_agent_for_user",
41
+ detail: "no live agent for robot2",
42
+ knownUsers: ["robot1", "robot2"],
43
+ }));
44
+ expect(err).toBeInstanceOf(MdsError);
45
+ expect(err?.code).toBe("no_agent_for_user");
46
+ expect(err?.httpStatus).toBe(404);
47
+ expect(err?.detail).toBe("no live agent for robot2");
48
+ expect(err?.knownUsers).toEqual(["robot1", "robot2"]);
49
+ expect(err?.message).toContain("no live agent for robot2");
50
+ });
51
+ it("returns null for non-JSON and untyped bodies", () => {
52
+ expect(mdsErrorFromBody(500, "<html>oops</html>")).toBeNull();
53
+ expect(mdsErrorFromBody(400, JSON.stringify({ success: false }))).toBeNull();
54
+ });
55
+ });
56
+ describe("LDS client typed-error surfacing", () => {
57
+ it("raises MdsError from a typed non-2xx execute response", async () => {
58
+ vi.stubGlobal("fetch", vi.fn(async () => new Response(JSON.stringify({
59
+ success: false,
60
+ error: "target_user_required",
61
+ detail: "multi-session host requires targetUser",
62
+ knownUsers: ["robot1", "robot2"],
63
+ }), { status: 400, headers: { "Content-Type": "application/json" } })));
64
+ const err = await lds
65
+ .execute("https://vm.test", "print(1)")
66
+ .then(() => null)
67
+ .catch((e) => e);
68
+ expect(err).toBeInstanceOf(MdsError);
69
+ expect(err.code).toBe("target_user_required");
70
+ expect(err.message).toContain("robot1, robot2");
71
+ });
72
+ it("keeps plain HTTP errors for untyped failures", async () => {
73
+ vi.stubGlobal("fetch", vi.fn(async () => new Response("gateway exploded", { status: 502 })));
74
+ const err = await lds
75
+ .health("https://vm.test")
76
+ .then(() => null)
77
+ .catch((e) => e);
78
+ expect(err).not.toBeInstanceOf(MdsError);
79
+ expect(err.message).toContain("returned 502");
80
+ });
81
+ it("reads /health.mode with a standalone default for older MDS", () => {
82
+ expect(lds.modeFromHealth({ status: "healthy", version: "1", uptime: 1 })).toBe("standalone");
83
+ expect(lds.modeFromHealth({
84
+ status: "healthy",
85
+ version: "1",
86
+ uptime: 1,
87
+ mode: "broker",
88
+ })).toBe("broker");
89
+ });
90
+ });
91
+ //# sourceMappingURL=mds-errors.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mds-errors.test.js","sourceRoot":"","sources":["../../src/__tests__/mds-errors.test.ts"],"names":[],"mappings":"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"}
@@ -1,45 +1,48 @@
1
1
  import { describe, it, expect, beforeEach } from "vitest";
2
- import { ldsConnection, setLdsConnection, ldsAuth, vmCache, setVmCache, getCachedVm, setWorkspaceRegion, getWorkspaceRegion, clearWorkspaceRegionMap, } from "../state.js";
2
+ import { createSessionState } from "../state.js";
3
3
  describe("LdsConnection", () => {
4
+ let state;
4
5
  beforeEach(() => {
5
- setLdsConnection(null);
6
+ state = createSessionState();
6
7
  });
7
8
  it("starts as null", () => {
8
- expect(ldsConnection).toBeNull();
9
+ expect(state.ldsConnection).toBeNull();
9
10
  });
10
- it("stores connection with vmId and vmName", () => {
11
- setLdsConnection({
11
+ it("stores connection with vmId, vmName and mode", () => {
12
+ state.setLdsConnection({
12
13
  url: "https://vm.example.com",
13
14
  apiKey: "key",
14
15
  serviceId: "svc",
15
16
  vmId: 1,
16
17
  vmName: "test-vm",
18
+ mode: "broker",
17
19
  });
18
- expect(ldsConnection).toEqual({
20
+ expect(state.ldsConnection).toEqual({
19
21
  url: "https://vm.example.com",
20
22
  apiKey: "key",
21
23
  serviceId: "svc",
22
24
  vmId: 1,
23
25
  vmName: "test-vm",
26
+ mode: "broker",
24
27
  });
25
28
  });
26
29
  it("returns auth when apiKey and serviceId are set", () => {
27
- setLdsConnection({ url: "https://vm.example.com", apiKey: "k", serviceId: "s" });
28
- expect(ldsAuth()).toEqual({ apiKey: "k", serviceId: "s" });
30
+ state.setLdsConnection({ url: "https://vm.example.com", apiKey: "k", serviceId: "s" });
31
+ expect(state.ldsAuth()).toEqual({ apiKey: "k", serviceId: "s" });
29
32
  });
30
33
  it("returns undefined auth when apiKey is missing", () => {
31
- setLdsConnection({ url: "https://vm.example.com", serviceId: "s" });
32
- expect(ldsAuth()).toBeUndefined();
34
+ state.setLdsConnection({ url: "https://vm.example.com", serviceId: "s" });
35
+ expect(state.ldsAuth()).toBeUndefined();
33
36
  });
34
37
  it("returns undefined auth when serviceId is missing", () => {
35
- setLdsConnection({ url: "https://vm.example.com", apiKey: "k" });
36
- expect(ldsAuth()).toBeUndefined();
38
+ state.setLdsConnection({ url: "https://vm.example.com", apiKey: "k" });
39
+ expect(state.ldsAuth()).toBeUndefined();
37
40
  });
38
41
  it("clears connection on null", () => {
39
- setLdsConnection({ url: "https://vm.example.com" });
40
- setLdsConnection(null);
41
- expect(ldsConnection).toBeNull();
42
- expect(ldsAuth()).toBeUndefined();
42
+ state.setLdsConnection({ url: "https://vm.example.com" });
43
+ state.setLdsConnection(null);
44
+ expect(state.ldsConnection).toBeNull();
45
+ expect(state.ldsAuth()).toBeUndefined();
43
46
  });
44
47
  });
45
48
  describe("VM cache", () => {
@@ -57,60 +60,117 @@ describe("VM cache", () => {
57
60
  api_key: "key-2",
58
61
  service_id: "svc-2",
59
62
  };
63
+ let state;
60
64
  beforeEach(() => {
61
- setVmCache(null);
65
+ state = createSessionState();
62
66
  });
63
67
  it("starts as null", () => {
64
- expect(vmCache).toBeNull();
68
+ expect(state.vmCache).toBeNull();
65
69
  });
66
70
  it("stores and retrieves VM cache", () => {
67
71
  const now = Date.now();
68
- setVmCache({ vms: [vm1, vm2], fetchedAt: now });
69
- expect(vmCache).toEqual({ vms: [vm1, vm2], fetchedAt: now });
72
+ state.setVmCache({ vms: [vm1, vm2], fetchedAt: now });
73
+ expect(state.vmCache).toEqual({ vms: [vm1, vm2], fetchedAt: now });
70
74
  });
71
75
  it("getCachedVm finds a VM by id", () => {
72
- setVmCache({ vms: [vm1, vm2], fetchedAt: Date.now() });
73
- expect(getCachedVm(1)).toEqual(vm1);
74
- expect(getCachedVm(2)).toEqual(vm2);
76
+ state.setVmCache({ vms: [vm1, vm2], fetchedAt: Date.now() });
77
+ expect(state.getCachedVm(1)).toEqual(vm1);
78
+ expect(state.getCachedVm(2)).toEqual(vm2);
75
79
  });
76
80
  it("getCachedVm returns undefined for unknown id", () => {
77
- setVmCache({ vms: [vm1], fetchedAt: Date.now() });
78
- expect(getCachedVm(999)).toBeUndefined();
81
+ state.setVmCache({ vms: [vm1], fetchedAt: Date.now() });
82
+ expect(state.getCachedVm(999)).toBeUndefined();
79
83
  });
80
84
  it("getCachedVm returns undefined when cache is empty", () => {
81
- expect(getCachedVm(1)).toBeUndefined();
85
+ expect(state.getCachedVm(1)).toBeUndefined();
82
86
  });
83
87
  it("clears cache on null", () => {
84
- setVmCache({ vms: [vm1], fetchedAt: Date.now() });
85
- setVmCache(null);
86
- expect(vmCache).toBeNull();
87
- expect(getCachedVm(1)).toBeUndefined();
88
+ state.setVmCache({ vms: [vm1], fetchedAt: Date.now() });
89
+ state.setVmCache(null);
90
+ expect(state.vmCache).toBeNull();
91
+ expect(state.getCachedVm(1)).toBeUndefined();
88
92
  });
89
93
  });
90
94
  describe("Workspace-region map", () => {
95
+ let state;
91
96
  beforeEach(() => {
92
- clearWorkspaceRegionMap();
97
+ state = createSessionState();
93
98
  });
94
99
  it("returns undefined for unknown workspace", () => {
95
- expect(getWorkspaceRegion(999)).toBeUndefined();
100
+ expect(state.getWorkspaceRegion(999)).toBeUndefined();
96
101
  });
97
102
  it("stores and retrieves a workspace region", () => {
98
- setWorkspaceRegion(1, "us");
99
- setWorkspaceRegion(2, "ca");
100
- expect(getWorkspaceRegion(1)).toBe("us");
101
- expect(getWorkspaceRegion(2)).toBe("ca");
103
+ state.setWorkspaceRegion(1, "us");
104
+ state.setWorkspaceRegion(2, "ca");
105
+ expect(state.getWorkspaceRegion(1)).toBe("us");
106
+ expect(state.getWorkspaceRegion(2)).toBe("ca");
102
107
  });
103
108
  it("overwrites region for the same workspace", () => {
104
- setWorkspaceRegion(1, "us");
105
- setWorkspaceRegion(1, "ca");
106
- expect(getWorkspaceRegion(1)).toBe("ca");
109
+ state.setWorkspaceRegion(1, "us");
110
+ state.setWorkspaceRegion(1, "ca");
111
+ expect(state.getWorkspaceRegion(1)).toBe("ca");
107
112
  });
108
113
  it("clears all mappings", () => {
109
- setWorkspaceRegion(1, "us");
110
- setWorkspaceRegion(2, "ca");
111
- clearWorkspaceRegionMap();
112
- expect(getWorkspaceRegion(1)).toBeUndefined();
113
- expect(getWorkspaceRegion(2)).toBeUndefined();
114
+ state.setWorkspaceRegion(1, "us");
115
+ state.setWorkspaceRegion(2, "ca");
116
+ state.clearWorkspaceRegionMap();
117
+ expect(state.getWorkspaceRegion(1)).toBeUndefined();
118
+ expect(state.getWorkspaceRegion(2)).toBeUndefined();
119
+ });
120
+ });
121
+ describe("instance isolation (plan §4.5.1)", () => {
122
+ it("keeps VM connections per instance — no process-global sharing", () => {
123
+ const a = createSessionState();
124
+ const b = createSessionState();
125
+ a.setLdsConnection({ url: "https://a.example.com", apiKey: "ka", serviceId: "sa", mode: "broker" });
126
+ expect(b.ldsConnection).toBeNull();
127
+ expect(b.ldsAuth()).toBeUndefined();
128
+ b.setLdsConnection({ url: "https://b.example.com" });
129
+ expect(a.ldsConnection?.url).toBe("https://a.example.com");
130
+ expect(a.ldsConnection?.mode).toBe("broker");
131
+ expect(b.ldsConnection?.url).toBe("https://b.example.com");
132
+ a.setLdsConnection(null);
133
+ expect(b.ldsConnection?.url).toBe("https://b.example.com");
134
+ });
135
+ it("keeps VM caches per instance", () => {
136
+ const a = createSessionState();
137
+ const b = createSessionState();
138
+ const vm = {
139
+ id: 7,
140
+ vm_name: "gamma",
141
+ tunnel_url: "https://gamma.example.com",
142
+ api_key: "key-7",
143
+ service_id: "svc-7",
144
+ };
145
+ a.setVmCache({ vms: [vm], fetchedAt: Date.now() });
146
+ expect(a.getCachedVm(7)).toEqual(vm);
147
+ expect(b.vmCache).toBeNull();
148
+ expect(b.getCachedVm(7)).toBeUndefined();
149
+ });
150
+ it("keeps workspace-region maps per instance (workspace ids are account-relative)", () => {
151
+ const a = createSessionState();
152
+ const b = createSessionState();
153
+ a.setWorkspaceRegion(42, "us");
154
+ b.setWorkspaceRegion(42, "ca");
155
+ expect(a.getWorkspaceRegion(42)).toBe("us");
156
+ expect(b.getWorkspaceRegion(42)).toBe("ca");
157
+ });
158
+ it("keeps active workspace sessions per instance", () => {
159
+ const a = createSessionState();
160
+ const b = createSessionState();
161
+ a.setActiveSession({
162
+ directory: "/tmp/a",
163
+ workspaceId: 1,
164
+ startedAt: new Date().toISOString(),
165
+ currentPhase: "build",
166
+ completed: [],
167
+ blocked: [],
168
+ nextSteps: [],
169
+ });
170
+ expect(b.getActiveSession()).toBeNull();
171
+ b.updateActiveSession({ currentPhase: "test" });
172
+ expect(b.getActiveSession()).toBeNull();
173
+ expect(a.getActiveSession()?.currentPhase).toBe("build");
114
174
  });
115
175
  });
116
176
  //# sourceMappingURL=state.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.test.js","sourceRoot":"","sources":["../../src/__tests__/state.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.test.js","sourceRoot":"","sources":["../../src/__tests__/state.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=vm-broker.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-broker.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/vm-broker.test.ts"],"names":[],"mappings":""}