@ethlete/cli 3.0.0-next.21 → 3.0.0-next.23

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 (340) hide show
  1. package/CHANGELOG.md +198 -0
  2. package/design/assets.d.ts +9 -0
  3. package/design/define-call.ts +20 -11
  4. package/design/define-part.ts +102 -0
  5. package/design/embed-page.ts +70 -0
  6. package/design/interaction-rows.ts +32 -0
  7. package/design/mark-part.ts +66 -0
  8. package/design/svg-asset.ts +36 -0
  9. package/design/systems/config.json +10 -0
  10. package/design/systems/ethlete-components/components/button/button.ts +18 -0
  11. package/design/web/env.d.ts +20 -0
  12. package/design/web/frame.ts +173 -41
  13. package/design/wireframe-kit.ts +386 -0
  14. package/package.json +4 -2
  15. package/playwright/failure-reporter.d.ts +2 -0
  16. package/playwright/failure-reporter.js +1 -0
  17. package/src/index.js.map +1 -1
  18. package/src/lib/api/api-command.js.map +1 -1
  19. package/src/lib/api/api-context.js.map +1 -1
  20. package/src/lib/api/api-state.js.map +1 -1
  21. package/src/lib/api/auth-hint.js.map +1 -1
  22. package/src/lib/api/clear.js.map +1 -1
  23. package/src/lib/api/clone.js.map +1 -1
  24. package/src/lib/api/compose.js.map +1 -1
  25. package/src/lib/api/definition.js.map +1 -1
  26. package/src/lib/api/doctor.js.map +1 -1
  27. package/src/lib/api/fingerprint.js.map +1 -1
  28. package/src/lib/api/git.js.map +1 -1
  29. package/src/lib/api/help.js.map +1 -1
  30. package/src/lib/api/index.js.map +1 -1
  31. package/src/lib/api/load-definitions.js.map +1 -1
  32. package/src/lib/api/lock.js.map +1 -1
  33. package/src/lib/api/parse-argv.js.map +1 -1
  34. package/src/lib/api/ports.js.map +1 -1
  35. package/src/lib/api/resolve-checkout.js.map +1 -1
  36. package/src/lib/api/run-locked.js.map +1 -1
  37. package/src/lib/api/run-ready.js.map +1 -1
  38. package/src/lib/api/run-snapshot.js.map +1 -1
  39. package/src/lib/api/run-status.js.map +1 -1
  40. package/src/lib/api/run.js.map +1 -1
  41. package/src/lib/api/seeds.js.map +1 -1
  42. package/src/lib/api/setup.js.map +1 -1
  43. package/src/lib/api/snapshot.js.map +1 -1
  44. package/src/lib/api/state.js.map +1 -1
  45. package/src/lib/api/suggest.js.map +1 -1
  46. package/src/lib/api/validate-definition.js.map +1 -1
  47. package/src/lib/auth/auth-command.js.map +1 -1
  48. package/src/lib/auth/composer-auth.js.map +1 -1
  49. package/src/lib/auth/composer-repositories.js.map +1 -1
  50. package/src/lib/auth/gitlab-token.js.map +1 -1
  51. package/src/lib/auth/index.js.map +1 -1
  52. package/src/lib/config/diagnose.js.map +1 -1
  53. package/src/lib/config/index.js.map +1 -1
  54. package/src/lib/config/local-config.js.map +1 -1
  55. package/src/lib/design/asset-shot.d.ts +26 -0
  56. package/src/lib/design/asset-shot.js +191 -0
  57. package/src/lib/design/asset-shot.js.map +1 -0
  58. package/src/lib/design/browser.js.map +1 -1
  59. package/src/lib/design/calls-tsconfig.d.ts +14 -1
  60. package/src/lib/design/calls-tsconfig.js +23 -18
  61. package/src/lib/design/calls-tsconfig.js.map +1 -1
  62. package/src/lib/design/calls.d.ts +28 -0
  63. package/src/lib/design/calls.js +58 -0
  64. package/src/lib/design/calls.js.map +1 -0
  65. package/src/lib/design/changed-parts.d.ts +51 -0
  66. package/src/lib/design/changed-parts.js +103 -0
  67. package/src/lib/design/changed-parts.js.map +1 -0
  68. package/src/lib/design/check.js +53 -54
  69. package/src/lib/design/check.js.map +1 -1
  70. package/src/lib/design/contact-sheet.d.ts +86 -0
  71. package/src/lib/design/contact-sheet.js +197 -0
  72. package/src/lib/design/contact-sheet.js.map +1 -0
  73. package/src/lib/design/design-command.js +167 -6
  74. package/src/lib/design/design-command.js.map +1 -1
  75. package/src/lib/design/force-interactions.d.ts +13 -0
  76. package/src/lib/design/force-interactions.js +75 -0
  77. package/src/lib/design/force-interactions.js.map +1 -0
  78. package/src/lib/design/inbox-command.d.ts +21 -0
  79. package/src/lib/design/inbox-command.js +156 -0
  80. package/src/lib/design/inbox-command.js.map +1 -0
  81. package/src/lib/design/index.js.map +1 -1
  82. package/src/lib/design/json-layout.d.ts +5 -0
  83. package/src/lib/design/json-layout.js +41 -0
  84. package/src/lib/design/json-layout.js.map +1 -0
  85. package/src/lib/design/legacy.d.ts +7 -0
  86. package/src/lib/design/legacy.js +23 -8
  87. package/src/lib/design/legacy.js.map +1 -1
  88. package/src/lib/design/merge-compare.d.ts +57 -0
  89. package/src/lib/design/merge-compare.js +80 -0
  90. package/src/lib/design/merge-compare.js.map +1 -0
  91. package/src/lib/design/missing-package.js.map +1 -1
  92. package/src/lib/design/new-call.js.map +1 -1
  93. package/src/lib/design/part-marks.d.ts +12 -0
  94. package/src/lib/design/part-marks.js +38 -0
  95. package/src/lib/design/part-marks.js.map +1 -0
  96. package/src/lib/design/paths.d.ts +35 -2
  97. package/src/lib/design/paths.js +62 -4
  98. package/src/lib/design/paths.js.map +1 -1
  99. package/src/lib/design/product-command.d.ts +38 -0
  100. package/src/lib/design/product-command.js +158 -0
  101. package/src/lib/design/product-command.js.map +1 -0
  102. package/src/lib/design/ready-shots.d.ts +13 -0
  103. package/src/lib/design/ready-shots.js +55 -0
  104. package/src/lib/design/ready-shots.js.map +1 -0
  105. package/src/lib/design/render-fields.js.map +1 -1
  106. package/src/lib/design/render-packages.js.map +1 -1
  107. package/src/lib/design/render-worker.js.map +1 -1
  108. package/src/lib/design/render.d.ts +11 -2
  109. package/src/lib/design/render.js +60 -15
  110. package/src/lib/design/render.js.map +1 -1
  111. package/src/lib/design/serve.d.ts +17 -0
  112. package/src/lib/design/serve.js +487 -103
  113. package/src/lib/design/serve.js.map +1 -1
  114. package/src/lib/design/shot-command.d.ts +100 -0
  115. package/src/lib/design/shot-command.js +453 -0
  116. package/src/lib/design/shot-command.js.map +1 -0
  117. package/src/lib/design/shot.d.ts +97 -0
  118. package/src/lib/design/shot.js +346 -0
  119. package/src/lib/design/shot.js.map +1 -0
  120. package/src/lib/design/sketch-at.d.ts +16 -0
  121. package/src/lib/design/sketch-at.js +34 -0
  122. package/src/lib/design/sketch-at.js.map +1 -0
  123. package/src/lib/design/sketch-command.d.ts +15 -0
  124. package/src/lib/design/sketch-command.js +618 -0
  125. package/src/lib/design/sketch-command.js.map +1 -0
  126. package/src/lib/design/ssr-shims.js.map +1 -1
  127. package/src/lib/design/stamp.js.map +1 -1
  128. package/src/lib/design/status.d.ts +2 -2
  129. package/src/lib/design/status.js +2 -2
  130. package/src/lib/design/status.js.map +1 -1
  131. package/src/lib/design/studio-api.d.ts +112 -0
  132. package/src/lib/design/studio-api.js +489 -0
  133. package/src/lib/design/studio-api.js.map +1 -0
  134. package/src/lib/design/system/accept-command.d.ts +7 -0
  135. package/src/lib/design/system/accept-command.js +55 -0
  136. package/src/lib/design/system/accept-command.js.map +1 -0
  137. package/src/lib/design/system/assets.d.ts +34 -0
  138. package/src/lib/design/system/assets.js +64 -0
  139. package/src/lib/design/system/assets.js.map +1 -0
  140. package/src/lib/design/system/base.d.ts +33 -0
  141. package/src/lib/design/system/base.js +49 -0
  142. package/src/lib/design/system/base.js.map +1 -0
  143. package/src/lib/design/system/check-system.d.ts +23 -0
  144. package/src/lib/design/system/check-system.js +151 -0
  145. package/src/lib/design/system/check-system.js.map +1 -0
  146. package/src/lib/design/system/colour.d.ts +2 -0
  147. package/src/lib/design/system/colour.js +9 -0
  148. package/src/lib/design/system/colour.js.map +1 -0
  149. package/src/lib/design/system/comments/comment.d.ts +196 -0
  150. package/src/lib/design/system/comments/comment.js +332 -0
  151. package/src/lib/design/system/comments/comment.js.map +1 -0
  152. package/src/lib/design/system/comments/complete.d.ts +15 -0
  153. package/src/lib/design/system/comments/complete.js +63 -0
  154. package/src/lib/design/system/comments/complete.js.map +1 -0
  155. package/src/lib/design/system/comments/inbox.d.ts +49 -0
  156. package/src/lib/design/system/comments/inbox.js +100 -0
  157. package/src/lib/design/system/comments/inbox.js.map +1 -0
  158. package/src/lib/design/system/css-source.d.ts +12 -0
  159. package/src/lib/design/system/css-source.js +39 -0
  160. package/src/lib/design/system/css-source.js.map +1 -0
  161. package/src/lib/design/system/flows/flow.d.ts +66 -0
  162. package/src/lib/design/system/flows/flow.js +157 -0
  163. package/src/lib/design/system/flows/flow.js.map +1 -0
  164. package/src/lib/design/system/imports.d.ts +70 -0
  165. package/src/lib/design/system/imports.js +159 -0
  166. package/src/lib/design/system/imports.js.map +1 -0
  167. package/src/lib/design/system/kit.d.ts +4 -0
  168. package/src/lib/design/system/kit.js +51 -0
  169. package/src/lib/design/system/kit.js.map +1 -0
  170. package/src/lib/design/system/layers.d.ts +9 -0
  171. package/src/lib/design/system/layers.js +16 -0
  172. package/src/lib/design/system/layers.js.map +1 -0
  173. package/src/lib/design/system/list-system.d.ts +104 -0
  174. package/src/lib/design/system/list-system.js +212 -0
  175. package/src/lib/design/system/list-system.js.map +1 -0
  176. package/src/lib/design/system/notes/note.d.ts +53 -0
  177. package/src/lib/design/system/notes/note.js +116 -0
  178. package/src/lib/design/system/notes/note.js.map +1 -0
  179. package/src/lib/design/system/part-command.d.ts +7 -0
  180. package/src/lib/design/system/part-command.js +134 -0
  181. package/src/lib/design/system/part-command.js.map +1 -0
  182. package/src/lib/design/system/problem.d.ts +5 -0
  183. package/src/lib/design/system/problem.js +3 -0
  184. package/src/lib/design/system/problem.js.map +1 -0
  185. package/src/lib/design/system/product.d.ts +18 -0
  186. package/src/lib/design/system/product.js +35 -0
  187. package/src/lib/design/system/product.js.map +1 -0
  188. package/src/lib/design/system/render-check.d.ts +45 -0
  189. package/src/lib/design/system/render-check.js +427 -0
  190. package/src/lib/design/system/render-check.js.map +1 -0
  191. package/src/lib/design/system/resolve-product.d.ts +32 -0
  192. package/src/lib/design/system/resolve-product.js +62 -0
  193. package/src/lib/design/system/resolve-product.js.map +1 -0
  194. package/src/lib/design/system/rules/component-copy.d.ts +7 -0
  195. package/src/lib/design/system/rules/component-copy.js +53 -0
  196. package/src/lib/design/system/rules/component-copy.js.map +1 -0
  197. package/src/lib/design/system/rules/flow.d.ts +8 -0
  198. package/src/lib/design/system/rules/flow.js +60 -0
  199. package/src/lib/design/system/rules/flow.js.map +1 -0
  200. package/src/lib/design/system/rules/hard-coded-colour.d.ts +7 -0
  201. package/src/lib/design/system/rules/hard-coded-colour.js +27 -0
  202. package/src/lib/design/system/rules/hard-coded-colour.js.map +1 -0
  203. package/src/lib/design/system/rules/interactions.d.ts +4 -0
  204. package/src/lib/design/system/rules/interactions.js +16 -0
  205. package/src/lib/design/system/rules/interactions.js.map +1 -0
  206. package/src/lib/design/system/rules/kit-outside-pages.d.ts +4 -0
  207. package/src/lib/design/system/rules/kit-outside-pages.js +14 -0
  208. package/src/lib/design/system/rules/kit-outside-pages.js.map +1 -0
  209. package/src/lib/design/system/rules/motion.d.ts +4 -0
  210. package/src/lib/design/system/rules/motion.js +13 -0
  211. package/src/lib/design/system/rules/motion.js.map +1 -0
  212. package/src/lib/design/system/rules/stale-comment.d.ts +8 -0
  213. package/src/lib/design/system/rules/stale-comment.js +51 -0
  214. package/src/lib/design/system/rules/stale-comment.js.map +1 -0
  215. package/src/lib/design/system/rules/stale-replace.d.ts +4 -0
  216. package/src/lib/design/system/rules/stale-replace.js +65 -0
  217. package/src/lib/design/system/rules/stale-replace.js.map +1 -0
  218. package/src/lib/design/system/rules/svg-asset.d.ts +6 -0
  219. package/src/lib/design/system/rules/svg-asset.js +30 -0
  220. package/src/lib/design/system/rules/svg-asset.js.map +1 -0
  221. package/src/lib/design/system/rules/token-selectors.d.ts +3 -0
  222. package/src/lib/design/system/rules/token-selectors.js +87 -0
  223. package/src/lib/design/system/rules/token-selectors.js.map +1 -0
  224. package/src/lib/design/system/rules/undefined-token.d.ts +8 -0
  225. package/src/lib/design/system/rules/undefined-token.js +103 -0
  226. package/src/lib/design/system/rules/undefined-token.js.map +1 -0
  227. package/src/lib/design/system/rules/unused-shared-export.d.ts +18 -0
  228. package/src/lib/design/system/rules/unused-shared-export.js +60 -0
  229. package/src/lib/design/system/rules/unused-shared-export.js.map +1 -0
  230. package/src/lib/design/system/rules/upward-dependency.d.ts +4 -0
  231. package/src/lib/design/system/rules/upward-dependency.js +17 -0
  232. package/src/lib/design/system/rules/upward-dependency.js.map +1 -0
  233. package/src/lib/design/system/rules/widths.d.ts +4 -0
  234. package/src/lib/design/system/rules/widths.js +14 -0
  235. package/src/lib/design/system/rules/widths.js.map +1 -0
  236. package/src/lib/design/system/sketch/baseline.d.ts +38 -0
  237. package/src/lib/design/system/sketch/baseline.js +66 -0
  238. package/src/lib/design/system/sketch/baseline.js.map +1 -0
  239. package/src/lib/design/system/sketch/check-format.d.ts +17 -0
  240. package/src/lib/design/system/sketch/check-format.js +56 -0
  241. package/src/lib/design/system/sketch/check-format.js.map +1 -0
  242. package/src/lib/design/system/sketch/check-sketches.d.ts +38 -0
  243. package/src/lib/design/system/sketch/check-sketches.js +104 -0
  244. package/src/lib/design/system/sketch/check-sketches.js.map +1 -0
  245. package/src/lib/design/system/sketch/cli-args.d.ts +26 -0
  246. package/src/lib/design/system/sketch/cli-args.js +63 -0
  247. package/src/lib/design/system/sketch/cli-args.js.map +1 -0
  248. package/src/lib/design/system/sketch/duplicate-class.d.ts +14 -0
  249. package/src/lib/design/system/sketch/duplicate-class.js +57 -0
  250. package/src/lib/design/system/sketch/duplicate-class.js.map +1 -0
  251. package/src/lib/design/system/sketch/merge-preview.d.ts +15 -0
  252. package/src/lib/design/system/sketch/merge-preview.js +43 -0
  253. package/src/lib/design/system/sketch/merge-preview.js.map +1 -0
  254. package/src/lib/design/system/sketch/merge-shared.d.ts +25 -0
  255. package/src/lib/design/system/sketch/merge-shared.js +53 -0
  256. package/src/lib/design/system/sketch/merge-shared.js.map +1 -0
  257. package/src/lib/design/system/sketch/merge.d.ts +31 -0
  258. package/src/lib/design/system/sketch/merge.js +148 -0
  259. package/src/lib/design/system/sketch/merge.js.map +1 -0
  260. package/src/lib/design/system/sketch/merged-parts.d.ts +59 -0
  261. package/src/lib/design/system/sketch/merged-parts.js +134 -0
  262. package/src/lib/design/system/sketch/merged-parts.js.map +1 -0
  263. package/src/lib/design/system/sketch/no-visible-change.d.ts +15 -0
  264. package/src/lib/design/system/sketch/no-visible-change.js +70 -0
  265. package/src/lib/design/system/sketch/no-visible-change.js.map +1 -0
  266. package/src/lib/design/system/sketch/overlay.d.ts +20 -0
  267. package/src/lib/design/system/sketch/overlay.js +38 -0
  268. package/src/lib/design/system/sketch/overlay.js.map +1 -0
  269. package/src/lib/design/system/sketch/part-definition.d.ts +31 -0
  270. package/src/lib/design/system/sketch/part-definition.js +157 -0
  271. package/src/lib/design/system/sketch/part-definition.js.map +1 -0
  272. package/src/lib/design/system/sketch/shared-class.d.ts +9 -0
  273. package/src/lib/design/system/sketch/shared-class.js +65 -0
  274. package/src/lib/design/system/sketch/shared-class.js.map +1 -0
  275. package/src/lib/design/system/sketch/sketch.d.ts +267 -0
  276. package/src/lib/design/system/sketch/sketch.js +568 -0
  277. package/src/lib/design/system/sketch/sketch.js.map +1 -0
  278. package/src/lib/design/system/sketch/unchanged-states.d.ts +23 -0
  279. package/src/lib/design/system/sketch/unchanged-states.js +144 -0
  280. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -0
  281. package/src/lib/design/system/sketch/unused-files.d.ts +10 -0
  282. package/src/lib/design/system/sketch/unused-files.js +56 -0
  283. package/src/lib/design/system/sketch/unused-files.js.map +1 -0
  284. package/src/lib/design/system/system-command.d.ts +9 -0
  285. package/src/lib/design/system/system-command.js +56 -0
  286. package/src/lib/design/system/system-command.js.map +1 -0
  287. package/src/lib/design/system/system-modules.d.ts +58 -0
  288. package/src/lib/design/system/system-modules.js +189 -0
  289. package/src/lib/design/system/system-modules.js.map +1 -0
  290. package/src/lib/design/system/system-tsconfig.d.ts +26 -0
  291. package/src/lib/design/system/system-tsconfig.js +68 -0
  292. package/src/lib/design/system/system-tsconfig.js.map +1 -0
  293. package/src/lib/design/system/ts-source.d.ts +13 -0
  294. package/src/lib/design/system/ts-source.js +108 -0
  295. package/src/lib/design/system/ts-source.js.map +1 -0
  296. package/src/lib/design/system-use.js.map +1 -1
  297. package/src/lib/design/thumb.d.ts +48 -4
  298. package/src/lib/design/thumb.js +127 -37
  299. package/src/lib/design/thumb.js.map +1 -1
  300. package/src/lib/design/typecheck.d.ts +29 -0
  301. package/src/lib/design/typecheck.js +77 -0
  302. package/src/lib/design/typecheck.js.map +1 -0
  303. package/src/lib/design/variant-diff.d.ts +64 -0
  304. package/src/lib/design/variant-diff.js +92 -0
  305. package/src/lib/design/variant-diff.js.map +1 -0
  306. package/src/lib/design/vite-paths.d.ts +2 -0
  307. package/src/lib/design/vite-paths.js +10 -1
  308. package/src/lib/design/vite-paths.js.map +1 -1
  309. package/src/lib/doctor/doctor-command.js.map +1 -1
  310. package/src/lib/doctor/index.js.map +1 -1
  311. package/src/lib/index.js.map +1 -1
  312. package/src/lib/invocation.js +6 -2
  313. package/src/lib/invocation.js.map +1 -1
  314. package/src/lib/playwright/failure-reporter.d.ts +35 -0
  315. package/src/lib/playwright/failure-reporter.js +66 -0
  316. package/src/lib/playwright/failure-reporter.js.map +1 -0
  317. package/src/lib/release.js.map +1 -1
  318. package/src/lib/update/agent-rules-sync.js.map +1 -1
  319. package/src/lib/update/agent-setup.js.map +1 -1
  320. package/src/lib/update/ai.js.map +1 -1
  321. package/src/lib/update/args.js.map +1 -1
  322. package/src/lib/update/available-migrations.js.map +1 -1
  323. package/src/lib/update/commits.js.map +1 -1
  324. package/src/lib/update/gitignore.js.map +1 -1
  325. package/src/lib/update/index.js.map +1 -1
  326. package/src/lib/update/migration-manifest.js.map +1 -1
  327. package/src/lib/update/migration-record.js.map +1 -1
  328. package/src/lib/update/migrations-command.js.map +1 -1
  329. package/src/lib/update/package-manager.d.ts +1 -1
  330. package/src/lib/update/package-manager.js.map +1 -1
  331. package/src/lib/update/packages.js.map +1 -1
  332. package/src/lib/update/pending.js.map +1 -1
  333. package/src/lib/update/plan.js.map +1 -1
  334. package/src/lib/update/registry.js.map +1 -1
  335. package/src/lib/update/run-migrations.js.map +1 -1
  336. package/src/lib/update/scan.js.map +1 -1
  337. package/src/lib/update/semver.js.map +1 -1
  338. package/src/lib/update/tasks.js.map +1 -1
  339. package/src/lib/update/update-command.js.map +1 -1
  340. package/src/lib/utils.js.map +1 -1
