@aexol/spectral 0.9.269 → 0.9.271

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 (573) hide show
  1. package/dist/agent/index.d.ts +10 -1
  2. package/dist/agent/index.d.ts.map +1 -1
  3. package/dist/agent/index.js +26 -10
  4. package/dist/commands/serve.d.ts.map +1 -1
  5. package/dist/commands/serve.js +29 -5
  6. package/dist/commands/update.d.ts +2 -2
  7. package/dist/commands/update.js +3 -3
  8. package/dist/designer/index.d.ts +13 -18
  9. package/dist/designer/index.d.ts.map +1 -1
  10. package/dist/designer/index.js +128 -201
  11. package/dist/extensions/aexol-mcp.d.ts.map +1 -1
  12. package/dist/extensions/aexol-mcp.js +23 -0
  13. package/dist/extensions/dataset-uploader/cleaner.js +1 -1
  14. package/dist/extensions/dataset-uploader/scrubber.d.ts +2 -0
  15. package/dist/extensions/dataset-uploader/scrubber.d.ts.map +1 -1
  16. package/dist/extensions/dataset-uploader/scrubber.js +30 -1
  17. package/dist/generated/zeus/index.d.ts +0 -4
  18. package/dist/generated/zeus/index.d.ts.map +1 -1
  19. package/dist/memory/debug-log.d.ts.map +1 -1
  20. package/dist/memory/debug-log.js +20 -2
  21. package/dist/memory/tools/compact-context.d.ts +1 -1
  22. package/dist/memory/tools/compact-context.d.ts.map +1 -1
  23. package/dist/memory/tools/compact-context.js +4 -1
  24. package/dist/memory/tools/recall-observation.d.ts +3 -3
  25. package/dist/memory/tools/recall-observation.d.ts.map +1 -1
  26. package/dist/memory/tools/recall-observation.js +4 -1
  27. package/dist/memory/tools/receive-agent-observations.d.ts +3 -3
  28. package/dist/memory/tools/receive-agent-observations.d.ts.map +1 -1
  29. package/dist/memory/tools/receive-agent-observations.js +4 -1
  30. package/dist/memory/tools/share-project-observation.d.ts +3 -3
  31. package/dist/memory/tools/share-project-observation.d.ts.map +1 -1
  32. package/dist/memory/tools/share-project-observation.js +4 -1
  33. package/dist/memory/tools/write-project-observation.d.ts +3 -3
  34. package/dist/memory/tools/write-project-observation.d.ts.map +1 -1
  35. package/dist/memory/tools/write-project-observation.js +4 -1
  36. package/dist/relay/client.d.ts.map +1 -1
  37. package/dist/relay/client.js +5 -2
  38. package/dist/sdk/ai/env-api-keys.js +1 -1
  39. package/dist/sdk/coding-agent/core/extensions/loader.d.ts.map +1 -1
  40. package/dist/sdk/coding-agent/core/extensions/loader.js +31 -3
  41. package/dist/sdk/coding-agent/core/theme.js +1 -1
  42. package/dist/server/handlers/agent-settings.d.ts.map +1 -1
  43. package/dist/server/handlers/agent-settings.js +4 -1
  44. package/dist/server/handlers/settings-lock.d.ts.map +1 -1
  45. package/dist/server/handlers/settings-lock.js +4 -1
  46. package/dist/server/storage.d.ts.map +1 -1
  47. package/dist/server/storage.js +13 -1
  48. package/dist/utils/serve-state.d.ts +17 -0
  49. package/dist/utils/serve-state.d.ts.map +1 -1
  50. package/dist/utils/serve-state.js +73 -0
  51. package/package.json +1 -1
  52. package/dist/designer/data/skills/blog-post.d.ts +0 -3
  53. package/dist/designer/data/skills/blog-post.d.ts.map +0 -1
  54. package/dist/designer/data/skills/blog-post.js +0 -84
  55. package/dist/designer/data/skills/blog-post.ts +0 -87
  56. package/dist/designer/data/skills/critique.d.ts +0 -3
  57. package/dist/designer/data/skills/critique.d.ts.map +0 -1
  58. package/dist/designer/data/skills/critique.js +0 -109
  59. package/dist/designer/data/skills/critique.ts +0 -112
  60. package/dist/designer/data/skills/dashboard.d.ts +0 -3
  61. package/dist/designer/data/skills/dashboard.d.ts.map +0 -1
  62. package/dist/designer/data/skills/dashboard.js +0 -165
  63. package/dist/designer/data/skills/dashboard.ts +0 -168
  64. package/dist/designer/data/skills/design-brief.d.ts +0 -3
  65. package/dist/designer/data/skills/design-brief.d.ts.map +0 -1
  66. package/dist/designer/data/skills/design-brief.js +0 -141
  67. package/dist/designer/data/skills/design-brief.ts +0 -144
  68. package/dist/designer/data/skills/design-skill.d.ts +0 -10
  69. package/dist/designer/data/skills/design-skill.d.ts.map +0 -1
  70. package/dist/designer/data/skills/design-skill.js +0 -1
  71. package/dist/designer/data/skills/design-skill.ts +0 -9
  72. package/dist/designer/data/skills/docs-page.d.ts +0 -3
  73. package/dist/designer/data/skills/docs-page.d.ts.map +0 -1
  74. package/dist/designer/data/skills/docs-page.js +0 -68
  75. package/dist/designer/data/skills/docs-page.ts +0 -71
  76. package/dist/designer/data/skills/index.d.ts +0 -3
  77. package/dist/designer/data/skills/index.d.ts.map +0 -1
  78. package/dist/designer/data/skills/index.js +0 -28
  79. package/dist/designer/data/skills/index.ts +0 -30
  80. package/dist/designer/data/skills/magazine-poster.d.ts +0 -3
  81. package/dist/designer/data/skills/magazine-poster.d.ts.map +0 -1
  82. package/dist/designer/data/skills/magazine-poster.js +0 -70
  83. package/dist/designer/data/skills/magazine-poster.ts +0 -73
  84. package/dist/designer/data/skills/mobile-app.d.ts +0 -3
  85. package/dist/designer/data/skills/mobile-app.d.ts.map +0 -1
  86. package/dist/designer/data/skills/mobile-app.js +0 -229
  87. package/dist/designer/data/skills/mobile-app.ts +0 -232
  88. package/dist/designer/data/skills/motion-frames.d.ts +0 -3
  89. package/dist/designer/data/skills/motion-frames.d.ts.map +0 -1
  90. package/dist/designer/data/skills/motion-frames.js +0 -121
  91. package/dist/designer/data/skills/motion-frames.ts +0 -124
  92. package/dist/designer/data/skills/pricing-page.d.ts +0 -3
  93. package/dist/designer/data/skills/pricing-page.d.ts.map +0 -1
  94. package/dist/designer/data/skills/pricing-page.js +0 -76
  95. package/dist/designer/data/skills/pricing-page.ts +0 -79
  96. package/dist/designer/data/skills/saas-landing.d.ts +0 -3
  97. package/dist/designer/data/skills/saas-landing.d.ts.map +0 -1
  98. package/dist/designer/data/skills/saas-landing.js +0 -71
  99. package/dist/designer/data/skills/saas-landing.ts +0 -74
  100. package/dist/designer/data/skills/slide-deck.d.ts +0 -3
  101. package/dist/designer/data/skills/slide-deck.d.ts.map +0 -1
  102. package/dist/designer/data/skills/slide-deck.js +0 -213
  103. package/dist/designer/data/skills/slide-deck.ts +0 -216
  104. package/dist/designer/data/skills/social-carousel.d.ts +0 -3
  105. package/dist/designer/data/skills/social-carousel.d.ts.map +0 -1
  106. package/dist/designer/data/skills/social-carousel.js +0 -135
  107. package/dist/designer/data/skills/social-carousel.ts +0 -138
  108. package/dist/designer/data/skills/web-prototype.d.ts +0 -3
  109. package/dist/designer/data/skills/web-prototype.d.ts.map +0 -1
  110. package/dist/designer/data/skills/web-prototype.js +0 -159
  111. package/dist/designer/data/skills/web-prototype.ts +0 -162
  112. package/dist/designer/data/systems/agentic/DESIGN.md +0 -71
  113. package/dist/designer/data/systems/agentic/components.html +0 -154
  114. package/dist/designer/data/systems/agentic/tokens.css +0 -63
  115. package/dist/designer/data/systems/airbnb/DESIGN.md +0 -393
  116. package/dist/designer/data/systems/airbnb/components.html +0 -1373
  117. package/dist/designer/data/systems/airbnb/tokens.css +0 -261
  118. package/dist/designer/data/systems/airtable/DESIGN.md +0 -92
  119. package/dist/designer/data/systems/airtable/components.html +0 -489
  120. package/dist/designer/data/systems/airtable/tokens.css +0 -261
  121. package/dist/designer/data/systems/ant/DESIGN.md +0 -71
  122. package/dist/designer/data/systems/ant/components.html +0 -154
  123. package/dist/designer/data/systems/ant/tokens.css +0 -63
  124. package/dist/designer/data/systems/apple/DESIGN.md +0 -250
  125. package/dist/designer/data/systems/apple/components.html +0 -749
  126. package/dist/designer/data/systems/apple/tokens.css +0 -286
  127. package/dist/designer/data/systems/application/DESIGN.md +0 -71
  128. package/dist/designer/data/systems/application/components.html +0 -154
  129. package/dist/designer/data/systems/application/tokens.css +0 -63
  130. package/dist/designer/data/systems/arc/DESIGN.md +0 -152
  131. package/dist/designer/data/systems/arc/components.html +0 -432
  132. package/dist/designer/data/systems/arc/tokens.css +0 -137
  133. package/dist/designer/data/systems/artistic/DESIGN.md +0 -71
  134. package/dist/designer/data/systems/artistic/components.html +0 -136
  135. package/dist/designer/data/systems/artistic/tokens.css +0 -63
  136. package/dist/designer/data/systems/atelier-zero/DESIGN.md +0 -316
  137. package/dist/designer/data/systems/atelier-zero/components.html +0 -136
  138. package/dist/designer/data/systems/atelier-zero/tokens.css +0 -63
  139. package/dist/designer/data/systems/bento/DESIGN.md +0 -71
  140. package/dist/designer/data/systems/bento/components.html +0 -136
  141. package/dist/designer/data/systems/bento/tokens.css +0 -63
  142. package/dist/designer/data/systems/binance/DESIGN.md +0 -348
  143. package/dist/designer/data/systems/binance/components.html +0 -550
  144. package/dist/designer/data/systems/binance/tokens.css +0 -255
  145. package/dist/designer/data/systems/bmw/DESIGN.md +0 -183
  146. package/dist/designer/data/systems/bmw/components.html +0 -551
  147. package/dist/designer/data/systems/bmw/tokens.css +0 -179
  148. package/dist/designer/data/systems/bmw-m/DESIGN.md +0 -246
  149. package/dist/designer/data/systems/bmw-m/components.html +0 -342
  150. package/dist/designer/data/systems/bmw-m/tokens.css +0 -64
  151. package/dist/designer/data/systems/bold/DESIGN.md +0 -71
  152. package/dist/designer/data/systems/bold/components.html +0 -136
  153. package/dist/designer/data/systems/bold/tokens.css +0 -63
  154. package/dist/designer/data/systems/brutalism/DESIGN.md +0 -71
  155. package/dist/designer/data/systems/brutalism/components.html +0 -154
  156. package/dist/designer/data/systems/brutalism/tokens.css +0 -63
  157. package/dist/designer/data/systems/bugatti/DESIGN.md +0 -271
  158. package/dist/designer/data/systems/bugatti/components.html +0 -342
  159. package/dist/designer/data/systems/bugatti/tokens.css +0 -64
  160. package/dist/designer/data/systems/cafe/DESIGN.md +0 -71
  161. package/dist/designer/data/systems/cafe/components.html +0 -136
  162. package/dist/designer/data/systems/cafe/tokens.css +0 -63
  163. package/dist/designer/data/systems/cal/DESIGN.md +0 -262
  164. package/dist/designer/data/systems/cal/components.html +0 -376
  165. package/dist/designer/data/systems/cal/tokens.css +0 -265
  166. package/dist/designer/data/systems/canva/DESIGN.md +0 -157
  167. package/dist/designer/data/systems/canva/components.html +0 -461
  168. package/dist/designer/data/systems/canva/tokens.css +0 -147
  169. package/dist/designer/data/systems/cisco/DESIGN.md +0 -201
  170. package/dist/designer/data/systems/cisco/components.html +0 -342
  171. package/dist/designer/data/systems/cisco/tokens.css +0 -64
  172. package/dist/designer/data/systems/claude/DESIGN.md +0 -315
  173. package/dist/designer/data/systems/claude/components.html +0 -483
  174. package/dist/designer/data/systems/claude/tokens.css +0 -130
  175. package/dist/designer/data/systems/clay/DESIGN.md +0 -307
  176. package/dist/designer/data/systems/clay/components.html +0 -136
  177. package/dist/designer/data/systems/clay/tokens.css +0 -63
  178. package/dist/designer/data/systems/claymorphism/DESIGN.md +0 -71
  179. package/dist/designer/data/systems/claymorphism/components.html +0 -136
  180. package/dist/designer/data/systems/claymorphism/tokens.css +0 -63
  181. package/dist/designer/data/systems/clean/DESIGN.md +0 -71
  182. package/dist/designer/data/systems/clean/components.html +0 -136
  183. package/dist/designer/data/systems/clean/tokens.css +0 -63
  184. package/dist/designer/data/systems/clickhouse/DESIGN.md +0 -284
  185. package/dist/designer/data/systems/clickhouse/components.html +0 -506
  186. package/dist/designer/data/systems/clickhouse/tokens.css +0 -135
  187. package/dist/designer/data/systems/cohere/DESIGN.md +0 -269
  188. package/dist/designer/data/systems/cohere/components.html +0 -353
  189. package/dist/designer/data/systems/cohere/tokens.css +0 -126
  190. package/dist/designer/data/systems/coinbase/DESIGN.md +0 -132
  191. package/dist/designer/data/systems/coinbase/components.html +0 -501
  192. package/dist/designer/data/systems/coinbase/tokens.css +0 -257
  193. package/dist/designer/data/systems/colorful/DESIGN.md +0 -71
  194. package/dist/designer/data/systems/colorful/components.html +0 -136
  195. package/dist/designer/data/systems/colorful/tokens.css +0 -63
  196. package/dist/designer/data/systems/composio/DESIGN.md +0 -310
  197. package/dist/designer/data/systems/composio/components.html +0 -342
  198. package/dist/designer/data/systems/composio/tokens.css +0 -64
  199. package/dist/designer/data/systems/contemporary/DESIGN.md +0 -71
  200. package/dist/designer/data/systems/contemporary/components.html +0 -136
  201. package/dist/designer/data/systems/contemporary/tokens.css +0 -63
  202. package/dist/designer/data/systems/corporate/DESIGN.md +0 -71
  203. package/dist/designer/data/systems/corporate/components.html +0 -136
  204. package/dist/designer/data/systems/corporate/tokens.css +0 -63
  205. package/dist/designer/data/systems/cosmic/DESIGN.md +0 -71
  206. package/dist/designer/data/systems/cosmic/components.html +0 -136
  207. package/dist/designer/data/systems/cosmic/tokens.css +0 -63
  208. package/dist/designer/data/systems/creative/DESIGN.md +0 -71
  209. package/dist/designer/data/systems/creative/components.html +0 -136
  210. package/dist/designer/data/systems/creative/tokens.css +0 -63
  211. package/dist/designer/data/systems/cursor/DESIGN.md +0 -312
  212. package/dist/designer/data/systems/cursor/components.html +0 -654
  213. package/dist/designer/data/systems/cursor/tokens.css +0 -218
  214. package/dist/designer/data/systems/dashboard/DESIGN.md +0 -71
  215. package/dist/designer/data/systems/dashboard/components.html +0 -154
  216. package/dist/designer/data/systems/dashboard/tokens.css +0 -63
  217. package/dist/designer/data/systems/default/DESIGN.md +0 -62
  218. package/dist/designer/data/systems/default/components.html +0 -523
  219. package/dist/designer/data/systems/default/tokens.css +0 -200
  220. package/dist/designer/data/systems/discord/DESIGN.md +0 -162
  221. package/dist/designer/data/systems/discord/components.html +0 -359
  222. package/dist/designer/data/systems/discord/tokens.css +0 -125
  223. package/dist/designer/data/systems/dithered/DESIGN.md +0 -71
  224. package/dist/designer/data/systems/dithered/components.html +0 -136
  225. package/dist/designer/data/systems/dithered/tokens.css +0 -63
  226. package/dist/designer/data/systems/doodle/DESIGN.md +0 -71
  227. package/dist/designer/data/systems/doodle/components.html +0 -136
  228. package/dist/designer/data/systems/doodle/tokens.css +0 -63
  229. package/dist/designer/data/systems/dramatic/DESIGN.md +0 -71
  230. package/dist/designer/data/systems/dramatic/components.html +0 -136
  231. package/dist/designer/data/systems/dramatic/tokens.css +0 -63
  232. package/dist/designer/data/systems/duolingo/DESIGN.md +0 -154
  233. package/dist/designer/data/systems/duolingo/components.html +0 -532
  234. package/dist/designer/data/systems/duolingo/tokens.css +0 -130
  235. package/dist/designer/data/systems/editorial/DESIGN.md +0 -71
  236. package/dist/designer/data/systems/editorial/components.html +0 -154
  237. package/dist/designer/data/systems/editorial/tokens.css +0 -63
  238. package/dist/designer/data/systems/elegant/DESIGN.md +0 -71
  239. package/dist/designer/data/systems/elegant/components.html +0 -136
  240. package/dist/designer/data/systems/elegant/tokens.css +0 -63
  241. package/dist/designer/data/systems/elevenlabs/DESIGN.md +0 -268
  242. package/dist/designer/data/systems/elevenlabs/components.html +0 -342
  243. package/dist/designer/data/systems/elevenlabs/tokens.css +0 -127
  244. package/dist/designer/data/systems/energetic/DESIGN.md +0 -72
  245. package/dist/designer/data/systems/energetic/components.html +0 -136
  246. package/dist/designer/data/systems/energetic/tokens.css +0 -63
  247. package/dist/designer/data/systems/enterprise/DESIGN.md +0 -71
  248. package/dist/designer/data/systems/enterprise/components.html +0 -154
  249. package/dist/designer/data/systems/enterprise/tokens.css +0 -63
  250. package/dist/designer/data/systems/expo/DESIGN.md +0 -284
  251. package/dist/designer/data/systems/expo/components.html +0 -342
  252. package/dist/designer/data/systems/expo/tokens.css +0 -64
  253. package/dist/designer/data/systems/expressive/DESIGN.md +0 -71
  254. package/dist/designer/data/systems/expressive/components.html +0 -136
  255. package/dist/designer/data/systems/expressive/tokens.css +0 -63
  256. package/dist/designer/data/systems/fantasy/DESIGN.md +0 -71
  257. package/dist/designer/data/systems/fantasy/components.html +0 -136
  258. package/dist/designer/data/systems/fantasy/tokens.css +0 -63
  259. package/dist/designer/data/systems/ferrari/DESIGN.md +0 -317
  260. package/dist/designer/data/systems/ferrari/components.html +0 -342
  261. package/dist/designer/data/systems/ferrari/tokens.css +0 -64
  262. package/dist/designer/data/systems/figma/DESIGN.md +0 -223
  263. package/dist/designer/data/systems/figma/components.html +0 -344
  264. package/dist/designer/data/systems/figma/tokens.css +0 -126
  265. package/dist/designer/data/systems/flat/DESIGN.md +0 -71
  266. package/dist/designer/data/systems/flat/components.html +0 -136
  267. package/dist/designer/data/systems/flat/tokens.css +0 -63
  268. package/dist/designer/data/systems/framer/DESIGN.md +0 -249
  269. package/dist/designer/data/systems/framer/components.html +0 -438
  270. package/dist/designer/data/systems/framer/tokens.css +0 -238
  271. package/dist/designer/data/systems/friendly/DESIGN.md +0 -71
  272. package/dist/designer/data/systems/friendly/components.html +0 -136
  273. package/dist/designer/data/systems/friendly/tokens.css +0 -63
  274. package/dist/designer/data/systems/futuristic/DESIGN.md +0 -71
  275. package/dist/designer/data/systems/futuristic/components.html +0 -136
  276. package/dist/designer/data/systems/futuristic/tokens.css +0 -63
  277. package/dist/designer/data/systems/github/DESIGN.md +0 -155
  278. package/dist/designer/data/systems/github/components.html +0 -383
  279. package/dist/designer/data/systems/github/tokens.css +0 -125
  280. package/dist/designer/data/systems/glassmorphism/DESIGN.md +0 -71
  281. package/dist/designer/data/systems/glassmorphism/components.html +0 -154
  282. package/dist/designer/data/systems/glassmorphism/tokens.css +0 -63
  283. package/dist/designer/data/systems/gradient/DESIGN.md +0 -71
  284. package/dist/designer/data/systems/gradient/components.html +0 -154
  285. package/dist/designer/data/systems/gradient/tokens.css +0 -63
  286. package/dist/designer/data/systems/hashicorp/DESIGN.md +0 -281
  287. package/dist/designer/data/systems/hashicorp/components.html +0 -502
  288. package/dist/designer/data/systems/hashicorp/tokens.css +0 -272
  289. package/dist/designer/data/systems/hud/DESIGN.md +0 -173
  290. package/dist/designer/data/systems/hud/components.html +0 -136
  291. package/dist/designer/data/systems/hud/tokens.css +0 -63
  292. package/dist/designer/data/systems/huggingface/DESIGN.md +0 -149
  293. package/dist/designer/data/systems/huggingface/components.html +0 -346
  294. package/dist/designer/data/systems/huggingface/tokens.css +0 -125
  295. package/dist/designer/data/systems/ibm/DESIGN.md +0 -335
  296. package/dist/designer/data/systems/ibm/components.html +0 -342
  297. package/dist/designer/data/systems/ibm/tokens.css +0 -64
  298. package/dist/designer/data/systems/intercom/DESIGN.md +0 -149
  299. package/dist/designer/data/systems/intercom/components.html +0 -557
  300. package/dist/designer/data/systems/intercom/tokens.css +0 -150
  301. package/dist/designer/data/systems/kami/DESIGN.md +0 -410
  302. package/dist/designer/data/systems/kami/components.html +0 -601
  303. package/dist/designer/data/systems/kami/tokens.css +0 -272
  304. package/dist/designer/data/systems/kraken/DESIGN.md +0 -128
  305. package/dist/designer/data/systems/kraken/components.html +0 -342
  306. package/dist/designer/data/systems/kraken/tokens.css +0 -64
  307. package/dist/designer/data/systems/lamborghini/DESIGN.md +0 -291
  308. package/dist/designer/data/systems/lamborghini/components.html +0 -342
  309. package/dist/designer/data/systems/lamborghini/tokens.css +0 -64
  310. package/dist/designer/data/systems/levels/DESIGN.md +0 -71
  311. package/dist/designer/data/systems/levels/components.html +0 -154
  312. package/dist/designer/data/systems/levels/tokens.css +0 -63
  313. package/dist/designer/data/systems/linear-app/DESIGN.md +0 -370
  314. package/dist/designer/data/systems/linear-app/components.html +0 -370
  315. package/dist/designer/data/systems/linear-app/tokens.css +0 -130
  316. package/dist/designer/data/systems/lingo/DESIGN.md +0 -71
  317. package/dist/designer/data/systems/lingo/components.html +0 -154
  318. package/dist/designer/data/systems/lingo/tokens.css +0 -63
  319. package/dist/designer/data/systems/loom/DESIGN.md +0 -201
  320. package/dist/designer/data/systems/loom/components.html +0 -446
  321. package/dist/designer/data/systems/loom/tokens.css +0 -138
  322. package/dist/designer/data/systems/lovable/DESIGN.md +0 -301
  323. package/dist/designer/data/systems/lovable/components.html +0 -441
  324. package/dist/designer/data/systems/lovable/tokens.css +0 -258
  325. package/dist/designer/data/systems/luxury/DESIGN.md +0 -71
  326. package/dist/designer/data/systems/luxury/components.html +0 -154
  327. package/dist/designer/data/systems/luxury/tokens.css +0 -63
  328. package/dist/designer/data/systems/mastercard/DESIGN.md +0 -368
  329. package/dist/designer/data/systems/mastercard/components.html +0 -342
  330. package/dist/designer/data/systems/mastercard/tokens.css +0 -64
  331. package/dist/designer/data/systems/material/DESIGN.md +0 -71
  332. package/dist/designer/data/systems/material/components.html +0 -154
  333. package/dist/designer/data/systems/material/tokens.css +0 -63
  334. package/dist/designer/data/systems/meta/DESIGN.md +0 -369
  335. package/dist/designer/data/systems/meta/components.html +0 -398
  336. package/dist/designer/data/systems/meta/tokens.css +0 -263
  337. package/dist/designer/data/systems/minimal/DESIGN.md +0 -71
  338. package/dist/designer/data/systems/minimal/components.html +0 -154
  339. package/dist/designer/data/systems/minimal/tokens.css +0 -63
  340. package/dist/designer/data/systems/minimax/DESIGN.md +0 -260
  341. package/dist/designer/data/systems/minimax/components.html +0 -590
  342. package/dist/designer/data/systems/minimax/tokens.css +0 -148
  343. package/dist/designer/data/systems/mintlify/DESIGN.md +0 -329
  344. package/dist/designer/data/systems/mintlify/components.html +0 -737
  345. package/dist/designer/data/systems/mintlify/tokens.css +0 -256
  346. package/dist/designer/data/systems/miro/DESIGN.md +0 -111
  347. package/dist/designer/data/systems/miro/components.html +0 -342
  348. package/dist/designer/data/systems/miro/tokens.css +0 -64
  349. package/dist/designer/data/systems/mission-control/DESIGN.md +0 -474
  350. package/dist/designer/data/systems/mission-control/components.html +0 -136
  351. package/dist/designer/data/systems/mission-control/tokens.css +0 -63
  352. package/dist/designer/data/systems/mistral-ai/DESIGN.md +0 -264
  353. package/dist/designer/data/systems/mistral-ai/components.html +0 -338
  354. package/dist/designer/data/systems/mistral-ai/tokens.css +0 -125
  355. package/dist/designer/data/systems/modern/DESIGN.md +0 -71
  356. package/dist/designer/data/systems/modern/components.html +0 -154
  357. package/dist/designer/data/systems/modern/tokens.css +0 -63
  358. package/dist/designer/data/systems/mongodb/DESIGN.md +0 -269
  359. package/dist/designer/data/systems/mongodb/components.html +0 -462
  360. package/dist/designer/data/systems/mongodb/tokens.css +0 -176
  361. package/dist/designer/data/systems/mono/DESIGN.md +0 -71
  362. package/dist/designer/data/systems/mono/components.html +0 -136
  363. package/dist/designer/data/systems/mono/tokens.css +0 -63
  364. package/dist/designer/data/systems/neobrutalism/DESIGN.md +0 -71
  365. package/dist/designer/data/systems/neobrutalism/components.html +0 -136
  366. package/dist/designer/data/systems/neobrutalism/tokens.css +0 -63
  367. package/dist/designer/data/systems/neon/DESIGN.md +0 -71
  368. package/dist/designer/data/systems/neon/components.html +0 -136
  369. package/dist/designer/data/systems/neon/tokens.css +0 -63
  370. package/dist/designer/data/systems/neumorphism/DESIGN.md +0 -71
  371. package/dist/designer/data/systems/neumorphism/components.html +0 -136
  372. package/dist/designer/data/systems/neumorphism/tokens.css +0 -63
  373. package/dist/designer/data/systems/nike/DESIGN.md +0 -366
  374. package/dist/designer/data/systems/nike/components.html +0 -512
  375. package/dist/designer/data/systems/nike/tokens.css +0 -304
  376. package/dist/designer/data/systems/notion/DESIGN.md +0 -312
  377. package/dist/designer/data/systems/notion/components.html +0 -413
  378. package/dist/designer/data/systems/notion/tokens.css +0 -130
  379. package/dist/designer/data/systems/nvidia/DESIGN.md +0 -296
  380. package/dist/designer/data/systems/nvidia/components.html +0 -414
  381. package/dist/designer/data/systems/nvidia/tokens.css +0 -133
  382. package/dist/designer/data/systems/ollama/DESIGN.md +0 -270
  383. package/dist/designer/data/systems/ollama/components.html +0 -700
  384. package/dist/designer/data/systems/ollama/tokens.css +0 -242
  385. package/dist/designer/data/systems/openai/DESIGN.md +0 -140
  386. package/dist/designer/data/systems/openai/components.html +0 -382
  387. package/dist/designer/data/systems/openai/tokens.css +0 -133
  388. package/dist/designer/data/systems/opencode-ai/DESIGN.md +0 -284
  389. package/dist/designer/data/systems/opencode-ai/components.html +0 -389
  390. package/dist/designer/data/systems/opencode-ai/tokens.css +0 -126
  391. package/dist/designer/data/systems/pacman/DESIGN.md +0 -71
  392. package/dist/designer/data/systems/pacman/components.html +0 -342
  393. package/dist/designer/data/systems/pacman/tokens.css +0 -64
  394. package/dist/designer/data/systems/paper/DESIGN.md +0 -71
  395. package/dist/designer/data/systems/paper/components.html +0 -136
  396. package/dist/designer/data/systems/paper/tokens.css +0 -63
  397. package/dist/designer/data/systems/perplexity/DESIGN.md +0 -286
  398. package/dist/designer/data/systems/perplexity/components.html +0 -455
  399. package/dist/designer/data/systems/perplexity/tokens.css +0 -151
  400. package/dist/designer/data/systems/perspective/DESIGN.md +0 -71
  401. package/dist/designer/data/systems/perspective/components.html +0 -136
  402. package/dist/designer/data/systems/perspective/tokens.css +0 -63
  403. package/dist/designer/data/systems/pinterest/DESIGN.md +0 -233
  404. package/dist/designer/data/systems/pinterest/components.html +0 -865
  405. package/dist/designer/data/systems/pinterest/tokens.css +0 -262
  406. package/dist/designer/data/systems/playstation/DESIGN.md +0 -367
  407. package/dist/designer/data/systems/playstation/components.html +0 -414
  408. package/dist/designer/data/systems/playstation/tokens.css +0 -150
  409. package/dist/designer/data/systems/posthog/DESIGN.md +0 -259
  410. package/dist/designer/data/systems/posthog/components.html +0 -827
  411. package/dist/designer/data/systems/posthog/tokens.css +0 -272
  412. package/dist/designer/data/systems/premium/DESIGN.md +0 -71
  413. package/dist/designer/data/systems/premium/components.html +0 -154
  414. package/dist/designer/data/systems/premium/tokens.css +0 -63
  415. package/dist/designer/data/systems/professional/DESIGN.md +0 -71
  416. package/dist/designer/data/systems/professional/components.html +0 -136
  417. package/dist/designer/data/systems/professional/tokens.css +0 -63
  418. package/dist/designer/data/systems/publication/DESIGN.md +0 -71
  419. package/dist/designer/data/systems/publication/components.html +0 -154
  420. package/dist/designer/data/systems/publication/tokens.css +0 -63
  421. package/dist/designer/data/systems/raycast/DESIGN.md +0 -271
  422. package/dist/designer/data/systems/raycast/components.html +0 -507
  423. package/dist/designer/data/systems/raycast/tokens.css +0 -143
  424. package/dist/designer/data/systems/refined/DESIGN.md +0 -71
  425. package/dist/designer/data/systems/refined/components.html +0 -136
  426. package/dist/designer/data/systems/refined/tokens.css +0 -63
  427. package/dist/designer/data/systems/renault/DESIGN.md +0 -314
  428. package/dist/designer/data/systems/renault/components.html +0 -154
  429. package/dist/designer/data/systems/renault/tokens.css +0 -63
  430. package/dist/designer/data/systems/replicate/DESIGN.md +0 -264
  431. package/dist/designer/data/systems/replicate/components.html +0 -340
  432. package/dist/designer/data/systems/replicate/tokens.css +0 -125
  433. package/dist/designer/data/systems/resend/DESIGN.md +0 -306
  434. package/dist/designer/data/systems/resend/components.html +0 -839
  435. package/dist/designer/data/systems/resend/tokens.css +0 -353
  436. package/dist/designer/data/systems/retro/DESIGN.md +0 -71
  437. package/dist/designer/data/systems/retro/components.html +0 -136
  438. package/dist/designer/data/systems/retro/tokens.css +0 -63
  439. package/dist/designer/data/systems/revolut/DESIGN.md +0 -188
  440. package/dist/designer/data/systems/revolut/components.html +0 -342
  441. package/dist/designer/data/systems/revolut/tokens.css +0 -64
  442. package/dist/designer/data/systems/runwayml/DESIGN.md +0 -247
  443. package/dist/designer/data/systems/runwayml/components.html +0 -638
  444. package/dist/designer/data/systems/runwayml/tokens.css +0 -204
  445. package/dist/designer/data/systems/sanity/DESIGN.md +0 -360
  446. package/dist/designer/data/systems/sanity/components.html +0 -342
  447. package/dist/designer/data/systems/sanity/tokens.css +0 -64
  448. package/dist/designer/data/systems/sentry/DESIGN.md +0 -265
  449. package/dist/designer/data/systems/sentry/components.html +0 -387
  450. package/dist/designer/data/systems/sentry/tokens.css +0 -219
  451. package/dist/designer/data/systems/shadcn/DESIGN.md +0 -71
  452. package/dist/designer/data/systems/shadcn/components.html +0 -732
  453. package/dist/designer/data/systems/shadcn/tokens.css +0 -255
  454. package/dist/designer/data/systems/shopify/DESIGN.md +0 -353
  455. package/dist/designer/data/systems/shopify/components.html +0 -342
  456. package/dist/designer/data/systems/shopify/tokens.css +0 -141
  457. package/dist/designer/data/systems/simple/DESIGN.md +0 -71
  458. package/dist/designer/data/systems/simple/components.html +0 -136
  459. package/dist/designer/data/systems/simple/tokens.css +0 -63
  460. package/dist/designer/data/systems/skeumorphism/DESIGN.md +0 -71
  461. package/dist/designer/data/systems/skeumorphism/components.html +0 -136
  462. package/dist/designer/data/systems/skeumorphism/tokens.css +0 -63
  463. package/dist/designer/data/systems/slack/DESIGN.md +0 -363
  464. package/dist/designer/data/systems/slack/components.html +0 -387
  465. package/dist/designer/data/systems/slack/tokens.css +0 -127
  466. package/dist/designer/data/systems/sleek/DESIGN.md +0 -71
  467. package/dist/designer/data/systems/sleek/components.html +0 -136
  468. package/dist/designer/data/systems/sleek/tokens.css +0 -63
  469. package/dist/designer/data/systems/spacex/DESIGN.md +0 -197
  470. package/dist/designer/data/systems/spacex/components.html +0 -496
  471. package/dist/designer/data/systems/spacex/tokens.css +0 -154
  472. package/dist/designer/data/systems/spacious/DESIGN.md +0 -71
  473. package/dist/designer/data/systems/spacious/components.html +0 -136
  474. package/dist/designer/data/systems/spacious/tokens.css +0 -63
  475. package/dist/designer/data/systems/spotify/DESIGN.md +0 -249
  476. package/dist/designer/data/systems/spotify/components.html +0 -365
  477. package/dist/designer/data/systems/spotify/tokens.css +0 -127
  478. package/dist/designer/data/systems/starbucks/DESIGN.md +0 -583
  479. package/dist/designer/data/systems/starbucks/components.html +0 -493
  480. package/dist/designer/data/systems/starbucks/tokens.css +0 -182
  481. package/dist/designer/data/systems/storytelling/DESIGN.md +0 -71
  482. package/dist/designer/data/systems/storytelling/components.html +0 -136
  483. package/dist/designer/data/systems/storytelling/tokens.css +0 -63
  484. package/dist/designer/data/systems/stripe/DESIGN.md +0 -325
  485. package/dist/designer/data/systems/stripe/components.html +0 -1018
  486. package/dist/designer/data/systems/stripe/tokens.css +0 -295
  487. package/dist/designer/data/systems/supabase/DESIGN.md +0 -258
  488. package/dist/designer/data/systems/supabase/components.html +0 -741
  489. package/dist/designer/data/systems/supabase/tokens.css +0 -294
  490. package/dist/designer/data/systems/superhuman/DESIGN.md +0 -255
  491. package/dist/designer/data/systems/superhuman/components.html +0 -537
  492. package/dist/designer/data/systems/superhuman/tokens.css +0 -160
  493. package/dist/designer/data/systems/tesla/DESIGN.md +0 -289
  494. package/dist/designer/data/systems/tesla/components.html +0 -724
  495. package/dist/designer/data/systems/tesla/tokens.css +0 -285
  496. package/dist/designer/data/systems/tetris/DESIGN.md +0 -71
  497. package/dist/designer/data/systems/tetris/components.html +0 -342
  498. package/dist/designer/data/systems/tetris/tokens.css +0 -64
  499. package/dist/designer/data/systems/theverge/DESIGN.md +0 -342
  500. package/dist/designer/data/systems/theverge/components.html +0 -342
  501. package/dist/designer/data/systems/theverge/tokens.css +0 -64
  502. package/dist/designer/data/systems/together-ai/DESIGN.md +0 -266
  503. package/dist/designer/data/systems/together-ai/components.html +0 -422
  504. package/dist/designer/data/systems/together-ai/tokens.css +0 -127
  505. package/dist/designer/data/systems/totality-festival/DESIGN.md +0 -206
  506. package/dist/designer/data/systems/totality-festival/components.html +0 -136
  507. package/dist/designer/data/systems/totality-festival/tokens.css +0 -63
  508. package/dist/designer/data/systems/trading-terminal/DESIGN.md +0 -178
  509. package/dist/designer/data/systems/trading-terminal/components.html +0 -154
  510. package/dist/designer/data/systems/trading-terminal/tokens.css +0 -63
  511. package/dist/designer/data/systems/uber/DESIGN.md +0 -298
  512. package/dist/designer/data/systems/uber/components.html +0 -347
  513. package/dist/designer/data/systems/uber/tokens.css +0 -131
  514. package/dist/designer/data/systems/urdu/DESIGN.md +0 -1002
  515. package/dist/designer/data/systems/urdu/components.html +0 -136
  516. package/dist/designer/data/systems/urdu/tokens.css +0 -63
  517. package/dist/designer/data/systems/vercel/DESIGN.md +0 -313
  518. package/dist/designer/data/systems/vercel/components.html +0 -839
  519. package/dist/designer/data/systems/vercel/tokens.css +0 -270
  520. package/dist/designer/data/systems/vibrant/DESIGN.md +0 -71
  521. package/dist/designer/data/systems/vibrant/components.html +0 -136
  522. package/dist/designer/data/systems/vibrant/tokens.css +0 -63
  523. package/dist/designer/data/systems/vintage/DESIGN.md +0 -71
  524. package/dist/designer/data/systems/vintage/components.html +0 -136
  525. package/dist/designer/data/systems/vintage/tokens.css +0 -63
  526. package/dist/designer/data/systems/vodafone/DESIGN.md +0 -426
  527. package/dist/designer/data/systems/vodafone/components.html +0 -342
  528. package/dist/designer/data/systems/vodafone/tokens.css +0 -64
  529. package/dist/designer/data/systems/voltagent/DESIGN.md +0 -326
  530. package/dist/designer/data/systems/voltagent/components.html +0 -154
  531. package/dist/designer/data/systems/voltagent/tokens.css +0 -63
  532. package/dist/designer/data/systems/warm-editorial/DESIGN.md +0 -65
  533. package/dist/designer/data/systems/warm-editorial/components.html +0 -136
  534. package/dist/designer/data/systems/warm-editorial/tokens.css +0 -63
  535. package/dist/designer/data/systems/warp/DESIGN.md +0 -256
  536. package/dist/designer/data/systems/warp/components.html +0 -411
  537. package/dist/designer/data/systems/warp/tokens.css +0 -156
  538. package/dist/designer/data/systems/webex/DESIGN.md +0 -207
  539. package/dist/designer/data/systems/webex/components.html +0 -342
  540. package/dist/designer/data/systems/webex/tokens.css +0 -64
  541. package/dist/designer/data/systems/webflow/DESIGN.md +0 -95
  542. package/dist/designer/data/systems/webflow/components.html +0 -413
  543. package/dist/designer/data/systems/webflow/tokens.css +0 -191
  544. package/dist/designer/data/systems/wechat/DESIGN.md +0 -302
  545. package/dist/designer/data/systems/wechat/components.html +0 -507
  546. package/dist/designer/data/systems/wechat/tokens.css +0 -176
  547. package/dist/designer/data/systems/wired/DESIGN.md +0 -281
  548. package/dist/designer/data/systems/wired/components.html +0 -342
  549. package/dist/designer/data/systems/wired/tokens.css +0 -64
  550. package/dist/designer/data/systems/wise/DESIGN.md +0 -176
  551. package/dist/designer/data/systems/wise/components.html +0 -365
  552. package/dist/designer/data/systems/wise/tokens.css +0 -141
  553. package/dist/designer/data/systems/x-ai/DESIGN.md +0 -260
  554. package/dist/designer/data/systems/x-ai/components.html +0 -460
  555. package/dist/designer/data/systems/x-ai/tokens.css +0 -268
  556. package/dist/designer/data/systems/xiaohongshu/DESIGN.md +0 -402
  557. package/dist/designer/data/systems/xiaohongshu/components.html +0 -865
  558. package/dist/designer/data/systems/xiaohongshu/tokens.css +0 -193
  559. package/dist/designer/data/systems/zapier/DESIGN.md +0 -331
  560. package/dist/designer/data/systems/zapier/components.html +0 -342
  561. package/dist/designer/data/systems/zapier/tokens.css +0 -64
  562. package/dist/designer/guidelines.d.ts +0 -23
  563. package/dist/designer/guidelines.d.ts.map +0 -1
  564. package/dist/designer/guidelines.js +0 -176
  565. package/dist/designer/philosophies.d.ts +0 -33
  566. package/dist/designer/philosophies.d.ts.map +0 -1
  567. package/dist/designer/philosophies.js +0 -668
  568. package/dist/designer/skills.d.ts +0 -21
  569. package/dist/designer/skills.d.ts.map +0 -1
  570. package/dist/designer/skills.js +0 -34
  571. package/dist/designer/systems.d.ts +0 -36
  572. package/dist/designer/systems.d.ts.map +0 -1
  573. package/dist/designer/systems.js +0 -221
