@12ui/design 0.2.56 → 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.
- package/SKILL.md +1 -1
- package/dist/branch-client.d.ts +2 -0
- package/dist/branch-client.d.ts.map +1 -1
- package/dist/branch-client.js +1 -0
- package/dist/branch-client.js.map +1 -1
- package/dist/cli-arguments.d.ts.map +1 -1
- package/dist/cli-arguments.js +1 -0
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli-convert-command.d.ts.map +1 -1
- package/dist/cli-convert-command.js +110 -15
- package/dist/cli-convert-command.js.map +1 -1
- package/dist/cli-corpus-command.d.ts.map +1 -1
- package/dist/cli-corpus-command.js +5 -2
- package/dist/cli-corpus-command.js.map +1 -1
- package/dist/cli-corpus-evidence.d.ts.map +1 -1
- package/dist/cli-corpus-evidence.js +2 -1
- package/dist/cli-corpus-evidence.js.map +1 -1
- package/dist/cli-corpus-reference-downloads.d.ts +1 -0
- package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
- package/dist/cli-corpus-reference-downloads.js +13 -3
- package/dist/cli-corpus-reference-downloads.js.map +1 -1
- package/dist/cli-corpus-types.d.ts +2 -0
- package/dist/cli-corpus-types.d.ts.map +1 -1
- package/dist/cli-help/design.d.ts +1 -1
- package/dist/cli-help/design.d.ts.map +1 -1
- package/dist/cli-help/design.js +6 -2
- package/dist/cli-help/design.js.map +1 -1
- package/dist/cli-help/index.d.ts +1 -1
- package/dist/cli-improve-command.d.ts.map +1 -1
- package/dist/cli-improve-command.js +68 -5
- package/dist/cli-improve-command.js.map +1 -1
- package/dist/cli-usage.js +2 -2
- package/dist/concept-input.d.ts +21 -0
- package/dist/concept-input.d.ts.map +1 -1
- package/dist/concept-input.js +32 -10
- package/dist/concept-input.js.map +1 -1
- package/dist/conversion-client.d.ts +39 -1
- package/dist/conversion-client.d.ts.map +1 -1
- package/dist/conversion-client.js +205 -3
- package/dist/conversion-client.js.map +1 -1
- package/dist/corpus-client.d.ts +7 -1
- package/dist/corpus-client.d.ts.map +1 -1
- package/dist/corpus-client.js +6 -2
- package/dist/corpus-client.js.map +1 -1
- package/dist/corpus-reference-download-retry.d.ts +68 -0
- package/dist/corpus-reference-download-retry.d.ts.map +1 -0
- package/dist/corpus-reference-download-retry.js +123 -0
- package/dist/corpus-reference-download-retry.js.map +1 -0
- package/dist/corpus-request-error.d.ts +17 -0
- package/dist/corpus-request-error.d.ts.map +1 -0
- package/dist/corpus-request-error.js +21 -0
- package/dist/corpus-request-error.js.map +1 -0
- package/dist/draft-run.d.ts +9 -0
- package/dist/draft-run.d.ts.map +1 -1
- package/dist/draft-run.js +22 -5
- package/dist/draft-run.js.map +1 -1
- package/dist/draft-workspace.d.ts +2 -1
- package/dist/draft-workspace.d.ts.map +1 -1
- package/dist/draft-workspace.js.map +1 -1
- package/dist/hosted-draft-identity.d.ts +1 -0
- package/dist/hosted-draft-identity.d.ts.map +1 -1
- package/dist/hosted-draft-identity.js +1 -0
- package/dist/hosted-draft-identity.js.map +1 -1
- package/dist/improve-added-specs.d.ts +9 -0
- package/dist/improve-added-specs.d.ts.map +1 -1
- package/dist/improve-added-specs.js +28 -7
- package/dist/improve-added-specs.js.map +1 -1
- package/dist/improve-bootstrap-secret.d.ts +35 -0
- package/dist/improve-bootstrap-secret.d.ts.map +1 -0
- package/dist/improve-bootstrap-secret.js +61 -0
- package/dist/improve-bootstrap-secret.js.map +1 -0
- package/dist/improve-capture-redirect.d.ts +46 -0
- package/dist/improve-capture-redirect.d.ts.map +1 -0
- package/dist/improve-capture-redirect.js +68 -0
- package/dist/improve-capture-redirect.js.map +1 -0
- package/dist/improve-concept.d.ts +14 -1
- package/dist/improve-concept.d.ts.map +1 -1
- package/dist/improve-concept.js +29 -8
- package/dist/improve-concept.js.map +1 -1
- package/dist/improve-conversion-attempts.d.ts +9 -5
- package/dist/improve-conversion-attempts.d.ts.map +1 -1
- package/dist/improve-conversion-attempts.js +6 -1
- package/dist/improve-conversion-attempts.js.map +1 -1
- package/dist/improve-conversion-stage.d.ts +7 -0
- package/dist/improve-conversion-stage.d.ts.map +1 -1
- package/dist/improve-conversion-stage.js +188 -171
- package/dist/improve-conversion-stage.js.map +1 -1
- package/dist/improve-convert-progress.d.ts +36 -0
- package/dist/improve-convert-progress.d.ts.map +1 -0
- package/dist/improve-convert-progress.js +43 -0
- package/dist/improve-convert-progress.js.map +1 -0
- package/dist/improve-convert-resilience.d.ts +44 -53
- package/dist/improve-convert-resilience.d.ts.map +1 -1
- package/dist/improve-convert-resilience.js +51 -58
- package/dist/improve-convert-resilience.js.map +1 -1
- package/dist/improve-delivery-stages.d.ts.map +1 -1
- package/dist/improve-delivery-stages.js +4 -0
- package/dist/improve-delivery-stages.js.map +1 -1
- package/dist/improve-generation-stages.d.ts.map +1 -1
- package/dist/improve-generation-stages.js +32 -3
- package/dist/improve-generation-stages.js.map +1 -1
- package/dist/improve-icon-svg.d.ts +47 -0
- package/dist/improve-icon-svg.d.ts.map +1 -0
- package/dist/improve-icon-svg.js +83 -0
- package/dist/improve-icon-svg.js.map +1 -0
- package/dist/improve-kit-ignore.d.ts +32 -0
- package/dist/improve-kit-ignore.d.ts.map +1 -0
- package/dist/improve-kit-ignore.js +111 -0
- package/dist/improve-kit-ignore.js.map +1 -0
- package/dist/improve-kit-readme.d.ts.map +1 -1
- package/dist/improve-kit-readme.js +101 -11
- package/dist/improve-kit-readme.js.map +1 -1
- package/dist/improve-kit-stall.d.ts +48 -2
- package/dist/improve-kit-stall.d.ts.map +1 -1
- package/dist/improve-kit-stall.js +167 -15
- package/dist/improve-kit-stall.js.map +1 -1
- package/dist/improve-kit-status.d.ts +36 -0
- package/dist/improve-kit-status.d.ts.map +1 -1
- package/dist/improve-kit-status.js +74 -4
- package/dist/improve-kit-status.js.map +1 -1
- package/dist/improve-options.d.ts +6 -0
- package/dist/improve-options.d.ts.map +1 -1
- package/dist/improve-options.js +3 -0
- package/dist/improve-options.js.map +1 -1
- package/dist/improve-plan-annotated-render.d.ts +13 -1
- package/dist/improve-plan-annotated-render.d.ts.map +1 -1
- package/dist/improve-plan-annotated-render.js +21 -0
- package/dist/improve-plan-annotated-render.js.map +1 -1
- package/dist/improve-plan-annotator.d.ts +5 -0
- package/dist/improve-plan-annotator.d.ts.map +1 -1
- package/dist/improve-plan-annotator.js +1 -0
- package/dist/improve-plan-annotator.js.map +1 -1
- package/dist/improve-run-summary.d.ts.map +1 -1
- package/dist/improve-run-summary.js +51 -5
- package/dist/improve-run-summary.js.map +1 -1
- package/dist/improve-stage-shared.d.ts +39 -1
- package/dist/improve-stage-shared.d.ts.map +1 -1
- package/dist/improve-stage-shared.js +80 -3
- package/dist/improve-stage-shared.js.map +1 -1
- package/dist/improve-terminal-event.d.ts.map +1 -1
- package/dist/improve-terminal-event.js +7 -1
- package/dist/improve-terminal-event.js.map +1 -1
- package/dist/improve-token-patch.d.ts +2 -0
- package/dist/improve-token-patch.d.ts.map +1 -1
- package/dist/improve-token-patch.js +23 -5
- package/dist/improve-token-patch.js.map +1 -1
- package/dist/improve-workspace.d.ts +84 -7
- package/dist/improve-workspace.d.ts.map +1 -1
- package/dist/improve-workspace.js +16 -1
- package/dist/improve-workspace.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +123 -0
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/mcp-tool-definitions.js +1 -1
- package/dist/mcp-tool-definitions.js.map +1 -1
- package/dist/mcp-tool-handler.d.ts.map +1 -1
- package/dist/mcp-tool-handler.js +3 -0
- package/dist/mcp-tool-handler.js.map +1 -1
- package/dist/redesign-capture.d.ts +1 -0
- package/dist/redesign-capture.d.ts.map +1 -1
- package/dist/redesign-capture.js +6 -0
- package/dist/redesign-capture.js.map +1 -1
- package/dist/responsive-alternative-materializer.d.ts +19 -0
- package/dist/responsive-alternative-materializer.d.ts.map +1 -0
- package/dist/responsive-alternative-materializer.js +76 -0
- package/dist/responsive-alternative-materializer.js.map +1 -0
- package/open-design.json +2 -2
- package/package.json +1 -1
- package/skills/12ui-design/SKILL.md +7 -1
- package/skills/12ui-design/improve.md +20 -5
- package/skills/12ui-design/inspire.md +1 -1
|
@@ -1,13 +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, improveConvertRetryKey, improveConvertStallCount,
|
|
8
|
+
import { fixedImproveHtml, improveConversionIdFromText, improveConvertRetryKey, improveConvertStallCount, improveConvertStallHalted, improveErrorText, improveStalled, IMPROVE_FRESH_ABANDON_REASON, prepareImproveTargetAttempt, responsiveFallbackReason, } from './improve-convert-resilience.js';
|
|
7
9
|
import { improveFreshConversionKey, noteImproveConversionAttemptId, openImproveConversionAttempt, settleImproveConversionAttempt, startImproveConversionAttempt, } from './improve-conversion-attempts.js';
|
|
8
10
|
import { canvasOfDoc } from './improve-layerdoc-diff.js';
|
|
9
|
-
import { abandonImproveConversion,
|
|
10
|
-
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';
|
|
11
13
|
import { readImproveRecord, writeImproveRecord } from './improve-workspace.js';
|
|
12
14
|
export const runImproveConversion = async (args) => {
|
|
13
15
|
const artifacts = [];
|
|
@@ -18,13 +20,18 @@ export const runImproveConversion = async (args) => {
|
|
|
18
20
|
artifacts.push(...(facts.artifacts ?? []));
|
|
19
21
|
purchaseIds.push(...(facts.purchased ?? []));
|
|
20
22
|
if (facts.runId) {
|
|
21
|
-
if (!runIds.includes(facts.runId))
|
|
23
|
+
if (!runIds.includes(facts.runId)) {
|
|
22
24
|
args.onConversionId?.(facts.runId);
|
|
25
|
+
args.progress?.noteConversionId(facts.runId);
|
|
26
|
+
}
|
|
23
27
|
runIds.push(facts.runId);
|
|
24
28
|
}
|
|
25
29
|
args.journal?.note(facts);
|
|
26
30
|
},
|
|
27
|
-
heartbeat: (progress) => {
|
|
31
|
+
heartbeat: (progress) => {
|
|
32
|
+
args.journal?.heartbeat(progress);
|
|
33
|
+
args.progress?.heartbeat(progress);
|
|
34
|
+
},
|
|
28
35
|
};
|
|
29
36
|
const flags = {
|
|
30
37
|
output: args.output,
|
|
@@ -129,14 +136,14 @@ export const runImproveConvertStage = async (args) => {
|
|
|
129
136
|
throw new Error('Improve has no design image to convert');
|
|
130
137
|
const targetIdentity = improveSha256(Buffer.from(`${inputSha}:${args.record.conversionModel}:${args.options.responsiveQuality}`)).slice(0, 32);
|
|
131
138
|
const baseKey = `improve-target:v2:${targetIdentity}`;
|
|
132
|
-
// How many conversions of this winner
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
//
|
|
136
|
-
//
|
|
137
|
-
//
|
|
138
|
-
|
|
139
|
-
|
|
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);
|
|
140
147
|
// WHICH CONVERSION THIS INVOCATION IS ABOUT TO WAIT ON. The attempt ledger
|
|
141
148
|
// decides, because it holds the exact key: a `--fresh` or retry attempt that
|
|
142
149
|
// was stopped mid-flight is reachable only through the key it was dispatched
|
|
@@ -147,13 +154,15 @@ export const runImproveConvertStage = async (args) => {
|
|
|
147
154
|
// kits written before the ledger.
|
|
148
155
|
//
|
|
149
156
|
// Only an attempt minted for THIS winner counts: every recorded key is the
|
|
150
|
-
// base key plus a suffix, so the prefix is what says
|
|
151
|
-
// is of the design this run is converting. A redraw
|
|
152
|
-
// closes its attempts (`abandonImproveConversions`);
|
|
153
|
-
// on that door, because re-attaching to a conversion
|
|
154
|
-
// would deliver the wrong page and read as a replay.
|
|
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.
|
|
155
162
|
const open = args.options.fresh ? undefined : openImproveConversionAttempt(recordBeforeConvert);
|
|
156
|
-
const resumed = open
|
|
163
|
+
const resumed = open && (open.key === baseKey || open.key.startsWith(`${baseKey}:`))
|
|
164
|
+
? open
|
|
165
|
+
: undefined;
|
|
157
166
|
const nonce = args.freshConversionNonce;
|
|
158
167
|
if (args.options.fresh && !nonce) {
|
|
159
168
|
throw new Error('improve --fresh needs a per-invocation conversion nonce, so the conversion it dispatches'
|
|
@@ -162,9 +171,9 @@ export const runImproveConvertStage = async (args) => {
|
|
|
162
171
|
const key = args.options.fresh && nonce
|
|
163
172
|
? improveFreshConversionKey(baseKey, nonce)
|
|
164
173
|
: resumed?.key ?? (index === 1 ? baseKey : improveConvertRetryKey(baseKey, index));
|
|
165
|
-
// The transaction is taken ONCE
|
|
166
|
-
//
|
|
167
|
-
//
|
|
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.
|
|
168
177
|
const transaction = await prepareImproveTargetAttempt(args.options.paths.targetDir);
|
|
169
178
|
const warn = args.dependencies.warn ?? ((line) => { console.warn(line); });
|
|
170
179
|
try {
|
|
@@ -190,164 +199,160 @@ export const runImproveConvertStage = async (args) => {
|
|
|
190
199
|
+ ` ${improveErrorText(error)}`);
|
|
191
200
|
});
|
|
192
201
|
};
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
?? improveConversionIdFromText(improveErrorText(error));
|
|
211
|
-
const layerDocPresent = (await stat(args.options.paths.targetLayerDoc).catch(() => undefined))?.isFile();
|
|
212
|
-
const assetsPresent = (await stat(`${args.options.paths.targetLayerDoc}.assets`).catch(() => undefined))?.isDirectory();
|
|
213
|
-
if (!warning || !sourceConversionId || !layerDocPresent || !assetsPresent)
|
|
214
|
-
throw error;
|
|
215
|
-
(args.dependencies.warn ?? console.warn)(`Responsive HTML was unavailable; deriving fixed-layout HTML free from ${sourceConversionId}`);
|
|
216
|
-
// The derivation is free, not unbounded. Passing no timeout dropped it
|
|
217
|
-
// through to waitForOperation's twenty-minute default while the docs
|
|
218
|
-
// promised `--convert-stall-seconds` bounds the conversion wait, so a
|
|
219
|
-
// wedged derivation hung the run for twenty minutes with no STALL.md —
|
|
220
|
-
// the pipedrive shape, on the one path the reader was told was bounded.
|
|
221
|
-
const fixed = await runImproveConversion({
|
|
222
|
-
input: sourceConversionId,
|
|
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,
|
|
223
219
|
outDir: args.options.paths.targetDir,
|
|
224
|
-
output: '
|
|
220
|
+
output: 'html',
|
|
221
|
+
model: args.record.conversionModel,
|
|
222
|
+
responsiveQuality: args.options.responsiveQuality,
|
|
225
223
|
timeoutMs: args.options.convertStallSeconds * 1_000,
|
|
226
|
-
key:
|
|
224
|
+
key: attemptKey,
|
|
227
225
|
runner: args.dependencies.runConvert ?? runConversionCommand,
|
|
228
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
|
+
};
|
|
229
278
|
});
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
return {
|
|
233
|
-
artifacts: [...new Set([
|
|
234
|
-
...attempt.artifacts,
|
|
235
|
-
...fixed.artifacts,
|
|
236
|
-
args.options.paths.targetLayerDoc,
|
|
237
|
-
`${args.options.paths.targetLayerDoc}.assets`,
|
|
238
|
-
fixedOutput.html,
|
|
239
|
-
fixedOutput.assets,
|
|
240
|
-
])],
|
|
241
|
-
purchaseIds: [...new Set([...attempt.purchaseIds, ...fixed.purchaseIds])],
|
|
242
|
-
runIds: [...new Set([sourceConversionId, ...attempt.runIds, ...fixed.runIds])],
|
|
243
|
-
fallback: { html: fixedOutput.html, warning },
|
|
244
|
-
};
|
|
245
|
-
});
|
|
246
|
-
// ONE retry, and only for the stall with nothing to derive: the wait ended,
|
|
247
|
-
// no LayerDoc reached disk, so no fixed-layout fallback is possible and the
|
|
248
|
-
// stage has nothing at all. The guard is the LayerDoc on disk rather than
|
|
249
|
-
// the error text — if the conversion delivered, re-dispatching is pure
|
|
250
|
-
// waste of a second paid conversion.
|
|
279
|
+
};
|
|
280
|
+
// ONE DISPATCH PER INVOCATION, ALWAYS (F19, CLAUDE.md item 3).
|
|
251
281
|
//
|
|
252
|
-
//
|
|
253
|
-
// the model's typical
|
|
254
|
-
//
|
|
255
|
-
//
|
|
256
|
-
//
|
|
257
|
-
//
|
|
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.
|
|
258
294
|
//
|
|
259
|
-
// The budget belongs to the KIT, not to this process. Both the retry's
|
|
260
|
-
// identity and its count come from the durable ledgers, so a resume
|
|
261
|
-
// attaches to the conversion the retry actually dispatched instead of to
|
|
262
|
-
// the first, known-stalled one, and a kit that has already retried refuses
|
|
263
|
-
// to buy a third rather than dispatching one per resume forever.
|
|
264
|
-
let converted;
|
|
265
|
-
let convertedKey;
|
|
266
|
-
const retries = bought === 0 && improveConvertStallRetryAllowed(args.record.conversionModel)
|
|
267
|
-
? IMPROVE_CONVERT_STALL_ATTEMPTS - 1
|
|
268
|
-
: 0;
|
|
269
295
|
// Why an attempt is being dispatched, which is what the ledger records it
|
|
270
296
|
// as. A resume of a recorded attempt re-declares the reason it was opened
|
|
271
|
-
// with and dedupes to a no-op
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
recordBeforeConvert = abandoned.record;
|
|
329
|
-
await writeImproveRecord(args.options.paths.record, recordBeforeConvert);
|
|
330
|
-
// The ledger is the source of truth, and it cannot record a stall whose
|
|
331
|
-
// id nothing reported. Taking the larger of the two keeps the next key
|
|
332
|
-
// distinct in that case without ever going backwards.
|
|
333
|
-
bought = Math.max(bought + 1, improveConvertStallCount(recordBeforeConvert));
|
|
334
|
-
index = bought + 1;
|
|
335
|
-
if (attempt >= retries) {
|
|
336
|
-
throw improveConvertStallExhausted({
|
|
337
|
-
seconds: args.options.convertStallSeconds,
|
|
338
|
-
bought,
|
|
339
|
-
model: args.record.conversionModel,
|
|
340
|
-
cause: error,
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
args.dependencies.journal?.note({ degradations: ['improve_convert_stall_retry'] });
|
|
344
|
-
warn(`[stall] convert: nothing materialized in ${args.options.convertStallSeconds}s;`
|
|
345
|
-
+ ' dispatching one fresh conversion of the same winner');
|
|
346
|
-
await resetImproveTargetAttempt(args.options.paths.targetDir);
|
|
347
|
-
}
|
|
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,
|
|
326
|
+
});
|
|
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
|
+
});
|
|
348
354
|
}
|
|
349
|
-
|
|
350
|
-
throw new Error('Improve conversion ended without a result');
|
|
355
|
+
const convertedKey = key;
|
|
351
356
|
const html = converted.fallback ? converted.fallback.html : args.options.paths.targetHtml;
|
|
352
357
|
for (const expected of [args.options.paths.targetLayerDoc, html]) {
|
|
353
358
|
if (!(await stat(expected).catch(() => undefined))?.isFile()) {
|
|
@@ -362,10 +367,22 @@ export const runImproveConvertStage = async (args) => {
|
|
|
362
367
|
layout: converted.fallback ? 'fixed' : 'responsive',
|
|
363
368
|
...(converted.runIds[0] ? { sourceConversionId: converted.runIds[0] } : {}),
|
|
364
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
|
+
: {}),
|
|
365
382
|
artifacts: converted.artifacts,
|
|
366
383
|
purchaseIds: converted.purchaseIds,
|
|
367
384
|
},
|
|
368
|
-
}, {
|
|
385
|
+
}, { key: convertedKey });
|
|
369
386
|
record = await noteImproveStage({
|
|
370
387
|
record, stage: 'convert', priceCeilingUsd: args.price, replayed: false, write: false,
|
|
371
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"}
|