@muloka/figma-console-mcp 0.1.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 (443) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +898 -0
  3. package/dist/apps/design-system-dashboard/scoring/accessibility.d.ts +14 -0
  4. package/dist/apps/design-system-dashboard/scoring/accessibility.d.ts.map +1 -0
  5. package/dist/apps/design-system-dashboard/scoring/accessibility.js +278 -0
  6. package/dist/apps/design-system-dashboard/scoring/accessibility.js.map +1 -0
  7. package/dist/apps/design-system-dashboard/scoring/component-metadata.d.ts +29 -0
  8. package/dist/apps/design-system-dashboard/scoring/component-metadata.d.ts.map +1 -0
  9. package/dist/apps/design-system-dashboard/scoring/component-metadata.js +358 -0
  10. package/dist/apps/design-system-dashboard/scoring/component-metadata.js.map +1 -0
  11. package/dist/apps/design-system-dashboard/scoring/consistency.d.ts +14 -0
  12. package/dist/apps/design-system-dashboard/scoring/consistency.d.ts.map +1 -0
  13. package/dist/apps/design-system-dashboard/scoring/consistency.js +342 -0
  14. package/dist/apps/design-system-dashboard/scoring/consistency.js.map +1 -0
  15. package/dist/apps/design-system-dashboard/scoring/coverage.d.ts +14 -0
  16. package/dist/apps/design-system-dashboard/scoring/coverage.d.ts.map +1 -0
  17. package/dist/apps/design-system-dashboard/scoring/coverage.js +231 -0
  18. package/dist/apps/design-system-dashboard/scoring/coverage.js.map +1 -0
  19. package/dist/apps/design-system-dashboard/scoring/engine.d.ts +27 -0
  20. package/dist/apps/design-system-dashboard/scoring/engine.d.ts.map +1 -0
  21. package/dist/apps/design-system-dashboard/scoring/engine.js +93 -0
  22. package/dist/apps/design-system-dashboard/scoring/engine.js.map +1 -0
  23. package/dist/apps/design-system-dashboard/scoring/naming-semantics.d.ts +14 -0
  24. package/dist/apps/design-system-dashboard/scoring/naming-semantics.d.ts.map +1 -0
  25. package/dist/apps/design-system-dashboard/scoring/naming-semantics.js +309 -0
  26. package/dist/apps/design-system-dashboard/scoring/naming-semantics.js.map +1 -0
  27. package/dist/apps/design-system-dashboard/scoring/token-architecture.d.ts +14 -0
  28. package/dist/apps/design-system-dashboard/scoring/token-architecture.d.ts.map +1 -0
  29. package/dist/apps/design-system-dashboard/scoring/token-architecture.js +350 -0
  30. package/dist/apps/design-system-dashboard/scoring/token-architecture.js.map +1 -0
  31. package/dist/apps/design-system-dashboard/scoring/types.d.ts +89 -0
  32. package/dist/apps/design-system-dashboard/scoring/types.d.ts.map +1 -0
  33. package/dist/apps/design-system-dashboard/scoring/types.js +41 -0
  34. package/dist/apps/design-system-dashboard/scoring/types.js.map +1 -0
  35. package/dist/apps/design-system-dashboard/server.d.ts +24 -0
  36. package/dist/apps/design-system-dashboard/server.d.ts.map +1 -0
  37. package/dist/apps/design-system-dashboard/server.js +160 -0
  38. package/dist/apps/design-system-dashboard/server.js.map +1 -0
  39. package/dist/apps/token-browser/server.d.ts +26 -0
  40. package/dist/apps/token-browser/server.d.ts.map +1 -0
  41. package/dist/apps/token-browser/server.js +137 -0
  42. package/dist/apps/token-browser/server.js.map +1 -0
  43. package/dist/browser/base.d.ts +58 -0
  44. package/dist/browser/base.d.ts.map +1 -0
  45. package/dist/browser/base.js +6 -0
  46. package/dist/browser/base.js.map +1 -0
  47. package/dist/browser/local.d.ts +87 -0
  48. package/dist/browser/local.d.ts.map +1 -0
  49. package/dist/browser/local.js +318 -0
  50. package/dist/browser/local.js.map +1 -0
  51. package/dist/cloudflare/apps/design-system-dashboard/scoring/accessibility.js +277 -0
  52. package/dist/cloudflare/apps/design-system-dashboard/scoring/component-metadata.js +357 -0
  53. package/dist/cloudflare/apps/design-system-dashboard/scoring/consistency.js +341 -0
  54. package/dist/cloudflare/apps/design-system-dashboard/scoring/coverage.js +230 -0
  55. package/dist/cloudflare/apps/design-system-dashboard/scoring/engine.js +92 -0
  56. package/dist/cloudflare/apps/design-system-dashboard/scoring/naming-semantics.js +308 -0
  57. package/dist/cloudflare/apps/design-system-dashboard/scoring/token-architecture.js +349 -0
  58. package/dist/cloudflare/apps/design-system-dashboard/scoring/types.js +40 -0
  59. package/dist/cloudflare/apps/design-system-dashboard/server.js +159 -0
  60. package/dist/cloudflare/apps/token-browser/server.js +136 -0
  61. package/dist/cloudflare/browser-manager.js +157 -0
  62. package/dist/cloudflare/core/accessibility-tools.js +361 -0
  63. package/dist/cloudflare/core/annotation-tools.js +230 -0
  64. package/dist/cloudflare/core/cloud-websocket-connector.js +419 -0
  65. package/dist/cloudflare/core/cloud-websocket-relay.js +198 -0
  66. package/dist/cloudflare/core/comment-tools.js +292 -0
  67. package/dist/cloudflare/core/config.js +153 -0
  68. package/dist/cloudflare/core/console-monitor.js +427 -0
  69. package/dist/cloudflare/core/deep-component-tools.js +128 -0
  70. package/dist/cloudflare/core/design-code-tools.js +2793 -0
  71. package/dist/cloudflare/core/design-system-manifest.js +265 -0
  72. package/dist/cloudflare/core/design-system-tools.js +882 -0
  73. package/dist/cloudflare/core/diagnose-tool.js +100 -0
  74. package/dist/cloudflare/core/diff/changelog-formatter.js +275 -0
  75. package/dist/cloudflare/core/diff/diff-engine.js +334 -0
  76. package/dist/cloudflare/core/diff/property-compare.js +36 -0
  77. package/dist/cloudflare/core/diff/version-cache.js +74 -0
  78. package/dist/cloudflare/core/enrichment/enrichment-service.js +374 -0
  79. package/dist/cloudflare/core/enrichment/index.js +7 -0
  80. package/dist/cloudflare/core/enrichment/relationship-mapper.js +351 -0
  81. package/dist/cloudflare/core/enrichment/style-resolver.js +346 -0
  82. package/dist/cloudflare/core/figjam-tools.js +547 -0
  83. package/dist/cloudflare/core/figma-api.js +509 -0
  84. package/dist/cloudflare/core/figma-connector.js +7 -0
  85. package/dist/cloudflare/core/figma-reconstruction-spec.js +402 -0
  86. package/dist/cloudflare/core/figma-style-extractor.js +311 -0
  87. package/dist/cloudflare/core/figma-tools.js +3302 -0
  88. package/dist/cloudflare/core/identity.js +96 -0
  89. package/dist/cloudflare/core/library-tools.js +580 -0
  90. package/dist/cloudflare/core/logger.js +53 -0
  91. package/dist/cloudflare/core/port-discovery.js +935 -0
  92. package/dist/cloudflare/core/resolve-package-root.js +11 -0
  93. package/dist/cloudflare/core/slides-tools.js +714 -0
  94. package/dist/cloudflare/core/slot-tools.js +334 -0
  95. package/dist/cloudflare/core/snippet-injector.js +96 -0
  96. package/dist/cloudflare/core/tokens/alias-resolver.js +205 -0
  97. package/dist/cloudflare/core/tokens/config.js +294 -0
  98. package/dist/cloudflare/core/tokens/dialect.js +232 -0
  99. package/dist/cloudflare/core/tokens/figma-converter.js +323 -0
  100. package/dist/cloudflare/core/tokens/formatters/css-vars.js +338 -0
  101. package/dist/cloudflare/core/tokens/formatters/dtcg.js +376 -0
  102. package/dist/cloudflare/core/tokens/formatters/index.js +45 -0
  103. package/dist/cloudflare/core/tokens/formatters/json.js +205 -0
  104. package/dist/cloudflare/core/tokens/formatters/less.js +4 -0
  105. package/dist/cloudflare/core/tokens/formatters/scss.js +258 -0
  106. package/dist/cloudflare/core/tokens/formatters/stubs.js +13 -0
  107. package/dist/cloudflare/core/tokens/formatters/style-dictionary-v3.js +213 -0
  108. package/dist/cloudflare/core/tokens/formatters/tailwind-v3.js +237 -0
  109. package/dist/cloudflare/core/tokens/formatters/tailwind-v4.js +335 -0
  110. package/dist/cloudflare/core/tokens/formatters/tokens-studio.js +256 -0
  111. package/dist/cloudflare/core/tokens/formatters/ts-module.js +198 -0
  112. package/dist/cloudflare/core/tokens/index.js +16 -0
  113. package/dist/cloudflare/core/tokens/parsers/css-vars.js +4 -0
  114. package/dist/cloudflare/core/tokens/parsers/dtcg.js +280 -0
  115. package/dist/cloudflare/core/tokens/parsers/index.js +138 -0
  116. package/dist/cloudflare/core/tokens/parsers/json.js +7 -0
  117. package/dist/cloudflare/core/tokens/parsers/scss.js +4 -0
  118. package/dist/cloudflare/core/tokens/parsers/stubs.js +20 -0
  119. package/dist/cloudflare/core/tokens/parsers/style-dictionary-v3.js +4 -0
  120. package/dist/cloudflare/core/tokens/parsers/tailwind-v3.js +4 -0
  121. package/dist/cloudflare/core/tokens/parsers/tailwind-v4.js +4 -0
  122. package/dist/cloudflare/core/tokens/parsers/tokens-studio.js +4 -0
  123. package/dist/cloudflare/core/tokens/schemas.js +152 -0
  124. package/dist/cloudflare/core/tokens/transforms/color.js +12 -0
  125. package/dist/cloudflare/core/tokens/transforms/index.js +29 -0
  126. package/dist/cloudflare/core/tokens/transforms/size.js +7 -0
  127. package/dist/cloudflare/core/tokens/types.js +18 -0
  128. package/dist/cloudflare/core/tokens-tools.js +1788 -0
  129. package/dist/cloudflare/core/types/design-code.js +4 -0
  130. package/dist/cloudflare/core/types/enriched.js +5 -0
  131. package/dist/cloudflare/core/types/index.js +4 -0
  132. package/dist/cloudflare/core/variable-resolver.js +85 -0
  133. package/dist/cloudflare/core/version-tools.js +1199 -0
  134. package/dist/cloudflare/core/websocket-connector.js +436 -0
  135. package/dist/cloudflare/core/websocket-server.js +956 -0
  136. package/dist/cloudflare/core/write-tools.js +2506 -0
  137. package/dist/cloudflare/index.js +3010 -0
  138. package/dist/core/accessibility-tools.d.ts +21 -0
  139. package/dist/core/accessibility-tools.d.ts.map +1 -0
  140. package/dist/core/accessibility-tools.js +362 -0
  141. package/dist/core/accessibility-tools.js.map +1 -0
  142. package/dist/core/annotation-tools.d.ts +14 -0
  143. package/dist/core/annotation-tools.d.ts.map +1 -0
  144. package/dist/core/annotation-tools.js +231 -0
  145. package/dist/core/annotation-tools.js.map +1 -0
  146. package/dist/core/comment-tools.d.ts +11 -0
  147. package/dist/core/comment-tools.d.ts.map +1 -0
  148. package/dist/core/comment-tools.js +293 -0
  149. package/dist/core/comment-tools.js.map +1 -0
  150. package/dist/core/config.d.ts +17 -0
  151. package/dist/core/config.d.ts.map +1 -0
  152. package/dist/core/config.js +154 -0
  153. package/dist/core/config.js.map +1 -0
  154. package/dist/core/console-monitor.d.ts +82 -0
  155. package/dist/core/console-monitor.d.ts.map +1 -0
  156. package/dist/core/console-monitor.js +428 -0
  157. package/dist/core/console-monitor.js.map +1 -0
  158. package/dist/core/deep-component-tools.d.ts +14 -0
  159. package/dist/core/deep-component-tools.d.ts.map +1 -0
  160. package/dist/core/deep-component-tools.js +129 -0
  161. package/dist/core/deep-component-tools.js.map +1 -0
  162. package/dist/core/design-code-tools.d.ts +116 -0
  163. package/dist/core/design-code-tools.d.ts.map +1 -0
  164. package/dist/core/design-code-tools.js +2794 -0
  165. package/dist/core/design-code-tools.js.map +1 -0
  166. package/dist/core/design-system-manifest.d.ts +273 -0
  167. package/dist/core/design-system-manifest.d.ts.map +1 -0
  168. package/dist/core/design-system-manifest.js +266 -0
  169. package/dist/core/design-system-manifest.js.map +1 -0
  170. package/dist/core/design-system-tools.d.ts +67 -0
  171. package/dist/core/design-system-tools.d.ts.map +1 -0
  172. package/dist/core/design-system-tools.js +883 -0
  173. package/dist/core/design-system-tools.js.map +1 -0
  174. package/dist/core/diagnose-tool.d.ts +41 -0
  175. package/dist/core/diagnose-tool.d.ts.map +1 -0
  176. package/dist/core/diagnose-tool.js +101 -0
  177. package/dist/core/diagnose-tool.js.map +1 -0
  178. package/dist/core/diff/changelog-formatter.d.ts +35 -0
  179. package/dist/core/diff/changelog-formatter.d.ts.map +1 -0
  180. package/dist/core/diff/changelog-formatter.js +276 -0
  181. package/dist/core/diff/changelog-formatter.js.map +1 -0
  182. package/dist/core/diff/diff-engine.d.ts +127 -0
  183. package/dist/core/diff/diff-engine.d.ts.map +1 -0
  184. package/dist/core/diff/diff-engine.js +335 -0
  185. package/dist/core/diff/diff-engine.js.map +1 -0
  186. package/dist/core/diff/property-compare.d.ts +19 -0
  187. package/dist/core/diff/property-compare.d.ts.map +1 -0
  188. package/dist/core/diff/property-compare.js +37 -0
  189. package/dist/core/diff/property-compare.js.map +1 -0
  190. package/dist/core/diff/version-cache.d.ts +40 -0
  191. package/dist/core/diff/version-cache.d.ts.map +1 -0
  192. package/dist/core/diff/version-cache.js +75 -0
  193. package/dist/core/diff/version-cache.js.map +1 -0
  194. package/dist/core/enrichment/enrichment-service.d.ts +52 -0
  195. package/dist/core/enrichment/enrichment-service.d.ts.map +1 -0
  196. package/dist/core/enrichment/enrichment-service.js +375 -0
  197. package/dist/core/enrichment/enrichment-service.js.map +1 -0
  198. package/dist/core/enrichment/index.d.ts +8 -0
  199. package/dist/core/enrichment/index.d.ts.map +1 -0
  200. package/dist/core/enrichment/index.js +8 -0
  201. package/dist/core/enrichment/index.js.map +1 -0
  202. package/dist/core/enrichment/relationship-mapper.d.ts +106 -0
  203. package/dist/core/enrichment/relationship-mapper.d.ts.map +1 -0
  204. package/dist/core/enrichment/relationship-mapper.js +352 -0
  205. package/dist/core/enrichment/relationship-mapper.js.map +1 -0
  206. package/dist/core/enrichment/style-resolver.d.ts +85 -0
  207. package/dist/core/enrichment/style-resolver.d.ts.map +1 -0
  208. package/dist/core/enrichment/style-resolver.js +347 -0
  209. package/dist/core/enrichment/style-resolver.js.map +1 -0
  210. package/dist/core/figjam-tools.d.ts +8 -0
  211. package/dist/core/figjam-tools.d.ts.map +1 -0
  212. package/dist/core/figjam-tools.js +548 -0
  213. package/dist/core/figjam-tools.js.map +1 -0
  214. package/dist/core/figma-api.d.ts +254 -0
  215. package/dist/core/figma-api.d.ts.map +1 -0
  216. package/dist/core/figma-api.js +510 -0
  217. package/dist/core/figma-api.js.map +1 -0
  218. package/dist/core/figma-connector.d.ts +214 -0
  219. package/dist/core/figma-connector.d.ts.map +1 -0
  220. package/dist/core/figma-connector.js +8 -0
  221. package/dist/core/figma-connector.js.map +1 -0
  222. package/dist/core/figma-desktop-connector.d.ts +312 -0
  223. package/dist/core/figma-desktop-connector.d.ts.map +1 -0
  224. package/dist/core/figma-desktop-connector.js +1298 -0
  225. package/dist/core/figma-desktop-connector.js.map +1 -0
  226. package/dist/core/figma-reconstruction-spec.d.ts +166 -0
  227. package/dist/core/figma-reconstruction-spec.d.ts.map +1 -0
  228. package/dist/core/figma-reconstruction-spec.js +403 -0
  229. package/dist/core/figma-reconstruction-spec.js.map +1 -0
  230. package/dist/core/figma-style-extractor.d.ts +76 -0
  231. package/dist/core/figma-style-extractor.d.ts.map +1 -0
  232. package/dist/core/figma-style-extractor.js +312 -0
  233. package/dist/core/figma-style-extractor.js.map +1 -0
  234. package/dist/core/figma-tools.d.ts +22 -0
  235. package/dist/core/figma-tools.d.ts.map +1 -0
  236. package/dist/core/figma-tools.js +3303 -0
  237. package/dist/core/figma-tools.js.map +1 -0
  238. package/dist/core/identity.d.ts +41 -0
  239. package/dist/core/identity.d.ts.map +1 -0
  240. package/dist/core/identity.js +97 -0
  241. package/dist/core/identity.js.map +1 -0
  242. package/dist/core/library-tools.d.ts +17 -0
  243. package/dist/core/library-tools.d.ts.map +1 -0
  244. package/dist/core/library-tools.js +581 -0
  245. package/dist/core/library-tools.js.map +1 -0
  246. package/dist/core/logger.d.ts +22 -0
  247. package/dist/core/logger.d.ts.map +1 -0
  248. package/dist/core/logger.js +54 -0
  249. package/dist/core/logger.js.map +1 -0
  250. package/dist/core/port-discovery.d.ts +211 -0
  251. package/dist/core/port-discovery.d.ts.map +1 -0
  252. package/dist/core/port-discovery.js +936 -0
  253. package/dist/core/port-discovery.js.map +1 -0
  254. package/dist/core/resolve-package-root.d.ts +2 -0
  255. package/dist/core/resolve-package-root.d.ts.map +1 -0
  256. package/dist/core/resolve-package-root.js +12 -0
  257. package/dist/core/resolve-package-root.js.map +1 -0
  258. package/dist/core/slides-tools.d.ts +8 -0
  259. package/dist/core/slides-tools.d.ts.map +1 -0
  260. package/dist/core/slides-tools.js +715 -0
  261. package/dist/core/slides-tools.js.map +1 -0
  262. package/dist/core/slot-tools.d.ts +7 -0
  263. package/dist/core/slot-tools.d.ts.map +1 -0
  264. package/dist/core/slot-tools.js +335 -0
  265. package/dist/core/slot-tools.js.map +1 -0
  266. package/dist/core/snippet-injector.d.ts +24 -0
  267. package/dist/core/snippet-injector.d.ts.map +1 -0
  268. package/dist/core/snippet-injector.js +97 -0
  269. package/dist/core/snippet-injector.js.map +1 -0
  270. package/dist/core/tokens/alias-resolver.d.ts +97 -0
  271. package/dist/core/tokens/alias-resolver.d.ts.map +1 -0
  272. package/dist/core/tokens/alias-resolver.js +206 -0
  273. package/dist/core/tokens/alias-resolver.js.map +1 -0
  274. package/dist/core/tokens/config.d.ts +380 -0
  275. package/dist/core/tokens/config.d.ts.map +1 -0
  276. package/dist/core/tokens/config.js +295 -0
  277. package/dist/core/tokens/config.js.map +1 -0
  278. package/dist/core/tokens/dialect.d.ts +107 -0
  279. package/dist/core/tokens/dialect.d.ts.map +1 -0
  280. package/dist/core/tokens/dialect.js +233 -0
  281. package/dist/core/tokens/dialect.js.map +1 -0
  282. package/dist/core/tokens/figma-converter.d.ts +102 -0
  283. package/dist/core/tokens/figma-converter.d.ts.map +1 -0
  284. package/dist/core/tokens/figma-converter.js +324 -0
  285. package/dist/core/tokens/figma-converter.js.map +1 -0
  286. package/dist/core/tokens/formatters/css-vars.d.ts +24 -0
  287. package/dist/core/tokens/formatters/css-vars.d.ts.map +1 -0
  288. package/dist/core/tokens/formatters/css-vars.js +339 -0
  289. package/dist/core/tokens/formatters/css-vars.js.map +1 -0
  290. package/dist/core/tokens/formatters/dtcg.d.ts +28 -0
  291. package/dist/core/tokens/formatters/dtcg.d.ts.map +1 -0
  292. package/dist/core/tokens/formatters/dtcg.js +377 -0
  293. package/dist/core/tokens/formatters/dtcg.js.map +1 -0
  294. package/dist/core/tokens/formatters/index.d.ts +30 -0
  295. package/dist/core/tokens/formatters/index.d.ts.map +1 -0
  296. package/dist/core/tokens/formatters/index.js +46 -0
  297. package/dist/core/tokens/formatters/index.js.map +1 -0
  298. package/dist/core/tokens/formatters/json.d.ts +37 -0
  299. package/dist/core/tokens/formatters/json.d.ts.map +1 -0
  300. package/dist/core/tokens/formatters/json.js +206 -0
  301. package/dist/core/tokens/formatters/json.js.map +1 -0
  302. package/dist/core/tokens/formatters/less.d.ts +4 -0
  303. package/dist/core/tokens/formatters/less.d.ts.map +1 -0
  304. package/dist/core/tokens/formatters/less.js +5 -0
  305. package/dist/core/tokens/formatters/less.js.map +1 -0
  306. package/dist/core/tokens/formatters/scss.d.ts +26 -0
  307. package/dist/core/tokens/formatters/scss.d.ts.map +1 -0
  308. package/dist/core/tokens/formatters/scss.js +259 -0
  309. package/dist/core/tokens/formatters/scss.js.map +1 -0
  310. package/dist/core/tokens/formatters/stubs.d.ts +9 -0
  311. package/dist/core/tokens/formatters/stubs.d.ts.map +1 -0
  312. package/dist/core/tokens/formatters/stubs.js +14 -0
  313. package/dist/core/tokens/formatters/stubs.js.map +1 -0
  314. package/dist/core/tokens/formatters/style-dictionary-v3.d.ts +45 -0
  315. package/dist/core/tokens/formatters/style-dictionary-v3.d.ts.map +1 -0
  316. package/dist/core/tokens/formatters/style-dictionary-v3.js +214 -0
  317. package/dist/core/tokens/formatters/style-dictionary-v3.js.map +1 -0
  318. package/dist/core/tokens/formatters/tailwind-v3.d.ts +37 -0
  319. package/dist/core/tokens/formatters/tailwind-v3.d.ts.map +1 -0
  320. package/dist/core/tokens/formatters/tailwind-v3.js +238 -0
  321. package/dist/core/tokens/formatters/tailwind-v3.js.map +1 -0
  322. package/dist/core/tokens/formatters/tailwind-v4.d.ts +41 -0
  323. package/dist/core/tokens/formatters/tailwind-v4.d.ts.map +1 -0
  324. package/dist/core/tokens/formatters/tailwind-v4.js +336 -0
  325. package/dist/core/tokens/formatters/tailwind-v4.js.map +1 -0
  326. package/dist/core/tokens/formatters/tokens-studio.d.ts +44 -0
  327. package/dist/core/tokens/formatters/tokens-studio.d.ts.map +1 -0
  328. package/dist/core/tokens/formatters/tokens-studio.js +257 -0
  329. package/dist/core/tokens/formatters/tokens-studio.js.map +1 -0
  330. package/dist/core/tokens/formatters/ts-module.d.ts +35 -0
  331. package/dist/core/tokens/formatters/ts-module.d.ts.map +1 -0
  332. package/dist/core/tokens/formatters/ts-module.js +199 -0
  333. package/dist/core/tokens/formatters/ts-module.js.map +1 -0
  334. package/dist/core/tokens/index.d.ts +18 -0
  335. package/dist/core/tokens/index.d.ts.map +1 -0
  336. package/dist/core/tokens/index.js +17 -0
  337. package/dist/core/tokens/index.js.map +1 -0
  338. package/dist/core/tokens/parsers/css-vars.d.ts +3 -0
  339. package/dist/core/tokens/parsers/css-vars.d.ts.map +1 -0
  340. package/dist/core/tokens/parsers/css-vars.js +5 -0
  341. package/dist/core/tokens/parsers/css-vars.js.map +1 -0
  342. package/dist/core/tokens/parsers/dtcg.d.ts +21 -0
  343. package/dist/core/tokens/parsers/dtcg.d.ts.map +1 -0
  344. package/dist/core/tokens/parsers/dtcg.js +281 -0
  345. package/dist/core/tokens/parsers/dtcg.js.map +1 -0
  346. package/dist/core/tokens/parsers/index.d.ts +37 -0
  347. package/dist/core/tokens/parsers/index.d.ts.map +1 -0
  348. package/dist/core/tokens/parsers/index.js +139 -0
  349. package/dist/core/tokens/parsers/index.js.map +1 -0
  350. package/dist/core/tokens/parsers/json.d.ts +4 -0
  351. package/dist/core/tokens/parsers/json.d.ts.map +1 -0
  352. package/dist/core/tokens/parsers/json.js +8 -0
  353. package/dist/core/tokens/parsers/json.js.map +1 -0
  354. package/dist/core/tokens/parsers/scss.d.ts +3 -0
  355. package/dist/core/tokens/parsers/scss.d.ts.map +1 -0
  356. package/dist/core/tokens/parsers/scss.js +5 -0
  357. package/dist/core/tokens/parsers/scss.js.map +1 -0
  358. package/dist/core/tokens/parsers/stubs.d.ts +15 -0
  359. package/dist/core/tokens/parsers/stubs.d.ts.map +1 -0
  360. package/dist/core/tokens/parsers/stubs.js +21 -0
  361. package/dist/core/tokens/parsers/stubs.js.map +1 -0
  362. package/dist/core/tokens/parsers/style-dictionary-v3.d.ts +3 -0
  363. package/dist/core/tokens/parsers/style-dictionary-v3.d.ts.map +1 -0
  364. package/dist/core/tokens/parsers/style-dictionary-v3.js +5 -0
  365. package/dist/core/tokens/parsers/style-dictionary-v3.js.map +1 -0
  366. package/dist/core/tokens/parsers/tailwind-v3.d.ts +3 -0
  367. package/dist/core/tokens/parsers/tailwind-v3.d.ts.map +1 -0
  368. package/dist/core/tokens/parsers/tailwind-v3.js +5 -0
  369. package/dist/core/tokens/parsers/tailwind-v3.js.map +1 -0
  370. package/dist/core/tokens/parsers/tailwind-v4.d.ts +3 -0
  371. package/dist/core/tokens/parsers/tailwind-v4.d.ts.map +1 -0
  372. package/dist/core/tokens/parsers/tailwind-v4.js +5 -0
  373. package/dist/core/tokens/parsers/tailwind-v4.js.map +1 -0
  374. package/dist/core/tokens/parsers/tokens-studio.d.ts +3 -0
  375. package/dist/core/tokens/parsers/tokens-studio.d.ts.map +1 -0
  376. package/dist/core/tokens/parsers/tokens-studio.js +5 -0
  377. package/dist/core/tokens/parsers/tokens-studio.js.map +1 -0
  378. package/dist/core/tokens/schemas.d.ts +155 -0
  379. package/dist/core/tokens/schemas.d.ts.map +1 -0
  380. package/dist/core/tokens/schemas.js +153 -0
  381. package/dist/core/tokens/schemas.js.map +1 -0
  382. package/dist/core/tokens/transforms/color.d.ts +9 -0
  383. package/dist/core/tokens/transforms/color.d.ts.map +1 -0
  384. package/dist/core/tokens/transforms/color.js +13 -0
  385. package/dist/core/tokens/transforms/color.js.map +1 -0
  386. package/dist/core/tokens/transforms/index.d.ts +36 -0
  387. package/dist/core/tokens/transforms/index.d.ts.map +1 -0
  388. package/dist/core/tokens/transforms/index.js +30 -0
  389. package/dist/core/tokens/transforms/index.js.map +1 -0
  390. package/dist/core/tokens/transforms/size.d.ts +7 -0
  391. package/dist/core/tokens/transforms/size.d.ts.map +1 -0
  392. package/dist/core/tokens/transforms/size.js +8 -0
  393. package/dist/core/tokens/transforms/size.js.map +1 -0
  394. package/dist/core/tokens/types.d.ts +284 -0
  395. package/dist/core/tokens/types.d.ts.map +1 -0
  396. package/dist/core/tokens/types.js +19 -0
  397. package/dist/core/tokens/types.js.map +1 -0
  398. package/dist/core/tokens-tools.d.ts +285 -0
  399. package/dist/core/tokens-tools.d.ts.map +1 -0
  400. package/dist/core/tokens-tools.js +1789 -0
  401. package/dist/core/tokens-tools.js.map +1 -0
  402. package/dist/core/types/design-code.d.ts +271 -0
  403. package/dist/core/types/design-code.d.ts.map +1 -0
  404. package/dist/core/types/design-code.js +5 -0
  405. package/dist/core/types/design-code.js.map +1 -0
  406. package/dist/core/types/enriched.d.ts +213 -0
  407. package/dist/core/types/enriched.d.ts.map +1 -0
  408. package/dist/core/types/enriched.js +6 -0
  409. package/dist/core/types/enriched.js.map +1 -0
  410. package/dist/core/types/index.d.ts +104 -0
  411. package/dist/core/types/index.d.ts.map +1 -0
  412. package/dist/core/types/index.js +5 -0
  413. package/dist/core/types/index.js.map +1 -0
  414. package/dist/core/variable-resolver.d.ts +45 -0
  415. package/dist/core/variable-resolver.d.ts.map +1 -0
  416. package/dist/core/variable-resolver.js +86 -0
  417. package/dist/core/variable-resolver.js.map +1 -0
  418. package/dist/core/version-tools.d.ts +59 -0
  419. package/dist/core/version-tools.d.ts.map +1 -0
  420. package/dist/core/version-tools.js +1200 -0
  421. package/dist/core/version-tools.js.map +1 -0
  422. package/dist/core/websocket-connector.d.ts +247 -0
  423. package/dist/core/websocket-connector.d.ts.map +1 -0
  424. package/dist/core/websocket-connector.js +437 -0
  425. package/dist/core/websocket-connector.js.map +1 -0
  426. package/dist/core/websocket-server.d.ts +290 -0
  427. package/dist/core/websocket-server.d.ts.map +1 -0
  428. package/dist/core/websocket-server.js +957 -0
  429. package/dist/core/websocket-server.js.map +1 -0
  430. package/dist/core/write-tools.d.ts +7 -0
  431. package/dist/core/write-tools.d.ts.map +1 -0
  432. package/dist/core/write-tools.js +2507 -0
  433. package/dist/core/write-tools.js.map +1 -0
  434. package/dist/local.d.ts +105 -0
  435. package/dist/local.d.ts.map +1 -0
  436. package/dist/local.js +3314 -0
  437. package/dist/local.js.map +1 -0
  438. package/figma-desktop-bridge/README.md +365 -0
  439. package/figma-desktop-bridge/code.js +7359 -0
  440. package/figma-desktop-bridge/icon.png +0 -0
  441. package/figma-desktop-bridge/manifest.json +67 -0
  442. package/figma-desktop-bridge/ui.html +2783 -0
  443. package/package.json +103 -0
