@12ui/design 0.2.26 → 0.2.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 (361) hide show
  1. package/README.md +72 -87
  2. package/SKILL.md +5 -5
  3. package/dist/branch-client.d.ts +7 -0
  4. package/dist/branch-client.d.ts.map +1 -1
  5. package/dist/branch-client.js +1 -0
  6. package/dist/branch-client.js.map +1 -1
  7. package/dist/branch-completion.d.ts +8 -0
  8. package/dist/branch-completion.d.ts.map +1 -1
  9. package/dist/branch-completion.js +84 -16
  10. package/dist/branch-completion.js.map +1 -1
  11. package/dist/branch-execution.d.ts +8 -0
  12. package/dist/branch-execution.d.ts.map +1 -1
  13. package/dist/branch-execution.js +62 -11
  14. package/dist/branch-execution.js.map +1 -1
  15. package/dist/branch-identity.d.ts +10 -4
  16. package/dist/branch-identity.d.ts.map +1 -1
  17. package/dist/branch-identity.js +9 -6
  18. package/dist/branch-identity.js.map +1 -1
  19. package/dist/branch-page-conversion.d.ts +14 -8
  20. package/dist/branch-page-conversion.d.ts.map +1 -1
  21. package/dist/branch-page-conversion.js +32 -15
  22. package/dist/branch-page-conversion.js.map +1 -1
  23. package/dist/branch-page-packaging.d.ts +31 -0
  24. package/dist/branch-page-packaging.d.ts.map +1 -0
  25. package/dist/branch-page-packaging.js +86 -0
  26. package/dist/branch-page-packaging.js.map +1 -0
  27. package/dist/branch-plan.d.ts +44 -0
  28. package/dist/branch-plan.d.ts.map +1 -1
  29. package/dist/branch-plan.js +89 -18
  30. package/dist/branch-plan.js.map +1 -1
  31. package/dist/branch-progress.d.ts +22 -0
  32. package/dist/branch-progress.d.ts.map +1 -1
  33. package/dist/branch-progress.js +46 -8
  34. package/dist/branch-progress.js.map +1 -1
  35. package/dist/branch-run-record.d.ts +36 -1
  36. package/dist/branch-run-record.d.ts.map +1 -1
  37. package/dist/branch-run-record.js.map +1 -1
  38. package/dist/branch-status.d.ts +2 -0
  39. package/dist/branch-status.d.ts.map +1 -1
  40. package/dist/branch-status.js +60 -15
  41. package/dist/branch-status.js.map +1 -1
  42. package/dist/branch-winner.d.ts +13 -15
  43. package/dist/branch-winner.d.ts.map +1 -1
  44. package/dist/branch-winner.js +25 -77
  45. package/dist/branch-winner.js.map +1 -1
  46. package/dist/cli-auth-command.d.ts.map +1 -1
  47. package/dist/cli-auth-command.js +5 -0
  48. package/dist/cli-auth-command.js.map +1 -1
  49. package/dist/cli-auth-onboarding.d.ts +12 -0
  50. package/dist/cli-auth-onboarding.d.ts.map +1 -0
  51. package/dist/cli-auth-onboarding.js +21 -0
  52. package/dist/cli-auth-onboarding.js.map +1 -0
  53. package/dist/cli-branch-command.d.ts +14 -19
  54. package/dist/cli-branch-command.d.ts.map +1 -1
  55. package/dist/cli-branch-command.js +207 -137
  56. package/dist/cli-branch-command.js.map +1 -1
  57. package/dist/cli-capabilities.d.ts +10 -51
  58. package/dist/cli-capabilities.d.ts.map +1 -1
  59. package/dist/cli-capabilities.js +13 -26
  60. package/dist/cli-capabilities.js.map +1 -1
  61. package/dist/cli-cli-command.d.ts +3 -0
  62. package/dist/cli-cli-command.d.ts.map +1 -1
  63. package/dist/cli-cli-command.js +15 -3
  64. package/dist/cli-cli-command.js.map +1 -1
  65. package/dist/cli-conversion-derivation.d.ts +30 -0
  66. package/dist/cli-conversion-derivation.d.ts.map +1 -0
  67. package/dist/{cli-export-command.js → cli-conversion-derivation.js} +178 -110
  68. package/dist/cli-conversion-derivation.js.map +1 -0
  69. package/dist/cli-conversion-output-directory.d.ts +5 -0
  70. package/dist/cli-conversion-output-directory.d.ts.map +1 -0
  71. package/dist/{cli-export-output-directory.js → cli-conversion-output-directory.js} +10 -10
  72. package/dist/cli-conversion-output-directory.js.map +1 -0
  73. package/dist/cli-convert-command.d.ts +9 -0
  74. package/dist/cli-convert-command.d.ts.map +1 -1
  75. package/dist/cli-convert-command.js +528 -158
  76. package/dist/cli-convert-command.js.map +1 -1
  77. package/dist/cli-corpus-command.d.ts.map +1 -1
  78. package/dist/cli-corpus-command.js +77 -10
  79. package/dist/cli-corpus-command.js.map +1 -1
  80. package/dist/cli-corpus-reference-downloads.d.ts +5 -0
  81. package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
  82. package/dist/cli-corpus-reference-downloads.js +18 -7
  83. package/dist/cli-corpus-reference-downloads.js.map +1 -1
  84. package/dist/cli-corpus-run.d.ts +9 -0
  85. package/dist/cli-corpus-run.d.ts.map +1 -1
  86. package/dist/cli-corpus-run.js +18 -0
  87. package/dist/cli-corpus-run.js.map +1 -1
  88. package/dist/cli-detach.d.ts +12 -4
  89. package/dist/cli-detach.d.ts.map +1 -1
  90. package/dist/cli-detach.js +49 -17
  91. package/dist/cli-detach.js.map +1 -1
  92. package/dist/cli-draft-command.d.ts +44 -61
  93. package/dist/cli-draft-command.d.ts.map +1 -1
  94. package/dist/cli-draft-command.js +307 -180
  95. package/dist/cli-draft-command.js.map +1 -1
  96. package/dist/cli-help/conversion.d.ts +30 -0
  97. package/dist/cli-help/conversion.d.ts.map +1 -0
  98. package/dist/cli-help/conversion.js +55 -0
  99. package/dist/cli-help/conversion.js.map +1 -0
  100. package/dist/cli-help/design.d.ts +74 -0
  101. package/dist/cli-help/design.d.ts.map +1 -0
  102. package/dist/cli-help/design.js +131 -0
  103. package/dist/cli-help/design.js.map +1 -0
  104. package/dist/cli-help/index.d.ts +224 -0
  105. package/dist/cli-help/index.d.ts.map +1 -0
  106. package/dist/cli-help/index.js +32 -0
  107. package/dist/cli-help/index.js.map +1 -0
  108. package/dist/cli-help/meta.d.ts +24 -0
  109. package/dist/cli-help/meta.d.ts.map +1 -0
  110. package/dist/cli-help/meta.js +30 -0
  111. package/dist/cli-help/meta.js.map +1 -0
  112. package/dist/cli-help/render.d.ts +4 -0
  113. package/dist/cli-help/render.d.ts.map +1 -0
  114. package/dist/cli-help/render.js +28 -0
  115. package/dist/cli-help/render.js.map +1 -0
  116. package/dist/cli-help/setup.d.ts +93 -0
  117. package/dist/cli-help/setup.d.ts.map +1 -0
  118. package/dist/cli-help/setup.js +142 -0
  119. package/dist/cli-help/setup.js.map +1 -0
  120. package/dist/cli-help/types.d.ts +10 -0
  121. package/dist/cli-help/types.d.ts.map +1 -0
  122. package/dist/cli-help/types.js +2 -0
  123. package/dist/cli-help/types.js.map +1 -0
  124. package/dist/cli-next-command.d.ts +11 -8
  125. package/dist/cli-next-command.d.ts.map +1 -1
  126. package/dist/cli-next-command.js +288 -88
  127. package/dist/cli-next-command.js.map +1 -1
  128. package/dist/cli-output-paths.d.ts +2 -23
  129. package/dist/cli-output-paths.d.ts.map +1 -1
  130. package/dist/cli-output-paths.js +2 -36
  131. package/dist/cli-output-paths.js.map +1 -1
  132. package/dist/cli-package-command.d.ts +1 -0
  133. package/dist/cli-package-command.d.ts.map +1 -1
  134. package/dist/cli-package-command.js +107 -34
  135. package/dist/cli-package-command.js.map +1 -1
  136. package/dist/cli-pending-auth.d.ts +20 -0
  137. package/dist/cli-pending-auth.d.ts.map +1 -0
  138. package/dist/cli-pending-auth.js +160 -0
  139. package/dist/cli-pending-auth.js.map +1 -0
  140. package/dist/cli-progress.d.ts +256 -75
  141. package/dist/cli-progress.d.ts.map +1 -1
  142. package/dist/cli-progress.js +425 -98
  143. package/dist/cli-progress.js.map +1 -1
  144. package/dist/cli-run.d.ts +2 -0
  145. package/dist/cli-run.d.ts.map +1 -1
  146. package/dist/cli-run.js +56 -75
  147. package/dist/cli-run.js.map +1 -1
  148. package/dist/cli-skill-command.d.ts +3 -0
  149. package/dist/cli-skill-command.d.ts.map +1 -1
  150. package/dist/cli-skill-command.js +26 -3
  151. package/dist/cli-skill-command.js.map +1 -1
  152. package/dist/cli-usage.d.ts +17 -8
  153. package/dist/cli-usage.d.ts.map +1 -1
  154. package/dist/cli-usage.js +55 -40
  155. package/dist/cli-usage.js.map +1 -1
  156. package/dist/config.d.ts +1 -0
  157. package/dist/config.d.ts.map +1 -1
  158. package/dist/config.js +8 -2
  159. package/dist/config.js.map +1 -1
  160. package/dist/conversion-client.d.ts +4 -0
  161. package/dist/conversion-client.d.ts.map +1 -1
  162. package/dist/conversion-client.js +23 -3
  163. package/dist/conversion-client.js.map +1 -1
  164. package/dist/conversion-outputs.d.ts +11 -0
  165. package/dist/conversion-outputs.d.ts.map +1 -1
  166. package/dist/conversion-outputs.js +13 -1
  167. package/dist/conversion-outputs.js.map +1 -1
  168. package/dist/conversion-receipt.d.ts +1 -1
  169. package/dist/conversion-receipt.js +1 -1
  170. package/dist/conversion-recovery.d.ts +20 -0
  171. package/dist/conversion-recovery.d.ts.map +1 -0
  172. package/dist/conversion-recovery.js +61 -0
  173. package/dist/conversion-recovery.js.map +1 -0
  174. package/dist/conversion-status-contract.js +1 -1
  175. package/dist/conversion-status-contract.js.map +1 -1
  176. package/dist/credential-setup.d.ts +9 -1
  177. package/dist/credential-setup.d.ts.map +1 -1
  178. package/dist/credential-setup.js +13 -1
  179. package/dist/credential-setup.js.map +1 -1
  180. package/dist/draft-adoption.d.ts +9 -3
  181. package/dist/draft-adoption.d.ts.map +1 -1
  182. package/dist/draft-adoption.js +26 -41
  183. package/dist/draft-adoption.js.map +1 -1
  184. package/dist/draft-identity.d.ts +9 -12
  185. package/dist/draft-identity.d.ts.map +1 -1
  186. package/dist/draft-identity.js +0 -0
  187. package/dist/draft-identity.js.map +1 -1
  188. package/dist/draft-run.d.ts +9 -19
  189. package/dist/draft-run.d.ts.map +1 -1
  190. package/dist/draft-run.js +67 -95
  191. package/dist/draft-run.js.map +1 -1
  192. package/dist/draft-workspace.d.ts +26 -18
  193. package/dist/draft-workspace.d.ts.map +1 -1
  194. package/dist/draft-workspace.js +16 -5
  195. package/dist/draft-workspace.js.map +1 -1
  196. package/dist/hosted-draft-identity.d.ts +20 -0
  197. package/dist/hosted-draft-identity.d.ts.map +1 -0
  198. package/dist/hosted-draft-identity.js +30 -0
  199. package/dist/hosted-draft-identity.js.map +1 -0
  200. package/dist/hosted-draft-run.d.ts +60 -0
  201. package/dist/hosted-draft-run.d.ts.map +1 -0
  202. package/dist/hosted-draft-run.js +97 -0
  203. package/dist/hosted-draft-run.js.map +1 -0
  204. package/dist/legacy-codex-cleanup.d.ts +13 -0
  205. package/dist/legacy-codex-cleanup.d.ts.map +1 -1
  206. package/dist/legacy-codex-cleanup.js +83 -0
  207. package/dist/legacy-codex-cleanup.js.map +1 -1
  208. package/dist/legacy-skill-catalog.d.ts +2 -2
  209. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  210. package/dist/legacy-skill-catalog.js +76 -5
  211. package/dist/legacy-skill-catalog.js.map +1 -1
  212. package/dist/login-auth.d.ts +38 -0
  213. package/dist/login-auth.d.ts.map +1 -1
  214. package/dist/login-auth.js +67 -16
  215. package/dist/login-auth.js.map +1 -1
  216. package/dist/mcp-tool-definitions.js +1 -1
  217. package/dist/mcp-tool-definitions.js.map +1 -1
  218. package/dist/next-target.d.ts +1 -4
  219. package/dist/next-target.d.ts.map +1 -1
  220. package/dist/next-target.js +5 -9
  221. package/dist/next-target.js.map +1 -1
  222. package/dist/next-wait-lease.d.ts +17 -0
  223. package/dist/next-wait-lease.d.ts.map +1 -0
  224. package/dist/next-wait-lease.js +92 -0
  225. package/dist/next-wait-lease.js.map +1 -0
  226. package/dist/operation-poll-policy.d.ts +89 -0
  227. package/dist/operation-poll-policy.d.ts.map +1 -0
  228. package/dist/operation-poll-policy.js +99 -0
  229. package/dist/operation-poll-policy.js.map +1 -0
  230. package/dist/package-client.d.ts +30 -0
  231. package/dist/package-client.d.ts.map +1 -1
  232. package/dist/package-client.js +48 -9
  233. package/dist/package-client.js.map +1 -1
  234. package/dist/package-submission.d.ts +17 -0
  235. package/dist/package-submission.d.ts.map +1 -1
  236. package/dist/package-submission.js +43 -2
  237. package/dist/package-submission.js.map +1 -1
  238. package/dist/pending-auth-store.d.ts +15 -0
  239. package/dist/pending-auth-store.d.ts.map +1 -0
  240. package/dist/pending-auth-store.js +90 -0
  241. package/dist/pending-auth-store.js.map +1 -0
  242. package/dist/responsive-quality.d.ts +2 -2
  243. package/dist/responsive-quality.js +2 -2
  244. package/dist/run-journal-commands.d.ts.map +1 -1
  245. package/dist/run-journal-commands.js +30 -78
  246. package/dist/run-journal-commands.js.map +1 -1
  247. package/dist/run-journal-in-flight.d.ts +2 -2
  248. package/dist/run-journal-in-flight.d.ts.map +1 -1
  249. package/dist/run-journal-in-flight.js +0 -0
  250. package/dist/run-journal-in-flight.js.map +1 -1
  251. package/dist/skill-installer.d.ts +2 -2
  252. package/dist/skill-installer.d.ts.map +1 -1
  253. package/dist/skill-installer.js +2 -2
  254. package/dist/skill-installer.js.map +1 -1
  255. package/open-design.json +3 -3
  256. package/package.json +1 -1
  257. package/skills/12ui-design/SKILL.md +62 -0
  258. package/skills/12ui-design/agents/openai.yaml +6 -0
  259. package/skills/12ui-design/inspire.md +11 -0
  260. package/dist/cli-create-command.d.ts +0 -59
  261. package/dist/cli-create-command.d.ts.map +0 -1
  262. package/dist/cli-create-command.js +0 -354
  263. package/dist/cli-create-command.js.map +0 -1
  264. package/dist/cli-export-command.d.ts +0 -26
  265. package/dist/cli-export-command.d.ts.map +0 -1
  266. package/dist/cli-export-command.js.map +0 -1
  267. package/dist/cli-export-output-directory.d.ts +0 -5
  268. package/dist/cli-export-output-directory.d.ts.map +0 -1
  269. package/dist/cli-export-output-directory.js.map +0 -1
  270. package/dist/cli-image-batch-command.d.ts +0 -29
  271. package/dist/cli-image-batch-command.d.ts.map +0 -1
  272. package/dist/cli-image-batch-command.js +0 -236
  273. package/dist/cli-image-batch-command.js.map +0 -1
  274. package/dist/cli-image-batch-materialize.d.ts +0 -27
  275. package/dist/cli-image-batch-materialize.d.ts.map +0 -1
  276. package/dist/cli-image-batch-materialize.js +0 -41
  277. package/dist/cli-image-batch-materialize.js.map +0 -1
  278. package/dist/cli-image-batch-resume.d.ts +0 -36
  279. package/dist/cli-image-batch-resume.d.ts.map +0 -1
  280. package/dist/cli-image-batch-resume.js +0 -176
  281. package/dist/cli-image-batch-resume.js.map +0 -1
  282. package/dist/cli-image-command.d.ts +0 -10
  283. package/dist/cli-image-command.d.ts.map +0 -1
  284. package/dist/cli-image-command.js +0 -106
  285. package/dist/cli-image-command.js.map +0 -1
  286. package/dist/cli-select-command.d.ts +0 -16
  287. package/dist/cli-select-command.d.ts.map +0 -1
  288. package/dist/cli-select-command.js +0 -60
  289. package/dist/cli-select-command.js.map +0 -1
  290. package/dist/create-identity.d.ts +0 -25
  291. package/dist/create-identity.d.ts.map +0 -1
  292. package/dist/create-identity.js +0 -0
  293. package/dist/create-identity.js.map +0 -1
  294. package/dist/draft-prompts.d.ts +0 -35
  295. package/dist/draft-prompts.d.ts.map +0 -1
  296. package/dist/draft-prompts.js +0 -51
  297. package/dist/draft-prompts.js.map +0 -1
  298. package/dist/image-batch-status.d.ts +0 -42
  299. package/dist/image-batch-status.d.ts.map +0 -1
  300. package/dist/image-batch-status.js +0 -143
  301. package/dist/image-batch-status.js.map +0 -1
  302. package/dist/image-generation-batch-attempt.d.ts +0 -28
  303. package/dist/image-generation-batch-attempt.d.ts.map +0 -1
  304. package/dist/image-generation-batch-attempt.js +0 -48
  305. package/dist/image-generation-batch-attempt.js.map +0 -1
  306. package/dist/image-generation-batch-manifest.d.ts +0 -25
  307. package/dist/image-generation-batch-manifest.d.ts.map +0 -1
  308. package/dist/image-generation-batch-manifest.js +0 -97
  309. package/dist/image-generation-batch-manifest.js.map +0 -1
  310. package/dist/image-generation-completion.d.ts +0 -43
  311. package/dist/image-generation-completion.d.ts.map +0 -1
  312. package/dist/image-generation-completion.js +0 -54
  313. package/dist/image-generation-completion.js.map +0 -1
  314. package/dist/image-generation-error.d.ts +0 -3
  315. package/dist/image-generation-error.d.ts.map +0 -1
  316. package/dist/image-generation-error.js +0 -30
  317. package/dist/image-generation-error.js.map +0 -1
  318. package/dist/image-generation-evidence.d.ts +0 -43
  319. package/dist/image-generation-evidence.d.ts.map +0 -1
  320. package/dist/image-generation-evidence.js +0 -28
  321. package/dist/image-generation-evidence.js.map +0 -1
  322. package/dist/image-generation-fs.d.ts +0 -3
  323. package/dist/image-generation-fs.d.ts.map +0 -1
  324. package/dist/image-generation-fs.js +0 -23
  325. package/dist/image-generation-fs.js.map +0 -1
  326. package/dist/image-generation-output.d.ts +0 -3
  327. package/dist/image-generation-output.d.ts.map +0 -1
  328. package/dist/image-generation-output.js +0 -51
  329. package/dist/image-generation-output.js.map +0 -1
  330. package/dist/image-generation-request.d.ts +0 -43
  331. package/dist/image-generation-request.d.ts.map +0 -1
  332. package/dist/image-generation-request.js +0 -52
  333. package/dist/image-generation-request.js.map +0 -1
  334. package/dist/image-generation-resume.d.ts +0 -49
  335. package/dist/image-generation-resume.d.ts.map +0 -1
  336. package/dist/image-generation-resume.js +0 -96
  337. package/dist/image-generation-resume.js.map +0 -1
  338. package/dist/image-generation-run.d.ts +0 -46
  339. package/dist/image-generation-run.d.ts.map +0 -1
  340. package/dist/image-generation-run.js +0 -158
  341. package/dist/image-generation-run.js.map +0 -1
  342. package/dist/image-generation-staging.d.ts +0 -25
  343. package/dist/image-generation-staging.d.ts.map +0 -1
  344. package/dist/image-generation-staging.js +0 -80
  345. package/dist/image-generation-staging.js.map +0 -1
  346. package/dist/image-generation-usage.d.ts +0 -75
  347. package/dist/image-generation-usage.d.ts.map +0 -1
  348. package/dist/image-generation-usage.js +0 -219
  349. package/dist/image-generation-usage.js.map +0 -1
  350. package/dist/image-provider-preflight.d.ts +0 -21
  351. package/dist/image-provider-preflight.d.ts.map +0 -1
  352. package/dist/image-provider-preflight.js +0 -184
  353. package/dist/image-provider-preflight.js.map +0 -1
  354. package/dist/selection-record.d.ts +0 -97
  355. package/dist/selection-record.d.ts.map +0 -1
  356. package/dist/selection-record.js +0 -138
  357. package/dist/selection-record.js.map +0 -1
  358. package/skills/design/SKILL.md +0 -116
  359. package/skills/design/agents/openai.yaml +0 -8
  360. package/skills/design/assets/large-logo.svg +0 -3
  361. package/skills/design/assets/small-400px.png +0 -0