@@ -1,236 +1,163 @@
1
1
  /**
2
- * Designer Extension — Built-in Design Tools for the spectral coding agent
2
+ * Designer Extension — thin tool definitions proxying to the Aexol backend.
3
3
  *
4
- * Brings the Open Design workflow (https://github.com/nexu-io/open-design)
5
- * into the spectral agent as native tools. The extension provides:
4
+ * The design DATA and logic (150+ design systems, 13 skill workflows,
5
+ * guidelines, 20 philosophies) now live in the backend (backend/src/designer/)
6
+ * and are exposed as `designer_*` tools on the backend `/mcp` server. This
7
+ * extension registers the 7 tool definitions locally; each execute() is a
8
+ * thin proxy: createAexolBackendClient() → tools/call → relay text.
6
9
  *
7
- * • Design system knowledge — curated palettes, typography, spacing from
8
- * Apple, Stripe, Linear, Vercel, Notion, Airbnb, and more.
9
- * • Design skill workflows — structured guides for web prototypes, SaaS
10
- * landings, slide decks, mobile apps, dashboards, and social carousels.
11
- * • Design guidelines — anti-AI-slop rules and a 5-dimension critique
12
- * framework to keep output polished.
13
- * • System prompt injection — when the user asks for design work, the
14
- * extension injects designer identity and anti-slop rules into context.
10
+ * There is no local data and no local prompt injection anymore — the
11
+ * discovery-flow guidance ("call designer_list_systems before writing design
12
+ * code") lives in the tool descriptions/promptSnippets here and in the
13
+ * backend TOOL_DEFINITIONS.
15
14
  *
16
- * Architecture:
17
- * The extension registers knowledge-retrieval tools. The LLM reads design
18
- * systems and skill workflows, then uses its existing tools (write, bash,
19
- * read) to produce design artifact files. This matches how Open Design
20
- * works: the daemon composes a system prompt, the agent does the build.
21
- *
22
- * No packages to install — everything is embedded in this extension.
15
+ * Duplicate-registration note: `aexol-mcp.ts` skips the 7 designer_* names
16
+ * when dynamically registering backend tools, so each name is registered
17
+ * exactly once (this extension). See the skip list there.
23
18
  */
