@12ui/design 0.2.26 → 0.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/README.md +72 -87
  2. package/SKILL.md +5 -5
  3. package/dist/branch-client.d.ts +7 -0
  4. package/dist/branch-client.d.ts.map +1 -1
  5. package/dist/branch-client.js +1 -0
  6. package/dist/branch-client.js.map +1 -1
  7. package/dist/branch-completion.d.ts +8 -0
  8. package/dist/branch-completion.d.ts.map +1 -1
  9. package/dist/branch-completion.js +84 -16
  10. package/dist/branch-completion.js.map +1 -1
  11. package/dist/branch-execution.d.ts +8 -0
  12. package/dist/branch-execution.d.ts.map +1 -1
  13. package/dist/branch-execution.js +62 -11
  14. package/dist/branch-execution.js.map +1 -1
  15. package/dist/branch-identity.d.ts +10 -4
  16. package/dist/branch-identity.d.ts.map +1 -1
  17. package/dist/branch-identity.js +9 -6
  18. package/dist/branch-identity.js.map +1 -1
  19. package/dist/branch-page-conversion.d.ts +14 -8
  20. package/dist/branch-page-conversion.d.ts.map +1 -1
  21. package/dist/branch-page-conversion.js +32 -15
  22. package/dist/branch-page-conversion.js.map +1 -1
  23. package/dist/branch-page-packaging.d.ts +31 -0
  24. package/dist/branch-page-packaging.d.ts.map +1 -0
  25. package/dist/branch-page-packaging.js +86 -0
  26. package/dist/branch-page-packaging.js.map +1 -0
  27. package/dist/branch-plan.d.ts +44 -0
  28. package/dist/branch-plan.d.ts.map +1 -1
  29. package/dist/branch-plan.js +89 -18
  30. package/dist/branch-plan.js.map +1 -1
  31. package/dist/branch-progress.d.ts +22 -0
  32. package/dist/branch-progress.d.ts.map +1 -1
  33. package/dist/branch-progress.js +46 -8
  34. package/dist/branch-progress.js.map +1 -1
  35. package/dist/branch-run-record.d.ts +36 -1
  36. package/dist/branch-run-record.d.ts.map +1 -1
  37. package/dist/branch-run-record.js.map +1 -1
  38. package/dist/branch-status.d.ts +2 -0
  39. package/dist/branch-status.d.ts.map +1 -1
  40. package/dist/branch-status.js +60 -15
  41. package/dist/branch-status.js.map +1 -1
  42. package/dist/branch-winner.d.ts +13 -15
  43. package/dist/branch-winner.d.ts.map +1 -1
  44. package/dist/branch-winner.js +25 -77
  45. package/dist/branch-winner.js.map +1 -1
  46. package/dist/cli-auth-command.d.ts.map +1 -1
  47. package/dist/cli-auth-command.js +5 -0
  48. package/dist/cli-auth-command.js.map +1 -1
  49. package/dist/cli-auth-onboarding.d.ts +12 -0
  50. package/dist/cli-auth-onboarding.d.ts.map +1 -0
  51. package/dist/cli-auth-onboarding.js +21 -0
  52. package/dist/cli-auth-onboarding.js.map +1 -0
  53. package/dist/cli-branch-command.d.ts +14 -19
  54. package/dist/cli-branch-command.d.ts.map +1 -1
  55. package/dist/cli-branch-command.js +207 -137
  56. package/dist/cli-branch-command.js.map +1 -1
  57. package/dist/cli-capabilities.d.ts +10 -51
  58. package/dist/cli-capabilities.d.ts.map +1 -1
  59. package/dist/cli-capabilities.js +13 -26
  60. package/dist/cli-capabilities.js.map +1 -1
  61. package/dist/cli-cli-command.d.ts +3 -0
  62. package/dist/cli-cli-command.d.ts.map +1 -1
  63. package/dist/cli-cli-command.js +15 -3
  64. package/dist/cli-cli-command.js.map +1 -1
  65. package/dist/cli-conversion-derivation.d.ts +30 -0
  66. package/dist/cli-conversion-derivation.d.ts.map +1 -0
  67. package/dist/{cli-export-command.js → cli-conversion-derivation.js} +178 -110
  68. package/dist/cli-conversion-derivation.js.map +1 -0
  69. package/dist/cli-conversion-output-directory.d.ts +5 -0
  70. package/dist/cli-conversion-output-directory.d.ts.map +1 -0
  71. package/dist/{cli-export-output-directory.js → cli-conversion-output-directory.js} +10 -10
  72. package/dist/cli-conversion-output-directory.js.map +1 -0
  73. package/dist/cli-convert-command.d.ts +9 -0
  74. package/dist/cli-convert-command.d.ts.map +1 -1
  75. package/dist/cli-convert-command.js +528 -158
  76. package/dist/cli-convert-command.js.map +1 -1
  77. package/dist/cli-corpus-command.d.ts.map +1 -1
  78. package/dist/cli-corpus-command.js +77 -10
  79. package/dist/cli-corpus-command.js.map +1 -1
  80. package/dist/cli-corpus-reference-downloads.d.ts +5 -0
  81. package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
  82. package/dist/cli-corpus-reference-downloads.js +18 -7
  83. package/dist/cli-corpus-reference-downloads.js.map +1 -1
  84. package/dist/cli-corpus-run.d.ts +9 -0
  85. package/dist/cli-corpus-run.d.ts.map +1 -1
  86. package/dist/cli-corpus-run.js +18 -0
  87. package/dist/cli-corpus-run.js.map +1 -1
  88. package/dist/cli-detach.d.ts +12 -4
  89. package/dist/cli-detach.d.ts.map +1 -1
  90. package/dist/cli-detach.js +49 -17
  91. package/dist/cli-detach.js.map +1 -1
  92. package/dist/cli-draft-command.d.ts +44 -61
  93. package/dist/cli-draft-command.d.ts.map +1 -1
  94. package/dist/cli-draft-command.js +307 -180
  95. package/dist/cli-draft-command.js.map +1 -1
  96. package/dist/cli-help/conversion.d.ts +30 -0
  97. package/dist/cli-help/conversion.d.ts.map +1 -0
  98. package/dist/cli-help/conversion.js +55 -0
  99. package/dist/cli-help/conversion.js.map +1 -0
  100. package/dist/cli-help/design.d.ts +74 -0
  101. package/dist/cli-help/design.d.ts.map +1 -0
  102. package/dist/cli-help/design.js +131 -0
  103. package/dist/cli-help/design.js.map +1 -0
  104. package/dist/cli-help/index.d.ts +224 -0
  105. package/dist/cli-help/index.d.ts.map +1 -0
  106. package/dist/cli-help/index.js +32 -0
  107. package/dist/cli-help/index.js.map +1 -0
  108. package/dist/cli-help/meta.d.ts +24 -0
  109. package/dist/cli-help/meta.d.ts.map +1 -0
  110. package/dist/cli-help/meta.js +30 -0
  111. package/dist/cli-help/meta.js.map +1 -0
  112. package/dist/cli-help/render.d.ts +4 -0
  113. package/dist/cli-help/render.d.ts.map +1 -0
  114. package/dist/cli-help/render.js +28 -0
  115. package/dist/cli-help/render.js.map +1 -0
  116. package/dist/cli-help/setup.d.ts +93 -0
  117. package/dist/cli-help/setup.d.ts.map +1 -0
  118. package/dist/cli-help/setup.js +142 -0
  119. package/dist/cli-help/setup.js.map +1 -0
  120. package/dist/cli-help/types.d.ts +10 -0
  121. package/dist/cli-help/types.d.ts.map +1 -0
  122. package/dist/cli-help/types.js +2 -0
  123. package/dist/cli-help/types.js.map +1 -0
  124. package/dist/cli-next-command.d.ts +11 -8
  125. package/dist/cli-next-command.d.ts.map +1 -1
  126. package/dist/cli-next-command.js +288 -88
  127. package/dist/cli-next-command.js.map +1 -1
  128. package/dist/cli-output-paths.d.ts +2 -23
  129. package/dist/cli-output-paths.d.ts.map +1 -1
  130. package/dist/cli-output-paths.js +2 -36
  131. package/dist/cli-output-paths.js.map +1 -1
  132. package/dist/cli-package-command.d.ts +1 -0
  133. package/dist/cli-package-command.d.ts.map +1 -1
  134. package/dist/cli-package-command.js +107 -34
  135. package/dist/cli-package-command.js.map +1 -1
  136. package/dist/cli-pending-auth.d.ts +20 -0
  137. package/dist/cli-pending-auth.d.ts.map +1 -0
  138. package/dist/cli-pending-auth.js +160 -0
  139. package/dist/cli-pending-auth.js.map +1 -0
  140. package/dist/cli-progress.d.ts +256 -75
  141. package/dist/cli-progress.d.ts.map +1 -1
  142. package/dist/cli-progress.js +425 -98
  143. package/dist/cli-progress.js.map +1 -1
  144. package/dist/cli-run.d.ts +2 -0
  145. package/dist/cli-run.d.ts.map +1 -1
  146. package/dist/cli-run.js +56 -75
  147. package/dist/cli-run.js.map +1 -1
  148. package/dist/cli-skill-command.d.ts +3 -0
  149. package/dist/cli-skill-command.d.ts.map +1 -1
  150. package/dist/cli-skill-command.js +26 -3
  151. package/dist/cli-skill-command.js.map +1 -1
  152. package/dist/cli-usage.d.ts +17 -8
  153. package/dist/cli-usage.d.ts.map +1 -1
  154. package/dist/cli-usage.js +55 -40
  155. package/dist/cli-usage.js.map +1 -1
  156. package/dist/config.d.ts +1 -0
  157. package/dist/config.d.ts.map +1 -1
  158. package/dist/config.js +8 -2
  159. package/dist/config.js.map +1 -1
  160. package/dist/conversion-client.d.ts +4 -0
  161. package/dist/conversion-client.d.ts.map +1 -1
  162. package/dist/conversion-client.js +23 -3
  163. package/dist/conversion-client.js.map +1 -1
  164. package/dist/conversion-outputs.d.ts +11 -0
  165. package/dist/conversion-outputs.d.ts.map +1 -1
  166. package/dist/conversion-outputs.js +13 -1
  167. package/dist/conversion-outputs.js.map +1 -1
  168. package/dist/conversion-receipt.d.ts +1 -1
  169. package/dist/conversion-receipt.js +1 -1
  170. package/dist/conversion-recovery.d.ts +20 -0
  171. package/dist/conversion-recovery.d.ts.map +1 -0
  172. package/dist/conversion-recovery.js +61 -0
  173. package/dist/conversion-recovery.js.map +1 -0
  174. package/dist/conversion-status-contract.js +1 -1
  175. package/dist/conversion-status-contract.js.map +1 -1
  176. package/dist/credential-setup.d.ts +9 -1
  177. package/dist/credential-setup.d.ts.map +1 -1
  178. package/dist/credential-setup.js +13 -1
  179. package/dist/credential-setup.js.map +1 -1
  180. package/dist/draft-adoption.d.ts +9 -3
  181. package/dist/draft-adoption.d.ts.map +1 -1
  182. package/dist/draft-adoption.js +26 -41
  183. package/dist/draft-adoption.js.map +1 -1
  184. package/dist/draft-identity.d.ts +9 -12
  185. package/dist/draft-identity.d.ts.map +1 -1
  186. package/dist/draft-identity.js +0 -0
  187. package/dist/draft-identity.js.map +1 -1
  188. package/dist/draft-run.d.ts +9 -19
  189. package/dist/draft-run.d.ts.map +1 -1
  190. package/dist/draft-run.js +67 -95
  191. package/dist/draft-run.js.map +1 -1
  192. package/dist/draft-workspace.d.ts +26 -18
  193. package/dist/draft-workspace.d.ts.map +1 -1
  194. package/dist/draft-workspace.js +16 -5
  195. package/dist/draft-workspace.js.map +1 -1
  196. package/dist/hosted-draft-identity.d.ts +20 -0
  197. package/dist/hosted-draft-identity.d.ts.map +1 -0
  198. package/dist/hosted-draft-identity.js +30 -0
  199. package/dist/hosted-draft-identity.js.map +1 -0
  200. package/dist/hosted-draft-run.d.ts +60 -0
  201. package/dist/hosted-draft-run.d.ts.map +1 -0
  202. package/dist/hosted-draft-run.js +97 -0
  203. package/dist/hosted-draft-run.js.map +1 -0
  204. package/dist/legacy-codex-cleanup.d.ts +13 -0
  205. package/dist/legacy-codex-cleanup.d.ts.map +1 -1
  206. package/dist/legacy-codex-cleanup.js +83 -0
  207. package/dist/legacy-codex-cleanup.js.map +1 -1
  208. package/dist/legacy-skill-catalog.d.ts +2 -2
  209. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  210. package/dist/legacy-skill-catalog.js +76 -5
  211. package/dist/legacy-skill-catalog.js.map +1 -1
  212. package/dist/login-auth.d.ts +38 -0
  213. package/dist/login-auth.d.ts.map +1 -1
  214. package/dist/login-auth.js +67 -16
  215. package/dist/login-auth.js.map +1 -1
  216. package/dist/mcp-tool-definitions.js +1 -1
  217. package/dist/mcp-tool-definitions.js.map +1 -1
  218. package/dist/next-target.d.ts +1 -4
  219. package/dist/next-target.d.ts.map +1 -1
  220. package/dist/next-target.js +5 -9
  221. package/dist/next-target.js.map +1 -1
  222. package/dist/next-wait-lease.d.ts +17 -0
  223. package/dist/next-wait-lease.d.ts.map +1 -0
  224. package/dist/next-wait-lease.js +92 -0
  225. package/dist/next-wait-lease.js.map +1 -0
  226. package/dist/operation-poll-policy.d.ts +89 -0
  227. package/dist/operation-poll-policy.d.ts.map +1 -0
  228. package/dist/operation-poll-policy.js +99 -0
  229. package/dist/operation-poll-policy.js.map +1 -0
  230. package/dist/package-client.d.ts +30 -0
  231. package/dist/package-client.d.ts.map +1 -1
  232. package/dist/package-client.js +48 -9
  233. package/dist/package-client.js.map +1 -1
  234. package/dist/package-submission.d.ts +17 -0
  235. package/dist/package-submission.d.ts.map +1 -1
  236. package/dist/package-submission.js +43 -2
  237. package/dist/package-submission.js.map +1 -1
  238. package/dist/pending-auth-store.d.ts +15 -0
  239. package/dist/pending-auth-store.d.ts.map +1 -0
  240. package/dist/pending-auth-store.js +90 -0
  241. package/dist/pending-auth-store.js.map +1 -0
  242. package/dist/responsive-quality.d.ts +2 -2
  243. package/dist/responsive-quality.js +2 -2
  244. package/dist/run-journal-commands.d.ts.map +1 -1
  245. package/dist/run-journal-commands.js +30 -78
  246. package/dist/run-journal-commands.js.map +1 -1
  247. package/dist/run-journal-in-flight.d.ts +2 -2
  248. package/dist/run-journal-in-flight.d.ts.map +1 -1
  249. package/dist/run-journal-in-flight.js +0 -0
  250. package/dist/run-journal-in-flight.js.map +1 -1
  251. package/dist/skill-installer.d.ts +2 -2
  252. package/dist/skill-installer.d.ts.map +1 -1
  253. package/dist/skill-installer.js +2 -2
  254. package/dist/skill-installer.js.map +1 -1
  255. package/open-design.json +3 -3
  256. package/package.json +1 -1
  257. package/skills/12ui-design/SKILL.md +62 -0
  258. package/skills/12ui-design/agents/openai.yaml +6 -0
  259. package/skills/12ui-design/inspire.md +11 -0
  260. package/dist/cli-create-command.d.ts +0 -59
  261. package/dist/cli-create-command.d.ts.map +0 -1
  262. package/dist/cli-create-command.js +0 -354
  263. package/dist/cli-create-command.js.map +0 -1
  264. package/dist/cli-export-command.d.ts +0 -26
  265. package/dist/cli-export-command.d.ts.map +0 -1
  266. package/dist/cli-export-command.js.map +0 -1
  267. package/dist/cli-export-output-directory.d.ts +0 -5
  268. package/dist/cli-export-output-directory.d.ts.map +0 -1
  269. package/dist/cli-export-output-directory.js.map +0 -1
  270. package/dist/cli-image-batch-command.d.ts +0 -29
  271. package/dist/cli-image-batch-command.d.ts.map +0 -1
  272. package/dist/cli-image-batch-command.js +0 -236
  273. package/dist/cli-image-batch-command.js.map +0 -1
  274. package/dist/cli-image-batch-materialize.d.ts +0 -27
  275. package/dist/cli-image-batch-materialize.d.ts.map +0 -1
  276. package/dist/cli-image-batch-materialize.js +0 -41
  277. package/dist/cli-image-batch-materialize.js.map +0 -1
  278. package/dist/cli-image-batch-resume.d.ts +0 -36
  279. package/dist/cli-image-batch-resume.d.ts.map +0 -1
  280. package/dist/cli-image-batch-resume.js +0 -176
  281. package/dist/cli-image-batch-resume.js.map +0 -1
  282. package/dist/cli-image-command.d.ts +0 -10
  283. package/dist/cli-image-command.d.ts.map +0 -1
  284. package/dist/cli-image-command.js +0 -106
  285. package/dist/cli-image-command.js.map +0 -1
  286. package/dist/cli-select-command.d.ts +0 -16
  287. package/dist/cli-select-command.d.ts.map +0 -1
  288. package/dist/cli-select-command.js +0 -60
  289. package/dist/cli-select-command.js.map +0 -1
  290. package/dist/create-identity.d.ts +0 -25
  291. package/dist/create-identity.d.ts.map +0 -1
  292. package/dist/create-identity.js +0 -0
  293. package/dist/create-identity.js.map +0 -1
  294. package/dist/draft-prompts.d.ts +0 -35
  295. package/dist/draft-prompts.d.ts.map +0 -1
  296. package/dist/draft-prompts.js +0 -51
  297. package/dist/draft-prompts.js.map +0 -1
  298. package/dist/image-batch-status.d.ts +0 -42
  299. package/dist/image-batch-status.d.ts.map +0 -1
  300. package/dist/image-batch-status.js +0 -143
  301. package/dist/image-batch-status.js.map +0 -1
  302. package/dist/image-generation-batch-attempt.d.ts +0 -28
  303. package/dist/image-generation-batch-attempt.d.ts.map +0 -1
  304. package/dist/image-generation-batch-attempt.js +0 -48
  305. package/dist/image-generation-batch-attempt.js.map +0 -1
  306. package/dist/image-generation-batch-manifest.d.ts +0 -25
  307. package/dist/image-generation-batch-manifest.d.ts.map +0 -1
  308. package/dist/image-generation-batch-manifest.js +0 -97
  309. package/dist/image-generation-batch-manifest.js.map +0 -1
  310. package/dist/image-generation-completion.d.ts +0 -43
  311. package/dist/image-generation-completion.d.ts.map +0 -1
  312. package/dist/image-generation-completion.js +0 -54
  313. package/dist/image-generation-completion.js.map +0 -1
  314. package/dist/image-generation-error.d.ts +0 -3
  315. package/dist/image-generation-error.d.ts.map +0 -1
  316. package/dist/image-generation-error.js +0 -30
  317. package/dist/image-generation-error.js.map +0 -1
  318. package/dist/image-generation-evidence.d.ts +0 -43
  319. package/dist/image-generation-evidence.d.ts.map +0 -1
  320. package/dist/image-generation-evidence.js +0 -28
  321. package/dist/image-generation-evidence.js.map +0 -1
  322. package/dist/image-generation-fs.d.ts +0 -3
  323. package/dist/image-generation-fs.d.ts.map +0 -1
  324. package/dist/image-generation-fs.js +0 -23
  325. package/dist/image-generation-fs.js.map +0 -1
  326. package/dist/image-generation-output.d.ts +0 -3
  327. package/dist/image-generation-output.d.ts.map +0 -1
  328. package/dist/image-generation-output.js +0 -51
  329. package/dist/image-generation-output.js.map +0 -1
  330. package/dist/image-generation-request.d.ts +0 -43
  331. package/dist/image-generation-request.d.ts.map +0 -1
  332. package/dist/image-generation-request.js +0 -52
  333. package/dist/image-generation-request.js.map +0 -1
  334. package/dist/image-generation-resume.d.ts +0 -49
  335. package/dist/image-generation-resume.d.ts.map +0 -1
  336. package/dist/image-generation-resume.js +0 -96
  337. package/dist/image-generation-resume.js.map +0 -1
  338. package/dist/image-generation-run.d.ts +0 -46
  339. package/dist/image-generation-run.d.ts.map +0 -1
  340. package/dist/image-generation-run.js +0 -158
  341. package/dist/image-generation-run.js.map +0 -1
  342. package/dist/image-generation-staging.d.ts +0 -25
  343. package/dist/image-generation-staging.d.ts.map +0 -1
  344. package/dist/image-generation-staging.js +0 -80
  345. package/dist/image-generation-staging.js.map +0 -1
  346. package/dist/image-generation-usage.d.ts +0 -75
  347. package/dist/image-generation-usage.d.ts.map +0 -1
  348. package/dist/image-generation-usage.js +0 -219
  349. package/dist/image-generation-usage.js.map +0 -1
  350. package/dist/image-provider-preflight.d.ts +0 -21
  351. package/dist/image-provider-preflight.d.ts.map +0 -1
  352. package/dist/image-provider-preflight.js +0 -184
  353. package/dist/image-provider-preflight.js.map +0 -1
  354. package/dist/selection-record.d.ts +0 -97
  355. package/dist/selection-record.d.ts.map +0 -1
  356. package/dist/selection-record.js +0 -138
  357. package/dist/selection-record.js.map +0 -1
  358. package/skills/design/SKILL.md +0 -116
  359. package/skills/design/agents/openai.yaml +0 -8
  360. package/skills/design/assets/large-logo.svg +0 -3
  361. package/skills/design/assets/small-400px.png +0 -0
