@sxl-studio/bridge 1.7.2 → 1.7.3

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 (197) hide show
  1. package/README.md +342 -16
  2. package/dist/agent-recipes.d.ts +781 -11
  3. package/dist/agent-recipes.js +886 -13
  4. package/dist/agent-recipes.js.map +1 -1
  5. package/dist/agent-runbook.d.ts +50 -0
  6. package/dist/agent-runbook.js +243 -0
  7. package/dist/agent-runbook.js.map +1 -0
  8. package/dist/asset-upload.d.ts +63 -0
  9. package/dist/asset-upload.js +225 -0
  10. package/dist/asset-upload.js.map +1 -0
  11. package/dist/audit-store.d.ts +15 -0
  12. package/dist/audit-store.js +100 -0
  13. package/dist/audit-store.js.map +1 -0
  14. package/dist/audit.d.ts +4 -3
  15. package/dist/audit.js +37 -4
  16. package/dist/audit.js.map +1 -1
  17. package/dist/auth.d.ts +8 -1
  18. package/dist/auth.js +41 -1
  19. package/dist/auth.js.map +1 -1
  20. package/dist/bridge-agent-workflow-validation-cli.d.ts +2 -0
  21. package/dist/bridge-agent-workflow-validation-cli.js +68 -0
  22. package/dist/bridge-agent-workflow-validation-cli.js.map +1 -0
  23. package/dist/bridge-agent-workflow-validation.d.ts +42 -0
  24. package/dist/bridge-agent-workflow-validation.js +170 -0
  25. package/dist/bridge-agent-workflow-validation.js.map +1 -0
  26. package/dist/bridge-contract-audit.d.ts +45 -0
  27. package/dist/bridge-contract-audit.js +345 -0
  28. package/dist/bridge-contract-audit.js.map +1 -0
  29. package/dist/bridge-health-cli.d.ts +2 -0
  30. package/dist/bridge-health-cli.js +115 -0
  31. package/dist/bridge-health-cli.js.map +1 -0
  32. package/dist/bridge-health.d.ts +33 -0
  33. package/dist/bridge-health.js +594 -0
  34. package/dist/bridge-health.js.map +1 -0
  35. package/dist/bridge-live-validation-cli.d.ts +2 -0
  36. package/dist/bridge-live-validation-cli.js +114 -0
  37. package/dist/bridge-live-validation-cli.js.map +1 -0
  38. package/dist/bridge-live-validation.d.ts +39 -0
  39. package/dist/bridge-live-validation.js +1141 -0
  40. package/dist/bridge-live-validation.js.map +1 -0
  41. package/dist/bridge-performance-profile.d.ts +81 -0
  42. package/dist/bridge-performance-profile.js +227 -0
  43. package/dist/bridge-performance-profile.js.map +1 -0
  44. package/dist/bridge-readiness-cli.d.ts +30 -0
  45. package/dist/bridge-readiness-cli.js +242 -0
  46. package/dist/bridge-readiness-cli.js.map +1 -0
  47. package/dist/bridge-runtime-summary.d.ts +50 -0
  48. package/dist/bridge-runtime-summary.js +112 -0
  49. package/dist/bridge-runtime-summary.js.map +1 -0
  50. package/dist/bridge-workflow-smoke-cli.d.ts +2 -0
  51. package/dist/bridge-workflow-smoke-cli.js +126 -0
  52. package/dist/bridge-workflow-smoke-cli.js.map +1 -0
  53. package/dist/bridge-workflow-smoke.d.ts +39 -0
  54. package/dist/bridge-workflow-smoke.js +431 -0
  55. package/dist/bridge-workflow-smoke.js.map +1 -0
  56. package/dist/codeconnect-suggestions.d.ts +74 -0
  57. package/dist/codeconnect-suggestions.js +398 -0
  58. package/dist/codeconnect-suggestions.js.map +1 -0
  59. package/dist/codeconnect-template.d.ts +98 -0
  60. package/dist/codeconnect-template.js +280 -0
  61. package/dist/codeconnect-template.js.map +1 -0
  62. package/dist/command-queue.d.ts +11 -1
  63. package/dist/command-queue.js +200 -1
  64. package/dist/command-queue.js.map +1 -1
  65. package/dist/command-safety.d.ts +13 -0
  66. package/dist/command-safety.js +59 -0
  67. package/dist/command-safety.js.map +1 -0
  68. package/dist/enabled-library-search.d.ts +49 -0
  69. package/dist/enabled-library-search.js +151 -0
  70. package/dist/enabled-library-search.js.map +1 -0
  71. package/dist/figma-mcp-parity.d.ts +49 -0
  72. package/dist/figma-mcp-parity.js +368 -0
  73. package/dist/figma-mcp-parity.js.map +1 -0
  74. package/dist/figma-mcp-skills-parity.d.ts +61 -0
  75. package/dist/figma-mcp-skills-parity.js +434 -0
  76. package/dist/figma-mcp-skills-parity.js.map +1 -0
  77. package/dist/figma-rest-diagnostics.d.ts +50 -0
  78. package/dist/figma-rest-diagnostics.js +314 -0
  79. package/dist/figma-rest-diagnostics.js.map +1 -0
  80. package/dist/figma-rest.d.ts +27 -0
  81. package/dist/figma-rest.js +116 -0
  82. package/dist/figma-rest.js.map +1 -0
  83. package/dist/http-api.d.ts +14 -2
  84. package/dist/http-api.js +323 -17
  85. package/dist/http-api.js.map +1 -1
  86. package/dist/index.js +25 -1
  87. package/dist/index.js.map +1 -1
  88. package/dist/mcp-factory.d.ts +6 -1
  89. package/dist/mcp-factory.js +23 -4
  90. package/dist/mcp-factory.js.map +1 -1
  91. package/dist/mcp-runtime-probe.d.ts +22 -0
  92. package/dist/mcp-runtime-probe.js +777 -0
  93. package/dist/mcp-runtime-probe.js.map +1 -0
  94. package/dist/mcp-server.d.ts +2 -1
  95. package/dist/mcp-server.js +2 -2
  96. package/dist/mcp-server.js.map +1 -1
  97. package/dist/sxl-mcp-instructions.js +97 -25
  98. package/dist/sxl-mcp-instructions.js.map +1 -1
  99. package/dist/tools/audit.d.ts +22 -6
  100. package/dist/tools/audit.js +49 -7
  101. package/dist/tools/audit.js.map +1 -1
  102. package/dist/tools/capability-matrix.d.ts +22 -0
  103. package/dist/tools/capability-matrix.js +38 -0
  104. package/dist/tools/capability-matrix.js.map +1 -0
  105. package/dist/tools/catalogue-bootstrap.d.ts +1 -0
  106. package/dist/tools/catalogue-bootstrap.js +665 -30
  107. package/dist/tools/catalogue-bootstrap.js.map +1 -1
  108. package/dist/tools/code-connect-context.d.ts +3 -0
  109. package/dist/tools/code-connect-context.js +319 -0
  110. package/dist/tools/code-connect-context.js.map +1 -0
  111. package/dist/tools/code-connect-template.d.ts +3 -0
  112. package/dist/tools/code-connect-template.js +111 -0
  113. package/dist/tools/code-connect-template.js.map +1 -0
  114. package/dist/tools/composition.js +13 -28
  115. package/dist/tools/composition.js.map +1 -1
  116. package/dist/tools/compositions-orchestration.d.ts +14 -14
  117. package/dist/tools/compositions-orchestration.js +2 -2
  118. package/dist/tools/compositions-orchestration.js.map +1 -1
  119. package/dist/tools/data.js +839 -27
  120. package/dist/tools/data.js.map +1 -1
  121. package/dist/tools/design-context.d.ts +3 -0
  122. package/dist/tools/design-context.js +197 -0
  123. package/dist/tools/design-context.js.map +1 -0
  124. package/dist/tools/destructive-confirmation.d.ts +10 -0
  125. package/dist/tools/destructive-confirmation.js +22 -0
  126. package/dist/tools/destructive-confirmation.js.map +1 -0
  127. package/dist/tools/diagnostics.js +76 -51
  128. package/dist/tools/diagnostics.js.map +1 -1
  129. package/dist/tools/figma-mcp-design.d.ts +3 -0
  130. package/dist/tools/figma-mcp-design.js +377 -0
  131. package/dist/tools/figma-mcp-design.js.map +1 -0
  132. package/dist/tools/figma-nodes.js +57 -43
  133. package/dist/tools/figma-nodes.js.map +1 -1
  134. package/dist/tools/figma-rc-extended.js +23 -6
  135. package/dist/tools/figma-rc-extended.js.map +1 -1
  136. package/dist/tools/figma-rest.d.ts +39 -0
  137. package/dist/tools/figma-rest.js +279 -0
  138. package/dist/tools/figma-rest.js.map +1 -0
  139. package/dist/tools/git.js +11 -7
  140. package/dist/tools/git.js.map +1 -1
  141. package/dist/tools/large-data.d.ts +14 -0
  142. package/dist/tools/large-data.js +189 -0
  143. package/dist/tools/large-data.js.map +1 -0
  144. package/dist/tools/meta.d.ts +6 -1
  145. package/dist/tools/meta.js +89 -11
  146. package/dist/tools/meta.js.map +1 -1
  147. package/dist/tools/metadata.d.ts +3 -0
  148. package/dist/tools/metadata.js +140 -0
  149. package/dist/tools/metadata.js.map +1 -0
  150. package/dist/tools/mockup.d.ts +15 -156
  151. package/dist/tools/mockup.js +54 -121
  152. package/dist/tools/mockup.js.map +1 -1
  153. package/dist/tools/orchestration.js +73 -45
  154. package/dist/tools/orchestration.js.map +1 -1
  155. package/dist/tools/prompts.d.ts +3 -0
  156. package/dist/tools/prompts.js +219 -0
  157. package/dist/tools/prompts.js.map +1 -0
  158. package/dist/tools/registry.d.ts +19 -1
  159. package/dist/tools/registry.js +4 -4
  160. package/dist/tools/registry.js.map +1 -1
  161. package/dist/tools/resources.d.ts +19 -2
  162. package/dist/tools/resources.js +149 -5
  163. package/dist/tools/resources.js.map +1 -1
  164. package/dist/tools/schema-contracts.d.ts +4763 -0
  165. package/dist/tools/schema-contracts.js +814 -0
  166. package/dist/tools/schema-contracts.js.map +1 -0
  167. package/dist/tools/screenshot.d.ts +3 -0
  168. package/dist/tools/screenshot.js +144 -0
  169. package/dist/tools/screenshot.js.map +1 -0
  170. package/dist/tools/shared.d.ts +11 -1
  171. package/dist/tools/shared.js +55 -2
  172. package/dist/tools/shared.js.map +1 -1
  173. package/dist/tools/styles-orchestration.d.ts +2 -2
  174. package/dist/tools/styles-orchestration.js +13 -5
  175. package/dist/tools/styles-orchestration.js.map +1 -1
  176. package/dist/tools/styles.js +22 -8
  177. package/dist/tools/styles.js.map +1 -1
  178. package/dist/tools/tokens.d.ts +31 -692
  179. package/dist/tools/tokens.js +175 -135
  180. package/dist/tools/tokens.js.map +1 -1
  181. package/dist/tools/variable-defs.d.ts +3 -0
  182. package/dist/tools/variable-defs.js +338 -0
  183. package/dist/tools/variable-defs.js.map +1 -0
  184. package/dist/tools/variables-orchestration.js +13 -5
  185. package/dist/tools/variables-orchestration.js.map +1 -1
  186. package/dist/tools/variables.js +18 -15
  187. package/dist/tools/variables.js.map +1 -1
  188. package/dist/types.d.ts +53 -0
  189. package/dist/ultimate-readiness-audit.d.ts +37 -0
  190. package/dist/ultimate-readiness-audit.js +431 -0
  191. package/dist/ultimate-readiness-audit.js.map +1 -0
  192. package/dist/workflow-planner.d.ts +57 -0
  193. package/dist/workflow-planner.js +464 -0
  194. package/dist/workflow-planner.js.map +1 -0
  195. package/dist/ws-server.js +16 -3
  196. package/dist/ws-server.js.map +1 -1
  197. package/package.json +18 -2
