@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
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The one owner of the Branch page-packaging policy (CLAUDE.md item 9).
3
+ *
4
+ * A `web_page` is one continuous document, so every ordered viewport remains
5
+ * in one package page. The other declared surfaces are complete application
6
+ * states: when a logical plan page carries more than one such state, each is
7
+ * exported as its own page while the generation dependency stays on the
8
+ * original screen record.
9
+ */
10
+ const APP_STATE_SURFACES = new Set(['web_app', 'mobile_app', 'immersive']);
11
+ const TITLE_LIMIT = 200;
12
+ const PURPOSE_LIMIT = 1_000;
13
+ const clamp = (value, limit) => (value.length <= limit ? value : `${value.slice(0, limit - 1)}…`);
14
+ const screenBySlot = (screens) => (new Map(screens.map((screen) => [screen.slot, screen])));
15
+ const orderedSlots = (page, bySlot) => [...page.slots].sort((left, right) => {
16
+ const leftOrdinal = bySlot.get(left)?.viewportOrdinal ?? Number.MAX_SAFE_INTEGER;
17
+ const rightOrdinal = bySlot.get(right)?.viewportOrdinal ?? Number.MAX_SAFE_INTEGER;
18
+ return leftOrdinal - rightOrdinal || left.localeCompare(right);
19
+ });
20
+ const splitAppPage = (page, bySlot) => {
21
+ const slots = orderedSlots(page, bySlot);
22
+ const winner = page.startsFromWinner
23
+ ? [{
24
+ ...page,
25
+ slots: [],
26
+ packageLineage: {
27
+ pageIndex: page.index,
28
+ pageId: page.id,
29
+ viewportOrdinal: 1,
30
+ state: 'winner',
31
+ },
32
+ }]
33
+ : [];
34
+ const generated = slots.map((slot, slotIndex) => {
35
+ const screen = bySlot.get(slot);
36
+ const stateIndex = winner.length + slotIndex;
37
+ const keepsPageIdentity = stateIndex === 0;
38
+ const fallbackOrdinal = slotIndex + (page.startsFromWinner ? 2 : 1);
39
+ return {
40
+ ...page,
41
+ id: keepsPageIdentity ? page.id : `${page.id}-${slot}`,
42
+ // The approved winner is the only source page. A continuation of it is
43
+ // a sibling application state, not a second site entrypoint.
44
+ kind: 'additional',
45
+ title: clamp(screen?.direction?.trim() || `${page.title} (state ${stateIndex + 1})`, TITLE_LIMIT),
46
+ purpose: clamp(screen?.content?.trim() || page.purpose, PURPOSE_LIMIT),
47
+ startsFromWinner: false,
48
+ slots: [slot],
49
+ // `synthesized` describes the restored approved page only.
50
+ synthesized: undefined,
51
+ packageLineage: {
52
+ pageIndex: page.index,
53
+ pageId: page.id,
54
+ viewportOrdinal: screen?.viewportOrdinal ?? fallbackOrdinal,
55
+ state: 'screen',
56
+ slot,
57
+ },
58
+ };
59
+ });
60
+ return [...winner, ...generated];
61
+ };
62
+ /**
63
+ * Expand only logical pages that contain multiple complete app states. When no
64
+ * page fires, return the original array so the continuous-document path has no
65
+ * normalization or copying step of its own.
66
+ */
67
+ export const packageBranchPlanPages = (plan) => {
68
+ const bySlot = screenBySlot(plan.screens);
69
+ let split = false;
70
+ const pages = plan.pages.flatMap((page) => {
71
+ const stateCount = page.slots.length + (page.startsFromWinner ? 1 : 0);
72
+ if (!APP_STATE_SURFACES.has(page.surfaceType) || stateCount <= 1)
73
+ return [page];
74
+ split = true;
75
+ return splitAppPage(page, bySlot);
76
+ });
77
+ return split ? pages : plan.pages;
78
+ };
79
+ /** Normalized plans persist the decision; hand-built older fixtures derive it. */
80
+ export const branchConversionPages = (plan) => (plan.packagePages ?? packageBranchPlanPages(plan));
81
+ /** The logical planner page behind one package page. */
82
+ export const branchPackageSourcePage = (page) => ({
83
+ index: page.packageLineage?.pageIndex ?? page.index,
84
+ id: page.packageLineage?.pageId ?? page.id,
85
+ });
86
+ //# sourceMappingURL=branch-page-packaging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-page-packaging.js","sourceRoot":"","sources":["../src/branch-page-packaging.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { BranchRunEnvelope, BranchScreenStatus } from './branch-client.js';
2
2
  import type { BranchScope } from './branch-identity.js';
