@sxl-studio/bridge 1.7.1 → 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 +24 -2
  63. package/dist/command-queue.js +295 -25
  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 +19 -3
@@ -0,0 +1,280 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { buildCodeConnectSuggestions, } from "./codeconnect-suggestions.js";
4
+ function clampIndex(value, fallback) {
5
+ if (typeof value !== "number" || !Number.isFinite(value))
6
+ return fallback;
7
+ return Math.max(0, Math.floor(value));
8
+ }
9
+ function escapeStringLiteral(value) {
10
+ return value
11
+ .replace(/\\/g, "\\\\")
12
+ .replace(/'/g, "\\'")
13
+ .replace(/\r/g, "\\r")
14
+ .replace(/\n/g, "\\n");
15
+ }
16
+ function escapeTemplateLiteral(value, preserveExpressions = false) {
17
+ const escaped = value
18
+ .replace(/\\/g, "\\\\")
19
+ .replace(/`/g, "\\`")
20
+ .replace(/\$\{/g, preserveExpressions ? "${" : "\\${");
21
+ return escaped;
22
+ }
23
+ function pascalCase(value) {
24
+ const parts = value
25
+ .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
26
+ .split(/[^a-zA-Z0-9]+/g)
27
+ .filter(Boolean);
28
+ if (parts.length === 0)
29
+ return "Component";
30
+ return parts.map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`).join("");
31
+ }
32
+ function camelCase(value) {
33
+ const pascal = pascalCase(value);
34
+ return `${pascal.slice(0, 1).toLowerCase()}${pascal.slice(1)}` || "value";
35
+ }
36
+ function safeIdentifier(value, used) {
37
+ const base = camelCase(value).replace(/^[^a-zA-Z_$]+/, "") || "value";
38
+ let next = base;
39
+ let index = 2;
40
+ while (used.has(next)) {
41
+ next = `${base}${index}`;
42
+ index += 1;
43
+ }
44
+ used.add(next);
45
+ return next;
46
+ }
47
+ function safeTemplateId(value) {
48
+ const id = value
49
+ .normalize("NFKD")
50
+ .replace(/[\u0300-\u036f]/g, "")
51
+ .toLowerCase()
52
+ .replace(/[^a-z0-9]+/g, "-")
53
+ .replace(/^-+|-+$/g, "")
54
+ .slice(0, 80);
55
+ return id || "code-connect-template";
56
+ }
57
+ function fileNameFor(value) {
58
+ const base = pascalCase(value);
59
+ return `${base}.figma.ts`;
60
+ }
61
+ function selectSuggestion(args) {
62
+ const suggestions = buildCodeConnectSuggestions({
63
+ targets: args.targets,
64
+ componentNames: args.componentNames,
65
+ rootDir: args.rootDir,
66
+ repositoryUrl: args.repositoryUrl,
67
+ gitlabUrl: args.gitlabUrl,
68
+ documentationUrl: args.documentationUrl,
69
+ documentationDocsQuerySuffix: args.documentationDocsQuerySuffix,
70
+ documentationStoryPathTemplate: args.documentationStoryPathTemplate,
71
+ frameworks: args.frameworks,
72
+ maxSuggestionsPerTarget: args.maxSuggestionsPerTarget,
73
+ maxFiles: args.maxFiles,
74
+ maxFileBytes: args.maxFileBytes,
75
+ includeLowConfidence: args.includeLowConfidence,
76
+ });
77
+ const target = suggestions.targets[clampIndex(args.targetIndex, 0)];
78
+ const suggestion = target?.suggestions[clampIndex(args.suggestionIndex, 0)];
79
+ if (!target || !suggestion)
80
+ return null;
81
+ return { target, suggestion };
82
+ }
83
+ function firstFile(binding) {
84
+ return binding.files?.find((file) => file.componentName || file.filePath || file.importPath) ?? binding.files?.[0];
85
+ }
86
+ function componentNameFor(binding) {
87
+ return firstFile(binding)?.componentName?.trim() || pascalCase(binding.displayName);
88
+ }
89
+ function importPathFor(binding) {
90
+ return binding.importPath?.trim() || firstFile(binding)?.importPath?.trim() || null;
91
+ }
92
+ function sourceFilePathFor(binding) {
93
+ return firstFile(binding)?.filePath?.trim() || null;
94
+ }
95
+ function snippetFor(binding, componentName, includeAttrs, attrs) {
96
+ if (!includeAttrs) {
97
+ return binding.snippetTemplate?.trim() || firstFile(binding)?.snippetTemplate?.trim() || `<${componentName} />`;
98
+ }
99
+ if (attrs.length === 0)
100
+ return `<${componentName} />`;
101
+ return `<${componentName} ${attrs.join(" ")} />`;
102
+ }
103
+ function propertyKind(property) {
104
+ return property.kind.trim().toUpperCase();
105
+ }
106
+ function accessorFor(property, variableName) {
107
+ const name = escapeStringLiteral(property.name);
108
+ const kind = propertyKind(property);
109
+ if (kind === "TEXT")
110
+ return `const ${variableName} = instance.getString('${name}')`;
111
+ if (kind === "BOOLEAN")
112
+ return `const ${variableName} = instance.getBoolean('${name}')`;
113
+ if (kind === "VARIANT") {
114
+ const options = Array.isArray(property.options) ? property.options : [];
115
+ const mapLines = options.length > 0
116
+ ? options.map((option) => ` '${escapeStringLiteral(option)}': '${escapeStringLiteral(option)}',`).join("\n")
117
+ : ` '${escapeStringLiteral(String(property.defaultValue ?? "Default"))}': '${escapeStringLiteral(String(property.defaultValue ?? "Default"))}',`;
118
+ return `const ${variableName} = instance.getEnum('${name}', {\n${mapLines}\n})`;
119
+ }
120
+ if (kind === "INSTANCE_SWAP")
121
+ return `const ${variableName} = instance.getInstanceSwap('${name}')`;
122
+ if (kind === "SLOT")
123
+ return `const ${variableName} = instance.getSlot('${name}')`;
124
+ return `const ${variableName} = instance.getString('${name}')`;
125
+ }
126
+ function propertyAttr(property, variableName) {
127
+ const propName = camelCase(property.name);
128
+ const kind = propertyKind(property);
129
+ if (kind === "TEXT" || kind === "VARIANT")
130
+ return `${propName}={\${${variableName}}}`;
131
+ if (kind === "BOOLEAN")
132
+ return `${propName}={\${${variableName}}}`;
133
+ return null;
134
+ }
135
+ function buildPropertyBlock(binding, includeAccessors, includeMetadata, includeAttrs) {
136
+ const properties = binding.storybook?.componentApi?.properties ?? [];
137
+ if (!includeAccessors || properties.length === 0) {
138
+ return { lines: [], metadataLines: [], attrs: [], names: [] };
139
+ }
140
+ const used = new Set();
141
+ const lines = [];
142
+ const metadataLines = [];
143
+ const attrs = [];
144
+ const names = [];
145
+ for (const property of properties) {
146
+ if (!property.name.trim())
147
+ continue;
148
+ const variableName = safeIdentifier(property.name, used);
149
+ names.push(variableName);
150
+ lines.push(accessorFor(property, variableName));
151
+ if (includeMetadata)
152
+ metadataLines.push(` ${variableName},`);
153
+ const attr = includeAttrs ? propertyAttr(property, variableName) : null;
154
+ if (attr)
155
+ attrs.push(attr);
156
+ }
157
+ return { lines, metadataLines, attrs, names };
158
+ }
159
+ function outputPathFor(args, binding, rootDir, componentName) {
160
+ if (args.outputPath?.trim())
161
+ return path.resolve(args.outputPath);
162
+ const fileName = args.fileName?.trim() || fileNameFor(componentName);
163
+ if (args.outputDir?.trim())
164
+ return path.resolve(rootDir, args.outputDir, fileName);
165
+ const sourceFile = sourceFilePathFor(binding);
166
+ const sourceDir = sourceFile ? path.dirname(sourceFile) : ".";
167
+ return path.resolve(rootDir, sourceDir, fileName);
168
+ }
169
+ function assertInsideRoot(outputPath, rootDir, allowOutsideRoot) {
170
+ if (allowOutsideRoot)
171
+ return;
172
+ const relative = path.relative(rootDir, outputPath);
173
+ if (relative.startsWith("..") || path.isAbsolute(relative)) {
174
+ throw new Error("outputPath must stay inside rootDir unless allowOutsideRoot=true");
175
+ }
176
+ }
177
+ function templateContent(args, binding) {
178
+ const componentName = componentNameFor(binding);
179
+ const importPath = importPathFor(binding);
180
+ const sourceFilePath = sourceFilePathFor(binding);
181
+ const includeAccessors = args.includePropertyAccessors !== false;
182
+ const includeMetadata = args.includePropertyMetadata !== false;
183
+ const includeAttrs = args.includePropertyAttrs === true;
184
+ const props = buildPropertyBlock(binding, includeAccessors, includeMetadata, includeAttrs);
185
+ const snippet = snippetFor(binding, componentName, includeAttrs, props.attrs);
186
+ const lines = [];
187
+ if (args.figmaUrl?.trim())
188
+ lines.push(`// url=${args.figmaUrl.trim()}`);
189
+ else if (args.nodeId?.trim())
190
+ lines.push(`// node-id=${args.nodeId.trim()}`);
191
+ if (sourceFilePath)
192
+ lines.push(`// source=${sourceFilePath}`);
193
+ lines.push(`// component=${componentName}`);
194
+ lines.push("import figma from 'figma'");
195
+ lines.push("");
196
+ lines.push("const instance = figma.selectedInstance");
197
+ if (props.lines.length > 0) {
198
+ lines.push("");
199
+ lines.push(...props.lines);
200
+ }
201
+ lines.push("");
202
+ lines.push("export default {");
203
+ lines.push(` id: '${safeTemplateId(binding.displayName || componentName)}',`);
204
+ lines.push(` example: figma.code\`${escapeTemplateLiteral(snippet, includeAttrs)}\`,`);
205
+ if (importPath) {
206
+ lines.push(` imports: ['import { ${componentName} } from "${escapeStringLiteral(importPath)}"'],`);
207
+ }
208
+ if (includeMetadata && props.metadataLines.length > 0) {
209
+ lines.push(" metadata: {");
210
+ lines.push(" nestable: true,");
211
+ lines.push(" props: {");
212
+ lines.push(...props.metadataLines);
213
+ lines.push(" },");
214
+ lines.push(" },");
215
+ }
216
+ lines.push("}");
217
+ lines.push("");
218
+ return {
219
+ content: lines.join("\n"),
220
+ componentName,
221
+ importPath,
222
+ sourceFilePath,
223
+ propertyAccessors: props.names,
224
+ };
225
+ }
226
+ export function generateCodeConnectTemplate(args) {
227
+ const rootDir = path.resolve(args.rootDir ?? process.env.SXL_CODECONNECT_ROOT ?? process.cwd());
228
+ const selected = args.binding ? null : selectSuggestion(args);
229
+ const binding = (args.binding ?? selected?.suggestion.binding);
230
+ if (!binding) {
231
+ throw new Error("No Code Connect binding available. Provide binding or componentNames/targets with a matching local source file.");
232
+ }
233
+ const generated = templateContent(args, binding);
234
+ const outputPath = outputPathFor(args, binding, rootDir, generated.componentName);
235
+ assertInsideRoot(outputPath, rootDir, args.allowOutsideRoot);
236
+ const writeRequested = args.writeFile === true;
237
+ const existed = existsSync(outputPath);
238
+ if (writeRequested) {
239
+ if (existed && args.overwrite !== true) {
240
+ throw new Error(`Template already exists at ${outputPath}. Set overwrite=true to replace it.`);
241
+ }
242
+ mkdirSync(path.dirname(outputPath), { recursive: true });
243
+ writeFileSync(outputPath, generated.content, "utf8");
244
+ }
245
+ const warnings = [];
246
+ if (generated.propertyAccessors.length > 0 && args.includePropertyAttrs !== true) {
247
+ warnings.push("Figma component API properties were emitted as accessors/metadata only. Set includePropertyAttrs=true only after verifying matching code component prop names.");
248
+ }
249
+ if (!generated.importPath) {
250
+ warnings.push("No importPath was available; imports[] was omitted from the generated template.");
251
+ }
252
+ return {
253
+ ok: true,
254
+ source: "bridge-code-connect-template",
255
+ dryRun: !writeRequested,
256
+ generatedAt: new Date().toISOString(),
257
+ target: selected?.target ?? null,
258
+ binding,
259
+ template: {
260
+ fileName: path.basename(outputPath),
261
+ outputPath,
262
+ content: generated.content,
263
+ bytes: Buffer.byteLength(generated.content, "utf8"),
264
+ componentName: generated.componentName,
265
+ importPath: generated.importPath,
266
+ sourceFilePath: generated.sourceFilePath,
267
+ propertyAccessors: generated.propertyAccessors,
268
+ },
269
+ write: {
270
+ requested: writeRequested,
271
+ written: writeRequested,
272
+ overwritten: writeRequested && existed,
273
+ },
274
+ warnings,
275
+ nextStep: writeRequested
276
+ ? "Review the generated .figma.ts template, adjust prop mappings if needed, then publish/apply Code Connect through your normal repository workflow."
277
+ : "Review template.content and call generate_code_connect_template with writeFile=true to create the .figma.ts file.",
278
+ };
279
+ }
280
+ //# sourceMappingURL=codeconnect-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeconnect-template.js","sourceRoot":"","sources":["../src/codeconnect-template.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Serial execution: one command at a time.
5
5
  * Each command has a timeout. Results are resolved via promises.
6
6
  */
7
- import type { CommandResult, CommandStatus } from "./types.js";
7
+ import type { CommandQueueSnapshot, CommandResult, CommandStatus, CommandTelemetryEvent, CommandTelemetrySummary } from "./types.js";
8
8
  /** Per-command client timeouts. Keep long to avoid client-side aborts on heavy files. */
9
9
  export declare const BRIDGE_COMMAND_TIMEOUT_MS: Readonly<Record<string, number>>;
10
10
  type CommandSender = (command: {
@@ -15,15 +15,37 @@ type CommandSender = (command: {
15
15
  export declare class CommandQueue {
16
16
  private queue;
17
17
  private current;
18
+ private immediate;
18
19
  private sendCommand;
19
- private timeoutHandle;
20
+ private timeoutHandles;
21
+ private events;
20
22
  setSender(sender: CommandSender): void;
21
23
  get queueLength(): number;
22
24
  get currentCommand(): string | null;
25
+ getSnapshot(now?: number): CommandQueueSnapshot;
26
+ getEventsSnapshot(filters?: {
27
+ limit?: number;
28
+ commandId?: string | null;
29
+ }): CommandTelemetryEvent[];
30
+ getTelemetrySummary(now?: number): CommandTelemetrySummary;
23
31
  execute(commandType: string, payload?: Record<string, unknown>): Promise<CommandResult>;
32
+ /**
33
+ * Out-of-band command dispatch for control-plane operations.
34
+ *
35
+ * Long Figma operations are intentionally serialized, but cancellation must be able
36
+ * to reach the plugin while another command is running. The plugin main handler can
37
+ * process this command concurrently during generator yields and flip its cancellation
38
+ * flag; queuing it behind the running command makes cancellation ineffective.
39
+ */
40
+ private executeImmediate;
41
+ private scheduleTimeout;
24
42
  resolveCommand(commandId: string, status: CommandStatus, result?: unknown, error?: string, events?: unknown[], durationMs?: number): void;
25
43
  cancelAll(): void;
26
44
  private processNext;
45
+ recordPluginEvent(raw: unknown): void;
27
46
  private clearTimeout;
47
+ private clearAllTimeouts;
48
+ private recordCommandEvent;
49
+ private recordTelemetryEvent;
28
50
  }
29
51
  export {};