@ethlete/cli 3.0.0-next.26 → 3.0.0-next.28

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 (837) hide show
  1. package/CHANGELOG.md +481 -0
  2. package/build-info.json +1 -0
  3. package/design/arrow-anchor.ts +55 -0
  4. package/design/define-call.ts +75 -30
  5. package/design/define-part.ts +64 -4
  6. package/design/icon-sheet.ts +1 -1
  7. package/design/interaction-rows.ts +13 -6
  8. package/design/mark-part.ts +51 -1
  9. package/design/token-sheet.ts +1 -1
  10. package/design/web/frame-fit.ts +7 -0
  11. package/design/web/frame-surfaces.ts +294 -0
  12. package/design/web/frame.ts +69 -15
  13. package/design/web/surface-interactive.css +42 -0
  14. package/design/with-action.ts +29 -0
  15. package/package.json +3 -1
  16. package/src/index.js +9 -1
  17. package/src/index.js.map +1 -1
  18. package/src/lib/api/compose.js +3 -2
  19. package/src/lib/api/compose.js.map +1 -1
  20. package/src/lib/api/git.js +2 -1
  21. package/src/lib/api/git.js.map +1 -1
  22. package/src/lib/api/setup.js +2 -2
  23. package/src/lib/api/setup.js.map +1 -1
  24. package/src/lib/design/asset-shot.js +4 -4
  25. package/src/lib/design/asset-shot.js.map +1 -1
  26. package/src/lib/design/blank-png.d.ts +2 -0
  27. package/src/lib/design/blank-png.js +28 -0
  28. package/src/lib/design/blank-png.js.map +1 -0
  29. package/src/lib/design/build-watch.d.ts +26 -0
  30. package/src/lib/design/build-watch.js +138 -0
  31. package/src/lib/design/build-watch.js.map +1 -0
  32. package/src/lib/design/cache-entry.d.ts +8 -0
  33. package/src/lib/design/cache-entry.js +30 -0
  34. package/src/lib/design/cache-entry.js.map +1 -0
  35. package/src/lib/design/calls-tsconfig.js +20 -13
  36. package/src/lib/design/calls-tsconfig.js.map +1 -1
  37. package/src/lib/design/calls.js +3 -3
  38. package/src/lib/design/calls.js.map +1 -1
  39. package/src/lib/design/changed-parts.d.ts +1 -1
  40. package/src/lib/design/check.d.ts +2 -0
  41. package/src/lib/design/check.js +217 -24
  42. package/src/lib/design/check.js.map +1 -1
  43. package/src/lib/design/code-hash.d.ts +30 -0
  44. package/src/lib/design/code-hash.js +118 -0
  45. package/src/lib/design/code-hash.js.map +1 -0
  46. package/src/lib/design/commit-hunks.d.ts +22 -0
  47. package/src/lib/design/commit-hunks.js +173 -0
  48. package/src/lib/design/commit-hunks.js.map +1 -0
  49. package/src/lib/design/design-command.d.ts +2 -0
  50. package/src/lib/design/design-command.js +271 -27
  51. package/src/lib/design/design-command.js.map +1 -1
  52. package/src/lib/design/{paths.d.ts → design-config.d.ts} +34 -28
  53. package/src/lib/design/design-config.js +35 -0
  54. package/src/lib/design/design-config.js.map +1 -0
  55. package/src/lib/design/design-lint.d.ts +68 -0
  56. package/src/lib/design/design-lint.js +183 -0
  57. package/src/lib/design/design-lint.js.map +1 -0
  58. package/src/lib/design/draw-ledger.d.ts +6 -0
  59. package/src/lib/design/draw-ledger.js +10 -0
  60. package/src/lib/design/draw-ledger.js.map +1 -1
  61. package/src/lib/design/force-interactions.d.ts +3 -1
  62. package/src/lib/design/force-interactions.js +8 -4
  63. package/src/lib/design/force-interactions.js.map +1 -1
  64. package/src/lib/design/generated-stylesheets.d.ts +1 -1
  65. package/src/lib/design/generated-stylesheets.js +2 -2
  66. package/src/lib/design/generated-stylesheets.js.map +1 -1
  67. package/src/lib/design/git-top.d.ts +5 -0
  68. package/src/lib/design/git-top.js +16 -0
  69. package/src/lib/design/git-top.js.map +1 -0
  70. package/src/lib/design/hooks-problem.d.ts +2 -0
  71. package/src/lib/design/hooks-problem.js +23 -0
  72. package/src/lib/design/hooks-problem.js.map +1 -0
  73. package/src/lib/design/inbox-command.js +9 -5
  74. package/src/lib/design/inbox-command.js.map +1 -1
  75. package/src/lib/design/index.d.ts +4 -1
  76. package/src/lib/design/index.js +4 -1
  77. package/src/lib/design/index.js.map +1 -1
  78. package/src/lib/design/is-running.d.ts +1 -0
  79. package/src/lib/design/is-running.js +14 -0
  80. package/src/lib/design/is-running.js.map +1 -0
  81. package/src/lib/design/legacy.js +3 -3
  82. package/src/lib/design/legacy.js.map +1 -1
  83. package/src/lib/design/mcp-command.d.ts +5 -1
  84. package/src/lib/design/mcp-command.js +27 -16
  85. package/src/lib/design/mcp-command.js.map +1 -1
  86. package/src/lib/design/merge-compare.d.ts +10 -2
  87. package/src/lib/design/merge-compare.js +63 -11
  88. package/src/lib/design/merge-compare.js.map +1 -1
  89. package/src/lib/design/motion-command.js +4 -4
  90. package/src/lib/design/motion-command.js.map +1 -1
  91. package/src/lib/design/motion-shot.js +3 -2
  92. package/src/lib/design/motion-shot.js.map +1 -1
  93. package/src/lib/design/new-call.js +22 -13
  94. package/src/lib/design/new-call.js.map +1 -1
  95. package/src/lib/design/old-shot-folders.d.ts +2 -0
  96. package/src/lib/design/old-shot-folders.js +26 -0
  97. package/src/lib/design/old-shot-folders.js.map +1 -0
  98. package/src/lib/design/package-root.d.ts +21 -0
  99. package/src/lib/design/package-root.js +79 -0
  100. package/src/lib/design/package-root.js.map +1 -0
  101. package/src/lib/design/parent-watch.d.ts +7 -0
  102. package/src/lib/design/parent-watch.js +23 -0
  103. package/src/lib/design/parent-watch.js.map +1 -0
  104. package/src/lib/design/part-marks.d.ts +3 -2
  105. package/src/lib/design/part-marks.js +15 -7
  106. package/src/lib/design/part-marks.js.map +1 -1
  107. package/src/lib/design/phase-timing.d.ts +5 -0
  108. package/src/lib/design/phase-timing.js +27 -0
  109. package/src/lib/design/phase-timing.js.map +1 -0
  110. package/src/lib/design/physical-cores.d.ts +12 -0
  111. package/src/lib/design/physical-cores.js +43 -0
  112. package/src/lib/design/physical-cores.js.map +1 -0
  113. package/src/lib/design/product-command.d.ts +1 -1
  114. package/src/lib/design/product-command.js +16 -18
  115. package/src/lib/design/product-command.js.map +1 -1
  116. package/src/lib/design/push-status.d.ts +30 -0
  117. package/src/lib/design/push-status.js +122 -0
  118. package/src/lib/design/push-status.js.map +1 -0
  119. package/src/lib/design/ready-shots.d.ts +21 -12
  120. package/src/lib/design/ready-shots.js +79 -44
  121. package/src/lib/design/ready-shots.js.map +1 -1
  122. package/src/lib/design/render-packages.d.ts +7 -18
  123. package/src/lib/design/render-packages.js +24 -63
  124. package/src/lib/design/render-packages.js.map +1 -1
  125. package/src/lib/design/render-worker.js +24 -6
  126. package/src/lib/design/render-worker.js.map +1 -1
  127. package/src/lib/design/render.d.ts +26 -3
  128. package/src/lib/design/render.js +52 -13
  129. package/src/lib/design/render.js.map +1 -1
  130. package/src/lib/design/resident/client.d.ts +52 -0
  131. package/src/lib/design/resident/client.js +263 -0
  132. package/src/lib/design/resident/client.js.map +1 -0
  133. package/src/lib/design/resident/discovery.d.ts +21 -0
  134. package/src/lib/design/resident/discovery.js +63 -0
  135. package/src/lib/design/resident/discovery.js.map +1 -0
  136. package/src/lib/design/resident/resident-process.d.ts +19 -0
  137. package/src/lib/design/resident/resident-process.js +189 -0
  138. package/src/lib/design/resident/resident-process.js.map +1 -0
  139. package/src/lib/design/resident/server.d.ts +52 -0
  140. package/src/lib/design/resident/server.js +212 -0
  141. package/src/lib/design/resident/server.js.map +1 -0
  142. package/src/lib/design/run-abort.d.ts +9 -0
  143. package/src/lib/design/run-abort.js +45 -0
  144. package/src/lib/design/run-abort.js.map +1 -0
  145. package/src/lib/design/run-deadline.d.ts +19 -0
  146. package/src/lib/design/run-deadline.js +104 -0
  147. package/src/lib/design/run-deadline.js.map +1 -0
  148. package/src/lib/design/run-yield.d.ts +8 -0
  149. package/src/lib/design/run-yield.js +43 -0
  150. package/src/lib/design/run-yield.js.map +1 -0
  151. package/src/lib/design/serve-state.d.ts +15 -0
  152. package/src/lib/design/serve-state.js +56 -0
  153. package/src/lib/design/serve-state.js.map +1 -0
  154. package/src/lib/design/serve.d.ts +41 -3
  155. package/src/lib/design/serve.js +272 -54
  156. package/src/lib/design/serve.js.map +1 -1
  157. package/src/lib/design/server-identity.d.ts +40 -0
  158. package/src/lib/design/server-identity.js +71 -0
  159. package/src/lib/design/server-identity.js.map +1 -0
  160. package/src/lib/design/settle-frames.d.ts +4 -0
  161. package/src/lib/design/settle-frames.js +22 -0
  162. package/src/lib/design/settle-frames.js.map +1 -0
  163. package/src/lib/design/shot-board.d.ts +26 -0
  164. package/src/lib/design/shot-board.js +80 -0
  165. package/src/lib/design/shot-board.js.map +1 -0
  166. package/src/lib/design/shot-command.d.ts +26 -5
  167. package/src/lib/design/shot-command.js +143 -50
  168. package/src/lib/design/shot-command.js.map +1 -1
  169. package/src/lib/design/shot-store.d.ts +29 -3
  170. package/src/lib/design/shot-store.js +206 -36
  171. package/src/lib/design/shot-store.js.map +1 -1
  172. package/src/lib/design/shot.d.ts +60 -2
  173. package/src/lib/design/shot.js +238 -28
  174. package/src/lib/design/shot.js.map +1 -1
  175. package/src/lib/design/sketch-at.js +2 -1
  176. package/src/lib/design/sketch-at.js.map +1 -1
  177. package/src/lib/design/sketch-command.d.ts +19 -1
  178. package/src/lib/design/sketch-command.js +664 -159
  179. package/src/lib/design/sketch-command.js.map +1 -1
  180. package/src/lib/design/ssr-shims.d.ts +1 -0
  181. package/src/lib/design/ssr-shims.js +3 -3
  182. package/src/lib/design/ssr-shims.js.map +1 -1
  183. package/src/lib/design/stale-cli-dist.d.ts +11 -0
  184. package/src/lib/design/stale-cli-dist.js +56 -0
  185. package/src/lib/design/stale-cli-dist.js.map +1 -0
  186. package/src/lib/design/stamp.d.ts +23 -1
  187. package/src/lib/design/stamp.js +56 -9
  188. package/src/lib/design/stamp.js.map +1 -1
  189. package/src/lib/design/started-by-studio.d.ts +1 -0
  190. package/src/lib/design/started-by-studio.js +6 -0
  191. package/src/lib/design/started-by-studio.js.map +1 -0
  192. package/src/lib/design/status.d.ts +1 -1
  193. package/src/lib/design/status.js +15 -4
  194. package/src/lib/design/status.js.map +1 -1
  195. package/src/lib/design/studio-api.d.ts +21 -10
  196. package/src/lib/design/studio-api.js +192 -88
  197. package/src/lib/design/studio-api.js.map +1 -1
  198. package/src/lib/design/system/accepted-pictures.d.ts +69 -0
  199. package/src/lib/design/system/accepted-pictures.js +346 -0
  200. package/src/lib/design/system/accepted-pictures.js.map +1 -0
  201. package/src/lib/design/system/action-cache.d.ts +45 -0
  202. package/src/lib/design/system/action-cache.js +72 -0
  203. package/src/lib/design/system/action-cache.js.map +1 -0
  204. package/src/lib/design/system/action-lost.d.ts +61 -0
  205. package/src/lib/design/system/action-lost.js +116 -0
  206. package/src/lib/design/system/action-lost.js.map +1 -0
  207. package/src/lib/design/system/action-press.d.ts +29 -0
  208. package/src/lib/design/system/action-press.js +88 -0
  209. package/src/lib/design/system/action-press.js.map +1 -0
  210. package/src/lib/design/system/action-undeclared.d.ts +34 -0
  211. package/src/lib/design/system/action-undeclared.js +81 -0
  212. package/src/lib/design/system/action-undeclared.js.map +1 -0
  213. package/src/lib/design/system/actions-command.d.ts +108 -0
  214. package/src/lib/design/system/actions-command.js +816 -0
  215. package/src/lib/design/system/actions-command.js.map +1 -0
  216. package/src/lib/design/system/actions.d.ts +181 -0
  217. package/src/lib/design/system/actions.js +333 -0
  218. package/src/lib/design/system/actions.js.map +1 -0
  219. package/src/lib/design/system/anti-alias.d.ts +2 -0
  220. package/src/lib/design/system/anti-alias.js +11 -0
  221. package/src/lib/design/system/anti-alias.js.map +1 -0
  222. package/src/lib/design/system/app-files.d.ts +10 -0
  223. package/src/lib/design/system/app-files.js +175 -0
  224. package/src/lib/design/system/app-files.js.map +1 -0
  225. package/src/lib/design/system/arrow-anchor.d.ts +9 -0
  226. package/src/lib/design/system/arrow-anchor.js +40 -0
  227. package/src/lib/design/system/arrow-anchor.js.map +1 -0
  228. package/src/lib/design/system/base-issues.d.ts +28 -0
  229. package/src/lib/design/system/base-issues.js +80 -0
  230. package/src/lib/design/system/base-issues.js.map +1 -0
  231. package/src/lib/design/system/base.d.ts +1 -1
  232. package/src/lib/design/system/base.js +2 -2
  233. package/src/lib/design/system/base.js.map +1 -1
  234. package/src/lib/design/system/baseline-history.d.ts +13 -0
  235. package/src/lib/design/system/baseline-history.js +40 -0
  236. package/src/lib/design/system/baseline-history.js.map +1 -0
  237. package/src/lib/design/system/bespoke-controls.d.ts +33 -0
  238. package/src/lib/design/system/bespoke-controls.js +149 -0
  239. package/src/lib/design/system/bespoke-controls.js.map +1 -0
  240. package/src/lib/design/system/build-ready-contract.d.ts +33 -0
  241. package/src/lib/design/system/build-ready-contract.js +18 -0
  242. package/src/lib/design/system/build-ready-contract.js.map +1 -0
  243. package/src/lib/design/system/build-running.d.ts +13 -0
  244. package/src/lib/design/system/build-running.js +48 -0
  245. package/src/lib/design/system/build-running.js.map +1 -0
  246. package/src/lib/design/system/check-record.d.ts +18 -0
  247. package/src/lib/design/system/check-record.js +47 -0
  248. package/src/lib/design/system/check-record.js.map +1 -0
  249. package/src/lib/design/system/check-rules.d.ts +1 -0
  250. package/src/lib/design/system/check-rules.js +100 -0
  251. package/src/lib/design/system/check-rules.js.map +1 -0
  252. package/src/lib/design/system/check-system.d.ts +83 -7
  253. package/src/lib/design/system/check-system.js +647 -68
  254. package/src/lib/design/system/check-system.js.map +1 -1
  255. package/src/lib/design/system/comments/comment.d.ts +4 -1
  256. package/src/lib/design/system/comments/comment.js +13 -4
  257. package/src/lib/design/system/comments/comment.js.map +1 -1
  258. package/src/lib/design/system/comments/inbox.d.ts +1 -1
  259. package/src/lib/design/system/comments/inbox.js +2 -2
  260. package/src/lib/design/system/comments/inbox.js.map +1 -1
  261. package/src/lib/design/system/compare-cache.d.ts +20 -0
  262. package/src/lib/design/system/compare-cache.js +92 -0
  263. package/src/lib/design/system/compare-cache.js.map +1 -0
  264. package/src/lib/design/system/compare-command.d.ts +150 -0
  265. package/src/lib/design/system/compare-command.js +580 -0
  266. package/src/lib/design/system/compare-command.js.map +1 -0
  267. package/src/lib/design/system/complete-command.js +1 -1
  268. package/src/lib/design/system/complete-command.js.map +1 -1
  269. package/src/lib/design/system/complete.d.ts +63 -2
  270. package/src/lib/design/system/complete.js +281 -71
  271. package/src/lib/design/system/complete.js.map +1 -1
  272. package/src/lib/design/system/component-outputs.d.ts +20 -0
  273. package/src/lib/design/system/component-outputs.js +86 -0
  274. package/src/lib/design/system/component-outputs.js.map +1 -0
  275. package/src/lib/design/system/contrast-check.d.ts +1 -1
  276. package/src/lib/design/system/contrast-check.js +14 -3
  277. package/src/lib/design/system/contrast-check.js.map +1 -1
  278. package/src/lib/design/system/decision-refs.d.ts +5 -0
  279. package/src/lib/design/system/decision-refs.js +21 -0
  280. package/src/lib/design/system/decision-refs.js.map +1 -0
  281. package/src/lib/design/system/demo-backdrop.d.ts +11 -0
  282. package/src/lib/design/system/demo-backdrop.js +41 -0
  283. package/src/lib/design/system/demo-backdrop.js.map +1 -0
  284. package/src/lib/design/system/design-hash.d.ts +52 -0
  285. package/src/lib/design/system/design-hash.js +132 -0
  286. package/src/lib/design/system/design-hash.js.map +1 -0
  287. package/src/lib/design/system/disabled-interaction.d.ts +8 -0
  288. package/src/lib/design/system/disabled-interaction.js +37 -0
  289. package/src/lib/design/system/disabled-interaction.js.map +1 -0
  290. package/src/lib/design/system/dom-command.d.ts +36 -0
  291. package/src/lib/design/system/dom-command.js +178 -0
  292. package/src/lib/design/system/dom-command.js.map +1 -0
  293. package/src/lib/design/system/drawn-open-points.d.ts +26 -4
  294. package/src/lib/design/system/drawn-open-points.js +65 -14
  295. package/src/lib/design/system/drawn-open-points.js.map +1 -1
  296. package/src/lib/design/system/dropped-props.d.ts +39 -0
  297. package/src/lib/design/system/dropped-props.js +271 -0
  298. package/src/lib/design/system/dropped-props.js.map +1 -0
  299. package/src/lib/design/system/embedded-actions.d.ts +21 -0
  300. package/src/lib/design/system/embedded-actions.js +37 -0
  301. package/src/lib/design/system/embedded-actions.js.map +1 -0
  302. package/src/lib/design/system/exceptions.js +2 -1
  303. package/src/lib/design/system/exceptions.js.map +1 -1
  304. package/src/lib/design/system/flows/flow.js +2 -1
  305. package/src/lib/design/system/flows/flow.js.map +1 -1
  306. package/src/lib/design/system/frozen-animations.d.ts +13 -0
  307. package/src/lib/design/system/frozen-animations.js +51 -0
  308. package/src/lib/design/system/frozen-animations.js.map +1 -0
  309. package/src/lib/design/system/grid-report.d.ts +5 -0
  310. package/src/lib/design/system/grid-report.js +78 -0
  311. package/src/lib/design/system/grid-report.js.map +1 -0
  312. package/src/lib/design/system/handoff.js +2 -1
  313. package/src/lib/design/system/handoff.js.map +1 -1
  314. package/src/lib/design/system/harness-build-cache.d.ts +49 -0
  315. package/src/lib/design/system/harness-build-cache.js +188 -0
  316. package/src/lib/design/system/harness-build-cache.js.map +1 -0
  317. package/src/lib/design/system/harness-command.d.ts +7 -0
  318. package/src/lib/design/system/harness-command.js +51 -0
  319. package/src/lib/design/system/harness-command.js.map +1 -0
  320. package/src/lib/design/system/harness-config.d.ts +9 -0
  321. package/src/lib/design/system/harness-config.js +65 -0
  322. package/src/lib/design/system/harness-config.js.map +1 -0
  323. package/src/lib/design/system/harness-inputs.d.ts +17 -0
  324. package/src/lib/design/system/harness-inputs.js +160 -0
  325. package/src/lib/design/system/harness-inputs.js.map +1 -0
  326. package/src/lib/design/system/harness-map.d.ts +44 -0
  327. package/src/lib/design/system/harness-map.js +126 -0
  328. package/src/lib/design/system/harness-map.js.map +1 -0
  329. package/src/lib/design/system/harness-samples.d.ts +20 -0
  330. package/src/lib/design/system/harness-samples.js +92 -0
  331. package/src/lib/design/system/harness-samples.js.map +1 -0
  332. package/src/lib/design/system/harness-server.d.ts +51 -0
  333. package/src/lib/design/system/harness-server.js +306 -0
  334. package/src/lib/design/system/harness-server.js.map +1 -0
  335. package/src/lib/design/system/harness-shot.d.ts +78 -0
  336. package/src/lib/design/system/harness-shot.js +349 -0
  337. package/src/lib/design/system/harness-shot.js.map +1 -0
  338. package/src/lib/design/system/harness-watch.d.ts +79 -0
  339. package/src/lib/design/system/harness-watch.js +334 -0
  340. package/src/lib/design/system/harness-watch.js.map +1 -0
  341. package/src/lib/design/system/implementation-baseline.d.ts +20 -0
  342. package/src/lib/design/system/implementation-baseline.js +44 -0
  343. package/src/lib/design/system/implementation-baseline.js.map +1 -0
  344. package/src/lib/design/system/imports.js +14 -1
  345. package/src/lib/design/system/imports.js.map +1 -1
  346. package/src/lib/design/system/in-order-at-once.d.ts +6 -0
  347. package/src/lib/design/system/in-order-at-once.js +28 -0
  348. package/src/lib/design/system/in-order-at-once.js.map +1 -0
  349. package/src/lib/design/system/inventory-approval.js +2 -1
  350. package/src/lib/design/system/inventory-approval.js.map +1 -1
  351. package/src/lib/design/system/inventory.d.ts +13 -4
  352. package/src/lib/design/system/inventory.js +36 -7
  353. package/src/lib/design/system/inventory.js.map +1 -1
  354. package/src/lib/design/system/leftover-gate-files.d.ts +2 -0
  355. package/src/lib/design/system/leftover-gate-files.js +15 -0
  356. package/src/lib/design/system/leftover-gate-files.js.map +1 -0
  357. package/src/lib/design/system/lib-build-lock.d.ts +18 -0
  358. package/src/lib/design/system/lib-build-lock.js +111 -0
  359. package/src/lib/design/system/lib-build-lock.js.map +1 -0
  360. package/src/lib/design/system/link-free.d.ts +12 -0
  361. package/src/lib/design/system/link-free.js +125 -0
  362. package/src/lib/design/system/link-free.js.map +1 -0
  363. package/src/lib/design/system/list-system.d.ts +8 -8
  364. package/src/lib/design/system/list-system.js +19 -80
  365. package/src/lib/design/system/list-system.js.map +1 -1
  366. package/src/lib/design/system/live-actions.d.ts +121 -0
  367. package/src/lib/design/system/live-actions.js +674 -0
  368. package/src/lib/design/system/live-actions.js.map +1 -0
  369. package/src/lib/design/system/live-compare.d.ts +136 -0
  370. package/src/lib/design/system/live-compare.js +441 -0
  371. package/src/lib/design/system/live-compare.js.map +1 -0
  372. package/src/lib/design/system/live-uncovered.d.ts +45 -0
  373. package/src/lib/design/system/live-uncovered.js +158 -0
  374. package/src/lib/design/system/live-uncovered.js.map +1 -0
  375. package/src/lib/design/system/nested-scroll.d.ts +7 -0
  376. package/src/lib/design/system/nested-scroll.js +25 -0
  377. package/src/lib/design/system/nested-scroll.js.map +1 -0
  378. package/src/lib/design/system/no-verdict.d.ts +13 -0
  379. package/src/lib/design/system/no-verdict.js +17 -0
  380. package/src/lib/design/system/no-verdict.js.map +1 -0
  381. package/src/lib/design/system/notes/note.js +2 -1
  382. package/src/lib/design/system/notes/note.js.map +1 -1
  383. package/src/lib/design/system/occluded.d.ts +13 -0
  384. package/src/lib/design/system/occluded.js +111 -0
  385. package/src/lib/design/system/occluded.js.map +1 -0
  386. package/src/lib/design/system/off-centre.d.ts +11 -0
  387. package/src/lib/design/system/off-centre.js +74 -0
  388. package/src/lib/design/system/off-centre.js.map +1 -0
  389. package/src/lib/design/system/open-points-cache.d.ts +11 -0
  390. package/src/lib/design/system/open-points-cache.js +27 -0
  391. package/src/lib/design/system/open-points-cache.js.map +1 -0
  392. package/src/lib/design/system/open-points-runner.d.ts +43 -0
  393. package/src/lib/design/system/open-points-runner.js +119 -0
  394. package/src/lib/design/system/open-points-runner.js.map +1 -0
  395. package/src/lib/design/system/open-points-worker.d.ts +1 -0
  396. package/src/lib/design/system/open-points-worker.js +28 -0
  397. package/src/lib/design/system/open-points-worker.js.map +1 -0
  398. package/src/lib/design/system/open-points.d.ts +24 -6
  399. package/src/lib/design/system/open-points.js +59 -30
  400. package/src/lib/design/system/open-points.js.map +1 -1
  401. package/src/lib/design/system/part-build-ready.d.ts +45 -0
  402. package/src/lib/design/system/part-build-ready.js +135 -0
  403. package/src/lib/design/system/part-build-ready.js.map +1 -0
  404. package/src/lib/design/system/part-command.js +2 -9
  405. package/src/lib/design/system/part-command.js.map +1 -1
  406. package/src/lib/design/system/part-compare.d.ts +139 -0
  407. package/src/lib/design/system/part-compare.js +501 -0
  408. package/src/lib/design/system/part-compare.js.map +1 -0
  409. package/src/lib/design/system/part-picture-cache.d.ts +23 -0
  410. package/src/lib/design/system/part-picture-cache.js +68 -0
  411. package/src/lib/design/system/part-picture-cache.js.map +1 -0
  412. package/src/lib/design/system/part-ready.d.ts +71 -7
  413. package/src/lib/design/system/part-ready.js +128 -19
  414. package/src/lib/design/system/part-ready.js.map +1 -1
  415. package/src/lib/design/system/part-task.d.ts +167 -0
  416. package/src/lib/design/system/part-task.js +331 -0
  417. package/src/lib/design/system/part-task.js.map +1 -0
  418. package/src/lib/design/system/pixel-cache.d.ts +16 -0
  419. package/src/lib/design/system/pixel-cache.js +79 -0
  420. package/src/lib/design/system/pixel-cache.js.map +1 -0
  421. package/src/lib/design/system/pointer-focus.d.ts +89 -0
  422. package/src/lib/design/system/pointer-focus.js +175 -0
  423. package/src/lib/design/system/pointer-focus.js.map +1 -0
  424. package/src/lib/design/system/prettier.d.ts +10 -0
  425. package/src/lib/design/system/prettier.js +37 -0
  426. package/src/lib/design/system/prettier.js.map +1 -0
  427. package/src/lib/design/system/problem.d.ts +6 -0
  428. package/src/lib/design/system/product.js +2 -2
  429. package/src/lib/design/system/product.js.map +1 -1
  430. package/src/lib/design/system/reach.d.ts +12 -0
  431. package/src/lib/design/system/reach.js +186 -0
  432. package/src/lib/design/system/reach.js.map +1 -0
  433. package/src/lib/design/system/reachable-controls.d.ts +6 -0
  434. package/src/lib/design/system/reachable-controls.js +19 -0
  435. package/src/lib/design/system/reachable-controls.js.map +1 -0
  436. package/src/lib/design/system/reachable-files.d.ts +14 -0
  437. package/src/lib/design/system/reachable-files.js +101 -0
  438. package/src/lib/design/system/reachable-files.js.map +1 -0
  439. package/src/lib/design/system/reached-state.d.ts +23 -0
  440. package/src/lib/design/system/reached-state.js +53 -0
  441. package/src/lib/design/system/reached-state.js.map +1 -0
  442. package/src/lib/design/system/read-open-points.d.ts +9 -3
  443. package/src/lib/design/system/read-open-points.js +38 -9
  444. package/src/lib/design/system/read-open-points.js.map +1 -1
  445. package/src/lib/design/system/ready-command.d.ts +6 -2
  446. package/src/lib/design/system/ready-command.js +52 -15
  447. package/src/lib/design/system/ready-command.js.map +1 -1
  448. package/src/lib/design/system/record-settled.d.ts +24 -0
  449. package/src/lib/design/system/record-settled.js +50 -0
  450. package/src/lib/design/system/record-settled.js.map +1 -0
  451. package/src/lib/design/system/render-check.d.ts +68 -1
  452. package/src/lib/design/system/render-check.js +427 -114
  453. package/src/lib/design/system/render-check.js.map +1 -1
  454. package/src/lib/design/system/render-issue-key.d.ts +9 -0
  455. package/src/lib/design/system/render-issue-key.js +27 -0
  456. package/src/lib/design/system/render-issue-key.js.map +1 -0
  457. package/src/lib/design/system/resolve-product.d.ts +4 -1
  458. package/src/lib/design/system/resolve-product.js +19 -3
  459. package/src/lib/design/system/resolve-product.js.map +1 -1
  460. package/src/lib/design/system/rule-baseline.d.ts +53 -0
  461. package/src/lib/design/system/rule-baseline.js +124 -0
  462. package/src/lib/design/system/rule-baseline.js.map +1 -0
  463. package/src/lib/design/system/rule-skips.d.ts +20 -0
  464. package/src/lib/design/system/rule-skips.js +36 -0
  465. package/src/lib/design/system/rule-skips.js.map +1 -0
  466. package/src/lib/design/system/rules/app-spec.d.ts +30 -0
  467. package/src/lib/design/system/rules/app-spec.js +87 -0
  468. package/src/lib/design/system/rules/app-spec.js.map +1 -0
  469. package/src/lib/design/system/rules/canonical-class.d.ts +6 -0
  470. package/src/lib/design/system/rules/canonical-class.js +92 -113
  471. package/src/lib/design/system/rules/canonical-class.js.map +1 -1
  472. package/src/lib/design/system/rules/capability-place.d.ts +46 -0
  473. package/src/lib/design/system/rules/capability-place.js +129 -0
  474. package/src/lib/design/system/rules/capability-place.js.map +1 -0
  475. package/src/lib/design/system/rules/command-text.d.ts +7 -0
  476. package/src/lib/design/system/rules/command-text.js +72 -0
  477. package/src/lib/design/system/rules/command-text.js.map +1 -0
  478. package/src/lib/design/system/rules/denied-class.d.ts +9 -0
  479. package/src/lib/design/system/rules/denied-class.js +121 -0
  480. package/src/lib/design/system/rules/denied-class.js.map +1 -0
  481. package/src/lib/design/system/rules/design-coverage.d.ts +30 -0
  482. package/src/lib/design/system/rules/design-coverage.js +205 -0
  483. package/src/lib/design/system/rules/design-coverage.js.map +1 -0
  484. package/src/lib/design/system/rules/exemptions.d.ts +18 -0
  485. package/src/lib/design/system/rules/exemptions.js +18 -0
  486. package/src/lib/design/system/rules/exemptions.js.map +1 -0
  487. package/src/lib/design/system/rules/flow.js +1 -1
  488. package/src/lib/design/system/rules/flow.js.map +1 -1
  489. package/src/lib/design/system/rules/glued-interpolation.d.ts +8 -0
  490. package/src/lib/design/system/rules/glued-interpolation.js +77 -0
  491. package/src/lib/design/system/rules/glued-interpolation.js.map +1 -0
  492. package/src/lib/design/system/rules/hard-coded-colour.js +2 -1
  493. package/src/lib/design/system/rules/hard-coded-colour.js.map +1 -1
  494. package/src/lib/design/system/rules/implemented-components.d.ts +22 -0
  495. package/src/lib/design/system/rules/implemented-components.js +45 -0
  496. package/src/lib/design/system/rules/implemented-components.js.map +1 -0
  497. package/src/lib/design/system/rules/implements-unrendered.d.ts +13 -0
  498. package/src/lib/design/system/rules/implements-unrendered.js +63 -0
  499. package/src/lib/design/system/rules/implements-unrendered.js.map +1 -0
  500. package/src/lib/design/system/rules/implements.d.ts +2 -1
  501. package/src/lib/design/system/rules/implements.js +26 -21
  502. package/src/lib/design/system/rules/implements.js.map +1 -1
  503. package/src/lib/design/system/rules/inline-svg.js +4 -1
  504. package/src/lib/design/system/rules/inline-svg.js.map +1 -1
  505. package/src/lib/design/system/rules/inline-ui-in-page-open.d.ts +13 -0
  506. package/src/lib/design/system/rules/inline-ui-in-page-open.js +5 -0
  507. package/src/lib/design/system/rules/inline-ui-in-page-open.js.map +1 -0
  508. package/src/lib/design/system/rules/inline-ui-in-page.d.ts +18 -0
  509. package/src/lib/design/system/rules/inline-ui-in-page.js +123 -0
  510. package/src/lib/design/system/rules/inline-ui-in-page.js.map +1 -0
  511. package/src/lib/design/system/rules/inline-ui.d.ts +16 -0
  512. package/src/lib/design/system/rules/inline-ui.js +100 -0
  513. package/src/lib/design/system/rules/inline-ui.js.map +1 -0
  514. package/src/lib/design/system/rules/motion.d.ts +1 -1
  515. package/src/lib/design/system/rules/motion.js +31 -17
  516. package/src/lib/design/system/rules/motion.js.map +1 -1
  517. package/src/lib/design/system/rules/native-title.d.ts +7 -0
  518. package/src/lib/design/system/rules/native-title.js +74 -0
  519. package/src/lib/design/system/rules/native-title.js.map +1 -0
  520. package/src/lib/design/system/rules/option-values.d.ts +1 -1
  521. package/src/lib/design/system/rules/orphan-endpoint-known.d.ts +12 -0
  522. package/src/lib/design/system/rules/orphan-endpoint-known.js +20 -0
  523. package/src/lib/design/system/rules/orphan-endpoint-known.js.map +1 -0
  524. package/src/lib/design/system/rules/orphan-endpoint.d.ts +23 -0
  525. package/src/lib/design/system/rules/orphan-endpoint.js +166 -0
  526. package/src/lib/design/system/rules/orphan-endpoint.js.map +1 -0
  527. package/src/lib/design/system/rules/part-rewrite.d.ts +13 -0
  528. package/src/lib/design/system/rules/part-rewrite.js +125 -0
  529. package/src/lib/design/system/rules/part-rewrite.js.map +1 -0
  530. package/src/lib/design/system/rules/pending-state.d.ts +39 -0
  531. package/src/lib/design/system/rules/pending-state.js +289 -0
  532. package/src/lib/design/system/rules/pending-state.js.map +1 -0
  533. package/src/lib/design/system/rules/sample-default-known.d.ts +5 -0
  534. package/src/lib/design/system/rules/sample-default-known.js +17 -0
  535. package/src/lib/design/system/rules/sample-default-known.js.map +1 -0
  536. package/src/lib/design/system/rules/sample-default.d.ts +22 -0
  537. package/src/lib/design/system/rules/sample-default.js +92 -0
  538. package/src/lib/design/system/rules/sample-default.js.map +1 -0
  539. package/src/lib/design/system/rules/sdk-attribute-value.d.ts +10 -0
  540. package/src/lib/design/system/rules/sdk-attribute-value.js +78 -0
  541. package/src/lib/design/system/rules/sdk-attribute-value.js.map +1 -0
  542. package/src/lib/design/system/rules/sdk-private-var.d.ts +9 -0
  543. package/src/lib/design/system/rules/sdk-private-var.js +54 -0
  544. package/src/lib/design/system/rules/sdk-private-var.js.map +1 -0
  545. package/src/lib/design/system/rules/skips.d.ts +4 -0
  546. package/src/lib/design/system/rules/skips.js +27 -0
  547. package/src/lib/design/system/rules/skips.js.map +1 -0
  548. package/src/lib/design/system/rules/stale-replace.js +5 -0
  549. package/src/lib/design/system/rules/stale-replace.js.map +1 -1
  550. package/src/lib/design/system/rules/state-in-component.d.ts +16 -0
  551. package/src/lib/design/system/rules/state-in-component.js +101 -0
  552. package/src/lib/design/system/rules/state-in-component.js.map +1 -0
  553. package/src/lib/design/system/rules/tailwind-classes.d.ts +52 -0
  554. package/src/lib/design/system/rules/tailwind-classes.js +237 -0
  555. package/src/lib/design/system/rules/tailwind-classes.js.map +1 -0
  556. package/src/lib/design/system/rules/token-selectors.js +10 -3
  557. package/src/lib/design/system/rules/token-selectors.js.map +1 -1
  558. package/src/lib/design/system/rules/top-level-await.d.ts +9 -0
  559. package/src/lib/design/system/rules/top-level-await.js +62 -0
  560. package/src/lib/design/system/rules/top-level-await.js.map +1 -0
  561. package/src/lib/design/system/rules/unbound-input-known.d.ts +7 -0
  562. package/src/lib/design/system/rules/unbound-input-known.js +44 -0
  563. package/src/lib/design/system/rules/unbound-input-known.js.map +1 -0
  564. package/src/lib/design/system/rules/unbound-input.d.ts +24 -0
  565. package/src/lib/design/system/rules/unbound-input.js +67 -0
  566. package/src/lib/design/system/rules/unbound-input.js.map +1 -0
  567. package/src/lib/design/system/rules/uncovered-region.d.ts +13 -0
  568. package/src/lib/design/system/rules/uncovered-region.js +36 -0
  569. package/src/lib/design/system/rules/uncovered-region.js.map +1 -0
  570. package/src/lib/design/system/rules/undefined-class.d.ts +9 -0
  571. package/src/lib/design/system/rules/undefined-class.js +41 -0
  572. package/src/lib/design/system/rules/undefined-class.js.map +1 -0
  573. package/src/lib/design/system/rules/undefined-token.d.ts +1 -1
  574. package/src/lib/design/system/rules/undefined-token.js +7 -61
  575. package/src/lib/design/system/rules/undefined-token.js.map +1 -1
  576. package/src/lib/design/system/rules/utility-css.d.ts +2 -1
  577. package/src/lib/design/system/rules/utility-css.js +40 -13
  578. package/src/lib/design/system/rules/utility-css.js.map +1 -1
  579. package/src/lib/design/system/rules/view-coverage.d.ts +8 -0
  580. package/src/lib/design/system/rules/view-coverage.js +51 -0
  581. package/src/lib/design/system/rules/view-coverage.js.map +1 -0
  582. package/src/lib/design/system/rules/visible-change.d.ts +19 -0
  583. package/src/lib/design/system/rules/visible-change.js +48 -0
  584. package/src/lib/design/system/rules/visible-change.js.map +1 -0
  585. package/src/lib/design/system/sdk-declarations.d.ts +10 -0
  586. package/src/lib/design/system/sdk-declarations.js +177 -0
  587. package/src/lib/design/system/sdk-declarations.js.map +1 -0
  588. package/src/lib/design/system/sdk-errors.d.ts +14 -0
  589. package/src/lib/design/system/sdk-errors.js +38 -0
  590. package/src/lib/design/system/sdk-errors.js.map +1 -0
  591. package/src/lib/design/system/sdk-selectors.d.ts +18 -0
  592. package/src/lib/design/system/sdk-selectors.js +131 -0
  593. package/src/lib/design/system/sdk-selectors.js.map +1 -0
  594. package/src/lib/design/system/see-through.d.ts +12 -0
  595. package/src/lib/design/system/see-through.js +112 -0
  596. package/src/lib/design/system/see-through.js.map +1 -0
  597. package/src/lib/design/system/served-cache.d.ts +99 -0
  598. package/src/lib/design/system/served-cache.js +202 -0
  599. package/src/lib/design/system/served-cache.js.map +1 -0
  600. package/src/lib/design/system/settled-panes.d.ts +23 -0
  601. package/src/lib/design/system/settled-panes.js +71 -0
  602. package/src/lib/design/system/settled-panes.js.map +1 -0
  603. package/src/lib/design/system/sketch/after-merge.d.ts +11 -0
  604. package/src/lib/design/system/sketch/after-merge.js +51 -0
  605. package/src/lib/design/system/sketch/after-merge.js.map +1 -0
  606. package/src/lib/design/system/sketch/aktuell-placeholders.d.ts +30 -0
  607. package/src/lib/design/system/sketch/aktuell-placeholders.js +87 -0
  608. package/src/lib/design/system/sketch/aktuell-placeholders.js.map +1 -0
  609. package/src/lib/design/system/sketch/baseline.d.ts +36 -2
  610. package/src/lib/design/system/sketch/baseline.js +76 -13
  611. package/src/lib/design/system/sketch/baseline.js.map +1 -1
  612. package/src/lib/design/system/sketch/check-format.js +3 -9
  613. package/src/lib/design/system/sketch/check-format.js.map +1 -1
  614. package/src/lib/design/system/sketch/check-sketches.d.ts +10 -0
  615. package/src/lib/design/system/sketch/check-sketches.js +50 -4
  616. package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
  617. package/src/lib/design/system/sketch/clean-copy.d.ts +18 -0
  618. package/src/lib/design/system/sketch/clean-copy.js +104 -0
  619. package/src/lib/design/system/sketch/clean-copy.js.map +1 -0
  620. package/src/lib/design/system/sketch/cli-args.d.ts +13 -3
  621. package/src/lib/design/system/sketch/cli-args.js +20 -5
  622. package/src/lib/design/system/sketch/cli-args.js.map +1 -1
  623. package/src/lib/design/system/sketch/covered-diffs.d.ts +40 -0
  624. package/src/lib/design/system/sketch/covered-diffs.js +106 -0
  625. package/src/lib/design/system/sketch/covered-diffs.js.map +1 -0
  626. package/src/lib/design/system/sketch/edit-sketch.d.ts +29 -0
  627. package/src/lib/design/system/sketch/edit-sketch.js +169 -0
  628. package/src/lib/design/system/sketch/edit-sketch.js.map +1 -0
  629. package/src/lib/design/system/sketch/frame-budget.d.ts +24 -0
  630. package/src/lib/design/system/sketch/frame-budget.js +23 -0
  631. package/src/lib/design/system/sketch/frame-budget.js.map +1 -0
  632. package/src/lib/design/system/sketch/identical-renders.d.ts +31 -0
  633. package/src/lib/design/system/sketch/identical-renders.js +143 -0
  634. package/src/lib/design/system/sketch/identical-renders.js.map +1 -0
  635. package/src/lib/design/system/sketch/merge-commit.d.ts +20 -0
  636. package/src/lib/design/system/sketch/merge-commit.js +72 -0
  637. package/src/lib/design/system/sketch/merge-commit.js.map +1 -0
  638. package/src/lib/design/system/sketch/merge-runner.d.ts +20 -0
  639. package/src/lib/design/system/sketch/merge-runner.js +73 -0
  640. package/src/lib/design/system/sketch/merge-runner.js.map +1 -0
  641. package/src/lib/design/system/sketch/merge-shared.d.ts +2 -0
  642. package/src/lib/design/system/sketch/merge-shared.js +7 -10
  643. package/src/lib/design/system/sketch/merge-shared.js.map +1 -1
  644. package/src/lib/design/system/sketch/merge-step.d.ts +47 -0
  645. package/src/lib/design/system/sketch/merge-step.js +110 -0
  646. package/src/lib/design/system/sketch/merge-step.js.map +1 -0
  647. package/src/lib/design/system/sketch/merge-worker.d.ts +1 -0
  648. package/src/lib/design/system/sketch/merge-worker.js +14 -0
  649. package/src/lib/design/system/sketch/merge-worker.js.map +1 -0
  650. package/src/lib/design/system/sketch/merge.d.ts +19 -5
  651. package/src/lib/design/system/sketch/merge.js +245 -82
  652. package/src/lib/design/system/sketch/merge.js.map +1 -1
  653. package/src/lib/design/system/sketch/merged-layout.d.ts +17 -0
  654. package/src/lib/design/system/sketch/merged-layout.js +57 -0
  655. package/src/lib/design/system/sketch/merged-layout.js.map +1 -0
  656. package/src/lib/design/system/sketch/merged-parts.d.ts +31 -30
  657. package/src/lib/design/system/sketch/merged-parts.js +99 -84
  658. package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
  659. package/src/lib/design/system/sketch/no-visible-change.d.ts +10 -0
  660. package/src/lib/design/system/sketch/no-visible-change.js +16 -6
  661. package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
  662. package/src/lib/design/system/sketch/note-language.d.ts +7 -0
  663. package/src/lib/design/system/sketch/note-language.js +83 -0
  664. package/src/lib/design/system/sketch/note-language.js.map +1 -0
  665. package/src/lib/design/system/sketch/part-definition.d.ts +27 -1
  666. package/src/lib/design/system/sketch/part-definition.js +109 -17
  667. package/src/lib/design/system/sketch/part-definition.js.map +1 -1
  668. package/src/lib/design/system/sketch/rebase-port.d.ts +24 -0
  669. package/src/lib/design/system/sketch/rebase-port.js +215 -0
  670. package/src/lib/design/system/sketch/rebase-port.js.map +1 -0
  671. package/src/lib/design/system/sketch/sample-mark-drift.d.ts +33 -0
  672. package/src/lib/design/system/sketch/sample-mark-drift.js +88 -0
  673. package/src/lib/design/system/sketch/sample-mark-drift.js.map +1 -0
  674. package/src/lib/design/system/sketch/sketch-check-cache.d.ts +11 -0
  675. package/src/lib/design/system/sketch/sketch-check-cache.js +22 -0
  676. package/src/lib/design/system/sketch/sketch-check-cache.js.map +1 -0
  677. package/src/lib/design/system/sketch/sketch-check-worker.d.ts +1 -0
  678. package/src/lib/design/system/sketch/sketch-check-worker.js +32 -0
  679. package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -0
  680. package/src/lib/design/system/sketch/sketch-checker.d.ts +40 -0
  681. package/src/lib/design/system/sketch/sketch-checker.js +109 -0
  682. package/src/lib/design/system/sketch/sketch-checker.js.map +1 -0
  683. package/src/lib/design/system/sketch/sketch.d.ts +100 -8
  684. package/src/lib/design/system/sketch/sketch.js +279 -36
  685. package/src/lib/design/system/sketch/sketch.js.map +1 -1
  686. package/src/lib/design/system/sketch/stale-base.d.ts +22 -0
  687. package/src/lib/design/system/sketch/stale-base.js +56 -0
  688. package/src/lib/design/system/sketch/stale-base.js.map +1 -0
  689. package/src/lib/design/system/sketch/unchanged-states.d.ts +39 -3
  690. package/src/lib/design/system/sketch/unchanged-states.js +75 -23
  691. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
  692. package/src/lib/design/system/sketch/unused-closure.js +16 -4
  693. package/src/lib/design/system/sketch/unused-closure.js.map +1 -1
  694. package/src/lib/design/system/sketch/viewed-shots.d.ts +32 -0
  695. package/src/lib/design/system/sketch/viewed-shots.js +54 -0
  696. package/src/lib/design/system/sketch/viewed-shots.js.map +1 -0
  697. package/src/lib/design/system/skip-classes.d.ts +3 -0
  698. package/src/lib/design/system/skip-classes.js +17 -0
  699. package/src/lib/design/system/skip-classes.js.map +1 -0
  700. package/src/lib/design/system/slot-hosts.d.ts +38 -0
  701. package/src/lib/design/system/slot-hosts.js +93 -0
  702. package/src/lib/design/system/slot-hosts.js.map +1 -0
  703. package/src/lib/design/system/slow-checks.d.ts +44 -0
  704. package/src/lib/design/system/slow-checks.js +250 -0
  705. package/src/lib/design/system/slow-checks.js.map +1 -0
  706. package/src/lib/design/system/slow-run.d.ts +67 -0
  707. package/src/lib/design/system/slow-run.js +312 -0
  708. package/src/lib/design/system/slow-run.js.map +1 -0
  709. package/src/lib/design/system/stale-design-mocks.d.ts +20 -0
  710. package/src/lib/design/system/stale-design-mocks.js +59 -0
  711. package/src/lib/design/system/stale-design-mocks.js.map +1 -0
  712. package/src/lib/design/system/stale-dist.d.ts +61 -0
  713. package/src/lib/design/system/stale-dist.js +141 -0
  714. package/src/lib/design/system/stale-dist.js.map +1 -0
  715. package/src/lib/design/system/stale-parts.d.ts +45 -0
  716. package/src/lib/design/system/stale-parts.js +168 -0
  717. package/src/lib/design/system/stale-parts.js.map +1 -0
  718. package/src/lib/design/system/surface-nesting.d.ts +11 -0
  719. package/src/lib/design/system/surface-nesting.js +86 -0
  720. package/src/lib/design/system/surface-nesting.js.map +1 -0
  721. package/src/lib/design/system/system-command.js +11 -9
  722. package/src/lib/design/system/system-command.js.map +1 -1
  723. package/src/lib/design/system/system-modules.d.ts +17 -2
  724. package/src/lib/design/system/system-modules.js +18 -2
  725. package/src/lib/design/system/system-modules.js.map +1 -1
  726. package/src/lib/design/system/system-tsconfig.d.ts +9 -2
  727. package/src/lib/design/system/system-tsconfig.js +73 -13
  728. package/src/lib/design/system/system-tsconfig.js.map +1 -1
  729. package/src/lib/design/system/task-command.d.ts +52 -0
  730. package/src/lib/design/system/task-command.js +271 -0
  731. package/src/lib/design/system/task-command.js.map +1 -0
  732. package/src/lib/design/system/theming-text.d.ts +2 -0
  733. package/src/lib/design/system/theming-text.js +6 -0
  734. package/src/lib/design/system/theming-text.js.map +1 -0
  735. package/src/lib/design/system/touched-parts.d.ts +16 -0
  736. package/src/lib/design/system/touched-parts.js +121 -0
  737. package/src/lib/design/system/touched-parts.js.map +1 -0
  738. package/src/lib/design/system/tracked-reads.d.ts +27 -0
  739. package/src/lib/design/system/tracked-reads.js +100 -0
  740. package/src/lib/design/system/tracked-reads.js.map +1 -0
  741. package/src/lib/design/system/ts-source.d.ts +2 -0
  742. package/src/lib/design/system/ts-source.js +15 -1
  743. package/src/lib/design/system/ts-source.js.map +1 -1
  744. package/src/lib/design/system/unchanged-rows.d.ts +24 -0
  745. package/src/lib/design/system/unchanged-rows.js +212 -0
  746. package/src/lib/design/system/unchanged-rows.js.map +1 -0
  747. package/src/lib/design/system/uncommitted-decisions.d.ts +4 -0
  748. package/src/lib/design/system/uncommitted-decisions.js +35 -0
  749. package/src/lib/design/system/uncommitted-decisions.js.map +1 -0
  750. package/src/lib/design/system/uncovered-regions.d.ts +61 -0
  751. package/src/lib/design/system/uncovered-regions.js +171 -0
  752. package/src/lib/design/system/uncovered-regions.js.map +1 -0
  753. package/src/lib/design/system/unused-base-parts.d.ts +7 -0
  754. package/src/lib/design/system/unused-base-parts.js +76 -0
  755. package/src/lib/design/system/unused-base-parts.js.map +1 -0
  756. package/src/lib/design/system/visible-change-command.d.ts +60 -0
  757. package/src/lib/design/system/visible-change-command.js +310 -0
  758. package/src/lib/design/system/visible-change-command.js.map +1 -0
  759. package/src/lib/design/system/visible-change-parts.d.ts +28 -0
  760. package/src/lib/design/system/visible-change-parts.js +96 -0
  761. package/src/lib/design/system/visible-change-parts.js.map +1 -0
  762. package/src/lib/design/system/visible-change.d.ts +82 -0
  763. package/src/lib/design/system/visible-change.js +149 -0
  764. package/src/lib/design/system/visible-change.js.map +1 -0
  765. package/src/lib/design/system/write-origin.d.ts +12 -0
  766. package/src/lib/design/system/write-origin.js +18 -0
  767. package/src/lib/design/system/write-origin.js.map +1 -0
  768. package/src/lib/design/system-use.js +4 -4
  769. package/src/lib/design/system-use.js.map +1 -1
  770. package/src/lib/design/thumb.d.ts +37 -4
  771. package/src/lib/design/thumb.js +118 -21
  772. package/src/lib/design/thumb.js.map +1 -1
  773. package/src/lib/design/timings-command.d.ts +22 -0
  774. package/src/lib/design/timings-command.js +175 -0
  775. package/src/lib/design/timings-command.js.map +1 -0
  776. package/src/lib/design/timings.d.ts +117 -0
  777. package/src/lib/design/timings.js +296 -0
  778. package/src/lib/design/timings.js.map +1 -0
  779. package/src/lib/design/typecheck.d.ts +1 -1
  780. package/src/lib/design/typecheck.js +5 -5
  781. package/src/lib/design/typecheck.js.map +1 -1
  782. package/src/lib/design/unstable-cells.d.ts +23 -0
  783. package/src/lib/design/unstable-cells.js +40 -0
  784. package/src/lib/design/unstable-cells.js.map +1 -0
  785. package/src/lib/design/variant-diff.js +1 -1
  786. package/src/lib/design/variant-diff.js.map +1 -1
  787. package/src/lib/design/vite-cache.d.ts +11 -0
  788. package/src/lib/design/vite-cache.js +61 -0
  789. package/src/lib/design/vite-cache.js.map +1 -0
  790. package/src/lib/design/wait.d.ts +15 -0
  791. package/src/lib/design/wait.js +30 -0
  792. package/src/lib/design/wait.js.map +1 -0
  793. package/src/lib/design/warm-draw.d.ts +33 -0
  794. package/src/lib/design/warm-draw.js +74 -0
  795. package/src/lib/design/warm-draw.js.map +1 -0
  796. package/src/lib/design/warm-pages.d.ts +10 -2
  797. package/src/lib/design/warm-pages.js +6 -2
  798. package/src/lib/design/warm-pages.js.map +1 -1
  799. package/src/lib/design/work-root.d.ts +2 -0
  800. package/src/lib/design/work-root.js +8 -0
  801. package/src/lib/design/work-root.js.map +1 -0
  802. package/src/lib/json-file.d.ts +11 -0
  803. package/src/lib/json-file.js +21 -0
  804. package/src/lib/json-file.js.map +1 -0
  805. package/src/lib/plain-output.d.ts +27 -0
  806. package/src/lib/plain-output.js +66 -0
  807. package/src/lib/plain-output.js.map +1 -0
  808. package/src/lib/release.js +11 -3
  809. package/src/lib/release.js.map +1 -1
  810. package/src/lib/source-hash.d.ts +7 -0
  811. package/src/lib/source-hash.js +62 -0
  812. package/src/lib/source-hash.js.map +1 -0
  813. package/src/lib/update/agent-setup.js +2 -1
  814. package/src/lib/update/agent-setup.js.map +1 -1
  815. package/src/lib/update/commits.js +2 -2
  816. package/src/lib/update/commits.js.map +1 -1
  817. package/src/lib/update/migration-manifest.d.ts +12 -0
  818. package/src/lib/update/migration-manifest.js +13 -0
  819. package/src/lib/update/migration-manifest.js.map +1 -1
  820. package/src/lib/update/migration-record.js +2 -1
  821. package/src/lib/update/migration-record.js.map +1 -1
  822. package/src/lib/update/packages.js +4 -2
  823. package/src/lib/update/packages.js.map +1 -1
  824. package/src/lib/update/pending.js +2 -1
  825. package/src/lib/update/pending.js.map +1 -1
  826. package/src/lib/update/run-migrations.d.ts +3 -2
  827. package/src/lib/update/run-migrations.js +38 -5
  828. package/src/lib/update/run-migrations.js.map +1 -1
  829. package/src/lib/update/scan.js +8 -2
  830. package/src/lib/update/scan.js.map +1 -1
  831. package/src/lib/update/tasks.js +2 -1
  832. package/src/lib/update/tasks.js.map +1 -1
  833. package/src/lib/design/paths.js +0 -138
  834. package/src/lib/design/paths.js.map +0 -1
  835. package/src/lib/design/system/accept-command.d.ts +0 -7
  836. package/src/lib/design/system/accept-command.js +0 -55
  837. package/src/lib/design/system/accept-command.js.map +0 -1
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  var __rest = (this && this.__rest) || function (s, e) {
3
12
  var t = {};
4
13
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -11,9 +20,12 @@ var __rest = (this && this.__rest) || function (s, e) {
11
20
  return t;
12
21
  };
13
22
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.editRound = exports.editVariantNote = exports.addVariant = exports.rebaseSketch = exports.decideSketch = exports.releaseSketch = exports.holdSketch = exports.heldProblemOf = exports.markSketchReady = exports.finishSketchReport = exports.clearSketchReport = exports.readSketchReport = exports.reportSketch = exports.sketchReportPath = exports.withAuthor = exports.addTarget = exports.createSketch = exports.sketchSourceOf = exports.writeSketchFile = exports.findSketch = exports.listSketches = exports.readSketch = exports.authorsOf = exports.rejectedProblemOf = exports.rejectionOf = exports.runningRoundOf = exports.isVariantName = exports.parseTarget = exports.sourceFilesIn = exports.variantSharedDirOf = exports.sharedDirOf = exports.SHARED_FOLDER = exports.variantDirOf = exports.sketchDirOf = exports.sketchFolderOf = exports.sketchesDirOf = exports.SKETCH_FILE = exports.SKETCH_MERGES = exports.SKETCH_STATUSES = void 0;
23
+ exports.addVariant = exports.rebaseSketch = exports.decideSketch = exports.withdrawVariant = exports.releaseSketch = exports.holdSketch = exports.heldProblemOf = exports.reopenChangedReady = exports.variantContentHashOf = exports.markSketchReady = exports.finishSketchReport = exports.clearSketchReport = exports.readSketchReport = exports.reportSketch = exports.sketchReportPath = exports.withAuthor = exports.removeTarget = exports.addTarget = exports.createSketch = exports.sketchSourceOf = exports.writeSketchFile = exports.findSketch = exports.listSketchesInTurns = exports.listSketches = exports.readSketch = exports.authorsOf = exports.rejectedProblemOf = exports.rejectionOf = exports.runningRoundOf = exports.removeSketchDir = exports.isVariantName = exports.sketchIdOfName = exports.parseTarget = exports.rewriteSharedImports = exports.rebaseOutsideImports = exports.relativeSpecifierOf = exports.withSharedImports = exports.sourceFilesIn = exports.SOURCE_FILE = exports.variantSharedDirOf = exports.sharedDirOf = exports.SHARED_FOLDER = exports.variantDirOf = exports.sketchDirOf = exports.sketchIdOf = exports.sketchFolderOf = exports.sketchesDirOf = exports.SKETCH_FILE = exports.SKETCH_MERGES = exports.SKETCH_STATUSES = void 0;
24
+ exports.editRound = exports.editVariantNote = void 0;
25
+ const crypto_1 = require("crypto");
15
26
  const fs_1 = require("fs");
16
27
  const path_1 = require("path");
28
+ const promises_1 = require("timers/promises");
17
29
  const json_layout_1 = require("../../json-layout");
18
30
  const status_1 = require("../../status");
19
31
  const assets_1 = require("../assets");
@@ -23,6 +35,7 @@ const base_1 = require("../base");
23
35
  const layers_1 = require("../layers");
24
36
  const resolve_product_1 = require("../resolve-product");
25
37
  const baseline_1 = require("./baseline");
38
+ const write_origin_1 = require("../write-origin");
26
39
  const part_definition_1 = require("./part-definition");
27
40
  exports.SKETCH_STATUSES = ['in progress', 'ready'];
28
41
  exports.SKETCH_MERGES = ['override', 'into-base'];
@@ -30,8 +43,10 @@ const NAME = /^[a-z0-9][a-z0-9-]*$/u;
30
43
  exports.SKETCH_FILE = 'sketch.json';
31
44
  const sketchesDirOf = (productDir) => (0, path_1.resolve)(productDir, 'sketches');
32
45
  exports.sketchesDirOf = sketchesDirOf;
33
- const sketchFolderOf = (target) => `${target.layer}-${target.name}`;
46
+ const sketchFolderOf = (target) => `${target.layer}-${target.name}${target.sketch ? `.${target.sketch}` : ''}`;
34
47
  exports.sketchFolderOf = sketchFolderOf;
48
+ const sketchIdOf = (target) => `${(0, resolve_product_1.partKeyOf)(target)}${target.sketch ? `@${target.sketch}` : ''}`;
49
+ exports.sketchIdOf = sketchIdOf;
35
50
  const sketchDirOf = (options) => (0, path_1.resolve)((0, exports.sketchesDirOf)(options.productDir), (0, exports.sketchFolderOf)(options.sketch));
36
51
  exports.sketchDirOf = sketchDirOf;
37
52
  const variantDirOf = (sketch, variant) => (0, path_1.resolve)(sketch.dir, variant);
@@ -41,29 +56,72 @@ exports.sharedDirOf = sharedDirOf;
41
56
  /** A variant's own `shared/` folder: a file there wins over the sketch's `shared/` file of the same path. */
42
57
  const variantSharedDirOf = (sketch, variant) => (0, path_1.resolve)((0, exports.variantDirOf)(sketch, variant), imports_1.SHARED_FOLDER);
43
58
  exports.variantSharedDirOf = variantSharedDirOf;
44
- const SOURCE = /\.(?:ts|js|mjs)$/u;
59
+ exports.SOURCE_FILE = /\.(?:ts|js|mjs)$/u;
45
60
  const sourceFilesIn = (dir) => (0, fs_1.existsSync)(dir)
46
61
  ? (0, fs_1.readdirSync)(dir, { recursive: true })
47
- .filter((path) => SOURCE.test(path))
62
+ .filter((path) => exports.SOURCE_FILE.test(path))
48
63
  .map((path) => (0, path_1.resolve)(dir, path))
49
64
  : [];
50
65
  exports.sourceFilesIn = sourceFilesIn;
51
- const liftShared = (options) => {
52
- const { partDir, sketchSharedDir } = options;
66
+ /** `source`, the file `file` of the part in `partDir`, with its relative imports of the part's own `shared/` folder as `@shared/`. */
67
+ const withSharedImports = (options) => {
68
+ const { source, file, partDir } = options;
53
69
  const shared = (0, path_1.resolve)(partDir, imports_1.SHARED_FOLDER);
54
- if (!(0, fs_1.existsSync)(shared))
55
- return;
56
- for (const file of (0, exports.sourceFilesIn)(partDir)) {
70
+ return source.replace(/(['"])(\.{1,2}\/[^'"]+)\1/gu, (...[match = '', quote = '', specifier = '']) => {
71
+ const path = (0, path_1.relative)(shared, (0, path_1.resolve)((0, path_1.dirname)(file), specifier));
72
+ return path.startsWith('..') || (0, path_1.isAbsolute)(path)
73
+ ? match
74
+ : `${quote}${imports_1.SHARED_PREFIX}${path.split(path_1.sep).join('/')}${quote}`;
75
+ });
76
+ };
77
+ exports.withSharedImports = withSharedImports;
78
+ const insideOf = (dir, path) => {
79
+ const rest = (0, path_1.relative)(dir, path);
80
+ return !rest.startsWith('..') && !(0, path_1.isAbsolute)(rest);
81
+ };
82
+ const relativeSpecifierOf = (options) => {
83
+ const path = (0, path_1.relative)((0, path_1.dirname)(options.from), options.to).split(path_1.sep).join('/');
84
+ return path.startsWith('.') ? path : `./${path}`;
85
+ };
86
+ exports.relativeSpecifierOf = relativeSpecifierOf;
87
+ /**
88
+ * Rewrites the relative imports of the files in `dir`, a copy of the folder `from`, that leave `from` - and `within`,
89
+ * when given - so they reach the same files from `dir`.
90
+ */
91
+ const rebaseOutsideImports = (options) => {
92
+ const { dir, from, within, settledIn, skip } = options;
93
+ for (const file of (0, exports.sourceFilesIn)(dir)) {
94
+ if (skip !== undefined && insideOf((0, path_1.resolve)(dir, skip), file))
95
+ continue;
96
+ const original = (0, path_1.resolve)(from, (0, path_1.relative)(dir, file));
57
97
  const source = (0, fs_1.readFileSync)(file, 'utf8');
58
98
  const rewritten = source.replace(/(['"])(\.{1,2}\/[^'"]+)\1/gu, (...[match = '', quote = '', specifier = '']) => {
59
- const path = (0, path_1.relative)(shared, (0, path_1.resolve)((0, path_1.dirname)(file), specifier));
60
- return path.startsWith('..') || (0, path_1.isAbsolute)(path)
99
+ const path = (0, path_1.resolve)((0, path_1.dirname)(original), specifier);
100
+ return insideOf(from, path) || (within !== undefined && insideOf(within, path))
61
101
  ? match
62
- : `${quote}${imports_1.SHARED_PREFIX}${path.split(path_1.sep).join('/')}${quote}`;
102
+ : `${quote}${(0, exports.relativeSpecifierOf)({ from: settledIn ? (0, path_1.resolve)(settledIn, (0, path_1.relative)(dir, file)) : file, to: path })}${quote}`;
63
103
  });
64
104
  if (rewritten !== source)
65
105
  (0, fs_1.writeFileSync)(file, rewritten);
66
106
  }
107
+ };
108
+ exports.rebaseOutsideImports = rebaseOutsideImports;
109
+ /** Rewrites the relative imports of the part's own `shared/` folder in its files to `@shared/`. */
110
+ const rewriteSharedImports = (partDir) => {
111
+ for (const file of (0, exports.sourceFilesIn)(partDir)) {
112
+ const source = (0, fs_1.readFileSync)(file, 'utf8');
113
+ const rewritten = (0, exports.withSharedImports)({ source, file, partDir });
114
+ if (rewritten !== source)
115
+ (0, fs_1.writeFileSync)(file, rewritten);
116
+ }
117
+ };
118
+ exports.rewriteSharedImports = rewriteSharedImports;
119
+ const liftShared = (options) => {
120
+ const { partDir, sketchSharedDir } = options;
121
+ const shared = (0, path_1.resolve)(partDir, imports_1.SHARED_FOLDER);
122
+ if (!(0, fs_1.existsSync)(shared))
123
+ return;
124
+ (0, exports.rewriteSharedImports)(partDir);
67
125
  (0, fs_1.cpSync)(shared, sketchSharedDir, { recursive: true });
68
126
  (0, fs_1.rmSync)(shared, { recursive: true });
69
127
  };
@@ -86,12 +144,25 @@ const sharedClashOf = (parts) => {
86
144
  };
87
145
  /** Reads `<layer>/<name>` as a sketch target, or answers with why it is not one. */
88
146
  const parseTarget = (value) => {
89
- const [layer = '', name = '', ...rest] = (value !== null && value !== void 0 ? value : '').split('/');
90
- if (!(0, layers_1.isLayer)(layer) || !NAME.test(name) || rest.length > 0)
91
- return `"${value !== null && value !== void 0 ? value : ''}" is no target - pass <layer>/<name>, the layer one of foundations, components, elements, pages`;
92
- return { layer, name };
147
+ const [asked = '', sketch, ...more] = (value !== null && value !== void 0 ? value : '').split('@');
148
+ const [layer = '', name = '', ...rest] = asked.split('/');
149
+ if (!(0, layers_1.isLayer)(layer) ||
150
+ !NAME.test(name) ||
151
+ rest.length > 0 ||
152
+ more.length > 0 ||
153
+ (sketch !== undefined && !NAME.test(sketch)))
154
+ return `"${value !== null && value !== void 0 ? value : ''}" is no target - pass <layer>/<name>[@<sketch name>], the layer one of foundations, components, elements, pages`;
155
+ return sketch === undefined ? { layer, name } : { layer, name, sketch };
93
156
  };
94
157
  exports.parseTarget = parseTarget;
158
+ /** Reads a sketch id (`<layer>/<name>[@<sketch>]`), `<layer>/<name>.<sketch>` or a sketch folder name (`<layer>-<name>[.<sketch>]`) as a sketch id, or `null` when it is none of them. */
159
+ const sketchIdOfName = (value) => {
160
+ const dotted = value.includes('/')
161
+ ? value.replace(/\.([^./@]+)$/u, '@$1')
162
+ : value.replace(/^([^-/]+)-/u, '$1/').replace(/\.([^./@]+)$/u, '@$1');
163
+ return typeof (0, exports.parseTarget)(dotted) === 'string' ? null : dotted;
164
+ };
165
+ exports.sketchIdOfName = sketchIdOfName;
95
166
  const isVariantName = (name) => NAME.test(name) && name !== imports_1.SHARED_FOLDER;
96
167
  exports.isVariantName = isVariantName;
97
168
  const foldersOf = (dir) => (0, fs_1.existsSync)(dir)
@@ -99,6 +170,18 @@ const foldersOf = (dir) => (0, fs_1.existsSync)(dir)
99
170
  .filter((name) => { var _a; return (_a = (0, fs_1.statSync)((0, path_1.resolve)(dir, name), { throwIfNoEntry: false })) === null || _a === void 0 ? void 0 : _a.isDirectory(); })
100
171
  .sort()
101
172
  : [];
173
+ const GENERATED_FILE = 'tsconfig.json';
174
+ const holdsFiles = (dir) => (0, fs_1.readdirSync)(dir, { recursive: true, withFileTypes: true }).some((entry) => entry.isFile() && !(entry.name === GENERATED_FILE && (0, path_1.resolve)(entry.parentPath) === (0, path_1.resolve)(dir)));
175
+ const sketchFoldersOf = (productDir) => foldersOf((0, exports.sketchesDirOf)(productDir)).filter((folder) => holdsFiles((0, path_1.resolve)((0, exports.sketchesDirOf)(productDir), folder)));
176
+ const isOpenSketchDir = (dir) => (0, fs_1.existsSync)(dir) && holdsFiles(dir);
177
+ /** Deletes a sketch folder, then its `sketches/` folder when nothing else is left in it. */
178
+ const removeSketchDir = (dir) => {
179
+ (0, fs_1.rmSync)(dir, { recursive: true, force: true });
180
+ const parent = (0, path_1.resolve)(dir, '..');
181
+ if ((0, fs_1.existsSync)(parent) && (0, fs_1.readdirSync)(parent).length === 0)
182
+ (0, fs_1.rmSync)(parent, { recursive: true, force: true });
183
+ };
184
+ exports.removeSketchDir = removeSketchDir;
102
185
  const isStatus = (value) => exports.SKETCH_STATUSES.includes(value);
103
186
  const isAuthors = (value) => value === undefined || (Array.isArray(value) && value.every((author) => typeof author === 'string' && author !== ''));
104
187
  const isVariantInfo = (value) => typeof value === 'object' &&
@@ -128,6 +211,8 @@ const isRejection = (value) => {
128
211
  typeof rejection.decidedAt === 'string' &&
129
212
  isOptionalText(rejection.reason) &&
130
213
  (rejection.reasonBy === undefined || isVerdictBy(rejection.reasonBy)) &&
214
+ (rejection.status === undefined || rejection.status === 'withdrawn') &&
215
+ (rejection.withdrawnBy === undefined || typeof rejection.withdrawnBy === 'string') &&
131
216
  (rejection.reopened === undefined || isReopening(rejection.reopened)));
132
217
  };
133
218
  const isRejections = (value) => typeof value === 'object' &&
@@ -154,6 +239,24 @@ const isHold = (value) => {
154
239
  typeof hold.by === 'string' &&
155
240
  typeof hold.heldAt === 'string');
156
241
  };
242
+ const isStringList = (value) => Array.isArray(value) && value.every((entry) => typeof entry === 'string');
243
+ const isMergeHold = (value) => {
244
+ const hold = value;
245
+ return (typeof hold === 'object' &&
246
+ hold !== null &&
247
+ typeof hold.reason === 'string' &&
248
+ typeof hold.at === 'string' &&
249
+ (hold.dirty === undefined || isStringList(hold.dirty)));
250
+ };
251
+ const isPortMark = (value) => {
252
+ const mark = value;
253
+ return (typeof mark === 'object' &&
254
+ mark !== null &&
255
+ isStringList(mark.merged) &&
256
+ isStringList(mark.parts) &&
257
+ isStringList(mark.reasons) &&
258
+ typeof mark.at === 'string');
259
+ };
157
260
  const FIRST_ROUND = 'r1';
158
261
  const firstRoundOf = (title = '', note = '') => ({ key: FIRST_ROUND, title, note: note.trim() });
159
262
  const nextRoundKeyOf = (rounds) => `r${Math.max(0, ...rounds.map((round) => { var _a, _b; return Number((_b = (_a = /^r(\d+)$/u.exec(round.key)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : 0); })) + 1}`;
@@ -207,7 +310,7 @@ const readSketch = (options) => {
207
310
  if (parsed.variantInfo !== undefined && !isVariantInfo(parsed.variantInfo))
208
311
  return `${file}: variantInfo must be { <variant>: { authors?: string[], round?: string, note?: string } }`;
209
312
  if (parsed.rejections !== undefined && !isRejections(parsed.rejections))
210
- return `${file}: rejections must be { <variant>: [{ by: designer | agent, decidedAt, reason?, reasonBy?, reopened?: { by, decidedAt, reason? } }] }, each but the last reopened`;
313
+ return `${file}: rejections must be { <variant>: [{ by: designer | agent, decidedAt, reason?, reasonBy?, status?: withdrawn, withdrawnBy?, reopened?: { by, decidedAt, reason? } }] }, each but the last reopened`;
211
314
  if (parsed.rounds !== undefined && !isRounds(parsed.rounds))
212
315
  return `${file}: rounds must be a non-empty list of { key, title, note } with unique keys`;
213
316
  if (parsed.merge !== undefined && !exports.SKETCH_MERGES.includes(parsed.merge))
@@ -216,6 +319,17 @@ const readSketch = (options) => {
216
319
  return `${file}: hold must be { until, by, heldAt }`;
217
320
  if (parsed.hold !== undefined && parsed.status !== 'in progress')
218
321
  return `${file}: a held sketch must be in progress`;
322
+ if (parsed.readyContent !== undefined &&
323
+ (!parsed.readyContent ||
324
+ typeof parsed.readyContent !== 'object' ||
325
+ Object.values(parsed.readyContent).some((hash) => typeof hash !== 'string')))
326
+ return `${file}: readyContent must be { <variant>: <content hash> }`;
327
+ if (parsed.portAfterMerge !== undefined && !isPortMark(parsed.portAfterMerge))
328
+ return `${file}: portAfterMerge must be { merged: string[], parts: string[], reasons: string[], at }`;
329
+ if (parsed.mergeHold !== undefined && !isMergeHold(parsed.mergeHold))
330
+ return `${file}: mergeHold must be { reason, at }`;
331
+ if (parsed.covers !== undefined && !isStringList(parsed.covers))
332
+ return `${file}: covers must be a list of <state> or <state>@<x>,<y>,<w>,<h>`;
219
333
  const rounds = (_b = parsed.rounds) !== null && _b !== void 0 ? _b : [firstRoundOf()];
220
334
  const running = (0, exports.runningRoundOf)({ rounds }).key;
221
335
  const variants = foldersOf(dir).filter((folder) => folder !== imports_1.SHARED_FOLDER);
@@ -233,20 +347,33 @@ const readSketch = (options) => {
233
347
  };
234
348
  exports.readSketch = readSketch;
235
349
  /** Every sketch folder of a product, read; a folder that cannot be read answers with its problem. */
236
- const listSketches = (options) => foldersOf((0, exports.sketchesDirOf)(options.productDir)).map((folder) => (0, exports.readSketch)({ product: options.product, dir: (0, path_1.resolve)((0, exports.sketchesDirOf)(options.productDir), folder) }));
350
+ const listSketches = (options) => sketchFoldersOf(options.productDir).map((folder) => (0, exports.readSketch)({ product: options.product, dir: (0, path_1.resolve)((0, exports.sketchesDirOf)(options.productDir), folder) }));
237
351
  exports.listSketches = listSketches;
352
+ /** `listSketches`, letting the server answer other requests before each sketch it reads. */
353
+ const listSketchesInTurns = (options) => __awaiter(void 0, void 0, void 0, function* () {
354
+ const listed = [];
355
+ for (const folder of sketchFoldersOf(options.productDir)) {
356
+ yield (0, promises_1.setImmediate)();
357
+ listed.push((0, exports.readSketch)({ product: options.product, dir: (0, path_1.resolve)((0, exports.sketchesDirOf)(options.productDir), folder) }));
358
+ }
359
+ return listed;
360
+ });
361
+ exports.listSketchesInTurns = listSketchesInTurns;
238
362
  /** The open sketch that targets `sketch`, found by its first target or by any other it names; `null` when none does. */
239
363
  const findSketch = (options) => {
240
364
  var _a;
241
365
  const dir = (0, exports.sketchDirOf)(options);
242
- if ((0, fs_1.existsSync)(dir))
366
+ if (isOpenSketchDir(dir))
243
367
  return (0, exports.readSketch)({ product: options.product, dir });
244
368
  const key = (0, resolve_product_1.partKeyOf)(options.sketch);
245
- return ((_a = (0, exports.listSketches)(options).find((sketch) => typeof sketch !== 'string' && sketch.targets.includes(key))) !== null && _a !== void 0 ? _a : null);
369
+ return ((_a = (0, exports.listSketches)(options).find((sketch) => typeof sketch !== 'string' &&
370
+ sketch.targets.includes(key) &&
371
+ parseSketchName(sketch.target) === options.sketch.sketch)) !== null && _a !== void 0 ? _a : null);
246
372
  };
247
373
  exports.findSketch = findSketch;
374
+ const parseSketchName = (target) => target.split('@')[1];
248
375
  const writeSketchFile = (sketch) => {
249
- const file = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ target: (0, resolve_product_1.partKeyOf)(sketch) }, (sketch.targets.length > 1 ? { targets: sketch.targets } : {})), { status: sketch.status, createdAt: sketch.createdAt }), (sketch.baseline ? { baseline: sketch.baseline } : {})), (sketch.decision ? { decision: sketch.decision } : {})), { rounds: sketch.rounds }), (Object.keys(sketch.variantInfo).length > 0 ? { variantInfo: sketch.variantInfo } : {})), (sketch.rejections && Object.keys(sketch.rejections).length > 0 ? { rejections: sketch.rejections } : {})), (sketch.merge ? { merge: sketch.merge } : {})), (sketch.hold ? { hold: sketch.hold } : {}));
376
+ const file = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ target: sketch.target }, (sketch.targets.length > 1 ? { targets: sketch.targets } : {})), { status: sketch.status, createdAt: sketch.createdAt }), (sketch.baseline ? { baseline: sketch.baseline } : {})), (sketch.decision ? { decision: sketch.decision } : {})), { rounds: sketch.rounds }), (Object.keys(sketch.variantInfo).length > 0 ? { variantInfo: sketch.variantInfo } : {})), (sketch.rejections && Object.keys(sketch.rejections).length > 0 ? { rejections: sketch.rejections } : {})), (sketch.merge ? { merge: sketch.merge } : {})), (sketch.hold ? { hold: sketch.hold } : {})), (sketch.readyContent && sketch.status === 'ready' ? { readyContent: sketch.readyContent } : {})), (sketch.covers && sketch.covers.length > 0 ? { covers: sketch.covers } : {})), (sketch.portAfterMerge ? { portAfterMerge: sketch.portAfterMerge } : {})), (sketch.mergeHold && sketch.status === 'ready' ? { mergeHold: sketch.mergeHold } : {}));
250
377
  (0, fs_1.writeFileSync)((0, path_1.resolve)(sketch.dir, exports.SKETCH_FILE), (0, json_layout_1.jsonLayoutOf)(file));
