@12ui/design 0.2.27 → 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 (349) hide show
  1. package/README.md +72 -87
  2. package/SKILL.md +5 -5
  3. package/dist/branch-completion.d.ts.map +1 -1
  4. package/dist/branch-completion.js +37 -14
  5. package/dist/branch-completion.js.map +1 -1
  6. package/dist/branch-execution.d.ts.map +1 -1
  7. package/dist/branch-execution.js +28 -8
  8. package/dist/branch-execution.js.map +1 -1
  9. package/dist/branch-identity.d.ts +10 -4
  10. package/dist/branch-identity.d.ts.map +1 -1
  11. package/dist/branch-identity.js +9 -6
  12. package/dist/branch-identity.js.map +1 -1
  13. package/dist/branch-page-conversion.d.ts +9 -8
  14. package/dist/branch-page-conversion.d.ts.map +1 -1
  15. package/dist/branch-page-conversion.js +8 -2
  16. package/dist/branch-page-conversion.js.map +1 -1
  17. package/dist/branch-page-packaging.d.ts +31 -0
  18. package/dist/branch-page-packaging.d.ts.map +1 -0
  19. package/dist/branch-page-packaging.js +86 -0
  20. package/dist/branch-page-packaging.js.map +1 -0
  21. package/dist/branch-plan.d.ts +6 -0
  22. package/dist/branch-plan.d.ts.map +1 -1
  23. package/dist/branch-plan.js +6 -1
  24. package/dist/branch-plan.js.map +1 -1
  25. package/dist/branch-progress.d.ts +22 -0
  26. package/dist/branch-progress.d.ts.map +1 -1
  27. package/dist/branch-progress.js +33 -8
  28. package/dist/branch-progress.js.map +1 -1
  29. package/dist/branch-run-record.d.ts +9 -0
  30. package/dist/branch-run-record.d.ts.map +1 -1
  31. package/dist/branch-run-record.js.map +1 -1
  32. package/dist/branch-status.d.ts +2 -0
  33. package/dist/branch-status.d.ts.map +1 -1
  34. package/dist/branch-status.js +60 -15
  35. package/dist/branch-status.js.map +1 -1
  36. package/dist/branch-winner.d.ts +13 -15
  37. package/dist/branch-winner.d.ts.map +1 -1
  38. package/dist/branch-winner.js +25 -77
  39. package/dist/branch-winner.js.map +1 -1
  40. package/dist/cli-auth-command.d.ts.map +1 -1
  41. package/dist/cli-auth-command.js +5 -0
  42. package/dist/cli-auth-command.js.map +1 -1
  43. package/dist/cli-auth-onboarding.d.ts +12 -0
  44. package/dist/cli-auth-onboarding.d.ts.map +1 -0
  45. package/dist/cli-auth-onboarding.js +21 -0
  46. package/dist/cli-auth-onboarding.js.map +1 -0
  47. package/dist/cli-branch-command.d.ts +14 -19
  48. package/dist/cli-branch-command.d.ts.map +1 -1
  49. package/dist/cli-branch-command.js +207 -137
  50. package/dist/cli-branch-command.js.map +1 -1
  51. package/dist/cli-capabilities.d.ts +10 -51
  52. package/dist/cli-capabilities.d.ts.map +1 -1
  53. package/dist/cli-capabilities.js +13 -26
  54. package/dist/cli-capabilities.js.map +1 -1
  55. package/dist/cli-cli-command.d.ts +3 -0
  56. package/dist/cli-cli-command.d.ts.map +1 -1
  57. package/dist/cli-cli-command.js +15 -3
  58. package/dist/cli-cli-command.js.map +1 -1
  59. package/dist/cli-conversion-derivation.d.ts +30 -0
  60. package/dist/cli-conversion-derivation.d.ts.map +1 -0
  61. package/dist/{cli-export-command.js → cli-conversion-derivation.js} +178 -110
  62. package/dist/cli-conversion-derivation.js.map +1 -0
  63. package/dist/cli-conversion-output-directory.d.ts +5 -0
  64. package/dist/cli-conversion-output-directory.d.ts.map +1 -0
  65. package/dist/{cli-export-output-directory.js → cli-conversion-output-directory.js} +10 -10
  66. package/dist/cli-conversion-output-directory.js.map +1 -0
  67. package/dist/cli-convert-command.d.ts +9 -0
  68. package/dist/cli-convert-command.d.ts.map +1 -1
  69. package/dist/cli-convert-command.js +528 -158
  70. package/dist/cli-convert-command.js.map +1 -1
  71. package/dist/cli-corpus-command.d.ts.map +1 -1
  72. package/dist/cli-corpus-command.js +77 -10
  73. package/dist/cli-corpus-command.js.map +1 -1
  74. package/dist/cli-corpus-reference-downloads.d.ts +5 -0
  75. package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
  76. package/dist/cli-corpus-reference-downloads.js +18 -7
  77. package/dist/cli-corpus-reference-downloads.js.map +1 -1
  78. package/dist/cli-corpus-run.d.ts +9 -0
  79. package/dist/cli-corpus-run.d.ts.map +1 -1
  80. package/dist/cli-corpus-run.js +18 -0
  81. package/dist/cli-corpus-run.js.map +1 -1
  82. package/dist/cli-detach.d.ts +12 -4
  83. package/dist/cli-detach.d.ts.map +1 -1
  84. package/dist/cli-detach.js +49 -17
  85. package/dist/cli-detach.js.map +1 -1
  86. package/dist/cli-draft-command.d.ts +44 -61
  87. package/dist/cli-draft-command.d.ts.map +1 -1
  88. package/dist/cli-draft-command.js +307 -180
  89. package/dist/cli-draft-command.js.map +1 -1
  90. package/dist/cli-help/conversion.d.ts +30 -0
  91. package/dist/cli-help/conversion.d.ts.map +1 -0
  92. package/dist/cli-help/conversion.js +55 -0
  93. package/dist/cli-help/conversion.js.map +1 -0
  94. package/dist/cli-help/design.d.ts +74 -0
  95. package/dist/cli-help/design.d.ts.map +1 -0
  96. package/dist/cli-help/design.js +131 -0
  97. package/dist/cli-help/design.js.map +1 -0
  98. package/dist/cli-help/index.d.ts +224 -0
  99. package/dist/cli-help/index.d.ts.map +1 -0
  100. package/dist/cli-help/index.js +32 -0
  101. package/dist/cli-help/index.js.map +1 -0
  102. package/dist/cli-help/meta.d.ts +24 -0
  103. package/dist/cli-help/meta.d.ts.map +1 -0
  104. package/dist/cli-help/meta.js +30 -0
  105. package/dist/cli-help/meta.js.map +1 -0
  106. package/dist/cli-help/render.d.ts +4 -0
  107. package/dist/cli-help/render.d.ts.map +1 -0
  108. package/dist/cli-help/render.js +28 -0
  109. package/dist/cli-help/render.js.map +1 -0
  110. package/dist/cli-help/setup.d.ts +93 -0
  111. package/dist/cli-help/setup.d.ts.map +1 -0
  112. package/dist/cli-help/setup.js +142 -0
  113. package/dist/cli-help/setup.js.map +1 -0
  114. package/dist/cli-help/types.d.ts +10 -0
  115. package/dist/cli-help/types.d.ts.map +1 -0
  116. package/dist/cli-help/types.js +2 -0
  117. package/dist/cli-help/types.js.map +1 -0
  118. package/dist/cli-next-command.d.ts +11 -8
  119. package/dist/cli-next-command.d.ts.map +1 -1
  120. package/dist/cli-next-command.js +288 -88
  121. package/dist/cli-next-command.js.map +1 -1
  122. package/dist/cli-output-paths.d.ts +2 -23
  123. package/dist/cli-output-paths.d.ts.map +1 -1
  124. package/dist/cli-output-paths.js +2 -36
  125. package/dist/cli-output-paths.js.map +1 -1
  126. package/dist/cli-package-command.d.ts +1 -0
  127. package/dist/cli-package-command.d.ts.map +1 -1
  128. package/dist/cli-package-command.js +107 -34
  129. package/dist/cli-package-command.js.map +1 -1
  130. package/dist/cli-pending-auth.d.ts +20 -0
  131. package/dist/cli-pending-auth.d.ts.map +1 -0
  132. package/dist/cli-pending-auth.js +160 -0
  133. package/dist/cli-pending-auth.js.map +1 -0
  134. package/dist/cli-progress.d.ts +256 -75
  135. package/dist/cli-progress.d.ts.map +1 -1
  136. package/dist/cli-progress.js +425 -98
  137. package/dist/cli-progress.js.map +1 -1
  138. package/dist/cli-run.d.ts +2 -0
  139. package/dist/cli-run.d.ts.map +1 -1
  140. package/dist/cli-run.js +56 -75
  141. package/dist/cli-run.js.map +1 -1
  142. package/dist/cli-skill-command.d.ts +3 -0
  143. package/dist/cli-skill-command.d.ts.map +1 -1
  144. package/dist/cli-skill-command.js +26 -3
  145. package/dist/cli-skill-command.js.map +1 -1
  146. package/dist/cli-usage.d.ts +17 -8
  147. package/dist/cli-usage.d.ts.map +1 -1
  148. package/dist/cli-usage.js +55 -40
  149. package/dist/cli-usage.js.map +1 -1
  150. package/dist/config.d.ts +1 -0
  151. package/dist/config.d.ts.map +1 -1
  152. package/dist/config.js +8 -2
  153. package/dist/config.js.map +1 -1
  154. package/dist/conversion-client.d.ts +4 -0
  155. package/dist/conversion-client.d.ts.map +1 -1
  156. package/dist/conversion-client.js.map +1 -1
  157. package/dist/conversion-outputs.d.ts +11 -0
  158. package/dist/conversion-outputs.d.ts.map +1 -1
  159. package/dist/conversion-outputs.js +13 -1
  160. package/dist/conversion-outputs.js.map +1 -1
  161. package/dist/conversion-receipt.d.ts +1 -1
  162. package/dist/conversion-receipt.js +1 -1
  163. package/dist/conversion-recovery.d.ts +20 -0
  164. package/dist/conversion-recovery.d.ts.map +1 -0
  165. package/dist/conversion-recovery.js +61 -0
  166. package/dist/conversion-recovery.js.map +1 -0
  167. package/dist/conversion-status-contract.js +1 -1
  168. package/dist/conversion-status-contract.js.map +1 -1
  169. package/dist/credential-setup.d.ts +9 -1
  170. package/dist/credential-setup.d.ts.map +1 -1
  171. package/dist/credential-setup.js +13 -1
  172. package/dist/credential-setup.js.map +1 -1
  173. package/dist/draft-adoption.d.ts +9 -3
  174. package/dist/draft-adoption.d.ts.map +1 -1
  175. package/dist/draft-adoption.js +26 -41
  176. package/dist/draft-adoption.js.map +1 -1
  177. package/dist/draft-identity.d.ts +9 -12
  178. package/dist/draft-identity.d.ts.map +1 -1
  179. package/dist/draft-identity.js +0 -0
  180. package/dist/draft-identity.js.map +1 -1
  181. package/dist/draft-run.d.ts +9 -19
  182. package/dist/draft-run.d.ts.map +1 -1
  183. package/dist/draft-run.js +67 -95
  184. package/dist/draft-run.js.map +1 -1
  185. package/dist/draft-workspace.d.ts +26 -18
  186. package/dist/draft-workspace.d.ts.map +1 -1
  187. package/dist/draft-workspace.js +16 -5
  188. package/dist/draft-workspace.js.map +1 -1
  189. package/dist/hosted-draft-identity.d.ts +20 -0
  190. package/dist/hosted-draft-identity.d.ts.map +1 -0
  191. package/dist/hosted-draft-identity.js +30 -0
  192. package/dist/hosted-draft-identity.js.map +1 -0
  193. package/dist/hosted-draft-run.d.ts +60 -0
  194. package/dist/hosted-draft-run.d.ts.map +1 -0
  195. package/dist/hosted-draft-run.js +97 -0
  196. package/dist/hosted-draft-run.js.map +1 -0
  197. package/dist/legacy-codex-cleanup.d.ts +13 -0
  198. package/dist/legacy-codex-cleanup.d.ts.map +1 -1
  199. package/dist/legacy-codex-cleanup.js +83 -0
  200. package/dist/legacy-codex-cleanup.js.map +1 -1
  201. package/dist/legacy-skill-catalog.d.ts +2 -2
  202. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  203. package/dist/legacy-skill-catalog.js +76 -5
  204. package/dist/legacy-skill-catalog.js.map +1 -1
  205. package/dist/login-auth.d.ts +38 -0
  206. package/dist/login-auth.d.ts.map +1 -1
  207. package/dist/login-auth.js +67 -16
  208. package/dist/login-auth.js.map +1 -1
  209. package/dist/mcp-tool-definitions.js +1 -1
  210. package/dist/mcp-tool-definitions.js.map +1 -1
  211. package/dist/next-target.d.ts +1 -4
  212. package/dist/next-target.d.ts.map +1 -1
  213. package/dist/next-target.js +5 -9
  214. package/dist/next-target.js.map +1 -1
  215. package/dist/next-wait-lease.d.ts +17 -0
  216. package/dist/next-wait-lease.d.ts.map +1 -0
  217. package/dist/next-wait-lease.js +92 -0
  218. package/dist/next-wait-lease.js.map +1 -0
  219. package/dist/package-client.d.ts +30 -0
  220. package/dist/package-client.d.ts.map +1 -1
  221. package/dist/package-client.js.map +1 -1
  222. package/dist/package-submission.d.ts +17 -0
  223. package/dist/package-submission.d.ts.map +1 -1
  224. package/dist/package-submission.js +13 -0
  225. package/dist/package-submission.js.map +1 -1
  226. package/dist/pending-auth-store.d.ts +15 -0
  227. package/dist/pending-auth-store.d.ts.map +1 -0
  228. package/dist/pending-auth-store.js +90 -0
  229. package/dist/pending-auth-store.js.map +1 -0
  230. package/dist/responsive-quality.d.ts +2 -2
  231. package/dist/responsive-quality.js +2 -2
  232. package/dist/run-journal-commands.d.ts.map +1 -1
  233. package/dist/run-journal-commands.js +30 -78
  234. package/dist/run-journal-commands.js.map +1 -1
  235. package/dist/run-journal-in-flight.d.ts +2 -2
  236. package/dist/run-journal-in-flight.d.ts.map +1 -1
  237. package/dist/run-journal-in-flight.js +0 -0
  238. package/dist/run-journal-in-flight.js.map +1 -1
  239. package/dist/skill-installer.d.ts +2 -2
  240. package/dist/skill-installer.d.ts.map +1 -1
  241. package/dist/skill-installer.js +2 -2
  242. package/dist/skill-installer.js.map +1 -1
  243. package/open-design.json +3 -3
  244. package/package.json +1 -1
  245. package/skills/12ui-design/SKILL.md +62 -0
  246. package/skills/12ui-design/agents/openai.yaml +6 -0
  247. package/skills/12ui-design/inspire.md +11 -0
  248. package/dist/cli-create-command.d.ts +0 -59
  249. package/dist/cli-create-command.d.ts.map +0 -1
  250. package/dist/cli-create-command.js +0 -354
  251. package/dist/cli-create-command.js.map +0 -1
  252. package/dist/cli-export-command.d.ts +0 -26
  253. package/dist/cli-export-command.d.ts.map +0 -1
  254. package/dist/cli-export-command.js.map +0 -1
  255. package/dist/cli-export-output-directory.d.ts +0 -5
  256. package/dist/cli-export-output-directory.d.ts.map +0 -1
  257. package/dist/cli-export-output-directory.js.map +0 -1
  258. package/dist/cli-image-batch-command.d.ts +0 -29
  259. package/dist/cli-image-batch-command.d.ts.map +0 -1
  260. package/dist/cli-image-batch-command.js +0 -236
  261. package/dist/cli-image-batch-command.js.map +0 -1
  262. package/dist/cli-image-batch-materialize.d.ts +0 -27
  263. package/dist/cli-image-batch-materialize.d.ts.map +0 -1
  264. package/dist/cli-image-batch-materialize.js +0 -41
  265. package/dist/cli-image-batch-materialize.js.map +0 -1
  266. package/dist/cli-image-batch-resume.d.ts +0 -36
  267. package/dist/cli-image-batch-resume.d.ts.map +0 -1
  268. package/dist/cli-image-batch-resume.js +0 -176
  269. package/dist/cli-image-batch-resume.js.map +0 -1
  270. package/dist/cli-image-command.d.ts +0 -10
  271. package/dist/cli-image-command.d.ts.map +0 -1
  272. package/dist/cli-image-command.js +0 -106
  273. package/dist/cli-image-command.js.map +0 -1
  274. package/dist/cli-select-command.d.ts +0 -16
  275. package/dist/cli-select-command.d.ts.map +0 -1
  276. package/dist/cli-select-command.js +0 -60
  277. package/dist/cli-select-command.js.map +0 -1
  278. package/dist/create-identity.d.ts +0 -25
  279. package/dist/create-identity.d.ts.map +0 -1
  280. package/dist/create-identity.js +0 -0
  281. package/dist/create-identity.js.map +0 -1
  282. package/dist/draft-prompts.d.ts +0 -35
  283. package/dist/draft-prompts.d.ts.map +0 -1
  284. package/dist/draft-prompts.js +0 -51
  285. package/dist/draft-prompts.js.map +0 -1
  286. package/dist/image-batch-status.d.ts +0 -42
  287. package/dist/image-batch-status.d.ts.map +0 -1
  288. package/dist/image-batch-status.js +0 -143
  289. package/dist/image-batch-status.js.map +0 -1
  290. package/dist/image-generation-batch-attempt.d.ts +0 -28
  291. package/dist/image-generation-batch-attempt.d.ts.map +0 -1
  292. package/dist/image-generation-batch-attempt.js +0 -48
  293. package/dist/image-generation-batch-attempt.js.map +0 -1
  294. package/dist/image-generation-batch-manifest.d.ts +0 -25
  295. package/dist/image-generation-batch-manifest.d.ts.map +0 -1
  296. package/dist/image-generation-batch-manifest.js +0 -97
  297. package/dist/image-generation-batch-manifest.js.map +0 -1
  298. package/dist/image-generation-completion.d.ts +0 -43
  299. package/dist/image-generation-completion.d.ts.map +0 -1
  300. package/dist/image-generation-completion.js +0 -54
  301. package/dist/image-generation-completion.js.map +0 -1
  302. package/dist/image-generation-error.d.ts +0 -3
  303. package/dist/image-generation-error.d.ts.map +0 -1
  304. package/dist/image-generation-error.js +0 -30
  305. package/dist/image-generation-error.js.map +0 -1
  306. package/dist/image-generation-evidence.d.ts +0 -43
  307. package/dist/image-generation-evidence.d.ts.map +0 -1
  308. package/dist/image-generation-evidence.js +0 -28
  309. package/dist/image-generation-evidence.js.map +0 -1
  310. package/dist/image-generation-fs.d.ts +0 -3
  311. package/dist/image-generation-fs.d.ts.map +0 -1
  312. package/dist/image-generation-fs.js +0 -23
  313. package/dist/image-generation-fs.js.map +0 -1
  314. package/dist/image-generation-output.d.ts +0 -3
  315. package/dist/image-generation-output.d.ts.map +0 -1
  316. package/dist/image-generation-output.js +0 -51
  317. package/dist/image-generation-output.js.map +0 -1
  318. package/dist/image-generation-request.d.ts +0 -43
  319. package/dist/image-generation-request.d.ts.map +0 -1
  320. package/dist/image-generation-request.js +0 -52
  321. package/dist/image-generation-request.js.map +0 -1
  322. package/dist/image-generation-resume.d.ts +0 -49
  323. package/dist/image-generation-resume.d.ts.map +0 -1
  324. package/dist/image-generation-resume.js +0 -96
  325. package/dist/image-generation-resume.js.map +0 -1
  326. package/dist/image-generation-run.d.ts +0 -46
  327. package/dist/image-generation-run.d.ts.map +0 -1
  328. package/dist/image-generation-run.js +0 -158
  329. package/dist/image-generation-run.js.map +0 -1
  330. package/dist/image-generation-staging.d.ts +0 -25
  331. package/dist/image-generation-staging.d.ts.map +0 -1
  332. package/dist/image-generation-staging.js +0 -80
  333. package/dist/image-generation-staging.js.map +0 -1
  334. package/dist/image-generation-usage.d.ts +0 -75
  335. package/dist/image-generation-usage.d.ts.map +0 -1
  336. package/dist/image-generation-usage.js +0 -219
  337. package/dist/image-generation-usage.js.map +0 -1
  338. package/dist/image-provider-preflight.d.ts +0 -21
  339. package/dist/image-provider-preflight.d.ts.map +0 -1
  340. package/dist/image-provider-preflight.js +0 -184
  341. package/dist/image-provider-preflight.js.map +0 -1
  342. package/dist/selection-record.d.ts +0 -97
  343. package/dist/selection-record.d.ts.map +0 -1
  344. package/dist/selection-record.js +0 -138
  345. package/dist/selection-record.js.map +0 -1
  346. package/skills/design/SKILL.md +0 -116
  347. package/skills/design/agents/openai.yaml +0 -8
  348. package/skills/design/assets/large-logo.svg +0 -3
  349. package/skills/design/assets/small-400px.png +0 -0