@@ -9,11 +9,17 @@
9
9
  export const CONVERSION_DURATION_HINTS = {
10
10
  /** image -> LayerDoc. Extraction plus materialization. */
11
11
  convert: 240,
12
+ /**
13
+ * The same conversion at --model fast. Four measured runs on the progress
14
+ * boards (2026-08-20/21): 87s, 98s, 97s, 87s. Quoting the standard-model
15
+ * median for a fast run overstated by ~2m30 on every fast capture.
16
+ */
17
+ convertFast: 100,
12
18
  /** A responsive HTML export run on its own, after the conversion finished. */
13
19
  export: 240,
14
20
  /**
15
21
  * Fused convert + export. The export's reference and anchor conversions run
16
- * alongside the conversion, so the bundle costs about the slower half plus
22
+ * alongside the conversion, so the bundle takes about the slower half plus
17
23
  * assembly rather than the sum of both.
18
24
  */
19
25
  fused: 300,
@@ -25,10 +31,8 @@ export const CONVERSION_DURATION_HINTS = {
25
31
  */
26
32
  export const OPERATION_DURATION_HINTS = {
27
33
  ...CONVERSION_DURATION_HINTS,
28
- /** One generated candidate from the local image provider. */
29
- imageCandidate: 90,
30
- /** Four candidates, started concurrently. */
31
- imageBatch: 90,
34
+ /** One hosted draft candidate; candidate slots run concurrently. */
35
+ hostedDraftCandidate: 150,
32
36
  /** The build claim: the planner runs inline and buys no image. */
33
37
  branchClaim: 15,
34
38
  /** One branch screen. The server's own provider budget is 150 s. */
@@ -53,13 +57,19 @@ export const OPERATION_DURATION_HINTS = {
53
57
  branchSite: 492,
54
58
  /** One `12ui convert package` submission, whose page count is not known here. */
55
59
  package: 360,
60
+ /** Recorded 1.7-6.4 s across 10 Stage A corpus-inspire invocations. */
61
+ corpusInspire: 10,
62
+ /** A resume replays the same corpus request and completes missing downloads. */
63
+ corpusResume: 10,
64
+ /** A derivation which dispatches is one export operation per requested format. */
65
+ derivation: 240,
56
66
  };
57
67
  /**
58
- * Three pages convert at a time. Each holds two or three viewport children on
59
- * the server, so three pages sit just under the account's ~10 active
60
- * conversions: a brief queue at the admission boundary is visible in the
61
- * package's own published progress rather than looking like a stall. It lives
62
- * beside the duration hints because the run estimate is a function of it.
68
+ * Three pages convert at a time. Continuous web pages may hold several
69
+ * viewport children; complete app states hold one. A brief queue at the
70
+ * account admission boundary is visible in the package's own published
71
+ * progress rather than looking like a stall. It lives beside the duration
72
+ * hints because the run estimate is a function of it.
63
73
  */
64
74
  export const BRANCH_PAGE_CONCURRENCY_DEFAULT = 3;
65
75
  /**
@@ -94,12 +104,373 @@ export const formatDuration = (seconds) => {
94
104
  const rest = whole % 60;
95
105
  return rest === 0 ? `${minutes}m` : `${minutes}m ${rest}s`;
96
106
  };
97
- export const durationHint = (kind) => (`expect about ${formatDuration(CONVERSION_DURATION_HINTS[kind])}`);
98
107
  /**
99
108
  * `45s elapsed, ~90s typical`. A bare elapsed time reads as a stall; the pair
100
109
  * is what tells a caller the wait is still inside the expected envelope.
101
110
  */
102
111
  export const elapsedAgainstTypical = (elapsedSeconds, typicalSeconds) => (`${formatDuration(elapsedSeconds)} elapsed, ~${formatDuration(typicalSeconds)} typical`);
112
+ /**
113
+ * The service projects stage and percent, but no replacement completion time.
114
+ * Say that limitation instead of pairing an expired promise with reassurance.
115
+ */
116
+ export const REVISED_ETA_UNAVAILABLE = 'No revised ETA is available because the service does not publish one.';
117
+ /**
118
+ * A scope whose typical is under this quotes no numeric expectation at all.
119
+ *
120
+ * MEASURED on the 17-capture board: a bare fused resume quoted ~5m and
121
+ * finished in 4s (+4m56 overstatement), and free derivations quoted ~4m for
122
+ * 13s of collection. Work that is typically over in seconds cannot carry an
123
+ * honest minutes-scale promise, and saying nothing is more accurate than any
124
+ * number the table has for the paid path the resume happens to share.
125
+ */
126
+ export const QUICK_SCOPE_SUPPRESSION_SECONDS = 30;
127
+ /** Human-readable name for a pipeline lane, for progress facts. */
128
+ const LANE_LABELS = {
129
+ prepare: { one: 'prepare step', many: 'prepare steps' },
130
+ extract: { one: 'extraction pass', many: 'extraction passes' },
131
+ clean: { one: 'clean pass', many: 'clean passes' },
132
+ crop_1x: { one: 'crop', many: 'crops' },
133
+ upscale_2x: { one: 'upscale', many: 'upscales' },
134
+ cutout: { one: 'cutout', many: 'cutouts' },
135
+ edit: { one: 'edit', many: 'edits' },
136
+ responsive_anchor: { one: 'anchor', many: 'anchors' },
137
+ html_flow: { one: 'page flow', many: 'page flows' },
138
+ export: { one: 'export', many: 'exports' },
139
+ publish: { one: 'publish step', many: 'publish steps' },
140
+ };
141
+ const laneLabel = (kind, count) => {
142
+ const entry = LANE_LABELS[kind];
143
+ if (!entry)
144
+ return kind.replaceAll('_', ' ');
145
+ return count === 1 ? entry.one : entry.many;
146
+ };
147
+ /**
148
+ * `12 of 14 cutouts, 3 anchors retrying`. The moving lanes only: a lane that
149
+ * is complete stopped being information the tick it completed, and a waiting
150
+ * lane has nothing to say yet. At most three, largest total first, so a busy
151
+ * pipeline stays one readable clause.
152
+ */
153
+ export const laneFacts = (lanes) => {
154
+ const moving = lanes
155
+ .filter((lane) => lane.status === 'running' || lane.status === 'retrying')
156
+ .sort((a, b) => b.total - a.total)
157
+ .slice(0, 3);
158
+ return moving.map((lane) => (`${lane.completed} of ${lane.total} ${laneLabel(lane.kind, lane.total)}`
159
+ + `${lane.status === 'retrying' ? ' (retrying)' : ''}`));
160
+ };
161
+ /** `p0-home converting responsive anchors` — at most two, so a fan-out stays a clause. */
162
+ export const childFacts = (children) => (children.slice(0, 2).map((child) => `${child.id} ${stageLabel(child.stage)}`));
163
+ export const secondsSince = (iso, now) => {
164
+ if (!iso)
165
+ return undefined;
166
+ const started = Date.parse(iso);
167
+ return Number.isFinite(started) ? Math.max(0, (now - started) / 1000) : undefined;
168
+ };
169
+ export const renderProgressTick = (line) => {
170
+ const head = `${line.waiting ? 'still ' : ''}${line.scope ? `${line.scope}: ` : ''}`
171
+ + stageLabel(line.stage);
172
+ const facts = line.facts.filter((fact) => fact.length > 0);
173
+ return `[${formatDuration(line.elapsedSeconds)}] ${head}`
174
+ + `${facts.length === 0 ? '' : ` — ${facts.join(', ')}`}`;
175
+ };
176
+ export const renderRunBrief = (brief, heartbeatSeconds = 15) => {
177
+ const lines = [brief.request];
178
+ if (brief.identity && brief.identity.length > 0) {
179
+ lines.push(` identity: ${brief.identity.join('; ')}`);
180
+ }
181
+ if (brief.paid)
182
+ lines.push(` paid: ${brief.paid}`);
183
+ if (brief.free)
184
+ lines.push(` free: ${brief.free}`);
185
+ if (brief.done)
186
+ lines.push(` done: ${brief.done}`);
187
+ if (brief.expectation
188
+ && brief.expectation.typicalSeconds >= QUICK_SCOPE_SUPPRESSION_SECONDS) {
189
+ lines.push(` expect: ~${formatDuration(brief.expectation.typicalSeconds)}`
190
+ + `${brief.expectation.basis ? ` (${brief.expectation.basis})` : ''}`);
191
+ }
192
+ if (brief.blocking) {
193
+ lines.push(` this command blocks until done; progress ticks at least every ${heartbeatSeconds}s`);
194
+ }
195
+ return lines;
196
+ };
197
+ const TERMINAL_HEADLINES = {
198
+ succeeded: 'done',
199
+ partial: 'partial',
200
+ failed: 'failed',
201
+ stopped: 'stopped',
202
+ deadline: 'not finished',
203
+ detached: 'detached',
204
+ };
205
+ export const renderTerminalReport = (report) => {
206
+ const headline = `${TERMINAL_HEADLINES[report.status]}: ${report.label}`
207
+ + `${report.status === 'succeeded' ? ' succeeded' : ''}`
208
+ + ` in ${formatDuration(report.elapsedSeconds)}`
209
+ + `${report.detail ? ` — ${report.detail}` : ''}`;
210
+ const lines = [headline];
211
+ for (const artifact of report.artifacts ?? []) {
212
+ lines.push(` ${artifact.name}: ${artifact.state}`
213
+ + `${artifact.path ? ` — ${artifact.path}` : ''}`
214
+ + `${artifact.note ? ` (${artifact.note})` : ''}`);
215
+ }
216
+ if (report.spend)
217
+ lines.push(` spend: ${report.spend}`);
218
+ if (report.next)
219
+ lines.push(` next: ${report.next}`);
220
+ return lines;
221
+ };
222
+ /**
223
+ * One clock, estimate policy, cadence, scope ledger, and terminal deduper for
224
+ * all long work. The sole rendering policy for every long-running command
225
+ * (CLAUDE.md item 9): commands publish structured facts only and own no
226
+ * punctuation, elapsed clocks, estimates, overrun wording, or terminal lines.
227
+ *
228
+ * Emission policy, in the order a reader experiences it:
229
+ * - the brief prints once, carrying identity and the only initial estimate;
230
+ * - a semantic change (stage, percent, counts, lanes, children, milestone)
231
+ * prints immediately;
232
+ * - silence never exceeds the cadence: a `still` tick names what is being
233
+ * waited on and how long, which is the information a repeated
234
+ * stage-and-percent frame pretended to carry;
235
+ * - the first tick past a scope's typical says so, once, in words, and no
236
+ * number counts down at any point;
237
+ * - stages never render backwards: a late update from an earlier stage folds
238
+ * its facts into the current stage instead.
239
+ */
240
+ export const createLongRunningProgress = (args) => {
241
+ const write = args.write ?? ((line) => { process.stderr.write(`${line}\n`); });
242
+ const now = args.now ?? Date.now;
243
+ const startedAt = now();
244
+ const heartbeatMs = args.heartbeatMs ?? 15_000;
245
+ let elapsedAnchor = Math.max(0, args.initialElapsedSeconds ?? 0);
246
+ let elapsedAnchorAt = startedAt;
247
+ let observation = { stage: 'starting' };
248
+ let scopeName;
249
+ let scopeTypical = args.typicalSeconds;
250
+ let scopeStartedAt = startedAt;
251
+ let overrunAnnounced = false;
252
+ let stageOrder = [stageLabel('starting')];
253
+ let currentStage = 'starting';
254
+ let currentStageAt = startedAt;
255
+ let semantic = '';
256
+ let lastRenderedBody = '';
257
+ let lastWrittenAt = Number.NEGATIVE_INFINITY;
258
+ let terminal = false;
259
+ let timer;
260
+ const elapsedSeconds = () => (elapsedAnchor + Math.max(0, now() - elapsedAnchorAt) / 1_000);
261
+ const scopeElapsedSeconds = () => Math.max(0, (now() - scopeStartedAt) / 1_000);
262
+ const inStageSeconds = () => (secondsSince(observation.stageSince, now()) ?? Math.max(0, (now() - currentStageAt) / 1_000));
263
+ const emitLine = (line) => {
264
+ if (!args.quiet)
265
+ write(line);
266
+ lastWrittenAt = now();
267
+ };
268
+ const recordHeartbeat = () => {
269
+ args.heartbeat?.({
270
+ stage: observation.stage,
271
+ elapsedSeconds: elapsedSeconds(),
272
+ typicalSeconds: scopeTypical,
273
+ });
274
+ };
275
+ /**
276
+ * The monotonic stage guard. Stage order is the order this run first saw
277
+ * its stages; an update naming an earlier stage keeps the current stage's
278
+ * words and contributes its facts, because a pipeline whose display stage
279
+ * walks backwards reads as lost work (`publishing 99%` ->
280
+ * `materializing assets` on the board).
281
+ */
282
+ // Folding compares RENDERED labels: two raw keys that read as the same
283
+ // stage ('materialize', 'materializing_assets') must fold together, or a
284
+ // late alias lands as a fresh stage and walks the display backwards.
285
+ const foldStage = (stage) => {
286
+ const label = stageLabel(stage);
287
+ const currentLabel = stageLabel(currentStage);
288
+ const knownIndex = stageOrder.indexOf(label);
289
+ if (knownIndex === -1) {
290
+ stageOrder.push(label);
291
+ return stage;
292
+ }
293
+ return knownIndex < stageOrder.indexOf(currentLabel) ? currentStage : stage;
294
+ };
295
+ const factsFor = (value, waiting) => {
296
+ const facts = [];
297
+ if (value.total !== undefined) {
298
+ facts.push(`${value.completed ?? 0} of ${value.total} ${value.unit ?? 'complete'}`);
299
+ }
300
+ if (value.running !== undefined && value.running > 0)
301
+ facts.push(`${value.running} running`);
302
+ if (value.lanes)
303
+ facts.push(...laneFacts(value.lanes));
304
+ if (value.children)
305
+ facts.push(...childFacts(value.children));
306
+ // A first attempt is not news; a consumed retry is (a measured package
307
+ // burned three anchor-attempt windows with no client-visible word).
308
+ if (value.attempt !== undefined && value.attempt > 1)
309
+ facts.push(`attempt ${value.attempt}`);
310
+ if (value.milestone)
311
+ facts.push(value.milestone.replaceAll('_', ' '));
312
+ if (value.detail)
313
+ facts.push(value.detail);
314
+ // The wait itself is the news of a cadence tick; on a semantic tick the
315
+ // in-stage clock earns its place once the stage has held long enough for
316
+ // the reader to wonder.
317
+ const inStage = inStageSeconds();
318
+ if (waiting || inStage >= heartbeatMs / 1_000) {
319
+ facts.push(`${formatDuration(inStage)} in stage`);
320
+ }
321
+ return facts;
322
+ };
323
+ const announceOverrunIfCrossed = () => {
324
+ if (overrunAnnounced || terminal)
325
+ return;
326
+ if (scopeTypical < QUICK_SCOPE_SUPPRESSION_SECONDS)
327
+ return;
328
+ // Until a scope begins, the subject is the whole run — measured on the
329
+ // run's own age, so a waiter attaching to a twenty-minute-old run does
330
+ // not re-promise the typical it already passed.
331
+ const running = scopeName === undefined ? elapsedSeconds() : scopeElapsedSeconds();
332
+ if (running <= scopeTypical)
333
+ return;
334
+ overrunAnnounced = true;
335
+ const subject = scopeName ?? args.label;
336
+ const best = factsFor(observation, false).filter((fact) => !fact.endsWith('in stage'));
337
+ emitLine(`[${formatDuration(elapsedSeconds())}] ${subject} has been running`
338
+ + ` ${formatDuration(running)}, past its ~${formatDuration(scopeTypical)}`
339
+ + ` typical${best.length > 0 ? ` — still advancing: ${best.join(', ')}` : ''}.`
340
+ + ' The service reports stage facts, not a completion time; ticks continue.');
341
+ };
342
+ const semanticKey = (value, stage) => JSON.stringify({
343
+ stage,
344
+ scope: scopeName,
345
+ completed: value.completed,
346
+ total: value.total,
347
+ running: value.running,
348
+ lanes: value.lanes?.map((lane) => [lane.kind, lane.completed, lane.total, lane.status]),
349
+ attempt: value.attempt,
350
+ children: value.children?.map((child) => [child.id, child.stage]),
351
+ milestone: value.milestone,
352
+ detail: value.detail,
353
+ });
354
+ const emitTick = (waiting) => {
355
+ recordHeartbeat();
356
+ announceOverrunIfCrossed();
357
+ const line = renderProgressTick({
358
+ elapsedSeconds: elapsedSeconds(),
359
+ ...(scopeName ? { scope: scopeName } : {}),
360
+ stage: currentStage,
361
+ ...(waiting ? { waiting } : {}),
362
+ facts: factsFor(observation, waiting),
363
+ });
364
+ // Dedupe on what the READER sees: raw lane churn that changes no
365
+ // rendered fact must not print the same sentence again (measured:
366
+ // 'materializing assets — structure ready' twice, 6s apart). Cadence
367
+ // ticks carry an advancing in-stage clock, so liveness still prints.
368
+ const body = line.replace(/^\[[^\]]+\] /u, '');
369
+ if (body === lastRenderedBody)
370
+ return;
371
+ lastRenderedBody = body;
372
+ emitLine(line);
373
+ };
374
+ const clear = () => {
375
+ if (timer)
376
+ clearInterval(timer);
377
+ timer = undefined;
378
+ };
379
+ // The promise is a tick AT LEAST every heartbeat. A timer at the full
380
+ // interval that also skips recent writes lets the worst gap approach two
381
+ // intervals (measured 20-30s on the v2 draft capture); polling at a third
382
+ // with a two-thirds gate keeps every gap inside the promised interval.
383
+ const tick = () => {
384
+ if (terminal)
385
+ return;
386
+ if (now() - lastWrittenAt < (heartbeatMs * 2) / 3)
387
+ return;
388
+ emitTick(true);
389
+ };
390
+ if (heartbeatMs > 0) {
391
+ timer = setInterval(tick, Math.max(250, Math.round(heartbeatMs / 3)));
392
+ timer.unref?.();
393
+ }
394
+ return {
395
+ brief: (brief) => {
396
+ if (terminal)
397
+ return;
398
+ recordHeartbeat();
399
+ for (const line of renderRunBrief(brief, Math.round(heartbeatMs / 1_000)))
400
+ emitLine(line);
401
+ },
402
+ beginScope: (scope) => {
403
+ if (terminal)
404
+ return;
405
+ scopeName = scope.name;
406
+ scopeTypical = scope.typicalSeconds ?? args.typicalSeconds;
407
+ scopeStartedAt = now();
408
+ overrunAnnounced = false;
409
+ stageOrder = [];
410
+ currentStage = 'starting';
411
+ currentStageAt = now();
412
+ const sentence = scope.sentence ?? (`now ${scope.name ?? args.label}`
413
+ + `${scope.typicalSeconds !== undefined
414
+ && scope.typicalSeconds >= QUICK_SCOPE_SUPPRESSION_SECONDS
415
+ ? ` (~${formatDuration(scope.typicalSeconds)} typical`
416
+ + `${scope.basis ? `, ${scope.basis}` : ''})`
417
+ : ''}`);
418
+ emitLine(`[${formatDuration(elapsedSeconds())}] ${sentence}`);
419
+ },
420
+ update: (next) => {
421
+ if (terminal)
422
+ return;
423
+ if (next.elapsedSeconds !== undefined) {
424
+ elapsedAnchor = Math.max(0, next.elapsedSeconds);
425
+ elapsedAnchorAt = now();
426
+ }
427
+ const stage = foldStage(next.stage);
428
+ if (stage !== currentStage) {
429
+ currentStage = stage;
430
+ currentStageAt = now();
431
+ }
432
+ observation = { ...next };
433
+ const nextSemantic = semanticKey(next, stage);
434
+ if (nextSemantic === semantic) {
435
+ // Nothing material moved; the cadence timer owns liveness. Recording
436
+ // the heartbeat keeps the journal's clock honest between lines.
437
+ recordHeartbeat();
438
+ announceOverrunIfCrossed();
439
+ return;
440
+ }
441
+ semantic = nextSemantic;
442
+ emitTick(false);
443
+ },
444
+ tick,
445
+ note: (sentence) => {
446
+ if (terminal)
447
+ return;
448
+ emitLine(`[${formatDuration(elapsedSeconds())}] ${sentence}`);
449
+ },
450
+ finish: (status, report = {}) => {
451
+ if (terminal)
452
+ return;
453
+ terminal = true;
454
+ clear();
455
+ if (report.elapsedSeconds !== undefined) {
456
+ elapsedAnchor = Math.max(0, report.elapsedSeconds);
457
+ elapsedAnchorAt = now();
458
+ }
459
+ recordHeartbeat();
460
+ for (const line of renderTerminalReport({
461
+ status,
462
+ label: args.label,
463
+ elapsedSeconds: elapsedSeconds(),
464
+ ...(report.artifacts ? { artifacts: report.artifacts } : {}),
465
+ ...(report.spend ? { spend: report.spend } : {}),
466
+ ...(report.next ? { next: report.next } : {}),
467
+ ...(report.detail ? { detail: report.detail } : {}),
468
+ }))
469
+ emitLine(line);
470
+ },
471
+ dispose: clear,
472
+ };
473
+ };
103
474
  /**
104
475
  * THE mandatory closing line of any output that is not yet terminal.
105
476
  *
@@ -115,11 +486,11 @@ export const nextActionLine = (args) => {
115
486
  // A typical the run has already passed is a stale promise, and a caller that
116
487
  // reads one concludes the work is wedged. A measured run was abandoned at six
117
488
  // minutes against a five-minute quote and settled at eleven. Past the quote
118
- // the line reports the elapsed time and says the work is still going.
489
+ // the line reports the elapsed time and why it cannot replace the estimate.
119
490
  const elapsed = args.elapsedSeconds;
120
491
  const opening = elapsed !== undefined && elapsed > args.typicalSeconds
121
492
  ? `${args.what} has been running ${formatDuration(elapsed)}, past the`
122
- + ` ~${formatDuration(args.typicalSeconds)} typical, and is still working.`
493
+ + ` ~${formatDuration(args.typicalSeconds)} typical. ${REVISED_ETA_UNAVAILABLE}`
123
494
  : `${args.what} typically takes about ${formatDuration(args.typicalSeconds)}.`;
124
495
  return `${opening} Check again in ${checkAgain} with \`${args.statusCommand}\`, ${wait}.`;
125
496
  };
@@ -127,16 +498,30 @@ export const nextActionLine = (args) => {
127
498
  export const narrateCounts = (counts) => counts
128
499
  .map((entry) => `${entry.count} ${entry.label}${entry.detail ? ` (${entry.detail})` : ''}`)
129
500
  .join(', ');
130
- export const secondsSince = (iso, now) => {
131
- if (!iso)
132
- return undefined;
133
- const started = Date.parse(iso);
134
- return Number.isFinite(started) ? Math.max(0, (now - started) / 1000) : undefined;
135
- };
136
501
  /** Human-readable name for a pipeline stage, for progress lines. */
137
502
  const STAGE_LABELS = {
503
+ starting: 'starting',
504
+ claiming: 'claiming the run',
505
+ claim: 'claiming planned screens',
506
+ plan: 'planning screens',
507
+ dispatching: 'dispatching',
508
+ resuming: 'resuming recorded work',
509
+ background_start: 'starting background worker',
510
+ collecting: 'collecting artifacts',
511
+ download: 'downloading screens',
512
+ downloading: 'downloading screens',
513
+ convert: 'converting pages',
514
+ converting: 'converting pages',
515
+ branch: 'running branch',
516
+ package: 'running package conversion',
517
+ draft: 'running hosted draft',
518
+ resume: 'resuming recorded work',
138
519
  queued: 'queued',
139
520
  prepare: 'preparing',
521
+ retrieving_corpus: 'retrieving corpus references',
522
+ searching_corpus: 'searching the corpus',
523
+ downloading_references: 'downloading references',
524
+ generating: 'generating',
140
525
  extract_merge_snap: 'extracting layers',
141
526
  materialize: 'materializing assets',
142
527
  // The operation projection substitutes these display stages for the raw
@@ -151,6 +536,12 @@ const STAGE_LABELS = {
151
536
  static_export: 'rendering export',
152
537
  project_export: 'building project',
153
538
  publish: 'publishing',
539
+ terminal: 'complete',
540
+ settled: 'settled',
541
+ interrupted: 'interrupted',
542
+ stopped: 'stopped',
543
+ idle: 'idle',
544
+ running: 'running',
154
545
  // The package coordinator's own phases.
155
546
  convert_viewports: 'converting viewports',
156
547
  compose_pages: 'composing pages',
@@ -165,19 +556,24 @@ const STAGE_UNITS = {
165
556
  publish: 'page',
166
557
  };
167
558
  /**
168
- * `converting viewports 32% 1 of 3 viewports, 2 running, 1m 20s in stage`.
559
+ * The unit phrase for a package phase's counts. The convert_viewports phase
560
+ * counts VIEWPORTS: labelling them pages read `1 of 3 pages` on a one-page
561
+ * run (measured on the v2 board's branch worker log).
562
+ */
563
+ export const packageStageUnit = (stage) => (`${STAGE_UNITS[stage] ?? 'item'}s`);
564
+ /**
565
+ * `converting viewports — 1 of 3 viewports, 2 running, 1m 20s in stage`.
169
566
  *
170
- * A percent alone is the number that stalls: a phase whose children each take
171
- * minutes reports the same figure for minutes, and an agent polling it decides
172
- * the run is wedged. The counts and the time in phase are facts that keep
173
- * advancing while the percent does not. Every one of them is optional, because
174
- * a server that predates them answers without them and a renderer that demanded
175
- * them would print nothing at all.
567
+ * The percent field on the durable record is accepted but never rendered
568
+ * (owner, 2026-08-21): the package percent is the measured stuck metric
569
+ * 93% across a 17m58 anchor wait and a frozen number beside advancing
570
+ * facts reads as a wedge. The counts and the time in phase are facts that
571
+ * keep advancing while the percent does not. Every fact is optional, because
572
+ * a server that predates them answers without them and a renderer that
573
+ * demanded them would print nothing at all.
176
574
  */
177
575
  export const packageProgressLine = (progress, now = Date.now()) => {
178
- const head = progress.percent === undefined
179
- ? stageLabel(progress.stage)
180
- : `${stageLabel(progress.stage)} ${progress.percent}%`;
576
+ const head = stageLabel(progress.stage);
181
577
  const unit = STAGE_UNITS[progress.stage];
182
578
  const facts = [];
183
579
  if (progress.total !== undefined) {
@@ -192,73 +588,4 @@ export const packageProgressLine = (progress, now = Date.now()) => {
192
588
  facts.push(`${progress.pagesAvailable} page(s) ready`);
193
589
  return facts.length === 0 ? head : `${head} — ${facts.join(', ')}`;
194
590
  };
195
- /**
196
- * One writer for every package progress line, deduplicated per page.
197
- *
198
- * The poll revalidates every few seconds and mostly sees the same facts;
199
- * repeating an unchanged line is how a stream stops reading as motion. When the
200
- * server publishes its time in phase the line advances on its own, which is the
201
- * point — a percent that has not moved is exactly when a caller needs to see
202
- * that something still is.
203
- */
204
- export const createPackageProgressReporter = (args) => {
205
- const last = new Map();
206
- return (pageId, progress) => {
207
- const line = packageProgressLine(progress, (args.now ?? Date.now)());
208
- if (last.get(pageId ?? '') === line)
209
- return;
210
- last.set(pageId ?? '', line);
211
- args.write(`[${args.elapsed()}] package${pageId ? ` ${pageId}` : ''}: ${line}`);
212
- };
213
- };
214
- /**
215
- * Streams stage progress to stderr, one line per distinct stage/percent.
216
- *
217
- * stderr, not stdout, so the command's machine-readable result stays a single
218
- * clean JSON document that a caller can pipe. Deduplicated because the poll
219
- * loop revalidates every couple of seconds and mostly sees no change.
220
- */
221
- export const createProgressReporter = (args) => {
222
- const write = args.write ?? ((line) => { process.stderr.write(`${line}\n`); });
223
- const startedAt = (args.now ?? Date.now)();
224
- let last = '';
225
- let saidPastTypical = false;
226
- const seconds = () => ((args.now ?? Date.now)() - startedAt) / 1000;
227
- const elapsed = () => formatDuration(seconds());
228
- return {
229
- onProgress: (operation) => {
230
- const observed = operation.progress?.stage ?? operation.status;
231
- args.heartbeat?.({
232
- stage: observed,
233
- elapsedSeconds: seconds(),
234
- ...(args.typicalSeconds === undefined ? {} : { typicalSeconds: args.typicalSeconds }),
235
- });
236
- if (args.quiet)
237
- return;
238
- const stage = observed;
239
- const percent = operation.progress?.percent;
240
- const line = percent === undefined
241
- ? `${args.label}: ${stageLabel(stage)}`
242
- : `${args.label}: ${stageLabel(stage)} ${percent}%`;
243
- const passing = !saidPastTypical
244
- && args.typicalSeconds !== undefined
245
- && seconds() > args.typicalSeconds;
246
- if (line === last && !passing)
247
- return;
248
- last = line;
249
- if (!passing) {
250
- write(`[${elapsed()}] ${line}`);
251
- return;
252
- }
253
- saidPastTypical = true;
254
- write(`[${elapsed()}] ${line}`
255
- + `, past the ~${formatDuration(args.typicalSeconds)} typical and still working`);
256
- },
257
- done: (operation) => {
258
- if (args.quiet)
259
- return;
260
- write(`[${elapsed()}] ${args.label}: ${operation.status}`);
261
- },
262
- };
263
- };
264
591
  //# sourceMappingURL=cli-progress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-progress.js","sourceRoot":"","sources":["../src/cli-progress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-progress.js","sourceRoot":"","sources":["../src/cli-progress.ts"],"names":[],"mappings":"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"}