251
378
  };
252
379
  exports.writeSketchFile = writeSketchFile;
@@ -349,13 +476,24 @@ const seedTarget = (options) => {
349
476
  const folder = (0, path_1.resolve)(dir, variant, target.layer, target.name);
350
477
  const existing = product.parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === (0, resolve_product_1.partKeyOf)(target));
351
478
  (0, fs_1.mkdirSync)(folder, { recursive: true });
479
+ const seeded = (from) => {
480
+ const sketchSharedDir = (0, path_1.resolve)(dir, imports_1.SHARED_FOLDER);
481
+ (0, exports.rebaseOutsideImports)({ dir: folder, from, skip: imports_1.SHARED_FOLDER });
482
+ if ((0, fs_1.existsSync)((0, path_1.resolve)(folder, imports_1.SHARED_FOLDER)))
483
+ (0, exports.rebaseOutsideImports)({
484
+ dir: (0, path_1.resolve)(folder, imports_1.SHARED_FOLDER),
485
+ from: (0, path_1.resolve)(from, imports_1.SHARED_FOLDER),
486
+ settledIn: sketchSharedDir,
487
+ });
488
+ liftShared({ partDir: folder, sketchSharedDir });
489
+ };
352
490
  if (like) {
353
491
  copyPartAs({ from: like, to: folder, name: target.name });
354
- liftShared({ partDir: folder, sketchSharedDir: (0, path_1.resolve)(dir, imports_1.SHARED_FOLDER) });
492
+ seeded(like.folder);
355
493
  }
