@sxl-studio/bridge 1.7.2 → 1.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 (203) 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 +16 -2
  84. package/dist/http-api.js +329 -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 +99 -26
  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 +15 -30
  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 +25 -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 +75 -47
  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/workspace-blob-store.d.ts +6 -0
  196. package/dist/workspace-blob-store.js +9 -0
  197. package/dist/workspace-blob-store.js.map +1 -1
  198. package/dist/workspace-path-http.d.ts +24 -0
  199. package/dist/workspace-path-http.js +146 -0
  200. package/dist/workspace-path-http.js.map +1 -0
  201. package/dist/ws-server.js +16 -3
  202. package/dist/ws-server.js.map +1 -1
  203. package/package.json +21 -2
@@ -0,0 +1,42 @@
1
+ export type AgentWorkflowValidationSeverity = "error" | "warning" | "info";
2
+ export type AgentWorkflowValidationFinding = {
3
+ severity: AgentWorkflowValidationSeverity;
4
+ code: string;
5
+ message: string;
6
+ scenarioId?: string;
7
+ toolName?: string;
8
+ };
9
+ export type AgentWorkflowValidationScenario = {
10
+ id: string;
11
+ request: string;
12
+ expectedRecipeId: string;
13
+ requiredTools?: string[];
14
+ forbiddenTools?: string[];
15
+ readOnly?: boolean;
16
+ companionOnly?: boolean;
17
+ };
18
+ export type AgentWorkflowValidationStep = {
19
+ id: string;
20
+ ok: boolean;
21
+ status: "pass" | "warn" | "fail";
22
+ request: string;
23
+ recipeId: string;
24
+ expectedRecipeId: string;
25
+ toolCount: number;
26
+ commitTools: string[];
27
+ findings: AgentWorkflowValidationFinding[];
28
+ };
29
+ export type AgentWorkflowValidationReport = {
30
+ ok: boolean;
31
+ status: "pass" | "warn" | "fail";
32
+ version: 1;
33
+ bridgeVersion: string;
34
+ generatedAt: string;
35
+ scenarioCount: number;
36
+ steps: AgentWorkflowValidationStep[];
37
+ findings: AgentWorkflowValidationFinding[];
38
+ };
39
+ export declare const DEFAULT_AGENT_WORKFLOW_SCENARIOS: readonly AgentWorkflowValidationScenario[];
40
+ export declare function runAgentWorkflowValidation(args?: {
41
+ scenarios?: readonly AgentWorkflowValidationScenario[];
42
+ }): AgentWorkflowValidationReport;
@@ -0,0 +1,170 @@
1
+ import { getBridgePackageVersion } from "./bridge-version.js";
2
+ import { planWorkflow, previewWorkflow } from "./workflow-planner.js";
3
+ export const DEFAULT_AGENT_WORKFLOW_SCENARIOS = [
4
+ {
5
+ id: "screen.generate.ru",
6
+ request: "нарисуй экран в фигме из компонентов дизайн-системы",
7
+ expectedRecipeId: "sxl-generate-design",
8
+ requiredTools: ["inspect_design_system", "validate_screen_spec", "build_screen"],
9
+ },
10
+ {
11
+ id: "docs.build.ru",
12
+ request: "нарисуй документацию в фигме",
13
+ expectedRecipeId: "sxl-doc-builder",
14
+ requiredTools: ["apply_doc_spec", "build_component_doc", "build_doc_flow"],
15
+ },
16
+ {
17
+ id: "tokens.export.ru",
18
+ request: "экспортируй переменные и стили в фигму",
19
+ expectedRecipeId: "sxl-generate-library",
20
+ requiredTools: ["preview_export_variables", "export_variables"],
21
+ },
22
+ {
23
+ id: "coverage.audit.ru",
24
+ request: "проверь на всех макетах установлены ли переменные и стили",
25
+ expectedRecipeId: "audit-coverage",
26
+ requiredTools: [
27
+ "audit_variable_coverage",
28
+ "find_variable_coverage_misses",
29
+ "audit_style_coverage",
30
+ "find_style_coverage_misses",
31
+ ],
32
+ forbiddenTools: ["export_variables", "batch_bind_variables", "apply_coverage_suggestions"],
33
+ readOnly: true,
34
+ },
35
+ {
36
+ id: "codeconnect.template.ru",
37
+ request: "создай Code Connect template для выбранного компонента",
38
+ expectedRecipeId: "sxl-code-connect",
39
+ requiredTools: ["get_context_for_code_connect", "get_code_connect_suggestions", "generate_code_connect_template"],
40
+ },
41
+ {
42
+ id: "figma.mcp.companion.en",
43
+ request: "figma-create-new-file and create a FigJam diagram",
44
+ expectedRecipeId: "figma-mcp-companion",
45
+ requiredTools: ["get_figma_mcp_parity", "get_bridge_runtime_summary"],
46
+ forbiddenTools: ["build_screen", "export_variables", "apply_doc_spec"],
47
+ readOnly: true,
48
+ companionOnly: true,
49
+ },
50
+ {
51
+ id: "implement.design.en",
52
+ request: "Run figma-implement-design for this selected frame",
53
+ expectedRecipeId: "sxl-implement-design",
54
+ requiredTools: ["get_design_context", "get_variable_defs", "get_context_for_code_connect"],
55
+ readOnly: true,
56
+ },
57
+ {
58
+ id: "design.rules.en",
59
+ request: "Use figma-create-design-system-rules for this project",
60
+ expectedRecipeId: "sxl-generate-library",
61
+ requiredTools: ["get_figma_mcp_skills_parity", "inspect_design_system", "get_context_for_code_connect"],
62
+ },
63
+ ];
64
+ function statusFromFindings(findings) {
65
+ if (findings.some((finding) => finding.severity === "error"))
66
+ return "fail";
67
+ if (findings.some((finding) => finding.severity === "warning"))
68
+ return "warn";
69
+ return "pass";
70
+ }
71
+ function toolSteps(plan) {
72
+ return plan.steps
73
+ .filter((step) => step.kind === "tool" && typeof step.toolName === "string")
74
+ .map((step) => ({ toolName: step.toolName, dryRun: step.dryRun }));
75
+ }
76
+ function validateScenario(scenario) {
77
+ const plan = planWorkflow({ request: scenario.request });
78
+ const tools = toolSteps(plan);
79
+ const toolNames = tools.map((step) => step.toolName);
80
+ const commitTools = plan.steps
81
+ .filter((step) => step.kind === "tool" && step.phase === "commit" && typeof step.toolName === "string")
82
+ .map((step) => step.toolName);
83
+ const findings = [];
84
+ if (plan.route.recipeId !== scenario.expectedRecipeId) {
85
+ findings.push({
86
+ severity: "error",
87
+ code: "UNEXPECTED_RECIPE",
88
+ message: `Expected recipe "${scenario.expectedRecipeId}", got "${plan.route.recipeId}".`,
89
+ scenarioId: scenario.id,
90
+ });
91
+ }
92
+ for (const toolName of scenario.requiredTools ?? []) {
93
+ if (!toolNames.includes(toolName)) {
94
+ findings.push({
95
+ severity: "error",
96
+ code: "REQUIRED_TOOL_MISSING",
97
+ message: `Generated plan does not include required tool "${toolName}".`,
98
+ scenarioId: scenario.id,
99
+ toolName,
100
+ });
101
+ }
102
+ }
103
+ for (const toolName of scenario.forbiddenTools ?? []) {
104
+ if (toolNames.includes(toolName)) {
105
+ findings.push({
106
+ severity: "error",
107
+ code: "FORBIDDEN_TOOL_PLANNED",
108
+ message: `Generated plan includes forbidden tool "${toolName}".`,
109
+ scenarioId: scenario.id,
110
+ toolName,
111
+ });
112
+ }
113
+ }
114
+ if (scenario.readOnly && commitTools.length > 0) {
115
+ findings.push({
116
+ severity: "error",
117
+ code: "READ_ONLY_SCENARIO_HAS_COMMIT",
118
+ message: `Read-only scenario planned commit tools: ${commitTools.join(", ")}.`,
119
+ scenarioId: scenario.id,
120
+ });
121
+ }
122
+ if (scenario.companionOnly && plan.steps.some((step) => step.kind === "tool" && step.requiresDesignMode === true)) {
123
+ findings.push({
124
+ severity: "error",
125
+ code: "COMPANION_SCENARIO_HAS_BRIDGE_WRITE",
126
+ message: "Official Figma MCP companion scenario planned Bridge Design write tools.",
127
+ scenarioId: scenario.id,
128
+ });
129
+ }
130
+ const preview = previewWorkflow({ request: scenario.request, proposedSteps: tools });
131
+ const previewFindings = preview.findings.filter((finding) => finding.severity !== "info");
132
+ for (const finding of previewFindings) {
133
+ findings.push({
134
+ severity: finding.severity === "error" ? "error" : "warning",
135
+ code: `PREVIEW_${finding.code}`,
136
+ message: finding.message,
137
+ scenarioId: scenario.id,
138
+ toolName: finding.toolName,
139
+ });
140
+ }
141
+ const status = statusFromFindings(findings);
142
+ return {
143
+ id: scenario.id,
144
+ ok: status !== "fail",
145
+ status,
146
+ request: scenario.request,
147
+ recipeId: plan.route.recipeId,
148
+ expectedRecipeId: scenario.expectedRecipeId,
149
+ toolCount: toolNames.length,
150
+ commitTools,
151
+ findings,
152
+ };
153
+ }
154
+ export function runAgentWorkflowValidation(args = {}) {
155
+ const scenarios = args.scenarios ?? DEFAULT_AGENT_WORKFLOW_SCENARIOS;
156
+ const steps = scenarios.map(validateScenario);
157
+ const findings = steps.flatMap((step) => step.findings);
158
+ const status = statusFromFindings(findings);
159
+ return {
160
+ ok: status !== "fail",
161
+ status,
162
+ version: 1,
163
+ bridgeVersion: getBridgePackageVersion(),
164
+ generatedAt: new Date().toISOString(),
165
+ scenarioCount: scenarios.length,
166
+ steps,
167
+ findings,
168
+ };
169
+ }
170
+ //# sourceMappingURL=bridge-agent-workflow-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-agent-workflow-validation.js","sourceRoot":"","sources":["../src/bridge-agent-workflow-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export type ContractAuditSeverity = "error" | "warning" | "info";
2
+ export type ContractAuditFinding = {
3
+ severity: ContractAuditSeverity;
4
+ code: string;
5
+ message: string;
6
+ subject?: string;
7
+ };
8
+ export type BridgeContractAudit = {
9
+ ok: boolean;
10
+ status: "pass" | "warn" | "fail";
11
+ version: 1;
12
+ generatedAt: string;
13
+ summary: {
14
+ toolCount: number;
15
+ categoryCount: number;
16
+ recipeCount: number;
17
+ schemaCount: number;
18
+ pluginTools: number;
19
+ orchestrationTools: number;
20
+ localTools: number;
21
+ dryRunTools: number;
22
+ designModeTools: number;
23
+ };
24
+ requiredSurface: {
25
+ metaTools: Record<string, boolean>;
26
+ schemaEntrypoints: Record<string, boolean>;
27
+ workflowGates: Record<string, boolean>;
28
+ remoteConnect: {
29
+ sourceAvailable: boolean;
30
+ pluginCommandTypesWhitelisted: boolean;
31
+ pluginCommandTypesHandled: boolean;
32
+ pluginCommandTypeCount: number;
33
+ remoteWhitelistCommandCount: number | null;
34
+ messageBusCommandCount: number | null;
35
+ diagnosticHandlerCommandCount: number | null;
36
+ directHandlerCommandCount: number | null;
37
+ sxlHandlerCommandCount: number | null;
38
+ missingPluginCommandTypes: string[];
39
+ missingPluginHandlerCommandTypes: string[];
40
+ sourcePath: string | null;
41
+ };
42
+ };
43
+ findings: ContractAuditFinding[];
44
+ };
45
+ export declare function buildBridgeContractAudit(): BridgeContractAudit;
@@ -0,0 +1,345 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { ALL_AGENT_RECIPES } from "./agent-recipes.js";
5
+ import { buildCapabilityMatrix } from "./tools/capability-matrix.js";
6
+ import { BRIDGE_SCHEMA_INDEX } from "./tools/schema-contracts.js";
7
+ import { planWorkflow } from "./workflow-planner.js";
8
+ function addFinding(findings, finding) {
9
+ findings.push(finding);
10
+ }
11
+ function pluginRemoteTypesCandidates() {
12
+ const here = path.dirname(fileURLToPath(import.meta.url));
13
+ return Array.from(new Set([
14
+ path.resolve(here, "../../../Plugin/src/modules/remote/types.ts"),
15
+ path.resolve(process.cwd(), "Plugin/src/modules/remote/types.ts"),
16
+ ]));
17
+ }
18
+ function readPluginRemoteTypesSource() {
19
+ for (const candidate of pluginRemoteTypesCandidates()) {
20
+ if (!existsSync(candidate))
21
+ continue;
22
+ return { source: readFileSync(candidate, "utf8"), sourcePath: candidate };
23
+ }
24
+ return null;
25
+ }
26
+ function readPluginRemoteSourceFile(remoteRoot, relativePath) {
27
+ const filePath = path.join(remoteRoot, relativePath);
28
+ if (!existsSync(filePath))
29
+ return null;
30
+ return readFileSync(filePath, "utf8");
31
+ }
32
+ function collectRemoteWhitelistCommands(source) {
33
+ const whitelistStart = source.indexOf("export const WHITELISTED_COMMANDS");
34
+ const whitelistBlock = whitelistStart >= 0 ? source.slice(0, whitelistStart) : source;
35
+ const commands = new Set();
36
+ const stringLiteralRe = /["']([a-z][a-z0-9_]+)["']/g;
37
+ for (const match of whitelistBlock.matchAll(stringLiteralRe)) {
38
+ commands.add(match[1]);
39
+ }
40
+ const objectKeyRe = /^\s*([a-z][a-z0-9_]+):\s*["']/gm;
41
+ for (const match of whitelistBlock.matchAll(objectKeyRe)) {
42
+ commands.add(match[1]);
43
+ }
44
+ return commands;
45
+ }
46
+ function extractObjectInitializer(source, marker) {
47
+ const start = source.indexOf(marker);
48
+ if (start < 0)
49
+ return "";
50
+ const open = source.indexOf("{", start);
51
+ if (open < 0)
52
+ return "";
53
+ let depth = 0;
54
+ for (let i = open; i < source.length; i += 1) {
55
+ const ch = source[i];
56
+ if (ch === "{")
57
+ depth += 1;
58
+ if (ch === "}") {
59
+ depth -= 1;
60
+ if (depth === 0)
61
+ return source.slice(open + 1, i);
62
+ }
63
+ }
64
+ return "";
65
+ }
66
+ function collectObjectKeys(source, marker) {
67
+ const block = extractObjectInitializer(source, marker);
68
+ const keys = new Set();
69
+ const unquotedKeyRe = /^\s*([a-z][a-z0-9_]+):/gm;
70
+ for (const match of block.matchAll(unquotedKeyRe)) {
71
+ keys.add(match[1]);
72
+ }
73
+ const quotedKeyRe = /^\s*["']([a-z][a-z0-9_]+)["']\s*:/gm;
74
+ for (const match of block.matchAll(quotedKeyRe)) {
75
+ keys.add(match[1]);
76
+ }
77
+ return keys;
78
+ }
79
+ function collectCommandTypeBranches(source) {
80
+ const commands = new Set();
81
+ const literalRe = /(?:case\s+|commandType\s*===\s*)["']([a-z][a-z0-9_]+)["']/g;
82
+ for (const match of source.matchAll(literalRe)) {
83
+ commands.add(match[1]);
84
+ }
85
+ return commands;
86
+ }
87
+ function unionSets(...sets) {
88
+ return new Set(sets.flatMap((set) => Array.from(set)));
89
+ }
90
+ const SXL_HANDLER_RELATIVE_PATHS = [
91
+ "sxl/compositions.ts",
92
+ "sxl/compositionsOrchestration/index.ts",
93
+ "sxl/doc/index.ts",
94
+ "sxl/tokens.ts",
95
+ "sxl/inspect.ts",
96
+ "sxl/libraries.ts",
97
+ "sxl/data.ts",
98
+ "sxl/audit/index.ts",
99
+ "sxl/variables.ts",
100
+ "sxl/varsOrchestration/index.ts",
101
+ "sxl/stylesOrchestration/index.ts",
102
+ "sxl/mockup/index.ts",
103
+ "sxl/styles.ts",
104
+ "sxl/git.ts",
105
+ ];
106
+ function collectRemoteHandlerCoverage(remoteRoot, typesSource) {
107
+ const messageBusCommands = collectObjectKeys(typesSource, "export const REMOTE_COMMAND_MAP");
108
+ const diagnosticsSource = readPluginRemoteSourceFile(remoteRoot, "diagnostics.ts");
109
+ const diagnosticCommands = diagnosticsSource ? collectCommandTypeBranches(diagnosticsSource) : new Set();
110
+ const directHandlersSource = readPluginRemoteSourceFile(remoteRoot, "canvas/directHandlersRegistry.ts");
111
+ const directHandlerCommands = directHandlersSource
112
+ ? collectObjectKeys(directHandlersSource, "export const CANVAS_DIRECT_HANDLERS")
113
+ : new Set();
114
+ const missingSourceFiles = [];
115
+ const sxlHandlerCommands = new Set();
116
+ for (const relativePath of SXL_HANDLER_RELATIVE_PATHS) {
117
+ const source = readPluginRemoteSourceFile(remoteRoot, relativePath);
118
+ if (!source) {
119
+ missingSourceFiles.push(relativePath);
120
+ continue;
121
+ }
122
+ for (const command of collectCommandTypeBranches(source)) {
123
+ sxlHandlerCommands.add(command);
124
+ }
125
+ }
126
+ return {
127
+ handledCommands: unionSets(messageBusCommands, diagnosticCommands, directHandlerCommands, sxlHandlerCommands),
128
+ messageBusCommands,
129
+ diagnosticCommands,
130
+ directHandlerCommands,
131
+ sxlHandlerCommands,
132
+ missingSourceFiles,
133
+ };
134
+ }
135
+ export function buildBridgeContractAudit() {
136
+ const matrix = buildCapabilityMatrix();
137
+ const tools = matrix.tools;
138
+ const toolsByName = new Map(tools.map((tool) => [tool.name, tool]));
139
+ const findings = [];
140
+ const metaToolNames = [
141
+ "get_contract_audit",
142
+ "route_intent",
143
+ "plan_workflow",
144
+ "preview_workflow",
145
+ "list_tools",
146
+ "get_capability_matrix",
147
+ "get_figma_mcp_parity",
148
+ "get_performance_profile",
149
+ "get_bridge_audit_log",
150
+ "get_bridge_runtime_summary",
151
+ "get_operator_runbook",
152
+ "get_ultimate_readiness",
153
+ ];
154
+ const metaTools = Object.fromEntries(metaToolNames.map((name) => [name, toolsByName.get(name)?.execution === "bridge-local"]));
155
+ for (const [name, ok] of Object.entries(metaTools)) {
156
+ if (!ok) {
157
+ addFinding(findings, {
158
+ severity: "error",
159
+ code: "META_TOOL_MISSING_OR_NOT_LOCAL",
160
+ message: `Meta tool "${name}" must exist and be bridge-local.`,
161
+ subject: name,
162
+ });
163
+ }
164
+ }
165
+ for (const tool of tools) {
166
+ if (tool.execution === "bridge-local" && tool.pluginCommandTypes.length > 0) {
167
+ addFinding(findings, {
168
+ severity: "error",
169
+ code: "LOCAL_TOOL_HAS_PLUGIN_COMMANDS",
170
+ message: `Bridge-local tool "${tool.name}" must not declare pluginCommandTypes.`,
171
+ subject: tool.name,
172
+ });
173
+ }
174
+ if (tool.execution !== "bridge-local" && tool.pluginCommandTypes.length === 0) {
175
+ addFinding(findings, {
176
+ severity: "error",
177
+ code: "PLUGIN_ROUTED_TOOL_WITHOUT_PLUGIN_COMMANDS",
178
+ message: `Plugin-routed tool "${tool.name}" must declare pluginCommandTypes.`,
179
+ subject: tool.name,
180
+ });
181
+ }
182
+ if (tool.bridgeTimeoutMs <= 0) {
183
+ addFinding(findings, {
184
+ severity: "error",
185
+ code: "INVALID_TIMEOUT",
186
+ message: `Tool "${tool.name}" has an invalid Bridge timeout.`,
187
+ subject: tool.name,
188
+ });
189
+ }
190
+ }
191
+ for (const recipe of ALL_AGENT_RECIPES) {
192
+ const preferredTools = [...recipe.preferredTools];
193
+ if (preferredTools.length === 0) {
194
+ addFinding(findings, {
195
+ severity: "error",
196
+ code: "RECIPE_WITHOUT_TOOLS",
197
+ message: `Recipe "${recipe.id}" must declare preferredTools.`,
198
+ subject: recipe.id,
199
+ });
200
+ }
201
+ if (!String(recipe.doneCriteria).trim()) {
202
+ addFinding(findings, {
203
+ severity: "error",
204
+ code: "RECIPE_WITHOUT_DONE_CRITERIA",
205
+ message: `Recipe "${recipe.id}" must declare doneCriteria.`,
206
+ subject: recipe.id,
207
+ });
208
+ }
209
+ for (const toolName of preferredTools) {
210
+ if (!toolsByName.has(toolName)) {
211
+ addFinding(findings, {
212
+ severity: "warning",
213
+ code: "RECIPE_TOOL_NOT_IN_CATALOGUE",
214
+ message: `Recipe "${recipe.id}" references preferred tool "${toolName}" that is not catalogued.`,
215
+ subject: `${recipe.id}:${toolName}`,
216
+ });
217
+ }
218
+ }
219
+ }
220
+ const schemaEntrypoints = {};
221
+ for (const schema of BRIDGE_SCHEMA_INDEX.schemas) {
222
+ for (const toolName of schema.toolEntrypoints) {
223
+ const key = `${schema.id}:${toolName}`;
224
+ const exists = toolsByName.has(toolName);
225
+ schemaEntrypoints[key] = exists;
226
+ if (!exists) {
227
+ addFinding(findings, {
228
+ severity: "error",
229
+ code: "SCHEMA_ENTRYPOINT_NOT_IN_CATALOGUE",
230
+ message: `Schema "${schema.id}" references tool "${toolName}" that is not catalogued.`,
231
+ subject: key,
232
+ });
233
+ }
234
+ }
235
+ }
236
+ const screenPlan = planWorkflow({
237
+ request: "нарисуй экран в фигме из компонентов дизайн-системы",
238
+ });
239
+ const workflowGates = {
240
+ screenPlanHasStatusCheck: screenPlan.steps.some((step) => step.toolName === "get_plugin_status"),
241
+ screenPlanHasSchemaResource: screenPlan.schemaResources.includes("sxl://agent/schemas/design-dsl-v1"),
242
+ screenPlanHasDryRun: screenPlan.steps.some((step) => step.toolName === "build_screen" && step.dryRun === true),
243
+ screenPlanHasApprovalGate: screenPlan.steps.some((step) => step.kind === "gate" && step.requiresApproval === true),
244
+ screenPlanHasCommit: screenPlan.steps.some((step) => step.toolName === "build_screen" && step.phase === "commit"),
245
+ };
246
+ for (const [name, ok] of Object.entries(workflowGates)) {
247
+ if (!ok) {
248
+ addFinding(findings, {
249
+ severity: "error",
250
+ code: "WORKFLOW_GATE_MISSING",
251
+ message: `Workflow gate "${name}" is missing from the screen-generation plan.`,
252
+ subject: name,
253
+ });
254
+ }
255
+ }
256
+ const pluginCommandTypes = Array.from(new Set(tools.flatMap((tool) => tool.pluginCommandTypes))).sort();
257
+ const remoteSource = readPluginRemoteTypesSource();
258
+ const remoteWhitelistCommands = remoteSource ? collectRemoteWhitelistCommands(remoteSource.source) : null;
259
+ const handlerCoverage = remoteSource
260
+ ? collectRemoteHandlerCoverage(path.dirname(remoteSource.sourcePath), remoteSource.source)
261
+ : null;
262
+ const missingPluginCommandTypes = remoteWhitelistCommands
263
+ ? pluginCommandTypes.filter((command) => !remoteWhitelistCommands.has(command))
264
+ : [];
265
+ const missingPluginHandlerCommandTypes = handlerCoverage
266
+ ? pluginCommandTypes.filter((command) => !handlerCoverage.handledCommands.has(command))
267
+ : [];
268
+ const remoteConnect = {
269
+ sourceAvailable: remoteSource !== null,
270
+ pluginCommandTypesWhitelisted: remoteSource !== null && missingPluginCommandTypes.length === 0,
271
+ pluginCommandTypesHandled: remoteSource !== null &&
272
+ handlerCoverage !== null &&
273
+ handlerCoverage.missingSourceFiles.length === 0 &&
274
+ missingPluginHandlerCommandTypes.length === 0,
275
+ pluginCommandTypeCount: pluginCommandTypes.length,
276
+ remoteWhitelistCommandCount: remoteWhitelistCommands?.size ?? null,
277
+ messageBusCommandCount: handlerCoverage?.messageBusCommands.size ?? null,
278
+ diagnosticHandlerCommandCount: handlerCoverage?.diagnosticCommands.size ?? null,
279
+ directHandlerCommandCount: handlerCoverage?.directHandlerCommands.size ?? null,
280
+ sxlHandlerCommandCount: handlerCoverage?.sxlHandlerCommands.size ?? null,
281
+ missingPluginCommandTypes,
282
+ missingPluginHandlerCommandTypes,
283
+ sourcePath: remoteSource?.sourcePath ?? null,
284
+ };
285
+ if (!remoteSource) {
286
+ addFinding(findings, {
287
+ severity: "warning",
288
+ code: "PLUGIN_REMOTE_SOURCE_UNAVAILABLE",
289
+ message: "Plugin Remote Connect source was not found; Bridge could not verify plugin-backed commands against the Remote Connect whitelist.",
290
+ });
291
+ }
292
+ else {
293
+ for (const commandType of missingPluginCommandTypes) {
294
+ addFinding(findings, {
295
+ severity: "error",
296
+ code: "PLUGIN_COMMAND_NOT_WHITELISTED",
297
+ message: `Plugin-backed command "${commandType}" is not whitelisted in Plugin Remote Connect.`,
298
+ subject: commandType,
299
+ });
300
+ }
301
+ for (const relativePath of handlerCoverage?.missingSourceFiles ?? []) {
302
+ addFinding(findings, {
303
+ severity: "error",
304
+ code: "PLUGIN_REMOTE_HANDLER_SOURCE_MISSING",
305
+ message: `Remote Connect handler source "${relativePath}" was not found, so handler coverage cannot be proven.`,
306
+ subject: relativePath,
307
+ });
308
+ }
309
+ for (const commandType of missingPluginHandlerCommandTypes) {
310
+ addFinding(findings, {
311
+ severity: "error",
312
+ code: "PLUGIN_COMMAND_HANDLER_PATH_MISSING",
313
+ message: `Plugin-backed command "${commandType}" has no proven Remote Connect handler path.`,
314
+ subject: commandType,
315
+ });
316
+ }
317
+ }
318
+ const errors = findings.filter((finding) => finding.severity === "error").length;
319
+ const warnings = findings.filter((finding) => finding.severity === "warning").length;
320
+ return {
321
+ ok: errors === 0,
322
+ status: errors > 0 ? "fail" : warnings > 0 ? "warn" : "pass",
323
+ version: 1,
324
+ generatedAt: new Date().toISOString(),
325
+ summary: {
326
+ toolCount: tools.length,
327
+ categoryCount: matrix.categories.length,
328
+ recipeCount: ALL_AGENT_RECIPES.length,
329
+ schemaCount: BRIDGE_SCHEMA_INDEX.schemas.length,
330
+ pluginTools: tools.filter((tool) => tool.execution === "plugin").length,
331
+ orchestrationTools: tools.filter((tool) => tool.execution === "bridge-orchestration").length,
332
+ localTools: tools.filter((tool) => tool.execution === "bridge-local").length,
333
+ dryRunTools: tools.filter((tool) => tool.dryRunSupported === true).length,
334
+ designModeTools: tools.filter((tool) => tool.requiresDesignMode === true).length,
335
+ },
336
+ requiredSurface: {
337
+ metaTools,
338
+ schemaEntrypoints,
339
+ workflowGates,
340
+ remoteConnect,
341
+ },
342
+ findings,
343
+ };
344
+ }
345
+ //# sourceMappingURL=bridge-contract-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-contract-audit.js","sourceRoot":"","sources":["../src/bridge-contract-audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export declare function runBridgeHealthCli(argv?: string[]): Promise<void>;