@@ -0,0 +1,594 @@
1
+ import { buildBridgeContractAudit } from "./bridge-contract-audit.js";
2
+ import { runAgentWorkflowValidation } from "./bridge-agent-workflow-validation.js";
3
+ import { getBridgePackageVersion } from "./bridge-version.js";
4
+ import { runMcpRuntimeProbe } from "./mcp-runtime-probe.js";
5
+ import { validateFigmaMcpParityPayload } from "./figma-mcp-parity.js";
6
+ import { validateFigmaMcpSkillsParityPayload } from "./figma-mcp-skills-parity.js";
7
+ import { bootstrapBridgeToolCatalogue } from "./tools/catalogue-bootstrap.js";
8
+ import { buildUltimateReadinessAudit } from "./ultimate-readiness-audit.js";
9
+ function addFinding(findings, finding) {
10
+ findings.push(finding);
11
+ }
12
+ function statusFromFindings(findings) {
13
+ if (findings.some((finding) => finding.severity === "error"))
14
+ return "fail";
15
+ if (findings.some((finding) => finding.severity === "warning"))
16
+ return "warn";
17
+ return "pass";
18
+ }
19
+ function normalizeBaseUrl(baseUrl) {
20
+ return baseUrl.replace(/\/+$/, "");
21
+ }
22
+ function isRecord(value) {
23
+ return typeof value === "object" && value !== null && !Array.isArray(value);
24
+ }
25
+ function isArrayField(value, key) {
26
+ return isRecord(value) && Array.isArray(value[key]);
27
+ }
28
+ async function fetchJson(endpoint, options) {
29
+ const controller = new AbortController();
30
+ const timeout = setTimeout(() => controller.abort(), options.timeoutMs);
31
+ try {
32
+ const headers = {};
33
+ if (options.authToken) {
34
+ headers.Authorization = `Bearer ${options.authToken}`;
35
+ }
36
+ const response = await options.fetchImpl(`${options.baseUrl}${endpoint}`, {
37
+ method: "GET",
38
+ headers,
39
+ signal: controller.signal,
40
+ });
41
+ const text = await response.text();
42
+ let body = null;
43
+ if (text.trim()) {
44
+ try {
45
+ body = JSON.parse(text);
46
+ }
47
+ catch {
48
+ body = text;
49
+ }
50
+ }
51
+ return { status: response.status, body };
52
+ }
53
+ finally {
54
+ clearTimeout(timeout);
55
+ }
56
+ }
57
+ function validateStatusEndpoint(body, findings, requirePlugin) {
58
+ const endpoint = "/api/status";
59
+ if (!isRecord(body) || !isRecord(body["ports"]) || !isRecord(body["session"]) || !isRecord(body["queue"])) {
60
+ addFinding(findings, {
61
+ severity: "error",
62
+ code: "STATUS_SHAPE_INVALID",
63
+ message: "GET /api/status did not return the expected Bridge status shape.",
64
+ endpoint,
65
+ });
66
+ return { name: "runtime.status", ok: false, status: "fail" };
67
+ }
68
+ const session = body["session"];
69
+ const connected = session["connected"] === true;
70
+ const authEnabled = body["authEnabled"] === true;
71
+ if (!connected) {
72
+ addFinding(findings, {
73
+ severity: requirePlugin ? "error" : "warning",
74
+ code: requirePlugin ? "PLUGIN_NOT_CONNECTED" : "PLUGIN_DISCONNECTED",
75
+ message: [
76
+ requirePlugin
77
+ ? "Bridge is running, but no SXL Studio plugin Remote Connect session is connected."
78
+ : "Bridge is running without an active plugin session. Runtime smoke can still verify Bridge endpoints.",
79
+ authEnabled
80
+ ? "Bridge auth is enabled; verify the plugin Remote Connect overlay token matches BRIDGE_AUTH_TOKEN."
81
+ : null,
82
+ ].filter(Boolean).join(" "),
83
+ endpoint,
84
+ });
85
+ }
86
+ return {
87
+ name: "runtime.status",
88
+ ok: connected || !requirePlugin,
89
+ status: connected ? "pass" : requirePlugin ? "fail" : "warn",
90
+ details: {
91
+ authEnabled,
92
+ pluginConnected: connected,
93
+ currentCommand: typeof body["currentCommand"] === "string" ? body["currentCommand"] : null,
94
+ runtimeHealth: isRecord(body["runtime"]) && typeof body["runtime"]["health"] === "string"
95
+ ? body["runtime"]["health"]
96
+ : null,
97
+ telemetryEvents: isRecord(body["telemetry"]) && typeof body["telemetry"]["eventsBuffered"] === "number"
98
+ ? body["telemetry"]["eventsBuffered"]
99
+ : null,
100
+ },
101
+ };
102
+ }
103
+ function validateToolsEndpoint(body, findings) {
104
+ const endpoint = "/api/tools";
105
+ const count = isRecord(body) && typeof body["count"] === "number" ? body["count"] : 0;
106
+ const ok = isArrayField(body, "tools") && count > 0;
107
+ if (!ok) {
108
+ addFinding(findings, {
109
+ severity: "error",
110
+ code: "TOOLS_SHAPE_INVALID",
111
+ message: "GET /api/tools did not return a non-empty tools catalogue.",
112
+ endpoint,
113
+ });
114
+ }
115
+ return { name: "runtime.tools", ok, status: ok ? "pass" : "fail", details: { count } };
116
+ }
117
+ function validateCapabilitiesEndpoint(body, findings) {
118
+ const endpoint = "/api/capabilities";
119
+ const count = isRecord(body) && typeof body["count"] === "number" ? body["count"] : 0;
120
+ const ok = isArrayField(body, "tools") && isArrayField(body, "categories") && count > 0;
121
+ if (!ok) {
122
+ addFinding(findings, {
123
+ severity: "error",
124
+ code: "CAPABILITIES_SHAPE_INVALID",
125
+ message: "GET /api/capabilities did not return a non-empty capability matrix.",
126
+ endpoint,
127
+ });
128
+ }
129
+ return { name: "runtime.capabilities", ok, status: ok ? "pass" : "fail", details: { count } };
130
+ }
131
+ function validateContractAuditEndpoint(body, findings) {
132
+ const endpoint = "/api/contract-audit";
133
+ if (!isRecord(body) || typeof body["ok"] !== "boolean" || typeof body["status"] !== "string") {
134
+ addFinding(findings, {
135
+ severity: "error",
136
+ code: "CONTRACT_AUDIT_SHAPE_INVALID",
137
+ message: "GET /api/contract-audit did not return the expected audit envelope.",
138
+ endpoint,
139
+ });
140
+ return { name: "runtime.contractAudit", ok: false, status: "fail" };
141
+ }
142
+ if (body["status"] === "fail" || body["ok"] !== true) {
143
+ addFinding(findings, {
144
+ severity: "error",
145
+ code: "CONTRACT_AUDIT_FAILED",
146
+ message: "Bridge contract audit failed.",
147
+ endpoint,
148
+ });
149
+ }
150
+ else if (body["status"] === "warn") {
151
+ addFinding(findings, {
152
+ severity: "warning",
153
+ code: "CONTRACT_AUDIT_WARNED",
154
+ message: "Bridge contract audit reported warnings.",
155
+ endpoint,
156
+ });
157
+ }
158
+ const status = body["status"] === "fail" ? "fail" : body["status"] === "warn" ? "warn" : "pass";
159
+ return {
160
+ name: "runtime.contractAudit",
161
+ ok: body["ok"] === true,
162
+ status,
163
+ details: isRecord(body["summary"]) ? body["summary"] : undefined,
164
+ };
165
+ }
166
+ function validateFigmaMcpParityEndpoint(body, findings) {
167
+ const endpoint = "/api/figma-mcp-parity";
168
+ const validation = validateFigmaMcpParityPayload(body);
169
+ if (!validation.ok) {
170
+ addFinding(findings, {
171
+ severity: "error",
172
+ code: "FIGMA_MCP_PARITY_SHAPE_INVALID",
173
+ message: `GET /api/figma-mcp-parity did not return the expected current parity matrix: ${validation.errors.join(" ")}`,
174
+ endpoint,
175
+ });
176
+ }
177
+ return {
178
+ name: "runtime.figmaMcpParity",
179
+ ok: validation.ok,
180
+ status: validation.ok ? "pass" : "fail",
181
+ details: {
182
+ officialToolCount: validation.officialToolCount,
183
+ companionRequired: validation.companionRequired,
184
+ futureScope: validation.futureScope,
185
+ notSupportedByPluginApi: validation.notSupportedByPluginApi,
186
+ missingOfficialTools: validation.missingOfficialTools,
187
+ missingCompanionTools: validation.missingCompanionTools,
188
+ },
189
+ };
190
+ }
191
+ function validateFigmaMcpSkillsParityEndpoint(body, findings) {
192
+ const endpoint = "/api/figma-mcp-skills-parity";
193
+ const validation = validateFigmaMcpSkillsParityPayload(body);
194
+ if (!validation.ok) {
195
+ addFinding(findings, {
196
+ severity: "error",
197
+ code: "FIGMA_MCP_SKILLS_PARITY_SHAPE_INVALID",
198
+ message: `GET /api/figma-mcp-skills-parity did not return the expected current skills parity matrix: ${validation.errors.join(" ")}`,
199
+ endpoint,
200
+ });
201
+ }
202
+ return {
203
+ name: "runtime.figmaMcpSkillsParity",
204
+ ok: validation.ok,
205
+ status: validation.ok ? "pass" : "fail",
206
+ details: {
207
+ officialSkillCount: validation.officialSkillCount,
208
+ compatibilityAliases: validation.compatibilityAliases,
209
+ missingOfficialSkills: validation.missingOfficialSkills,
210
+ missingCompanionSkills: validation.missingCompanionSkills,
211
+ missingCompatibilityAliases: validation.missingCompatibilityAliases,
212
+ },
213
+ };
214
+ }
215
+ function validatePerformanceProfileEndpoint(body, findings) {
216
+ const endpoint = "/api/performance-profile";
217
+ const toolCount = isRecord(body) && isRecord(body["summary"]) && typeof body["summary"]["toolCount"] === "number"
218
+ ? body["summary"]["toolCount"]
219
+ : 0;
220
+ const ok = isRecord(body) &&
221
+ typeof body["ok"] === "boolean" &&
222
+ typeof body["status"] === "string" &&
223
+ isArrayField(body, "tools") &&
224
+ isArrayField(body, "findings") &&
225
+ isRecord(body["budgets"]) &&
226
+ toolCount > 0;
227
+ if (!ok) {
228
+ addFinding(findings, {
229
+ severity: "error",
230
+ code: "PERFORMANCE_PROFILE_SHAPE_INVALID",
231
+ message: "GET /api/performance-profile did not return the expected performance profile.",
232
+ endpoint,
233
+ });
234
+ return { name: "runtime.performanceProfile", ok: false, status: "fail", details: { toolCount } };
235
+ }
236
+ if (body["status"] === "fail" || body["ok"] !== true) {
237
+ addFinding(findings, {
238
+ severity: "error",
239
+ code: "PERFORMANCE_PROFILE_FAILED",
240
+ message: "Bridge performance profile reported failures.",
241
+ endpoint,
242
+ });
243
+ }
244
+ else if (body["status"] === "warn") {
245
+ addFinding(findings, {
246
+ severity: "warning",
247
+ code: "PERFORMANCE_PROFILE_WARNED",
248
+ message: "Bridge performance profile reported warnings.",
249
+ endpoint,
250
+ });
251
+ }
252
+ const status = body["status"] === "fail" ? "fail" : body["status"] === "warn" ? "warn" : "pass";
253
+ return { name: "runtime.performanceProfile", ok: body["ok"] === true && status !== "fail", status, details: { toolCount } };
254
+ }
255
+ function validateRuntimeSummaryEndpoint(body, findings) {
256
+ const endpoint = "/api/runtime-summary";
257
+ const ok = isRecord(body) &&
258
+ typeof body["ok"] === "boolean" &&
259
+ typeof body["status"] === "string" &&
260
+ isRecord(body["plugin"]) &&
261
+ isRecord(body["queue"]) &&
262
+ isRecord(body["recent"]) &&
263
+ Array.isArray(body["recommendations"]);
264
+ if (!ok) {
265
+ addFinding(findings, {
266
+ severity: "error",
267
+ code: "RUNTIME_SUMMARY_SHAPE_INVALID",
268
+ message: "GET /api/runtime-summary did not return the expected runtime summary.",
269
+ endpoint,
270
+ });
271
+ }
272
+ return {
273
+ name: "runtime.runtimeSummary",
274
+ ok,
275
+ status: ok ? "pass" : "fail",
276
+ details: isRecord(body) && isRecord(body["plugin"]) ? { pluginConnected: body["plugin"]["connected"] } : undefined,
277
+ };
278
+ }
279
+ function validateOperatorRunbookEndpoint(body, findings) {
280
+ const endpoint = "/api/operator-runbook";
281
+ const workflows = isRecord(body) && Array.isArray(body["workflows"]) ? body["workflows"] : [];
282
+ const workflowIds = new Set(workflows
283
+ .filter(isRecord)
284
+ .map((workflow) => typeof workflow["id"] === "string" ? workflow["id"] : "")
285
+ .filter(Boolean));
286
+ const ok = isRecord(body) &&
287
+ body["id"] === "sxl-operator-runbook" &&
288
+ Array.isArray(body["startHere"]) &&
289
+ Array.isArray(body["globalSafetyRules"]) &&
290
+ workflowIds.has("draw-or-update-screen") &&
291
+ workflowIds.has("official-figma-mcp-companion");
292
+ if (!ok) {
293
+ addFinding(findings, {
294
+ severity: "error",
295
+ code: "OPERATOR_RUNBOOK_SHAPE_INVALID",
296
+ message: "GET /api/operator-runbook did not return the expected SXL operator runbook.",
297
+ endpoint,
298
+ });
299
+ }
300
+ return {
301
+ name: "runtime.operatorRunbook",
302
+ ok,
303
+ status: ok ? "pass" : "fail",
304
+ details: { workflowCount: workflows.length },
305
+ };
306
+ }
307
+ function validateFigmaRestDiagnosticsEndpoint(body, findings) {
308
+ const endpoint = "/api/figma-rest-diagnostics?checks=whoami";
309
+ const ok = isRecord(body) &&
310
+ typeof body["ok"] === "boolean" &&
311
+ typeof body["status"] === "string" &&
312
+ isRecord(body["auth"]) &&
313
+ isRecord(body["summary"]) &&
314
+ Array.isArray(body["checks"]) &&
315
+ Array.isArray(body["recommendations"]);
316
+ if (!ok) {
317
+ addFinding(findings, {
318
+ severity: "error",
319
+ code: "FIGMA_REST_DIAGNOSTICS_SHAPE_INVALID",
320
+ message: "GET /api/figma-rest-diagnostics did not return the expected diagnostics report.",
321
+ endpoint,
322
+ });
323
+ }
324
+ return {
325
+ name: "runtime.figmaRestDiagnostics",
326
+ ok,
327
+ status: ok ? "pass" : "fail",
328
+ details: isRecord(body) && isRecord(body["auth"]) ? { tokenConfigured: body["auth"]["tokenConfigured"] } : undefined,
329
+ };
330
+ }
331
+ function validateUltimateReadinessEndpoint(body, findings) {
332
+ const endpoint = "/api/ultimate-readiness";
333
+ const requirementCount = isRecord(body) && isRecord(body["summary"]) && typeof body["summary"]["requirementCount"] === "number"
334
+ ? body["summary"]["requirementCount"]
335
+ : 0;
336
+ const ok = isRecord(body) &&
337
+ typeof body["ok"] === "boolean" &&
338
+ typeof body["status"] === "string" &&
339
+ isArrayField(body, "requirements") &&
340
+ requirementCount > 0;
341
+ if (!ok) {
342
+ addFinding(findings, {
343
+ severity: "error",
344
+ code: "ULTIMATE_READINESS_SHAPE_INVALID",
345
+ message: "GET /api/ultimate-readiness did not return the expected readiness audit.",
346
+ endpoint,
347
+ });
348
+ return { name: "runtime.ultimateReadiness", ok: false, status: "fail", details: { requirementCount } };
349
+ }
350
+ if (body["status"] === "fail" || body["ok"] !== true) {
351
+ addFinding(findings, {
352
+ severity: "error",
353
+ code: "ULTIMATE_READINESS_FAILED",
354
+ message: "Ultimate Bridge readiness reported failed requirements.",
355
+ endpoint,
356
+ });
357
+ }
358
+ else if (body["status"] === "warn") {
359
+ addFinding(findings, {
360
+ severity: "warning",
361
+ code: "ULTIMATE_READINESS_WARNED",
362
+ message: "Ultimate Bridge readiness reported warnings.",
363
+ endpoint,
364
+ });
365
+ }
366
+ const status = body["status"] === "fail" ? "fail" : body["status"] === "warn" ? "warn" : "pass";
367
+ return { name: "runtime.ultimateReadiness", ok: body["ok"] === true && status !== "fail", status, details: { requirementCount } };
368
+ }
369
+ function validateQueueEndpoint(body, findings) {
370
+ const endpoint = "/api/queue";
371
+ const ok = isRecord(body) && Array.isArray(body["queued"]) && Array.isArray(body["immediate"]) && "current" in body;
372
+ if (!ok) {
373
+ addFinding(findings, {
374
+ severity: "error",
375
+ code: "QUEUE_SHAPE_INVALID",
376
+ message: "GET /api/queue did not return the expected queue snapshot.",
377
+ endpoint,
378
+ });
379
+ }
380
+ return { name: "runtime.queue", ok, status: ok ? "pass" : "fail" };
381
+ }
382
+ function validateEventsEndpoint(body, findings) {
383
+ const endpoint = "/api/events?limit=1";
384
+ const ok = isArrayField(body, "entries");
385
+ if (!ok) {
386
+ addFinding(findings, {
387
+ severity: "error",
388
+ code: "EVENTS_SHAPE_INVALID",
389
+ message: "GET /api/events did not return the expected event snapshot.",
390
+ endpoint,
391
+ });
392
+ }
393
+ return { name: "runtime.events", ok, status: ok ? "pass" : "fail" };
394
+ }
395
+ function validateAuditLogEndpoint(body, findings) {
396
+ const endpoint = "/api/log?source=disk&limit=1";
397
+ const ok = isRecord(body) && body["source"] === "disk" && isArrayField(body, "entries");
398
+ if (!ok) {
399
+ addFinding(findings, {
400
+ severity: "error",
401
+ code: "AUDIT_LOG_SHAPE_INVALID",
402
+ message: "GET /api/log?source=disk did not return the expected persisted audit log shape.",
403
+ endpoint,
404
+ });
405
+ }
406
+ return { name: "runtime.auditLog", ok, status: ok ? "pass" : "fail" };
407
+ }
408
+ async function runMcpStreamableHttpCheck(options, findings) {
409
+ const endpoint = "/mcp";
410
+ const result = await runMcpRuntimeProbe(options);
411
+ for (const warning of result.warnings) {
412
+ addFinding(findings, {
413
+ severity: "warning",
414
+ code: warning.code,
415
+ message: warning.message,
416
+ endpoint,
417
+ });
418
+ }
419
+ if (!result.ok) {
420
+ addFinding(findings, {
421
+ severity: "error",
422
+ code: result.error?.code ?? "MCP_STREAMABLE_HTTP_FAILED",
423
+ message: result.error?.message ?? "MCP /mcp probe failed.",
424
+ endpoint,
425
+ });
426
+ }
427
+ return {
428
+ name: "runtime.mcpStreamableHttp",
429
+ ok: result.ok,
430
+ status: result.ok ? result.warnings.length > 0 ? "warn" : "pass" : "fail",
431
+ details: result.details,
432
+ };
433
+ }
434
+ async function runRuntimeChecks(options, findings) {
435
+ const endpoints = [
436
+ {
437
+ endpoint: "/api/status",
438
+ validate: (body) => validateStatusEndpoint(body, findings, options.requirePlugin),
439
+ },
440
+ { endpoint: "/api/tools", validate: (body) => validateToolsEndpoint(body, findings) },
441
+ { endpoint: "/api/capabilities", validate: (body) => validateCapabilitiesEndpoint(body, findings) },
442
+ { endpoint: "/api/contract-audit", validate: (body) => validateContractAuditEndpoint(body, findings) },
443
+ { endpoint: "/api/figma-mcp-parity", validate: (body) => validateFigmaMcpParityEndpoint(body, findings) },
444
+ { endpoint: "/api/figma-mcp-skills-parity", validate: (body) => validateFigmaMcpSkillsParityEndpoint(body, findings) },
445
+ { endpoint: "/api/performance-profile", validate: (body) => validatePerformanceProfileEndpoint(body, findings) },
446
+ { endpoint: "/api/runtime-summary", validate: (body) => validateRuntimeSummaryEndpoint(body, findings) },
447
+ { endpoint: "/api/operator-runbook", validate: (body) => validateOperatorRunbookEndpoint(body, findings) },
448
+ { endpoint: "/api/figma-rest-diagnostics?checks=whoami", validate: (body) => validateFigmaRestDiagnosticsEndpoint(body, findings) },
449
+ { endpoint: "/api/ultimate-readiness", validate: (body) => validateUltimateReadinessEndpoint(body, findings) },
450
+ { endpoint: "/api/queue", validate: (body) => validateQueueEndpoint(body, findings) },
451
+ { endpoint: "/api/events?limit=1", validate: (body) => validateEventsEndpoint(body, findings) },
452
+ { endpoint: "/api/log?source=disk&limit=1", validate: (body) => validateAuditLogEndpoint(body, findings) },
453
+ ];
454
+ const checks = [];
455
+ for (const { endpoint, validate } of endpoints) {
456
+ try {
457
+ const response = await fetchJson(endpoint, options);
458
+ if (response.status === 401) {
459
+ addFinding(findings, {
460
+ severity: "error",
461
+ code: "RUNTIME_UNAUTHORIZED",
462
+ message: `GET ${endpoint} requires Authorization. Pass --auth-token or set BRIDGE_AUTH_TOKEN.`,
463
+ endpoint,
464
+ });
465
+ checks.push({ name: `runtime${endpoint}`, ok: false, status: "fail" });
466
+ continue;
467
+ }
468
+ if (response.status < 200 || response.status >= 300) {
469
+ addFinding(findings, {
470
+ severity: "error",
471
+ code: "RUNTIME_HTTP_ERROR",
472
+ message: `GET ${endpoint} returned HTTP ${response.status}.`,
473
+ endpoint,
474
+ });
475
+ checks.push({ name: `runtime${endpoint}`, ok: false, status: "fail" });
476
+ continue;
477
+ }
478
+ checks.push(validate(response.body));
479
+ }
480
+ catch (error) {
481
+ const message = error instanceof Error ? error.message : String(error);
482
+ addFinding(findings, {
483
+ severity: "error",
484
+ code: "RUNTIME_ENDPOINT_UNREACHABLE",
485
+ message: `GET ${endpoint} failed: ${message}`,
486
+ endpoint,
487
+ });
488
+ checks.push({ name: `runtime${endpoint}`, ok: false, status: "fail" });
489
+ }
490
+ }
491
+ checks.splice(1, 0, await runMcpStreamableHttpCheck(options, findings));
492
+ return checks;
493
+ }
494
+ export async function runBridgeHealthCheck(options = {}) {
495
+ const findings = [];
496
+ const checks = [];
497
+ const runtime = options.runtime === true;
498
+ bootstrapBridgeToolCatalogue();
499
+ const contractAudit = buildBridgeContractAudit();
500
+ if (contractAudit.status === "fail" || !contractAudit.ok) {
501
+ addFinding(findings, {
502
+ severity: "error",
503
+ code: "LOCAL_CONTRACT_AUDIT_FAILED",
504
+ message: "Local Bridge contract audit failed.",
505
+ });
506
+ }
507
+ else if (contractAudit.status === "warn") {
508
+ addFinding(findings, {
509
+ severity: "warning",
510
+ code: "LOCAL_CONTRACT_AUDIT_WARNED",
511
+ message: "Local Bridge contract audit reported warnings.",
512
+ });
513
+ }
514
+ checks.push({
515
+ name: "local.contractAudit",
516
+ ok: contractAudit.ok,
517
+ status: contractAudit.status,
518
+ details: contractAudit.summary,
519
+ });
520
+ const agentWorkflows = runAgentWorkflowValidation();
521
+ for (const finding of agentWorkflows.findings) {
522
+ addFinding(findings, {
523
+ severity: finding.severity,
524
+ code: `AGENT_WORKFLOW_${finding.code}`,
525
+ message: finding.scenarioId ? `${finding.scenarioId}: ${finding.message}` : finding.message,
526
+ });
527
+ }
528
+ checks.push({
529
+ name: "local.agentWorkflows",
530
+ ok: agentWorkflows.ok,
531
+ status: agentWorkflows.status,
532
+ details: {
533
+ scenarioCount: agentWorkflows.scenarioCount,
534
+ failingScenarios: agentWorkflows.steps.filter((step) => step.status === "fail").map((step) => step.id),
535
+ warningScenarios: agentWorkflows.steps.filter((step) => step.status === "warn").map((step) => step.id),
536
+ },
537
+ });
538
+ const ultimateReadiness = buildUltimateReadinessAudit();
539
+ const failingRequirements = ultimateReadiness.requirements
540
+ .filter((requirement) => requirement.status === "fail")
541
+ .map((requirement) => requirement.id);
542
+ const warningRequirements = ultimateReadiness.requirements
543
+ .filter((requirement) => requirement.status === "warn")
544
+ .map((requirement) => requirement.id);
545
+ if (!ultimateReadiness.ok || ultimateReadiness.status === "fail") {
546
+ addFinding(findings, {
547
+ severity: "error",
548
+ code: "LOCAL_ULTIMATE_READINESS_FAILED",
549
+ message: `Ultimate Bridge readiness failed: ${failingRequirements.join(", ") || "unknown requirement"}.`,
550
+ });
551
+ }
552
+ else if (ultimateReadiness.status === "warn") {
553
+ addFinding(findings, {
554
+ severity: "warning",
555
+ code: "LOCAL_ULTIMATE_READINESS_WARNED",
556
+ message: `Ultimate Bridge readiness has warnings: ${warningRequirements.join(", ") || "review readiness report"}.`,
557
+ });
558
+ }
559
+ checks.push({
560
+ name: "local.ultimateReadiness",
561
+ ok: ultimateReadiness.ok,
562
+ status: ultimateReadiness.status,
563
+ details: {
564
+ ...ultimateReadiness.summary,
565
+ failingRequirements,
566
+ warningRequirements,
567
+ },
568
+ });
569
+ const baseUrl = normalizeBaseUrl(options.baseUrl ??
570
+ `http://127.0.0.1:${process.env["BRIDGE_PORT"] || "37830"}`);
571
+ if (runtime) {
572
+ const runtimeChecks = await runRuntimeChecks({
573
+ baseUrl,
574
+ authToken: options.authToken ?? process.env["BRIDGE_AUTH_TOKEN"],
575
+ timeoutMs: options.timeoutMs ?? 5_000,
576
+ fetchImpl: options.fetchImpl ?? fetch,
577
+ requirePlugin: options.requirePlugin === true,
578
+ }, findings);
579
+ checks.push(...runtimeChecks);
580
+ }
581
+ const status = statusFromFindings(findings);
582
+ return {
583
+ ok: status !== "fail",
584
+ status,
585
+ version: 1,
586
+ bridgeVersion: getBridgePackageVersion(),
587
+ generatedAt: new Date().toISOString(),
588
+ mode: runtime ? "runtime" : "local",
589
+ baseUrl: runtime ? baseUrl : undefined,
590
+ checks,
591
+ findings,
592
+ };
593
+ }
594
+ //# sourceMappingURL=bridge-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-health.js","sourceRoot":"","sources":["../src/bridge-health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export declare function runBridgeLiveValidationCli(argv?: string[]): Promise<void>;