@12ui/design 0.2.55 → 0.2.57

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 (222) hide show
  1. package/SKILL.md +1 -1
  2. package/dist/branch-client.d.ts +2 -0
  3. package/dist/branch-client.d.ts.map +1 -1
  4. package/dist/branch-client.js +1 -0
  5. package/dist/branch-client.js.map +1 -1
  6. package/dist/cli-arguments.d.ts.map +1 -1
  7. package/dist/cli-arguments.js +2 -0
  8. package/dist/cli-arguments.js.map +1 -1
  9. package/dist/cli-conversion-derivation.d.ts +2 -1
  10. package/dist/cli-conversion-derivation.d.ts.map +1 -1
  11. package/dist/cli-conversion-derivation.js +9 -1
  12. package/dist/cli-conversion-derivation.js.map +1 -1
  13. package/dist/cli-convert-command.d.ts.map +1 -1
  14. package/dist/cli-convert-command.js +111 -16
  15. package/dist/cli-convert-command.js.map +1 -1
  16. package/dist/cli-corpus-command.d.ts.map +1 -1
  17. package/dist/cli-corpus-command.js +5 -2
  18. package/dist/cli-corpus-command.js.map +1 -1
  19. package/dist/cli-corpus-evidence.d.ts.map +1 -1
  20. package/dist/cli-corpus-evidence.js +2 -1
  21. package/dist/cli-corpus-evidence.js.map +1 -1
  22. package/dist/cli-corpus-reference-downloads.d.ts +1 -0
  23. package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
  24. package/dist/cli-corpus-reference-downloads.js +13 -3
  25. package/dist/cli-corpus-reference-downloads.js.map +1 -1
  26. package/dist/cli-corpus-types.d.ts +2 -0
  27. package/dist/cli-corpus-types.d.ts.map +1 -1
  28. package/dist/cli-draft-command.d.ts +11 -0
  29. package/dist/cli-draft-command.d.ts.map +1 -1
  30. package/dist/cli-draft-command.js +10 -1
  31. package/dist/cli-draft-command.js.map +1 -1
  32. package/dist/cli-help/design.d.ts +2 -2
  33. package/dist/cli-help/design.d.ts.map +1 -1
  34. package/dist/cli-help/design.js +12 -2
  35. package/dist/cli-help/design.js.map +1 -1
  36. package/dist/cli-help/index.d.ts +2 -2
  37. package/dist/cli-improve-command.d.ts.map +1 -1
  38. package/dist/cli-improve-command.js +317 -70
  39. package/dist/cli-improve-command.js.map +1 -1
  40. package/dist/cli-next-command.d.ts.map +1 -1
  41. package/dist/cli-next-command.js +44 -4
  42. package/dist/cli-next-command.js.map +1 -1
  43. package/dist/cli-usage.js +2 -2
  44. package/dist/concept-input.d.ts +21 -0
  45. package/dist/concept-input.d.ts.map +1 -1
  46. package/dist/concept-input.js +32 -10
  47. package/dist/concept-input.js.map +1 -1
  48. package/dist/conversion-client.d.ts +39 -1
  49. package/dist/conversion-client.d.ts.map +1 -1
  50. package/dist/conversion-client.js +205 -3
  51. package/dist/conversion-client.js.map +1 -1
  52. package/dist/corpus-client.d.ts +7 -1
  53. package/dist/corpus-client.d.ts.map +1 -1
  54. package/dist/corpus-client.js +6 -2
  55. package/dist/corpus-client.js.map +1 -1
  56. package/dist/corpus-reference-download-retry.d.ts +68 -0
  57. package/dist/corpus-reference-download-retry.d.ts.map +1 -0
  58. package/dist/corpus-reference-download-retry.js +123 -0
  59. package/dist/corpus-reference-download-retry.js.map +1 -0
  60. package/dist/corpus-request-error.d.ts +17 -0
  61. package/dist/corpus-request-error.d.ts.map +1 -0
  62. package/dist/corpus-request-error.js +21 -0
  63. package/dist/corpus-request-error.js.map +1 -0
  64. package/dist/draft-run.d.ts +9 -0
  65. package/dist/draft-run.d.ts.map +1 -1
  66. package/dist/draft-run.js +22 -5
  67. package/dist/draft-run.js.map +1 -1
  68. package/dist/draft-workspace.d.ts +2 -1
  69. package/dist/draft-workspace.d.ts.map +1 -1
  70. package/dist/draft-workspace.js.map +1 -1
  71. package/dist/hosted-draft-identity.d.ts +1 -0
  72. package/dist/hosted-draft-identity.d.ts.map +1 -1
  73. package/dist/hosted-draft-identity.js +1 -0
  74. package/dist/hosted-draft-identity.js.map +1 -1
  75. package/dist/improve-added-specs.d.ts +9 -0
  76. package/dist/improve-added-specs.d.ts.map +1 -1
  77. package/dist/improve-added-specs.js +28 -7
  78. package/dist/improve-added-specs.js.map +1 -1
  79. package/dist/improve-bootstrap-secret.d.ts +35 -0
  80. package/dist/improve-bootstrap-secret.d.ts.map +1 -0
  81. package/dist/improve-bootstrap-secret.js +61 -0
  82. package/dist/improve-bootstrap-secret.js.map +1 -0
  83. package/dist/improve-capture-redirect.d.ts +46 -0
  84. package/dist/improve-capture-redirect.d.ts.map +1 -0
  85. package/dist/improve-capture-redirect.js +68 -0
  86. package/dist/improve-capture-redirect.js.map +1 -0
  87. package/dist/improve-concept.d.ts +14 -1
  88. package/dist/improve-concept.d.ts.map +1 -1
  89. package/dist/improve-concept.js +29 -8
  90. package/dist/improve-concept.js.map +1 -1
  91. package/dist/improve-conversion-attempts.d.ts +96 -0
  92. package/dist/improve-conversion-attempts.d.ts.map +1 -0
  93. package/dist/improve-conversion-attempts.js +93 -0
  94. package/dist/improve-conversion-attempts.js.map +1 -0
  95. package/dist/improve-conversion-stage.d.ts +14 -0
  96. package/dist/improve-conversion-stage.d.ts.map +1 -1
  97. package/dist/improve-conversion-stage.js +254 -70
  98. package/dist/improve-conversion-stage.js.map +1 -1
  99. package/dist/improve-convert-progress.d.ts +36 -0
  100. package/dist/improve-convert-progress.d.ts.map +1 -0
  101. package/dist/improve-convert-progress.js +43 -0
  102. package/dist/improve-convert-progress.js.map +1 -0
  103. package/dist/improve-convert-resilience.d.ts +116 -0
  104. package/dist/improve-convert-resilience.d.ts.map +1 -1
  105. package/dist/improve-convert-resilience.js +158 -1
  106. package/dist/improve-convert-resilience.js.map +1 -1
  107. package/dist/improve-delivery-stages.d.ts.map +1 -1
  108. package/dist/improve-delivery-stages.js +5 -0
  109. package/dist/improve-delivery-stages.js.map +1 -1
  110. package/dist/improve-dom-diff.d.ts +2 -0
  111. package/dist/improve-dom-diff.d.ts.map +1 -1
  112. package/dist/improve-dom-diff.js +7 -0
  113. package/dist/improve-dom-diff.js.map +1 -1
  114. package/dist/improve-dom-gate.d.ts +7 -0
  115. package/dist/improve-dom-gate.d.ts.map +1 -1
  116. package/dist/improve-dom-gate.js +13 -0
  117. package/dist/improve-dom-gate.js.map +1 -1
  118. package/dist/improve-generation-stages.d.ts +3 -0
  119. package/dist/improve-generation-stages.d.ts.map +1 -1
  120. package/dist/improve-generation-stages.js +56 -10
  121. package/dist/improve-generation-stages.js.map +1 -1
  122. package/dist/improve-icon-svg.d.ts +47 -0
  123. package/dist/improve-icon-svg.d.ts.map +1 -0
  124. package/dist/improve-icon-svg.js +83 -0
  125. package/dist/improve-icon-svg.js.map +1 -0
  126. package/dist/improve-kit-assets.d.ts +129 -0
  127. package/dist/improve-kit-assets.d.ts.map +1 -0
  128. package/dist/improve-kit-assets.js +333 -0
  129. package/dist/improve-kit-assets.js.map +1 -0
  130. package/dist/improve-kit-ignore.d.ts +32 -0
  131. package/dist/improve-kit-ignore.d.ts.map +1 -0
  132. package/dist/improve-kit-ignore.js +111 -0
  133. package/dist/improve-kit-ignore.js.map +1 -0
  134. package/dist/improve-kit-readme.d.ts +11 -2
  135. package/dist/improve-kit-readme.d.ts.map +1 -1
  136. package/dist/improve-kit-readme.js +282 -26
  137. package/dist/improve-kit-readme.js.map +1 -1
  138. package/dist/improve-kit-stall.d.ts +113 -0
  139. package/dist/improve-kit-stall.d.ts.map +1 -0
  140. package/dist/improve-kit-stall.js +311 -0
  141. package/dist/improve-kit-stall.js.map +1 -0
  142. package/dist/improve-kit-status.d.ts +105 -0
  143. package/dist/improve-kit-status.d.ts.map +1 -0
  144. package/dist/improve-kit-status.js +215 -0
  145. package/dist/improve-kit-status.js.map +1 -0
  146. package/dist/improve-options.d.ts +16 -1
  147. package/dist/improve-options.d.ts.map +1 -1
  148. package/dist/improve-options.js +65 -15
  149. package/dist/improve-options.js.map +1 -1
  150. package/dist/improve-plan-annotated-render.d.ts +45 -0
  151. package/dist/improve-plan-annotated-render.d.ts.map +1 -0
  152. package/dist/improve-plan-annotated-render.js +196 -0
  153. package/dist/improve-plan-annotated-render.js.map +1 -0
  154. package/dist/improve-plan-annotator.d.ts +7 -1
  155. package/dist/improve-plan-annotator.d.ts.map +1 -1
  156. package/dist/improve-plan-annotator.js +22 -45
  157. package/dist/improve-plan-annotator.js.map +1 -1
  158. package/dist/improve-raster-layers-section.d.ts +21 -0
  159. package/dist/improve-raster-layers-section.d.ts.map +1 -0
  160. package/dist/improve-raster-layers-section.js +45 -0
  161. package/dist/improve-raster-layers-section.js.map +1 -0
  162. package/dist/improve-reset.d.ts +122 -0
  163. package/dist/improve-reset.d.ts.map +1 -0
  164. package/dist/improve-reset.js +141 -0
  165. package/dist/improve-reset.js.map +1 -0
  166. package/dist/improve-run-summary.d.ts +35 -0
  167. package/dist/improve-run-summary.d.ts.map +1 -0
  168. package/dist/improve-run-summary.js +180 -0
  169. package/dist/improve-run-summary.js.map +1 -0
  170. package/dist/improve-stage-shared.d.ts +44 -1
  171. package/dist/improve-stage-shared.d.ts.map +1 -1
  172. package/dist/improve-stage-shared.js +80 -3
  173. package/dist/improve-stage-shared.js.map +1 -1
  174. package/dist/improve-stop-handler.d.ts +73 -0
  175. package/dist/improve-stop-handler.d.ts.map +1 -0
  176. package/dist/improve-stop-handler.js +126 -0
  177. package/dist/improve-stop-handler.js.map +1 -0
  178. package/dist/improve-terminal-event.d.ts +118 -0
  179. package/dist/improve-terminal-event.d.ts.map +1 -0
  180. package/dist/improve-terminal-event.js +87 -0
  181. package/dist/improve-terminal-event.js.map +1 -0
  182. package/dist/improve-token-patch.d.ts +2 -0
  183. package/dist/improve-token-patch.d.ts.map +1 -1
  184. package/dist/improve-token-patch.js +23 -5
  185. package/dist/improve-token-patch.js.map +1 -1
  186. package/dist/improve-workspace.d.ts +94 -2
  187. package/dist/improve-workspace.d.ts.map +1 -1
  188. package/dist/improve-workspace.js +19 -1
  189. package/dist/improve-workspace.js.map +1 -1
  190. package/dist/index.d.ts +2 -1
  191. package/dist/index.d.ts.map +1 -1
  192. package/dist/index.js +1 -0
  193. package/dist/index.js.map +1 -1
  194. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  195. package/dist/legacy-skill-catalog.js +143 -0
  196. package/dist/legacy-skill-catalog.js.map +1 -1
  197. package/dist/mcp-tool-definitions.js +1 -1
  198. package/dist/mcp-tool-definitions.js.map +1 -1
  199. package/dist/mcp-tool-handler.d.ts.map +1 -1
  200. package/dist/mcp-tool-handler.js +3 -0
  201. package/dist/mcp-tool-handler.js.map +1 -1
  202. package/dist/redesign-capture.d.ts +17 -0
  203. package/dist/redesign-capture.d.ts.map +1 -1
  204. package/dist/redesign-capture.js +55 -3
  205. package/dist/redesign-capture.js.map +1 -1
  206. package/dist/responsive-alternative-materializer.d.ts +19 -0
  207. package/dist/responsive-alternative-materializer.d.ts.map +1 -0
  208. package/dist/responsive-alternative-materializer.js +76 -0
  209. package/dist/responsive-alternative-materializer.js.map +1 -0
  210. package/dist/run-journal-unfinished.d.ts +56 -0
  211. package/dist/run-journal-unfinished.d.ts.map +1 -0
  212. package/dist/run-journal-unfinished.js +126 -0
  213. package/dist/run-journal-unfinished.js.map +1 -0
  214. package/dist/run-journal.d.ts +25 -1
  215. package/dist/run-journal.d.ts.map +1 -1
  216. package/dist/run-journal.js +15 -1
  217. package/dist/run-journal.js.map +1 -1
  218. package/open-design.json +2 -2
  219. package/package.json +1 -1
  220. package/skills/12ui-design/SKILL.md +9 -1
  221. package/skills/12ui-design/improve.md +83 -6
  222. package/skills/12ui-design/inspire.md +1 -1
