@minicor/mcp-server 4.7.0 → 4.9.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 (145) hide show
  1. package/README.md +100 -10
  2. package/dist/__live__/blueprints.live.test.d.ts +2 -0
  3. package/dist/__live__/blueprints.live.test.d.ts.map +1 -0
  4. package/dist/__live__/blueprints.live.test.js +610 -0
  5. package/dist/__live__/blueprints.live.test.js.map +1 -0
  6. package/dist/__tests__/blueprints-tools.test.d.ts +2 -0
  7. package/dist/__tests__/blueprints-tools.test.d.ts.map +1 -0
  8. package/dist/__tests__/blueprints-tools.test.js +1190 -0
  9. package/dist/__tests__/blueprints-tools.test.js.map +1 -0
  10. package/dist/__tests__/config-stores.test.js +8 -7
  11. package/dist/__tests__/config-stores.test.js.map +1 -1
  12. package/dist/__tests__/dev-mode-draft.test.js +9 -10
  13. package/dist/__tests__/dev-mode-draft.test.js.map +1 -1
  14. package/dist/__tests__/discovery.test.js +6 -5
  15. package/dist/__tests__/discovery.test.js.map +1 -1
  16. package/dist/__tests__/helpers.test.js +20 -0
  17. package/dist/__tests__/helpers.test.js.map +1 -1
  18. package/dist/__tests__/http-server.test.js +118 -0
  19. package/dist/__tests__/http-server.test.js.map +1 -1
  20. package/dist/__tests__/jobs-tools.test.js +76 -0
  21. package/dist/__tests__/jobs-tools.test.js.map +1 -1
  22. package/dist/__tests__/mds-errors.test.d.ts +2 -0
  23. package/dist/__tests__/mds-errors.test.d.ts.map +1 -0
  24. package/dist/__tests__/mds-errors.test.js +91 -0
  25. package/dist/__tests__/mds-errors.test.js.map +1 -0
  26. package/dist/__tests__/server-surface.test.js +19 -0
  27. package/dist/__tests__/server-surface.test.js.map +1 -1
  28. package/dist/__tests__/state.test.js +104 -44
  29. package/dist/__tests__/state.test.js.map +1 -1
  30. package/dist/__tests__/vm-broker.test.d.ts +2 -0
  31. package/dist/__tests__/vm-broker.test.d.ts.map +1 -0
  32. package/dist/__tests__/vm-broker.test.js +812 -0
  33. package/dist/__tests__/vm-broker.test.js.map +1 -0
  34. package/dist/__tests__/vm-management.test.d.ts +2 -0
  35. package/dist/__tests__/vm-management.test.d.ts.map +1 -0
  36. package/dist/__tests__/vm-management.test.js +507 -0
  37. package/dist/__tests__/vm-management.test.js.map +1 -0
  38. package/dist/agent-service-client.d.ts +12 -0
  39. package/dist/agent-service-client.d.ts.map +1 -1
  40. package/dist/agent-service-client.js +74 -0
  41. package/dist/agent-service-client.js.map +1 -1
  42. package/dist/bootstrap-perms.d.ts +12 -0
  43. package/dist/bootstrap-perms.d.ts.map +1 -0
  44. package/dist/bootstrap-perms.js +92 -0
  45. package/dist/bootstrap-perms.js.map +1 -0
  46. package/dist/bootstrap.js +2 -63
  47. package/dist/bootstrap.js.map +1 -1
  48. package/dist/helpers.d.ts +14 -2
  49. package/dist/helpers.d.ts.map +1 -1
  50. package/dist/helpers.js +12 -3
  51. package/dist/helpers.js.map +1 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +4 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/lds-client.d.ts +59 -10
  56. package/dist/lds-client.d.ts.map +1 -1
  57. package/dist/lds-client.js +53 -9
  58. package/dist/lds-client.js.map +1 -1
  59. package/dist/lib.d.ts +6 -0
  60. package/dist/lib.d.ts.map +1 -1
  61. package/dist/lib.js +5 -1
  62. package/dist/lib.js.map +1 -1
  63. package/dist/mds-errors.d.ts +32 -0
  64. package/dist/mds-errors.d.ts.map +1 -0
  65. package/dist/mds-errors.js +61 -0
  66. package/dist/mds-errors.js.map +1 -0
  67. package/dist/middleware-service-client.d.ts +286 -0
  68. package/dist/middleware-service-client.d.ts.map +1 -1
  69. package/dist/middleware-service-client.js +143 -1
  70. package/dist/middleware-service-client.js.map +1 -1
  71. package/dist/server-surface.d.ts +2 -0
  72. package/dist/server-surface.d.ts.map +1 -1
  73. package/dist/server-surface.js +31 -3
  74. package/dist/server-surface.js.map +1 -1
  75. package/dist/state.d.ts +28 -14
  76. package/dist/state.d.ts.map +1 -1
  77. package/dist/state.js +58 -40
  78. package/dist/state.js.map +1 -1
  79. package/dist/sync.js +5 -2
  80. package/dist/sync.js.map +1 -1
  81. package/dist/tools/agents.d.ts.map +1 -1
  82. package/dist/tools/agents.js +2 -3
  83. package/dist/tools/agents.js.map +1 -1
  84. package/dist/tools/blueprints.d.ts +20 -0
  85. package/dist/tools/blueprints.d.ts.map +1 -0
  86. package/dist/tools/blueprints.js +1193 -0
  87. package/dist/tools/blueprints.js.map +1 -0
  88. package/dist/tools/config-stores.d.ts.map +1 -1
  89. package/dist/tools/config-stores.js +11 -12
  90. package/dist/tools/config-stores.js.map +1 -1
  91. package/dist/tools/context.d.ts.map +1 -1
  92. package/dist/tools/context.js +1 -2
  93. package/dist/tools/context.js.map +1 -1
  94. package/dist/tools/core.d.ts.map +1 -1
  95. package/dist/tools/core.js +2 -3
  96. package/dist/tools/core.js.map +1 -1
  97. package/dist/tools/dev-mode-draft.d.ts.map +1 -1
  98. package/dist/tools/dev-mode-draft.js +16 -17
  99. package/dist/tools/dev-mode-draft.js.map +1 -1
  100. package/dist/tools/discovery.d.ts.map +1 -1
  101. package/dist/tools/discovery.js +7 -8
  102. package/dist/tools/discovery.js.map +1 -1
  103. package/dist/tools/issues.d.ts.map +1 -1
  104. package/dist/tools/issues.js +7 -8
  105. package/dist/tools/issues.js.map +1 -1
  106. package/dist/tools/jobs.d.ts.map +1 -1
  107. package/dist/tools/jobs.js +58 -7
  108. package/dist/tools/jobs.js.map +1 -1
  109. package/dist/tools/session.d.ts.map +1 -1
  110. package/dist/tools/session.js +9 -10
  111. package/dist/tools/session.js.map +1 -1
  112. package/dist/tools/skills.d.ts.map +1 -1
  113. package/dist/tools/skills.js +2 -3
  114. package/dist/tools/skills.js.map +1 -1
  115. package/dist/tools/sync-tools.d.ts.map +1 -1
  116. package/dist/tools/sync-tools.js +2 -3
  117. package/dist/tools/sync-tools.js.map +1 -1
  118. package/dist/tools/tasks.d.ts +3 -0
  119. package/dist/tools/tasks.d.ts.map +1 -0
  120. package/dist/tools/tasks.js +51 -0
  121. package/dist/tools/tasks.js.map +1 -0
  122. package/dist/tools/tfa.d.ts.map +1 -1
  123. package/dist/tools/tfa.js +14 -5
  124. package/dist/tools/tfa.js.map +1 -1
  125. package/dist/tools/vm-rpa.d.ts +2 -1
  126. package/dist/tools/vm-rpa.d.ts.map +1 -1
  127. package/dist/tools/vm-rpa.js +82 -38
  128. package/dist/tools/vm-rpa.js.map +1 -1
  129. package/dist/tools/vm.d.ts +2 -1
  130. package/dist/tools/vm.d.ts.map +1 -1
  131. package/dist/tools/vm.js +511 -114
  132. package/dist/tools/vm.js.map +1 -1
  133. package/dist/tools/workflow-ops.d.ts.map +1 -1
  134. package/dist/tools/workflow-ops.js.map +1 -1
  135. package/dist/types.d.ts +6 -0
  136. package/dist/types.d.ts.map +1 -1
  137. package/dist/vm-service-client.d.ts +8 -2
  138. package/dist/vm-service-client.d.ts.map +1 -1
  139. package/dist/vm-service-client.js.map +1 -1
  140. package/dist/vm-target.d.ts +55 -0
  141. package/dist/vm-target.d.ts.map +1 -0
  142. package/dist/vm-target.js +134 -0
  143. package/dist/vm-target.js.map +1 -0
  144. package/package.json +2 -1
  145. package/skills/general/blueprint-vm-walkthrough.md +162 -0
