@12ui/design 0.2.80 → 0.2.82

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 (324) hide show
  1. package/README.md +8 -9
  2. package/SKILL.md +2 -8
  3. package/dist/cli-capabilities.d.ts +2 -2
  4. package/dist/cli-capabilities.js +2 -2
  5. package/dist/cli-capabilities.js.map +1 -1
  6. package/dist/cli-help/design.d.ts +1 -1
  7. package/dist/cli-help/design.d.ts.map +1 -1
  8. package/dist/cli-help/design.js +0 -1
  9. package/dist/cli-help/design.js.map +1 -1
  10. package/dist/cli-help/index.d.ts +3 -3
  11. package/dist/cli-help/workflow.d.ts +2 -2
  12. package/dist/cli-help/workflow.js +4 -4
  13. package/dist/cli-help/workflow.js.map +1 -1
  14. package/dist/cli-usage.d.ts.map +1 -1
  15. package/dist/cli-usage.js +5 -4
  16. package/dist/cli-usage.js.map +1 -1
  17. package/dist/cli-workspace-draw.d.ts.map +1 -1
  18. package/dist/cli-workspace-draw.js +2 -0
  19. package/dist/cli-workspace-draw.js.map +1 -1
  20. package/dist/cli-workspace-runner.d.ts.map +1 -1
  21. package/dist/cli-workspace-runner.js +2 -1
  22. package/dist/cli-workspace-runner.js.map +1 -1
  23. package/dist/corpus-client.d.ts +3 -0
  24. package/dist/corpus-client.d.ts.map +1 -1
  25. package/dist/corpus-client.js +2 -0
  26. package/dist/corpus-client.js.map +1 -1
  27. package/dist/corpus-public-renditions.d.ts +33 -0
  28. package/dist/corpus-public-renditions.d.ts.map +1 -0
  29. package/dist/corpus-public-renditions.js +55 -0
  30. package/dist/corpus-public-renditions.js.map +1 -0
  31. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  32. package/dist/legacy-skill-catalog.js +11 -0
  33. package/dist/legacy-skill-catalog.js.map +1 -1
  34. package/dist/mcp-slate-command.d.ts +0 -2
  35. package/dist/mcp-slate-command.d.ts.map +1 -1
  36. package/dist/mcp-slate-command.js +0 -4
  37. package/dist/mcp-slate-command.js.map +1 -1
  38. package/dist/mcp-slate-resource.d.ts.map +1 -1
  39. package/dist/mcp-slate-resource.js +6 -4
  40. package/dist/mcp-slate-resource.js.map +1 -1
  41. package/dist/mcp-slate-tool-defs.d.ts.map +1 -1
  42. package/dist/mcp-slate-tool-defs.js +8 -6
  43. package/dist/mcp-slate-tool-defs.js.map +1 -1
  44. package/dist/mcp-slate-tools.d.ts.map +1 -1
  45. package/dist/mcp-slate-tools.js +8 -1
  46. package/dist/mcp-slate-tools.js.map +1 -1
  47. package/dist/mcp-slate-ui-copy.d.ts +88 -208
  48. package/dist/mcp-slate-ui-copy.d.ts.map +1 -1
  49. package/dist/mcp-slate-ui-copy.js +58 -159
  50. package/dist/mcp-slate-ui-copy.js.map +1 -1
  51. package/dist/mcp-slate-ui-locales/de-DE.d.ts.map +1 -1
  52. package/dist/mcp-slate-ui-locales/de-DE.js +44 -83
  53. package/dist/mcp-slate-ui-locales/de-DE.js.map +1 -1
  54. package/dist/mcp-slate-ui-locales/es-419.d.ts.map +1 -1
  55. package/dist/mcp-slate-ui-locales/es-419.js +44 -83
  56. package/dist/mcp-slate-ui-locales/es-419.js.map +1 -1
  57. package/dist/mcp-slate-ui-locales/es-ES.d.ts.map +1 -1
  58. package/dist/mcp-slate-ui-locales/es-ES.js +44 -83
  59. package/dist/mcp-slate-ui-locales/es-ES.js.map +1 -1
  60. package/dist/mcp-slate-ui-locales/fr-FR.d.ts.map +1 -1
  61. package/dist/mcp-slate-ui-locales/fr-FR.js +44 -83
  62. package/dist/mcp-slate-ui-locales/fr-FR.js.map +1 -1
  63. package/dist/mcp-slate-ui-locales/hi-IN.d.ts.map +1 -1
  64. package/dist/mcp-slate-ui-locales/hi-IN.js +44 -83
  65. package/dist/mcp-slate-ui-locales/hi-IN.js.map +1 -1
  66. package/dist/mcp-slate-ui-locales/it-IT.d.ts.map +1 -1
  67. package/dist/mcp-slate-ui-locales/it-IT.js +44 -83
  68. package/dist/mcp-slate-ui-locales/it-IT.js.map +1 -1
  69. package/dist/mcp-slate-ui-locales/ja-JP.d.ts.map +1 -1
  70. package/dist/mcp-slate-ui-locales/ja-JP.js +44 -83
  71. package/dist/mcp-slate-ui-locales/ja-JP.js.map +1 -1
  72. package/dist/mcp-slate-ui-locales/ko-KR.d.ts.map +1 -1
  73. package/dist/mcp-slate-ui-locales/ko-KR.js +44 -83
  74. package/dist/mcp-slate-ui-locales/ko-KR.js.map +1 -1
  75. package/dist/mcp-slate-ui-locales/pt-BR.d.ts.map +1 -1
  76. package/dist/mcp-slate-ui-locales/pt-BR.js +44 -83
  77. package/dist/mcp-slate-ui-locales/pt-BR.js.map +1 -1
  78. package/dist/mcp-slate-ui-locales/zh-CN.d.ts.map +1 -1
  79. package/dist/mcp-slate-ui-locales/zh-CN.js +44 -83
  80. package/dist/mcp-slate-ui-locales/zh-CN.js.map +1 -1
  81. package/dist/mcp-slate-ui-locales/zh-TW.d.ts.map +1 -1
  82. package/dist/mcp-slate-ui-locales/zh-TW.js +44 -83
  83. package/dist/mcp-slate-ui-locales/zh-TW.js.map +1 -1
  84. package/dist/mcp-slate-ui-script-bridge.d.ts.map +1 -1
  85. package/dist/mcp-slate-ui-script-bridge.js +19 -7
  86. package/dist/mcp-slate-ui-script-bridge.js.map +1 -1
  87. package/dist/mcp-slate-ui-script-browser.d.ts.map +1 -1
  88. package/dist/mcp-slate-ui-script-browser.js +0 -3
  89. package/dist/mcp-slate-ui-script-browser.js.map +1 -1
  90. package/dist/mcp-slate-ui-script-designs.d.ts +17 -0
  91. package/dist/mcp-slate-ui-script-designs.d.ts.map +1 -0
  92. package/dist/mcp-slate-ui-script-designs.js +365 -0
  93. package/dist/mcp-slate-ui-script-designs.js.map +1 -0
  94. package/dist/mcp-slate-ui-script-edit.d.ts +9 -0
  95. package/dist/mcp-slate-ui-script-edit.d.ts.map +1 -0
  96. package/dist/mcp-slate-ui-script-edit.js +71 -0
  97. package/dist/mcp-slate-ui-script-edit.js.map +1 -0
  98. package/dist/mcp-slate-ui-script-inline.d.ts +3 -9
  99. package/dist/mcp-slate-ui-script-inline.d.ts.map +1 -1
  100. package/dist/mcp-slate-ui-script-inline.js +28 -155
  101. package/dist/mcp-slate-ui-script-inline.js.map +1 -1
  102. package/dist/mcp-slate-ui-script-inspiration-collage.d.ts +13 -12
  103. package/dist/mcp-slate-ui-script-inspiration-collage.d.ts.map +1 -1
  104. package/dist/mcp-slate-ui-script-inspiration-collage.js +24 -24
  105. package/dist/mcp-slate-ui-script-inspiration-collage.js.map +1 -1
  106. package/dist/mcp-slate-ui-script-inspiration-gallery.d.ts +23 -0
  107. package/dist/mcp-slate-ui-script-inspiration-gallery.d.ts.map +1 -0
  108. package/dist/mcp-slate-ui-script-inspiration-gallery.js +221 -0
  109. package/dist/mcp-slate-ui-script-inspiration-gallery.js.map +1 -0
  110. package/dist/mcp-slate-ui-script-inspiration-grid.d.ts +14 -21
  111. package/dist/mcp-slate-ui-script-inspiration-grid.d.ts.map +1 -1
  112. package/dist/mcp-slate-ui-script-inspiration-grid.js +124 -196
  113. package/dist/mcp-slate-ui-script-inspiration-grid.js.map +1 -1
  114. package/dist/mcp-slate-ui-script-inspiration.d.ts +8 -9
  115. package/dist/mcp-slate-ui-script-inspiration.d.ts.map +1 -1
  116. package/dist/mcp-slate-ui-script-inspiration.js +213 -130
  117. package/dist/mcp-slate-ui-script-inspiration.js.map +1 -1
  118. package/dist/mcp-slate-ui-script-l10n.d.ts.map +1 -1
  119. package/dist/mcp-slate-ui-script-l10n.js +2 -0
  120. package/dist/mcp-slate-ui-script-l10n.js.map +1 -1
  121. package/dist/mcp-slate-ui-script-more.d.ts +4 -33
  122. package/dist/mcp-slate-ui-script-more.d.ts.map +1 -1
  123. package/dist/mcp-slate-ui-script-more.js +6 -279
  124. package/dist/mcp-slate-ui-script-more.js.map +1 -1
  125. package/dist/mcp-slate-ui-script-pause.d.ts +10 -6
  126. package/dist/mcp-slate-ui-script-pause.d.ts.map +1 -1
  127. package/dist/mcp-slate-ui-script-pause.js +45 -30
  128. package/dist/mcp-slate-ui-script-pause.js.map +1 -1
  129. package/dist/mcp-slate-ui-script-references.d.ts +19 -0
  130. package/dist/mcp-slate-ui-script-references.d.ts.map +1 -0
  131. package/dist/mcp-slate-ui-script-references.js +102 -0
  132. package/dist/mcp-slate-ui-script-references.js.map +1 -0
  133. package/dist/mcp-slate-ui-script-remote.d.ts +13 -12
  134. package/dist/mcp-slate-ui-script-remote.d.ts.map +1 -1
  135. package/dist/mcp-slate-ui-script-remote.js +46 -27
  136. package/dist/mcp-slate-ui-script-remote.js.map +1 -1
  137. package/dist/mcp-slate-ui-script-scribble.d.ts +2 -2
  138. package/dist/mcp-slate-ui-script-scribble.js +7 -7
  139. package/dist/mcp-slate-ui-script-select.d.ts +4 -9
  140. package/dist/mcp-slate-ui-script-select.d.ts.map +1 -1
  141. package/dist/mcp-slate-ui-script-select.js +13 -37
  142. package/dist/mcp-slate-ui-script-select.js.map +1 -1
  143. package/dist/mcp-slate-ui-script-stage.d.ts +4 -10
  144. package/dist/mcp-slate-ui-script-stage.d.ts.map +1 -1
  145. package/dist/mcp-slate-ui-script-stage.js +28 -141
  146. package/dist/mcp-slate-ui-script-stage.js.map +1 -1
  147. package/dist/mcp-slate-ui-script-state.d.ts +1 -1
  148. package/dist/mcp-slate-ui-script-state.d.ts.map +1 -1
  149. package/dist/mcp-slate-ui-script-state.js +9 -4
  150. package/dist/mcp-slate-ui-script-state.js.map +1 -1
  151. package/dist/mcp-slate-ui-script-viewer.d.ts +18 -0
  152. package/dist/mcp-slate-ui-script-viewer.d.ts.map +1 -0
  153. package/dist/mcp-slate-ui-script-viewer.js +405 -0
  154. package/dist/mcp-slate-ui-script-viewer.js.map +1 -0
  155. package/dist/mcp-slate-ui-script.d.ts +4 -5
  156. package/dist/mcp-slate-ui-script.d.ts.map +1 -1
  157. package/dist/mcp-slate-ui-script.js +12 -13
  158. package/dist/mcp-slate-ui-script.js.map +1 -1
  159. package/dist/mcp-slate-ui-styles-designs.d.ts +10 -0
  160. package/dist/mcp-slate-ui-styles-designs.d.ts.map +1 -0
  161. package/dist/mcp-slate-ui-styles-designs.js +121 -0
  162. package/dist/mcp-slate-ui-styles-designs.js.map +1 -0
  163. package/dist/mcp-slate-ui-styles-inspiration.d.ts +13 -13
  164. package/dist/mcp-slate-ui-styles-inspiration.d.ts.map +1 -1
  165. package/dist/mcp-slate-ui-styles-inspiration.js +67 -33
  166. package/dist/mcp-slate-ui-styles-inspiration.js.map +1 -1
  167. package/dist/mcp-slate-ui-styles-pause.d.ts +2 -2
  168. package/dist/mcp-slate-ui-styles-pause.d.ts.map +1 -1
  169. package/dist/mcp-slate-ui-styles-pause.js +4 -8
  170. package/dist/mcp-slate-ui-styles-pause.js.map +1 -1
  171. package/dist/mcp-slate-ui-styles-stage.d.ts +3 -22
  172. package/dist/mcp-slate-ui-styles-stage.d.ts.map +1 -1
  173. package/dist/mcp-slate-ui-styles-stage.js +6 -74
  174. package/dist/mcp-slate-ui-styles-stage.js.map +1 -1
  175. package/dist/mcp-slate-ui-styles.d.ts +12 -19
  176. package/dist/mcp-slate-ui-styles.d.ts.map +1 -1
  177. package/dist/mcp-slate-ui-styles.js +97 -100
  178. package/dist/mcp-slate-ui-styles.js.map +1 -1
  179. package/dist/mcp-slate-ui.d.ts +12 -12
  180. package/dist/mcp-slate-ui.d.ts.map +1 -1
  181. package/dist/mcp-slate-ui.js +24 -23
  182. package/dist/mcp-slate-ui.js.map +1 -1
  183. package/dist/mcp-workflow-tools.js +2 -2
  184. package/dist/mcp-workflow-tools.js.map +1 -1
  185. package/dist/review-files-server.d.ts +8 -0
  186. package/dist/review-files-server.d.ts.map +1 -0
  187. package/dist/review-files-server.js +133 -0
  188. package/dist/review-files-server.js.map +1 -0
  189. package/dist/review-page-assets.d.ts +1 -1
  190. package/dist/review-page-assets.d.ts.map +1 -1
  191. package/dist/review-page-assets.js +3 -1
  192. package/dist/review-page-assets.js.map +1 -1
  193. package/dist/review-page.d.ts +8 -1
  194. package/dist/review-page.d.ts.map +1 -1
  195. package/dist/review-page.js +32 -21
  196. package/dist/review-page.js.map +1 -1
  197. package/dist/review-server-guard.d.ts +33 -0
  198. package/dist/review-server-guard.d.ts.map +1 -0
  199. package/dist/review-server-guard.js +65 -0
  200. package/dist/review-server-guard.js.map +1 -0
  201. package/dist/review-server.d.ts +2 -0
  202. package/dist/review-server.d.ts.map +1 -1
  203. package/dist/review-server.js +45 -74
  204. package/dist/review-server.js.map +1 -1
  205. package/dist/server.d.ts.map +1 -1
  206. package/dist/server.js +2 -0
  207. package/dist/server.js.map +1 -1
  208. package/dist/slate-actions.d.ts +22 -1
  209. package/dist/slate-actions.d.ts.map +1 -1
  210. package/dist/slate-actions.js +46 -2
  211. package/dist/slate-actions.js.map +1 -1
  212. package/dist/slate-browser-host.d.ts +8 -7
  213. package/dist/slate-browser-host.d.ts.map +1 -1
  214. package/dist/slate-browser-host.js +13 -10
  215. package/dist/slate-browser-host.js.map +1 -1
  216. package/dist/slate-browser-server.d.ts.map +1 -1
  217. package/dist/slate-browser-server.js +10 -4
  218. package/dist/slate-browser-server.js.map +1 -1
  219. package/dist/slate-commit.d.ts.map +1 -1
  220. package/dist/slate-commit.js +12 -5
  221. package/dist/slate-commit.js.map +1 -1
  222. package/dist/slate-handoff.d.ts.map +1 -1
  223. package/dist/slate-handoff.js +2 -3
  224. package/dist/slate-handoff.js.map +1 -1
  225. package/dist/slate-ids.d.ts +2 -1
  226. package/dist/slate-ids.d.ts.map +1 -1
  227. package/dist/slate-ids.js +3 -2
  228. package/dist/slate-ids.js.map +1 -1
  229. package/dist/slate-reference-ids.d.ts.map +1 -1
  230. package/dist/slate-reference-ids.js +1 -0
  231. package/dist/slate-reference-ids.js.map +1 -1
  232. package/dist/slate-round-prompt.d.ts +19 -0
  233. package/dist/slate-round-prompt.d.ts.map +1 -1
  234. package/dist/slate-round-prompt.js +22 -0
  235. package/dist/slate-round-prompt.js.map +1 -1
  236. package/dist/slate-round-runner.d.ts.map +1 -1
  237. package/dist/slate-round-runner.js +16 -12
  238. package/dist/slate-round-runner.js.map +1 -1
  239. package/dist/slate-round-search.d.ts.map +1 -1
  240. package/dist/slate-round-search.js +2 -0
  241. package/dist/slate-round-search.js.map +1 -1
  242. package/dist/slate-runtime.d.ts +3 -0
  243. package/dist/slate-runtime.d.ts.map +1 -1
  244. package/dist/slate-runtime.js +1 -0
  245. package/dist/slate-runtime.js.map +1 -1
  246. package/dist/slate-site-references-capture.d.ts +20 -0
  247. package/dist/slate-site-references-capture.d.ts.map +1 -0
  248. package/dist/slate-site-references-capture.js +119 -0
  249. package/dist/slate-site-references-capture.js.map +1 -0
  250. package/dist/slate-site-references-client.d.ts +35 -0
  251. package/dist/slate-site-references-client.d.ts.map +1 -0
  252. package/dist/slate-site-references-client.js +36 -0
  253. package/dist/slate-site-references-client.js.map +1 -0
  254. package/dist/slate-site-references-local.d.ts +6 -0
  255. package/dist/slate-site-references-local.d.ts.map +1 -0
  256. package/dist/slate-site-references-local.js +63 -0
  257. package/dist/slate-site-references-local.js.map +1 -0
  258. package/dist/slate-site-references-suggest.d.ts +36 -0
  259. package/dist/slate-site-references-suggest.d.ts.map +1 -0
  260. package/dist/slate-site-references-suggest.js +144 -0
  261. package/dist/slate-site-references-suggest.js.map +1 -0
  262. package/dist/slate-site-references.d.ts +57 -0
  263. package/dist/slate-site-references.d.ts.map +1 -0
  264. package/dist/slate-site-references.js +129 -0
  265. package/dist/slate-site-references.js.map +1 -0
  266. package/dist/slate-view-contract.d.ts +29 -1
  267. package/dist/slate-view-contract.d.ts.map +1 -1
  268. package/dist/slate-view.d.ts.map +1 -1
  269. package/dist/slate-view.js +5 -0
  270. package/dist/slate-view.js.map +1 -1
  271. package/dist/slate-workspace-parse.d.ts +2 -0
  272. package/dist/slate-workspace-parse.d.ts.map +1 -1
  273. package/dist/slate-workspace-parse.js +20 -3
  274. package/dist/slate-workspace-parse.js.map +1 -1
  275. package/dist/slate-workspace-types.d.ts +17 -2
  276. package/dist/slate-workspace-types.d.ts.map +1 -1
  277. package/dist/workflow/adapter-12ui.js +1 -1
  278. package/dist/workflow/adapter-12ui.js.map +1 -1
  279. package/dist/workflow/adapters.d.ts.map +1 -1
  280. package/dist/workflow/adapters.js +3 -3
  281. package/dist/workflow/adapters.js.map +1 -1
  282. package/dist/workflow/providers.js +2 -2
  283. package/dist/workflow/providers.js.map +1 -1
  284. package/dist/workflow/routing.d.ts +8 -1
  285. package/dist/workflow/routing.d.ts.map +1 -1
  286. package/dist/workflow/routing.js +9 -2
  287. package/dist/workflow/routing.js.map +1 -1
  288. package/dist/workflow/types.d.ts +5 -2
  289. package/dist/workflow/types.d.ts.map +1 -1
  290. package/dist/workflow/types.js.map +1 -1
  291. package/dist/workflow-transport.d.ts.map +1 -1
  292. package/dist/workflow-transport.js +4 -2
  293. package/dist/workflow-transport.js.map +1 -1
  294. package/dist/workspace-draw-messages.d.ts +27 -5
  295. package/dist/workspace-draw-messages.d.ts.map +1 -1
  296. package/dist/workspace-draw-messages.js +29 -3
  297. package/dist/workspace-draw-messages.js.map +1 -1
  298. package/dist/workspace-draw-run.d.ts +12 -0
  299. package/dist/workspace-draw-run.d.ts.map +1 -1
  300. package/dist/workspace-draw-run.js +47 -18
  301. package/dist/workspace-draw-run.js.map +1 -1
  302. package/dist/workspace-draw-types.d.ts +2 -1
  303. package/dist/workspace-draw-types.d.ts.map +1 -1
  304. package/dist/workspace-draw-types.js +1 -0
  305. package/dist/workspace-draw-types.js.map +1 -1
  306. package/dist/workspace-runner-main.d.ts +5 -0
  307. package/dist/workspace-runner-main.d.ts.map +1 -1
  308. package/dist/workspace-runner-main.js +15 -3
  309. package/dist/workspace-runner-main.js.map +1 -1
  310. package/open-design.json +2 -13
  311. package/package.json +1 -1
  312. package/skills/12ui-design/SKILL.md +7 -8
  313. package/dist/mcp-slate-ui-script-dialog.d.ts +0 -21
  314. package/dist/mcp-slate-ui-script-dialog.d.ts.map +0 -1
  315. package/dist/mcp-slate-ui-script-dialog.js +0 -351
  316. package/dist/mcp-slate-ui-script-dialog.js.map +0 -1
  317. package/dist/mcp-slate-ui-script-progress.d.ts +0 -7
  318. package/dist/mcp-slate-ui-script-progress.d.ts.map +0 -1
  319. package/dist/mcp-slate-ui-script-progress.js +0 -9
  320. package/dist/mcp-slate-ui-script-progress.js.map +0 -1
  321. package/dist/mcp-slate-ui-styles-dialog.d.ts +0 -20
  322. package/dist/mcp-slate-ui-styles-dialog.d.ts.map +0 -1
  323. package/dist/mcp-slate-ui-styles-dialog.js +0 -87
  324. package/dist/mcp-slate-ui-styles-dialog.js.map +0 -1
