@12ui/design 0.2.66 → 0.2.68

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 (302) hide show
  1. package/README.md +42 -35
  2. package/SKILL.md +1 -1
  3. package/dist/branch-client.d.ts +4 -2
  4. package/dist/branch-client.d.ts.map +1 -1
  5. package/dist/branch-client.js +36 -21
  6. package/dist/branch-client.js.map +1 -1
  7. package/dist/branch-conversion-engine.d.ts +8 -0
  8. package/dist/branch-conversion-engine.d.ts.map +1 -0
  9. package/dist/branch-conversion-engine.js +43 -0
  10. package/dist/branch-conversion-engine.js.map +1 -0
  11. package/dist/branch-execution.d.ts +12 -0
  12. package/dist/branch-execution.d.ts.map +1 -1
  13. package/dist/branch-execution.js +62 -39
  14. package/dist/branch-execution.js.map +1 -1
  15. package/dist/branch-local-conversion.d.ts +27 -0
  16. package/dist/branch-local-conversion.d.ts.map +1 -0
  17. package/dist/branch-local-conversion.js +80 -0
  18. package/dist/branch-local-conversion.js.map +1 -0
  19. package/dist/branch-local-publication.d.ts +15 -0
  20. package/dist/branch-local-publication.d.ts.map +1 -0
  21. package/dist/branch-local-publication.js +111 -0
  22. package/dist/branch-local-publication.js.map +1 -0
  23. package/dist/branch-page-conversion.d.ts +7 -0
  24. package/dist/branch-page-conversion.d.ts.map +1 -1
  25. package/dist/branch-page-conversion.js +13 -0
  26. package/dist/branch-page-conversion.js.map +1 -1
  27. package/dist/branch-progress.d.ts +2 -0
  28. package/dist/branch-progress.d.ts.map +1 -1
  29. package/dist/branch-progress.js.map +1 -1
  30. package/dist/branch-run-record.d.ts +24 -2
  31. package/dist/branch-run-record.d.ts.map +1 -1
  32. package/dist/branch-run-record.js +3 -2
  33. package/dist/branch-run-record.js.map +1 -1
  34. package/dist/branch-status.d.ts.map +1 -1
  35. package/dist/branch-status.js +21 -3
  36. package/dist/branch-status.js.map +1 -1
  37. package/dist/branch-winner.d.ts.map +1 -1
  38. package/dist/branch-winner.js +1 -2
  39. package/dist/branch-winner.js.map +1 -1
  40. package/dist/cli-arguments.d.ts.map +1 -1
  41. package/dist/cli-arguments.js +1 -0
  42. package/dist/cli-arguments.js.map +1 -1
  43. package/dist/cli-branch-command.d.ts.map +1 -1
  44. package/dist/cli-branch-command.js +7 -2
  45. package/dist/cli-branch-command.js.map +1 -1
  46. package/dist/cli-capabilities.d.ts +29 -15
  47. package/dist/cli-capabilities.d.ts.map +1 -1
  48. package/dist/cli-capabilities.js +30 -23
  49. package/dist/cli-capabilities.js.map +1 -1
  50. package/dist/cli-codex-readiness.d.ts +11 -0
  51. package/dist/cli-codex-readiness.d.ts.map +1 -0
  52. package/dist/cli-codex-readiness.js +72 -0
  53. package/dist/cli-codex-readiness.js.map +1 -0
  54. package/dist/cli-conversion-engine.d.ts +11 -0
  55. package/dist/cli-conversion-engine.d.ts.map +1 -0
  56. package/dist/cli-conversion-engine.js +26 -0
  57. package/dist/cli-conversion-engine.js.map +1 -0
  58. package/dist/cli-conversion-receipt.d.ts +28 -0
  59. package/dist/cli-conversion-receipt.d.ts.map +1 -0
  60. package/dist/cli-conversion-receipt.js +130 -0
  61. package/dist/cli-conversion-receipt.js.map +1 -0
  62. package/dist/cli-convert-command.d.ts.map +1 -1
  63. package/dist/cli-convert-command.js +12 -5
  64. package/dist/cli-convert-command.js.map +1 -1
  65. package/dist/cli-corpus-command.d.ts.map +1 -1
  66. package/dist/cli-corpus-command.js +4 -5
  67. package/dist/cli-corpus-command.js.map +1 -1
  68. package/dist/cli-corpus-evidence.d.ts +0 -1
  69. package/dist/cli-corpus-evidence.d.ts.map +1 -1
  70. package/dist/cli-corpus-evidence.js +9 -50
  71. package/dist/cli-corpus-evidence.js.map +1 -1
  72. package/dist/cli-corpus-manifest.d.ts +18 -0
  73. package/dist/cli-corpus-manifest.d.ts.map +1 -0
  74. package/dist/cli-corpus-manifest.js +83 -0
  75. package/dist/cli-corpus-manifest.js.map +1 -0
  76. package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
  77. package/dist/cli-corpus-reference-downloads.js +5 -3
  78. package/dist/cli-corpus-reference-downloads.js.map +1 -1
  79. package/dist/cli-corpus-run.d.ts.map +1 -1
  80. package/dist/cli-corpus-run.js +19 -8
  81. package/dist/cli-corpus-run.js.map +1 -1
  82. package/dist/cli-corpus-types.d.ts +6 -6
  83. package/dist/cli-corpus-types.d.ts.map +1 -1
  84. package/dist/cli-engine.d.ts +10 -0
  85. package/dist/cli-engine.d.ts.map +1 -0
  86. package/dist/cli-engine.js +28 -0
  87. package/dist/cli-engine.js.map +1 -0
  88. package/dist/cli-help/conversion.d.ts +10 -3
  89. package/dist/cli-help/conversion.d.ts.map +1 -1
  90. package/dist/cli-help/conversion.js +14 -6
  91. package/dist/cli-help/conversion.js.map +1 -1
  92. package/dist/cli-help/design.d.ts +6 -6
  93. package/dist/cli-help/design.d.ts.map +1 -1
  94. package/dist/cli-help/design.js +8 -7
  95. package/dist/cli-help/design.js.map +1 -1
  96. package/dist/cli-help/index.d.ts +18 -11
  97. package/dist/cli-help/index.d.ts.map +1 -1
  98. package/dist/cli-help/setup.d.ts +2 -2
  99. package/dist/cli-help/setup.js +3 -3
  100. package/dist/cli-help/setup.js.map +1 -1
  101. package/dist/cli-image-backend.d.ts +3 -0
  102. package/dist/cli-image-backend.d.ts.map +1 -0
  103. package/dist/cli-image-backend.js +12 -0
  104. package/dist/cli-image-backend.js.map +1 -0
  105. package/dist/cli-local-conversion.d.ts +17 -0
  106. package/dist/cli-local-conversion.d.ts.map +1 -0
  107. package/dist/cli-local-conversion.js +74 -0
  108. package/dist/cli-local-conversion.js.map +1 -0
  109. package/dist/cli-local-dispatch.d.ts +4 -0
  110. package/dist/cli-local-dispatch.d.ts.map +1 -0
  111. package/dist/cli-local-dispatch.js +102 -0
  112. package/dist/cli-local-dispatch.js.map +1 -0
  113. package/dist/cli-local-export.d.ts +7 -0
  114. package/dist/cli-local-export.d.ts.map +1 -0
  115. package/dist/cli-local-export.js +31 -0
  116. package/dist/cli-local-export.js.map +1 -0
  117. package/dist/cli-local-improve-context.d.ts +3 -0
  118. package/dist/cli-local-improve-context.d.ts.map +1 -0
  119. package/dist/cli-local-improve-context.js +47 -0
  120. package/dist/cli-local-improve-context.js.map +1 -0
  121. package/dist/cli-local-improve.d.ts +16 -0
  122. package/dist/cli-local-improve.d.ts.map +1 -0
  123. package/dist/cli-local-improve.js +214 -0
  124. package/dist/cli-local-improve.js.map +1 -0
  125. package/dist/cli-local-record.d.ts +8 -0
  126. package/dist/cli-local-record.d.ts.map +1 -0
  127. package/dist/cli-local-record.js +67 -0
  128. package/dist/cli-local-record.js.map +1 -0
  129. package/dist/cli-local-runtime.d.ts +7 -0
  130. package/dist/cli-local-runtime.d.ts.map +1 -0
  131. package/dist/cli-local-runtime.js +21 -0
  132. package/dist/cli-local-runtime.js.map +1 -0
  133. package/dist/cli-next-command.d.ts +1 -0
  134. package/dist/cli-next-command.d.ts.map +1 -1
  135. package/dist/cli-next-command.js +12 -9
  136. package/dist/cli-next-command.js.map +1 -1
  137. package/dist/cli-run.d.ts.map +1 -1
  138. package/dist/cli-run.js +3 -0
  139. package/dist/cli-run.js.map +1 -1
  140. package/dist/cli-skill-command.d.ts +0 -3
  141. package/dist/cli-skill-command.d.ts.map +1 -1
  142. package/dist/cli-skill-command.js +9 -24
  143. package/dist/cli-skill-command.js.map +1 -1
  144. package/dist/cli-usage.d.ts.map +1 -1
  145. package/dist/cli-usage.js +20 -11
  146. package/dist/cli-usage.js.map +1 -1
  147. package/dist/concept-input.d.ts +1 -1
  148. package/dist/concept-input.d.ts.map +1 -1
  149. package/dist/concept-input.js +1 -1
  150. package/dist/concept-input.js.map +1 -1
  151. package/dist/conversion-status-contract.d.ts +13 -1
  152. package/dist/conversion-status-contract.d.ts.map +1 -1
  153. package/dist/conversion-status-contract.js +12 -11
  154. package/dist/conversion-status-contract.js.map +1 -1
  155. package/dist/corpus-client.d.ts +7 -6
  156. package/dist/corpus-client.d.ts.map +1 -1
  157. package/dist/corpus-client.js +14 -1
  158. package/dist/corpus-client.js.map +1 -1
  159. package/dist/corpus-inspiration-failure.js +1 -1
  160. package/dist/corpus-inspiration-failure.js.map +1 -1
  161. package/dist/corpus-request-error.d.ts +3 -10
  162. package/dist/corpus-request-error.d.ts.map +1 -1
  163. package/dist/corpus-request-error.js +1 -24
  164. package/dist/corpus-request-error.js.map +1 -1
  165. package/dist/http-response-diagnostic.d.ts +12 -0
  166. package/dist/http-response-diagnostic.d.ts.map +1 -0
  167. package/dist/http-response-diagnostic.js +58 -0
  168. package/dist/http-response-diagnostic.js.map +1 -0
  169. package/dist/improve-branch-stage.d.ts.map +1 -1
  170. package/dist/improve-branch-stage.js +6 -25
  171. package/dist/improve-branch-stage.js.map +1 -1
  172. package/dist/improve-concept.d.ts +1 -1
  173. package/dist/improve-concept.d.ts.map +1 -1
  174. package/dist/improve-concept.js +1 -1
  175. package/dist/improve-concept.js.map +1 -1
  176. package/dist/improve-core/concept-input.d.ts +2 -43
  177. package/dist/improve-core/concept-input.d.ts.map +1 -1
  178. package/dist/improve-core/concept-input.js +3 -53
  179. package/dist/improve-core/concept-input.js.map +1 -1
  180. package/dist/improve-core/improve-concept.d.ts +0 -6
  181. package/dist/improve-core/improve-concept.d.ts.map +1 -1
  182. package/dist/improve-core/improve-concept.js +4 -36
  183. package/dist/improve-core/improve-concept.js.map +1 -1
  184. package/dist/improve-core/improve-page-words.d.ts +2 -2
  185. package/dist/improve-core/improve-page-words.d.ts.map +1 -1
  186. package/dist/improve-core/improve-page-words.js +8 -6
  187. package/dist/improve-core/improve-page-words.js.map +1 -1
  188. package/dist/improve-generation-stages.d.ts.map +1 -1
  189. package/dist/improve-generation-stages.js +6 -24
  190. package/dist/improve-generation-stages.js.map +1 -1
  191. package/dist/improve-kit-readme.d.ts.map +1 -1
  192. package/dist/improve-kit-readme.js +1 -0
  193. package/dist/improve-kit-readme.js.map +1 -1
  194. package/dist/improve-source-words.d.ts +14 -0
  195. package/dist/improve-source-words.d.ts.map +1 -0
  196. package/dist/improve-source-words.js +66 -0
  197. package/dist/improve-source-words.js.map +1 -0
  198. package/dist/improve-workspace.d.ts +3 -0
  199. package/dist/improve-workspace.d.ts.map +1 -1
  200. package/dist/improve-workspace.js.map +1 -1
  201. package/dist/index.d.ts +1 -1
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +1 -1
  204. package/dist/index.js.map +1 -1
  205. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  206. package/dist/legacy-skill-catalog.js +36 -5
  207. package/dist/legacy-skill-catalog.js.map +1 -1
  208. package/dist/package-client.d.ts +3 -1
  209. package/dist/package-client.d.ts.map +1 -1
  210. package/dist/package-client.js +34 -11
  211. package/dist/package-client.js.map +1 -1
  212. package/dist/prototype-gates.d.ts.map +1 -1
  213. package/dist/prototype-gates.js +1 -1
  214. package/dist/prototype-gates.js.map +1 -1
  215. package/dist/prototype-poststep.js +1 -1
  216. package/dist/prototype-poststep.js.map +1 -1
  217. package/dist/prototype-requests.d.ts +1 -0
  218. package/dist/prototype-requests.d.ts.map +1 -1
  219. package/dist/prototype-requests.js.map +1 -1
  220. package/dist/prototype-revision.d.ts +1 -1
  221. package/dist/prototype-revision.js +1 -1
  222. package/dist/prototype-runner.d.ts.map +1 -1
  223. package/dist/prototype-runner.js +9 -3
  224. package/dist/prototype-runner.js.map +1 -1
  225. package/dist/review-page.js +2 -2
  226. package/dist/review-page.js.map +1 -1
  227. package/dist/review-prototype-gap.js +1 -1
  228. package/dist/review-prototype-gap.js.map +1 -1
  229. package/dist/run-journal-commands.d.ts.map +1 -1
  230. package/dist/run-journal-commands.js +1 -0
  231. package/dist/run-journal-commands.js.map +1 -1
  232. package/dist/skill-installer.d.ts +2 -1
  233. package/dist/skill-installer.d.ts.map +1 -1
  234. package/dist/skill-installer.js +3 -3
  235. package/dist/skill-installer.js.map +1 -1
  236. package/open-design.json +2 -2
  237. package/package.json +5 -4
  238. package/prototype-kit/analyze.mjs +4 -1
  239. package/prototype-kit/build.mjs +29 -4
  240. package/prototype-kit/inventory.mjs +11 -2
  241. package/prototype-kit/lib/local-page.mjs +50 -0
  242. package/prototype-kit/lib/static-server.mjs +1 -0
  243. package/runtime/bootstrap.mjs +131 -0
  244. package/runtime/codex-conversion/README.md +75 -0
  245. package/runtime/codex-conversion/bin/convert.mjs +21 -0
  246. package/runtime/codex-conversion/bin/export.mjs +4 -0
  247. package/runtime/codex-conversion/bin/finish.mjs +11 -0
  248. package/runtime/codex-conversion/bin/improve.mjs +12 -0
  249. package/runtime/codex-conversion/bin/install-skill.mjs +36 -0
  250. package/runtime/codex-conversion/bin/recover-image.mjs +11 -0
  251. package/runtime/codex-conversion/bin/recovery/prepare.mjs +68 -0
  252. package/runtime/codex-conversion/bin/recovery/run.mjs +37 -0
  253. package/runtime/codex-conversion/npm-shrinkwrap.json +1199 -0
  254. package/runtime/codex-conversion/package.json +45 -0
  255. package/runtime/codex-conversion/src/codex/arguments.mjs +14 -0
  256. package/runtime/codex-conversion/src/codex/completion.mjs +14 -0
  257. package/runtime/codex-conversion/src/codex/events.mjs +41 -0
  258. package/runtime/codex-conversion/src/codex/home.mjs +37 -0
  259. package/runtime/codex-conversion/src/codex/invoke.mjs +79 -0
  260. package/runtime/codex-conversion/src/contract-repair.mjs +44 -0
  261. package/runtime/codex-conversion/src/contracts/compile.mjs +53 -0
  262. package/runtime/codex-conversion/src/contracts/contracts.mjs +19 -0
  263. package/runtime/codex-conversion/src/contracts/geometry.mjs +38 -0
  264. package/runtime/codex-conversion/src/contracts/grid-frame.mjs +22 -0
  265. package/runtime/codex-conversion/src/contracts/groups.mjs +14 -0
  266. package/runtime/codex-conversion/src/contracts/initial.mjs +9 -0
  267. package/runtime/codex-conversion/src/contracts/normalize.mjs +46 -0
  268. package/runtime/codex-conversion/src/exports/browser.mjs +26 -0
  269. package/runtime/codex-conversion/src/exports/editable.mjs +34 -0
  270. package/runtime/codex-conversion/src/exports/files.mjs +7 -0
  271. package/runtime/codex-conversion/src/exports/index.mjs +24 -0
  272. package/runtime/codex-conversion/src/exports/react.mjs +44 -0
  273. package/runtime/codex-conversion/src/exports/viewport.mjs +17 -0
  274. package/runtime/codex-conversion/src/finish/index.mjs +58 -0
  275. package/runtime/codex-conversion/src/finish/patch.mjs +14 -0
  276. package/runtime/codex-conversion/src/images/execute.mjs +52 -0
  277. package/runtime/codex-conversion/src/images/frame-normalization.mjs +10 -0
  278. package/runtime/codex-conversion/src/images/geometry.mjs +9 -0
  279. package/runtime/codex-conversion/src/images/local-operation.mjs +17 -0
  280. package/runtime/codex-conversion/src/images/local.mjs +18 -0
  281. package/runtime/codex-conversion/src/images/native-collect.mjs +43 -0
  282. package/runtime/codex-conversion/src/images/native-files.mjs +11 -0
  283. package/runtime/codex-conversion/src/images/native-invoke.mjs +49 -0
  284. package/runtime/codex-conversion/src/images/native-records.mjs +57 -0
  285. package/runtime/codex-conversion/src/images/native.mjs +41 -0
  286. package/runtime/codex-conversion/src/images/prompt.mjs +14 -0
  287. package/runtime/codex-conversion/src/images/provider.mjs +22 -0
  288. package/runtime/codex-conversion/src/output.mjs +28 -0
  289. package/runtime/codex-conversion/src/project/invoke.mjs +35 -0
  290. package/runtime/codex-conversion/src/project/prompt.mjs +13 -0
  291. package/runtime/codex-conversion/src/project/run.mjs +83 -0
  292. package/runtime/codex-conversion/src/project/source.mjs +21 -0
  293. package/runtime/codex-conversion/src/references.mjs +114 -0
  294. package/runtime/codex-conversion/src/run-store-io.mjs +38 -0
  295. package/runtime/codex-conversion/src/run-store.mjs +114 -0
  296. package/runtime/codex-conversion/src/run.mjs +108 -0
  297. package/runtime/codex-conversion/src/runtime-pin.mjs +12 -0
  298. package/runtime/codex-conversion/templates/initial.schema.json +90 -0
  299. package/runtime/codex-conversion/templates/initial.txt +22 -0
  300. package/skills/12ui-design/SKILL.md +34 -32
  301. package/skills/12ui-design/improve.md +48 -155
  302. package/skills/12ui-design/outputs.md +22 -0