@@ -1,11 +1,15 @@
1
1
  import { copyFile, cp, readFile, stat } from 'node:fs/promises';
2
2
  import sharp from 'sharp';
3
3
  import { runConversionCommand } from './cli-convert-command.js';
4
+ import { formatDuration } from './cli-progress.js';
5
+ import { createImproveConvertProgress, } from './improve-convert-progress.js';
4
6
  import { CliRefusal } from './cli-refusal.js';
5
7
  import { prepareOutputDirectory } from './cli-output-paths.js';
6
- import { fixedImproveHtml, improveConversionIdFromText, improveErrorText, IMPROVE_RESPONSIVE_TIMEOUT_MS, prepareImproveTargetAttempt, recordedImproveConversionId, responsiveFallbackReason, } from './improve-convert-resilience.js';
8
+ import { fixedImproveHtml, improveConversionIdFromText, improveConvertRetryKey, improveConvertStallCount, improveConvertStallHalted, improveErrorText, improveStalled, IMPROVE_FRESH_ABANDON_REASON, prepareImproveTargetAttempt, responsiveFallbackReason, } from './improve-convert-resilience.js';
9
+ import { improveFreshConversionKey, noteImproveConversionAttemptId, openImproveConversionAttempt, settleImproveConversionAttempt, startImproveConversionAttempt, } from './improve-conversion-attempts.js';
7
10
  import { canvasOfDoc } from './improve-layerdoc-diff.js';