@@ -1,26 +1,22 @@
1
- import { createHash } from 'node:crypto';
2
- import { readFile } from 'node:fs/promises';
1
+ import { writeFile, readFile, stat } from 'node:fs/promises';
3
2
  import path from 'node:path';
3
+ import { TwelveUiBranchClient } from './branch-client.js';
4
4
  import { booleanFlag, stringFlag } from './cli-arguments.js';
5
5
  import { CliRefusal } from './cli-refusal.js';
6
6
  import { usageRefusal } from './cli-usage.js';
7
- import { OPERATION_DURATION_HINTS, formatDuration, nextActionLine, } from './cli-progress.js';
7
+ import { createLongRunningProgress, nextActionLine, secondsSince, } from './cli-progress.js';
8
8
  import { readConversionConfig } from './config.js';
9
9
  import { INSPIRATION_ATTEMPT_FILE } from './cli-corpus-types.js';
10
10
  import { TwelveUiCorpusClient } from './corpus-client.js';
11
- import { summarizeImageBatchProgress } from './image-batch-status.js';
12
- import { acquireDraftRunDirectory } from './draft-adoption.js';
13
- import { draftPaths, readDraftRecord, } from './draft-workspace.js';
14
- import { DRAFT_CANDIDATE_COUNT, draftRunCorpusKey, prepareDraftRun, } from './draft-run.js';
15
- import { readSelectionRecord } from './selection-record.js';
16
- /**
17
- * `12ui draft` the whole explore step as one command.
18
- *
19
- * The caller supplies the design problem. Everything else — where the run
20
- * lives, which references steer which candidate, how the keys are derived,
21
- * when the batch is done — is the CLI's, because each of those was previously
22
- * a paragraph of prose that a model could and did paraphrase away.
23
- */
11
+ import { acquireDraftRunDirectory, transferDraftRunClaim, } from './draft-adoption.js';
12
+ import { draftLocalRunKey } from './draft-identity.js';
13
+ import { draftPaths, readDraftRecord, writeDraftCompletion, } from './draft-workspace.js';
14
+ import { DRAFT_CANDIDATE_COUNT, DRAFT_CANDIDATE_COUNT_MAXIMUM, DRAFT_CANDIDATE_COUNT_MINIMUM, prepareDraftRun, } from './draft-run.js';
15
+ import { readConceptValue } from './concept-input.js';
16
+ import { loadCorpusReferenceImage } from './cli-corpus-reference-image.js';
17
+ import { dispatchHostedDraftSlots, downloadHostedDraftCandidates, hostedDraftRunIsSettled, HOSTED_DRAFT_CANDIDATE_DURATION_SECONDS, summarizeHostedDraftRun, waitForHostedDraftRun, } from './hosted-draft-run.js';
18
+ /** `12ui draft` owns corpus retrieval, the hosted run, and local image materialization. */
19
+ export const INTERNAL_DRAFT_WORKER_ENV = 'TWELVE_UI_INTERNAL_DRAFT_WORKER';
24
20
  const parseMode = (flags, hasSource) => {
25
21
  const mode = stringFlag(flags, 'mode')?.trim();
26
22
  if (!hasSource) {
@@ -42,113 +38,298 @@ const parseAspect = (flags) => {
42
38
  return aspect;
43
39
  throw new Error('--aspect must be landscape, portrait, or square');
44
40
  };
45
- const parseProvider = (flags) => {
46
- const provider = stringFlag(flags, 'provider')?.trim();
47
- if (provider === undefined)
48
- return 'auto';
49
- if (provider === 'auto' || provider === 'codex' || provider === 'openai')
50
- return provider;
51
- throw new Error('--provider must be auto, codex, or openai');
41
+ const rejectLocalProviderFlags = (flags) => {
42
+ const retired = ['provider', 'project-root'].filter((flag) => flags[flag] !== undefined);
43
+ if (retired.length > 0) {
44
+ throw new Error(`${retired.map((flag) => `--${flag}`).join(', ')} retired from 12ui draft.`
45
+ + ' Draft image generation is hosted and authenticates only to 12ui.');
46
+ }
52
47
  };
53
- /**
54
- * The route correction, printed once and before anything paid moves.
55
- *
56
- * MEASURED 2026-08-14: the two runs of a ten-run wave that built the wrong
57
- * thing both typed `--redesign-source <target>.png --mode reskin` while holding
58
- * the finished design they had been asked to BUILD. They did not skip the
59
- * existing-image route; they took the only one the skill named, and that route
60
- * redraws the image instead of converting it. The fact is in this command's own
61
- * argv, so the correction belongs here rather than in a skill sentence that
62
- * cannot reach an agent who has already decided.
63
- *
64
- * It is not a refusal: `--mode reskin` is a legitimate capability, and a run
65
- * that genuinely wants a redraw gets one. It is a named alternative, at the
66
- * only moment it is still free.
67
- */
68
48
  export const redesignRouteNotice = (source) => (`\`${source}\` is already a finished design. To build it rather than redraw it:`
69
- + ` \`12ui convert ${source} --export html\`. Continuing with a redesign draft.`);
70
- /**
71
- * Prepare the run: create the directory, buy one corpus search, write the
72
- * generation manifest. Dispatching the images is the caller's next move, so
73
- * this stays testable without a provider.
74
- */
49
+ + ` \`12ui convert ${source} --output html\`. Continuing with a redesign draft.`);
50
+ const readCandidateCount = (flags) => {
51
+ const value = stringFlag(flags, 'candidates');
52
+ if (value === undefined)
53
+ return DRAFT_CANDIDATE_COUNT;
54
+ const count = Number(value);
55
+ if (!Number.isSafeInteger(count)
56
+ || count < DRAFT_CANDIDATE_COUNT_MINIMUM
57
+ || count > DRAFT_CANDIDATE_COUNT_MAXIMUM) {
58
+ throw new Error(`--candidates must be an integer between ${DRAFT_CANDIDATE_COUNT_MINIMUM}`
59
+ + ` and ${DRAFT_CANDIDATE_COUNT_MAXIMUM}`);
60
+ }
61
+ return count;
62
+ };
63
+ const preparedFromRecord = (args) => {
64
+ const paths = draftPaths(args.record.runDir);
65
+ return {
66
+ runDir: paths.runDir,
67
+ recordPath: paths.draftRecord,
68
+ runId: args.record.hosted.runId,
69
+ candidateCount: args.record.hosted.candidates.length,
70
+ adopted: args.adopted,
71
+ runKey: args.runKey,
72
+ record: args.record,
73
+ nextAction: nextActionLine({
74
+ what: `${args.record.hosted.candidates.length} hosted draft candidates`,
75
+ typicalSeconds: HOSTED_DRAFT_CANDIDATE_DURATION_SECONDS,
76
+ statusCommand: `12ui next ${paths.runDir}`,
77
+ waitHint: 'or re-run the draft with --wait to block in this shell instead',
78
+ }),
79
+ };
80
+ };
81
+ const resumeInternalPreparedDraft = async (runDir, dependencies) => {
82
+ const environment = dependencies.environment ?? process.env;
83
+ if (environment[INTERNAL_DRAFT_WORKER_ENV] !== '1') {
84
+ throw new Error('--resume-run is reserved for the detached draft worker');
85
+ }
86
+ const paths = draftPaths(runDir);
87
+ const record = await readDraftRecord(paths.draftRecord);
88
+ if (!record || record.version !== 2)
89
+ throw new Error(`No resumable hosted draft in ${paths.runDir}`);
90
+ const runKey = draftLocalRunKey({
91
+ query: record.query,
92
+ candidateCount: record.hosted.candidates.length,
93
+ redesignSourceSha256: record.redesignSource?.sha256 ?? null,
94
+ aspect: record.aspect,
95
+ mode: record.mode,
96
+ });
97
+ await transferDraftRunClaim({ runDir: paths.runDir, runKey });
98
+ (dependencies.write ?? ((line) => { process.stdout.write(`${line}\n`); }))(paths.runDir);
99
+ dependencies.onRunDirectory?.(paths.runDir);
100
+ return preparedFromRecord({ record, adopted: true, runKey });
101
+ };
102
+ /** Claim one corpus set and exactly one hosted run, then persist the resumable handle. */
75
103
  export const prepareDraftCommand = async (flags, dependencies = {}) => {
76
- const query = stringFlag(flags, 'query')?.replace(/\s+/gu, ' ').trim();
77
- if (!query) {
104
+ const internalResume = stringFlag(flags, 'resume-run')?.trim();
105
+ if (internalResume)
106
+ return await resumeInternalPreparedDraft(internalResume, dependencies);
107
+ dependencies.progress?.update({ stage: 'prepare', detail: 'validating draft inputs' });
108
+ rejectLocalProviderFlags(flags);
109
+ const conceptValue = stringFlag(flags, 'concept');
110
+ if (!conceptValue?.trim()) {
78
111
  throw usageRefusal({
79
- reason: 'A draft starts from the design problem in words, and --query was not given.',
112
+ reason: 'A draft starts from the design problem in words, and --concept was not given.',
80
113
  code: 'draft_usage',
81
114
  verb: ['draft'],
82
115
  });
83
116
  }
117
+ const query = readConceptValue({
118
+ value: conceptValue,
119
+ flag: '--concept',
120
+ trimHint: 'Keep the product, audience, surface, goal, and personality.',
121
+ });
122
+ const candidateCount = readCandidateCount(flags);
84
123
  const write = dependencies.write ?? ((line) => { process.stdout.write(`${line}\n`); });
85
124
  const warn = dependencies.warn ?? ((line) => { process.stderr.write(`${line}\n`); });
86
125
  const sourceFlag = stringFlag(flags, 'redesign-source')?.trim();
87
126
  const mode = parseMode(flags, Boolean(sourceFlag));
127
+ const aspect = parseAspect(flags);
88
128
  const redesignSource = sourceFlag
89
129
  ? await (async () => {
90
- const resolved = path.resolve(sourceFlag);
91
- const bytes = new Uint8Array(await readFile(resolved));
92
- return { path: resolved, sha256: createHash('sha256').update(bytes).digest('hex') };
130
+ const loaded = await loadCorpusReferenceImage(sourceFlag);
131
+ return { path: loaded.evidence.sourcePath, sha256: loaded.evidence.sha256 };
93
132
  })()
94
133
  : undefined;
95
134
  if (redesignSource)
96
135
  warn(redesignRouteNotice(sourceFlag));
136
+ const runKey = draftLocalRunKey({
137
+ query,
138
+ candidateCount,
139
+ redesignSourceSha256: redesignSource?.sha256 ?? null,
140
+ aspect,
141
+ mode,
142
+ });
97
143
  const config = (dependencies.readConfig ?? readConversionConfig)({
98
144
  origin: stringFlag(flags, 'origin'),
99
145
  apiKey: stringFlag(flags, 'api-key'),
100
146
  });
101
- /**
102
- * The corpus key is derived here, before the directory exists, because it is
103
- * what decides whether an incomplete previous run IS this run. A retry of a
104
- * draft that died after its corpus search continues that directory instead of
105
- * stranding a same-slug sibling beside it — measured overnight 2026-08-10,
106
- * where two siblings held different candidates and slug-glob tooling switched
107
- * between them silently.
108
- */
109
147
  const { paths, adopted } = await acquireDraftRunDirectory({
110
148
  query,
111
- corpusKey: draftRunCorpusKey({
112
- query,
113
- redesignSourceSha256: redesignSource?.sha256 ?? null,
114
- }),
149
+ runKey,
115
150
  ...(dependencies.workspaceRoot ? { root: dependencies.workspaceRoot } : {}),
116
151
  });
117
- // FIRST line of output, before anything slow or paid: every later command
118
- // needs this path, and a run whose directory is never printed is a run the
119
- // caller cannot continue.
120
152
  write(paths.runDir);
121
153
  dependencies.onRunDirectory?.(paths.runDir);
122
- const client = (dependencies.createClient ?? ((value) => new TwelveUiCorpusClient(value)))(config);
123
- await prepareDraftRun({
154
+ const existing = adopted ? await readDraftRecord(paths.draftRecord) : undefined;
155
+ if (existing?.version === 2)
156
+ return preparedFromRecord({ record: existing, adopted, runKey });
157
+ const corpusClient = (dependencies.createCorpusClient
158
+ ?? ((value) => new TwelveUiCorpusClient(value)))(config);
159
+ const hostedClient = (dependencies.createHostedClient
160
+ ?? ((value) => new TwelveUiBranchClient(value)))(config);
161
+ dependencies.progress?.update({
162
+ stage: 'retrieving_corpus',
163
+ detail: 'retrieving references and claiming the hosted run',
164
+ });
165
+ const record = await prepareDraftRun({
124
166
  paths,
125
- client,
167
+ client: corpusClient,
168
+ hostedClient,
126
169
  origin: config.origin,
127
170
  query,
128
171
  mode,
129
- aspect: parseAspect(flags),
130
- provider: parseProvider(flags),
131
- projectRoot: path.resolve(stringFlag(flags, 'project-root')?.trim() || process.cwd()),
172
+ aspect,
173
+ candidateCount,
132
174
  ...(redesignSource ? { redesignSource } : {}),
133
175
  });
134
- return {
135
- runDir: paths.runDir,
136
- manifestPath: paths.generationManifest,
137
- candidateCount: DRAFT_CANDIDATE_COUNT,
138
- adopted,
139
- nextAction: nextActionLine({
140
- what: `${DRAFT_CANDIDATE_COUNT} candidates`,
141
- typicalSeconds: OPERATION_DURATION_HINTS.imageBatch,
142
- statusCommand: `12ui next ${paths.runDir}`,
143
- waitHint: 'or re-run the draft with --wait to block in this shell instead',
144
- }),
145
- };
176
+ return preparedFromRecord({ record, adopted, runKey });
177
+ };
178
+ const writeDispatchAttempt = async (prepared) => {
179
+ const paths = draftPaths(prepared.runDir);
180
+ await writeFile(paths.dispatchAttempt, `${JSON.stringify({
181
+ version: 1,
182
+ runId: prepared.runId,
183
+ pid: process.pid,
184
+ startedAt: new Date().toISOString(),
185
+ }, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
186
+ };
187
+ const runPreparedDraft = async (args) => {
188
+ const config = (args.dependencies.readConfig ?? readConversionConfig)({
189
+ origin: stringFlag(args.flags, 'origin'),
190
+ apiKey: stringFlag(args.flags, 'api-key'),
191
+ });
192
+ const client = args.dependencies.hostedClient
193
+ ?? (args.dependencies.createHostedClient
194
+ ?? ((value) => new TwelveUiBranchClient(value)))(config);
195
+ const progress = args.dependencies.progress;
196
+ await writeDispatchAttempt(args.prepared);
197
+ // Identity said once; ticks carry counts, not the run id.
198
+ progress?.note(`claimed hosted run ${args.prepared.runId}`);
199
+ progress?.update({
200
+ stage: 'dispatching',
201
+ completed: 0,
202
+ total: args.prepared.candidateCount,
203
+ unit: 'slots settled',
204
+ });
205
+ const dispatched = await dispatchHostedDraftSlots({ client, runId: args.prepared.runId });
206
+ if (dispatched.failures.length > 0
207
+ && dispatched.run.candidates.some((candidate) => candidate.status === 'pending')) {
208
+ const detail = dispatched.failures
209
+ .map((failure) => `${failure.slot}: ${failure.error}`)
210
+ .join('; ');
211
+ throw new Error(`Hosted draft dispatch did not start: ${detail}`);
212
+ }
213
+ progress?.update({
214
+ stage: 'generating',
215
+ completed: summarizeHostedDraftRun(dispatched.run).succeeded
216
+ + summarizeHostedDraftRun(dispatched.run).failed,
217
+ total: dispatched.run.candidates.length,
218
+ unit: 'slots settled',
219
+ detail: `${dispatched.dispatched.length} slot(s) dispatched`,
220
+ });
221
+ const run = await waitForHostedDraftRun({
222
+ client,
223
+ run: dispatched.run,
224
+ ...(args.dependencies.sleep ? { sleep: args.dependencies.sleep } : {}),
225
+ onProgress: (current) => {
226
+ const counts = summarizeHostedDraftRun(current);
227
+ progress?.update({
228
+ stage: 'generating',
229
+ completed: counts.succeeded + counts.failed,
230
+ total: current.candidates.length,
231
+ unit: 'slots settled',
232
+ running: counts.dispatched,
233
+ detail: `${counts.pending} waiting, ${counts.failed} failed`,
234
+ });
235
+ },
236
+ });
237
+ if (!hostedDraftRunIsSettled(run)) {
238
+ throw new Error(`Hosted draft ${run.id} did not settle within 30 minutes; 12ui next ${args.prepared.runDir}`);
239
+ }
240
+ const failed = run.candidates.filter((candidate) => candidate.status === 'failed');
241
+ if (failed.length > 0) {
242
+ const detail = failed.map((candidate) => (`${candidate.slot}: ${candidate.error?.message ?? 'generation failed'}`)).join('; ');
243
+ throw new Error(`Hosted draft ${run.id} settled with failed slot(s): ${detail}`);
244
+ }
245
+ const files = await downloadHostedDraftCandidates({
246
+ client,
247
+ run,
248
+ candidates: args.prepared.record.hosted.candidates,
249
+ });
250
+ progress?.update({
251
+ stage: 'materialize',
252
+ completed: files.length,
253
+ total: args.prepared.candidateCount,
254
+ unit: 'candidates downloaded',
255
+ detail: 'writing hosted candidates locally',
256
+ });
257
+ if (files.length !== args.prepared.candidateCount) {
258
+ throw new Error(`Hosted draft ${run.id} settled ${args.prepared.candidateCount} slot(s) but downloaded ${files.length}`);
259
+ }
260
+ const paths = draftPaths(args.prepared.runDir);
261
+ await writeDraftCompletion(paths.completion, {
262
+ version: 1,
263
+ runId: run.id,
264
+ completedAt: new Date().toISOString(),
265
+ candidates: files,
266
+ });
267
+ progress?.finish('succeeded', {
268
+ artifacts: [{
269
+ name: `${files.length} candidate image(s)`,
270
+ state: 'succeeded',
271
+ path: paths.candidatesDir,
272
+ }],
273
+ spend: `${files.length} hosted draft candidate(s) purchased`,
274
+ next: 'choose an image, then 12ui branch execute --start <image> or 12ui convert <image>',
275
+ });
276
+ console.log(JSON.stringify({
277
+ runDir: args.prepared.runDir,
278
+ runId: run.id,
279
+ dispatched: dispatched.dispatched,
280
+ candidates: files,
281
+ nextAction: `Choose an image in ${paths.candidatesDir}, then pass it to 12ui branch execute --start or 12ui convert.`,
282
+ }, null, 2));
283
+ return [paths.draftRecord, paths.completion, ...files.map((file) => file.path)];
284
+ };
285
+ export const runDraftCommand = async (flags, dependencies = {}) => {
286
+ const progress = createLongRunningProgress({
287
+ label: 'draft',
288
+ typicalSeconds: HOSTED_DRAFT_CANDIDATE_DURATION_SECONDS,
289
+ quiet: booleanFlag(flags, 'quiet'),
290
+ });
291
+ try {
292
+ const candidateCount = readCandidateCount(flags);
293
+ progress.brief({
294
+ request: `draft: ${candidateCount} hosted candidate(s) from the concept`,
295
+ paid: `${candidateCount} draft candidate slot(s), one hosted run`,
296
+ done: 'one PNG per candidate in <run-dir>/candidates',
297
+ expectation: {
298
+ typicalSeconds: HOSTED_DRAFT_CANDIDATE_DURATION_SECONDS,
299
+ basis: 'measured median per candidate; slots run concurrently',
300
+ },
301
+ blocking: booleanFlag(flags, 'wait') || !dependencies.detach,
302
+ });
303
+ progress.update({ stage: 'prepare', detail: 'preparing the hosted draft' });
304
+ const prepared = await prepareDraftCommand(flags, { ...dependencies, progress });
305
+ if (dependencies.detach && !booleanFlag(flags, 'wait')) {
306
+ const detached = await dependencies.detach(prepared, progress);
307
+ progress.finish('detached', {
308
+ detail: 'generation continues in a background worker; nothing settles in this shell',
309
+ artifacts: [
310
+ { name: 'hosted run', state: `generating (run ${prepared.runId})` },
311
+ { name: 'worker log', state: 'streaming', path: detached.logFile },
312
+ ],
313
+ next: `12ui next ${prepared.runDir} reports progress; --wait blocks until done`,
314
+ });
315
+ return { prepared, artifacts: [prepared.recordPath, detached.logFile], detached };
316
+ }
317
+ return {
318
+ prepared,
319
+ artifacts: await runPreparedDraft({
320
+ prepared,
321
+ flags,
322
+ dependencies: { ...dependencies, progress },
323
+ }),
324
+ };
325
+ }
326
+ catch (error) {
327
+ progress.finish('stopped', {
328
+ detail: error instanceof Error ? error.message : String(error),
329
+ });
330
+ throw error;
331
+ }
146
332
  };
147
- /**
148
- * The corpus attempt record a draft writes before it spends anything. Its
149
- * presence without a `draft.json` beside it is proof the run started here and
150
- * died, which is the difference between "no run" and "a failed run".
151
- */
152
333
  const readDraftAttemptRecord = async (referencesDir) => {
153
334
  try {
154
335
  const parsed = JSON.parse(await readFile(path.join(referencesDir, INSPIRATION_ATTEMPT_FILE), 'utf8'));
@@ -158,110 +339,56 @@ const readDraftAttemptRecord = async (referencesDir) => {
158
339
  return null;
159
340
  }
160
341
  };
161
- /**
162
- * The draft run's state, read and never printed here.
163
- *
164
- * `12ui draft status` was the most-typed of four spellings of "what now" — 18
165
- * invocations in one measured wave, `--json` on eight of them, a flag it never
166
- * read. `12ui next` replaced all four, so this is a reader the merge calls.
167
- */
168
- export const readDraftStatus = async (runDirArgument) => {
342
+ export const readDraftStatus = async (runDirArgument, flags = {}, dependencies = {}) => {
169
343
  const paths = draftPaths(runDirArgument);
170
344
  const record = await readDraftRecord(paths.draftRecord);
171
- if (!record) {
172
- /**
173
- * MEASURED 2026-08-11: a draft whose corpus search died left its directory
174
- * holding only the attempt record, and this message told the caller that
175
- * "nothing has failed" — which was false, and sent a driver back to poll a
176
- * dead handle. A directory that holds an attempt record IS a run that
177
- * started here and did not finish, and it must say so.
178
- */
345
+ if (!record || record.version !== 2) {
179
346
  const started = await readDraftAttemptRecord(paths.referencesDir);
180
347
  throw new CliRefusal(started
181
- ? `The draft run in ${paths.runDir} failed before its references landed —`
182
- + ` it started at ${started.createdAt} and never wrote`
183
- + ` ${path.basename(paths.draftRecord)}. Re-run the same`
184
- + ' `12ui draft --query "…"`: the corpus search replays on its derived key rather than'
185
- + ' being bought again, and the new run prints the directory to use from then on.'
186
- : `No draft run in ${paths.runDir} — there is no ${path.basename(paths.draftRecord)} here, and`
187
- + ' nothing has failed. Start one with `12ui draft --query "<product, audience, surface,'
188
- + ' goal, personality>"`, which prints the run directory to use.', started ? 'draft_incomplete' : 'draft_absent');
348
+ ? `The draft run in ${paths.runDir} failed before its hosted run was recorded — it started`
349
+ + ` at ${started.createdAt}. Re-run the same draft command; its corpus key replays rather`
350
+ + ' than buying the search again.'
351
+ : `No hosted draft run is recorded in ${paths.runDir}. Start one with`
352
+ + ' `12ui draft --concept "<product, audience, surface, goal, personality>"`.', started ? 'draft_incomplete' : 'draft_absent');
189
353
  }
190
- const batch = await summarizeImageBatchProgress({ manifestPath: record.generation.manifestPath });
191
- const selection = await readSelectionRecord(paths.selection);
192
- const candidates = batch.candidates.map((candidate) => ({
354
+ const client = dependencies.hostedClient ?? new TwelveUiBranchClient((dependencies.readConfig ?? readConversionConfig)({
355
+ origin: stringFlag(flags, 'origin'),
356
+ apiKey: stringFlag(flags, 'api-key'),
357
+ }));
358
+ const run = await client.getRun(record.hosted.runId);
359
+ if (run.id !== record.hosted.runId)
360
+ throw new Error('The hosted draft service returned the wrong run');
361
+ const bySlot = new Map(run.candidates.map((candidate) => [candidate.slot, candidate]));
362
+ const candidates = record.hosted.candidates.map((candidate) => ({
193
363
  id: candidate.id,
194
- status: candidate.status,
364
+ slot: candidate.slot,
365
+ status: bySlot.get(candidate.slot)?.status ?? 'missing',
195
366
  path: candidate.outputPath,
196
367
  }));
197
- if (selection) {
198
- return {
199
- runDir: paths.runDir,
200
- query: record.query,
201
- phase: 'selected',
202
- complete: true,
203
- candidates,
204
- winner: selection.winner,
205
- narrative: `Candidate ${selection.winner} is selected. Convert it with`
206
- + ` \`12ui convert ${paths.candidatesDir}/${selection.winner}.png --export html\` for a`
207
- + ` single view, or grow the whole surface with \`12ui branch execute ${paths.runDir}\`.`,
208
- };
209
- }
210
- if (batch.complete) {
211
- return {
212
- runDir: paths.runDir,
213
- query: record.query,
214
- phase: 'ready',
215
- complete: true,
216
- candidates,
217
- narrative: `${batch.counts.complete} of ${batch.counts.total} candidates are ready in`
218
- + ` ${paths.candidatesDir}. Look at them at original detail, then record the choice with`
219
- + ` \`12ui select ${paths.runDir} --winner <id> --reason "<why>"\`.`,
220
- };
221
- }
368
+ const counts = summarizeHostedDraftRun(run);
369
+ const settled = hostedDraftRunIsSettled(run);
370
+ const localCount = (await Promise.all(record.hosted.candidates.map((candidate) => (stat(candidate.outputPath).then(() => true).catch(() => false))))).filter(Boolean).length;
371
+ const failed = counts.failed > 0;
372
+ const completionRecorded = await stat(paths.completion).then(() => true).catch(() => false);
373
+ const materialized = localCount === record.hosted.candidates.length && completionRecorded;
374
+ const elapsedSeconds = secondsSince(run.createdAt, Date.now());
222
375
  return {
223
376
  runDir: paths.runDir,
377
+ runId: run.id,
224
378
  query: record.query,
225
- phase: batch.neverDispatched ? 'searching' : 'generating',
226
- complete: false,
379
+ phase: failed ? 'failed' : settled ? materialized ? 'ready' : 'materializing' : 'generating',
380
+ complete: settled && (failed || materialized),
381
+ ...(elapsedSeconds === undefined ? {} : { elapsedSeconds: Math.round(elapsedSeconds) }),
227
382
  candidates,
228
- narrative: batch.neverDispatched
229
- ? `The references are retrieved and the generation manifest is written, but no candidate has`
230
- + ' been requested yet.'
231
- : batch.narrative,
232
- nextAction: batch.neverDispatched
233
- ? `Run \`12ui image generate-batch --manifest ${record.generation.manifestPath}\` to generate`
234
- + ` the candidates; it takes about ${formatDuration(OPERATION_DURATION_HINTS.imageBatch)}.`
235
- : nextActionLine({
236
- what: `${batch.counts.total} candidates`,
237
- typicalSeconds: OPERATION_DURATION_HINTS.imageBatch,
238
- statusCommand: `12ui next ${paths.runDir}`,
239
- ...(batch.elapsedSeconds === undefined ? {} : { elapsedSeconds: batch.elapsedSeconds }),
240
- waitHint: 'or wait for the dispatch that is already running',
241
- }),
383
+ narrative: failed
384
+ ? `${counts.failed} of ${run.candidates.length} hosted draft slot(s) failed; settled slots are not re-bought.`
385
+ : settled && materialized
386
+ ? `${counts.succeeded} hosted candidates settled; ${localCount} image(s) are in ${paths.candidatesDir}.`
387
+ : settled
388
+ ? `${counts.succeeded} hosted candidates settled; ${localCount} of`
389
+ + ` ${record.hosted.candidates.length} image(s) are materialized locally.`
390
+ : `${counts.succeeded + counts.failed} of ${run.candidates.length} hosted candidates settled.`,
242
391
  };
243
392
  };
244
- export const draftBanner = (prepared) => ((prepared.adopted
245
- ? 'Continuing the incomplete run already in this directory rather than opening a second one'
246
- + ' beside it; the corpus search replayed on its derived key.\n'
247
- : '')
248
- + `${prepared.candidateCount} candidates generating from ${prepared.candidateCount} corpus`
249
- + ` references, one each.\n${prepared.nextAction}`);
250
- export const draftDetachRequested = (flags) => !booleanFlag(flags, 'wait');
251
- /**
252
- * The whole explore step. Prepare (one paid corpus search), then hand the
253
- * generation to `image generate-batch` — detached by default, because an
254
- * agent's shell cannot hold 90 seconds and a cut dispatch reads as a failure.
255
- */
256
- export const runDraftCommand = async (flags, dependencies) => {
257
- const prepared = await prepareDraftCommand(flags, dependencies);
258
- const quiet = booleanFlag(flags, 'quiet');
259
- if (!quiet)
260
- process.stderr.write(`${draftBanner(prepared)}\n`);
261
- await dependencies.generate({
262
- manifestPath: prepared.manifestPath,
263
- detach: draftDetachRequested(flags),
264
- });
265
- return prepared;
266
- };
393
+ export const readHostedRunStatus = async (args) => await args.client.getRun(args.runId);
267
394
  //# sourceMappingURL=cli-draft-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-draft-command.js","sourceRoot":"","sources":["../src/cli-draft-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-draft-command.js","sourceRoot":"","sources":["../src/cli-draft-command.ts"],"names":[],"mappings":"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"}