package/README.md CHANGED
@@ -18,8 +18,8 @@ curl -fsSL https://12ui.com/install.sh | sh
18
18
 
19
19
  Both paths pin the exact CLI version, install `12ui-design` into every detected
20
20
  Codex, Claude Code, Grok CLI, Cursor CLI, Antigravity, and GitHub Copilot CLI
21
- installation, and
22
- open the 12ui device-approval page. The resulting user-owned credential has
21
+ installation without requiring an API account. Run `12ui auth login` when
22
+ you need hosted features. Explicit authentication setup creates a user-owned credential with
23
23
  `design.convert` and `design.corpus.retrieve`, is verified before use, and is
24
24
  stored mode-0600 at `$XDG_CONFIG_HOME/12ui/credentials.json` or
25
25
  `~/.config/12ui/credentials.json`. When those private roots are unusable and
@@ -44,7 +44,7 @@ managed launcher and versioned bundle, verified and installed the same way.
44
44
  `12ui cli status` reports what is pinned. Managed installations do not update
45
45
  automatically; `12ui cli install` pins the version currently running. To upgrade
46
46
  an existing installation to this release, run
47
- `npx -y @12ui/design@0.2.66 cli install`, then check `12ui --version`.
47
+ `npx -y @12ui/design@0.2.67 cli install`, then check `12ui --version`.
48
48
  `12ui skill install` adds the skills later.