3
+ import { type BranchPackagePage } from './branch-page-packaging.js';
3
4
  /**
4
5
  * Plan normalisation. The wire envelope keeps ordering and per-screen facts in
5
6
  * two different places — `plan.pages[].slots` and `candidates[]` — so this is
@@ -10,6 +11,20 @@ import type { BranchScope } from './branch-identity.js';
10
11
  * source page starting at `viewportOrdinal` 2; ordinal 1 of that page is the
11
12
  * image the run branched from. Additional pages start at ordinal 1 because
12
13
  * every one of their viewports is generated.
14
+ *
15
+ * THE SOURCE PAGE IS NEVER ABSENT CLIENT-SIDE. A wire plan whose approved
16
+ * screen already ends carries no source page at all — the planner drops every
17
+ * page with no viewport, and the source page has none when `sourceEndsHere` —
18
+ * and a run that read `plan.pages` literally then never staged the winner,
19
+ * never converted it, and still reported success. The approved design IS the
20
+ * site's index page, so a missing source page is synthesized here (`slots: []`,
21
+ * `startsFromWinner`, `synthesized`) and every phase downstream sees the same
22
+ * shape whether the server sent it or not.
23
+ *
24
+ * `--max-screens` likewise never leaves a page with nothing to convert: the
25
+ * trim keeps a PREFIX of the plan's slots, and a page the cap emptied leaves
26
+ * `pages` entirely and is named in `trimmed` instead of surviving as a page the
27
+ * conversion would have to skip.
13
28
  */