8
- import { improveSha256, noteImproveStage, } from './improve-stage-shared.js';
11
+ import { abandonImproveConversion, noteAbandonedAttempts, withoutImproveStages, } from './improve-reset.js';
12
+ import { improveSha256, noteImproveStage, noteImproveStageDispatched, } from './improve-stage-shared.js';
9
13
  import { readImproveRecord, writeImproveRecord } from './improve-workspace.js';
10
14
  export const runImproveConversion = async (args) => {
11
15
  const artifacts = [];
@@ -15,11 +19,19 @@ export const runImproveConversion = async (args) => {
15
19
  note: (facts) => {
16
20
  artifacts.push(...(facts.artifacts ?? []));
17
21
  purchaseIds.push(...(facts.purchased ?? []));
18
- if (facts.runId)
22
+ if (facts.runId) {
23
+ if (!runIds.includes(facts.runId)) {
24
+ args.onConversionId?.(facts.runId);
25
+ args.progress?.noteConversionId(facts.runId);
26
+ }
19
27
  runIds.push(facts.runId);
28
+ }
20
29
  args.journal?.note(facts);
21
30
  },
22
- heartbeat: (progress) => { args.journal?.heartbeat(progress); },
31
+ heartbeat: (progress) => {
32
+ args.journal?.heartbeat(progress);
33
+ args.progress?.heartbeat(progress);
34
+ },
23
35
  };
24
36
  const flags = {
25
37
  output: args.output,
@@ -54,25 +66,19 @@ class ImproveConvertAttemptError extends Error {
54
66
  this.attempt = attempt;
55
67
  }
56
68
  }
69
+ /**
70
+ * `--fresh` re-buys ONE conversion of the SAME settled winner under a new
71
+ * idempotency key. Capture, draft and pick stay settled and are not redrawn —
72
+ * `--redraw` is the flag for that.
73
+ */
57
74
  const recordFreshConversion = async (args) => {
58
75
  const durable = await readImproveRecord(args.options.paths.record) ?? args.record;
59
- const abandonedId = await recordedImproveConversionId(durable);
60
- const abandonedConversions = [...(durable.abandonedConversions ?? [])];
61
- if (abandonedId && !abandonedConversions.some((entry) => entry.id === abandonedId)) {
62
- abandonedConversions.push({
63
- id: abandonedId,
64
- abandonedAt: new Date().toISOString(),
65
- reason: 'fresh requested after recorded conversion remained unavailable',
66
- });
67
- (args.dependencies.warn ?? console.warn)(`[fresh] convert: abandoning recorded conversion ${abandonedId}; requesting a new purchase`);
68
- }
69
- const record = {
70
- ...durable,
71
- ...(abandonedConversions.length > 0 ? { abandonedConversions } : {}),
72
- convert: undefined,
73
- plan: undefined,
74
- stages: Object.fromEntries(Object.entries(durable.stages).filter(([stage]) => !['convert', 'plan'].includes(stage))),
75
- };
76
+ const abandoned = await abandonImproveConversion({
77
+ record: durable,
78
+ reason: IMPROVE_FRESH_ABANDON_REASON,
79
+ warn: args.dependencies.warn ?? ((line) => { console.warn(line); }),
80
+ });
81
+ const record = withoutImproveStages(abandoned.record, ['convert', 'plan']);
76
82
  await writeImproveRecord(args.options.paths.record, record);
77
83
  return record;
78
84
  };
@@ -130,75 +136,253 @@ export const runImproveConvertStage = async (args) => {
130
136
  throw new Error('Improve has no design image to convert');
131
137
  const targetIdentity = improveSha256(Buffer.from(`${inputSha}:${args.record.conversionModel}:${args.options.responsiveQuality}`)).slice(0, 32);
132
138
  const baseKey = `improve-target:v2:${targetIdentity}`;
133
- const key = args.options.fresh
134
- ? `${baseKey}:fresh:${args.freshConversionNonce}`
135
- : baseKey;
139
+ // How many conversions of this winner a PRE-F19 kit bought and abandoned to a
140
+ // stall, and which of them to wait on now. A resume re-attaches to the NEWEST
141
+ // one — it is bought, it is still running, and it is the only way to get
142
+ // anything back for it — instead of rebuilding the base key and waiting out
143
+ // the whole bound on the first, oldest conversion. Nothing adds to this count
144
+ // any more; a stall no longer abandons anything.
145
+ const bought = args.options.fresh ? 0 : improveConvertStallCount(recordBeforeConvert);
146
+ const index = Math.max(1, bought);
147
+ // WHICH CONVERSION THIS INVOCATION IS ABOUT TO WAIT ON. The attempt ledger
148
+ // decides, because it holds the exact key: a `--fresh` or retry attempt that
149
+ // was stopped mid-flight is reachable only through the key it was dispatched
150
+ // under, and the derived stall key below cannot express a nonce. Without it,
151
+ // `--from convert` rebuilt the base key, the server's dedupe handed back the
152
+ // older recorded conversion, and the fresh one kept running and kept billing
153
+ // with nothing able to collect it. The derived key stays the fallback for
154
+ // kits written before the ledger.
155
+ //
156
+ // Only an attempt minted for THIS winner counts: every recorded key is the
157
+ // base key itself or the base key plus a suffix, so the prefix is what says
158
+ // the conversion behind it is of the design this run is converting. A redraw
159
+ // or a re-pick already closes its attempts (`abandonImproveConversions`);
160
+ // this is the second lock on that door, because re-attaching to a conversion
161
+ // of a discarded design would deliver the wrong page and read as a replay.
162
+ const open = args.options.fresh ? undefined : openImproveConversionAttempt(recordBeforeConvert);
163
+ const resumed = open && (open.key === baseKey || open.key.startsWith(`${baseKey}:`))
164
+ ? open
165
+ : undefined;
166
+ const nonce = args.freshConversionNonce;
167
+ if (args.options.fresh && !nonce) {
168
+ throw new Error('improve --fresh needs a per-invocation conversion nonce, so the conversion it dispatches'
169
+ + ' can be recorded and resumed rather than orphaned');
170
+ }
171
+ const key = args.options.fresh && nonce
172
+ ? improveFreshConversionKey(baseKey, nonce)
173
+ : resumed?.key ?? (index === 1 ? baseKey : improveConvertRetryKey(baseKey, index));
174
+ // The transaction is taken ONCE: a second `prepareImproveTargetAttempt`
175
+ // while the first backup exists would delete the previous good target
176
+ // instead of preserving it.
136
177
  const transaction = await prepareImproveTargetAttempt(args.options.paths.targetDir);
178
+ const warn = args.dependencies.warn ?? ((line) => { console.warn(line); });
137
179
  try {
138
- const converted = await runImproveConversion({
139
- input,
140
- outDir: args.options.paths.targetDir,
141
- output: 'html',
142
- model: args.record.conversionModel,
143
- responsiveQuality: args.options.responsiveQuality,
144
- timeoutMs: IMPROVE_RESPONSIVE_TIMEOUT_MS,
145
- key,
146
- runner: args.dependencies.runConvert ?? runConversionCommand,
147
- journal: args.dependencies.journal,
148
- }).catch(async (error) => {
149
- const attempt = error instanceof ImproveConvertAttemptError
150
- ? error.attempt
151
- : { artifacts: [], purchaseIds: [], runIds: [] };
152
- const warning = responsiveFallbackReason(error);
153
- const sourceConversionId = attempt.runIds[0]
154
- ?? improveConversionIdFromText(improveErrorText(error));
155
- const layerDocPresent = (await stat(args.options.paths.targetLayerDoc).catch(() => undefined))?.isFile();
156
- const assetsPresent = (await stat(`${args.options.paths.targetLayerDoc}.assets`).catch(() => undefined))?.isDirectory();
157
- if (!warning || !sourceConversionId || !layerDocPresent || !assetsPresent)
158
- throw error;
159
- (args.dependencies.warn ?? console.warn)(`Responsive HTML was unavailable; deriving fixed-layout HTML free from ${sourceConversionId}`);
160
- const fixed = await runImproveConversion({
161
- input: sourceConversionId,
180
+ // The hosted id joins its key on the record as soon as the conversion
181
+ // reports one, so a reader of `improve.json` alone can say which conversion
182
+ // a recorded key bought. Only ledger attempts have anywhere to put it, so
183
+ // the ordinary base-key path writes nothing extra. The writes are chained
184
+ // and drained before the stage writes the record itself: a stamp landing
185
+ // after the settled record would write a record that has no convert block.
186
+ let pendingLedgerWrite = Promise.resolve();
187
+ const rememberConversionId = (attemptKey, id) => {
188
+ const noted = noteImproveConversionAttemptId(recordBeforeConvert, {
189
+ key: attemptKey,
190
+ conversionId: id,
191
+ });
192
+ if (noted === recordBeforeConvert)
193
+ return;
194
+ recordBeforeConvert = noted;
195
+ pendingLedgerWrite = pendingLedgerWrite
196
+ .then(async () => writeImproveRecord(args.options.paths.record, recordBeforeConvert))
197
+ .catch((error) => {
198
+ warn(`[ledger] convert: could not record conversion ${id} against its key:`
199
+ + ` ${improveErrorText(error)}`);
200
+ });
201
+ };
202
+ const bound = args.options.convertStallSeconds;
203
+ // Progress goes where every other 12ui progress stream goes — stderr, via
204
+ // the same channel the fallback line uses — so stdout stays the record.
205
+ const tick = args.dependencies.warn ?? ((line) => { console.warn(line); });
206
+ const attemptConversion = async (attemptKey) => {
207
+ // The wait a lane actually sits through, ticked once a minute so the
208
+ // terminal never goes silent for the length of the bound (F8). The wall
209
+ // clock is the backstop for the elapsed the service reports, because a
210
+ // conversion that dies before its first heartbeat reports none at all.
211
+ const startedAt = Date.now();
212
+ const progress = createImproveConvertProgress({
213
+ label: 'responsive export',
214
+ boundSeconds: bound,
215
+ write: tick,
216
+ });
217
+ return runImproveConversion({
218
+ input,
162
219
  outDir: args.options.paths.targetDir,
163
- output: 'html_fixed',
164
- key: `improve-fixed:v1:${sourceConversionId}`,
220
+ output: 'html',
221
+ model: args.record.conversionModel,
222
+ responsiveQuality: args.options.responsiveQuality,
223
+ timeoutMs: args.options.convertStallSeconds * 1_000,
224
+ key: attemptKey,
165
225
  runner: args.dependencies.runConvert ?? runConversionCommand,
166
226
  journal: args.dependencies.journal,
227
+ onConversionId: (id) => { rememberConversionId(attemptKey, id); },
228
+ progress,
229
+ }).catch(async (error) => {
230
+ const attempt = error instanceof ImproveConvertAttemptError
231
+ ? error.attempt
232
+ : { artifacts: [], purchaseIds: [], runIds: [] };
233
+ const warning = responsiveFallbackReason(error);
234
+ const sourceConversionId = attempt.runIds[0]
235
+ ?? improveConversionIdFromText(improveErrorText(error));
236
+ const layerDocPresent = (await stat(args.options.paths.targetLayerDoc).catch(() => undefined))?.isFile();
237
+ const assetsPresent = (await stat(`${args.options.paths.targetLayerDoc}.assets`).catch(() => undefined))?.isDirectory();
238
+ if (!warning || !sourceConversionId || !layerDocPresent || !assetsPresent)
239
+ throw error;
240
+ const waitedSeconds = Math.round(progress.waitedSeconds() ?? (Date.now() - startedAt) / 1_000);
241
+ (args.dependencies.warn ?? console.warn)(`Responsive HTML was unavailable after ${formatDuration(waitedSeconds)}`
242
+ + ` (bound ${formatDuration(bound)});`
243
+ + ` deriving fixed-layout HTML free from ${sourceConversionId}`);
244
+ // The derivation is free, not unbounded. Passing no timeout dropped it
245
+ // through to waitForOperation's twenty-minute default while the docs
246
+ // promised `--convert-stall-seconds` bounds the conversion wait, so a
247
+ // wedged derivation hung the run for twenty minutes with no STALL.md —
248
+ // the pipedrive shape, on the one path the reader was told was bounded.
249
+ const fixed = await runImproveConversion({
250
+ input: sourceConversionId,
251
+ outDir: args.options.paths.targetDir,
252
+ output: 'html_fixed',
253
+ timeoutMs: args.options.convertStallSeconds * 1_000,
254
+ key: `improve-fixed:v1:${sourceConversionId}`,
255
+ runner: args.dependencies.runConvert ?? runConversionCommand,
256
+ journal: args.dependencies.journal,
257
+ progress: createImproveConvertProgress({
258
+ label: 'fixed-layout derivation',
259
+ boundSeconds: bound,
260
+ write: tick,
261
+ }),
262
+ });
263
+ const fixedOutput = await fixedImproveHtml(args.options.paths.targetDir);
264
+ args.dependencies.journal?.note({ degradations: ['improve_fixed_layout_fallback'] });
265
+ return {
266
+ artifacts: [...new Set([
267
+ ...attempt.artifacts,
268
+ ...fixed.artifacts,
269
+ args.options.paths.targetLayerDoc,
270
+ `${args.options.paths.targetLayerDoc}.assets`,
271
+ fixedOutput.html,
272
+ fixedOutput.assets,
273
+ ])],
274
+ purchaseIds: [...new Set([...attempt.purchaseIds, ...fixed.purchaseIds])],
275
+ runIds: [...new Set([sourceConversionId, ...attempt.runIds, ...fixed.runIds])],
276
+ fallback: { html: fixedOutput.html, warning, waitedSeconds },
277
+ };
167
278
  });
168
- const fixedOutput = await fixedImproveHtml(args.options.paths.targetDir);
169
- args.dependencies.journal?.note({ degradations: ['improve_fixed_layout_fallback'] });
170
- return {
171
- artifacts: [...new Set([
172
- ...attempt.artifacts,
173
- ...fixed.artifacts,
174
- args.options.paths.targetLayerDoc,
175
- `${args.options.paths.targetLayerDoc}.assets`,
176
- fixedOutput.html,
177
- fixedOutput.assets,
178
- ])],
179
- purchaseIds: [...new Set([...attempt.purchaseIds, ...fixed.purchaseIds])],
180
- runIds: [...new Set([sourceConversionId, ...attempt.runIds, ...fixed.runIds])],
181
- fallback: { html: fixedOutput.html, warning },
182
- };
279
+ };
280
+ // ONE DISPATCH PER INVOCATION, ALWAYS (F19, CLAUDE.md item 3).
281
+ //
282
+ // A stall used to buy a second parent conversion of the same winner. The
283
+ // justification was that the bound sits outside the model's typical window,
284
+ // so it could not fire on healthy work — a bound, never a measurement. What
285
+ // it produced on pipedrive was one operator command, two parent conversions,
286
+ // four conversion ids, and an abandoned-conversion list the CLI wrote
287
+ // against itself while the first conversion kept running and kept billing.
288
+ //
289
+ // So there is no retry, no abandonment, and no second key. A stall that left
290
+ // a LayerDoc derives the free fixed-layout fallback from the conversion that
291
+ // is already running (inside `attemptConversion`); a stall that left nothing
292
+ // ends the invocation with the conversion still open in the ledger, so
293
+ // `plan/STALL.md` and `--from convert` both re-attach to it.
294
+ //
295
+ // Why an attempt is being dispatched, which is what the ledger records it
296
+ // as. A resume of a recorded attempt re-declares the reason it was opened
297
+ // with and dedupes to a no-op.
298
+ const reason = args.options.fresh
299
+ ? 'fresh'
300
+ : resumed?.reason ?? (index === 1 ? 'primary' : 'stall-retry');
301
+ // BEFORE THE DISPATCH, because a conversion nothing wrote down before it
302
+ // started is a conversion a stop cannot leave resumable — and because a
303
+ // price nobody wrote down is a paid call with no receipt. `--fresh` also
304
+ // walks away here from whatever attempt this kit still had open: it is
305
+ // buying a replacement for it, and an attempt left open would send the
306
+ // next resume back to the run this one supersedes.
307
+ const started = startImproveConversionAttempt(recordBeforeConvert, {
308
+ key,
309
+ reason,
310
+ priceCeilingUsd: args.price,
311
+ ...(args.options.fresh ? { supersedes: IMPROVE_FRESH_ABANDON_REASON } : {}),
312
+ });
313
+ if (started.record !== recordBeforeConvert) {
314
+ recordBeforeConvert = noteAbandonedAttempts({
315
+ record: started.record,
316
+ attempts: started.superseded,
317
+ reason: IMPROVE_FRESH_ABANDON_REASON,
318
+ warn,
319
+ });
320
+ }
321
+ // The stage's own priced entry, written now rather than on settlement: a
322
+ // kit that stalled had no `convert` entry at all, so its recorded ceiling
323
+ // was the draft's and a lane converting a page twice could not say so.
324
+ recordBeforeConvert = noteImproveStageDispatched({
325
+ record: recordBeforeConvert, stage: 'convert', priceCeilingUsd: args.price,
183
326
  });
184
- const html = 'fallback' in converted ? converted.fallback.html : args.options.paths.targetHtml;
327
+ await writeImproveRecord(args.options.paths.record, recordBeforeConvert);
328
+ let converted;
329
+ try {
330
+ converted = await attemptConversion(key);
331
+ await pendingLedgerWrite;
332
+ }
333
+ catch (error) {
334
+ await pendingLedgerWrite;
335
+ if (!improveStalled(error))
336
+ throw error;
337
+ // The stalled attempt knows its own id even when the record does not:
338
+ // nothing settled, so `recordedImproveConversionId` has nowhere to look.
339
+ // It stays OPEN in the ledger — it is running, it is paid for, and the
340
+ // resume this error prints is the only way to get anything back for it.
341
+ const stalledId = (error instanceof ImproveConvertAttemptError
342
+ ? error.attempt.runIds[0]
343
+ : undefined) ?? improveConversionIdFromText(improveErrorText(error));
344
+ warn(`[stall] convert: nothing settled in ${args.options.convertStallSeconds}s;`
345
+ + `${stalledId ? ` conversion ${stalledId}` : ' the conversion'} is still running,`
346
+ + ' and improve is not buying another');
347
+ throw improveConvertStallHalted({
348
+ seconds: args.options.convertStallSeconds,
349
+ ...(stalledId ? { conversionId: stalledId } : {}),
350
+ input: args.record.input.value,
351
+ runDir: args.options.paths.runDir,
352
+ cause: error,
353
+ });
354
+ }
355
+ const convertedKey = key;
356
+ const html = converted.fallback ? converted.fallback.html : args.options.paths.targetHtml;
185
357
  for (const expected of [args.options.paths.targetLayerDoc, html]) {
186
358
  if (!(await stat(expected).catch(() => undefined))?.isFile()) {
187
359
  throw new Error(`Improve conversion completed without ${expected}`);
188
360
  }
189
361
  }
190
- let record = {
362
+ let record = settleImproveConversionAttempt({
191
363
  ...recordBeforeConvert,
192
364
  convert: {
193
365
  layerDoc: args.options.paths.targetLayerDoc,
194
366
  html,
195
- layout: 'fallback' in converted ? 'fixed' : 'responsive',
367
+ layout: converted.fallback ? 'fixed' : 'responsive',
196
368
  ...(converted.runIds[0] ? { sourceConversionId: converted.runIds[0] } : {}),
197
- ...('fallback' in converted ? { responsiveWarning: converted.fallback.warning } : {}),
369
+ ...(converted.fallback ? { responsiveWarning: converted.fallback.warning } : {}),
370
+ // What the responsive half did before the derivation replaced it, kept
371
+ // durably so `plan/STALL.md`, the README and the run summary all read
372
+ // one account of the same wait rather than three (F8).
373
+ ...(converted.fallback && converted.runIds[0]
374
+ ? {
375
+ responsiveStall: {
376
+ conversionId: converted.runIds[0],
377
+ waitedSeconds: converted.fallback.waitedSeconds,
378
+ boundSeconds: bound,
379
+ },
380
+ }
381
+ : {}),
198
382
  artifacts: converted.artifacts,
199
383
  purchaseIds: converted.purchaseIds,
200
384
  },
201
- };
385
+ }, { key: convertedKey });
202
386
  record = await noteImproveStage({
203
387
  record, stage: 'convert', priceCeilingUsd: args.price, replayed: false, write: false,
204
388
  });
@@ -1 +1 @@
1
- {"version":3,"file":"improve-conversion-stage.js","sourceRoot":"","sources":["../src/improve-conversion-stage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"improve-conversion-stage.js","sourceRoot":"","sources":["../src/improve-conversion-stage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { RunJournalProgress } from './run-journal.js';
2
+ /**
3
+ * A visible tick while the convert stage waits on hosted work.
4
+ *
5
+ * The convert stage runs `12ui convert` with `quiet: true`, so its own progress
6
+ * stream is suppressed and the only record of the wait is the journal. F8
7
+ * (wave-2, 2026-09-03) is what that costs: two lanes sat through a silent wait
8
+ * PAST the bound the CLI publishes, and the first thing either of them saw was
9
+ * the fixed-layout fallback line. One of them wrote it up as the CLI going
10
+ * quiet and overrunning its own promise — it had not, but nothing on the
11
+ * terminal could say so.
12
+ *
13
+ * The journal heartbeat already carries everything a waiting reader needs, so
14
+ * this is a rate limiter over it rather than a second clock: the stage the
15
+ * service is in, how long this wait has run, the bound it is running against,
16
+ * and the conversion id that every recovery command takes.
17
+ */
18
+ /** One line a minute. Frequent enough to read as alive, rare enough to skim. */
19
+ export declare const IMPROVE_CONVERT_PROGRESS_INTERVAL_MS = 60000;
20
+ export type ImproveConvertProgress = {
21
+ /** Feed it every journal heartbeat; it decides which ones are worth a line. */
22
+ heartbeat: (progress: RunJournalProgress) => void;
23
+ /** The hosted id, as soon as the conversion reports one. */
24
+ noteConversionId: (id: string) => void;
25
+ /** The newest elapsed the service reported, for the durable stall record. */
26
+ waitedSeconds: () => number | undefined;
27
+ };
28
+ export declare const createImproveConvertProgress: (args: {
29
+ /** What is being waited on, e.g. `responsive export`. */
30
+ label: string;
31
+ boundSeconds: number;
32
+ write: (line: string) => void;
33
+ now?: () => number;
34
+ intervalMs?: number;
35
+ }) => ImproveConvertProgress;
36
+ //# sourceMappingURL=improve-convert-progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-convert-progress.d.ts","sourceRoot":"","sources":["../src/improve-convert-progress.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AAEH,gFAAgF;AAChF,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAE3D,MAAM,MAAM,sBAAsB,GAAG;IACnC,+EAA+E;IAC/E,SAAS,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClD,4DAA4D;IAC5D,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,6EAA6E;IAC7E,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC;AAIF,eAAO,MAAM,4BAA4B,GAAI,MAAM;IACjD,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,KAAG,sBAsBH,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { formatDuration } from './cli-progress.js';
2
+ /**
3
+ * A visible tick while the convert stage waits on hosted work.
4
+ *
5
+ * The convert stage runs `12ui convert` with `quiet: true`, so its own progress
6
+ * stream is suppressed and the only record of the wait is the journal. F8
7
+ * (wave-2, 2026-09-03) is what that costs: two lanes sat through a silent wait
8
+ * PAST the bound the CLI publishes, and the first thing either of them saw was
9
+ * the fixed-layout fallback line. One of them wrote it up as the CLI going
10
+ * quiet and overrunning its own promise — it had not, but nothing on the
11
+ * terminal could say so.
12
+ *
13
+ * The journal heartbeat already carries everything a waiting reader needs, so
14
+ * this is a rate limiter over it rather than a second clock: the stage the
15
+ * service is in, how long this wait has run, the bound it is running against,
16
+ * and the conversion id that every recovery command takes.
17
+ */
18
+ /** One line a minute. Frequent enough to read as alive, rare enough to skim. */
19
+ export const IMPROVE_CONVERT_PROGRESS_INTERVAL_MS = 60_000;
20
+ const stageWords = (stage) => stage.replace(/_/gu, ' ');
21
+ export const createImproveConvertProgress = (args) => {
22
+ const now = args.now ?? Date.now;
23
+ const intervalMs = args.intervalMs ?? IMPROVE_CONVERT_PROGRESS_INTERVAL_MS;
24
+ const startedAt = now();
25
+ let lastLineAt = startedAt;
26
+ let conversionId;
27
+ let elapsed;
28
+ return {
29
+ noteConversionId: (id) => { conversionId = id; },
30
+ waitedSeconds: () => elapsed,
31
+ heartbeat: (progress) => {
32
+ elapsed = progress.elapsedSeconds;
33
+ if (now() - lastLineAt < intervalMs)
34
+ return;
35
+ lastLineAt = now();
36
+ args.write(`[wait] ${args.label}: ${formatDuration(progress.elapsedSeconds)} elapsed`
37
+ + `, bound ${formatDuration(args.boundSeconds)}`
38
+ + `; conversion ${conversionId ?? 'not reported yet'}`
39
+ + (progress.stage ? `; stage ${stageWords(progress.stage)}` : ''));
40
+ },
41
+ };
42
+ };
43
+ //# sourceMappingURL=improve-convert-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-convert-progress.js","sourceRoot":"","sources":["../src/improve-convert-progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;;;;;;;;;;;;;;GAeG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,oCAAoC,GAAG,MAAM,CAAC;AAW3D,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAO5C,EAA0B,EAAE;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,oCAAoC,CAAC;IAC3E,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,IAAI,UAAU,GAAG,SAAS,CAAC;IAC3B,IAAI,YAAgC,CAAC;IACrC,IAAI,OAA2B,CAAC;IAChC,OAAO;QACL,gBAAgB,EAAE,CAAC,EAAU,EAAQ,EAAE,GAAG,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9D,aAAa,EAAE,GAAuB,EAAE,CAAC,OAAO;QAChD,SAAS,EAAE,CAAC,QAA4B,EAAQ,EAAE;YAChD,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC;YAClC,IAAI,GAAG,EAAE,GAAG,UAAU,GAAG,UAAU;gBAAE,OAAO;YAC5C,UAAU,GAAG,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CACR,UAAU,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU;kBACxE,WAAW,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;kBAC9C,gBAAgB,YAAY,IAAI,kBAAkB,EAAE;kBACpD,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAClE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}