49
49
 
50
50
  Every supported agent reads `SKILL.md` bundles from one user-scoped directory,
@@ -70,36 +70,45 @@ Codex discovery includes every local `~/.codex*` profile directory, plus
70
70
  `CODEX_HOME` when it points outside that set. Pass
71
71
  `--client codex --home <path>` when an operation should target only one profile.
72
72
 
73
- An already verified credential is reused. The installer migrates the legacy
74
- `~/.config/just-every/12ui/credentials.json` location; two conflicting files
75
- fail closed. Existing unknown or locally modified skills also fail closed
73
+ Skill installation does not require an API account or start account onboarding.
74
+ Explicit authentication options still prepare credentials; hosted commands handle
75
+ authentication when used. Existing unknown or locally modified skills also fail closed
76
76
  unless `--force` is explicit.
77
77
 
78
78
  ## One visual interface skill
79
79
 
80
- `12ui-design` routes every UI, web, and mobile request and covers the whole
81
- pipeline. Finished screenshots go straight to conversion, tiny edits stay
82
- code-only, and a rough brief explores corpus-grounded directions as images
83
- before anything is built:
84
-
85
- - Reference search returns a ranked, diverse set of real Design Corpus
86
- references, preserving endpoint order and metrics, when the references
87
- themselves are the deliverable.
88
- - Drafting claims one `/api/v1/create` run, dispatches each candidate slot
89
- once, and downloads the images without re-buying a settled slot. The caller
90
- authenticates only to 12ui; the service owns its image-provider credentials.
91
- - Branching is required whenever the deliverable is more than one viewport.
92
- One `12ui branch execute` run expands one approved design into the 2-8
93
- screens the server plans, dispatching each only once its dependency and
94
- footer gates clear. Conversion keeps ordered `web_page` viewports in one
95
- package and emits each complete `web_app`, `mobile_app`, or `immersive` state
96
- as its own page. `--prototype` then makes those exports clickable with
97
- plan-backed navigation, shared shells, content, and honest holding pages.
98
- Add `--polish` explicitly to run the retained deterministic, harm-guarded
99
- polish stage before the prototype runtime gates.
100
- - Conversion turns a finished PNG, JPEG, or WebP into LayerDoc and any
101
- supported responsive, fixed, project, or document export, and converts the
102
- ordered viewports of one page as a single package.
80
+ `12ui-design` is the single design entrypoint. Every client receives the same
81
+ `skills/12ui-design` bytes. The CLI owns local and hosted engine selection.
82
+
83
+ The shared skill uses the 12ui API for corpus references, draft candidates, and
84
+ branch image generation, then uses the same CLI for execution:
85
+
86
+ ```sh
87
+ 12ui capabilities
88
+ 12ui convert approved.png --output html --engine codex --out-dir ./design-run
89
+ 12ui improve http://localhost:3000 --target approved.png --repo . --apply
90
+ 12ui export ./design-run --output react --out-dir ./react-page
91
+ 12ui next ./design-run
92
+ 12ui resume ./design-run
93
+ ```
94
+
95
+ `convert --engine auto|codex|api` defaults to auto. Before a new local run, image
96
+ execution defaults to external when `OPENAI_API_KEY` is available, otherwise native
97
+ through Codex account access. Explicit `--image-backend` choices and saved runs
98
+ keep their backend; external requires the separate key before inference starts.
99
+ Native does not imply zero cost or a known image model.
100
+ The CLI owns runtime setup; the skill contains workflow guidance.
101
+
102
+ `improve --apply` captures the URL and edits the actual repository. Without a
103
+ target it drafts candidates, stops for an explicit choice, then applies that
104
+ choice locally. Without `--apply`, the existing hosted implementation-kit behavior
105
+ remains. Inspect the real application after editing.
106
+
107
+ Local HTML does not produce LayerDoc. Native design formats and complete hosted
108
+ branch prototype assembly remain explicit API workflows. Local React export is
109
+ whole-page JSX, not a functional application. A local failure never silently
110
+ purchases a hosted conversion. These commands describe the unpublished candidate;
111
+ check installed capabilities rather than assuming the public latest includes them.
103
112
 