@@ -10,27 +10,50 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.designCommand = void 0;
13
+ const fs_1 = require("fs");
13
14
  const path_1 = require("path");
15
+ const accept_command_1 = require("./system/accept-command");
14
16
  const check_1 = require("./check");
17
+ const paths_1 = require("./paths");
18
+ const inbox_command_1 = require("./inbox-command");
15
19
  const legacy_1 = require("./legacy");
16
20
  const new_call_1 = require("./new-call");
21
+ const product_command_1 = require("./product-command");
17
22
  const serve_1 = require("./serve");
23
+ const asset_shot_1 = require("./asset-shot");
24
+ const shot_command_1 = require("./shot-command");
25
+ const sketch_command_1 = require("./sketch-command");
18
26
  const stamp_1 = require("./stamp");
19
27
  const status_1 = require("./status");
28
+ const part_command_1 = require("./system/part-command");
29
+ const system_command_1 = require("./system/system-command");
20
30
  /** Reads `--checkout <path>` out of an argument list, and answers with the path and the rest. */
21
31
  const splitCheckout = (argv, root) => {
22
32
  var _a;
23
33
  const index = argv.indexOf('--checkout');
24
34
  if (index === -1)
25
- return { target: root, rest: argv };
35
+ return { target: (0, paths_1.findCheckoutRoot)(root), rest: argv };
26
36
  return { target: (0, path_1.resolve)(root, (_a = argv[index + 1]) !== null && _a !== void 0 ? _a : '.'), rest: [...argv.slice(0, index), ...argv.slice(index + 2)] };
27
37
  };
