@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
package/dist/draft-run.js CHANGED
@@ -1,136 +1,111 @@
1
- import { createHash } from 'node:crypto';
2
- import { mkdir, readFile, writeFile } from 'node:fs/promises';
1
+ import { mkdir } from 'node:fs/promises';
3
2
  import path from 'node:path';
4
3
  import { downloadCorpusInspiration } from './cli-corpus-run.js';
5
- import { INSPIRATION_EVIDENCE_FILE, INSPIRATION_MANIFEST_FILE, } from './cli-corpus-types.js';
4
+ import { INSPIRATION_MANIFEST_FILE, } from './cli-corpus-types.js';
6
5
  import { loadCorpusReferenceImage } from './cli-corpus-reference-image.js';
7
- import { draftCandidateKey, draftCorpusKey } from './draft-identity.js';
8
- import { draftCandidateIdFor, draftCandidatePrompt, promptDigest } from './draft-prompts.js';
9
- import { DRAFT_CANDIDATE_IDS, draftPaths, writeDraftRecord, } from './draft-workspace.js';
10
- /**
11
- * Everything `12ui draft` does before a single image is bought: one corpus
12
- * search, four references paired one-to-one with four candidates, a generation
13
- * manifest with derived keys, and a durable record of all of it.
14
- *
15
- * This is the step that used to be five screens of skill prose. Each rule it
16
- * encodes was previously an instruction a model could paraphrase away.
17
- */
6
+ import { draftCorpusKey } from './draft-identity.js';
7
+ import { hostedDraftRunKey, } from './hosted-draft-identity.js';
8
+ import { DRAFT_CANDIDATE_IDS, writeDraftRecord, } from './draft-workspace.js';
9
+ /** Hosted draft preparation: one corpus search, one service run claim, no local provider. */
18
10
  export const DRAFT_CANDIDATE_COUNT = 4;
19
- /** Retrieval mode is fixed for a draft, and the derived key must say so. */
11
+ export const DRAFT_CANDIDATE_COUNT_MINIMUM = 2;
12
+ export const DRAFT_CANDIDATE_COUNT_MAXIMUM = DRAFT_CANDIDATE_IDS.length;
20
13
  const DRAFT_CORPUS_MODE = 'balanced';
21
- /**
22
- * The one corpus key a draft run spends against. It lives here rather than
23
- * inline at the call site because `12ui draft` now derives it a second time,
24
- * before the run directory exists, to decide whether an incomplete previous
25
- * directory is the SAME run and can be continued in place.
26
- */
27
14
  export const draftRunCorpusKey = (args) => draftCorpusKey({
28
15
  query: args.query,
29
16
  mode: DRAFT_CORPUS_MODE,
30
- count: DRAFT_CANDIDATE_COUNT,
17
+ count: args.candidateCount ?? DRAFT_CANDIDATE_COUNT,
31
18
  redesignSourceSha256: args.redesignSourceSha256 ?? null,
32
19
  });