104
113
  The four stage skills that used to carry these sections separately —
105
114
  `design-search`, `design-draft`, `design-branch`, and `design-convert` — were
@@ -107,11 +116,9 @@ retired on 2026-08-16 after a trial measured them buying no routing precision
107
116
  over the one broadened description. `skill install` removes any copy still
108
117
  present in an agent home.
109
118
 
110
- The design workflow exists because code-first agents often converge on safe,
111
- generic visual defaults. Corpus-conditioned image generation expands the
112
- design space and introduces personality; converting the selected image then
113
- preserves that direction with near-pixel-perfect fidelity much faster than
114
- manual recreation.
119
+ Corpus-conditioned image generation explores visual directions. The selected
120
+ image then guides editable implementation, with browser inspection against the
121
+ approved target and focused correction of observed mismatches.
115
122
 
116
123
  ```bash
117
124
  12ui skill status --json
@@ -309,7 +316,7 @@ export TWELVE_UI_API_KEY=your-key
309
316
  12ui resume conversion-id
310
317
  ```
311
318
 
312
- `improve` composes local Playwright capture, the existing draft and convert
319
+ The hosted `12ui improve` CLI composes local Playwright capture, the existing draft and convert
313
320
  commands, and a local selector-anchored planning stage. It accepts a URL or