356
494
  else if (existing) {
357
495
  (0, fs_1.cpSync)((0, path_1.resolve)(existing.file, '..'), folder, { recursive: true });
358
- liftShared({ partDir: folder, sketchSharedDir: (0, path_1.resolve)(dir, imports_1.SHARED_FOLDER) });
496
+ seeded((0, path_1.resolve)(existing.file, '..'));
359
497
  }
360
498
  else if (target.layer === 'pages') {
361
499
  const widths = [...new Set(Object.values(product.presets).map((preset) => preset.width))].sort((a, b) => a - b);
@@ -366,28 +504,28 @@ const seedTarget = (options) => {
366
504
  (0, fs_1.writeFileSync)((0, path_1.resolve)(folder, `${target.name}.css`), '');
367
505
  }
368
506
  };
507
+ const alreadySketched = (target) => `${target} already has an open sketch - merge or discard it first, or extract the region into a part and sketch that`;
369
508
  /**
370
509
  * Opens a sketch on a target, in progress, with one folder per variant, all in round 1 and with `author` as their
371
510
  * author. Each variant starts from `like` when given - renamed to the target, without its `madeBy`, and with its
372
511
  * sketch's `shared/` folder - else from the part the product resolves for the target, or from an empty part when the
373
512
  * target is new. A part's own `shared/` folder becomes the sketch's, imported as `@shared/`. A target holds one open
374
- * sketch at a time. Each of `others` joins every variant the same way, as a further target; `like` takes one target only.
513
+ * sketch at a time, or one per sketch name when `sketch.sketch` names it. Each of `others` joins every variant the same way, as a further target; `like` takes one target only.
375
514
  * A target the product overrides in its base needs `merge`: `override` or `into-base`.
376
515
  */