33
- /**
34
- * The corpus reference's own declared labels, kept as provenance for the
35
- * selection record. Never used as prompt text — see `draft-prompts.ts`.
36
- */
37
- const referenceLabel = (item) => {
38
- const label = (item.description ?? '').trim() || (item.uiType ?? '').trim();
39
- return label.length > 160 ? `${label.slice(0, 159)}…` : label;
40
- };
41
- const readInspirationItems = async (referencesDir) => {
42
- try {
43
- const evidence = JSON.parse(await readFile(path.join(referencesDir, INSPIRATION_EVIDENCE_FILE), 'utf8'));
44
- return Object.fromEntries((evidence.response?.items ?? []).map((item) => [
45
- item.id,
46
- { uiType: item.uiType ?? null, description: item.description ?? null },
47
- ]));
48
- }
49
- catch {
50
- // Provenance labels are a convenience; their absence never blocks a run.
51
- return {};
20
+ const draftSlotFor = (index) => String.fromCharCode('a'.charCodeAt(0) + index);
21
+ const assertClaimedSlots = (expected, actual) => {
22
+ const expectedSlots = expected.map((candidate) => candidate.slot);
23
+ const actualSlots = actual.candidates.map((candidate) => candidate.slot);
24
+ if (JSON.stringify(expectedSlots) !== JSON.stringify(actualSlots)) {
25
+ throw new Error(`Hosted draft ${actual.id} returned slots ${actualSlots.join(', ') || '(none)'};`
26
+ + ` expected ${expectedSlots.join(', ')}`);
52
27
  }
53
28
  };
54
29
  export const prepareDraftRun = async (input) => {
55
30
  const now = input.now ?? (() => new Date());
56
31
  const manifest = await downloadCorpusInspiration({
57
32
  client: input.client,
58
- request: { q: input.query, mode: DRAFT_CORPUS_MODE, k: DRAFT_CANDIDATE_COUNT },
33
+ request: { q: input.query, mode: DRAFT_CORPUS_MODE, k: input.candidateCount },
59
34
  outDir: input.paths.referencesDir,
60
35
  origin: input.origin,
61
36
  idempotencyKey: draftRunCorpusKey({
62
37
  query: input.query,
38
+ candidateCount: input.candidateCount,
63
39
  redesignSourceSha256: input.redesignSource?.sha256 ?? null,
64
40
  }),
65
- // A redesign conditions RETRIEVAL on the existing screen; whether it also
66
- // conditions generation is the difference between the two modes below.
67
41
  ...(input.redesignSource
68
42
  ? { referenceImage: await loadCorpusReferenceImage(input.redesignSource.path) }
69
43
  : {}),
70
44
  now,
71
45
  });
72
46
  const references = [...manifest.references].sort((left, right) => left.ordinal - right.ordinal);
73
- if (references.length < DRAFT_CANDIDATE_COUNT) {
47
+ if (references.length < input.candidateCount) {
74
48
  throw new Error(`The corpus returned ${references.length} reference(s) for this query and a draft needs`
75
- + ` ${DRAFT_CANDIDATE_COUNT}. Broaden the query and run 12ui draft again; nothing has been`
76
- + ' generated, so nothing has been bought.');
49
+ + ` ${input.candidateCount}. Broaden the concept and run 12ui draft again; no hosted image`
50
+ + ' slot has been dispatched.');
77
51
  }
78
- const labels = await readInspirationItems(input.paths.referencesDir);
79
- // A reskin conditions every candidate on the source and takes its diversity
80
- // from nothing else; the other modes pair one corpus image per candidate.
81
52
  const reskin = input.mode === 'structure-preserving-reskin';
82
- const referenceMode = reskin ? 'preserve-structure' : 'inspiration';
83
- const prompt = draftCandidatePrompt({ query: input.query, mode: input.mode });
53
+ const requestCandidates = DRAFT_CANDIDATE_IDS
54
+ .slice(0, input.candidateCount)
55
+ .map((_id, index) => reskin
56
+ ? { slot: draftSlotFor(index), useReferenceImage: true }
57
+ : { slot: draftSlotFor(index), referenceId: references[index].id });
58
+ let referenceImage;
59
+ if (reskin) {
60
+ if (!input.redesignSource)
61
+ throw new Error('A reskin requires --redesign-source');
62
+ const loaded = await loadCorpusReferenceImage(input.redesignSource.path);
63
+ referenceImage = {
64
+ data: Buffer.from(loaded.input.bytes).toString('base64'),
65
+ mediaType: loaded.input.mediaType,
66
+ sha256: loaded.evidence.sha256,
67
+ };
68
+ }
69
+ const hostedMode = reskin ? 'preserve-structure' : 'inspiration';
70
+ const idempotencyKey = hostedDraftRunKey({
71
+ concept: input.query,
72
+ aspect: input.aspect,
73
+ mode: hostedMode,
74
+ candidates: requestCandidates,
75
+ ...(referenceImage ? { referenceImageSha256: referenceImage.sha256 } : {}),
76
+ });
77
+ const hosted = await input.hostedClient.startCreateRun({
78
+ concept: input.query,
79
+ aspect: input.aspect,
80
+ mode: hostedMode,
81
+ candidates: requestCandidates,
82
+ ...(referenceImage ? { referenceImage } : {}),
83
+ }, idempotencyKey);
84
+ assertClaimedSlots(requestCandidates, hosted);
84
85
  await mkdir(input.paths.candidatesDir, { recursive: true });
85
- const candidates = DRAFT_CANDIDATE_IDS.map((id, index) => {
86
+ const candidates = DRAFT_CANDIDATE_IDS
87
+ .slice(0, input.candidateCount)
88
+ .map((id, index) => {
86
89
  const reference = references[index];
87
- const generationReference = reskin && input.redesignSource
88
- ? { path: input.redesignSource.path, sha256: input.redesignSource.sha256 }
89
- : { path: reference.file, sha256: reference.sha256 };
90
+ const serviceCandidate = hosted.candidates[index];
90
91
  return {
91
92
  id,
92
- direction: referenceLabel(labels[reference.id] ?? {}),
93
- prompt,
94
- promptSha256: promptDigest(prompt),
93
+ slot: serviceCandidate.slot,
94
+ direction: serviceCandidate.direction,
95
95
  outputPath: path.join(input.paths.candidatesDir, `${id}.png`),
96
- idempotencyKey: draftCandidateKey({
97
- query: input.query,
98
- candidateId: id,
99
- // In a reskin every candidate shares the source, so the paired corpus
100
- // reference still distinguishes the four purchases.
101
- referenceSha256: reference.sha256,
102
- aspect: input.aspect,
103
- referenceMode,
104
- }),
105
- referenceId: reference.id,
106
- referencePath: generationReference.path,
107
- referenceSha256: generationReference.sha256,
96
+ referenceId: reskin ? null : reference.id,
97
+ referencePath: reskin ? input.redesignSource.path : reference.file,
98
+ referenceSha256: reskin ? input.redesignSource.sha256 : reference.sha256,
108
99
  };
109
100
  });
110
- const batchManifest = {
111
- version: 1,
112
- projectRoot: input.projectRoot,
113
- provider: input.provider,
114
- aspect: input.aspect,
115
- referenceMode,
116
- candidates: candidates.map((candidate) => ({
117
- id: candidate.id,
118
- prompt: candidate.prompt,
119
- reference: path.relative(input.paths.runDir, candidate.referencePath),
120
- out: path.relative(input.paths.runDir, candidate.outputPath),
121
- idempotencyKey: candidate.idempotencyKey,
122
- })),
123
- };
124
- const serialized = `${JSON.stringify(batchManifest, null, 2)}\n`;
125
- await writeFile(input.paths.generationManifest, serialized, { encoding: 'utf8', mode: 0o600 });
126
101
  const record = {
127
- version: 1,
102
+ version: 2,
128
103
  createdAt: now().toISOString(),
129
104
  runDir: input.paths.runDir,
130
105
  query: input.query,
131
106
  mode: input.mode,
132
107
  aspect: input.aspect,
133
- referenceMode,
108
+ referenceMode: reskin ? 'preserve-structure' : 'inspiration',
134
109
  origin: input.origin,
135
110
  redesignSource: input.redesignSource
136
111
  ? { path: input.redesignSource.path, sha256: input.redesignSource.sha256 }
@@ -149,16 +124,13 @@ export const prepareDraftRun = async (input) => {
149
124
  aspect: reference.aspect,
150
125
  })),
151
126
  },
152
- generation: {
153
- manifestPath: input.paths.generationManifest,
154
- manifestSha256: createHash('sha256').update(serialized).digest('hex'),
155
- provider: input.provider,
127
+ hosted: {
128
+ runId: hosted.id,
129
+ idempotencyKey,
156
130
  candidates,
157
131
  },
158
132
  };
159
133
  await writeDraftRecord(input.paths.draftRecord, record);
160
134
  return record;
161
135
  };
162
- export const draftRunPaths = draftPaths;
163
- export { draftCandidateIdFor };
164
136
  //# sourceMappingURL=draft-run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft-run.js","sourceRoot":"","sources":["../src/draft-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draft-run.js","sourceRoot":"","sources":["../src/draft-run.ts"],"names":[],"mappings":"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"}
@@ -12,10 +12,11 @@
12
12
  export declare const DRAFT_RECORD_FILENAME = "draft.json";
13
13
  export declare const DRAFT_REFERENCES_DIRECTORY = "references";
14
14
  export declare const DRAFT_CANDIDATES_DIRECTORY = "candidates";
15
- export declare const DRAFT_GENERATION_MANIFEST = "generation.json";
16
- export declare const DRAFT_SELECTION_FILENAME = "selection.json";
15
+ export declare const DRAFT_DISPATCH_ATTEMPT_FILENAME = "draft.dispatch.json";
16
+ export declare const DRAFT_COMPLETION_FILENAME = "draft.complete.json";
17
+ export declare const DRAFT_LOG_FILENAME = "draft.log";
17
18
  export declare const DRAFT_BRANCH_DIRECTORY = "branch";
18
- export declare const DRAFT_CANDIDATE_IDS: readonly ["A", "B", "C", "D"];
19
+ export declare const DRAFT_CANDIDATE_IDS: readonly ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"];
19
20
  export type DraftCandidateId = typeof DRAFT_CANDIDATE_IDS[number];
20
21
  export type DraftMode = 'new-interface' | 'exploratory-redesign' | 'structure-preserving-reskin';
21
22
  /** `Editorial architecture homepage` -> `editorial-architecture-homepage`. */
@@ -24,9 +25,10 @@ export type DraftPaths = {
24
25
  runDir: string;
25
26
  referencesDir: string;
26
27
  candidatesDir: string;
27
- generationManifest: string;
28
28
  draftRecord: string;
29
- selection: string;
29
+ dispatchAttempt: string;
30
+ completion: string;
31
+ log: string;
30
32
  branchDir: string;
31
33
  };
32
34
  export declare const draftPaths: (runDir: string) => DraftPaths;
@@ -37,22 +39,17 @@ export declare const createDraftWorkspace: (args: {
37
39
  }) => Promise<DraftPaths>;
38
40
  export type DraftCandidateRecord = {
39
41
  id: DraftCandidateId;
40
- /**
41
- * What steered this candidate — the corpus reference's own declared labels,
42
- * recorded as provenance. It is never written into the prompt: the image is
43
- * the direction, and describing it back to the model would flatten it.
44
- */
42
+ /** Stable lower-case slot used by the hosted create API. */
43
+ slot: string;
44
+ /** Service-derived, visibly grounded direction. */
45
45
  direction: string;
46
- prompt: string;
47
- promptSha256: string;
48
46
  outputPath: string;
49
- idempotencyKey: string;
50
47
  referenceId: string | null;
51
48
  referencePath: string;
52
49
  referenceSha256: string;
53
50
  };
54
51
  export type DraftRecord = {
55
- version: 1;
52
+ version: 2;
56
53
  createdAt: string;
57
54
  runDir: string;
58
55
  query: string;
@@ -78,13 +75,24 @@ export type DraftRecord = {
78
75
  aspect: string;
79
76
  }[];
80
77
  };
81
- generation: {
82
- manifestPath: string;
83
- manifestSha256: string;
84
- provider: 'auto' | 'codex' | 'openai';
78
+ hosted: {
79
+ runId: string;
80
+ idempotencyKey: string;
85
81
  candidates: DraftCandidateRecord[];
86
82
  };
87
83
  };
84
+ export type DraftCompletionRecord = {
85
+ version: 1;
86
+ runId: string;
87
+ completedAt: string;
88
+ candidates: {
89
+ slot: string;
90
+ path: string;
91
+ sha256: string;
92
+ bytes: number;
93
+ }[];
94
+ };
88
95
  export declare const writeDraftRecord: (file: string, record: DraftRecord) => Promise<void>;
96
+ export declare const writeDraftCompletion: (file: string, record: DraftCompletionRecord) => Promise<void>;
89
97
  export declare const readDraftRecord: (file: string) => Promise<DraftRecord | undefined>;
90
98
  //# sourceMappingURL=draft-workspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft-workspace.d.ts","sourceRoot":"","sources":["../src/draft-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draft-workspace.d.ts","sourceRoot":"","sources":["../src/draft-workspace.ts"],"names":[],"mappings":"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"}
@@ -15,10 +15,14 @@ import path from 'node:path';
15
15
  export const DRAFT_RECORD_FILENAME = 'draft.json';
16
16
  export const DRAFT_REFERENCES_DIRECTORY = 'references';
17
17
  export const DRAFT_CANDIDATES_DIRECTORY = 'candidates';
18
- export const DRAFT_GENERATION_MANIFEST = 'generation.json';
19
- export const DRAFT_SELECTION_FILENAME = 'selection.json';
18
+ export const DRAFT_DISPATCH_ATTEMPT_FILENAME = 'draft.dispatch.json';
19
+ export const DRAFT_COMPLETION_FILENAME = 'draft.complete.json';
20
+ export const DRAFT_LOG_FILENAME = 'draft.log';
20
21
  export const DRAFT_BRANCH_DIRECTORY = 'branch';
21
- export const DRAFT_CANDIDATE_IDS = ['A', 'B', 'C', 'D'];
22
+ export const DRAFT_CANDIDATE_IDS = [
23
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
24
+ 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
25
+ ];
22
26
  /** `Editorial architecture homepage` -> `editorial-architecture-homepage`. */
23
27
  export const draftSlug = (query) => {
24
28
  const slug = query
@@ -39,9 +43,10 @@ export const draftPaths = (runDir) => {
39
43
  runDir: resolved,
40
44
  referencesDir: path.join(resolved, DRAFT_REFERENCES_DIRECTORY),
41
45
  candidatesDir: path.join(resolved, DRAFT_CANDIDATES_DIRECTORY),
42
- generationManifest: path.join(resolved, DRAFT_GENERATION_MANIFEST),
43
46
  draftRecord: path.join(resolved, DRAFT_RECORD_FILENAME),
44
- selection: path.join(resolved, DRAFT_SELECTION_FILENAME),
47
+ dispatchAttempt: path.join(resolved, DRAFT_DISPATCH_ATTEMPT_FILENAME),
48
+ completion: path.join(resolved, DRAFT_COMPLETION_FILENAME),
49
+ log: path.join(resolved, DRAFT_LOG_FILENAME),
45
50
  branchDir: path.join(resolved, DRAFT_BRANCH_DIRECTORY),
46
51
  };
47
52
  };
@@ -53,6 +58,12 @@ export const createDraftWorkspace = async (args) => {
53
58
  export const writeDraftRecord = async (file, record) => {
54
59
  await writeFile(file, `${JSON.stringify(record, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
55
60
  };
61
+ export const writeDraftCompletion = async (file, record) => {
62
+ await writeFile(file, `${JSON.stringify(record, null, 2)}\n`, {
63
+ encoding: 'utf8',
64
+ mode: 0o600,
65
+ });
66
+ };
56
67
  export const readDraftRecord = async (file) => {
57
68
  try {
58
69
  return JSON.parse(await readFile(file, 'utf8'));
@@ -1 +1 @@
1
- {"version":3,"file":"draft-workspace.js","sourceRoot":"","sources":["../src/draft-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draft-workspace.js","sourceRoot":"","sources":["../src/draft-workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /** Stable identity for one service-owned draft purchase. */
2
+ export declare const HOSTED_DRAFT_WORKFLOW_REVISION = "hosted-draft-v1";
3
+ export type HostedDraftCandidateSpecInput = {
4
+ slot: string;
5
+ direction?: string;
6
+ referenceId?: string;
7
+ useReferenceImage?: boolean;
8
+ };
9
+ /**
10
+ * The same hosted request always claims the same run, however its candidate
11
+ * objects happened to be ordered or spaced by the caller.
12
+ */
13
+ export declare const hostedDraftRunKey: (args: {
14
+ concept: string;
15
+ aspect: string;
16
+ mode?: string;
17
+ candidates: readonly HostedDraftCandidateSpecInput[];
18
+ referenceImageSha256?: string;
19
+ }) => string;
20
+ //# sourceMappingURL=hosted-draft-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-draft-identity.d.ts","sourceRoot":"","sources":["../src/hosted-draft-identity.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,eAAO,MAAM,8BAA8B,oBAAoB,CAAC;AAEhE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAaF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,KAAG,MAcO,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { createHash } from 'node:crypto';
2
+ /** Stable identity for one service-owned draft purchase. */
3
+ export const HOSTED_DRAFT_WORKFLOW_REVISION = 'hosted-draft-v1';
4
+ const shortDigest = (value, characters = 32) => (createHash('sha256').update(value).digest('hex').slice(0, characters));
5
+ const canonicalCandidate = (candidate) => [
6
+ candidate.slot,
7
+ candidate.direction ?? '',
8
+ candidate.referenceId ?? '',
9
+ candidate.useReferenceImage === true ? 'upload' : '',
10
+ ].join('\0');
11
+ /**
12
+ * The same hosted request always claims the same run, however its candidate
13
+ * objects happened to be ordered or spaced by the caller.
14
+ */
15
+ export const hostedDraftRunKey = (args) => [
16
+ 'draft',
17
+ 'hosted-v1',
18
+ shortDigest([
19
+ args.concept,
20
+ args.aspect,
21
+ args.mode ?? 'inspiration',
22
+ args.referenceImageSha256 ?? '',
23
+ [...args.candidates]
24
+ .sort((left, right) => left.slot.localeCompare(right.slot))
25
+ .map(canonicalCandidate)
26
+ .join('\u0001'),
27
+ HOSTED_DRAFT_WORKFLOW_REVISION,
28
+ ].join('\u0002')),
29
+ ].join(':');
30
+ //# sourceMappingURL=hosted-draft-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-draft-identity.js","sourceRoot":"","sources":["../src/hosted-draft-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;AAShE,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,UAAU,GAAG,EAAE,EAAU,EAAE,CAAC,CAC9D,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CACtE,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,SAAwC,EAAU,EAAE,CAAC;IAC/E,SAAS,CAAC,IAAI;IACd,SAAS,CAAC,SAAS,IAAI,EAAE;IACzB,SAAS,CAAC,WAAW,IAAI,EAAE;IAC3B,SAAS,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;CACrD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAMjC,EAAU,EAAE,CAAC;IACZ,OAAO;IACP,WAAW;IACX,WAAW,CAAC;QACV,IAAI,CAAC,OAAO;QACZ,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,IAAI,IAAI,aAAa;QAC1B,IAAI,CAAC,oBAAoB,IAAI,EAAE;QAC/B,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;aACjB,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC1D,GAAG,CAAC,kBAAkB,CAAC;aACvB,IAAI,CAAC,QAAQ,CAAC;QACjB,8BAA8B;KAC/B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
@@ -0,0 +1,60 @@
1
+ import type { BranchRunEnvelope, TwelveUiBranchClient } from './branch-client.js';
2
+ /** One hosted draft image, generated by the service rather than this machine. */
3
+ export declare const HOSTED_DRAFT_CANDIDATE_DURATION_SECONDS: 150;
4
+ export type HostedDraftCounts = {
5
+ pending: number;
6
+ dispatched: number;
7
+ succeeded: number;
8
+ failed: number;
9
+ };
10
+ export declare const summarizeHostedDraftRun: (run: BranchRunEnvelope) => HostedDraftCounts;
11
+ export declare const hostedDraftRunIsSettled: (run: BranchRunEnvelope) => boolean;
12
+ type HostedDraftDispatchClient = Pick<TwelveUiBranchClient, 'getRun' | 'dispatchScreen'>;
13
+ export type HostedDraftDispatchResult = {
14
+ run: BranchRunEnvelope;
15
+ dispatched: string[];
16
+ failures: {
17
+ slot: string;
18
+ error: string;
19
+ }[];
20
+ };
21
+ /**
22
+ * Dispatch only slots which have never started.
23
+ *
24
+ * `dispatched`, `succeeded`, and `failed` are all durable service states. A
25
+ * resume observes them and never posts those slots again; the service remains
26
+ * the paid-effect and ledger authority.
27
+ */
28
+ export declare const dispatchHostedDraftSlots: (args: {
29
+ client: HostedDraftDispatchClient;
30
+ runId: string;
31
+ }) => Promise<HostedDraftDispatchResult>;
32
+ type HostedDraftReadClient = Pick<TwelveUiBranchClient, 'getRun'>;
33
+ export declare const waitForHostedDraftRun: (args: {
34
+ client: HostedDraftReadClient;
35
+ run: BranchRunEnvelope;
36
+ timeoutMs?: number;
37
+ pollIntervalMs?: number;
38
+ now?: () => number;
39
+ sleep?: (milliseconds: number) => Promise<void>;
40
+ onProgress?: (run: BranchRunEnvelope) => void;
41
+ }) => Promise<BranchRunEnvelope>;
42
+ type HostedDraftDownloadClient = Pick<TwelveUiBranchClient, 'downloadScreen'>;
43
+ export type HostedDraftCandidatePath = {
44
+ slot: string;
45
+ outputPath: string;
46
+ };
47
+ export type HostedDraftDownloadedFile = {
48
+ slot: string;
49
+ path: string;
50
+ sha256: string;
51
+ bytes: number;
52
+ };
53
+ /** Download settled service images without overwriting a changed local artifact. */
54
+ export declare const downloadHostedDraftCandidates: (args: {
55
+ client: HostedDraftDownloadClient;
56
+ run: BranchRunEnvelope;
57
+ candidates: readonly HostedDraftCandidatePath[];
58
+ }) => Promise<HostedDraftDownloadedFile[]>;
59
+ export {};
60
+ //# sourceMappingURL=hosted-draft-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-draft-run.d.ts","sourceRoot":"","sources":["../src/hosted-draft-run.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAG5B,iFAAiF;AACjF,eAAO,MAAM,uCAAuC,KAEnD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,KAAK,iBAAiB,KAAG,iBAIhE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,KAAK,iBAAiB,KAAG,OAGhE,CAAC;AAEF,KAAK,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAG,gBAAgB,CAAC,CAAC;AAEzF,MAAM,MAAM,yBAAyB,GAAG;IACtC,GAAG,EAAE,iBAAiB,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GAAU,MAAM;IACnD,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;CACf,KAAG,OAAO,CAAC,yBAAyB,CAqBpC,CAAC;AAEF,KAAK,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AAElE,eAAO,MAAM,qBAAqB,GAAU,MAAM;IAChD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,GAAG,EAAE,iBAAiB,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C,KAAG,OAAO,CAAC,iBAAiB,CAY5B,CAAC;AAEF,KAAK,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;AAE9E,MAAM,MAAM,wBAAwB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5E,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAsBF,oFAAoF;AACpF,eAAO,MAAM,6BAA6B,GAAU,MAAM;IACxD,MAAM,EAAE,yBAAyB,CAAC;IAClC,GAAG,EAAE,iBAAiB,CAAC;IACvB,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACjD,KAAG,OAAO,CAAC,yBAAyB,EAAE,CAoBtC,CAAC"}