314
321
  source screenshot, records each stage in `improve.json`, and replays settled
315
322
  work. `--target` skips generation and aligns a supplied design image or
package/SKILL.md CHANGED
@@ -28,7 +28,7 @@ dispatch paid work when it is absent, rejected, or times out.
28
28
  Use `12ui` when it is available on `PATH`. Otherwise invoke the pinned CLI that
29
29
  the plugin's `open-design.json` MCP entry uses:
30
30
 
31
- npx -y @12ui/design@0.2.66 <command> ...
31
+ npx -y @12ui/design@0.2.68 <command> ...
32
32
 
33
33
  Run `12ui auth status --json` (or its pinned `npx` equivalent) before the paid
34
34
  preflight. A desktop user can authenticate with `12ui auth login`; a headless
@@ -1,3 +1,4 @@
1
+ import { type HttpResponseDiagnostic } from './http-response-diagnostic.js';
1
2
  import type { ConversionConfig } from './config.js';
2
3
  /**
3
4
  * The create/build API as the CLI needs it: a port of the web app's
@@ -15,7 +16,6 @@ import type { ConversionConfig } from './config.js';
15
16
  * counting rules, aliased here for callers that already import it from the
16
17
  * branch client.
17
18
  */
18
- export { MAX_CONCEPT_CHARACTERS as BRANCH_MAX_CONCEPT_CHARACTERS } from './concept-input.js';
19
19
  export type CreateAspect = 'landscape' | 'portrait' | 'square';
20
20
  /** @deprecated Prefer CreateAspect for create-route request shapes. */
21
21
  export type BranchAspect = CreateAspect;
@@ -229,6 +229,7 @@ export type CreateStartInput = {
229
229
  };