377
516
  const createSketch = (options) => {
378
517
  var _a;
379
518
  const { product, sketch, variants, roundTitle, roundNote, author, like, variantNotes, merge } = options;
380
519
  const dir = (0, exports.sketchDirOf)({ productDir: product.dir, sketch });
381
- const key = (0, resolve_product_1.partKeyOf)(sketch);
382
- const all = [sketch, ...((_a = options.others) !== null && _a !== void 0 ? _a : [])];
520
+ const all = [sketch, ...((_a = options.others) !== null && _a !== void 0 ? _a : []).map((other) => (Object.assign(Object.assign({}, other), { sketch: sketch.sketch })))];
383
521
  const targets = all.map(resolve_product_1.partKeyOf);
384
522
  if (new Set(targets).size !== targets.length)
385
523
  return 'name each target once';
386
524
  if (like && all.length > 1)
387
525
  return '--like starts one target - open a sketch with several targets without it';
388
526
  const taken = all.find((target) => (0, exports.findSketch)({ productDir: product.dir, product: product.name, sketch: target }) !== null);
389
- if ((0, fs_1.existsSync)(dir) || taken)
390
- return `${(0, resolve_product_1.partKeyOf)(taken !== null && taken !== void 0 ? taken : sketch)} already has an open sketch - merge or discard it first`;
527
+ if (isOpenSketchDir(dir) || taken)
528
+ return alreadySketched((0, exports.sketchIdOf)(taken !== null && taken !== void 0 ? taken : sketch));
391
529
  if (variants.length === 0)
392
530
  return 'name at least one variant';
393
531
  const mergeProblem = mergeProblemOf({ product, targets, merge });
@@ -410,7 +548,7 @@ const createSketch = (options) => {
410
548
  }
411
549
  if (like === null || like === void 0 ? void 0 : like.shared)
412
550
  (0, fs_1.cpSync)(like.shared, (0, path_1.resolve)(dir, imports_1.SHARED_FOLDER), { recursive: true });
413
- const created = Object.assign({ target: key, targets, status: 'in progress', createdAt: new Date().toISOString(), baseline: (0, baseline_1.baselineOf)(product), rounds: [firstRoundOf(roundTitle, roundNote)], variantInfo: Object.fromEntries(variants.map((variant) => [
551
+ const created = Object.assign({ target: (0, exports.sketchIdOf)(sketch), targets, status: 'in progress', createdAt: new Date().toISOString(), baseline: (0, baseline_1.baselineOf)(product), rounds: [firstRoundOf(roundTitle, roundNote)], variantInfo: Object.fromEntries(variants.map((variant) => [
414
552
  variant,
415
553
  variantInfoOf({ round: FIRST_ROUND, author, note: variantNotes === null || variantNotes === void 0 ? void 0 : variantNotes.get(variant) }),
416
554
  ])), product: product.name, layer: sketch.layer, name: sketch.name, dir, variants: [...variants].sort() }, (merge ? { merge } : {}));
@@ -427,9 +565,16 @@ const addTarget = (options) => {
427
565
  const key = (0, resolve_product_1.partKeyOf)(part);
428
566
  if (sketch.targets.includes(key))
429
567
  return `${sketch.target} targets ${key} already`;
430
- const taken = (0, exports.findSketch)({ productDir: product.dir, product: product.name, sketch: part });
568
+ const layerProblem = layerProblemOf({ sketch, part });
569
+ if (layerProblem)
570
+ return layerProblem;
571
+ const taken = (0, exports.findSketch)({
572
+ productDir: product.dir,
573
+ product: product.name,
574
+ sketch: Object.assign(Object.assign({}, part), { sketch: parseSketchName(sketch.target) }),
575
+ });
431
576
  if (taken !== null)
432
- return `${key} already has an open sketch - merge or discard it first`;
577
+ return alreadySketched(key);
433
578
  const mergeProblem = mergeProblemOf({ product, targets: [key], merge: sketch.merge });
434
579
  if (mergeProblem)
435
580
  return mergeProblem;
@@ -443,6 +588,34 @@ const addTarget = (options) => {
443
588
  return added;
444
589
  };
445
590
  exports.addTarget = addTarget;
591
+ const layerProblemOf = (options) => {
592
+ const { sketch, part } = options;
593
+ const layers = sketch.targets.map((key) => { var _a; return (_a = key.split('/')[0]) !== null && _a !== void 0 ? _a : ''; }).filter(layers_1.isLayer);
594
+ if (!(0, layers_1.isLayer)(part.layer) ||
595
+ layers.some((layer) => (0, layers_1.mayUse)({ from: layer, to: part.layer }) || (0, layers_1.mayUse)({ from: part.layer, to: layer }))) {
596
+ return undefined;
597
+ }
598
+ const [first = part.layer] = layers;
599
+ return `${sketch.target} cannot target ${(0, resolve_product_1.partKeyOf)(part)} (UPWARD-DEPENDENCY): ${first} may use ${layers_1.LAYER_USES[first].join(', ')}, not ${part.layer}`;
600
+ };
601
+ /**
602
+ * Removes `part` from the targets of an open sketch and deletes its folder in every variant. The first target
603
+ * cannot be removed.
604
+ */
605
+ const removeTarget = (options) => {
606
+ const { sketch, part } = options;
607
+ const key = (0, resolve_product_1.partKeyOf)(part);
608
+ if (!sketch.targets.includes(key))
609
+ return `${sketch.target} does not target ${key}`;
610
+ if (sketch.targets[0] === key)
611
+ return `${key} is the main target of ${sketch.target} - discard the sketch instead`;
612
+ for (const variant of sketch.variants)
613
+ (0, fs_1.rmSync)((0, path_1.resolve)(sketch.dir, variant, part.layer, part.name), { recursive: true, force: true });
614
+ const removed = Object.assign(Object.assign({}, sketch), { targets: sketch.targets.filter((target) => target !== key) });
615
+ (0, exports.writeSketchFile)(removed);
616
+ return removed;
617
+ };
618
+ exports.removeTarget = removeTarget;
446
619
  const reportSlugOf = (sketch) => `sketches/${sketch.product}/${(0, exports.sketchFolderOf)(sketch)}`;
447
620
  /** The sketch with `author` among the authors of `variant`; the same sketch when it is there already. */
448
621
  const withAuthor = (options) => {
@@ -460,16 +633,19 @@ exports.sketchReportPath = sketchReportPath;
460
633
  const REPORT_LIMIT = 400;
461
634
  /**
462
635
  * Records what an agent builds on a variant of a sketch right now ("phone, outline state"), for Studio to show,
463
- * and adds the agent's model id to the variant's authors in `sketch.json` unless it is there already.
636
+ * and adds the agent's model id to the variant's authors in `sketch.json` unless it is there already. A ready sketch
637
+ * refuses a report unless `reopen` moves it back to in progress.
464
638
  */
465
639
  const reportSketch = (options) => {
466
- const { checkout, sketch, variant, author, message } = options;
640
+ const { checkout, sketch, variant, author, message, reopen } = options;
467
641
  if (!sketch.variants.includes(variant))
468
642
  return `${sketch.target} has no variant "${variant}" - it has ${sketch.variants.join(', ') || 'none'}`;
469
643
  if (author.trim() === '')
470
644
  return 'a report needs --by <model id>';
471
645
  if (sketch.status === 'ready' && sketch.decision)
472
646
  return `${sketch.target} is decided (${sketch.decision.kind}) - a report would reopen it, so nothing was recorded`;
647
+ if (sketch.status === 'ready' && !reopen)
648
+ return `${sketch.target} is ready - a report moves it back to in progress, so nothing was recorded; add --reopen if the user asked for a change`;
473
649
  const open = sketch.status === 'ready' ? Object.assign(Object.assign({}, sketch), { status: 'in progress' }) : sketch;
474
650
  const reported = (0, exports.withAuthor)({ sketch: open, variant, author });
475
651
  if (reported !== sketch)
@@ -535,14 +711,51 @@ const markSketchReady = (options) => {
535
711
  .filter((variant) => (0, exports.authorsOf)(sketch, variant).length === 0)
536
712
  .reduce((current, variant) => (0, exports.withAuthor)({ sketch: current, variant, author }), sketch)
537
713
  : sketch;
538
- const ready = Object.assign(Object.assign({}, authored), { status: 'ready' });
714
+ const ready = Object.assign(Object.assign({}, authored), { status: 'ready', readyContent: readyContentOf(sketch) });
539
715
  (0, exports.writeSketchFile)(ready);
540
716
  (0, exports.clearSketchReport)({ checkout, sketch });
541
717
  return ready;
542
718
  };
543
719
  exports.markSketchReady = markSketchReady;
720
+ const filesIn = (dir) => (0, fs_1.existsSync)(dir)
721
+ ? (0, fs_1.readdirSync)(dir, { recursive: true })
722
+ .map((path) => (0, path_1.resolve)(dir, path))
723
+ .filter((file) => (0, fs_1.statSync)(file).isFile())
724
+ : [];
725
+ /** The content hash of every file a variant draws from: its folder and the `shared/` folder of the sketch. */
726
+ const variantContentHashOf = (sketch, variant) => {
727
+ const hash = (0, crypto_1.createHash)('sha256');
728
+ const files = [...filesIn((0, exports.variantDirOf)(sketch, variant)), ...filesIn((0, exports.sharedDirOf)(sketch))].sort();
729
+ for (const file of files)
730
+ hash
731
+ .update(`${(0, path_1.relative)(sketch.dir, file)}\0`)
732
+ .update((0, fs_1.readFileSync)(file))
733
+ .update('\0');
734
+ return hash.digest('hex').slice(0, 16);
735
+ };
736
+ exports.variantContentHashOf = variantContentHashOf;
737
+ const readyContentOf = (sketch) => Object.fromEntries(sketch.variants.map((variant) => [variant, (0, exports.variantContentHashOf)(sketch, variant)]));
738
+ /**
739
+ * Moves an undecided ready sketch back to in progress when a variant changed since `sketch ready` judged it, and
740
+ * answers the changed variants, or `null` when nothing changed or the sketch recorded no content.
741
+ */
742
+ const reopenChangedReady = (sketch) => {
743
+ if (sketch.status !== 'ready' || sketch.decision || !sketch.readyContent)
744
+ return null;
745
+ const judged = sketch.readyContent;
746
+ const changed = sketch.variants.filter((variant) => judged[variant] !== (0, exports.variantContentHashOf)(sketch, variant));
747
+ if (changed.length === 0)
748
+ return null;
749
+ const { readyContent: _readyContent, mergeHold: _mergeHold } = sketch, rest = __rest(sketch, ["readyContent", "mergeHold"]);
750
+ const reopened = Object.assign(Object.assign({}, rest), { status: 'in progress' });
751
+ (0, exports.writeSketchFile)(reopened);
752
+ return { sketch: reopened, changed };
753
+ };
754
+ exports.reopenChangedReady = reopenChangedReady;
544
755
  /** Why a held sketch cannot be ready, or `null` when it holds nothing. */
545
- const heldProblemOf = (sketch) => sketch.hold ? `${sketch.target} is held until: ${sketch.hold.until} - make the change, then sketch release it` : null;
756
+ const heldProblemOf = (sketch) => sketch.hold
757
+ ? `${sketch.target} is held until: ${sketch.hold.until} - make the change, then run \`et design sketch release ${sketch.target} --by <name>\``
758
+ : null;
546
759
  exports.heldProblemOf = heldProblemOf;
547
760
  /**
548
761
  * Holds a sketch until a change that waits on something is made: it goes back to in progress, which drops a pick
@@ -599,6 +812,33 @@ const withVerdict = (sketch, verdict) => {
599
812
  const { decision } = sketch, rest = __rest(sketch, ["decision"]);
600
813
  return Object.assign(Object.assign(Object.assign({}, rest), (decision && !unpicked ? { decision } : {})), { rejections: Object.assign(Object.assign({}, sketch.rejections), { [variant]: next }) });
601
814
  };
815
+ /**
816
+ * Takes a variant out of the open set as `withdrawn` by the agent `by`, with `reason`; refused when `by` did not draw
817
+ * the variant or it is rejected already. Writes sketch.json.
818
+ */
819
+ const withdrawVariant = (options) => {
820
+ var _a, _b;
821
+ const { sketch, variant, by, reason } = options;
822
+ if (!sketch.variants.includes(variant))
823
+ return `${sketch.target} has no variant "${variant}" - it has ${sketch.variants.join(', ')}`;
824
+ if ((0, exports.rejectionOf)(sketch, variant))
825
+ return `${sketch.target} variant ${variant} is rejected or withdrawn already`;
826
+ if (!(0, exports.authorsOf)(sketch, variant).includes(by))
827
+ return `${sketch.target} variant ${variant} was not drawn by ${by}${drawerNote(sketch, variant)} - only its author withdraws it`;
828
+ const withdrawn = withVerdict(sketch, { kind: 'reject', variant, reason, by: 'agent' });
829
+ if (typeof withdrawn === 'string')
830
+ return withdrawn;
831
+ const history = (_b = (_a = withdrawn.rejections) === null || _a === void 0 ? void 0 : _a[variant]) !== null && _b !== void 0 ? _b : [];
832
+ const last = history[history.length - 1];
833
+ const marked = Object.assign(Object.assign({}, withdrawn), { rejections: Object.assign(Object.assign({}, withdrawn.rejections), { [variant]: [...history.slice(0, -1), Object.assign(Object.assign({}, last), { status: 'withdrawn', withdrawnBy: by })] }) });
834
+ (0, exports.writeSketchFile)(marked);
835
+ return marked;
836
+ };
837
+ exports.withdrawVariant = withdrawVariant;
838
+ const drawerNote = (sketch, variant) => {
839
+ const authors = (0, exports.authorsOf)(sketch, variant);
840
+ return authors.length > 0 ? ` (drawn by ${authors.join(', ')})` : '';
841
+ };
602
842
  /**
603
843
  * Records the user's pick or discard on a sketch, the decision Studio writes and the agent acts on, or a verdict on
604
844
  * one variant. A rejected variant cannot be picked; rejecting the picked variant clears the pick.
@@ -611,6 +851,8 @@ const decideSketch = (options) => {
611
851
  (0, exports.writeSketchFile)(judged);
612
852
  return judged;
613
853
  }
854
+ if (!(0, write_origin_1.hasActor)(decision))
855
+ return `${sketch.target}: a ${decision.kind} needs the actor that writes it (by)`;
614
856
  if (decision.kind === 'pick') {
615
857
  if (sketch.status !== 'ready')
616
858
  return `${sketch.target} is ${sketch.status} - a variant is picked once it is ready`;
@@ -630,7 +872,8 @@ exports.decideSketch = decideSketch;
630
872
  * up to date with the parts that changed in the product since the sketch was created.
631
873
  */
632
874
  const rebaseSketch = (options) => {
633
- const rebased = Object.assign(Object.assign({}, options.sketch), { baseline: (0, baseline_1.baselineOf)(options.product) });
875
+ const _a = options.sketch, { portAfterMerge: _ported } = _a, sketch = __rest(_a, ["portAfterMerge"]);
876
+ const rebased = Object.assign(Object.assign({}, sketch), { baseline: (0, baseline_1.baselineOf)(options.product) });
634
877
  (0, exports.writeSketchFile)(rebased);
635
878
  return rebased;
636
879
  };