28
38
  const helpOf = (invocation) => [
29
- `${invocation} [checkout]`,
30
- ' Serve the variant frames of a checkout. The checkout defaults to the working directory.',
39
+ `${invocation} [checkout] [--host <address>]`,
40
+ ' Serve the variant frames of a checkout. The checkout defaults to the working directory. The server listens on',
41
+ ' localhost; --host (or DE_HOST) names another address, e.g. 0.0.0.0 to reach it over the LAN.',
31
42
  '',
32
43
  `${invocation} check [--lint <file>…] [--tsconfig [path]] [--call <slug> [--variant <key>]]`,
33
- ' Find out why a call does not render: eslint, then tsc, then the live frames.',
44
+ ' Find out why a call does not render: eslint, then tsc, then the live frames. --tsconfig also types each variant',
45
+ ' of an open sketch.',
46
+ '',
47
+ `${invocation} check --product <name>`,
48
+ " Check a product's design system: layer dependencies, hard-coded colours, var() tokens nothing defines,",
49
+ ' copied components, scripted motion, then tsc. Without any flag, check checks every product in config.json.',
50
+ '',
51
+ `${invocation} system --json [--product <name>]`,
52
+ " Print each product's parts as JSON: origin, note, states, widths, presets and the problems of each part.",
53
+ '',
54
+ `${invocation} product new <name> [--base <path|@ethlete/components>] [--from-project <name>]`,
55
+ ' Create a product: its config.json entry and the empty layer folders. Without a base it gets the presets',
56
+ ' phone (390x844) and desktop (1440x900). --from-project copies styles, head, providers and themes.',
34
57
  '',
35
58
  `${invocation} new <project>/<group>/<name> --stage <stage> [--variants a,b] [--feature <name>]`,
36
59
  ' Write a call that renders at once: call.ts, fixture.ts and one variant file per key.',
@@ -44,12 +67,100 @@ const helpOf = (invocation) => [
44
67
  `${invocation} status <slug> <${status_1.CALL_STATES.join('|')}>`,
45
68
  ' Record the state of a call for Ethlete Studio. new and check --call record theirs on their own.',
46
69
  '',
70
+ `${invocation} sketch new <layer>/<name> --variants a,b --by <model id> [--like <layer>/<name>[:<variant>]] [--round <title>] [--note <text>] [--product <name>]`,
71
+ ' Open a sketch on a part, new or existing, in progress. Each variant starts as a copy of the part, or of the part',
72
+ " --like names (a variant of its open sketch after the colon, with that sketch's shared/ folder).",
73
+ " Variants import code from the sketch's shared/ folder as @shared/<path>; a merge moves it into the target.",
74
+ '',
75
+ `${invocation} sketch variant <layer>/<name> <variant> --from <variant> --by <model id> [--round <title> --note <why the running round lost>]`,
76
+ ' Add a variant to the open sketch, as a copy of another, in the running round or a new one.',
77
+ '',
78
+ `${invocation} sketch report <layer>/<name> --variant <key> --by <model id> <text> [--product <name>] | sketch ready <layer>/<name> --by <model id>`,
79
+ ' Tell Studio what you build on a variant now ("phone, outline state"), which also records you as one of its',
80
+ ' authors, then mark the sketch ready for the user to pick.',
81
+ '',
82
+ `${invocation} sketch round <layer>/<name> <round> [--title <text>] [--note <text>] [--drops <state,state>] --by <model id> | sketch list [--json] | sketch check [<layer>/<name>] | sketch preview <layer>/<name> <variant> [--json]`,
83
+ ' List open sketches, check each variant laid over the product, and list the elements and pages a merge changes.',
84
+ '',
85
+ `${invocation} sketch merge <layer>/<name> [--note <reason>] --by <model id> | sketch discard <layer>/<name> --by <model id>`,
86
+ ' Merge the variant the user picked, set the note and madeBy (its authors) on the target, then check and',
87
+ ' restore the old files on failure. Or drop the sketch. Both mark the open comments on its variants addressed. Studio runs',
88
+ " both on the user's click, so an agent runs neither after a pick. Merge refuses without a pick,",
89
+ ' and when a part the variant replaces changed in the product since the sketch was created.',
90
+ '',
91
+ `${invocation} sketch rebase <layer>/<name> --by <model id>`,
92
+ ' After bringing each variant up to date with the product, record the product as it is now for the merge.',
93
+ '',
94
+ `${invocation} ${accept_command_1.ACCEPT_USAGE}`,
95
+ " Record a direct edit of a merged part that the user approved without a sketch: writes the part's hash to",
96
+ ' merged.json, so check stops warning of it, and logs who accepted it and why in accepted.json. Refuses an unknown',
97
+ ' part, a part with an open sketch, and a part with no change outside a sketch.',
98
+ '',
99
+ `${invocation} ${part_command_1.PART_USAGE}`,
100
+ " Delete a part's folder and its merged.json entry, rewrite the product tsconfig paths, and resolve its comments.",
101
+ ' Refuses a base part, a part another part imports, and a part with an open sketch.',
102
+ '',
103
+ `${invocation} ${shot_command_1.SHOT_USAGE}`,
104
+ ' Draw every state of a part, and with --variants every variant of its open sketch, into one contact sheet',
105
+ ' PNG with a label per cell, and print its path. Without --state, --variants alone draws the first state.',
106
+ ' With --variants --at <commit>, the sketch is read from that commit instead, so a merged sketch (its folder',
107
+ ' is deleted at merge) draws again against the part as it is now; pick the last commit that still held it.',
108
+ ' Without --preset or --width, a page draws at its first product preset and any other part fitted.',
109
+ ' With --variants --crop changed, every cell is cut to one box around the pixels any shown variant changes',
110
+ ' from the merged part, plus a margin, and the box is printed for a later --crop x,y,width,height.',
111
+ '',
112
+ `${invocation} ${asset_shot_1.ASSET_SHOT_USAGE}`,
113
+ ' Draw an image file (svg, png, webp, ...) of a path, or of a product assets/ folder with --product, into a PNG',
114
+ ' and print its path. --width sets the drawn width in px.',
115
+ '',
116
+ `${invocation} ${asset_shot_1.TOKEN_USAGE}`,
117
+ ' Print the colour a custom property of the product tokens resolves to, as hex; oklch and color-mix resolve in',
118
+ ' Chromium. The product defaults to the only one of config.json.',
119
+ '',
120
+ `${invocation} inbox [--json] | inbox done <id> --note <text> --by <model id>`,
121
+ ' List open comment threads where the user has the last word and the sketches that need a rebase, oldest first,',
122
+ ' then the threads and the pick and discard decisions waiting for the user. done sets the note of the part the',
123
+ ' thread is about, then marks it addressed. Only the user resolves a thread, in Studio.',
124
+ '',
125
+ `${invocation} comment <layer>/<name> <state> --preset <preset> <text> [--at x,y] [--sketch <layer>/<name> --variant <key>]`,
126
+ ' Write a comment on a state of a part, as Studio does from the canvas.',
127
+ '',
128
+ `${invocation} comment reply <id> --by <model id> <text> [--question]`,
129
+ ' Answer a comment thread as the agent. It then waits for the user until the user replies. --question marks a',
130
+ " reply that needs the user's answer; any other reply leaves the thread answered.",
131
+ '',
132
+ ' sketch and comment take --product <name>; it may be left out when config.json declares one product.',
133
+ ' inbox without --product covers every product.',
134
+ ' --by is the exact model id of the agent that writes, e.g. claude-opus-5-5; every agent write needs it.',
135
+ '',
47
136
  `${invocation} stamp`,
48
137
  ' Print the version and build of this cli as JSON, which a running server answers with too.',
49
138
  '',
50
139
  'Every command takes --checkout <path>. DE_PORT overrules the port in .ethlete/design/config.json.',
51
140
  '',
52
141
  ].join('\n');
142
+ const HELP_FLAGS = new Set(['--help', '-h']);
143
+ const alternativesOf = (block, invocation) => { var _a; return ((_a = block[0]) !== null && _a !== void 0 ? _a : '').split(' | ').map((usage) => usage.replace(`${invocation} `, '')); };
144
+ const matchingBlocksOf = (invocation, words) => {
145
+ const blocks = helpOf(invocation)
146
+ .split('\n\n')
147
+ .map((block) => block.split('\n'));
148
+ const command = words.join(' ');
149
+ return blocks.filter((block) => alternativesOf(block, invocation).some((usage) => usage === command || usage.startsWith(`${command} `)));
150
+ };
151
+ /** The usage of the one subcommand `argv` names, for `et design <command> [<subcommand>] … --help`. */
152
+ const subcommandHelpOf = (invocation, argv) => {
153
+ const [command = '', subcommand = ''] = argv;
154
+ if (command === 'sketch') {
155
+ const lines = sketch_command_1.SKETCH_USAGE.filter((line) => line.startsWith(`sketch ${subcommand} `));
156
+ return lines.length > 0
157
+ ? lines.flatMap((line) => [`usage: ${invocation} ${line}`, ...(0, sketch_command_1.sketchFlagHelpOf)(line)]).join('\n')
158
+ : sketch_command_1.SKETCH_USAGE.map((line) => `usage: ${invocation} ${line}`).join('\n');
159
+ }
160
+ const precise = subcommand.startsWith('-') ? [] : matchingBlocksOf(invocation, [command, subcommand]);
161
+ const blocks = precise.length > 0 ? precise : matchingBlocksOf(invocation, [command]);
162
+ return blocks.length > 0 ? blocks.map((block) => block.join('\n')).join('\n\n') : helpOf(invocation);
163
+ };
53
164
  /**
54
165
  * `et design [checkout]` serves the variant frames of a checkout, and `et design check …` says why
55
166
  * a call does not render. Both work on any checkout that keeps a `.ethlete/design` folder, so a
@@ -61,6 +172,10 @@ const designCommand = (options) => __awaiter(void 0, void 0, void 0, function* (
61
172
  console.log(helpOf(invocation));
62
173
  return 0;
63
174
  }
175
+ if (argv.slice(1).some((arg) => HELP_FLAGS.has(arg))) {
176
+ console.log(subcommandHelpOf(invocation, argv));
177
+ return 0;
178
+ }
64
179
  if (argv[0] === 'stamp') {
65
180
  console.log(JSON.stringify((0, stamp_1.buildStampOf)()));
66
181
  return 0;
@@ -69,21 +184,67 @@ const designCommand = (options) => __awaiter(void 0, void 0, void 0, function* (
69
184
  const { target, rest } = splitCheckout(argv.slice(1), root);
70
185
  return (0, check_1.checkDesign)({ target, argv: rest, invocation });
71
186
  }
187
+ if (argv[0] === 'system') {
188
+ const { target, rest } = splitCheckout(argv.slice(1), root);
189
+ return (0, system_command_1.designSystem)({ target, argv: rest, invocation });
190
+ }
72
191
  if (argv[0] === 'new') {
73
192
  const { target, rest } = splitCheckout(argv.slice(1), root);
74
193
  return (0, new_call_1.newCall)({ target, argv: rest, invocation });
75
194
  }
195
+ if (argv[0] === 'product') {
196
+ const { target, rest } = splitCheckout(argv.slice(1), root);
197
+ return (0, product_command_1.designProduct)({ target, argv: rest, invocation });
198
+ }
76
199
  if (argv[0] === 'legacy') {
77
200
  const { target, rest } = splitCheckout(argv.slice(1), root);
78
201
  return (0, legacy_1.markLegacy)({ target, argv: rest, invocation });
79
202
  }
203
+ if (argv[0] === 'sketch') {
204
+ const { target, rest } = splitCheckout(argv.slice(1), root);
205
+ return (0, sketch_command_1.designSketch)({ target, argv: rest, invocation });
206
+ }
207
+ if (argv[0] === 'accept') {
208
+ const { target, rest } = splitCheckout(argv.slice(1), root);
209
+ return (0, accept_command_1.designAccept)({ target, argv: rest, invocation });
210
+ }
211
+ if (argv[0] === 'part') {
212
+ const { target, rest } = splitCheckout(argv.slice(1), root);
213
+ return (0, part_command_1.designPart)({ target, argv: rest, invocation });
214
+ }
215
+ if (argv[0] === 'shot') {
216
+ const { target, rest } = splitCheckout(argv.slice(1), root);
217
+ return rest.includes('--asset')
218
+ ? (0, asset_shot_1.designAssetShot)({ target, argv: rest, invocation })
219
+ : (0, shot_command_1.designShot)({ target, argv: rest, invocation });
220
+ }
221
+ if (argv[0] === 'token') {
222
+ const { target, rest } = splitCheckout(argv.slice(1), root);
223
+ return (0, asset_shot_1.designToken)({ target, argv: rest, invocation });
224
+ }
225
+ if (argv[0] === 'inbox') {
226
+ const { target, rest } = splitCheckout(argv.slice(1), root);
227
+ return (0, inbox_command_1.designInbox)({ target, argv: rest, invocation });
228
+ }
229
+ if (argv[0] === 'comment') {
230
+ const { target, rest } = splitCheckout(argv.slice(1), root);
231
+ return (0, inbox_command_1.designComment)({ target, argv: rest, invocation });
232
+ }
80
233
  if (argv[0] === 'status') {
81
234
  const { target, rest } = splitCheckout(argv.slice(1), root);
82
235
  return (0, status_1.designStatus)({ target, argv: rest, invocation });
83
236
  }
84
- const { target, rest } = splitCheckout(argv, root);
237
+ const { target, rest: afterCheckout } = splitCheckout(argv, root);
238
+ const hostIndex = afterCheckout.indexOf('--host');
239
+ const host = hostIndex === -1 ? undefined : afterCheckout[hostIndex + 1];
240
+ const rest = hostIndex === -1 ? afterCheckout : [...afterCheckout.slice(0, hostIndex), ...afterCheckout.slice(hostIndex + 2)];
85
241
  const positional = rest[0];
86
- return (0, serve_1.serveDesign)({ target: positional ? (0, path_1.resolve)(root, positional) : target });
242
+ if (positional && !(0, fs_1.existsSync)((0, path_1.resolve)(root, positional))) {
243
+ console.error(`unknown command or checkout "${positional}"`);
244
+ console.error(helpOf(invocation));
245
+ return 2;
246
+ }
247
+ return (0, serve_1.serveDesign)({ target: positional ? (0, path_1.resolve)(root, positional) : target, host });
87
248
  });
88
249
  exports.designCommand = designCommand;
89
250
  //# sourceMappingURL=design-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-command.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/design-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design-command.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/design-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Plugin } from 'postcss';
2
+ /** The interactions a part can declare in `definePart({ interactions })`. Rest is always implied. */
3
+ export declare const INTERACTIONS: readonly ["hover", "focus-visible", "active", "disabled"];
4
+ export type Interaction = (typeof INTERACTIONS)[number];
5
+ export declare const FORCE_ATTRIBUTE = "data-et-force";
6
+ /**
7
+ * Rewrites every `:hover`, `:focus-visible` and `:active` in the selectors of a stylesheet to
8
+ * `:is(<pseudo>, [data-et-force~="<name>"])`, so a frame can force the interaction with the
9
+ * attribute. Safe to run again on its own output; CSS it cannot parse comes back unchanged.
10
+ */
11
+ export declare const forceInteractions: (css: string) => string;
12
+ /** {@link forceInteractions} as a PostCSS plugin, run after every other plugin of the pipeline. */
13
+ export declare const forceInteractionsPlugin: () => Plugin;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.forceInteractionsPlugin = exports.forceInteractions = exports.FORCE_ATTRIBUTE = exports.INTERACTIONS = void 0;
7
+ const postcss_1 = __importDefault(require("postcss"));
8
+ const postcss_selector_parser_1 = __importDefault(require("postcss-selector-parser"));
9
+ /** The interactions a part can declare in `definePart({ interactions })`. Rest is always implied. */
10
+ exports.INTERACTIONS = ['hover', 'focus-visible', 'active', 'disabled'];
11
+ exports.FORCE_ATTRIBUTE = 'data-et-force';
12
+ const FORCED_PSEUDOS = new Set([':hover', ':focus-visible', ':active']);
13
+ const MAY_FORCE = /:(?:hover|focus-visible|active)/iu;
14
+ const isForcedAlready = (pseudo) => {
15
+ var _a;
16
+ const wrapper = (_a = pseudo.parent) === null || _a === void 0 ? void 0 : _a.parent;
17
+ if (!wrapper || wrapper.type !== 'pseudo' || wrapper.value.toLowerCase() !== ':is')
18
+ return false;
19
+ let forced = false;
20
+ wrapper.walkAttributes((attribute) => {
21
+ if (attribute.attribute === exports.FORCE_ATTRIBUTE)
22
+ forced = true;
23
+ });
24
+ return forced;
25
+ };
26
+ const forcedPseudoOf = (name) => (0, postcss_selector_parser_1.default)().astSync(`:is(:${name}, [${exports.FORCE_ATTRIBUTE}~="${name}"])`).first.first;
27
+ const forceSelector = (0, postcss_selector_parser_1.default)((selectors) => {
28
+ const found = [];
29
+ selectors.walkPseudos((pseudo) => {
30
+ if (FORCED_PSEUDOS.has(pseudo.value.toLowerCase()) && !isForcedAlready(pseudo))
31
+ found.push(pseudo);
32
+ });
33
+ for (const pseudo of found)
34
+ pseudo.replaceWith(forcedPseudoOf(pseudo.value.slice(1).toLowerCase()));
35
+ });
36
+ const forcedSelectorOf = (selector) => {
37
+ try {
38
+ return forceSelector.processSync(selector);
39
+ }
40
+ catch (_a) {
41
+ return selector;
42
+ }
43
+ };
44
+ const forceRoot = (root) => {
45
+ root.walkRules((rule) => {
46
+ if (!MAY_FORCE.test(rule.selector))
47
+ return;
48
+ rule.selector = forcedSelectorOf(rule.selector);
49
+ });
50
+ };
51
+ /**
52
+ * Rewrites every `:hover`, `:focus-visible` and `:active` in the selectors of a stylesheet to
53
+ * `:is(<pseudo>, [data-et-force~="<name>"])`, so a frame can force the interaction with the
54
+ * attribute. Safe to run again on its own output; CSS it cannot parse comes back unchanged.
55
+ */
56
+ const forceInteractions = (css) => {
57
+ if (!MAY_FORCE.test(css))
58
+ return css;
59
+ try {
60
+ const root = postcss_1.default.parse(css);
61
+ forceRoot(root);
62
+ return root.toString();
63
+ }
64
+ catch (_a) {
65
+ return css;
66
+ }
67
+ };
68
+ exports.forceInteractions = forceInteractions;
69
+ /** {@link forceInteractions} as a PostCSS plugin, run after every other plugin of the pipeline. */
70
+ const forceInteractionsPlugin = () => ({
71
+ postcssPlugin: 'ethlete-force-interactions',
72
+ OnceExit: forceRoot,
73
+ });
74
+ exports.forceInteractionsPlugin = forceInteractionsPlugin;
75
+ //# sourceMappingURL=force-interactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"force-interactions.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/force-interactions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export declare const INBOX_USAGE: string[];
2
+ export declare const COMMENT_USAGE: string[];
3
+ /**
4
+ * `et design inbox` lists what waits for the agent - open comment threads whose last word is the user's and the sketches
5
+ * that need a rebase, oldest first - then the threads and the pick and discard decisions waiting for the user.
6
+ * `et design inbox done <id> --note <text>` replaces the note of the part the thread is about (in the variant, for a thread on a sketch variant) and marks the thread addressed.
7
+ */
8
+ export declare const designInbox: (options: {
9
+ target: string;
10
+ argv: string[];
11
+ invocation: string;
12
+ }) => number;
13
+ /**
14
+ * `et design comment …` writes a comment on a state of a part, as Studio does from the canvas.
15
+ * `et design comment reply <id> <text>` answers a comment thread as the agent; `--question` marks a reply that waits for the user's answer.
16
+ */
17
+ export declare const designComment: (options: {
18
+ target: string;
19
+ argv: string[];
20
+ invocation: string;
21
+ }) => number;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.designComment = exports.designInbox = exports.COMMENT_USAGE = exports.INBOX_USAGE = void 0;
4
+ const path_1 = require("path");
5
+ const comment_1 = require("./system/comments/comment");
6
+ const complete_1 = require("./system/comments/complete");
7
+ const inbox_1 = require("./system/comments/inbox");
8
+ const product_1 = require("./system/product");
9
+ const cli_args_1 = require("./system/sketch/cli-args");
10
+ exports.INBOX_USAGE = ['inbox [--product <name>] [--json]', 'inbox done <id> --note <text> --by <model id>'];
11
+ exports.COMMENT_USAGE = [
12
+ 'comment <layer>/<name> <state> --size <preset|px|fitted> <text> [--interaction <name>] [--at <x>,<y>] [--sketch <layer>/<name> --variant <key>] [--product <name>]',
13
+ 'comment reply <id> --by <model id> <text> [--question] [--product <name>]',
14
+ ];
15
+ const fail = (message, code = 1) => {
16
+ console.error(message);
17
+ return code;
18
+ };
19
+ const usage = (invocation, lines) => fail(lines.map((line) => `usage: ${invocation} ${line}`).join('\n'), 2);
20
+ const unauthored = (options) => fail([`${options.command} ${cli_args_1.NEEDS_AUTHOR}`, ...options.lines.map((line) => `usage: ${options.invocation} ${line}`)].join('\n'), 2);
21
+ /**
22
+ * `et design inbox` lists what waits for the agent - open comment threads whose last word is the user's and the sketches
23
+ * that need a rebase, oldest first - then the threads and the pick and discard decisions waiting for the user.
24
+ * `et design inbox done <id> --note <text>` replaces the note of the part the thread is about (in the variant, for a thread on a sketch variant) and marks the thread addressed.
25
+ */
26
+ const designInbox = (options) => {
27
+ var _a;
28
+ const { target, argv, invocation } = options;
29
+ const args = (0, cli_args_1.argsOf)(argv, ['--product', '--note', '--by']);
30
+ if (typeof args === 'string')
31
+ return usage(invocation, exports.INBOX_USAGE);
32
+ const config = (0, cli_args_1.configOf)(target);
33
+ if (typeof config === 'string')
34
+ return fail(config);
35
+ const names = (0, cli_args_1.productNamesOf)({ config, asked: args.values['--product'] });
36
+ if (typeof names === 'string')
37
+ return fail(names);
38
+ if (args.positional[0] === 'done') {
39
+ const id = args.positional[1];
40
+ if (!id || args.positional.length > 2)
41
+ return usage(invocation, exports.INBOX_USAGE);
42
+ if ((0, cli_args_1.authorOf)(args) === null)
43
+ return unauthored({ invocation, command: 'inbox done', lines: exports.INBOX_USAGE });
44
+ const note = args.values['--note'];
45
+ if (!note || note.trim() === '')
46
+ return fail('inbox done needs --note "<reason>": the note replaces the note of the part the comment was made on (in the sketch variant, for a comment on one), so write it to explain the whole shape of the part - pass the old note unchanged if it still holds.');
47
+ const products = [];
48
+ for (const name of names) {
49
+ const product = (0, cli_args_1.oneProductOf)({ target, config, asked: name });
50
+ if (typeof product === 'string')
51
+ return fail(product);
52
+ products.push(product);
53
+ }
54
+ const addressed = (0, complete_1.completeComment)({ products, id, note, author: (_a = (0, cli_args_1.authorOf)(args)) !== null && _a !== void 0 ? _a : undefined });
55
+ if (typeof addressed === 'string')
56
+ return fail(addressed);
57
+ console.log(`addressed: ${(0, path_1.relative)(target, addressed.file)}`);
58
+ return 0;
59
+ }
60
+ if (args.positional.length > 0)
61
+ return usage(invocation, exports.INBOX_USAGE);
62
+ const { items, waiting, unreadable } = (0, inbox_1.inboxOf)({ target, config, products: names });
63
+ unreadable.forEach((problem) => console.error(problem));
64
+ console.log(args.flags.has('--json')
65
+ ? JSON.stringify({ items, waitingForUser: waiting }, null, 2)
66
+ : (0, inbox_1.inboxText)({ items, waiting }, invocation));
67
+ return unreadable.length > 0 ? 1 : 0;
68
+ };
69
+ exports.designInbox = designInbox;
70
+ const pointOf = (value) => {
71
+ if (value === undefined)
72
+ return undefined;
73
+ const [x, y, ...rest] = value.split(',').map(Number);
74
+ return x === undefined || y === undefined || rest.length > 0 || Number.isNaN(x) || Number.isNaN(y) ? null : { x, y };
75
+ };
76
+ const sizeOf = (value) => {
77
+ if (!value)
78
+ return null;
79
+ return /^\d+$/u.test(value) ? (Number(value) > 0 ? Number(value) : null) : value;
80
+ };
81
+ const designCommentReply = (options) => {
82
+ const { target, positional, asked, author, question, invocation } = options;
83
+ const [id, ...words] = positional;
84
+ if (!id || words.length === 0)
85
+ return usage(invocation, exports.COMMENT_USAGE);
86
+ if (author === null)
87
+ return unauthored({ invocation, command: 'comment reply', lines: exports.COMMENT_USAGE });
88
+ const config = (0, cli_args_1.configOf)(target);
89
+ if (typeof config === 'string')
90
+ return fail(config);
91
+ const names = (0, cli_args_1.productNamesOf)({ config, asked });
92
+ if (typeof names === 'string')
93
+ return fail(names);
94
+ const replied = (0, comment_1.replyToComment)({
95
+ products: names.map((name) => ({ name, dir: (0, product_1.productDirOf)({ target, product: name }) })),
96
+ id,
97
+ by: 'agent',
98
+ author,
99
+ text: words.join(' '),
100
+ question,
101
+ });
102
+ if (typeof replied === 'string')
103
+ return fail(replied);
104
+ console.log(`${question ? 'asked' : 'replied'}: ${(0, path_1.relative)(target, replied.file)}`);
105
+ return 0;
106
+ };
107
+ /**
108
+ * `et design comment …` writes a comment on a state of a part, as Studio does from the canvas.
109
+ * `et design comment reply <id> <text>` answers a comment thread as the agent; `--question` marks a reply that waits for the user's answer.
110
+ */
111
+ const designComment = (options) => {
112
+ const { target, argv, invocation } = options;
113
+ const args = (0, cli_args_1.argsOf)(argv, ['--product', '--size', '--interaction', '--at', '--sketch', '--variant', '--by']);
114
+ if (typeof args === 'string')
115
+ return usage(invocation, exports.COMMENT_USAGE);
116
+ if (args.positional[0] === 'reply')
117
+ return designCommentReply({
118
+ target,
119
+ positional: args.positional.slice(1),
120
+ asked: args.values['--product'],
121
+ author: (0, cli_args_1.authorOf)(args),
122
+ question: args.flags.has('--question'),
123
+ invocation,
124
+ });
125
+ const [part, state, ...words] = args.positional;
126
+ const size = sizeOf(args.values['--size']);
127
+ const point = pointOf(args.values['--at']);
128
+ const sketch = args.values['--sketch'];
129
+ const variant = args.values['--variant'];
130
+ const interaction = args.values['--interaction'];
131
+ if (!part ||
132
+ !state ||
133
+ size === null ||
134
+ words.length === 0 ||
135
+ point === null ||
136
+ (sketch === undefined) !== (variant === undefined))
137
+ return usage(invocation, exports.COMMENT_USAGE);
138
+ const config = (0, cli_args_1.configOf)(target);
139
+ if (typeof config === 'string')
140
+ return fail(config);
141
+ const product = (0, cli_args_1.oneProductOf)({ target, config, asked: args.values['--product'] });
142
+ if (typeof product === 'string')
143
+ return fail(product);
144
+ const comment = (0, comment_1.createComment)({
145
+ product,
146
+ comment: Object.assign(Object.assign(Object.assign({ part,
147
+ state,
148
+ size, text: words.join(' ') }, (interaction ? { interaction } : {})), (point ? { point } : {})), (sketch && variant ? { sketch: { target: sketch, variant } } : {})),
149
+ });
150
+ if (typeof comment === 'string')
151
+ return fail(comment);
152
+ console.log(`comment ${comment.id}: ${(0, path_1.relative)(target, comment.file)}`);
153
+ return 0;
154
+ };
155
+ exports.designComment = designComment;
156
+ //# sourceMappingURL=inbox-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox-command.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/inbox-command.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,0CAAwB;AACxB,mDAAiC;AACjC,0CAAwB;AACxB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,0CAAwB;AACxB,mDAAiC;AACjC,0CAAwB;AACxB,0CAAwB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Serializes JSON data the way Prettier lays out a `.json` file at a print width of 120: objects stay
3
+ * expanded, an array stays on one line when it fits. Ends with a newline.
4
+ */
5
+ export declare const jsonLayoutOf: (value: unknown) => string;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonLayoutOf = void 0;
4
+ const WIDTH = 120;
5
+ const INDENT = ' ';
6
+ const entriesOf = (value) => Object.entries(value).filter(([, item]) => item !== undefined);
7
+ const breaksArray = (items) => items.length > 1 && items.every((item) => Array.isArray(item) && item.length > 1);
8
+ const flatOf = (value) => {
9
+ if (value === null || typeof value !== 'object')
10
+ return JSON.stringify(value);
11
+ if (!Array.isArray(value))
12
+ return entriesOf(value).length === 0 ? '{}' : null;
13
+ if (breaksArray(value))
14
+ return null;
15
+ const items = value.map(flatOf);
16
+ return items.every((item) => item !== null) ? `[${items.join(', ')}]` : null;
17
+ };
18
+ const print = (value, line) => {
19
+ if (value === null || typeof value !== 'object')
20
+ return JSON.stringify(value);
21
+ const flat = Array.isArray(value) || entriesOf(value).length === 0 ? flatOf(value) : null;
22
+ if (flat !== null && line.column + flat.length + line.tail <= WIDTH)
23
+ return flat;
24
+ const indent = `${line.indent}${INDENT}`;
25
+ const entries = Array.isArray(value)
26
+ ? value.map((item) => ['', item])
27
+ : entriesOf(value).map(([key, item]) => [`${JSON.stringify(key)}: `, item]);
28
+ const lines = entries.map(([prefix, item], index) => {
29
+ const tail = index < entries.length - 1 ? 1 : 0;
30
+ return `${indent}${prefix}${print(item, { indent, column: indent.length + prefix.length, tail })}${tail ? ',' : ''}`;
31
+ });
32
+ const [open, close] = Array.isArray(value) ? ['[', ']'] : ['{', '}'];
33
+ return `${open}\n${lines.join('\n')}\n${line.indent}${close}`;
34
+ };
35
+ /**
36
+ * Serializes JSON data the way Prettier lays out a `.json` file at a print width of 120: objects stay
37
+ * expanded, an array stays on one line when it fits. Ends with a newline.
38
+ */
39
+ const jsonLayoutOf = (value) => `${print(value, { indent: '', column: 0, tail: 0 })}\n`;
40
+ exports.jsonLayoutOf = jsonLayoutOf;
41
+ //# sourceMappingURL=json-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-layout.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/json-layout.ts"],"names":[],"mappings":"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"}
@@ -9,3 +9,10 @@ export declare const markLegacy: (options: {
9
9
  argv: string[];
10
10
  invocation: string;
11
11
  }) => 0 | 1 | 2;
12
+ export declare const TRANSFER_PATH = "/__design/transfer";
13
+ export type TransferResult = 'marked' | 'already' | 'missing' | 'unreadable';
14
+ /** Writes `transferred: true` into a call's `call.ts`, below its `legacy: true` line when it has one. */
15
+ export declare const markTransferred: (options: {
16
+ target: string;
17
+ slug: string;
18
+ }) => TransferResult;