230
230
  export declare class BranchApiError extends Error {
231
231
  readonly status: number;
232
+ readonly diagnostic?: HttpResponseDiagnostic;
232
233
  readonly code: string;
233
234
  readonly retryAfterSeconds?: number;
234
235
  /** Branch gating only: the slot that must succeed before this one runs. */
@@ -236,6 +237,7 @@ export declare class BranchApiError extends Error {
236
237
  constructor(message: string, status: number, code: string, options?: {
237
238
  retryAfterSeconds?: number;
238
239
  dependsOn?: string;
240
+ diagnostic?: HttpResponseDiagnostic;
239
241
  });
240
242
  }
241
243
  /**
@@ -246,7 +248,7 @@ export declare class BranchApiError extends Error {
246
248
  * undefined. Reading only one of the two silently mis-routes the other, which
247
249
  * is exactly the trap the branch skill used to invite.
248
250
  */
249
- export declare const parseBranchFailure: (status: number, body: unknown, retryAfterHeader?: string | null) => BranchApiError;
251
+ export declare const parseBranchFailure: (status: number, body: unknown, retryAfterHeader?: string | null, diagnostic?: HttpResponseDiagnostic) => BranchApiError;
250
252
  export type BranchClientOptions = ConversionConfig & {
251
253
  fetch?: typeof fetch;
252
254
  };
@@ -1 +1 @@
1
- {"version":3,"file":"branch-client.d.ts","sourceRoot":"","sources":["../src/branch-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch-client.d.ts","sourceRoot":"","sources":["../src/branch-client.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,11 @@
1
+ import { httpResponseDiagnostic, safeHttpDetail } from './http-response-diagnostic.js';
1
2
  import { createHash } from 'node:crypto';
2
3
  import { declareClientVersion } from './client-version.js';
3
4
  import { appendClientAuthGuidance } from './client-auth-guidance.js';
4
5
  import { normalizeConversionOrigin } from './config.js';
5
- /**
6
- * The create/build API as the CLI needs it: a port of the web app's
7
- * `apps/web/src/pages/create/createApi.ts` with the browser identity, Turnstile,
8
- * and object-URL machinery removed and Bearer key auth in their place.
9
- *
10
- * The wire envelope is deliberately NOT `BranchPlan` verbatim. `plan.pages[]`
11
- * carries the ordering (`slots`), while every per-screen fact —
12
- * `viewportOrdinal`, `header`, `footer`, `pageEndsHere`, `dependsOnSlot`,
13
- * `content` — lives on `candidates[]`. Those are two different places and both
14
- * are needed to reconstruct the page grouping.
15
- */
16
- /**
17
- * The service's one concept limit. Defined in `concept-input.ts` alongside the
18
- * counting rules, aliased here for callers that already import it from the
19
- * branch client.
20
- */
21
- export { MAX_CONCEPT_CHARACTERS as BRANCH_MAX_CONCEPT_CHARACTERS } from './concept-input.js';
22
6
  export class BranchApiError extends Error {
23
7
  status;
8
+ diagnostic;
24
9
  code;
25
10
  retryAfterSeconds;
26
11
  /** Branch gating only: the slot that must succeed before this one runs. */
@@ -30,6 +15,7 @@ export class BranchApiError extends Error {
30
15
  this.name = 'BranchApiError';
31
16
  this.status = status;
32
17
  this.code = code;
18
+ this.diagnostic = options.diagnostic;
33
19
  if (options.retryAfterSeconds !== undefined)
34
20
  this.retryAfterSeconds = options.retryAfterSeconds;
35
21
  if (options.dependsOn !== undefined)
@@ -44,7 +30,7 @@ export class BranchApiError extends Error {
44
30
  * undefined. Reading only one of the two silently mis-routes the other, which
45
31
  * is exactly the trap the branch skill used to invite.
46
32
  */
47
- export const parseBranchFailure = (status, body, retryAfterHeader) => {
33
+ export const parseBranchFailure = (status, body, retryAfterHeader, diagnostic) => {
48
34
  const parsed = (body && typeof body === 'object' && !Array.isArray(body)
49
35
  ? body
50
36
  : null);
@@ -55,11 +41,13 @@ export const parseBranchFailure = (status, body, retryAfterHeader) => {
55
41
  const code = nested?.code ?? flat ?? 'error';
56
42
  const message = nested?.message
57
43
  ?? parsed?.message
44
+ ?? (diagnostic?.body ? `The create service failed (${status}): ${diagnostic.body.slice(0, 500)}` : undefined)
58
45
  ?? (status === 429
59
46
  ? 'The daily generation allowance is used up.'
60
47
  : `The create service failed (${status}).`);
61
48
  const retryAfter = Number(retryAfterHeader ?? '');
62
49
  return new BranchApiError(appendClientAuthGuidance(message, status), status, code, {
50
+ ...(diagnostic ? { diagnostic } : {}),
63
51
  ...(Number.isFinite(retryAfter) && retryAfter > 0
64
52
  ? { retryAfterSeconds: Math.round(retryAfter) }
65
53
  : {}),
@@ -187,7 +175,7 @@ export class TwelveUiBranchClient {
187
175
  ...(signal ? { signal } : {}),
188
176
  });
189
177
  if (!response.ok) {
190
- throw parseBranchFailure(response.status, await response.json().catch(() => null), response.headers.get('retry-after'));
178
+ throw await this.#failure(response);
191
179
  }
192
180
  const bytes = new Uint8Array(await response.arrayBuffer());
193
181
  return { bytes, sha256: createHash('sha256').update(bytes).digest('hex') };
@@ -206,9 +194,36 @@ export class TwelveUiBranchClient {
206
194
  throw new BranchApiError('Could not reach the create service.', 0, 'network');
207
195
  }
208
196
  if (!response.ok && !okStatuses.includes(response.status)) {
209
- throw parseBranchFailure(response.status, await response.json().catch(() => null), response.headers.get('retry-after'));
197
+ throw await this.#failure(response);
198
+ }
199
+ const raw = await response.text();
200
+ let payload;
201
+ try {
202
+ payload = JSON.parse(raw);
203
+ }
204
+ catch {
205
+ throw this.#invalidResponse(response, raw, 'invalid_json');
210
206
  }
211
- return await response.json().catch(() => null);
207
+ try {
208
+ return parseEnvelope(payload);
209
+ }
210
+ catch {
211
+ throw this.#invalidResponse(response, raw, 'invalid_response');
212
+ }
213
+ }
214
+ async #failure(response) {
215
+ const raw = await response.text();
216
+ const diagnostic = httpResponseDiagnostic(response, raw, 'http', this.#apiKey);
217
+ let payload = null;
218
+ try {
219
+ payload = JSON.parse(safeHttpDetail(raw, this.#apiKey));
220
+ }
221
+ catch { /* Text is in diagnostics. */ }
222
+ return parseBranchFailure(response.status, payload, response.headers.get('retry-after'), diagnostic);
223
+ }
224
+ #invalidResponse(response, raw, kind) {
225
+ const diagnostic = httpResponseDiagnostic(response, raw, kind, this.#apiKey);
226
+ return new BranchApiError(`The create service returned an invalid response (HTTP ${response.status}): ${diagnostic.body.slice(0, 500)}`, response.status, kind, { diagnostic });
212
227
  }
213
228
  #headers(values) {
214
229
  const headers = new Headers(values);
@@ -1 +1 @@
1
- {"version":3,"file":"branch-client.js","sourceRoot":"","sources":["../src/branch-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch-client.js","sourceRoot":"","sources":["../src/branch-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type CliFlags } from './cli-arguments.js';
2
+ import type { BranchConversionSettings } from './branch-page-conversion.js';
3
+ import type { BranchAttempt } from './branch-run-record.js';
4
+ /** Branch generation is hosted; these flags select only its HTML conversion stage. */
5
+ export declare function selectBranchConversion(settings: BranchConversionSettings, flags: CliFlags, saved?: BranchAttempt['convert']): Promise<BranchConversionSettings>;
6
+ /** Planning can reveal a hosted-only capability before any page conversion starts. */
7
+ export declare function finalizeBranchConversion(settings: BranchConversionSettings, hasContentSlots: boolean, saved: boolean): BranchConversionSettings;
8
+ //# sourceMappingURL=branch-conversion-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-conversion-engine.d.ts","sourceRoot":"","sources":["../src/branch-conversion-engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,sFAAsF;AACtF,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,wBAAwB,EAClC,KAAK,EAAE,QAAQ,EACf,KAAK,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,GAC/B,OAAO,CAAC,wBAAwB,CAAC,CAsBnC;AAED,sFAAsF;AACtF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAM/I"}
@@ -0,0 +1,43 @@
1
+ import path from 'node:path';
2
+ import { stringFlag } from './cli-arguments.js';
3
+ import { selectInitialImageBackend } from './cli-image-backend.js';
4
+ import { selectEngine } from './cli-engine.js';
5
+ import { assertApiConversionFlags } from './cli-conversion-engine.js';
6
+ /** Branch generation is hosted; these flags select only its HTML conversion stage. */
7
+ export async function selectBranchConversion(settings, flags, saved) {
8
+ const localFlags = { output: 'html' };
9
+ for (const key of ['engine', 'codex-bin', 'codex-home', 'image-backend', 'clean-assets', 'reasoning', 'timeout-ms', 'quiet']) {
10
+ if (flags[key] !== undefined)
11
+ localFlags[key] = flags[key];
12
+ }
13
+ const supported = !settings.model && !settings.responsiveQuality && !settings.sourceConversionId;
14
+ const selection = await selectEngine(localFlags, supported, saved ? saved.selection?.engine ?? 'api' : undefined);
15
+ if (selection.engine === 'api')
16
+ assertApiConversionFlags(localFlags);
17
+ const requestedEngine = (saved?.requestedEngine ?? stringFlag(flags, 'engine') ?? process.env.TWELVE_UI_ENGINE ?? 'auto');
18
+ // Frozen settings own resume; repeated auth options must name the same runtime.
19
+ if (saved?.selection?.engine === 'codex') {
20
+ for (const key of ['image-backend', 'clean-assets', 'reasoning']) {
21
+ if (stringFlag(flags, key) && flags[key] !== saved.localFlags?.[key])
22
+ throw new Error(`Saved branch conversion settings differ for --${key}; use the original settings.`);
23
+ }
24
+ for (const [flag, original] of [['codex-home', saved.selection.codexHome], ['codex-bin', saved.selection.codexBin]]) {
25
+ const supplied = stringFlag(flags, flag);
26
+ if (supplied && (flag === 'codex-home' ? path.resolve(supplied) : supplied) !== original)
27
+ throw new Error(`Saved branch conversion settings differ for --${flag}; use the original settings.`);
28
+ }
29
+ return { ...settings, requestedEngine, imageBackendExplicit: saved.imageBackendExplicit, selection: { ...saved.selection, quiet: selection.quiet }, localFlags: saved.localFlags ?? {} };
30
+ }
31
+ if (selection.engine === 'codex')
32
+ localFlags['image-backend'] = selectInitialImageBackend(stringFlag(flags, 'image-backend'));
33
+ return { ...settings, requestedEngine, imageBackendExplicit: flags['image-backend'] !== undefined, selection, ...(selection.engine === 'codex' ? { localFlags } : {}) };
34
+ }
35
+ /** Planning can reveal a hosted-only capability before any page conversion starts. */
36
+ export function finalizeBranchConversion(settings, hasContentSlots, saved) {
37
+ const localOnly = settings.imageBackendExplicit === true || ['clean-assets', 'reasoning'].some(key => settings.localFlags?.[key] !== undefined);
38
+ if (!saved && settings.requestedEngine === 'auto' && settings.selection?.engine === 'codex' && hasContentSlots && !localOnly) {
39
+ return { ...settings, localFlags: undefined, selection: { engine: 'api', reason: 'planned editorial content slots require the hosted site manifest', quiet: settings.selection.quiet } };
40
+ }
41
+ return settings;
42
+ }
43
+ //# sourceMappingURL=branch-conversion-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-conversion-engine.js","sourceRoot":"","sources":["../src/branch-conversion-engine.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,18 @@ import { type BranchDispatchTuning } from './branch-dispatch-loop.js';
4
4
  import type { TwelveUiConversionPackageClient } from './package-client.js';
5
5
  import type { BranchExecutionEvent, BranchExecutionInputs, BranchExecutionResult } from './branch-execution-types.js';
6
6
  export type { BranchExecutionEvent, BranchExecutionInputs, BranchExecutionResult, BranchWinnerInput, } from './branch-execution-types.js';
7
+ /**
8
+ * The whole branch choreography: claim, plan, dependency-ordered dispatch,
9
+ * download, per-page package conversion, sentinel. Everything mechanical lives
10
+ * here so the model's job collapses to choosing the winner, writing the
11
+ * concept, and picking the scope.
12
+ *
13
+ * The two halves overlap on purpose. A page's package depends on ITS OWN
14
+ * screens and nothing else, so a page whose screens land in the first wave
15
+ * starts converting while the rest of the run is still generating, and pages
16
+ * convert several at a time. Measured serially, the conversion half was 8m36 of
17
+ * a 12m25 four-page run while the account's admission slots sat idle.
18
+ */
7
19
  /**
8
20
  * The plan, as the run's first line states it. The approved page is counted
9
21
  * separately because it is the one page that costs no screen and the one whose
@@ -1 +1 @@
1
- {"version":3,"file":"branch-execution.d.ts","sourceRoot":"","sources":["../src/branch-execution.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAwB5B,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AAgBnC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAiBrC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,oBAAoB,KAAG,MAsB/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,qBAAqB,KAAG,MAQlE,CAAC;AAqCF,eAAO,MAAM,gBAAgB,GAAU,MAAM;IAC3C,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,CAAC,EAAE,+BAA+B,CAAC;IAChD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,KAAG,OAAO,CAAC,qBAAqB,CAuchC,CAAC"}
1
+ {"version":3,"file":"branch-execution.d.ts","sourceRoot":"","sources":["../src/branch-execution.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAwB5B,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AAgBnC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,oBAAoB,KAAG,MAsB/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,qBAAqB,KAAG,MAQlE,CAAC;AA0BF,eAAO,MAAM,gBAAgB,GAAU,MAAM;IAC3C,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,CAAC,EAAE,+BAA+B,CAAC;IAChD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,KAAG,OAAO,CAAC,qBAAqB,CAyehC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { finalizeBranchConversion } from './branch-conversion-engine.js';
1
2
  import path from 'node:path';
2
3
  import { BranchApiError, } from './branch-client.js';
3
4
  import { BRANCH_WORKFLOW_REVISION, branchConceptDigest, branchRunKey, } from './branch-identity.js';
@@ -25,7 +26,6 @@ import { BRANCH_ATTEMPT_FILENAME, BRANCH_PAGES_DIRECTORY, BRANCH_SCREENS_DIRECTO
25
26
  * convert several at a time. Measured serially, the conversion half was 8m36 of
26
27
  * a 12m25 four-page run while the account's admission slots sat idle.
27
28
  */
28
- const BUILD_PLAN_RETRIES = 3;
29
29
  /**
30
30
  * The plan, as the run's first line states it. The approved page is counted
31
31
  * separately because it is the one page that costs no screen and the one whose
@@ -63,35 +63,22 @@ export const deriveBranchRunKey = (inputs) => (inputs.idempotencyKey ?? branchRu
63
63
  scope: inputs.scope,
64
64
  }));
65
65
  const claimBuildRun = async (args) => {
66
- let lastError;
67
- for (let attempt = 1; attempt <= BUILD_PLAN_RETRIES; attempt += 1) {
68
- try {
69
- return await args.client.startBuildRun({
70
- concept: args.inputs.concept,
71
- ...(args.inputs.aspect ? { aspect: args.inputs.aspect } : {}),
72
- // The planner shapes whole pages to the cap; the client trim that
73
- // follows is then a no-op on a plan that already fits.
74
- ...(args.inputs.maxScreens === undefined ? {} : { maxScreens: args.inputs.maxScreens }),
75
- ...(args.inputs.winner.kind === 'run'
76
- ? { winner: { createRunId: args.inputs.winner.runId, slot: args.inputs.winner.slot } }
77
- : {
78
- referenceImage: {
79
- data: Buffer.from(args.inputs.winner.bytes).toString('base64'),
80
- mediaType: args.inputs.winner.mediaType,
81
- sha256: args.inputs.winner.sha256,
82
- },
83
- }),
84
- }, args.runKey, args.signal);
85
- }
86
- catch (error) {
87
- lastError = error;
88
- // Planning failed before any image spend, so the same key may replay.
89
- const retryable = error instanceof BranchApiError && error.code === 'build_plan_failed';
90
- if (!retryable || attempt === BUILD_PLAN_RETRIES)
91
- throw error;
92
- }
93
- }
94
- throw lastError;
66
+ return await args.client.startBuildRun({
67
+ concept: args.inputs.concept,
68
+ ...(args.inputs.aspect ? { aspect: args.inputs.aspect } : {}),
69
+ // The planner shapes whole pages to the cap; the client trim that
70
+ // follows is then a no-op on a plan that already fits.
71
+ ...(args.inputs.maxScreens === undefined ? {} : { maxScreens: args.inputs.maxScreens }),
72
+ ...(args.inputs.winner.kind === 'run'
73
+ ? { winner: { createRunId: args.inputs.winner.runId, slot: args.inputs.winner.slot } }
74
+ : {
75
+ referenceImage: {
76
+ data: Buffer.from(args.inputs.winner.bytes).toString('base64'),
77
+ mediaType: args.inputs.winner.mediaType,
78
+ sha256: args.inputs.winner.sha256,
79
+ },
80
+ }),
81
+ }, args.runKey, args.signal);
95
82
  };
96
83
  export const executeBranchRun = async (args) => {
97
84
  const emit = args.onEvent ?? (() => undefined);
@@ -218,6 +205,10 @@ export const executeBranchRun = async (args) => {
218
205
  ? {
219
206
  convert: {
220
207
  output: inputs.convert.output,
208
+ ...(inputs.convert.imageBackendExplicit === undefined ? {} : { imageBackendExplicit: inputs.convert.imageBackendExplicit }),
209
+ ...(inputs.convert.requestedEngine ? { requestedEngine: inputs.convert.requestedEngine } : {}),
210
+ ...(inputs.convert.selection ? { selection: inputs.convert.selection } : {}),
211
+ ...(inputs.convert.localFlags ? { localFlags: inputs.convert.localFlags } : {}),
221
212
  model: inputs.convert.model ?? 'standard',
222
213
  ...(inputs.convert.responsiveQuality
223
214
  ? { responsiveQuality: inputs.convert.responsiveQuality }
@@ -243,15 +234,36 @@ export const executeBranchRun = async (args) => {
243
234
  else {
244
235
  await writeBranchAttempt(attemptFile, attempt, true);
245
236
  }
246
- emit({ kind: 'phase', phase: 'claim', detail: 'planning the screens (10-20s, buys no image)' });
247
- const envelope = attempt.runId
248
- ? await args.branchClient.getRun(attempt.runId, args.signal)
249
- : await claimBuildRun({
250
- client: args.branchClient,
251
- inputs,
252
- runKey,
253
- ...(args.signal ? { signal: args.signal } : {}),
237
+ if (attempt.setupFailure?.terminal) {
238
+ const failure = attempt.setupFailure;
239
+ throw new BranchApiError(failure.message, failure.status, failure.code, {
240
+ diagnostic: failure.diagnostic,
254
241
  });
242
+ }
243
+ emit({ kind: 'phase', phase: 'claim', detail: 'planning the screens (10-20s, buys no image)' });
244
+ let envelope;
245
+ try {
246
+ envelope = attempt.runId
247
+ ? await args.branchClient.getRun(attempt.runId, args.signal)
248
+ : await claimBuildRun({ client: args.branchClient, inputs, runKey, signal: args.signal });
249
+ }
250
+ catch (error) {
251
+ const terminal = error instanceof BranchApiError
252
+ && ['build_plan_failed', 'run_setup_incomplete'].includes(error.code);
253
+ attempt.setupFailure = {
254
+ terminal,
255
+ message: error instanceof Error ? error.message : String(error),
256
+ occurredAt: new Date().toISOString(),
257
+ ...(error instanceof BranchApiError
258
+ ? { status: error.status, code: error.code, diagnostic: error.diagnostic }
259
+ : {}),
260
+ };
261
+ if (terminal)
262
+ attempt.status = 'failed';
263
+ await writeBranchAttempt(attemptFile, attempt);
264
+ throw error;
265
+ }
266
+ delete attempt.setupFailure;
255
267
  attempt.runId = envelope.id;
256
268
  attempt.status = 'dispatching';
257
269
  await writeBranchAttempt(attemptFile, attempt);
@@ -264,7 +276,18 @@ export const executeBranchRun = async (args) => {
264
276
  const packagePageCount = branchConversionPages(plan).length;
265
277
  progressPageCount = packagePageCount;
266
278
  progressLogicalPageCount = plan.pages.length;
267
- const convert = inputs.convert;
279
+ // A historical or resumed attempt keeps its original backend, even when auto readiness changed.
280
+ let convert = inputs.convert && existing ? { ...inputs.convert, selection: existing.convert?.selection ?? { engine: 'api', reason: 'saved historical branch run' }, localFlags: existing.convert?.localFlags } : inputs.convert;
281
+ if (convert) {
282
+ const selected = finalizeBranchConversion(convert, plan.screens.some(screen => Boolean(screen.contentSlotId)), Boolean(existing));
283
+ if (selected !== convert && attempt.convert) {
284
+ convert = selected;
285
+ attempt.convert.selection = selected.selection;
286
+ delete attempt.convert.localFlags;
287
+ await writeBranchAttempt(attemptFile, attempt);
288
+ emit({ kind: 'phase', phase: 'conversion-engine', detail: `API: ${selected.selection.reason}` });
289
+ }
290
+ }
268
291
  const packageClient = args.packageClient;
269
292
  // Refused before the run buys anything rather than after every screen is paid
270
293
  // for: a run that cannot convert should never have generated.