14
29
  export type BranchPlannedScreen = {
15
30
  slot: string;
@@ -40,6 +55,28 @@ export type BranchPlannedPage = {
40
55
  /** True when viewport 1 of this page is the approved winner, not a slot. */
41
56
  startsFromWinner: boolean;
42
57
  slots: string[];
58
+ /**
59
+ * Present (always `true`) on a source page the wire plan omitted because the
60
+ * approved screen already ends. The client carries it regardless: the
61
+ * approved design IS the site's index page, and a run that dropped it
62
+ * converted every speculative sibling and lost the one page the user chose.
63
+ * Additive and absent otherwise.
64
+ */
65
+ synthesized?: true;
66
+ };
67
+ /** What `--max-screens` left out, named rather than silently missing. */
68
+ export type BranchPlanTrim = {
69
+ maxScreens: number;
70
+ /** Every planned slot the cap left out, in plan order. */
71
+ slots: string[];
72
+ /** Pages the cap left out whole, so no page survives with nothing to convert. */
73
+ pages: {
74
+ index: number;
75
+ id: string;
76
+ kind: 'source' | 'additional';
77
+ title: string;
78
+ slots: string[];
79
+ }[];
43
80
  };
44
81
  export type BranchNormalizedPlan = {
45
82
  runId: string;
@@ -50,7 +87,14 @@ export type BranchNormalizedPlan = {
50
87
  statusUpdate: string;
51
88
  approvedScreenSummary: string;
52
89
  pages: BranchPlannedPage[];
90
+ /**
91
+ * The pages conversion will submit. Multi-state app pages are expanded here;
92
+ * continuous web pages remain the same objects in the same order.
93
+ */
94
+ packagePages?: BranchPackagePage[];
53
95
  screens: BranchPlannedScreen[];
96
+ /** Absent when no cap was asked for, or when the cap cut nothing. */
97
+ trimmed?: BranchPlanTrim;
54
98
  };
55
99
  /** Stable, filesystem-safe, and self-describing: `p0-pricing`, `p2`. */
56
100
  export declare const branchPageId: (index: number, title: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"branch-plan.d.ts","sourceRoot":"","sources":["../src/branch-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC,CAAC;AASF,wEAAwE;AACxE,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAQ3D,CAAC;AAqBF,eAAO,MAAM,mBAAmB,GAC9B,UAAU,iBAAiB,EAC3B,SAAS;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,KACnD,oBA0DF,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,GAC9B,MAAM,oBAAoB,EAC1B,UAAU,iBAAiB,KAC1B,oBAWF,CAAC"}
1
+ {"version":3,"file":"branch-plan.d.ts","sourceRoot":"","sources":["../src/branch-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,iFAAiF;IACjF,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AASF,wEAAwE;AACxE,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAQ3D,CAAC;AA2DF,eAAO,MAAM,mBAAmB,GAC9B,UAAU,iBAAiB,EAC3B,SAAS;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,KACnD,oBA8FF,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,GAC9B,MAAM,oBAAoB,EAC1B,UAAU,iBAAiB,KAC1B,oBAWF,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { packageBranchPlanPages, } from './branch-page-packaging.js';
1
2
  const PAGE_TITLE_LIMIT = 200;
2
3
  const PAGE_PURPOSE_LIMIT = 1_000;
3
4
  const clamp = (value, limit) => (value.length <= limit ? value : `${value.slice(0, limit - 1)}…`);
@@ -11,6 +12,41 @@ export const branchPageId = (index, title) => {
11
12
  .replace(/-+$/u, '');
12
13
  return slug ? `p${index}-${slug}` : `p${index}`;
13
14
  };
15
+ /**
16
+ * The web board's own name for its first column, which is always this page —
17
+ * `SOURCE_COLUMN_TITLE` in `apps/web/src/pages/branch/branchColumns.ts`. The
18
+ * CLI and the board name the same page the same thing.
19
+ */
20
+ const SOURCE_PAGE_TITLE = 'Source design';
21
+ /**
22
+ * The wire pages, with the source page restored when the planner dropped it.
23
+ *
24
+ * Page 0 is the source page by the server's own construction — indexes are
25
+ * assigned before pages with no viewport are filtered out — so synthesizing at
26
+ * index 0 can never collide with a page the server sent.
27
+ */
28
+ const wirePages = (plan) => {
29
+ const pages = plan.pages.map((page) => ({ page, synthesized: false }));
30
+ if (pages.some((entry) => entry.page.kind === 'source'))
31
+ return pages;
32
+ return [
33
+ {
34
+ synthesized: true,
35
+ page: {
36
+ index: 0,
37
+ kind: 'source',
38
+ title: SOURCE_PAGE_TITLE,
39
+ pageType: 'other',
40
+ // Whatever the rest of this plan is, the approved design is one of them.
41
+ surfaceType: plan.pages[0]?.surfaceType ?? 'web_page',
42
+ purpose: plan.approvedScreenSummary ?? '',
43
+ sourceEndsHere: true,
44
+ slots: [],
45
+ },
46
+ },
47
+ ...pages,
48
+ ];
49
+ };
14
50
  const screenFor = (candidate) => {
15
51
  if (candidate.pageIndex === undefined || candidate.viewportOrdinal === undefined)
16
52
  return null;
@@ -37,36 +73,50 @@ export const normalizeBranchPlan = (envelope, options) => {
37
73
  + ' branched.');
38
74
  }
39
75
  const bySlot = new Map(envelope.candidates.map((candidate) => [candidate.slot, candidate]));
76
+ const declared = wirePages(plan);
40
77
  // Plan order is page order then viewport order, which is also slot order.
41
78
  // Everything downstream — the footer seed, the dependency chains, the
42
79
  // `--max-screens` trim — depends on keeping exactly that sequence.
43
- const orderedSlots = plan.pages.flatMap((page) => ((page.slots ?? []).filter((slot) => bySlot.has(slot))));
80
+ const orderedSlots = declared.flatMap((entry) => ((entry.page.slots ?? []).filter((slot) => bySlot.has(slot))));
44
81
  const scopedPages = options.scope === 'page'
45
- ? plan.pages.filter((page) => page.kind === 'source')
46
- : plan.pages;
47
- const scopedSlots = new Set(scopedPages.flatMap((page) => page.slots ?? []));
48
- const trimmed = options.maxScreens === undefined
82
+ ? declared.filter((entry) => entry.page.kind === 'source')
83
+ : declared;
84
+ const scopedSlots = new Set(scopedPages.flatMap((entry) => entry.page.slots ?? []));
85
+ const planned = orderedSlots.filter((slot) => scopedSlots.has(slot));
86
+ // A PREFIX, which is dependency-closed: the footer seed is the first
87
+ // footer-bearing slot in plan order and every `dependsOnSlot` points
88
+ // backwards, so keeping the first n can never orphan one that survives.
89
+ const kept = options.maxScreens === undefined
49
90
  ? null
50
- : new Set(orderedSlots.filter((slot) => scopedSlots.has(slot)).slice(0, options.maxScreens));
51
- const keeps = (slot) => (scopedSlots.has(slot) && (trimmed === null || trimmed.has(slot)));
52
- const pages = scopedPages.map((page) => ({
53
- index: page.index,
54
- id: branchPageId(page.index, page.title ?? ''),
55
- kind: page.kind,
56
- title: clamp(page.title ?? `Page ${page.index}`, PAGE_TITLE_LIMIT),
57
- pageType: page.pageType ?? 'other',
58
- surfaceType: page.surfaceType ?? 'web_page',
59
- purpose: clamp(page.purpose ?? '', PAGE_PURPOSE_LIMIT),
60
- startsFromWinner: page.kind === 'source',
61
- slots: (page.slots ?? []).filter(keeps),
91
+ : new Set(planned.slice(0, options.maxScreens));
92
+ const keeps = (slot) => (scopedSlots.has(slot) && (kept === null || kept.has(slot)));
93
+ const all = scopedPages.map((entry) => ({
94
+ index: entry.page.index,
95
+ id: branchPageId(entry.page.index, entry.page.title ?? ''),
96
+ kind: entry.page.kind,
97
+ title: clamp(entry.page.title ?? `Page ${entry.page.index}`, PAGE_TITLE_LIMIT),
98
+ pageType: entry.page.pageType ?? 'other',
99
+ surfaceType: entry.page.surfaceType ?? 'web_page',
100
+ purpose: clamp(entry.page.purpose ?? '', PAGE_PURPOSE_LIMIT),
101
+ startsFromWinner: entry.page.kind === 'source',
102
+ slots: (entry.page.slots ?? []).filter(keeps),
103
+ ...(entry.synthesized ? { synthesized: true } : {}),
62
104
  }));
105
+ // A page the cap emptied has nothing to convert, so it leaves the plan and is
106
+ // named instead. The source page never can: its viewport 1 is the winner.
107
+ const emptied = kept === null
108
+ ? []
109
+ : all.filter((page) => !page.startsFromWinner && page.slots.length === 0);
110
+ const emptiedIds = new Set(emptied.map((page) => page.id));
111
+ const leftOut = kept === null ? [] : planned.filter((slot) => !kept.has(slot));
112
+ const pages = all.filter((page) => !emptiedIds.has(page.id));
63
113
  const screens = orderedSlots
64
114
  .filter(keeps)
65
115
  .flatMap((slot) => {
66
116
  const screen = screenFor(bySlot.get(slot));
67
117
  return screen ? [screen] : [];
68
118
  });
69
- return {
119
+ const normalized = {
70
120
  runId: envelope.id,
71
121
  concept: envelope.concept,
72
122
  aspect: envelope.aspect,
@@ -76,7 +126,28 @@ export const normalizeBranchPlan = (envelope, options) => {
76
126
  approvedScreenSummary: plan.approvedScreenSummary ?? '',
77
127
  pages,
78
128
  screens,
129
+ ...(leftOut.length > 0
130
+ ? {
131
+ trimmed: {
132
+ maxScreens: options.maxScreens,
133
+ slots: leftOut,
134
+ pages: emptied.map((page) => ({
135
+ index: page.index,
136
+ id: page.id,
137
+ kind: page.kind,
138
+ title: page.title,
139
+ // Every slot it planned in scope, all of them outside the cap.
140
+ slots: (scopedPages.find((entry) => entry.page.index === page.index)?.page.slots ?? [])
141
+ .filter((slot) => scopedSlots.has(slot)),
142
+ })),
143
+ },
144
+ }
145
+ : {}),
79
146
  };
147
+ const packagePages = packageBranchPlanPages(normalized);
148
+ // A must-stay-silent `web_page` plan keeps the exact pre-policy record shape.
149
+ // Persist the additive assembly decision only when an app page really split.
150
+ return packagePages === pages ? normalized : { ...normalized, packagePages };
80
151
  };
81
152
  /** Refresh statuses from a later envelope without re-deriving the structure. */
82
153
  export const applyBranchEnvelope = (plan, envelope) => {
@@ -1 +1 @@
1
- {"version":3,"file":"branch-plan.js","sourceRoot":"","sources":["../src/branch-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch-plan.js","sourceRoot":"","sources":["../src/branch-plan.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,sBAAsB,GAEvB,MAAM,4BAA4B,CAAC;AAmGpC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,KAAa,EAAU,EAAE,CAAC,CACtD,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAChE,CAAC;AAEF,wEAAwE;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,KAAa,EAAU,EAAE;IACnE,MAAM,IAAI,GAAG,KAAK;SACf,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,SAAS,GAAG,CAChB,IAA4C,EACc,EAAE;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,OAAO;QACL;YACE,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE;gBACJ,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,iBAAiB;gBACxB,QAAQ,EAAE,OAAO;gBACjB,yEAAyE;gBACzE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,UAAU;gBACrD,OAAO,EAAE,IAAI,CAAC,qBAAqB,IAAI,EAAE;gBACzC,cAAc,EAAE,IAAI;gBACpB,KAAK,EAAE,EAAE;aACV;SACF;QACD,GAAG,KAAK;KACT,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,SAAkC,EAA8B,EAAE;IACnF,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,eAAe,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC9F,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,IAAI;QAChC,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,IAAI;QAChC,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,KAAK;QAC7C,aAAa,EAAE,SAAS,CAAC,aAAa,IAAI,IAAI;QAC9C,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,QAA2B,EAC3B,OAAoD,EAC9B,EAAE;IACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,OAAO,QAAQ,CAAC,EAAE,uEAAuE;cACvF,YAAY,CACf,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAEjC,0EAA0E;IAC1E,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC/C,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAC5D,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,KAAK,MAAM;QAC1C,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC1D,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,qEAAqE;IACrE,qEAAqE;IACrE,wEAAwE;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS;QAC3C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,CACvC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAC3D,CAAC;IAEF,MAAM,GAAG,GAAwB,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3D,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;QACvB,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;QACrB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC;QAC9E,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO;QACxC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,UAAU;QACjD,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,kBAAkB,CAAC;QAC5D,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC9C,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC,CAAC,CAAC;IAEJ,8EAA8E;IAC9E,0EAA0E;IAC1E,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI;QAC3B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,YAAY;SACzB,MAAM,CAAC,KAAK,CAAC;SACb,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEL,MAAM,UAAU,GAAyB;QACvC,KAAK,EAAE,QAAQ,CAAC,EAAE;QAClB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;QACnC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;QACrC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,IAAI,EAAE;QACvD,KAAK;QACL,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC;gBACA,OAAO,EAAE;oBACP,UAAU,EAAE,OAAO,CAAC,UAAW;oBAC/B,KAAK,EAAE,OAAO;oBACd,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,+DAA+D;wBAC/D,KAAK,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;6BACpF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;qBAC3C,CAAC,CAAC;iBACJ;aACF;YACD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,MAAM,YAAY,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACxD,8EAA8E;IAC9E,6EAA6E;IAC7E,OAAO,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,YAAY,EAAE,CAAC;AAC/E,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAA0B,EAC1B,QAA2B,EACL,EAAE;IACxB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO;QACL,GAAG,IAAI;QACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS;gBAAE,OAAO,MAAM,CAAC;YAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAChD,CAAC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { BranchScope } from './branch-identity.js';
1
2
  import type { BranchNormalizedPlan } from './branch-plan.js';
2
3
  import type { BranchCompletion } from './branch-run-record.js';
3
4
  /**
@@ -15,6 +16,8 @@ export type BranchProgressScreen = {
15
16
  status: 'pending' | 'dispatched' | 'succeeded' | 'failed' | 'blocked';
16
17
  pageIndex: number;
17
18
  viewportOrdinal: number;
19
+ generationPageIndex?: number;
20
+ generationViewportOrdinal?: number;
18
21
  dispatchedAt?: string;
19
22
  waitingOn?: string;
20
23
  };
@@ -44,6 +47,10 @@ export type BranchProgressRecord = {
44
47
  startedAt: string;
45
48
  updatedAt: string;
46
49
  screens: BranchProgressScreen[];
50
+ /** Exact conversion-page count after surface-aware packaging. */
51
+ pageCount?: number;
52
+ /** Planner page groups before complete app states become separate pages. */
53
+ logicalPageCount?: number;
47
54
  /** Absent until the first page starts converting. */
48
55
  packages?: BranchProgressPackage[];
49
56
  };
@@ -61,10 +68,17 @@ export type BranchStatusCounts = {
61
68
  };
62
69
  export type BranchStatusReport = {
63
70
  outDir: string;
71
+ /** The durable scope selects the whole-run estimate for `next --wait`. */
72
+ scope?: BranchScope;
64
73
  runId?: string;
65
74
  phase: BranchProgressPhase;
66
75
  complete: boolean;
76
+ /** The completion sentinel's outcome; terminal does not imply success. */
77
+ terminalStatus?: BranchCompletion['status'];
67
78
  counts: BranchStatusCounts;
79
+ /** Exact conversion-page count after surface-aware packaging. */
80
+ pageCount?: number;
81
+ logicalPageCount?: number;
68
82
  screens: BranchProgressScreen[];
69
83
  /** Always populated: what is moving, and how long it has been moving. */
70
84
  narrative: string;
@@ -78,6 +92,12 @@ export type BranchStatusReport = {
78
92
  completionPath?: string;
79
93
  planPath?: string;
80
94
  pages?: BranchCompletion['pages'];
95
+ /** A local worker closed with an error after the last durable progress. */
96
+ interruption?: {
97
+ command: 'branch execute' | 'branch resume';
98
+ errorClass: string;
99
+ occurredAt: string;
100
+ };
81
101
  };
82
102
  /**
83
103
  * One line of motion plus, while anything remains, one line of instruction.
@@ -90,6 +110,8 @@ export declare const summarizeBranchProgress: (args: {
90
110
  phase: BranchProgressPhase;
91
111
  screens: readonly BranchProgressScreen[];
92
112
  packages?: readonly BranchProgressPackage[];
113
+ pageCount?: number;
114
+ logicalPageCount?: number;
93
115
  startedAt?: string;
94
116
  updatedAt?: string;
95
117
  completion?: BranchCompletion;
@@ -1 +1 @@
1
- {"version":3,"file":"branch-progress.d.ts","sourceRoot":"","sources":["../src/branch-progress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch-progress.d.ts","sourceRoot":"","sources":["../src/branch-progress.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import { BRANCH_PAGE_CONCURRENCY_DEFAULT, OPERATION_DURATION_HINTS, elapsedAgainstTypical, formatDuration, narrateCounts, nextActionLine, packageProgressLine, secondsSince, } from './cli-progress.js';
5
5
  import { branchBlockedSlots } from './branch-schedule.js';
6
+ import { branchConversionPages } from './branch-page-packaging.js';
6
7
  /**
7
8
  * The motion surface. A long command that answers a poll with bare absence is
8
9
  * the measured trigger for a caller deciding the process stalled and improvising
@@ -37,6 +38,7 @@ export const readBranchProgress = async (file) => {
37
38
  }
38
39
  };
39
40
  export const branchProgressScreens = (plan, dispatchedAt) => {
41
+ const packagePlacementBySlot = new Map(branchConversionPages(plan).flatMap((page, index) => (page.slots.map((slot) => [slot, { page, index }]))));
40
42
  const blocked = new Map(branchBlockedSlots(plan.screens.map((screen) => ({
41
43
  slot: screen.slot,
42
44
  status: screen.status,
@@ -45,11 +47,18 @@ export const branchProgressScreens = (plan, dispatchedAt) => {
45
47
  }))).map((entry) => [entry.slot, entry]));
46
48
  return plan.screens.map((screen) => {
47
49
  const block = blocked.get(screen.slot);
50
+ const packaged = packagePlacementBySlot.get(screen.slot);
51
+ const pageIndex = packaged?.index ?? screen.pageIndex;
52
+ const viewportOrdinal = packaged?.page.packageLineage ? 1 : screen.viewportOrdinal;
48
53
  return {
49
54
  slot: screen.slot,
50
55
  status: block ? 'blocked' : screen.status,
51
- pageIndex: screen.pageIndex,
52
- viewportOrdinal: screen.viewportOrdinal,
56
+ pageIndex,
57
+ viewportOrdinal,
58
+ ...(pageIndex === screen.pageIndex ? {} : { generationPageIndex: screen.pageIndex }),
59
+ ...(viewportOrdinal === screen.viewportOrdinal
60
+ ? {}
61
+ : { generationViewportOrdinal: screen.viewportOrdinal }),
53
62
  ...(dispatchedAt[screen.slot] ? { dispatchedAt: dispatchedAt[screen.slot] } : {}),
54
63
  ...(block
55
64
  ? { waitingOn: block.waitingOn }
@@ -81,17 +90,21 @@ const generatingDetail = (screens, now) => {
81
90
  * stage`. One line per page still converting, so a poll during the longest half
82
91
  * of the run reports advancing facts rather than one unchanging sentence.
83
92
  */
84
- const packageDetail = (packages, now) => {
85
- if (packages.length === 0)
93
+ const packageDetail = (packages, pageCount, now) => {
94
+ if (packages.length === 0 && pageCount === undefined)
86
95
  return undefined;
87
96
  // A settled page has nothing left to narrate, so it becomes a tally and the
88
97
  // detail stays on the pages that are still moving.
89
98
  const converted = packages.filter((entry) => entry.stage === 'succeeded').length;
90
99
  const failed = packages.filter((entry) => entry.stage === 'failed').length;
91
100
  const moving = packages.filter((entry) => entry.stage !== 'succeeded' && entry.stage !== 'failed');
101
+ const notStarted = pageCount === undefined ? 0 : Math.max(0, pageCount - packages.length);
92
102
  return [
93
- ...(converted > 0 ? [`${converted} converted`] : []),
103
+ ...(pageCount === undefined
104
+ ? (converted > 0 ? [`${converted} converted`] : [])
105
+ : [`${converted} of ${pageCount} converted`]),
94
106
  ...(failed > 0 ? [`${failed} failed`] : []),
107
+ ...(notStarted > 0 ? [`${notStarted} not started`] : []),
95
108
  ...moving.map((entry) => `${entry.pageId} ${packageProgressLine(entry, now)}`),
96
109
  ].join('; ');
97
110
  };
@@ -113,14 +126,35 @@ export const summarizeBranchProgress = (args) => {
113
126
  ? `Branch run ${settled.runId} finished ${settled.status}:`
114
127
  + ` ${settled.succeededCount} of ${settled.screenCount} screen(s) generated,`
115
128
  + ` ${settled.failedCount} failed, ${settled.blockedCount} blocked.`
129
+ + (settled.pageCount === undefined
130
+ ? ''
131
+ : ` ${settled.convertedPageCount ?? 0} of ${settled.pageCount} conversion page(s) landed.`)
116
132
  + ` Screens and pages are on disk under ${settled.outDir}.`
133
+ // Two facts a page-blind tally cannot carry, and both change what the
134
+ // reader should do next: a site without its approved page has no index,
135
+ // and a capped run is short by instruction rather than by failure.
136
+ + (settled.winnerPageFailed
137
+ ? ' The approved page did not convert, so this site has no index page.'
138
+ : '')
139
+ + (settled.trimmed
140
+ ? ` --max-screens ${settled.trimmed.maxScreens} left out`
141
+ + ` ${settled.trimmed.slots.length} planned screen(s)`
142
+ + `${settled.trimmed.pages.length > 0
143
+ ? ` and ${settled.trimmed.pages.length} planned page(s) whole`
144
+ : ''}.`
145
+ : '')
117
146
  : `Branch run ${args.runId ?? '(unclaimed)'} is finished; read the completion sentinel.`;
118
147
  return {
119
148
  outDir: args.outDir,
120
149
  ...(args.runId ? { runId: args.runId } : {}),
121
150
  phase: 'terminal',
122
151
  complete: true,
152
+ ...(settled ? { terminalStatus: settled.status } : {}),
123
153
  counts,
154
+ ...(settled?.pageCount === undefined ? {} : { pageCount: settled.pageCount }),
155
+ ...(settled?.logicalPageCount === undefined
156
+ ? {}
157
+ : { logicalPageCount: settled.logicalPageCount }),
124
158
  screens: [...args.screens],
125
159
  narrative,
126
160
  ...(args.startedAt ? { startedAt: args.startedAt } : {}),
@@ -130,8 +164,10 @@ export const summarizeBranchProgress = (args) => {
130
164
  };
131
165
  }
132
166
  const converting = args.phase === 'converting'
133
- ? `Converting each whole page as one package, up to ${BRANCH_PAGE_CONCURRENCY_DEFAULT} at a`
134
- + ` time (${formatDuration(OPERATION_DURATION_HINTS.branchPackage)} typical per page).`
167
+ ? `Converting${args.pageCount === undefined ? '' : ` ${args.pageCount}`} page(s) as separate`
168
+ + ` packages, up to ${BRANCH_PAGE_CONCURRENCY_DEFAULT} at a time; continuous web pages keep`
169
+ + ` ordered viewports together and complete app states are pages`
170
+ + ` (${formatDuration(OPERATION_DURATION_HINTS.branchPackage)} typical per page).`
135
171
  : null;
136
172
  const phaseNarrative = args.phase === 'claiming'
137
173
  ? `Planning the screens (${elapsedAgainstTypical(elapsedSeconds ?? 0, OPERATION_DURATION_HINTS.branchClaim)}); no image bought yet.`
@@ -157,7 +193,7 @@ export const summarizeBranchProgress = (args) => {
157
193
  : OPERATION_DURATION_HINTS.branchScreen;
158
194
  // Pages convert as their own screens land, so package motion belongs on a
159
195
  // dispatching report too — that is exactly when the two overlap.
160
- const detail = packageDetail(packages, now);
196
+ const detail = packageDetail(packages, args.pageCount, now);
161
197
  const narrated = detail ? `${phaseNarrative} pages: ${detail}` : phaseNarrative;
162
198
  return {
163
199
  outDir: args.outDir,
@@ -165,6 +201,8 @@ export const summarizeBranchProgress = (args) => {
165
201
  phase: args.phase,
166
202
  complete: false,
167
203
  counts,
204
+ ...(args.pageCount === undefined ? {} : { pageCount: args.pageCount }),
205
+ ...(args.logicalPageCount === undefined ? {} : { logicalPageCount: args.logicalPageCount }),
168
206
  screens: [...args.screens],
169
207
  ...(packages.length > 0 ? { packages: [...packages] } : {}),
170
208
  narrative: elapsedSeconds === undefined
@@ -1 +1 @@
1
- {"version":3,"file":"branch-progress.js","sourceRoot":"","sources":["../src/branch-progress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch-progress.js","sourceRoot":"","sources":["../src/branch-progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAInE;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAuD/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,CAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAC5C,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,IAAY,EACZ,MAA4B,EACb,EAAE;IACjB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,UAAU,EAAE,MAAM,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACjE,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,IAAY,EAC+B,EAAE;IAC7C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAyB,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAA0B,EAC1B,YAA8C,EACtB,EAAE;IAC1B,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAU,CAAC,CAC3D,CAAC,CAAC,CAAC;IACJ,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,QAAQ,EAAE,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;QACtD,MAAM,eAAe,GAAG,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;QACnF,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;YAClD,SAAS;YACT,eAAe;YACf,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YACpF,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe;gBAC5C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,yBAAyB,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;YAC1D,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,GAAG,CAAC,KAAK;gBACP,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;gBAChC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa;oBACnD,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE;oBACrC,CAAC,CAAC,EAAE,CAAC;SACV,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA6CF,MAAM,YAAY,GAAG,CAAC,OAAwC,EAAsB,EAAE,CAAC,CAAC;IACtF,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM;IAC1E,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,MAAM;IAC7E,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;IACvE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;IACvE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;CACtE,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CACvB,OAAwC,EACxC,GAAW,EACS,EAAE;IACtB,MAAM,OAAO,GAAG,OAAO;SACpB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC;SAClD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;SACvD,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAC5F,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAAG,CACpB,QAA0C,EAC1C,SAA6B,EAC7B,GAAW,EACS,EAAE;IACtB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvE,4EAA4E;IAC5E,mDAAmD;IACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IACjF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,WAAW,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IACnG,MAAM,UAAU,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1F,OAAO;QACL,GAAG,CAAC,SAAS,KAAK,SAAS;YACzB,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,CAAC,CAAC,CAAC,GAAG,SAAS,OAAO,SAAS,YAAY,CAAC,CAAC;QAC/C,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;KAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAavC,EAAsB,EAAE;IACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC;IAEvE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAChC,MAAM,SAAS,GAAG,OAAO;YACvB,CAAC,CAAC,cAAc,OAAO,CAAC,KAAK,aAAa,OAAO,CAAC,MAAM,GAAG;kBACvD,IAAI,OAAO,CAAC,cAAc,OAAO,OAAO,CAAC,WAAW,uBAAuB;kBAC3E,IAAI,OAAO,CAAC,WAAW,YAAY,OAAO,CAAC,YAAY,WAAW;kBAClE,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;oBAChC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,IAAI,OAAO,CAAC,kBAAkB,IAAI,CAAC,OAAO,OAAO,CAAC,SAAS,6BAA6B,CAAC;kBAC3F,wCAAwC,OAAO,CAAC,MAAM,GAAG;gBAC3D,sEAAsE;gBACtE,wEAAwE;gBACxE,mEAAmE;kBACjE,CAAC,OAAO,CAAC,gBAAgB;oBACzB,CAAC,CAAC,qEAAqE;oBACvE,CAAC,CAAC,EAAE,CAAC;kBACL,CAAC,OAAO,CAAC,OAAO;oBAChB,CAAC,CAAC,kBAAkB,OAAO,CAAC,OAAO,CAAC,UAAU,WAAW;0BACrD,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,oBAAoB;0BACpD,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;4BACnC,CAAC,CAAC,QAAQ,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,wBAAwB;4BAC9D,CAAC,CAAC,EAAE,GAAG;oBACX,CAAC,CAAC,EAAE,CAAC;YACT,CAAC,CAAC,cAAc,IAAI,CAAC,KAAK,IAAI,aAAa,6CAA6C,CAAC;QAC3F,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,IAAI;YACd,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,MAAM;YACN,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7E,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACnD,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,SAAS;YACT,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,KAAK,YAAY;QAC5C,CAAC,CAAC,aAAa,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,sBAAsB;cACzF,oBAAoB,+BAA+B,uCAAuC;cAC1F,+DAA+D;cAC/D,KAAK,cAAc,CAAC,wBAAwB,CAAC,aAAa,CAAC,qBAAqB;QACpF,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,KAAK,UAAU;QAC9C,CAAC,CAAC,yBAAyB,qBAAqB,CAAC,cAAc,IAAI,CAAC,EAAE,wBAAwB,CAAC,WAAW,CAAC,yBAAyB;QACpI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAa;YAC5B,CAAC,CAAC,gCAAgC,MAAM,CAAC,QAAQ,YAAY;YAC7D,CAAC,CAAC,UAAU;gBACV,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,YAAY,aAAa,CAAC;oBAC1B,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;oBAC7C;wBACE,KAAK,EAAE,YAAY;wBACnB,KAAK,EAAE,MAAM,CAAC,UAAU;wBACxB,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACjG;oBACD,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;oBAC3D,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;oBAC3C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;iBAC1C,CAAC,EAAE,CAAC;IAEX,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,KAAK,UAAU;QAC9C,CAAC,CAAC,wBAAwB,CAAC,WAAW;QACtC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY;YAC3B,CAAC,CAAC,wBAAwB,CAAC,aAAa;YACxC,CAAC,CAAC,wBAAwB,CAAC,YAAY,CAAC;IAE5C,0EAA0E;IAC1E,iEAAiE;IACjE,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,cAAc,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;IAEhF,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,MAAM;QACN,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3F,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,SAAS,EAAE,cAAc,KAAK,SAAS;YACrC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,GAAG,QAAQ,MAAM,cAAc,CAAC,cAAc,CAAC,eAAe;QAClE,UAAU,EAAE,cAAc,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,YAAY;gBAC/B,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU;oBACzB,CAAC,CAAC,eAAe;oBACjB,CAAC,CAAC,aAAa;YACnB,cAAc;YACd,aAAa;YACb,wEAAwE;YACxE,2EAA2E;YAC3E,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;YAC3D,QAAQ,EAAE,mFAAmF;SAC9F,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;KACxF,CAAC;AACJ,CAAC,CAAC"}