@@ -0,0 +1,436 @@
1
+ /**
2
+ * WebSocket Figma Connector
3
+ *
4
+ * Implements IFigmaConnector using the WebSocket Desktop Bridge transport.
5
+ * Each method sends a command to the plugin UI via WebSocket and waits
6
+ * for the response — same window.* functions, different transport.
7
+ *
8
+ * Data flow: MCP Server ←WebSocket→ ui.html ←postMessage→ code.js ←figma.*→ Figma
9
+ */
10
+ import { createChildLogger } from './logger.js';
11
+ const logger = createChildLogger({ component: 'websocket-connector' });
12
+ /**
13
+ * Number of variants a CREATE_COMPONENT_SET request will produce:
14
+ * Mode B = componentIds.length; Mode A = the cartesian product of the
15
+ * property axes ({State:[a,b,c], Size:[s,l]} → 6).
16
+ */
17
+ export function componentSetVariantCount(params) {
18
+ if (params.componentIds?.length)
19
+ return params.componentIds.length;
20
+ if (params.properties) {
21
+ let count = 1;
22
+ for (const values of Object.values(params.properties)) {
23
+ count *= Math.max(1, values?.length ?? 1);
24
+ }
25
+ return count;
26
+ }
27
+ return 1;
28
+ }
29
+ /**
30
+ * Server-hop timeout for CREATE_COMPONENT_SET, scaled by variant count.
31
+ * The plugin builds all variants in ONE uncancellable pass, so timing out
32
+ * early doesn't stop the work — it just makes the report contradict the
33
+ * file state (set gets created after the "failure") and invites duplicate
34
+ * retries. Budget ~1.2s per variant with a 30s floor and 120s cap, plus a
35
+ * 5s buffer over the ui.html hop (which uses the same base formula) so the
36
+ * plugin-side result or error always wins the race.
37
+ *
38
+ * NOTE: ui.html's CREATE_COMPONENT_SET route and
39
+ * cloud-websocket-connector.ts mirror the base formula — keep all three in
40
+ * sync.
41
+ */
42
+ export function componentSetTimeoutMs(params) {
43
+ const count = componentSetVariantCount(params);
44
+ return Math.min(120000, Math.max(30000, count * 1200)) + 5000;
45
+ }
46
+ export class WebSocketConnector {
47
+ constructor(wsServer) {
48
+ this.wsServer = wsServer;
49
+ }
50
+ async initialize() {
51
+ if (!this.wsServer.isClientConnected()) {
52
+ throw new Error('No WebSocket client connected. Make sure the Desktop Bridge plugin is open in Figma.');
53
+ }
54
+ logger.info('WebSocket connector initialized');
55
+ }
56
+ getTransportType() {
57
+ return 'websocket';
58
+ }
59
+ // ============================================================================
60
+ // Core execution
61
+ // ============================================================================
62
+ async executeInPluginContext(code) {
63
+ return this.wsServer.sendCommand('EXECUTE_CODE', { code, timeout: 5000 }, 7000);
64
+ }
65
+ async getVariablesFromPluginUI(fileKey) {
66
+ // Request the cached variables data that the plugin UI holds in window.__figmaVariablesData
67
+ return this.wsServer.sendCommand('GET_VARIABLES_DATA', {}, 10000, fileKey);
68
+ }
69
+ async getVariables(fileKey) {
70
+ // Execute the same variables-fetching code in the plugin worker context.
71
+ //
72
+ // IMPORTANT: Do NOT wrap this in an inner `(async () => { ... })()` IIFE.
73
+ // figma-desktop-bridge/code.js already wraps every EXECUTE_CODE payload in
74
+ // `(async function() { <code> })()`. An inner IIFE turns `return X` into a
75
+ // statement-expression that builds (but doesn't return) a Promise — the
76
+ // outer async returns undefined, and the result is silently dropped. See
77
+ // issue #68. The bare try/catch with top-level `return` is the contract
78
+ // code.js expects.
79
+ const code = `
80
+ try {
81
+ if (typeof figma === 'undefined') {
82
+ throw new Error('Figma API not available in this context');
83
+ }
84
+ const variables = await figma.variables.getLocalVariablesAsync();
85
+ const collections = await figma.variables.getLocalVariableCollectionsAsync();
86
+ return {
87
+ success: true,
88
+ timestamp: Date.now(),
89
+ fileMetadata: { fileName: figma.root.name, fileKey: figma.fileKey || null },
90
+ variables: variables.map(function(v) { return { id: v.id, name: v.name, key: v.key, resolvedType: v.resolvedType, valuesByMode: v.valuesByMode, variableCollectionId: v.variableCollectionId, scopes: v.scopes, description: v.description, hiddenFromPublishing: v.hiddenFromPublishing }; }),
91
+ variableCollections: collections.map(function(c) { return { id: c.id, name: c.name, key: c.key, modes: c.modes, defaultModeId: c.defaultModeId, variableIds: c.variableIds }; })
92
+ };
93
+ } catch (error) {
94
+ return { success: false, error: error.message };
95
+ }
96
+ `;
97
+ return this.wsServer.sendCommand('EXECUTE_CODE', { code, timeout: 30000 }, 32000, fileKey);
98
+ }
99
+ async executeCodeViaUI(code, timeoutMs = 5000) {
100
+ return this.wsServer.sendCommand('EXECUTE_CODE', { code, timeout: timeoutMs }, timeoutMs + 2000);
101
+ }
102
+ // ============================================================================
103
+ // Variable operations
104
+ // ============================================================================
105
+ async updateVariable(variableId, modeId, value) {
106
+ return this.wsServer.sendCommand('UPDATE_VARIABLE', { variableId, modeId, value });
107
+ }
108
+ async createVariable(name, collectionId, resolvedType, options) {
109
+ const params = { name, collectionId, resolvedType };
110
+ if (options) {
111
+ if (options.valuesByMode)
112
+ params.valuesByMode = options.valuesByMode;
113
+ if (options.description)
114
+ params.description = options.description;
115
+ if (options.scopes)
116
+ params.scopes = options.scopes;
117
+ }
118
+ return this.wsServer.sendCommand('CREATE_VARIABLE', params);
119
+ }
120
+ async deleteVariable(variableId) {
121
+ return this.wsServer.sendCommand('DELETE_VARIABLE', { variableId });
122
+ }
123
+ async refreshVariables() {
124
+ return this.wsServer.sendCommand('REFRESH_VARIABLES', {}, 300000);
125
+ }
126
+ async renameVariable(variableId, newName) {
127
+ const result = await this.wsServer.sendCommand('RENAME_VARIABLE', { variableId, newName });
128
+ // oldName may be embedded in variable data if ui.html handleResult doesn't pass it through
129
+ if (!result.oldName && result.variable?.oldName)
130
+ result.oldName = result.variable.oldName;
131
+ return result;
132
+ }
133
+ async setVariableDescription(variableId, description) {
134
+ return this.wsServer.sendCommand('SET_VARIABLE_DESCRIPTION', { variableId, description });
135
+ }
136
+ // ============================================================================
137
+ // Mode operations
138
+ // ============================================================================
139
+ async addMode(collectionId, modeName) {
140
+ return this.wsServer.sendCommand('ADD_MODE', { collectionId, modeName });
141
+ }
142
+ async renameMode(collectionId, modeId, newName) {
143
+ const result = await this.wsServer.sendCommand('RENAME_MODE', { collectionId, modeId, newName });
144
+ // oldName may be embedded in collection data if ui.html handleResult doesn't pass it through
145
+ if (!result.oldName && result.collection?.oldName)
146
+ result.oldName = result.collection.oldName;
147
+ return result;
148
+ }
149
+ // ============================================================================
150
+ // Collection operations
151
+ // ============================================================================
152
+ async createVariableCollection(name, options) {
153
+ const params = { name };
154
+ if (options) {
155
+ if (options.initialModeName)
156
+ params.initialModeName = options.initialModeName;
157
+ if (options.additionalModes)
158
+ params.additionalModes = options.additionalModes;
159
+ }
160
+ return this.wsServer.sendCommand('CREATE_VARIABLE_COLLECTION', params);
161
+ }
162
+ async deleteVariableCollection(collectionId) {
163
+ return this.wsServer.sendCommand('DELETE_VARIABLE_COLLECTION', { collectionId });
164
+ }
165
+ // ============================================================================
166
+ // Component operations
167
+ // ============================================================================
168
+ async getComponentFromPluginUI(nodeId) {
169
+ return this.wsServer.sendCommand('GET_COMPONENT', { nodeId }, 10000);
170
+ }
171
+ async getLocalComponents() {
172
+ return this.wsServer.sendCommand('GET_LOCAL_COMPONENTS', {}, 300000);
173
+ }
174
+ async setNodeDescription(nodeId, description, descriptionMarkdown) {
175
+ return this.wsServer.sendCommand('SET_NODE_DESCRIPTION', { nodeId, description, descriptionMarkdown });
176
+ }
177
+ // ============================================================================
178
+ // Annotation operations
179
+ // ============================================================================
180
+ async getAnnotations(nodeId, includeChildren, depth) {
181
+ return this.wsServer.sendCommand('GET_ANNOTATIONS', { nodeId, includeChildren, depth }, 10000);
182
+ }
183
+ async setAnnotations(nodeId, annotations, mode) {
184
+ return this.wsServer.sendCommand('SET_ANNOTATIONS', { nodeId, annotations, mode: mode || 'replace' });
185
+ }
186
+ async getAnnotationCategories() {
187
+ return this.wsServer.sendCommand('GET_ANNOTATION_CATEGORIES', {}, 5000);
188
+ }
189
+ async deepGetComponent(nodeId, depth) {
190
+ return this.wsServer.sendCommand('DEEP_GET_COMPONENT', { nodeId, depth: depth || 10 }, 30000);
191
+ }
192
+ async analyzeComponentSet(nodeId) {
193
+ return this.wsServer.sendCommand('ANALYZE_COMPONENT_SET', { nodeId }, 30000);
194
+ }
195
+ async addComponentProperty(nodeId, propertyName, type, defaultValue, options) {
196
+ const params = { nodeId, propertyName, propertyType: type, defaultValue };
197
+ if (options?.preferredValues)
198
+ params.preferredValues = options.preferredValues;
199
+ if (options?.description)
200
+ params.description = options.description;
201
+ return this.wsServer.sendCommand('ADD_COMPONENT_PROPERTY', params);
202
+ }
203
+ async editComponentProperty(nodeId, propertyName, newValue) {
204
+ return this.wsServer.sendCommand('EDIT_COMPONENT_PROPERTY', { nodeId, propertyName, newValue });
205
+ }
206
+ async deleteComponentProperty(nodeId, propertyName) {
207
+ return this.wsServer.sendCommand('DELETE_COMPONENT_PROPERTY', { nodeId, propertyName });
208
+ }
209
+ async instantiateComponent(componentKey, options) {
210
+ const params = { componentKey };
211
+ if (options) {
212
+ if (options.nodeId)
213
+ params.nodeId = options.nodeId;
214
+ if (options.position)
215
+ params.position = options.position;
216
+ if (options.size)
217
+ params.size = options.size;
218
+ if (options.overrides)
219
+ params.overrides = options.overrides;
220
+ if (options.variant)
221
+ params.variant = options.variant;
222
+ if (options.parentId)
223
+ params.parentId = options.parentId;
224
+ }
225
+ return this.wsServer.sendCommand('INSTANTIATE_COMPONENT', params);
226
+ }
227
+ async createComponentSet(params) {
228
+ // Cloning + combining large variant matrices is slow on heavy components
229
+ // and the plugin-side pass is uncancellable — a fixed 30s ceiling made a
230
+ // 48-variant set REPORT failure while the plugin kept going and created
231
+ // the set anyway (retry → duplicates). Scale the timeout with variant
232
+ // count instead (precedent: the token-import create phase).
233
+ return this.wsServer.sendCommand('CREATE_COMPONENT_SET', params, componentSetTimeoutMs(params));
234
+ }
235
+ // ============================================================================
236
+ // Slot operations
237
+ // ============================================================================
238
+ async createSlot(nodeId, options) {
239
+ return this.wsServer.sendCommand('CREATE_SLOT', { nodeId, ...options });
240
+ }
241
+ async getSlots(nodeId) {
242
+ return this.wsServer.sendCommand('GET_SLOTS', { nodeId });
243
+ }
244
+ async appendToSlot(params) {
245
+ return this.wsServer.sendCommand('APPEND_TO_SLOT', params);
246
+ }
247
+ async resetSlot(params) {
248
+ return this.wsServer.sendCommand('RESET_SLOT', params);
249
+ }
250
+ // ============================================================================
251
+ // Node manipulation
252
+ // ============================================================================
253
+ async resizeNode(nodeId, width, height, withConstraints = true) {
254
+ return this.wsServer.sendCommand('RESIZE_NODE', { nodeId, width, height, withConstraints });
255
+ }
256
+ async moveNode(nodeId, x, y) {
257
+ return this.wsServer.sendCommand('MOVE_NODE', { nodeId, x, y });
258
+ }
259
+ async setNodeFills(nodeId, fills) {
260
+ return this.wsServer.sendCommand('SET_NODE_FILLS', { nodeId, fills });
261
+ }
262
+ async setNodeStrokes(nodeId, strokes, strokeWeight) {
263
+ const params = { nodeId, strokes };
264
+ if (strokeWeight !== undefined)
265
+ params.strokeWeight = strokeWeight;
266
+ return this.wsServer.sendCommand('SET_NODE_STROKES', params);
267
+ }
268
+ async setNodeOpacity(nodeId, opacity) {
269
+ return this.wsServer.sendCommand('SET_NODE_OPACITY', { nodeId, opacity });
270
+ }
271
+ async setNodeCornerRadius(nodeId, radius) {
272
+ return this.wsServer.sendCommand('SET_NODE_CORNER_RADIUS', { nodeId, radius });
273
+ }
274
+ async cloneNode(nodeId) {
275
+ return this.wsServer.sendCommand('CLONE_NODE', { nodeId });
276
+ }
277
+ async deleteNode(nodeId) {
278
+ return this.wsServer.sendCommand('DELETE_NODE', { nodeId });
279
+ }
280
+ async renameNode(nodeId, newName) {
281
+ return this.wsServer.sendCommand('RENAME_NODE', { nodeId, newName });
282
+ }
283
+ async setTextContent(nodeId, characters, options) {
284
+ const params = { nodeId, text: characters };
285
+ if (options) {
286
+ if (options.fontSize)
287
+ params.fontSize = options.fontSize;
288
+ if (options.fontWeight)
289
+ params.fontWeight = options.fontWeight;
290
+ if (options.fontFamily)
291
+ params.fontFamily = options.fontFamily;
292
+ if (options.fontStyle)
293
+ params.fontStyle = options.fontStyle;
294
+ }
295
+ return this.wsServer.sendCommand('SET_TEXT_CONTENT', params);
296
+ }
297
+ async createChildNode(parentId, nodeType, properties) {
298
+ return this.wsServer.sendCommand('CREATE_CHILD_NODE', { parentId, nodeType, properties: properties || {} });
299
+ }
300
+ // ============================================================================
301
+ // Screenshot & instance properties
302
+ // ============================================================================
303
+ async captureScreenshot(nodeId, options) {
304
+ const params = { nodeId };
305
+ if (options?.format)
306
+ params.format = options.format;
307
+ if (options?.scale)
308
+ params.scale = options.scale;
309
+ return this.wsServer.sendCommand('CAPTURE_SCREENSHOT', params, 30000);
310
+ }
311
+ async setInstanceProperties(nodeId, properties) {
312
+ return this.wsServer.sendCommand('SET_INSTANCE_PROPERTIES', { nodeId, properties });
313
+ }
314
+ // ============================================================================
315
+ // Image fill
316
+ // ============================================================================
317
+ async setImageFill(nodeIds, imageData, scaleMode = 'FILL') {
318
+ return this.wsServer.sendCommand('SET_IMAGE_FILL', { nodeIds, imageData, scaleMode }, 60000);
319
+ }
320
+ // ============================================================================
321
+ // Design lint
322
+ // ============================================================================
323
+ async lintDesign(nodeId, rules, maxDepth, maxFindings) {
324
+ const params = {};
325
+ if (nodeId)
326
+ params.nodeId = nodeId;
327
+ if (rules)
328
+ params.rules = rules;
329
+ if (maxDepth !== undefined)
330
+ params.maxDepth = maxDepth;
331
+ if (maxFindings !== undefined)
332
+ params.maxFindings = maxFindings;
333
+ return this.wsServer.sendCommand('LINT_DESIGN', params, 120000);
334
+ }
335
+ // ============================================================================
336
+ // Component accessibility audit
337
+ // ============================================================================
338
+ async auditComponentAccessibility(nodeId, targetSize) {
339
+ const params = {};
340
+ if (nodeId)
341
+ params.nodeId = nodeId;
342
+ if (targetSize !== undefined)
343
+ params.targetSize = targetSize;
344
+ return this.wsServer.sendCommand('AUDIT_COMPONENT_ACCESSIBILITY', params, 120000);
345
+ }
346
+ // ============================================================================
347
+ // FigJam operations
348
+ // ============================================================================
349
+ async createSticky(params) {
350
+ return this.wsServer.sendCommand('CREATE_STICKY', params);
351
+ }
352
+ async createStickies(params) {
353
+ return this.wsServer.sendCommand('CREATE_STICKIES', params, 30000);
354
+ }
355
+ async createConnector(params) {
356
+ return this.wsServer.sendCommand('CREATE_CONNECTOR', params);
357
+ }
358
+ async createShapeWithText(params) {
359
+ return this.wsServer.sendCommand('CREATE_SHAPE_WITH_TEXT', params);
360
+ }
361
+ async createSection(params) {
362
+ return this.wsServer.sendCommand('CREATE_SECTION', params);
363
+ }
364
+ async createTable(params) {
365
+ return this.wsServer.sendCommand('CREATE_TABLE', params, 30000);
366
+ }
367
+ async createCodeBlock(params) {
368
+ return this.wsServer.sendCommand('CREATE_CODE_BLOCK', params);
369
+ }
370
+ async getBoardContents(params) {
371
+ return this.wsServer.sendCommand('GET_BOARD_CONTENTS', params, 30000);
372
+ }
373
+ async getConnections() {
374
+ return this.wsServer.sendCommand('GET_CONNECTIONS', {}, 15000);
375
+ }
376
+ // ============================================================================
377
+ // Slides operations
378
+ // ============================================================================
379
+ async listSlides() {
380
+ return this.wsServer.sendCommand('LIST_SLIDES', {}, 10000);
381
+ }
382
+ async getSlideContent(params) {
383
+ return this.wsServer.sendCommand('GET_SLIDE_CONTENT', params, 10000);
384
+ }
385
+ async createSlide(params) {
386
+ return this.wsServer.sendCommand('CREATE_SLIDE', params, 10000);
387
+ }
388
+ async deleteSlide(params) {
389
+ return this.wsServer.sendCommand('DELETE_SLIDE', params, 5000);
390
+ }
391
+ async duplicateSlide(params) {
392
+ return this.wsServer.sendCommand('DUPLICATE_SLIDE', params, 5000);
393
+ }
394
+ async getSlideGrid() {
395
+ return this.wsServer.sendCommand('GET_SLIDE_GRID', {}, 10000);
396
+ }
397
+ async reorderSlides(params) {
398
+ return this.wsServer.sendCommand('REORDER_SLIDES', params, 15000);
399
+ }
400
+ async setSlideTransition(params) {
401
+ return this.wsServer.sendCommand('SET_SLIDE_TRANSITION', params, 5000);
402
+ }
403
+ async getSlideTransition(params) {
404
+ return this.wsServer.sendCommand('GET_SLIDE_TRANSITION', params, 5000);
405
+ }
406
+ async setSlidesViewMode(params) {
407
+ return this.wsServer.sendCommand('SET_SLIDES_VIEW_MODE', params, 5000);
408
+ }
409
+ async getFocusedSlide() {
410
+ return this.wsServer.sendCommand('GET_FOCUSED_SLIDE', {}, 5000);
411
+ }
412
+ async focusSlide(params) {
413
+ return this.wsServer.sendCommand('FOCUS_SLIDE', params, 5000);
414
+ }
415
+ async skipSlide(params) {
416
+ return this.wsServer.sendCommand('SKIP_SLIDE', params, 5000);
417
+ }
418
+ async addTextToSlide(params) {
419
+ return this.wsServer.sendCommand('ADD_TEXT_TO_SLIDE', params, 10000);
420
+ }
421
+ async addShapeToSlide(params) {
422
+ return this.wsServer.sendCommand('ADD_SHAPE_TO_SLIDE', params, 5000);
423
+ }
424
+ async setSlideBackground(params) {
425
+ return this.wsServer.sendCommand('SET_SLIDE_BACKGROUND', params, 5000);
426
+ }
427
+ async getTextStyles() {
428
+ return this.wsServer.sendCommand('GET_TEXT_STYLES', {}, 5000);
429
+ }
430
+ // ============================================================================
431
+ // Cache management (no-op for WebSocket — no frame cache)
432
+ // ============================================================================
433
+ clearFrameCache() {
434
+ // No frame cache in WebSocket mode
435
+ }
436
+ }