@@ -1,8 +1,9 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import { mkdir, open, readFile, stat } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
+ import { INTERNAL_DRAFT_WORKER_ENV } from './cli-draft-command.js';
4
5
  import { CliRefusal } from './cli-refusal.js';
5
- import { nextActionLine } from './cli-progress.js';
6
+ import { createLongRunningProgress, nextActionLine, } from './cli-progress.js';
6
7
  /** How much of a refused worker's output to put in front of the caller. */
7
8
  const REFUSAL_LOG_LINES = 24;
8
9
  const readJson = async (file) => {
@@ -26,6 +27,12 @@ const delay = async (milliseconds) => (new Promise((resolve) => { setTimeout(res
26
27
  export const spawnDetachedRun = async (args) => {
27
28
  const write = args.write ?? ((line) => { process.stderr.write(`${line}\n`); });
28
29
  const { work } = args;
30
+ const progress = args.progress ?? createLongRunningProgress({
31
+ label: work.label,
32
+ typicalSeconds: work.typicalSeconds,
33
+ write,
34
+ });
35
+ progress.update({ stage: 'background_start', detail: `output ${work.logFile}` });
29
36
  // The run directory does not exist yet on a first run: the worker creates it.
30
37
  await mkdir(path.dirname(work.logFile), { recursive: true });
31
38
  const logHandle = await open(work.logFile, 'a');
@@ -33,7 +40,7 @@ export const spawnDetachedRun = async (args) => {
33
40
  cwd: process.cwd(),
34
41
  detached: true,
35
42
  stdio: ['ignore', logHandle.fd, logHandle.fd],
36
- env: process.env,
43
+ env: args.environment ?? process.env,
37
44
  });
38
45
  let exitCode = null;
39
46
  child.on('exit', (code) => { exitCode = code ?? 0; });
@@ -44,7 +51,10 @@ export const spawnDetachedRun = async (args) => {
44
51
  let started = false;
45
52
  while (Date.now() < deadline) {
46
53
  identity = await readJson(identityFile);
47
- if (identity?.runId) {
54
+ const hosted = identity?.hosted && typeof identity.hosted === 'object'
55
+ ? identity.hosted
56
+ : null;
57
+ if (identity?.runId || hosted?.runId) {
48
58
  started = true;
49
59
  break;
50
60
  }
@@ -72,21 +82,40 @@ export const spawnDetachedRun = async (args) => {
72
82
  // first line would drop what was actually missing.
73
83
  const log = await readFile(work.logFile, 'utf8').catch(() => '');
74
84
  child.unref();
85
+ progress.finish('stopped', {
86
+ detail: log.trim().split('\n').slice(-1)[0]
87
+ || `${work.label} exited ${exitCode} before it started`,
88
+ next: `full worker log: ${work.logFile}`,
89
+ });
75
90
  throw new CliRefusal(log.trim().split('\n').slice(-REFUSAL_LOG_LINES).join('\n')
76
91
  || `${work.label} exited ${exitCode} before it started. Log: ${work.logFile}`, 'detached_worker_refused');
77
92
  }
78
93
  child.unref();
79
- const runId = typeof identity?.runId === 'string' ? identity.runId : undefined;
94
+ const hosted = identity?.hosted && typeof identity.hosted === 'object'
95
+ ? identity.hosted
96
+ : null;
97
+ const runId = typeof identity?.runId === 'string'
98
+ ? identity.runId
99
+ : typeof hosted?.runId === 'string'
100
+ ? hosted.runId
101
+ : undefined;
80
102
  const nextAction = nextActionLine({
81
103
  what: `A ${work.label}`,
82
104
  typicalSeconds: work.typicalSeconds,
83
105
  statusCommand: work.statusCommand,
84
106
  waitHint: 'or re-run with --wait to block in this shell instead',
85
107
  });
86
- write(`${work.label} started${runId ? ` (${runId})` : ''} in the background`
87
- + `${child.pid ? `, pid ${child.pid}` : ''}. It keeps running after this command returns.`
88
- + `\n${nextAction}`
89
- + `\nOutput: ${work.logFile}`);
108
+ progress.finish('detached', {
109
+ detail: 'the run continues in a background worker; nothing settles in this shell',
110
+ artifacts: [
111
+ {
112
+ name: work.label,
113
+ state: `running detached${runId ? ` (run ${runId})` : ''}${child.pid ? `, pid ${child.pid}` : ''}`,
114
+ },
115
+ { name: 'worker log', state: 'streaming', path: work.logFile },
116
+ ],
117
+ next: `${work.statusCommand} reports progress; re-run with --wait to block instead`,
118
+ });
90
119
  return {
91
120
  detached: true,
92
121
  pid: child.pid ?? null,
@@ -102,28 +131,31 @@ export const detachBranchRun = async (args) => spawnDetachedRun({
102
131
  cliPath: args.cliPath,
103
132
  argv: args.argv,
104
133
  ...(args.spawnImpl ? { spawnImpl: args.spawnImpl } : {}),
134
+ ...(args.progress ? { progress: args.progress } : {}),
105
135
  work: {
106
- label: 'branch run',
136
+ label: args.label ?? 'branch execute',
107
137
  startedFile: path.join(args.outDir, 'branch.attempt.json'),
108
138
  // The progress record carries the run id, which appears once the claim
109
139
  // lands (10-20s) — worth waiting for so the report names the run.
110
140
  identityFile: path.join(args.outDir, 'branch.progress.json'),
111
141
  logFile: path.join(args.outDir, 'branch.log'),
112
- statusCommand: `12ui next ${args.outDir}`,
142
+ statusCommand: `12ui next ${args.statusTarget ?? args.outDir}`,
113
143
  typicalSeconds: args.typicalSeconds,
114
144
  startTimeoutMs: 40_000,
115
145
  },
116
146
  });
117
- /** `12ui image generate-batch` without `--wait`. */
118
- export const detachImageBatch = async (args) => spawnDetachedRun({
147
+ /** `12ui draft` without `--wait`: the same command resumes its recorded hosted run. */
148
+ export const detachDraftRun = async (args) => spawnDetachedRun({
119
149
  cliPath: args.cliPath,
120
- argv: args.argv,
150
+ argv: [...args.argv, '--resume-run', args.prepared.runDir],
121
151
  ...(args.spawnImpl ? { spawnImpl: args.spawnImpl } : {}),
152
+ ...(args.progress ? { progress: args.progress } : {}),
153
+ environment: { ...process.env, [INTERNAL_DRAFT_WORKER_ENV]: '1' },
122
154
  work: {
123
- label: 'image batch',
124
- startedFile: `${args.manifestPath}.attempt.json`,
125
- logFile: path.join(path.dirname(args.manifestPath), 'generate-batch.log'),
126
- statusCommand: `12ui next ${args.manifestPath}`,
155
+ label: 'hosted draft',
156
+ startedFile: path.join(args.prepared.runDir, 'draft.dispatch.json'),
157
+ logFile: path.join(args.prepared.runDir, 'draft.log'),
158
+ statusCommand: `12ui next ${args.prepared.runDir}`,
127
159
  typicalSeconds: args.typicalSeconds,
128
160
  startTimeoutMs: 20_000,
129
161
  },
@@ -1 +1 @@
1
- {"version":3,"file":"cli-detach.js","sourceRoot":"","sources":["../src/cli-detach.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-detach.js","sourceRoot":"","sources":["../src/cli-detach.ts"],"names":[],"mappings":"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"}
@@ -1,88 +1,71 @@
1
+ import { TwelveUiBranchClient, type BranchRunEnvelope } from './branch-client.js';
1
2
  import { type CliFlags } from './cli-arguments.js';
3
+ import { type LongRunningProgressReporter } from './cli-progress.js';
2
4
  import { readConversionConfig } from './config.js';
3
5
  import { TwelveUiCorpusClient } from './corpus-client.js';
4
- /**
5
- * The route correction, printed once and before anything paid moves.
6
- *
7
- * MEASURED 2026-08-14: the two runs of a ten-run wave that built the wrong
8
- * thing both typed `--redesign-source <target>.png --mode reskin` while holding
9
- * the finished design they had been asked to BUILD. They did not skip the
10
- * existing-image route; they took the only one the skill named, and that route
11
- * redraws the image instead of converting it. The fact is in this command's own
12
- * argv, so the correction belongs here rather than in a skill sentence that
13
- * cannot reach an agent who has already decided.
14
- *
15
- * It is not a refusal: `--mode reskin` is a legitimate capability, and a run
16
- * that genuinely wants a redraw gets one. It is a named alternative, at the
17
- * only moment it is still free.
18
- */
6
+ import { type DraftRecord } from './draft-workspace.js';
7
+ /** `12ui draft` owns corpus retrieval, the hosted run, and local image materialization. */
8
+ export declare const INTERNAL_DRAFT_WORKER_ENV = "TWELVE_UI_INTERNAL_DRAFT_WORKER";
19
9
  export declare const redesignRouteNotice: (source: string) => string;
20
10
  export type DraftPrepared = {
21
11
  runDir: string;
22
- manifestPath: string;
12
+ recordPath: string;
13
+ runId: string;
23
14
  candidateCount: number;
24
- /** True when this run continued an incomplete previous run in place. */
25
15
  adopted: boolean;
16
+ runKey: string;
17
+ record: DraftRecord;
26
18
  nextAction: string;
27
19
  };
28
- /**
29
- * Prepare the run: create the directory, buy one corpus search, write the
30
- * generation manifest. Dispatching the images is the caller's next move, so
31
- * this stays testable without a provider.
32
- */
33
- export declare const prepareDraftCommand: (flags: CliFlags, dependencies?: {
20
+ type DraftCommandDependencies = {
34
21
  readConfig?: typeof readConversionConfig;
35
- createClient?: (config: ReturnType<typeof readConversionConfig>) => TwelveUiCorpusClient;
22
+ createCorpusClient?: (config: ReturnType<typeof readConversionConfig>) => TwelveUiCorpusClient;
23
+ createHostedClient?: (config: ReturnType<typeof readConversionConfig>) => TwelveUiBranchClient;
36
24
  workspaceRoot?: string;
37
25
  write?: (line: string) => void;
38
- /** Route corrections and other notices; stderr in production. */
39
26
  warn?: (line: string) => void;
40
- /**
41
- * The run directory, the moment it exists. `12ui draft` mints its own
42
- * workspace, so nothing outside can name it beforehand — the run journal
43
- * binds it here and flushes the start line it has been holding.
44
- */
45
27
  onRunDirectory?: (runDir: string) => void;
46
- }) => Promise<DraftPrepared>;
28
+ environment?: NodeJS.ProcessEnv;
29
+ progress?: LongRunningProgressReporter;
30
+ };
31
+ /** Claim one corpus set and exactly one hosted run, then persist the resumable handle. */
32
+ export declare const prepareDraftCommand: (flags: CliFlags, dependencies?: DraftCommandDependencies) => Promise<DraftPrepared>;
33
+ export type DraftExecutionResult = {
34
+ prepared: DraftPrepared;
35
+ artifacts: string[];
36
+ detached?: {
37
+ logFile: string;
38
+ };
39
+ };
40
+ export declare const runDraftCommand: (flags: CliFlags, dependencies?: DraftCommandDependencies & {
41
+ hostedClient?: TwelveUiBranchClient;
42
+ sleep?: (milliseconds: number) => Promise<void>;
43
+ detach?: (prepared: DraftPrepared, progress: LongRunningProgressReporter) => Promise<{
44
+ logFile: string;
45
+ }>;
46
+ }) => Promise<DraftExecutionResult>;
47
47
  export type DraftStatusReport = {
48
48
  runDir: string;
49
- query?: string;
50
- phase: 'searching' | 'generating' | 'ready' | 'selected';
49
+ runId: string;
50
+ query: string;
51
+ phase: 'generating' | 'materializing' | 'ready' | 'failed';
51
52
  complete: boolean;
53
+ elapsedSeconds?: number;
52
54
  candidates: {
53
55
  id: string;
56
+ slot: string;
54
57
  status: string;
55
58
  path: string;
56
59
  }[];
57
- winner?: string;
58
60
  narrative: string;
59
- nextAction?: string;
60
61
  };
61
- /**
62
- * The draft run's state, read and never printed here.
63
- *
64
- * `12ui draft status` was the most-typed of four spellings of "what now" — 18
65
- * invocations in one measured wave, `--json` on eight of them, a flag it never
66
- * read. `12ui next` replaced all four, so this is a reader the merge calls.
67
- */
68
- export declare const readDraftStatus: (runDirArgument: string) => Promise<DraftStatusReport>;
69
- export declare const draftBanner: (prepared: DraftPrepared) => string;
70
- export declare const draftDetachRequested: (flags: CliFlags) => boolean;
71
- /**
72
- * The whole explore step. Prepare (one paid corpus search), then hand the
73
- * generation to `image generate-batch` — detached by default, because an
74
- * agent's shell cannot hold 90 seconds and a cut dispatch reads as a failure.
75
- */
76
- export declare const runDraftCommand: (flags: CliFlags, dependencies: {
62
+ export declare const readDraftStatus: (runDirArgument: string, flags?: CliFlags, dependencies?: {
77
63
  readConfig?: typeof readConversionConfig;
78
- createClient?: (config: ReturnType<typeof readConversionConfig>) => TwelveUiCorpusClient;
79
- workspaceRoot?: string;
80
- write?: (line: string) => void;
81
- onRunDirectory?: (runDir: string) => void;
82
- /** Injected by the CLI entry: how the candidates actually get generated. */
83
- generate: (args: {
84
- manifestPath: string;
85
- detach: boolean;
86
- }) => Promise<unknown>;
87
- }) => Promise<DraftPrepared>;
64
+ hostedClient?: Pick<TwelveUiBranchClient, "getRun">;
65
+ }) => Promise<DraftStatusReport>;
66
+ export declare const readHostedRunStatus: (args: {
67
+ runId: string;
68
+ client: Pick<TwelveUiBranchClient, "getRun">;
69
+ }) => Promise<BranchRunEnvelope>;
70
+ export {};
88
71
  //# sourceMappingURL=cli-draft-command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-draft-command.d.ts","sourceRoot":"","sources":["../src/cli-draft-command.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAQ5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAkD1D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,MAGpD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,QAAQ,EACf,eAAc;IACZ,UAAU,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,KAAK,oBAAoB,CAAC;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,iEAAiE;IACjE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,KACL,OAAO,CAAC,aAAa,CA0EvB,CAAC;AAoBF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC;IACzD,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,gBAAgB,MAAM,KACrB,OAAO,CAAC,iBAAiB,CA6E3B,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,UAAU,aAAa,KAAG,MAOrD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,OAAO,QAAQ,KAAG,OAAsC,CAAC;AAE9F;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,QAAQ,EACf,cAAc;IACZ,UAAU,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,KAAK,oBAAoB,CAAC;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,4EAA4E;IAC5E,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjF,KACA,OAAO,CAAC,aAAa,CASvB,CAAC"}
1
+ {"version":3,"file":"cli-draft-command.d.ts","sourceRoot":"","sources":["../src/cli-draft-command.ts"],"names":[],"mappings":"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"}