@@ -1 +1 @@
1
- {"version":3,"file":"lds-client.d.ts","sourceRoot":"","sources":["../src/lds-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lds-client.d.ts","sourceRoot":"","sources":["../src/lds-client.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,16 @@
3
3
  *
4
4
  * Every method receives the base URL (Cloudflare Tunnel) and optional auth
5
5
  * credentials so the caller (tool handler) can pull them from session state.
6
+ *
7
+ * Typed MDS errors ({"success": false, "error": <code>, ...}) are raised as
8
+ * MdsError with a readable message (see mds-errors.ts); anything else stays
9
+ * a plain HTTP error.
6
10
  */
11
+ import { mdsErrorFromBody } from "./mds-errors.js";
12
+ /** Normalize a /health response into a mode ("standalone" when unreported). */
13
+ export function modeFromHealth(health) {
14
+ return health.mode ?? "standalone";
15
+ }
7
16
  function authHeaders(auth) {
8
17
  if (!auth)
9
18
  return {};
@@ -19,6 +28,9 @@ async function request(url, init) {
19
28
  const res = await fetch(url, init);
20
29
  if (!res.ok) {
21
30
  const body = await res.text().catch(() => "");
31
+ const typed = mdsErrorFromBody(res.status, body);
32
+ if (typed)
33
+ throw typed;
22
34
  throw new Error(`MDS ${init?.method ?? "GET"} ${url} returned ${res.status}: ${body}`);
23
35
  }
24
36
  return res.json();
@@ -27,8 +39,15 @@ export async function health(baseUrl) {
27
39
  const url = `${normalizeUrl(baseUrl)}/health`;
28
40
  return request(url);
29
41
  }
30
- export async function screenshot(baseUrl, auth) {
31
- const url = `${normalizeUrl(baseUrl)}/screenshot`;
42
+ /** Live mode discovery: reads /health.mode ("standalone" when unreported). */
43
+ export async function discoverMode(baseUrl) {
44
+ return modeFromHealth(await health(baseUrl));
45
+ }
46
+ export async function screenshot(baseUrl, auth, targetUser) {
47
+ const qs = targetUser
48
+ ? `?targetUser=${encodeURIComponent(targetUser)}`
49
+ : "";
50
+ const url = `${normalizeUrl(baseUrl)}/screenshot${qs}`;
32
51
  return request(url, {
33
52
  headers: { "Content-Type": "application/json", ...authHeaders(auth) },
34
53
  });
@@ -45,30 +64,55 @@ export async function execute(baseUrl, script, opts, auth) {
45
64
  payload.expectedPreState = opts.expectedPreState;
46
65
  if (opts?.expectedPostState)
47
66
  payload.expectedPostState = opts.expectedPostState;
67
+ if (opts?.targetUser)
68
+ payload.targetUser = opts.targetUser;
48
69
  return request(url, {
49
70
  method: "POST",
50
71
  headers: { "Content-Type": "application/json", ...authHeaders(auth) },
51
72
  body: JSON.stringify(payload),
52
73
  });
53
74
  }
54
- export async function executionStatus(baseUrl, auth) {
55
- const url = `${normalizeUrl(baseUrl)}/execute/status`;
75
+ // ── Broker status + session lifecycle ─────────────────────────
76
+ /** GET /status — broker-only; lists registered users + session/agent state. */
77
+ export async function status(baseUrl, auth) {
78
+ const url = `${normalizeUrl(baseUrl)}/status`;
56
79
  return request(url, {
57
80
  headers: { "Content-Type": "application/json", ...authHeaders(auth) },
58
81
  });
59
82
  }
60
- export async function executionProgress(baseUrl, auth) {
61
- const url = `${normalizeUrl(baseUrl)}/execute/progress`;
83
+ /** POST /sessions/{user}/start blocks until the session is up and its agent registered. */
84
+ export async function sessionStart(baseUrl, user, auth) {
85
+ const url = `${normalizeUrl(baseUrl)}/sessions/${encodeURIComponent(user)}/start`;
62
86
  return request(url, {
87
+ method: "POST",
63
88
  headers: { "Content-Type": "application/json", ...authHeaders(auth) },
64
89
  });
65
90
  }
66
- export async function executionControl(baseUrl, command, auth) {
67
- const url = `${normalizeUrl(baseUrl)}/execute/control`;
91
+ /** POST /sessions/{user}/stop — disconnects (session stays logged in, goes dark). */
92
+ export async function sessionStop(baseUrl, user, auth) {
93
+ const url = `${normalizeUrl(baseUrl)}/sessions/${encodeURIComponent(user)}/stop`;
68
94
  return request(url, {
69
95
  method: "POST",
70
96
  headers: { "Content-Type": "application/json", ...authHeaders(auth) },
71
- body: JSON.stringify({ command }),
97
+ });
98
+ }
99
+ export async function executionStatus(baseUrl, auth) {
100
+ const url = `${normalizeUrl(baseUrl)}/execute/status`;
101
+ return request(url, {
102
+ headers: { "Content-Type": "application/json", ...authHeaders(auth) },
103
+ });
104
+ }
105
+ export async function executionProgress(baseUrl, auth, opts) {
106
+ const params = new URLSearchParams();
107
+ if (opts?.executionId)
108
+ params.set("executionId", opts.executionId);
109
+ // Brokers route the progress lookup to that user's agent.
110
+ if (opts?.targetUser)
111
+ params.set("targetUser", opts.targetUser);
112
+ const qs = params.toString();
113
+ const url = `${normalizeUrl(baseUrl)}/execute/progress${qs ? `?${qs}` : ""}`;
114
+ return request(url, {
115
+ headers: { "Content-Type": "application/json", ...authHeaders(auth) },
72
116
  });
73
117
  }
74
118
  export async function recentExecutions(baseUrl, opts, auth) {
@@ -1 +1 @@
1
- {"version":3,"file":"lds-client.js","sourceRoot":"","sources":["../src/lds-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lds-client.js","sourceRoot":"","sources":["../src/lds-client.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts CHANGED
@@ -39,6 +39,12 @@ export interface MinicorServerOptions {
39
39
  * because its disk is ephemeral and shared across users.
40
40
  */
41
41
  localTools?: boolean;
42
+ /**
43
+ * Let the stateful direct-VM tools hold a live VM connection. Default true.
44
+ * The hosted stateless HTTP server sets false (a per-request server cannot
45
+ * hold a connection); the tools stay registered but point to a local install.
46
+ */
47
+ directVmTools?: boolean;
42
48
  }
43
49
  /**
44
50
  * Create and connect a Minicor MCP server on the given transport.
package/dist/lib.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE/E,OAAO,EAIL,KAAK,MAAM,EACZ,MAAM,YAAY,CAAC;AAkBpB,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACrF,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wKAAwK;IACxK,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAkDD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAiJ5D;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE/E,OAAO,EAIL,KAAK,MAAM,EACZ,MAAM,YAAY,CAAC;AAmBpB,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACrF,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wKAAwK;IACxK,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAkDD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAoJ5D;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
package/dist/lib.js CHANGED
@@ -18,6 +18,7 @@ import { apiBaseToRegion, resolveApiBase, validateApiBaseUrl, } from "./paths.js
18
18
  import { TokenProvider } from "./token-provider.js";
19
19
  import { CodeModeToolRegistry, asMcpServer, buildCodeModeInstructions, shouldUseCodeMode, } from "./codemode.js";
20
20
  import { SERVER_NAME, buildInstructions, registerSurface, } from "./server-surface.js";
21
+ import { createSessionState } from "./state.js";
21
22
  import { autoCheckpoint } from "./tools/session.js";
22
23
  const DEFAULT_VM_SERVICE_URL = "https://lam-vm-service-ernfuwetfa-uc.a.run.app";
23
24
  async function refreshViaApi(apiBase, refreshToken) {
@@ -58,6 +59,7 @@ function buildProvider(creds, apiBase, onUpdate) {
58
59
  */
59
60
  export async function createMinicorServer(transport, opts = {}) {
60
61
  const localTools = opts.localTools ?? true;
62
+ const directVmTools = opts.directVmTools ?? true;
61
63
  const codeModeEnabled = opts.codeMode ?? shouldUseCodeMode();
62
64
  const instructions = buildInstructions(localTools);
63
65
  const server = new McpServer({ name: SERVER_NAME, version: "4.7.0" }, {
@@ -119,6 +121,8 @@ export async function createMinicorServer(transport, opts = {}) {
119
121
  : server;
120
122
  const deps = {
121
123
  server: registrationServer,
124
+ // Each instance owns its VM/session state; never shared across servers.
125
+ state: createSessionState(),
122
126
  client: (region) => {
123
127
  const r = region ?? getDefaultRegion();
124
128
  const c = clients.get(r);
@@ -158,7 +162,7 @@ export async function createMinicorServer(transport, opts = {}) {
158
162
  getAuthToken: (region) => tokens.get(region ?? getDefaultRegion()) ?? "",
159
163
  availableRegions: () => [...clients.keys()],
160
164
  };
161
- registerSurface(deps, { localTools });
165
+ registerSurface(deps, { localTools, directVmTools });
162
166
  if (codeModeRegistry) {
163
167
  codeModeRegistry.registerCodeModeTool();
164
168
  }
package/dist/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Typed MDS error handling. Codes are owned by the MDS fixture
3
+ * `contracts/mds-errors.v1.json`; the payload's `detail` carries the actionable
4
+ * text, so messages are built from what MDS sent — no per-code prose to sync,
5
+ * and unknown codes from a newer MDS render the same way.
6
+ */
7
+ export interface MdsErrorParts {
8
+ code: string;
9
+ httpStatus: number;
10
+ detail?: string;
11
+ knownUsers?: string[];
12
+ }
13
+ /** Render a typed MDS error into a readable, actionable message. */
14
+ export declare function formatMdsError(parts: MdsErrorParts): string;
15
+ /**
16
+ * A typed error surfaced by MDS as `{"success": false, "error": <code>, ...}`.
17
+ * `message` is already the readable formatted text, so tool handlers that
18
+ * render `e.message` show useful guidance without special-casing.
19
+ */
20
+ export declare class MdsError extends Error {
21
+ readonly code: string;
22
+ readonly httpStatus: number;
23
+ readonly detail?: string;
24
+ readonly knownUsers?: string[];
25
+ constructor(parts: MdsErrorParts);
26
+ }
27
+ /**
28
+ * Parse a non-2xx MDS response body into an MdsError when it carries a typed
29
+ * code, else null (caller falls back to a plain HTTP error).
30
+ */
31
+ export declare function mdsErrorFromBody(httpStatus: number, body: string): MdsError | null;
32
+ //# sourceMappingURL=mds-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mds-errors.d.ts","sourceRoot":"","sources":["../src/mds-errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAY3D;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEnB,KAAK,EAAE,aAAa;CAQjC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,QAAQ,GAAG,IAAI,CAiBjB"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Typed MDS error handling. Codes are owned by the MDS fixture
3
+ * `contracts/mds-errors.v1.json`; the payload's `detail` carries the actionable
4
+ * text, so messages are built from what MDS sent — no per-code prose to sync,
5
+ * and unknown codes from a newer MDS render the same way.
6
+ */
7
+ /** Render a typed MDS error into a readable, actionable message. */
8
+ export function formatMdsError(parts) {
9
+ const detail = parts.detail ? `: ${parts.detail}` : "";
10
+ const lines = [
11
+ `MDS error '${parts.code}' (HTTP ${parts.httpStatus})${detail}`,
12
+ ];
13
+ if (parts.knownUsers && parts.knownUsers.length > 0) {
14
+ lines.push(`Registered users on this VM: ${parts.knownUsers.join(", ")}. ` +
15
+ `Pick one and retry with targetUser set (vm_list_sessions shows live session state).`);
16
+ }
17
+ return lines.join("\n");
18
+ }
19
+ /**
20
+ * A typed error surfaced by MDS as `{"success": false, "error": <code>, ...}`.
21
+ * `message` is already the readable formatted text, so tool handlers that
22
+ * render `e.message` show useful guidance without special-casing.
23
+ */
24
+ export class MdsError extends Error {
25
+ code;
26
+ httpStatus;
27
+ detail;
28
+ knownUsers;
29
+ constructor(parts) {
30
+ super(formatMdsError(parts));
31
+ this.name = "MdsError";
32
+ this.code = parts.code;
33
+ this.httpStatus = parts.httpStatus;
34
+ this.detail = parts.detail;
35
+ this.knownUsers = parts.knownUsers;
36
+ }
37
+ }
38
+ /**
39
+ * Parse a non-2xx MDS response body into an MdsError when it carries a typed
40
+ * code, else null (caller falls back to a plain HTTP error).
41
+ */
42
+ export function mdsErrorFromBody(httpStatus, body) {
43
+ try {
44
+ const parsed = JSON.parse(body);
45
+ if (typeof parsed?.error === "string" && parsed.error.length > 0) {
46
+ return new MdsError({
47
+ code: parsed.error,
48
+ httpStatus,
49
+ detail: typeof parsed.detail === "string" ? parsed.detail : undefined,
50
+ knownUsers: Array.isArray(parsed.knownUsers)
51
+ ? parsed.knownUsers.filter((u) => typeof u === "string")
52
+ : undefined,
53
+ });
54
+ }
55
+ }
56
+ catch {
57
+ /* not JSON — plain HTTP error */
58
+ }
59
+ return null;
60
+ }
61
+ //# sourceMappingURL=mds-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mds-errors.js","sourceRoot":"","sources":["../src/mds-errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,KAAK,GAAa;QACtB,cAAc,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,UAAU,IAAI,MAAM,EAAE;KAChE,CAAC;IACF,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CACR,gCAAgC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC7D,qFAAqF,CACxF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IACb,UAAU,CAAS;IACnB,MAAM,CAAU;IAChB,UAAU,CAAY;IAE/B,YAAY,KAAoB;QAC9B,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACrC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAkB,EAClB,IAAY;IAEZ,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QAC3D,IAAI,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,OAAO,IAAI,QAAQ,CAAC;gBAClB,IAAI,EAAE,MAAM,CAAC,KAAK;gBAClB,UAAU;gBACV,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACrE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;oBAC1C,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;oBACrE,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -250,6 +250,186 @@ export interface Page<T> {
250
250
  number: number;
251
251
  size: number;
252
252
  }
253
+ /**
254
+ * Computed blueprint lifecycle as the SERVICE folds it (blueprints.service.ts).
255
+ * The MCP's resolve_blueprint_state unfolds never_synced/building further
256
+ * (no_context/enriching/no_spec/proposal_pending/needs_answers/needs_input).
257
+ */
258
+ export type BlueprintState = "never_synced" | "building" | "build_failed" | "job_ahead" | "spec_stale" | "job_stale" | "in_sync";
259
+ /** A pending synthesis proposal: a reviewable spec diff produced from the library. */
260
+ export interface BlueprintProposal {
261
+ /** Section-level diff in the BlueprintPatch shape. */
262
+ patch: Record<string, unknown>;
263
+ /** Regenerated plan-in-English with entry:// citations. */
264
+ sop?: string;
265
+ /** librarySeq the synthesis read; stamped to specBasedOnSeq on apply. */
266
+ basedOnSeq: number;
267
+ /** Head spec version when synthesis ran — apply is compare-and-swap on it. */
268
+ baseVersion: number;
269
+ summary: string;
270
+ citations: Array<{
271
+ entryId: string;
272
+ reason: string;
273
+ provenance: "extracted" | "inferred" | "ambiguous";
274
+ }>;
275
+ createdAt: string;
276
+ model?: string;
277
+ }
278
+ /** The structured spec document. Loose on purpose — the canonical shape lives server-side. */
279
+ export interface BlueprintDocument {
280
+ goal?: string;
281
+ environment?: Record<string, unknown>;
282
+ inputSchema?: Record<string, unknown>;
283
+ outputSchema?: Record<string, unknown>;
284
+ credentials?: unknown[];
285
+ screens?: unknown[];
286
+ steps?: unknown[];
287
+ exampleCases?: unknown[];
288
+ openQuestions?: string[];
289
+ builderInstructions?: string;
290
+ sop?: string;
291
+ [key: string]: unknown;
292
+ }
293
+ /**
294
+ * Section-level merge payload for PATCH /:id: goal/schemas/openQuestions
295
+ * replaced, environment shallow-merged, screens/steps upserted by id,
296
+ * credentials by key, exampleCases by name.
297
+ */
298
+ export interface BlueprintPatch {
299
+ goal?: string;
300
+ environment?: Record<string, unknown>;
301
+ inputSchema?: Record<string, unknown>;
302
+ outputSchema?: Record<string, unknown>;
303
+ credentials?: {
304
+ upsert?: unknown[];
305
+ remove?: string[];
306
+ };
307
+ screens?: {
308
+ upsert?: unknown[];
309
+ remove?: string[];
310
+ };
311
+ steps?: {
312
+ upsert?: unknown[];
313
+ remove?: string[];
314
+ order?: string[];
315
+ };
316
+ exampleCases?: {
317
+ upsert?: unknown[];
318
+ remove?: string[];
319
+ };
320
+ openQuestions?: string[];
321
+ }
322
+ /** Computed lifecycle + both drift boundaries, returned on GET /:id. */
323
+ export interface BlueprintStateInfo {
324
+ state: BlueprintState;
325
+ /** Library changed since the spec was last synthesized (boundary 1). */
326
+ specStale: boolean;
327
+ /** Spec changed since the job was last synced (boundary 2). */
328
+ jobStale: boolean;
329
+ /** Reverse drift (boundary 3): the job was edited directly since the last sync/build. */
330
+ jobEditedDirectly: boolean;
331
+ hasPendingProposal: boolean;
332
+ /** Raw status of the stamped build run (queued|running|green|failed|needs_input) or null. */
333
+ buildStatus: string | null;
334
+ headVersion: number;
335
+ drift: {
336
+ /** Entries written since the last synthesis. */
337
+ newEntries: Array<{
338
+ id: string;
339
+ kind: string;
340
+ title: string;
341
+ seq: number;
342
+ }>;
343
+ /** Version notes since the last sync. */
344
+ unsyncedVersions: Array<{
345
+ version: number;
346
+ note?: string;
347
+ }>;
348
+ };
349
+ }
350
+ /** GET /blueprints/:id — the full row plus computed state. */
351
+ export interface BlueprintWithState extends BlueprintStateInfo {
352
+ id: string;
353
+ workspaceId: number;
354
+ name: string;
355
+ document: BlueprintDocument;
356
+ librarySeq: number;
357
+ specBasedOnSeq: number;
358
+ lastSyncedVersion: number | null;
359
+ pendingProposal: BlueprintProposal | null;
360
+ appliedProposal?: BlueprintProposal | null;
361
+ middlewareId?: string | null;
362
+ routeId?: string | null;
363
+ buildId?: string | null;
364
+ createdBy?: string;
365
+ createdAt?: string;
366
+ updatedAt?: string;
367
+ }
368
+ /** GET /blueprints — list summaries (no document, no proposal body). */
369
+ export interface BlueprintSummary {
370
+ id: string;
371
+ workspaceId: number;
372
+ name: string;
373
+ state: BlueprintState;
374
+ specStale: boolean;
375
+ jobStale: boolean;
376
+ jobEditedDirectly: boolean;
377
+ hasPendingProposal: boolean;
378
+ middlewareId?: string | null;
379
+ routeId?: string | null;
380
+ buildId?: string | null;
381
+ librarySeq?: number;
382
+ specBasedOnSeq?: number;
383
+ lastSyncedVersion?: number | null;
384
+ createdAt?: string;
385
+ updatedAt?: string;
386
+ }
387
+ /** Open string enum server-side — context kinds feed synthesis; resource kinds are runtime-referenceable. */
388
+ export type BlueprintEntryKind = "doc" | "video" | "url" | "note" | "transcript" | "data-source" | "walkthrough" | "screen-map" | "anchor" | "screenshot";
389
+ export type BlueprintEntryStatus = "pending" | "processing" | "ready" | "failed";
390
+ /** One item in a blueprint's library — the living context store. */
391
+ export interface BlueprintEntry {
392
+ id: string;
393
+ blueprintId: string;
394
+ kind: BlueprintEntryKind;
395
+ role: "context" | "resource";
396
+ title: string;
397
+ text?: string | null;
398
+ url?: string | null;
399
+ blobRef?: string | null;
400
+ content?: Record<string, unknown> | null;
401
+ status: BlueprintEntryStatus;
402
+ /** Enrichment output: video transcript, PDF text, fetched page. */
403
+ transcript?: string | null;
404
+ /** Why enrichment failed (status = failed). */
405
+ error?: string | null;
406
+ /** blueprint.librarySeq at write time — drives drift boundary 1. */
407
+ seq: number;
408
+ fileName?: string | null;
409
+ contentType?: string | null;
410
+ createdAt?: string;
411
+ updatedAt?: string;
412
+ }
413
+ /** POST /blueprints/:id/sync — the handoff artifact the jobs toolset takes over with. */
414
+ export interface BlueprintSyncResult {
415
+ middlewareId: string;
416
+ routeId: string;
417
+ buildId: string;
418
+ testCaseIds: string[];
419
+ }
420
+ /**
421
+ * Error thrown for non-2xx middleware-service responses. Carries the HTTP
422
+ * status — and, when the service provides one, the stable snake_case `code`
423
+ * from the error body (synthesis-path 409/502s: proposal_pending,
424
+ * entries_enriching, synthesis_not_configured, proposal_mismatch, spec_stale,
425
+ * llm_gateway_failed, ...) — so tools can classify structured failure modes
426
+ * without string-matching.
427
+ */
428
+ export declare class MiddlewareServiceError extends Error {
429
+ readonly status: number;
430
+ readonly code?: string | undefined;
431
+ constructor(message: string, status: number, code?: string | undefined);
432
+ }
253
433
  export declare class MiddlewareServiceClient {
254
434
  private token;
255
435
  private base;
@@ -444,6 +624,112 @@ export declare class MiddlewareServiceClient {
444
624
  /** Per-scenario grouping with prebuilt summaries (absent on older services). */
445
625
  scenarios?: ScenarioReportGroup[];
446
626
  }>;
627
+ private blueprintsBase;
628
+ /** List blueprint summaries (computed state, compile stamps; no document/proposal body). */
629
+ listBlueprints(workspaceId: number): Promise<BlueprintSummary[]>;
630
+ /** Create a blueprint. routeId+middlewareId link an EXISTING job (backfill). */
631
+ createBlueprint(workspaceId: number, body: {
632
+ name: string;
633
+ document?: BlueprintDocument;
634
+ routeId?: string;
635
+ middlewareId?: string;
636
+ }): Promise<BlueprintWithState>;
637
+ /** Full blueprint: document + computed state + both drift summaries + pendingProposal. */
638
+ getBlueprint(workspaceId: number, blueprintId: string): Promise<BlueprintWithState>;
639
+ /**
640
+ * PATCH the blueprint: `document` replaces wholesale, `patch` is the
641
+ * section-level merge. `baseVersion` is optimistic concurrency — the write
642
+ * 409s when the head version has moved past it.
643
+ */
644
+ updateBlueprint(workspaceId: number, blueprintId: string, body: {
645
+ name?: string;
646
+ document?: BlueprintDocument;
647
+ patch?: BlueprintPatch;
648
+ note?: string;
649
+ baseVersion?: number;
650
+ }): Promise<BlueprintWithState>;
651
+ /**
652
+ * Atomically answer one open question: removes it from
653
+ * document.openQuestions, stores the answer as a note entry, snapshots one
654
+ * version. 404 when the question is not open (already answered elsewhere).
655
+ */
656
+ answerBlueprintQuestion(workspaceId: number, blueprintId: string, question: string, answer: string): Promise<BlueprintWithState>;
657
+ /**
658
+ * Synthesize a spec proposal from the library (LLM). Stores ONE pending
659
+ * proposal for review — never applies silently. 409 when a proposal is
660
+ * already pending (pass replace), entries are still enriching, or the
661
+ * service LLM is unconfigured.
662
+ */
663
+ synthesizeBlueprint(workspaceId: number, blueprintId: string, opts?: {
664
+ replace?: boolean;
665
+ instructions?: string;
666
+ }): Promise<BlueprintWithState>;
667
+ /**
668
+ * Apply the pending proposal (server-side CAS on the proposal's
669
+ * baseVersion). Pass the reviewed proposal's `basedOnSeq` and newer
670
+ * services atomically 409 (code proposal_mismatch) when the pending
671
+ * proposal was replaced since review; older services ignore the body.
672
+ */
673
+ applyBlueprintProposal(workspaceId: number, blueprintId: string, opts?: {
674
+ basedOnSeq?: number;
675
+ }): Promise<BlueprintWithState>;
676
+ /** Reject (discard) the pending proposal. 404 when none is pending. */
677
+ rejectBlueprintProposal(workspaceId: number, blueprintId: string): Promise<BlueprintWithState>;
678
+ /**
679
+ * Sync the spec into the job (the primary verb): ensures router + route,
680
+ * upserts judge test cases from exampleCases, attaches the spec as the
681
+ * builder artifact, folds into the active build run. Returns the identity
682
+ * triple the jobs toolset takes over with.
683
+ */
684
+ syncBlueprint(workspaceId: number, blueprintId: string, instructions?: string): Promise<BlueprintSyncResult>;
685
+ /** Adopt the linked job's test cases into the spec's exampleCases (job_ahead fold-back). */
686
+ importBlueprintCases(workspaceId: number, blueprintId: string): Promise<BlueprintWithState>;
687
+ /** List blueprint version snapshots (newest first). */
688
+ listBlueprintVersions(workspaceId: number, blueprintId: string): Promise<unknown[]>;
689
+ /** Get one blueprint version snapshot. */
690
+ getBlueprintVersion(workspaceId: number, blueprintId: string, version: number): Promise<unknown>;
691
+ /**
692
+ * Delete a blueprint and its versions/entries. Deliberately NOT exposed as
693
+ * an MCP tool (destructive); used by harnesses and embedding hosts.
694
+ */
695
+ deleteBlueprint(workspaceId: number, blueprintId: string): Promise<void>;
696
+ /** List library entries (context docs + runtime resources), full rows. */
697
+ listBlueprintEntries(workspaceId: number, blueprintId: string): Promise<BlueprintEntry[]>;
698
+ /** Add a library entry. Enrichable kinds (doc/video/url with a blobRef or url) start pending. */
699
+ createBlueprintEntry(workspaceId: number, blueprintId: string, body: {
700
+ kind: BlueprintEntryKind;
701
+ title: string;
702
+ text?: string;
703
+ url?: string;
704
+ blobRef?: string;
705
+ content?: Record<string, unknown>;
706
+ fileName?: string;
707
+ contentType?: string;
708
+ sizeBytes?: number;
709
+ }): Promise<BlueprintEntry>;
710
+ /** Get one library entry (full content/transcript). */
711
+ getBlueprintEntry(workspaceId: number, blueprintId: string, entryId: string): Promise<BlueprintEntry>;
712
+ /** Update an entry (title/text/url/content). Bumps librarySeq — the spec becomes stale. */
713
+ updateBlueprintEntry(workspaceId: number, blueprintId: string, entryId: string, body: {
714
+ title?: string;
715
+ text?: string;
716
+ url?: string;
717
+ content?: Record<string, unknown>;
718
+ }): Promise<BlueprintEntry>;
719
+ /** Short-lived signed upload URL for a file that will become an entry. */
720
+ createBlueprintEntryUploadUrl(workspaceId: number, blueprintId: string, fileName: string): Promise<{
721
+ uploadUrl: string;
722
+ blobRef: string;
723
+ expiresOn: string;
724
+ }>;
725
+ /** Signed read URL for an uploaded entry blob (previews, annotators). */
726
+ createBlueprintEntryDownloadUrl(workspaceId: number, blueprintId: string, entryId: string): Promise<{
727
+ downloadUrl: string;
728
+ }>;
729
+ /** Entry history, newest first: one immutable snapshot per content-bearing write. */
730
+ listBlueprintEntryRevisions(workspaceId: number, blueprintId: string, entryId: string, opts?: {
731
+ snapshots?: boolean;
732
+ }): Promise<unknown[]>;
447
733
  pollExecution(workspaceId: number, middlewareId: string, routeId: string, executionId: string, opts?: {
448
734
  intervalMs?: number;
449
735
  timeoutMs?: number;