24
19
  import { Type } from "typebox";
25
- import { getDesignGuidelines, DISCOVERY_PROTOCOL } from "./guidelines.js";
26
- import { findSkill, formatSkillForLLM, listSkillsForLLM, } from "./skills.js";
27
- import { findSystem, formatSystemForLLM, listSystemsForLLM, } from "./systems.js";
20
+ import { createAexolBackendClient, } from "../extensions/aexol-backend-client.js";
21
+ import { AexolMcpClient, AexolMcpError, } from "../mcp-client.js";
22
+ import { readConfig } from "../config.js";
23
+ import { ensureAuthenticated } from "../auth-helper.js";
28
24
  // ---------------------------------------------------------------------------
29
- // Detection — should we inject design context for this prompt?
25
+ // Backend proxy — bootstrap once, then tools/call per tool
30
26
  // ---------------------------------------------------------------------------
31
- const DESIGN_TRIGGERS = [
32
- "design",
33
- "prototype",
34
- "mockup",
35
- "landing page",
36
- "homepage",
37
- "slide",
38
- "deck",
39
- "presentation",
40
- "dashboard",
41
- "mobile app",
42
- "app prototype",
43
- "ui",
44
- "ux",
45
- "brand",
46
- "style",
47
- "visual",
48
- "carousel",
49
- "poster",
50
- "banner",
51
- "color palette",
52
- "typography",
53
- "css",
54
- "html template",
55
- "saas landing",
56
- "pricing page",
57
- "portfolio",
58
- "redesign",
59
- "wireframe",
60
- ];
61
- function promptTriggersDesign(prompt) {
62
- const lower = prompt.toLowerCase();
63
- return DESIGN_TRIGGERS.some((t) => lower.includes(t));
27
+ let bootPromise = null;
28
+ function boot() {
29
+ if (!bootPromise) {
30
+ bootPromise = createAexolBackendClient({
31
+ warn: (line) => process.stderr.write(`[designer] ${line}\n`),
32
+ });
33
+ }
34
+ return bootPromise;
35
+ }
36
+ /**
37
+ * Call a backend designer tool and return the rendered text, or a friendly
38
+ * error string (never throws — the caller converts it to an isError result).
39
+ */
40
+ async function callBackend(tool, params) {
41
+ const b = await boot();
42
+ if (!b.ok) {
43
+ return { ok: false, message: b.message };
44
+ }
45
+ const { client, apiUrl, renderContentToString: render } = b;
46
+ try {
47
+ const res = await client.callTool(tool, params);
48
+ const text = render(res.content);
49
+ if (res.isError === true) {
50
+ return {
51
+ ok: false,
52
+ message: `[designer: ${tool}] ${text || "Backend reported an error with no message."}`,
53
+ };
54
+ }
55
+ return { ok: true, text };
56
+ }
57
+ catch (err) {
58
+ // Single OAuth re-auth retry on 401/403 (same flow as dataset-uploader).
59
+ if (err instanceof AexolMcpError && (err.status === 401 || err.status === 403)) {
60
+ const auth = await ensureAuthenticated();
61
+ if (auth.ok && auth.config) {
62
+ const cfg = await readConfig();
63
+ const newToken = auth.config?.teamApiKey || auth.config?.userJwt || "";
64
+ if (newToken && cfg && newToken !== (cfg.teamApiKey || cfg.userJwt)) {
65
+ try {
66
+ const retryClient = new AexolMcpClient(apiUrl, newToken);
67
+ const res = await retryClient.callTool(tool, params);
68
+ const text = render(res.content);
69
+ if (res.isError === true) {
70
+ return {
71
+ ok: false,
72
+ message: `[designer: ${tool}] ${text || "Backend reported an error with no message."}`,
73
+ };
74
+ }
75
+ return { ok: true, text };
76
+ }
77
+ catch {
78
+ // fall through to the friendly error below
79
+ }
80
+ }
81
+ }
82
+ }
83
+ const msg = err instanceof Error ? err.message : String(err);
84
+ return {
85
+ ok: false,
86
+ message: `Design tools are unavailable — the Aexol backend MCP endpoint did not respond to "${tool}": ${msg}\n` +
87
+ "Check your connection and authentication (`spectral login`), then try again.",
88
+ };
89
+ }
64
90
  }
65
91
  // ---------------------------------------------------------------------------
66
- // Tool: designer_list_systems
67
- // ---------------------------------------------------------------------------
68
- const ListSystemsParams = Type.Object({});
69
- // ---------------------------------------------------------------------------
70
- // Tool: designer_get_system
92
+ // Parameter schemas (shared with the backend tool contract)
71
93
  // ---------------------------------------------------------------------------
94
+ const NoParams = Type.Object({});
72
95
  const GetSystemParams = Type.Object({
73
96
  name: Type.String({
74
97
  description: "Name of the design system to retrieve. Use designer_list_systems to see available systems.",
75
98
  }),
76
99
  });
77
- // ---------------------------------------------------------------------------
78
- // Tool: designer_list_skills
79
- // ---------------------------------------------------------------------------
80
- const ListSkillsParams = Type.Object({});
81
- // ---------------------------------------------------------------------------
82
- // Tool: designer_get_skill
83
- // ---------------------------------------------------------------------------
84
100
  const GetSkillParams = Type.Object({
85
101
  name: Type.String({
86
102
  description: "Name of the design skill to retrieve. Use designer_list_skills to see available skills.",
87
103
  }),
88
104
  });
105
+ const GetPhilosophyParams = Type.Object({
106
+ name: Type.String({
107
+ description: "Name of the design philosophy to retrieve. Use designer_list_philosophies to see available philosophies.",
108
+ }),
109
+ });
89
110
  // ---------------------------------------------------------------------------
90
- // Tool: designer_get_guidelines
91
- // ---------------------------------------------------------------------------
92
- const GetGuidelinesParams = Type.Object({});
93
- // ---------------------------------------------------------------------------
94
- // Extension entry point
111
+ // Extension entry point — tool definitions only
95
112
  // ---------------------------------------------------------------------------
96
113
  export default function designerExtension(ext) {
97
- // ---- Inject design context on relevant prompts ---------------------------
98
- // Track whether we've already injected the system prompt for this session
99
- let guidelinesInjected = false;
100
- let discoveryDone = false;
101
- ext.on("before_agent_start", async (event, ctx) => {
102
- if (!promptTriggersDesign(event.prompt))
103
- return;
104
- // First design turn: inject the discovery protocol to force clarification
105
- if (!discoveryDone) {
106
- discoveryDone = true;
107
- return {
108
- systemPrompt: `${event.systemPrompt}
109
-
110
- ---
111
-
112
- ${DISCOVERY_PROTOCOL}`,
113
- };
114
- }
115
- // Subsequent design turns: inject design guidelines if not already present
116
- if (guidelinesInjected)
117
- return;
118
- if (event.systemPrompt.includes("Designer Identity"))
119
- return;
120
- guidelinesInjected = true;
121
- const guidelines = getDesignGuidelines();
122
- return {
123
- systemPrompt: `${event.systemPrompt}
124
-
125
- ---
126
-
127
- ${guidelines}`,
128
- };
129
- });
130
- // ---- Register tools ------------------------------------------------------
131
- ext.registerTool({
132
- name: "designer_list_systems",
133
- label: "List Design Systems",
134
- description: "List available design systems with color palettes, typography, and spacing tokens. " +
135
- "Use this to pick a visual direction before generating HTML/CSS.",
136
- promptSnippet: "List available design systems (Apple, Stripe, Linear, Vercel, etc.) with color, typography, and layout tokens",
137
- promptGuidelines: [
138
- "Use designer_list_systems to see available design systems, then use designer_get_system to load the full tokens for the chosen system.",
139
- "Always apply a design system before generating design HTML — never use generic defaults like Inter + blue buttons.",
140
- ],
141
- parameters: ListSystemsParams,
142
- async execute() {
143
- return {
144
- content: [{ type: "text", text: listSystemsForLLM() }],
145
- details: { isError: false },
146
- };
147
- },
148
- });
149
- ext.registerTool({
150
- name: "designer_get_system",
151
- label: "Get Design System",
152
- description: "Get the full design system tokens (CSS custom properties, typography, layout, components) for a specific system. " +
153
- "Map these tokens onto your :root variables before writing any component code.",
154
- promptSnippet: "Get full design system tokens for a specific system (e.g. 'apple', 'stripe', 'linear')",
155
- parameters: GetSystemParams,
156
- async execute(_toolCallId, params) {
157
- const name = params.name;
158
- const system = findSystem(name);
159
- if (!system) {
160
- return {
161
- content: [
162
- {
163
- type: "text",
164
- text: `Design system "${name}" not found.\n\n${listSystemsForLLM()}`,
165
- },
166
- ],
167
- details: { isError: true },
168
- };
169
- }
170
- return {
171
- content: [{ type: "text", text: formatSystemForLLM(system) }],
172
- details: { isError: false },
173
- };
174
- },
175
- });
176
- ext.registerTool({
177
- name: "designer_list_skills",
178
- label: "List Design Skills",
179
- description: "List available design skill workflows (web prototype, SaaS landing, slide deck, mobile app, dashboard, social carousel). " +
180
- "Each skill provides a structured workflow for producing a specific kind of design artifact.",
181
- promptSnippet: "List available design skill workflows (web prototype, SaaS landing, slide deck, mobile app, dashboard)",
182
- promptGuidelines: [
183
- "Use designer_list_skills to see what kinds of design artifacts you can produce, then use designer_get_skill to load the full workflow for the chosen skill.",
184
- "Follow the skill workflow exactly — it encodes best practices like pre-flight reading, seed templates, section composition patterns, and self-check checklists.",
185
- ],
186
- parameters: ListSkillsParams,
187
- async execute() {
188
- return {
189
- content: [{ type: "text", text: listSkillsForLLM() }],
190
- details: { isError: false },
191
- };
192
- },
193
- });
194
- ext.registerTool({
195
- name: "designer_get_skill",
196
- label: "Get Design Skill",
197
- description: "Get the full workflow guide for a specific design skill. The workflow includes HTML/CSS skeletons, " +
198
- "component patterns, layout patterns, content rules, and quality checklists. Follow it exactly.",
199
- promptSnippet: "Get full design skill workflow for a specific skill type (e.g. 'web-prototype', 'slide-deck', 'mobile-app')",
200
- parameters: GetSkillParams,
114
+ const makeProxy = (name, label, description, promptSnippet, parameters, promptGuidelines) => ({
115
+ name,
116
+ label,
117
+ description,
118
+ promptSnippet,
119
+ ...(promptGuidelines ? { promptGuidelines } : {}),
120
+ parameters,
201
121
  async execute(_toolCallId, params) {
202
- const name = params.name;
203
- const skill = findSkill(name);
204
- if (!skill) {
122
+ const result = await callBackend(name, params ?? {});
123
+ if (!result.ok) {
205
124
  return {
206
- content: [
207
- {
208
- type: "text",
209
- text: `Design skill "${name}" not found.\n\n${listSkillsForLLM()}`,
210
- },
211
- ],
125
+ content: [{ type: "text", text: result.message }],
212
126
  details: { isError: true },
213
127
  };
214
128
  }
215
129
  return {
216
- content: [{ type: "text", text: formatSkillForLLM(skill) }],
217
- details: { isError: false },
218
- };
219
- },
220
- });
221
- ext.registerTool({
222
- name: "designer_get_guidelines",
223
- label: "Get Design Guidelines",
224
- description: "Get the core design guidelines: anti-AI-slop rules, 5-dimension self-critique framework, and designer identity. " +
225
- "Use this when you need a refresher on design quality standards or to self-critique your output.",
226
- promptSnippet: "Get anti-slop rules and design quality guidelines",
227
- parameters: GetGuidelinesParams,
228
- async execute() {
229
- return {
230
- content: [{ type: "text", text: getDesignGuidelines() }],
130
+ content: [{ type: "text", text: result.text }],
231
131
  details: { isError: false },
232
132
  };
233
133
  },
234
134
  });
235
- process.stderr.write(`[designer] Registered 5 design tools (${DESIGN_TRIGGERS.length} trigger keywords).\n`);
135
+ ext.registerTool(makeProxy("designer_list_systems", "List Design Systems", "List available design systems with color palettes, typography, and spacing tokens. " +
136
+ "ALWAYS call this FIRST before writing any design HTML/CSS — it picks the visual " +
137
+ "direction, then use designer_get_system to load the full tokens for the chosen system.", "List available design systems (Apple, Stripe, Linear, Vercel, etc.) with color, typography, and layout tokens", NoParams, [
138
+ "Use designer_list_systems to see available design systems, then use designer_get_system to load the full tokens for the chosen system.",
139
+ "Always apply a design system before generating design HTML — never use generic defaults like Inter + blue buttons.",
140
+ ]));
141
+ ext.registerTool(makeProxy("designer_get_system", "Get Design System", "Get the full design system tokens (CSS custom properties, typography, layout, components) for a specific system. " +
142
+ "Call designer_list_systems first. Map these tokens onto your :root variables before writing any component code.", "Get full design system tokens for a specific system (e.g. 'apple', 'stripe', 'linear')", GetSystemParams));
143
+ ext.registerTool(makeProxy("designer_list_skills", "List Design Skills", "List available design skill workflows (web prototype, SaaS landing, slide deck, mobile app, dashboard, social carousel). " +
144
+ "Each skill provides a structured workflow for producing a specific kind of design artifact. " +
145
+ "Call this before designer_get_skill to pick the skill that matches the artifact type.", "List available design skill workflows (web prototype, SaaS landing, slide deck, mobile app, dashboard)", NoParams, [
146
+ "Use designer_list_skills to see what kinds of design artifacts you can produce, then use designer_get_skill to load the full workflow for the chosen skill.",
147
+ "Follow the skill workflow exactly — it encodes best practices like pre-flight reading, seed templates, section composition patterns, and self-check checklists.",
148
+ ]));
149
+ ext.registerTool(makeProxy("designer_get_skill", "Get Design Skill", "Get the full workflow guide for a specific design skill. The workflow includes HTML/CSS skeletons, " +
150
+ "component patterns, layout patterns, content rules, and quality checklists. Call designer_list_skills first. Follow it exactly.", "Get full design skill workflow for a specific skill type (e.g. 'web-prototype', 'slide-deck', 'mobile-app')", GetSkillParams));
151
+ ext.registerTool(makeProxy("designer_get_guidelines", "Get Design Guidelines", "Get the core design guidelines: the discovery protocol (clarify the brief — with a " +
152
+ "design-philosophy fallback when no curated system fits → load system + skill → build), " +
153
+ "anti-AI-slop rules, 5-dimension self-critique framework, and designer identity. " +
154
+ "Call this at the start of any design task, before writing design code.", "Get anti-slop rules and design quality guidelines", NoParams));
155
+ ext.registerTool(makeProxy("designer_list_philosophies", "List Design Philosophies", "List all 20 design philosophies grouped by their 5 schools (Information Architecture, Motion Poetics, " +
156
+ "Minimalism, Experimental Avant-Garde, Eastern Philosophy). Use this to pick a design direction when the " +
157
+ "user has not specified a concrete design system, then use designer_get_philosophy for the full guide.", "List available design philosophies (20 across 5 schools) with ethos and best-fit scenes", NoParams, [
158
+ "Use designer_list_philosophies when no concrete design system fits, then use designer_get_philosophy to load the full philosophy guide.",
159
+ ]));
160
+ ext.registerTool(makeProxy("designer_get_philosophy", "Get Design Philosophy", "Get the full guide for one design philosophy: ethos, description, signature traits, keywords, " +
161
+ "best medium, scene affinity, and anti-patterns. Call designer_list_philosophies first to see all names.", "Get full design philosophy guide for a specific philosophy (e.g. 'Kenya Hara', 'Müller-Brockmann')", GetPhilosophyParams));
162
+ process.stderr.write("[designer] Registered 7 design tools (proxied to the Aexol backend /mcp).\n");
236
163
  }
@@ -1 +1 @@
1
- {"version":3,"file":"aexol-mcp.d.ts","sourceRoot":"","sources":["../../src/extensions/aexol-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoC,MAAM,8BAA8B,CAAC;AAqHnG,wBAA8B,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0PhF"}
1
+ {"version":3,"file":"aexol-mcp.d.ts","sourceRoot":"","sources":["../../src/extensions/aexol-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoC,MAAM,8BAA8B,CAAC;AA2InG,wBAA8B,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2PhF"}
@@ -36,6 +36,27 @@ function toLabel(name) {
36
36
  .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
37
37
  .join(" ") || name;
38
38
  }
39
+ /**
40
+ * Tool names owned by LOCAL extensions — never register them here.
41
+ *
42
+ * The designer extension (cli-node/src/designer/index.ts) registers the 7
43
+ * `designer_*` tools as thin proxies to the same backend `/mcp` endpoint.
44
+ * The backend's tools/list also exposes those 7 names, so without this skip
45
+ * list both extensions would register the same names. The runner keeps the
46
+ * FIRST registration per name (runner.ts getAllRegisteredTools) and
47
+ * DefaultResourceLoader.detectExtensionConflicts would report 7 spurious
48
+ * "Tool ... conflicts with ..." diagnostics. Skipping here leaves exactly
49
+ * one registration path per name — the local designer extension.
50
+ */
51
+ const OWNED_BY_LOCAL_EXTENSIONS = new Set([
52
+ "designer_list_systems",
53
+ "designer_get_system",
54
+ "designer_list_skills",
55
+ "designer_get_skill",
56
+ "designer_get_guidelines",
57
+ "designer_list_philosophies",
58
+ "designer_get_philosophy",
59
+ ]);
39
60
  // ---------------------------------------------------------------------------
40
61
  // Studio binding – in-memory cache, refreshed on startup & by local tools
41
62
  // ---------------------------------------------------------------------------
@@ -151,6 +172,8 @@ export default async function aexolMcpExtension(ext) {
151
172
  });
152
173
  let registered = 0;
153
174
  for (const tool of tools) {
175
+ if (OWNED_BY_LOCAL_EXTENSIONS.has(tool.name))
176
+ continue;
154
177
  // Defensive defaults: an empty-object schema is valid JSON Schema and
155
178
  // will pass the agent's validator if the model sends `{}`.
156
179
  const parameters = (tool.inputSchema ?? { type: "object", properties: {} });
@@ -17,7 +17,7 @@ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
17
17
  import { dirname } from "node:path";
18
18
  import { loadJsonl, sampleChars } from "./analyzer.js";
19
19
  import { scrub } from "./scrubber.js";
20
- const REDACTION_KINDS = ["api_key", "jwt", "bearer", "home_path", "secret_value"];
20
+ const REDACTION_KINDS = ["api_key", "jwt", "bearer", "home_path", "user_path", "secret_value"];
21
21
  /**
22
22
  * Walk a JSON tree and scrub every string leaf. Objects/arrays are rebuilt
23
23
  * (structure and key order preserved); non-string leaves pass through.
@@ -6,6 +6,8 @@
6
6
  * - jwt — bare JWTs (eyJ... payload ... signature)
7
7
  * - bearer — "Bearer <token>" and Authorization header values
8
8
  * - home_path — /Users/<name>/ → /home/
9
+ * - user_path — Wine/Windows user segments (drive_c/users/<name>,
10
+ * <drive>:\Users\<name>) → <name> replaced with "user"
9
11
  * - secret_value — opaque values passed in by the caller (secret-store
10
12
  * values, .env values). The scrubber NEVER reads any
11
13
  * store itself; callers decide what to pass.
@@ -1 +1 @@
1
- {"version":3,"file":"scrubber.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/scrubber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AA6CD;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,CAiDvE"}
1
+ {"version":3,"file":"scrubber.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/scrubber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAiED;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,CAyDvE"}
@@ -6,6 +6,8 @@
6
6
  * - jwt — bare JWTs (eyJ... payload ... signature)
7
7
  * - bearer — "Bearer <token>" and Authorization header values
8
8
  * - home_path — /Users/<name>/ → /home/
9
+ * - user_path — Wine/Windows user segments (drive_c/users/<name>,
10
+ * <drive>:\Users\<name>) → <name> replaced with "user"
9
11
  * - secret_value — opaque values passed in by the caller (secret-store
10
12
  * values, .env values). The scrubber NEVER reads any
11
13
  * store itself; callers decide what to pass.
@@ -44,8 +46,27 @@ const JWT_PARTIAL_PATTERN = /\beyJ[A-Za-z0-9_-]{10,}(?:\.[A-Za-z0-9_-]+){0,2}\b/
44
46
  * Normalized to /home (the marker would break the surrounding path).
45
47
  */
46
48
  const HOME_PATH_PATTERN = /\/Users\/[A-Za-z0-9._-]+(?=\/|$)/g;
49
+ /**
50
+ * Wine / Windows user segment inside a path:
51
+ * - drive_c/users/<name> (Wine prefix, e.g. /home/.wine/drive_c/users/<name>)
52
+ * - <drive>:\Users\<name> (native Windows path, backslashes)
53
+ * Only the user segment is replaced with "user" — the surrounding path is
54
+ * kept intact (a full-path marker would break the surrounding text).
55
+ * The normalized "user" value itself never re-matches (lookahead), so
56
+ * scrubbing is idempotent: re-scrubbing redacted text produces no new
57
+ * redactions, not even no-op ones.
58
+ */
59
+ const WINE_USER_PATH_PATTERN = /drive_c\/users\/(?!user(?=[/\\.\s-]|$))[A-Za-z0-9._-]+/g;
60
+ const WINDOWS_USER_PATH_PATTERN = /([A-Za-z]:\\Users\\)(?!user(?=[/\\.\s-]|$))[A-Za-z0-9._-]+/g;
47
61
  /** Stable ordering of kinds in the returned redactions array. */
48
- const REDACTION_KINDS = ["api_key", "jwt", "bearer", "home_path", "secret_value"];
62
+ const REDACTION_KINDS = [
63
+ "api_key",
64
+ "jwt",
65
+ "bearer",
66
+ "home_path",
67
+ "user_path",
68
+ "secret_value",
69
+ ];
49
70
  /**
50
71
  * Scrub `text` for secrets.
51
72
  *
@@ -96,6 +117,14 @@ export function scrub(text, extraValues) {
96
117
  counts.home_path = (counts.home_path ?? 0) + 1;
97
118
  return "/home";
98
119
  });
120
+ out = out.replace(WINE_USER_PATH_PATTERN, () => {
121
+ counts.user_path = (counts.user_path ?? 0) + 1;
122
+ return "drive_c/users/user";
123
+ });
124
+ out = out.replace(WINDOWS_USER_PATH_PATTERN, (match, prefix) => {
125
+ counts.user_path = (counts.user_path ?? 0) + 1;
126
+ return `${prefix}user`;
127
+ });
99
128
  const redactions = [];
100
129
  for (const kind of REDACTION_KINDS) {
101
130
  const count = counts[kind];
@@ -2836,7 +2836,6 @@ export type ValueTypes = {
2836
2836
  ["AdminCustomLyceumModelInput"]: {
2837
2837
  model: string | Variable<any, string>;
2838
2838
  image?: string | undefined | null | Variable<any, string>;
2839
- dockerfile?: string | undefined | null | Variable<any, string>;
2840
2839
  env?: Array<ValueTypes["AdminLyceumEnvOverrideInput"]> | undefined | null | Variable<any, string>;
2841
2840
  extraArgs?: Array<string> | undefined | null | Variable<any, string>;
2842
2841
  startCommand?: string | undefined | null | Variable<any, string>;
@@ -5957,7 +5956,6 @@ export type ResolverInputTypes = {
5957
5956
  ["AdminCustomLyceumModelInput"]: {
5958
5957
  model: string;
5959
5958
  image?: string | undefined | null;
5960
- dockerfile?: string | undefined | null;
5961
5959
  env?: Array<ResolverInputTypes["AdminLyceumEnvOverrideInput"]> | undefined | null;
5962
5960
  extraArgs?: Array<string> | undefined | null;
5963
5961
  startCommand?: string | undefined | null;
@@ -8255,7 +8253,6 @@ export type ModelTypes = {
8255
8253
  ["AdminCustomLyceumModelInput"]: {
8256
8254
  model: string;
8257
8255
  image?: string | undefined | null;
8258
- dockerfile?: string | undefined | null;
8259
8256
  env?: Array<ModelTypes["AdminLyceumEnvOverrideInput"]> | undefined | null;
8260
8257
  extraArgs?: Array<string> | undefined | null;
8261
8258
  startCommand?: string | undefined | null;
@@ -10717,7 +10714,6 @@ export type GraphQLTypes = {
10717
10714
  ["AdminCustomLyceumModelInput"]: {
10718
10715
  model: string;
10719
10716
  image?: string | undefined | null;
10720
- dockerfile?: string | undefined | null;
10721
10717
  env?: Array<GraphQLTypes["AdminLyceumEnvOverrideInput"]> | undefined | null;
10722
10718
  extraArgs?: Array<string> | undefined | null;
10723
10719
  startCommand?: string | undefined | null;