@@ -1,27 +1,11 @@
1
- import { createReadStream } from 'node:fs';
2
- import { realpath, stat } from 'node:fs/promises';
3
1
  import http from 'node:http';
4
2
  import path from 'node:path';
5
3
  import { discoverReviewModel } from './review-discovery.js';
4
+ import { startReviewFilesServer } from './review-files-server.js';
6
5
  import { discoveryNotice } from './review-run-roots.js';
7
6
  import { renderReviewPage } from './review-page.js';
7
+ import { assertReviewAccess, newReviewToken } from './review-server-guard.js';
8
8
  import { saveReviewFeedback } from './review-store.js';
9
- const CONTENT_TYPES = {
10
- '.avif': 'image/avif',
11
- '.css': 'text/css; charset=utf-8',
12
- '.gif': 'image/gif',
13
- '.html': 'text/html; charset=utf-8',
14
- '.jpeg': 'image/jpeg',
15
- '.jpg': 'image/jpeg',
16
- '.js': 'text/javascript; charset=utf-8',
17
- '.json': 'application/json; charset=utf-8',
18
- '.png': 'image/png',
19
- '.svg': 'image/svg+xml',
20
- '.ttf': 'font/ttf',
21
- '.webp': 'image/webp',
22
- '.woff': 'font/woff',
23
- '.woff2': 'font/woff2',
24
- };
25
9
  const sendJson = (response, status, value) => {
26
10
  response.writeHead(status, {
27
11
  'content-type': 'application/json; charset=utf-8',
@@ -29,13 +13,14 @@ const sendJson = (response, status, value) => {
29
13
  });
30
14
  response.end(`${JSON.stringify(value)}\n`);
31
15
  };
32
- const sendPage = (response, page, head = false) => {
16
+ /** The page loads run files only from their own origin (`review-files-server.ts`), and talks only to this one. */
17
+ const sendPage = (response, page, files, head = false) => {
33
18
  const bytes = Buffer.from(page, 'utf8');
34
19
  response.writeHead(200, {
35
20
  'content-type': 'text/html; charset=utf-8',
36
21
  'content-length': bytes.byteLength,
37
22
  'cache-control': 'no-store',
38
- 'content-security-policy': "default-src 'self'; img-src 'self' data: https:; frame-src 'self'; style-src 'unsafe-inline'; script-src 'unsafe-inline'; connect-src 'self'",
23
+ 'content-security-policy': `default-src 'self'; img-src 'self' ${files} data: https:; frame-src ${files}; style-src 'unsafe-inline'; script-src 'unsafe-inline'; connect-src 'self'`,
39
24
  });
40
25
  response.end(head ? undefined : bytes);
41
26
  };
@@ -73,45 +58,6 @@ const requestedRun = (model, runId) => {
73
58
  throw new Error('This review run no longer exists');
74
59
  return run;
75
60
  };
76
- const serveRunFile = async (args) => {
77
- const segments = args.pathname.split('/').slice(2).map((segment) => decodeURIComponent(segment));
78
- const runId = segments.shift();
79
- const run = args.model.runs.find((candidate) => candidate.id === runId);
80
- if (!run || segments.length === 0 || segments.some((segment) => (!segment
81
- || segment === '.'
82
- || segment === '..'
83
- || segment.startsWith('.')
84
- || segment.includes('/')
85
- || segment.includes('\\')))) {
86
- args.response.writeHead(404).end('not found');
87
- return;
88
- }
89
- const root = await realpath(run.root).catch(() => null);
90
- const candidate = path.resolve(run.root, ...segments);
91
- const file = await realpath(candidate).catch(() => null);
92
- if (!root || !file || (file !== root && !file.startsWith(`${root}${path.sep}`))) {
93
- args.response.writeHead(403).end('forbidden');
94
- return;
95
- }
96
- if (path.relative(root, file).split(path.sep).some((segment) => segment.startsWith('.'))) {
97
- args.response.writeHead(404).end('not found');
98
- return;
99
- }
100
- const details = await stat(file).catch(() => null);
101
- if (!details?.isFile()) {
102
- args.response.writeHead(404).end('not found');
103
- return;
104
- }
105
- args.response.writeHead(200, {
106
- 'content-type': CONTENT_TYPES[path.extname(file).toLowerCase()] ?? 'application/octet-stream',
107
- 'content-length': details.size,
108
- 'cache-control': 'no-store',
109
- });
110
- if (args.method === 'HEAD')
111
- args.response.end();
112
- else
113
- createReadStream(file).pipe(args.response);
114
- };
115
61
  export const startReviewServer = async (options) => {
116
62
  const discovery = {
117
63
  ...(options.target ? { target: options.target } : {}),
@@ -123,10 +69,16 @@ export const startReviewServer = async (options) => {
123
69
  };
124
70
  let model = await discoverReviewModel(discovery);
125
71
  const activePrototypeRuns = new Set();
72
+ // This session's secret, embedded only in the page this server serves (`review-server-guard.ts`).
73
+ const token = newReviewToken();
74
+ let port = 0;
126
75
  const refresh = async () => {
127
76
  model = await discoverReviewModel(discovery);
128
77
  return model;
129
78
  };
79
+ const files = await startReviewFilesServer(() => model);
80
+ /** The files origin under the loopback name the page was asked for, so the page and its files stay one site. */
81
+ const filesOrigin = (request) => (`http://${request.headers.host?.startsWith('localhost:') ? 'localhost' : '127.0.0.1'}:${files.port}`);
130
82
  const server = http.createServer(async (request, response) => {
131
83
  const method = request.method ?? 'GET';
132
84
  let pathname;
@@ -137,13 +89,18 @@ export const startReviewServer = async (options) => {
137
89
  response.writeHead(400).end('bad request');
138
90
  return;
139
91
  }
92
+ try {
93
+ assertReviewAccess(request, { port, token });
94
+ }
95
+ catch (error) {
96
+ const refused = error;
97
+ sendJson(response, refused.status, { ok: false, code: refused.code, error: refused.message });
98
+ return;
99
+ }
140
100
  try {
141
101
  if ((method === 'GET' || method === 'HEAD') && (pathname === '/' || pathname === '/index.html')) {
142
- sendPage(response, renderReviewPage(await refresh()), method === 'HEAD');
143
- return;
144
- }
145
- if ((method === 'GET' || method === 'HEAD') && pathname.startsWith('/files/')) {
146
- await serveRunFile({ model, pathname, method, response });
102
+ const origin = filesOrigin(request);
103
+ sendPage(response, renderReviewPage(await refresh(), { token, files: origin }), origin, method === 'HEAD');
147
104
  return;
148
105
  }
149
106
  if (method === 'POST' && pathname === '/api/feedback') {
@@ -255,25 +212,39 @@ export const startReviewServer = async (options) => {
255
212
  });
256
213
  }
257
214
  });
258
- await new Promise((resolve, reject) => {
259
- server.once('error', reject);
260
- server.listen(options.port ?? 0, '127.0.0.1', () => resolve());
261
- });
215
+ try {
216
+ await new Promise((resolve, reject) => {
217
+ server.once('error', reject);
218
+ server.listen(options.port ?? 0, '127.0.0.1', () => resolve());
219
+ });
220
+ }
221
+ catch (error) {
222
+ await files.close();
223
+ throw error;
224
+ }
262
225
  const address = server.address();
263
226
  if (!address || typeof address === 'string') {
264
227
  await new Promise((resolve) => server.close(() => resolve()));
228
+ await files.close();
265
229
  throw new Error('Review server did not bind a local TCP port');
266
230
  }
231
+ port = address.port;
267
232
  return {
268
233
  url: `http://127.0.0.1:${address.port}`,
269
234
  port: address.port,
235
+ filesUrl: `http://127.0.0.1:${files.port}`,
270
236
  ...(discoveryNotice(model) ? { notice: discoveryNotice(model) } : {}),
271
- close: () => new Promise((resolve, reject) => {
272
- server.close((error) => { if (error)
273
- reject(error);
274
- else
275
- resolve(); });
276
- }),
237
+ close: async () => {
238
+ await Promise.all([
239
+ new Promise((resolve, reject) => {
240
+ server.close((error) => { if (error)
241
+ reject(error);
242
+ else
243
+ resolve(); });
244
+ }),
245
+ files.close(),
246
+ ]);
247
+ },
277
248
  };
278
249
  };
279
250
  //# sourceMappingURL=review-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"review-server.js","sourceRoot":"","sources":["../src/review-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-server.js","sourceRoot":"","sources":["../src/review-server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAWnE,OAAO,EAAoB,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAWzF,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;;OAOG;IACH,MAAM,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,CAAC,CAAC;IACpD,sFAAsF;IACtF,YAAY,CAAC,EAAE,YAAY,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC;IACnD;;;;OAIG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF,qGAAqG;AACrG,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,MA4C3D,CAAC;AAEF,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAWnE,OAAO,EAAoB,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAYzF,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;;OAOG;IACH,MAAM,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,CAAC,CAAC;IACpD,sFAAsF;IACtF,YAAY,CAAC,EAAE,YAAY,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC;IACnD;;;;OAIG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF,qGAAqG;AACrG,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,MA6C3D,CAAC;AAEF,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E"}
package/dist/server.js CHANGED
@@ -6,6 +6,7 @@ import { readCorpusConfig } from './config.js';
6
6
  import { MCP_TOOL_DEFINITIONS } from './mcp-tool-definitions.js';
7
7
  import { callMcpTool, createMcpCorpusDependencies, createMcpToolDependencies, } from './mcp-tool-handler.js';
8
8
  import { lazyCorpus } from './slate-corpus.js';
9
+ import { startLocalReferences } from './slate-site-references-local.js';
9
10
  import { listSlateResources, readSlateResource } from './mcp-slate-resource.js';
10
11
  import { SLATE_TOOL_DEFINITIONS, createSlateToolHandler, isSlateTool, } from './mcp-slate-tools.js';
11
12
  /** Construct the transport without reading credentials; local workflow and slate tools need none. */
@@ -28,6 +29,7 @@ export const createMcpServer = (options) => {
28
29
  const slateTools = createSlateToolHandler({
29
30
  // The workspace's free reference search reads the same optional-auth corpus configuration, lazily.
30
31
  corpus: lazyCorpus(resolveCorpusConfig),
32
+ gatherReferences: (root) => { startLocalReferences(root); },
31
33
  ...options.slate,
32
34
  });
33
35
  const server = new Server({ name: PACKAGE_NAME, version: packageIdentity().version }, { capabilities: { tools: {}, resources: {} } });
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,20 @@ export type RoundAction = {
25
25
  note: string | null;
26
26
  fromVersionId: string | null;
27
27
  count: RoundOptionCount;
28
+ /** The design prompt as the person edited it on the screen; it becomes the workspace's brief. Absent: unchanged. */
29
+ brief?: string;
30
+ };
31
+ /**
32
+ * Branch: grow the other pages of the product from one design, the design attached as the identity reference. The
33
+ * pages are the person's names (one option each), or, with none, `count` pages the drawing model chooses.
34
+ */
35
+ export type BranchAction = {
36
+ kind: 'round';
37
+ mode: 'branch';
38
+ note: null;
39
+ fromVersionId: string;
40
+ count: number;
41
+ pages: string[];
28
42
  };
29
43
  export type EditAction = {
30
44
  kind: 'edit';
@@ -32,12 +46,19 @@ export type EditAction = {
32
46
  prompt: string;
33
47
  strokes: SlateStroke[];
34
48
  };
35
- export type SlateWorkAction = RoundAction | EditAction;
49
+ export type SlateWorkAction = RoundAction | BranchAction | EditAction;
50
+ export declare const BRANCH_DEFAULT_PAGES = 4;
51
+ export declare const BRANCH_MAX_PAGES = 8;
52
+ export declare const PAGE_NAME_MAX_CHARACTERS = 60;
53
+ /** The pages a branch draws when the person names none, in this order (a product without one draws its closest equivalent). */
54
+ export declare const BRANCH_DEFAULT_PAGE_NAMES: readonly ["Detail", "Sign in", "Pricing", "Settings", "Dashboard", "Search", "Profile", "Checkout"];
36
55
  /** Control characters are stripped except tab and newline; the rest is the user's text. */
37
56
  export declare const cleanUserText: (value: string) => string;
38
57
  /** Freehand strokes as integer permille points; anything outside the limits is refused, never trimmed. */
39
58
  export declare const normalizeStrokes: (value: unknown) => SlateStroke[];
40
59
  /** A missing count is the default; anything but 1, 2, 4, 6, 8 or 12 is refused, never rounded. */
41
60
  export declare const normalizeRoundCount: (value: unknown) => RoundOptionCount;
61
+ /** Page names: trimmed, inner whitespace collapsed, empty ones dropped; more than eight, or a name over 60 characters, is refused. */
62
+ export declare const normalizePages: (value: unknown) => string[];
42
63
  export declare const normalizeAction: (input: unknown) => SlateWorkAction;
43
64
  //# sourceMappingURL=slate-actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slate-actions.d.ts","sourceRoot":"","sources":["../src/slate-actions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkD,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5G;;;GAGG;AAEH,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,8BAA+B,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,eAAO,MAAM,0BAA0B,EAAE,gBAAoB,CAAC;AAC9D,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,qBAAqB,OAA8B,CAAC;AACjE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,6KAA6K,CAAC;AACjN,eAAO,MAAM,aAAa;;;;CAAqE,CAAC;AAEhG,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,gBAAgB,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AACrG,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,UAAU,CAAC;AAQvD,2FAA2F;AAC3F,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAG7C,CAAC;AAEF,0GAA0G;AAC1G,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,WAAW,EAsB5D,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,mBAAmB,GAAI,OAAO,OAAO,KAAG,gBAKpD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,eA+BhD,CAAC"}
1
+ {"version":3,"file":"slate-actions.d.ts","sourceRoot":"","sources":["../src/slate-actions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkD,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5G;;;GAGG;AAEH,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,8BAA+B,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,eAAO,MAAM,0BAA0B,EAAE,gBAAoB,CAAC;AAC9D,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,qBAAqB,OAA8B,CAAC;AACjE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,6KAA6K,CAAC;AACjN,eAAO,MAAM,aAAa;;;;CAAqE,CAAC;AAGhG,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,gBAAgB,CAAC;IACxB,oHAAoH;IACpH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AACF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAChI,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AACrG,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;AAEtE,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,+HAA+H;AAC/H,eAAO,MAAM,yBAAyB,qGAAsG,CAAC;AAQ7I,2FAA2F;AAC3F,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAG7C,CAAC;AAEF,0GAA0G;AAC1G,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,WAAW,EAsB5D,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,mBAAmB,GAAI,OAAO,OAAO,KAAG,gBAKpD,CAAC;AAEF,sIAAsI;AACtI,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,MAAM,EAWrD,CAAC;AAWF,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,eAsChD,CAAC"}
@@ -16,6 +16,12 @@ export const EDIT_PROMPT_MAX_BYTES = SLATE_EDIT_PROMPT_MAX_BYTES;
16
16
  */
17
17
  export const EDIT_MARKS_ONLY_PROMPT = 'Infer the change from the marks: an X or a cross-out means remove that element, a circle or a scribble means adjust it, and any words written there are the instruction.';
18
18
  export const STROKE_LIMITS = { strokes: 24, pointsPerStroke: 400, pointsTotal: 3_000 };
19
+ const ROUND_BRIEF_MAX_CHARACTERS = 2_000;
20
+ export const BRANCH_DEFAULT_PAGES = 4;
21
+ export const BRANCH_MAX_PAGES = 8;
22
+ export const PAGE_NAME_MAX_CHARACTERS = 60;
23
+ /** The pages a branch draws when the person names none, in this order (a product without one draws its closest equivalent). */
24
+ export const BRANCH_DEFAULT_PAGE_NAMES = ['Detail', 'Sign in', 'Pricing', 'Settings', 'Dashboard', 'Search', 'Profile', 'Checkout'];
19
25
  const isRecord = (value) => (!!value && typeof value === 'object' && !Array.isArray(value));
20
26
  const invalid = (message, l10n) => { throw new SlateError('invalid_input', message, l10n ? { l10n } : {}); };
21
27
  /** Control characters are stripped except tab and newline; the rest is the user's text. */
@@ -63,12 +69,42 @@ export const normalizeRoundCount = (value) => {
63
69
  return invalid(`count must be one of ${ROUND_OPTION_COUNTS.join(', ')}`);
64
70
  return allowed;
65
71
  };
72
+ /** Page names: trimmed, inner whitespace collapsed, empty ones dropped; more than eight, or a name over 60 characters, is refused. */
73
+ export const normalizePages = (value) => {
74
+ if (value === undefined || value === null)
75
+ return [];
76
+ if (!Array.isArray(value))
77
+ return invalid('pages must be a list of page names');
78
+ const pages = value.map((page) => {
79
+ if (typeof page !== 'string')
80
+ return invalid('a page name must be text');
81
+ const cleaned = cleanUserText(page).replace(/\s+/gu, ' ');
82
+ if ([...cleaned].length > PAGE_NAME_MAX_CHARACTERS)
83
+ return invalid(`A page name can be at most ${PAGE_NAME_MAX_CHARACTERS} characters.`);
84
+ return cleaned;
85
+ }).filter(Boolean);
86
+ if (pages.length > BRANCH_MAX_PAGES)
87
+ return invalid(`A branch draws at most ${BRANCH_MAX_PAGES} pages.`);
88
+ return pages;
89
+ };
90
+ const normalizeBranch = (input) => {
91
+ const fromVersionId = input.fromVersionId;
92
+ if (typeof fromVersionId !== 'string' || !VERSION_ID_PATTERN.test(fromVersionId))
93
+ return invalid('A branch needs the version it grows from (fromVersionId).');
94
+ const pages = normalizePages(input.pages);
95
+ const count = pages.length > 0 ? pages.length : (input.count ?? BRANCH_DEFAULT_PAGES);
96
+ if (typeof count !== 'number' || !Number.isInteger(count) || count < 1 || count > BRANCH_MAX_PAGES)
97
+ return invalid(`A branch draws 1 to ${BRANCH_MAX_PAGES} pages.`);
98
+ return { kind: 'round', mode: 'branch', note: null, fromVersionId, count, pages: pages.length > 0 ? pages : BRANCH_DEFAULT_PAGE_NAMES.slice(0, count) };
99
+ };
66
100
  export const normalizeAction = (input) => {
67
101
  if (!isRecord(input))
68
102
  return invalid('action must be an object');
103
+ if (input.kind === 'round' && input.mode === 'branch')
104
+ return normalizeBranch(input);
69
105
  if (input.kind === 'round') {
70
106
  if (input.mode !== 'new' && input.mode !== 'like')
71
- return invalid('mode must be new or like');
107
+ return invalid('mode must be new, like or branch');
72
108
  let note = null;
73
109
  if (input.note !== undefined && input.note !== null) {
74
110
  if (typeof input.note !== 'string')
@@ -88,7 +124,15 @@ export const normalizeAction = (input) => {
88
124
  return invalid('More like this needs the version to stay close to (fromVersionId).');
89
125
  if (input.mode === 'new' && fromVersionId !== null)
90
126
  return invalid('New options do not start from a version.');
91
- return { kind: 'round', mode: input.mode, note, fromVersionId, count: normalizeRoundCount(input.count) };
127
+ let brief = null;
128
+ if (input.brief !== undefined && input.brief !== null) {
129
+ if (typeof input.brief !== 'string')
130
+ return invalid('brief must be text');
131
+ brief = cleanUserText(input.brief).replace(/\s+/gu, ' ') || null;
132
+ if (brief !== null && [...brief].length > ROUND_BRIEF_MAX_CHARACTERS)
133
+ return invalid(`The brief can be at most ${ROUND_BRIEF_MAX_CHARACTERS} characters.`);
134
+ }
135
+ return { kind: 'round', mode: input.mode, note, fromVersionId, count: normalizeRoundCount(input.count), ...(brief === null ? {} : { brief }) };
92
136
  }
93
137
  if (input.kind === 'edit') {
94
138
  const versionId = input.versionId;
@@ -1 +1 @@
1
- {"version":3,"file":"slate-actions.js","sourceRoot":"","sources":["../src/slate-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slate-actions.js","sourceRoot":"","sources":["../src/slate-actions.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,18 @@
1
1
  /**
2
2
  * What the page allows, and so what the screen inherits: a frame given its document as `srcdoc` runs under its parent's
3
- * policy, so the page's own carries the one thing the screen needs beyond scripts and styles (`img-src data:`: its
4
- * images arrive as data URLs through the tools) and nothing else for the frame. The page has no frame to load, so
5
- * `frame-src 'none'`; its one network use is the shim's own calls, `connect-src 'self'`.
3
+ * policy, so the page's own carries the one thing the screen needs beyond scripts and styles (`img-src`: design pictures
4
+ * arrive as data URLs through the tools, and inspiration pictures load from the public rendition origin) and nothing else
5
+ * for the frame. The page has no frame to load, so `frame-src 'none'`; its one network use is the shim's own calls,
6
+ * `connect-src 'self'`.
6
7
  */
7
- export declare const SLATE_BROWSER_HOST_CSP = "default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; connect-src 'self'; frame-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'";
8
+ export declare const SLATE_BROWSER_HOST_CSP: string;
8
9
  /**
9
10
  * The screen's own policy, set as a `<meta>` in its document: policies only ever add, so the frame runs under both this
10
11
  * and the page's, and what it ends up with is their intersection, which is this one (scripts and styles inline, images as
11
- * data, no network of any kind). A `<meta>` cannot carry `frame-ancestors`; the page's `frame-ancestors 'none'` and the
12
- * frame's sandbox keep it from being framed or navigated anywhere else.
12
+ * data or from the rendition origin, no other network of any kind). A `<meta>` cannot carry `frame-ancestors`; the page's
13
+ * `frame-ancestors 'none'` and the frame's sandbox keep it from being framed or navigated anywhere else.
13
14
  */
14
- export declare const SLATE_BROWSER_SCREEN_CSP = "default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; base-uri 'none'; form-action 'none'";
15
+ export declare const SLATE_BROWSER_SCREEN_CSP: string;
15
16
  /**
16
17
  * The page the browser workspace opens: a frame for the screen (built from the same modules the MCP plugin serves, with
17
18
  * target `browser`) and the shim that stands in for an MCP Apps host. The frame is sandboxed to scripts only, so the
@@ -1 +1 @@
1
- {"version":3,"file":"slate-browser-host.d.ts","sourceRoot":"","sources":["../src/slate-browser-host.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,gMAAgM,CAAC;AAEpO;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,kIAAkI,CAAC;AAexK;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,GAAI,YAAY,MAAM,KAAG,MAgC9D,CAAC"}
1
+ {"version":3,"file":"slate-browser-host.d.ts","sourceRoot":"","sources":["../src/slate-browser-host.ts"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,QAAkO,CAAC;AAEtQ;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAoK,CAAC;AAe1M;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,GAAI,YAAY,MAAM,KAAG,MAiC9D,CAAC"}
@@ -3,24 +3,26 @@ import { formatIcu, parseIcu } from './mcp-slate-ui-icu.js';
3
3
  import { matchShippedLocale } from './mcp-slate-ui-locale-match.js';
4
4
  import { SLATE_UI_LOCALES } from './mcp-slate-ui-locales/index.js';
5
5
  import { SLATE_BROWSER_HOST_SCRIPT } from './slate-browser-host-script.js';
6
+ import { CORPUS_PUBLIC_RENDITION_ORIGIN } from './corpus-public-renditions.js';
6
7
  /** The page's own words in every shipped locale: only the keys it uses. */
7
8
  const pageMessages = () => Object.fromEntries(Object.entries(SLATE_UI_LOCALES).map(([tag, messages]) => [
8
9
  tag, Object.fromEntries(SLATE_BROWSER_PAGE_KEYS.map((key) => [key, messages[key]])),
9
10
  ]));
10
11
  /**
11
12
  * What the page allows, and so what the screen inherits: a frame given its document as `srcdoc` runs under its parent's
12
- * policy, so the page's own carries the one thing the screen needs beyond scripts and styles (`img-src data:`: its
13
- * images arrive as data URLs through the tools) and nothing else for the frame. The page has no frame to load, so
14
- * `frame-src 'none'`; its one network use is the shim's own calls, `connect-src 'self'`.
13
+ * policy, so the page's own carries the one thing the screen needs beyond scripts and styles (`img-src`: design pictures
14
+ * arrive as data URLs through the tools, and inspiration pictures load from the public rendition origin) and nothing else
15
+ * for the frame. The page has no frame to load, so `frame-src 'none'`; its one network use is the shim's own calls,
16
+ * `connect-src 'self'`.
15
17
  */
16
- export const SLATE_BROWSER_HOST_CSP = "default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; connect-src 'self'; frame-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'";
18
+ export const SLATE_BROWSER_HOST_CSP = `default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data: ${CORPUS_PUBLIC_RENDITION_ORIGIN}; connect-src 'self'; frame-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'`;
17
19
  /**
18
20
  * The screen's own policy, set as a `<meta>` in its document: policies only ever add, so the frame runs under both this
19
21
  * and the page's, and what it ends up with is their intersection, which is this one (scripts and styles inline, images as
20
- * data, no network of any kind). A `<meta>` cannot carry `frame-ancestors`; the page's `frame-ancestors 'none'` and the
21
- * frame's sandbox keep it from being framed or navigated anywhere else.
22
+ * data or from the rendition origin, no other network of any kind). A `<meta>` cannot carry `frame-ancestors`; the page's
23
+ * `frame-ancestors 'none'` and the frame's sandbox keep it from being framed or navigated anywhere else.
22
24
  */
23
- export const SLATE_BROWSER_SCREEN_CSP = "default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; base-uri 'none'; form-action 'none'";
25
+ export const SLATE_BROWSER_SCREEN_CSP = `default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data: ${CORPUS_PUBLIC_RENDITION_ORIGIN}; base-uri 'none'; form-action 'none'`;
24
26
  const HEAD_OPEN = '<head>';
25
27
  /** The screen's document with its policy first in the head (before anything that could run). */
26
28
  const withScreenPolicy = (screenHtml) => {
@@ -52,9 +54,10 @@ export const buildSlateBrowserHostHtml = (screenHtml) => `<!doctype html>
52
54
  <meta name="color-scheme" content="light dark">
53
55
  <title>${SLATE_UI_MESSAGES.title}</title>
54
56
  <style>
55
- :root { --bg: #ffffff; --fg: #17181c; --muted: #5b5f6a; --card: #ffffff; --line: #d9dce3; }
56
- @media (prefers-color-scheme: dark) { :root { --bg: #16171b; --fg: #f1f2f5; --muted: #a3a7b3; --card: #1f2126; --line: #34363d; } }
57
- html, body { margin: 0; height: 100%; background: var(--bg); color: var(--fg); font: 16px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif; }
57
+ /* The screen's own neutral fallbacks (mcp-slate-ui-styles.ts), so the page and the screen are one ground. */
58
+ :root { --bg: #ffffff; --fg: #1a1c1f; --muted: rgb(26 28 31 / .5); --card: #ffffff; --line: rgb(26 28 31 / .12); }
59
+ @media (prefers-color-scheme: dark) { :root { --bg: #181818; --fg: #ffffff; --muted: rgb(255 255 255 / .5); --card: #202020; --line: rgb(255 255 255 / .16); } }
60
+ html, body { margin: 0; height: 100%; background: var(--bg); color: var(--fg); font: 16px/1.5 -apple-system, "system-ui", "Segoe UI", sans-serif; }
58
61
  #screen { display: block; border: 0; width: 100%; background: transparent; }
59
62
  #screen.fullscreen { height: 100vh; height: 100dvh; }
60
63
  #screen.inline { max-width: 720px; margin: 0 auto; }
@@ -1 +1 @@
1
- {"version":3,"file":"slate-browser-host.js","sourceRoot":"","sources":["../src/slate-browser-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,2EAA2E;AAC3E,MAAM,YAAY,GAAG,GAA2C,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;IAC9I,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpF,CAAC,CAAC,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,6LAA6L,CAAC;AAEpO;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,+HAA+H,CAAC;AAExK,MAAM,SAAS,GAAG,QAAQ,CAAC;AAE3B,gGAAgG;AAChG,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAU,EAAE;IACtD,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,EAAE,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;IAClC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,yDAAyD,wBAAwB,KAAK,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClJ,CAAC,CAAC;AAEF,sHAAsH;AACtH,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAE7F;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,UAAkB,EAAU,EAAE,CAAC;;;;;;SAMhE,iBAAiB,CAAC,KAAK;;;;;;;;;;;;;;;;6BAgBH,iBAAiB,CAAC,KAAK;;kDAEF,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;UAC/E,yBAAyB;KAC9B,OAAO,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;KAClE,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACnD,OAAO,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KACrD,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;;;CAGpE,CAAC"}
1
+ {"version":3,"file":"slate-browser-host.js","sourceRoot":"","sources":["../src/slate-browser-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAE/E,2EAA2E;AAC3E,MAAM,YAAY,GAAG,GAA2C,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;IAC9I,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpF,CAAC,CAAC,CAAC;AAEJ;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,4FAA4F,8BAA8B,qGAAqG,CAAC;AAEtQ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,4FAA4F,8BAA8B,uCAAuC,CAAC;AAE1M,MAAM,SAAS,GAAG,QAAQ,CAAC;AAE3B,gGAAgG;AAChG,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAU,EAAE;IACtD,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,EAAE,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;IAClC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,yDAAyD,wBAAwB,KAAK,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClJ,CAAC,CAAC;AAEF,sHAAsH;AACtH,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAE7F;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,UAAkB,EAAU,EAAE,CAAC;;;;;;SAMhE,iBAAiB,CAAC,KAAK;;;;;;;;;;;;;;;;;6BAiBH,iBAAiB,CAAC,KAAK;;kDAEF,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;UAC/E,yBAAyB;KAC9B,OAAO,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;KAClE,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACnD,OAAO,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KACrD,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;;;CAGpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"slate-browser-server.d.ts","sourceRoot":"","sources":["../src/slate-browser-server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAuD,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAG7H,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGrF;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,yBAAyB,GAAG;IACtC,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gHAAgH;IAChH,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAyCF,eAAO,MAAM,uBAAuB,GAAU,SAAS,yBAAyB,KAAG,OAAO,CAAC,kBAAkB,CA8H5G,CAAC"}
1
+ {"version":3,"file":"slate-browser-server.d.ts","sourceRoot":"","sources":["../src/slate-browser-server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAuD,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAG7H,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGrF;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,yBAAyB,GAAG;IACtC,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gHAAgH;IAChH,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAyCF,eAAO,MAAM,uBAAuB,GAAU,SAAS,yBAAyB,KAAG,OAAO,CAAC,kBAAkB,CAoI5G,CAAC"}
@@ -144,8 +144,10 @@ export const startSlateBrowserServer = async (options) => {
144
144
  }
145
145
  throw new HttpError(404, 'not_found', 'Not found.');
146
146
  };
147
+ // The requests being answered: closing waits for them, so no tool call still writes into the run after close.
148
+ const inflight = new Set();
147
149
  const server = createServer((request, response) => {
148
- route(request, response).catch((error) => {
150
+ const work = route(request, response).catch((error) => {
149
151
  if (response.headersSent) {
150
152
  response.end();
151
153
  return;
@@ -158,6 +160,8 @@ export const startSlateBrowserServer = async (options) => {
158
160
  const result = errorResult(error);
159
161
  send(response, 200, 'application/json', undefined, JSON.stringify({ result, decided: null, ending: false }));
160
162
  });
163
+ inflight.add(work);
164
+ void work.finally(() => { inflight.delete(work); });
161
165
  });
162
166
  await new Promise((resolve, reject) => {
163
167
  server.once('error', reject);
@@ -169,13 +173,15 @@ export const startSlateBrowserServer = async (options) => {
169
173
  port,
170
174
  token,
171
175
  runDir,
172
- close: () => new Promise((resolve) => {
176
+ close: async () => {
173
177
  if (pending)
174
178
  clearTimeout(pending.timer);
175
179
  pending = undefined;
176
- server.close(() => { resolve(); });
180
+ const closed = new Promise((resolve) => { server.close(() => { resolve(); }); });
177
181
  server.closeAllConnections();
178
- }),
182
+ await closed;
183
+ await Promise.allSettled([...inflight]);
184
+ },
179
185
  };
180
186
  };
181
187
  //# sourceMappingURL=slate-browser-server.js.map