@12ui/design 0.2.56 → 0.2.58
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/artifact-materializer.d.ts.map +1 -1
- package/dist/artifact-materializer.js +4 -1
- package/dist/artifact-materializer.js.map +1 -1
- package/dist/branch-client.d.ts +86 -2
- package/dist/branch-client.d.ts.map +1 -1
- package/dist/branch-client.js +31 -0
- package/dist/branch-client.js.map +1 -1
- package/dist/cli-arguments.d.ts.map +1 -1
- package/dist/cli-arguments.js +3 -1
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli-capabilities.d.ts +1 -1
- package/dist/cli-conversion-derivation.js +2 -2
- package/dist/cli-conversion-derivation.js.map +1 -1
- package/dist/cli-convert-command.d.ts +2 -0
- package/dist/cli-convert-command.d.ts.map +1 -1
- package/dist/cli-convert-command.js +176 -38
- package/dist/cli-convert-command.js.map +1 -1
- package/dist/cli-corpus-command.js +2 -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-draft-command.d.ts +9 -0
- package/dist/cli-draft-command.d.ts.map +1 -1
- package/dist/cli-draft-command.js +26 -1
- package/dist/cli-draft-command.js.map +1 -1
- package/dist/cli-help/design.d.ts +7 -4
- package/dist/cli-help/design.d.ts.map +1 -1
- package/dist/cli-help/design.js +23 -6
- package/dist/cli-help/design.js.map +1 -1
- package/dist/cli-help/index.d.ts +9 -6
- package/dist/cli-help/index.d.ts.map +1 -1
- package/dist/cli-help/meta.d.ts +2 -2
- package/dist/cli-help/meta.d.ts.map +1 -1
- package/dist/cli-help/meta.js +4 -1
- package/dist/cli-help/meta.js.map +1 -1
- package/dist/cli-improve-command.d.ts.map +1 -1
- package/dist/cli-improve-command.js +273 -28
- package/dist/cli-improve-command.js.map +1 -1
- package/dist/cli-redesign-command.d.ts.map +1 -1
- package/dist/cli-redesign-command.js +97 -24
- package/dist/cli-redesign-command.js.map +1 -1
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +13 -3
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-spend-command.d.ts +12 -1
- package/dist/cli-spend-command.d.ts.map +1 -1
- package/dist/cli-spend-command.js +94 -2
- package/dist/cli-spend-command.js.map +1 -1
- package/dist/cli-usage.js +5 -5
- package/dist/cli-usage.js.map +1 -1
- package/dist/concept-input.d.ts +6 -56
- package/dist/concept-input.d.ts.map +1 -1
- package/dist/concept-input.js +6 -65
- package/dist/concept-input.js.map +1 -1
- package/dist/conversion-client.d.ts +92 -3
- package/dist/conversion-client.d.ts.map +1 -1
- package/dist/conversion-client.js +317 -23
- 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 +3 -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 +15 -0
- package/dist/draft-run.d.ts.map +1 -1
- package/dist/draft-run.js +32 -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 +9 -0
- package/dist/hosted-draft-identity.d.ts.map +1 -1
- package/dist/hosted-draft-identity.js +2 -0
- package/dist/hosted-draft-identity.js.map +1 -1
- package/dist/improve-added-specs.d.ts +12 -31
- package/dist/improve-added-specs.d.ts.map +1 -1
- package/dist/improve-added-specs.js +64 -152
- package/dist/improve-added-specs.js.map +1 -1
- package/dist/improve-artifact-writer.d.ts +13 -0
- package/dist/improve-artifact-writer.d.ts.map +1 -0
- package/dist/improve-artifact-writer.js +27 -0
- package/dist/improve-artifact-writer.js.map +1 -0
- package/dist/improve-bootstrap-history.d.ts +21 -0
- package/dist/improve-bootstrap-history.d.ts.map +1 -0
- package/dist/improve-bootstrap-history.js +43 -0
- package/dist/improve-bootstrap-history.js.map +1 -0
- 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-branch-stage.d.ts +10 -0
- package/dist/improve-branch-stage.d.ts.map +1 -0
- package/dist/improve-branch-stage.js +325 -0
- package/dist/improve-branch-stage.js.map +1 -0
- package/dist/improve-capture-redirect.d.ts +65 -0
- package/dist/improve-capture-redirect.d.ts.map +1 -0
- package/dist/improve-capture-redirect.js +85 -0
- package/dist/improve-capture-redirect.js.map +1 -0
- package/dist/improve-capture-words.d.ts +43 -0
- package/dist/improve-capture-words.d.ts.map +1 -0
- package/dist/improve-capture-words.js +25 -0
- package/dist/improve-capture-words.js.map +1 -0
- package/dist/improve-concept.d.ts +6 -7
- package/dist/improve-concept.d.ts.map +1 -1
- package/dist/improve-concept.js +12 -38
- package/dist/improve-concept.js.map +1 -1
- package/dist/improve-conversion-attempts.d.ts +21 -9
- 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 +20 -2
- package/dist/improve-conversion-stage.d.ts.map +1 -1
- package/dist/improve-conversion-stage.js +386 -178
- package/dist/improve-conversion-stage.js.map +1 -1
- package/dist/improve-convert-progress.d.ts +44 -0
- package/dist/improve-convert-progress.d.ts.map +1 -0
- package/dist/improve-convert-progress.js +47 -0
- package/dist/improve-convert-progress.js.map +1 -0
- package/dist/improve-convert-resilience.d.ts +96 -58
- package/dist/improve-convert-resilience.d.ts.map +1 -1
- package/dist/improve-convert-resilience.js +128 -72
- package/dist/improve-convert-resilience.js.map +1 -1
- package/dist/improve-core/concept-input.d.ts +80 -0
- package/dist/improve-core/concept-input.d.ts.map +1 -0
- package/dist/improve-core/concept-input.js +92 -0
- package/dist/improve-core/concept-input.js.map +1 -0
- package/dist/improve-core/improve-added-specs.d.ts +62 -0
- package/dist/improve-core/improve-added-specs.d.ts.map +1 -0
- package/dist/improve-core/improve-added-specs.js +160 -0
- package/dist/improve-core/improve-added-specs.js.map +1 -0
- package/dist/improve-core/improve-artifacts.d.ts +18 -0
- package/dist/improve-core/improve-artifacts.d.ts.map +1 -0
- package/dist/improve-core/improve-artifacts.js +4 -0
- package/dist/improve-core/improve-artifacts.js.map +1 -0
- package/dist/improve-core/improve-concept.d.ts +7 -0
- package/dist/improve-core/improve-concept.d.ts.map +1 -0
- package/dist/improve-core/improve-concept.js +185 -0
- package/dist/improve-core/improve-concept.js.map +1 -0
- package/dist/improve-core/improve-discovery.d.ts +84 -0
- package/dist/improve-core/improve-discovery.d.ts.map +1 -0
- package/dist/improve-core/improve-discovery.js +154 -0
- package/dist/improve-core/improve-discovery.js.map +1 -0
- package/dist/improve-core/improve-dom-anchor.d.ts.map +1 -0
- package/dist/{improve-dom-anchor.js → improve-core/improve-dom-anchor.js} +2 -0
- package/dist/improve-core/improve-dom-anchor.js.map +1 -0
- package/dist/improve-core/improve-dom-diff.d.ts +59 -0
- package/dist/improve-core/improve-dom-diff.d.ts.map +1 -0
- package/dist/improve-core/improve-dom-diff.js +151 -0
- package/dist/improve-core/improve-dom-diff.js.map +1 -0
- package/dist/improve-core/improve-dom-extract.d.ts.map +1 -0
- package/dist/{improve-dom-extract.js → improve-core/improve-dom-extract.js} +2 -0
- package/dist/improve-core/improve-dom-extract.js.map +1 -0
- package/dist/improve-core/improve-dom-gate.d.ts +49 -0
- package/dist/improve-core/improve-dom-gate.d.ts.map +1 -0
- package/dist/improve-core/improve-dom-gate.js +99 -0
- package/dist/improve-core/improve-dom-gate.js.map +1 -0
- package/dist/improve-core/improve-dom-neighbour.d.ts.map +1 -0
- package/dist/{improve-dom-neighbour.js → improve-core/improve-dom-neighbour.js} +2 -0
- package/dist/improve-core/improve-dom-neighbour.js.map +1 -0
- package/dist/improve-core/improve-dom-scale.d.ts.map +1 -0
- package/dist/{improve-dom-scale.js → improve-core/improve-dom-scale.js} +2 -0
- package/dist/improve-core/improve-dom-scale.js.map +1 -0
- package/dist/improve-core/improve-icon-svg.d.ts +29 -0
- package/dist/improve-core/improve-icon-svg.d.ts.map +1 -0
- package/dist/improve-core/improve-icon-svg.js +85 -0
- package/dist/improve-core/improve-icon-svg.js.map +1 -0
- package/dist/improve-core/improve-kit-asset-model.d.ts +177 -0
- package/dist/improve-core/improve-kit-asset-model.d.ts.map +1 -0
- package/dist/improve-core/improve-kit-asset-model.js +269 -0
- package/dist/improve-core/improve-kit-asset-model.js.map +1 -0
- package/dist/improve-core/improve-layerdoc-diff.d.ts.map +1 -0
- package/dist/{improve-layerdoc-diff.js → improve-core/improve-layerdoc-diff.js} +2 -0
- package/dist/improve-core/improve-layerdoc-diff.js.map +1 -0
- package/dist/{improve-layerdoc-types.d.ts → improve-core/improve-layerdoc-types.d.ts} +9 -0
- package/dist/improve-core/improve-layerdoc-types.d.ts.map +1 -0
- package/dist/improve-core/improve-layerdoc-types.js +4 -0
- package/dist/improve-core/improve-layerdoc-types.js.map +1 -0
- package/dist/improve-core/improve-page-words.d.ts +180 -0
- package/dist/improve-core/improve-page-words.d.ts.map +1 -0
- package/dist/improve-core/improve-page-words.js +303 -0
- package/dist/improve-core/improve-page-words.js.map +1 -0
- package/dist/{improve-plan-annotated-render.d.ts → improve-core/improve-plan-annotated-render.d.ts} +19 -2
- package/dist/improve-core/improve-plan-annotated-render.d.ts.map +1 -0
- package/dist/{improve-plan-annotated-render.js → improve-core/improve-plan-annotated-render.js} +77 -28
- package/dist/improve-core/improve-plan-annotated-render.js.map +1 -0
- package/dist/improve-core/improve-plan-annotator.d.ts +34 -0
- package/dist/improve-core/improve-plan-annotator.d.ts.map +1 -0
- package/dist/improve-core/improve-plan-annotator.js +52 -0
- package/dist/improve-core/improve-plan-annotator.js.map +1 -0
- package/dist/{improve-plan-render.d.ts → improve-core/improve-plan-render.d.ts} +2 -1
- package/dist/improve-core/improve-plan-render.d.ts.map +1 -0
- package/dist/{improve-plan-render.js → improve-core/improve-plan-render.js} +7 -1
- package/dist/improve-core/improve-plan-render.js.map +1 -0
- package/dist/improve-core/improve-plan-vector-keep.d.ts +29 -0
- package/dist/improve-core/improve-plan-vector-keep.d.ts.map +1 -0
- package/dist/improve-core/improve-plan-vector-keep.js +68 -0
- package/dist/improve-core/improve-plan-vector-keep.js.map +1 -0
- package/dist/{improve-raster-layers-section.d.ts → improve-core/improve-raster-layers-section.d.ts} +9 -1
- package/dist/improve-core/improve-raster-layers-section.d.ts.map +1 -0
- package/dist/{improve-raster-layers-section.js → improve-core/improve-raster-layers-section.js} +5 -2
- package/dist/improve-core/improve-raster-layers-section.js.map +1 -0
- package/dist/improve-core/improve-refusal.d.ts +6 -0
- package/dist/improve-core/improve-refusal.d.ts.map +1 -0
- package/dist/improve-core/improve-refusal.js +27 -0
- package/dist/improve-core/improve-refusal.js.map +1 -0
- package/dist/improve-core/improve-retain.d.ts +121 -0
- package/dist/improve-core/improve-retain.d.ts.map +1 -0
- package/dist/improve-core/improve-retain.js +115 -0
- package/dist/improve-core/improve-retain.js.map +1 -0
- package/dist/improve-core/improve-site-plan.d.ts +75 -0
- package/dist/improve-core/improve-site-plan.d.ts.map +1 -0
- package/dist/improve-core/improve-site-plan.js +135 -0
- package/dist/improve-core/improve-site-plan.js.map +1 -0
- package/dist/improve-core/improve-site-shell.d.ts +56 -0
- package/dist/improve-core/improve-site-shell.d.ts.map +1 -0
- package/dist/improve-core/improve-site-shell.js +152 -0
- package/dist/improve-core/improve-site-shell.js.map +1 -0
- package/dist/improve-core/improve-site-tokens.d.ts +44 -0
- package/dist/improve-core/improve-site-tokens.d.ts.map +1 -0
- package/dist/improve-core/improve-site-tokens.js +87 -0
- package/dist/improve-core/improve-site-tokens.js.map +1 -0
- package/dist/improve-core/improve-source-hints.d.ts +25 -0
- package/dist/improve-core/improve-source-hints.d.ts.map +1 -0
- package/dist/improve-core/improve-source-hints.js +17 -0
- package/dist/improve-core/improve-source-hints.js.map +1 -0
- package/dist/{improve-token-patch.d.ts → improve-core/improve-token-patch.d.ts} +2 -0
- package/dist/improve-core/improve-token-patch.d.ts.map +1 -0
- package/dist/{improve-token-patch.js → improve-core/improve-token-patch.js} +25 -5
- package/dist/improve-core/improve-token-patch.js.map +1 -0
- package/dist/improve-core/index.d.ts +47 -0
- package/dist/improve-core/index.d.ts.map +1 -0
- package/dist/improve-core/index.js +49 -0
- package/dist/improve-core/index.js.map +1 -0
- package/dist/improve-delivery-stages.d.ts +6 -0
- package/dist/improve-delivery-stages.d.ts.map +1 -1
- package/dist/improve-delivery-stages.js +91 -6
- package/dist/improve-delivery-stages.js.map +1 -1
- package/dist/improve-dom-diff.d.ts +8 -24
- package/dist/improve-dom-diff.d.ts.map +1 -1
- package/dist/improve-dom-diff.js +23 -123
- package/dist/improve-dom-diff.js.map +1 -1
- package/dist/improve-dom-gate.d.ts +1 -18
- package/dist/improve-dom-gate.d.ts.map +1 -1
- package/dist/improve-dom-gate.js +1 -46
- package/dist/improve-dom-gate.js.map +1 -1
- package/dist/improve-generation-stages.d.ts +0 -2
- package/dist/improve-generation-stages.d.ts.map +1 -1
- package/dist/improve-generation-stages.js +191 -15
- package/dist/improve-generation-stages.js.map +1 -1
- package/dist/improve-kit-assets.d.ts +8 -116
- package/dist/improve-kit-assets.d.ts.map +1 -1
- package/dist/improve-kit-assets.js +9 -229
- package/dist/improve-kit-assets.js.map +1 -1
- 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 +4 -0
- package/dist/improve-kit-readme.d.ts.map +1 -1
- package/dist/improve-kit-readme.js +155 -24
- package/dist/improve-kit-readme.js.map +1 -1
- package/dist/improve-kit-stall.d.ts +51 -3
- package/dist/improve-kit-stall.d.ts.map +1 -1
- package/dist/improve-kit-stall.js +205 -21
- 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 +82 -7
- package/dist/improve-kit-status.js.map +1 -1
- package/dist/improve-options.d.ts +14 -0
- package/dist/improve-options.d.ts.map +1 -1
- package/dist/improve-options.js +95 -12
- package/dist/improve-options.js.map +1 -1
- package/dist/improve-passthrough-flags.d.ts +8 -0
- package/dist/improve-passthrough-flags.d.ts.map +1 -0
- package/dist/improve-passthrough-flags.js +11 -0
- package/dist/improve-passthrough-flags.js.map +1 -0
- package/dist/improve-plan-annotator.d.ts +13 -2
- package/dist/improve-plan-annotator.d.ts.map +1 -1
- package/dist/improve-plan-annotator.js +35 -37
- package/dist/improve-plan-annotator.js.map +1 -1
- package/dist/improve-pricing-plan.d.ts +3 -0
- package/dist/improve-pricing-plan.d.ts.map +1 -1
- package/dist/improve-pricing-plan.js +33 -5
- package/dist/improve-pricing-plan.js.map +1 -1
- package/dist/improve-recheck.d.ts +9 -0
- package/dist/improve-recheck.d.ts.map +1 -0
- package/dist/improve-recheck.js +200 -0
- package/dist/improve-recheck.js.map +1 -0
- package/dist/improve-reset.d.ts.map +1 -1
- package/dist/improve-reset.js +11 -0
- package/dist/improve-reset.js.map +1 -1
- package/dist/improve-run-summary.d.ts +6 -0
- package/dist/improve-run-summary.d.ts.map +1 -1
- package/dist/improve-run-summary.js +77 -7
- package/dist/improve-run-summary.js.map +1 -1
- package/dist/improve-site-plan.d.ts +57 -0
- package/dist/improve-site-plan.d.ts.map +1 -0
- package/dist/improve-site-plan.js +79 -0
- package/dist/improve-site-plan.js.map +1 -0
- package/dist/improve-site-shell.d.ts +11 -0
- package/dist/improve-site-shell.d.ts.map +1 -0
- package/dist/improve-site-shell.js +24 -0
- package/dist/improve-site-shell.js.map +1 -0
- package/dist/improve-site-stage.d.ts +10 -0
- package/dist/improve-site-stage.d.ts.map +1 -0
- package/dist/improve-site-stage.js +84 -0
- package/dist/improve-site-stage.js.map +1 -0
- package/dist/improve-site-tokens.d.ts +9 -0
- package/dist/improve-site-tokens.d.ts.map +1 -0
- package/dist/improve-site-tokens.js +17 -0
- package/dist/improve-site-tokens.js.map +1 -0
- package/dist/improve-source-hints.d.ts +3 -12
- package/dist/improve-source-hints.d.ts.map +1 -1
- package/dist/improve-source-hints.js +4 -5
- package/dist/improve-source-hints.js.map +1 -1
- package/dist/improve-spend-ledger.d.ts +69 -0
- package/dist/improve-spend-ledger.d.ts.map +1 -0
- package/dist/improve-spend-ledger.js +118 -0
- package/dist/improve-spend-ledger.js.map +1 -0
- package/dist/improve-stage-runners.d.ts +5 -2
- package/dist/improve-stage-runners.d.ts.map +1 -1
- package/dist/improve-stage-runners.js +5 -2
- package/dist/improve-stage-runners.js.map +1 -1
- package/dist/improve-stage-shared.d.ts +49 -2
- 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-stop-handler.d.ts +15 -0
- package/dist/improve-stop-handler.d.ts.map +1 -1
- package/dist/improve-stop-handler.js +74 -3
- package/dist/improve-stop-handler.js.map +1 -1
- package/dist/improve-terminal-event.d.ts.map +1 -1
- package/dist/improve-terminal-event.js +13 -4
- package/dist/improve-terminal-event.js.map +1 -1
- package/dist/improve-workspace.d.ts +282 -9
- package/dist/improve-workspace.d.ts.map +1 -1
- package/dist/improve-workspace.js +250 -78
- 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 +202 -0
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/mcp-convert.js +1 -1
- package/dist/mcp-convert.js.map +1 -1
- package/dist/redesign-capture.d.ts +146 -15
- package/dist/redesign-capture.d.ts.map +1 -1
- package/dist/redesign-capture.js +182 -65
- package/dist/redesign-capture.js.map +1 -1
- package/dist/redesign-workspace.d.ts +13 -0
- package/dist/redesign-workspace.d.ts.map +1 -1
- package/dist/redesign-workspace.js +14 -0
- package/dist/redesign-workspace.js.map +1 -1
- package/dist/responsive-alternative-materializer.d.ts +24 -0
- package/dist/responsive-alternative-materializer.d.ts.map +1 -0
- package/dist/responsive-alternative-materializer.js +93 -0
- package/dist/responsive-alternative-materializer.js.map +1 -0
- package/dist/result-integrity.d.ts +38 -0
- package/dist/result-integrity.d.ts.map +1 -0
- package/dist/result-integrity.js +46 -0
- package/dist/result-integrity.js.map +1 -0
- package/dist/review-edit-source.d.ts.map +1 -1
- package/dist/review-edit-source.js +6 -2
- package/dist/review-edit-source.js.map +1 -1
- package/dist/review-edit.js +2 -2
- package/dist/review-edit.js.map +1 -1
- package/dist/review-prototype-gap.js +1 -1
- package/dist/review-prototype-gap.js.map +1 -1
- package/dist/spend-run-filter.d.ts +21 -0
- package/dist/spend-run-filter.d.ts.map +1 -0
- package/dist/spend-run-filter.js +65 -0
- package/dist/spend-run-filter.js.map +1 -0
- package/dist/spend-scoped-report-lines.d.ts +4 -0
- package/dist/spend-scoped-report-lines.d.ts.map +1 -0
- package/dist/spend-scoped-report-lines.js +46 -0
- package/dist/spend-scoped-report-lines.js.map +1 -0
- package/dist/spend-scoped-report.d.ts +28 -0
- package/dist/spend-scoped-report.d.ts.map +1 -0
- package/dist/spend-scoped-report.js +45 -0
- package/dist/spend-scoped-report.js.map +1 -0
- package/open-design.json +2 -2
- package/package.json +5 -5
- package/skills/12ui-design/SKILL.md +14 -4
- package/skills/12ui-design/improve.md +67 -5
- package/skills/12ui-design/inspire.md +1 -1
- package/dist/improve-dom-anchor.d.ts.map +0 -1
- package/dist/improve-dom-anchor.js.map +0 -1
- package/dist/improve-dom-extract.d.ts.map +0 -1
- package/dist/improve-dom-extract.js.map +0 -1
- package/dist/improve-dom-neighbour.d.ts.map +0 -1
- package/dist/improve-dom-neighbour.js.map +0 -1
- package/dist/improve-dom-scale.d.ts.map +0 -1
- package/dist/improve-dom-scale.js.map +0 -1
- package/dist/improve-layerdoc-diff.d.ts.map +0 -1
- package/dist/improve-layerdoc-diff.js.map +0 -1
- package/dist/improve-layerdoc-types.d.ts.map +0 -1
- package/dist/improve-layerdoc-types.js +0 -2
- package/dist/improve-layerdoc-types.js.map +0 -1
- package/dist/improve-plan-annotated-render.d.ts.map +0 -1
- package/dist/improve-plan-annotated-render.js.map +0 -1
- package/dist/improve-plan-render.d.ts.map +0 -1
- package/dist/improve-plan-render.js.map +0 -1
- package/dist/improve-raster-layers-section.d.ts.map +0 -1
- package/dist/improve-raster-layers-section.js.map +0 -1
- package/dist/improve-token-patch.d.ts.map +0 -1
- package/dist/improve-token-patch.js.map +0 -1
- /package/dist/{improve-dom-anchor.d.ts → improve-core/improve-dom-anchor.d.ts} +0 -0
- /package/dist/{improve-dom-extract.d.ts → improve-core/improve-dom-extract.d.ts} +0 -0
- /package/dist/{improve-dom-neighbour.d.ts → improve-core/improve-dom-neighbour.d.ts} +0 -0
- /package/dist/{improve-dom-scale.d.ts → improve-core/improve-dom-scale.d.ts} +0 -0
- /package/dist/{improve-layerdoc-diff.d.ts → improve-core/improve-layerdoc-diff.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-stage-runners.js","sourceRoot":"","sources":["../src/improve-stage-runners.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,mBAAmB,
|
|
1
|
+
{"version":3,"file":"improve-stage-runners.js","sourceRoot":"","sources":["../src/improve-stage-runners.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { runConversionCommand } from './cli-convert-command.js';
|
|
2
2
|
import { runDraftCommand } from './cli-draft-command.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { TwelveUiBranchClient } from './branch-client.js';
|
|
4
|
+
import { readConversionConfig } from './config.js';
|
|
5
|
+
import { captureImprovePage, captureImproveSite, discoverRedesignPageUrls } from './redesign-capture.js';
|
|
4
6
|
import type { ImproveStopTarget } from './improve-stop-handler.js';
|
|
5
7
|
import type { RunJournalNotes } from './run-journal.js';
|
|
6
|
-
import { type ImproveRecord, type ImproveStage } from './improve-workspace.js';
|
|
8
|
+
import { type ImproveRecord, type ImproveStage, type ImproveStageOutcome } from './improve-workspace.js';
|
|
7
9
|
export type ImproveCommandDependencies = {
|
|
8
10
|
capture?: typeof captureImprovePage;
|
|
11
|
+
captureSite?: typeof captureImproveSite;
|
|
12
|
+
discoverPages?: typeof discoverRedesignPageUrls;
|
|
9
13
|
runDraft?: typeof runDraftCommand;
|
|
10
14
|
runConvert?: typeof runConversionCommand;
|
|
15
|
+
branchClient?: Pick<TwelveUiBranchClient, 'startImproveRun' | 'dispatchScreen' | 'getRun' | 'downloadScreen'>;
|
|
16
|
+
readConfig?: typeof readConversionConfig;
|
|
17
|
+
createBranchClient?: (config: ReturnType<typeof readConversionConfig>) => TwelveUiBranchClient;
|
|
18
|
+
/** Test seam for deadline accounting; production uses the wall clock. */
|
|
19
|
+
now?: () => number;
|
|
11
20
|
workspaceRoot?: string;
|
|
12
21
|
write?: (line: string) => void;
|
|
13
22
|
warn?: (line: string) => void;
|
|
@@ -20,6 +29,15 @@ export type ImproveCommandDependencies = {
|
|
|
20
29
|
exit?: (code: number) => void;
|
|
21
30
|
};
|
|
22
31
|
export declare const improveSha256: (bytes: Uint8Array) => string;
|
|
32
|
+
/**
|
|
33
|
+
* The word for what this stage did, read off the record it just wrote (F28).
|
|
34
|
+
*
|
|
35
|
+
* The facts were always there — `convert.layout`, `convert.responsiveWarning`,
|
|
36
|
+
* `plan.gate` — and the README already printed them. Only `improve.json` said
|
|
37
|
+
* `settled` over a fixed-layout fallback and a gate-blocked plan, which is the
|
|
38
|
+
* one place a supervisor or a campaign parser looks.
|
|
39
|
+
*/
|
|
40
|
+
export declare const improveStageOutcome: (record: ImproveRecord, stage: ImproveStage) => ImproveStageOutcome;
|
|
23
41
|
export declare const noteImproveStage: (args: {
|
|
24
42
|
record: ImproveRecord;
|
|
25
43
|
stage: ImproveStage;
|
|
@@ -28,5 +46,34 @@ export declare const noteImproveStage: (args: {
|
|
|
28
46
|
outcome?: "settled" | "skipped";
|
|
29
47
|
write: boolean;
|
|
30
48
|
}) => Promise<ImproveRecord>;
|
|
49
|
+
/**
|
|
50
|
+
* The paid call this stage dispatched did not come back in this run.
|
|
51
|
+
*
|
|
52
|
+
* It rewrites the dispatched entry rather than adding one, so the price stays
|
|
53
|
+
* the price of the call that is still running and a resume still re-attaches
|
|
54
|
+
* to it. A stage with no entry bought nothing; it gets an unpriced `stalled`
|
|
55
|
+
* entry only when the run itself stalled, so `stages.plan.outcome` can say so
|
|
56
|
+
* instead of staying silent.
|
|
57
|
+
*/
|
|
58
|
+
export declare const markImproveStageStalled: (args: {
|
|
59
|
+
record: ImproveRecord;
|
|
60
|
+
stage: ImproveStage;
|
|
61
|
+
stalled: boolean;
|
|
62
|
+
}) => ImproveRecord;
|
|
63
|
+
/**
|
|
64
|
+
* The stage's paid work is in flight, priced, and written down before it can
|
|
65
|
+
* fail (F19).
|
|
66
|
+
*
|
|
67
|
+
* `improve.json` is the kit's spend ledger, and it only ever held stages that
|
|
68
|
+
* SETTLED. The pipedrive kit dispatched two parent conversions and settled
|
|
69
|
+
* neither, so its recorded ceiling was the draft's $0.242 and the lane had to
|
|
70
|
+
* publish a planning proxy in place of a receipt. A stage already recorded is
|
|
71
|
+
* left alone: a resume re-attaches to the conversion this entry paid for.
|
|
72
|
+
*/
|
|
73
|
+
export declare const noteImproveStageDispatched: (args: {
|
|
74
|
+
record: ImproveRecord;
|
|
75
|
+
stage: ImproveStage;
|
|
76
|
+
priceCeilingUsd: number;
|
|
77
|
+
}) => ImproveRecord;
|
|
31
78
|
export declare const markImproveStageSkipped: (record: ImproveRecord, stage: ImproveStage) => Promise<ImproveRecord>;
|
|
32
79
|
//# sourceMappingURL=improve-stage-shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-stage-shared.d.ts","sourceRoot":"","sources":["../src/improve-stage-shared.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"improve-stage-shared.d.ts","sourceRoot":"","sources":["../src/improve-stage-shared.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACpC,WAAW,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACxC,aAAa,CAAC,EAAE,OAAO,wBAAwB,CAAC;IAChD,QAAQ,CAAC,EAAE,OAAO,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACzC,YAAY,CAAC,EAAE,IAAI,CAAC,oBAAoB,EACtC,iBAAiB,GAAG,gBAAgB,GAAG,QAAQ,GAAG,gBAAgB,CAAC,CAAC;IACtE,UAAU,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACzC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,KAAK,oBAAoB,CAAC;IAC/F,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,2EAA2E;IAC3E,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,KAAG,MAA0D,CAAC;AAE7G;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,aAAa,EACrB,OAAO,YAAY,KAClB,mBAIF,CAAC;AAOF,eAAO,MAAM,gBAAgB,GAAU,MAAM;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,OAAO,CAAC;CAChB,KAAG,OAAO,CAAC,aAAa,CA+BxB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM;IAC5C,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,KAAG,aAcH,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,GAAI,MAAM;IAC/C,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB,KAAG,aAaH,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,aAAa,EACrB,OAAO,YAAY,KAClB,OAAO,CAAC,aAAa,CAOtB,CAAC"}
|
|
@@ -2,20 +2,49 @@ import { createHash } from 'node:crypto';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { writeImproveRecord, } from './improve-workspace.js';
|
|
4
4
|
export const improveSha256 = (bytes) => createHash('sha256').update(bytes).digest('hex');
|
|
5
|
+
/**
|
|
6
|
+
* The word for what this stage did, read off the record it just wrote (F28).
|
|
7
|
+
*
|
|
8
|
+
* The facts were always there — `convert.layout`, `convert.responsiveWarning`,
|
|
9
|
+
* `plan.gate` — and the README already printed them. Only `improve.json` said
|
|
10
|
+
* `settled` over a fixed-layout fallback and a gate-blocked plan, which is the
|
|
11
|
+
* one place a supervisor or a campaign parser looks.
|
|
12
|
+
*/
|
|
13
|
+
export const improveStageOutcome = (record, stage) => {
|
|
14
|
+
if (stage === 'convert' && record.convert?.layout === 'fixed')
|
|
15
|
+
return 'fallback';
|
|
16
|
+
if (stage === 'plan' && record.plan?.gate === 'blocked')
|
|
17
|
+
return 'blocked';
|
|
18
|
+
return 'settled';
|
|
19
|
+
};
|
|
20
|
+
/** A priced entry whose paid call has not come back yet. */
|
|
21
|
+
const isPendingOutcome = (outcome) => (outcome === 'dispatched' || outcome === 'stalled');
|
|
5
22
|
export const noteImproveStage = async (args) => {
|
|
6
23
|
const previous = args.record.stages[args.stage];
|
|
24
|
+
// A stage recorded at DISPATCH is not a replay of anything: the paid call it
|
|
25
|
+
// priced is the one settling now, so settling completes that entry rather
|
|
26
|
+
// than counting a second run of the stage. A stage that STALLED holds the
|
|
27
|
+
// same entry — the resume is that call finishing, not a second run of it.
|
|
28
|
+
const pending = previous && isPendingOutcome(previous.outcome) ? previous : undefined;
|
|
29
|
+
const outcome = args.outcome ?? improveStageOutcome(args.record, args.stage);
|
|
7
30
|
const record = {
|
|
8
31
|
...args.record,
|
|
9
32
|
stages: {
|
|
10
33
|
...args.record.stages,
|
|
11
|
-
[args.stage]: previous ? {
|
|
34
|
+
[args.stage]: previous && !pending ? {
|
|
12
35
|
...previous,
|
|
13
36
|
replayCount: previous.replayCount + (args.replayed ? 1 : 0),
|
|
37
|
+
// A replay re-reads the outcome too, so a kit written before this
|
|
38
|
+
// field could tell the truth stops calling a fallback settled the
|
|
39
|
+
// first time it is resumed.
|
|
40
|
+
outcome,
|
|
14
41
|
} : {
|
|
42
|
+
...(pending?.dispatchedAt ? { dispatchedAt: pending.dispatchedAt } : {}),
|
|
15
43
|
settledAt: new Date().toISOString(),
|
|
16
44
|
replayCount: 0,
|
|
17
|
-
|
|
18
|
-
|
|
45
|
+
// The dispatch priced this call; a settlement never prices it lower.
|
|
46
|
+
priceCeilingUsd: Math.max(pending?.priceCeilingUsd ?? 0, args.priceCeilingUsd),
|
|
47
|
+
outcome,
|
|
19
48
|
},
|
|
20
49
|
},
|
|
21
50
|
};
|
|
@@ -23,6 +52,54 @@ export const noteImproveStage = async (args) => {
|
|
|
23
52
|
await writeImproveRecord(path.join(args.record.runDir, 'improve.json'), record);
|
|
24
53
|
return record;
|
|
25
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* The paid call this stage dispatched did not come back in this run.
|
|
57
|
+
*
|
|
58
|
+
* It rewrites the dispatched entry rather than adding one, so the price stays
|
|
59
|
+
* the price of the call that is still running and a resume still re-attaches
|
|
60
|
+
* to it. A stage with no entry bought nothing; it gets an unpriced `stalled`
|
|
61
|
+
* entry only when the run itself stalled, so `stages.plan.outcome` can say so
|
|
62
|
+
* instead of staying silent.
|
|
63
|
+
*/
|
|
64
|
+
export const markImproveStageStalled = (args) => {
|
|
65
|
+
const previous = args.record.stages[args.stage];
|
|
66
|
+
if (previous && previous.outcome !== 'dispatched')
|
|
67
|
+
return args.record;
|
|
68
|
+
if (!previous && !args.stalled)
|
|
69
|
+
return args.record;
|
|
70
|
+
return {
|
|
71
|
+
...args.record,
|
|
72
|
+
stages: {
|
|
73
|
+
...args.record.stages,
|
|
74
|
+
[args.stage]: {
|
|
75
|
+
...(previous ?? { replayCount: 0, priceCeilingUsd: 0 }),
|
|
76
|
+
outcome: 'stalled',
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* The stage's paid work is in flight, priced, and written down before it can
|
|
83
|
+
* fail (F19).
|
|
84
|
+
*
|
|
85
|
+
* `improve.json` is the kit's spend ledger, and it only ever held stages that
|
|
86
|
+
* SETTLED. The pipedrive kit dispatched two parent conversions and settled
|
|
87
|
+
* neither, so its recorded ceiling was the draft's $0.242 and the lane had to
|
|
88
|
+
* publish a planning proxy in place of a receipt. A stage already recorded is
|
|
89
|
+
* left alone: a resume re-attaches to the conversion this entry paid for.
|
|
90
|
+
*/
|
|
91
|
+
export const noteImproveStageDispatched = (args) => (args.record.stages[args.stage] ? args.record : {
|
|
92
|
+
...args.record,
|
|
93
|
+
stages: {
|
|
94
|
+
...args.record.stages,
|
|
95
|
+
[args.stage]: {
|
|
96
|
+
dispatchedAt: new Date().toISOString(),
|
|
97
|
+
replayCount: 0,
|
|
98
|
+
priceCeilingUsd: args.priceCeilingUsd,
|
|
99
|
+
outcome: 'dispatched',
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
});
|
|
26
103
|
export const markImproveStageSkipped = async (record, stage) => noteImproveStage({
|
|
27
104
|
record,
|
|
28
105
|
stage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-stage-shared.js","sourceRoot":"","sources":["../src/improve-stage-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"improve-stage-shared.js","sourceRoot":"","sources":["../src/improve-stage-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,23 @@ import { type ImproveRecord, type ImproveStage } from './improve-workspace.js';
|
|
|
23
23
|
* BEFORE it dispatches (`improve-conversion-attempts.ts`) — so by the time a
|
|
24
24
|
* signal arrives the fact is already durable, and a record write racing a
|
|
25
25
|
* second signal after the journal end line buys nothing.
|
|
26
|
+
*
|
|
27
|
+
* WHAT IT DOES OWE: draining. Not every durable fact is written before its
|
|
28
|
+
* dispatch — the hosted conversion id only exists once the run reports one, and
|
|
29
|
+
* it arrives on a callback the stage cannot await, so the stage chains the
|
|
30
|
+
* write and drains the chain when it ends. A signal ends the stage the other
|
|
31
|
+
* way, through `exit`, and a write still in flight at that moment is simply
|
|
32
|
+
* lost. See `drainImproveDurableWrites` below.
|
|
26
33
|
*/
|
|
27
34
|
export type { ImproveStopSignal };
|
|
35
|
+
/** Chain a durable write the stop path must wait for. Never rejects. */
|
|
36
|
+
export declare const trackImproveDurableWrite: (write: Promise<unknown>) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Wait for every tracked write to SETTLE. Failures belong to whoever chained
|
|
39
|
+
* the write — it reports them in its own words — and must not stop the kit.
|
|
40
|
+
* The loop catches a write chained while an earlier one was draining.
|
|
41
|
+
*/
|
|
42
|
+
export declare const drainImproveDurableWrites: () => Promise<void>;
|
|
28
43
|
export type ImproveStopArtifacts = {
|
|
29
44
|
/** Absent when nothing was in flight and every stage in range had settled. */
|
|
30
45
|
stage?: ImproveStage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-stop-handler.d.ts","sourceRoot":"","sources":["../src/improve-stop-handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAEhC
|
|
1
|
+
{"version":3,"file":"improve-stop-handler.d.ts","sourceRoot":"","sources":["../src/improve-stop-handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAoBlC,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAG,IAElE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAAa,OAAO,CAAC,IAAI,CAM9D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAKF,eAAO,MAAM,yBAAyB,GAAU,MAAM;IACpD,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,sFAAsF;IACtF,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,KAAG,OAAO,CAAC,oBAAoB,CAgF/B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC;IACnE,GAAG,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC;CACnE,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,GAAI,MAAM;IAC/C,SAAS,EAAE,MAAM,aAAa,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACnD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,KAAG,CAAC,MAAM,IAAI,CAyDd,CAAC"}
|
|
@@ -4,6 +4,39 @@ import { writeImproveStallReport } from './improve-kit-stall.js';
|
|
|
4
4
|
import { buildImproveRunSummary } from './improve-run-summary.js';
|
|
5
5
|
import { improveUnsettledStage, IMPROVE_SIGNALLED_AFTER_COMPLETION, noteImproveTerminalEvent, } from './improve-terminal-event.js';
|
|
6
6
|
import { improvePaths, readImproveRecord, } from './improve-workspace.js';
|
|
7
|
+
/**
|
|
8
|
+
* The durable writes the signal path owes before the process ends.
|
|
9
|
+
*
|
|
10
|
+
* A stage that learns a fact from a callback it cannot await records it by
|
|
11
|
+
* chaining a write here rather than dropping it. The ordinary path drains the
|
|
12
|
+
* chain when the stage finishes; this path drains it because `exit` is the end
|
|
13
|
+
* of the process, and anything unlanded at that point never lands at all.
|
|
14
|
+
*
|
|
15
|
+
* THE LEAK THIS CLOSES. The convert stage stamps the hosted conversion id onto
|
|
16
|
+
* its ledger entry the moment the run reports one — the ONE writer of that
|
|
17
|
+
* field. Killed mid-conversion, `improve.json` carried a key and a price and no
|
|
18
|
+
* id, so the kit priced a conversion that was still running and still billing
|
|
19
|
+
* and could not name it; `plan/STALL.md` had to name it from the journal
|
|
20
|
+
* instead (`improve-kit-stall.ts`). The chain is process-wide because the
|
|
21
|
+
* process is what a signal ends — one `improve` invocation, one drain.
|
|
22
|
+
*/
|
|
23
|
+
let pendingDurableWrites = Promise.resolve();
|
|
24
|
+
/** Chain a durable write the stop path must wait for. Never rejects. */
|
|
25
|
+
export const trackImproveDurableWrite = (write) => {
|
|
26
|
+
pendingDurableWrites = Promise.all([pendingDurableWrites, write]).catch(() => undefined);
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Wait for every tracked write to SETTLE. Failures belong to whoever chained
|
|
30
|
+
* the write — it reports them in its own words — and must not stop the kit.
|
|
31
|
+
* The loop catches a write chained while an earlier one was draining.
|
|
32
|
+
*/
|
|
33
|
+
export const drainImproveDurableWrites = async () => {
|
|
34
|
+
let drained;
|
|
35
|
+
do {
|
|
36
|
+
drained = pendingDurableWrites;
|
|
37
|
+
await drained.catch(() => undefined);
|
|
38
|
+
} while (drained !== pendingDurableWrites);
|
|
39
|
+
};
|
|
7
40
|
/** Exit codes for a signalled stop are 128 plus the signal number. */
|
|
8
41
|
const EXIT_CODE = { SIGINT: 130, SIGTERM: 143 };
|
|
9
42
|
export const writeImproveStopArtifacts = async (args) => {
|
|
@@ -52,12 +85,29 @@ export const writeImproveStopArtifacts = async (args) => {
|
|
|
52
85
|
...(args.live ? { inFlight: true } : {}),
|
|
53
86
|
...(args.journal ? { journal: args.journal } : {}),
|
|
54
87
|
});
|
|
88
|
+
// Everything the live stage has in flight lands FIRST, so the record read
|
|
89
|
+
// below is the whole truth and not a snapshot of a half-written ledger. Here
|
|
90
|
+
// rather than before the end line, because the end line is the one write a
|
|
91
|
+
// second signal must never be able to cut short.
|
|
92
|
+
await drainImproveDurableWrites();
|
|
55
93
|
// The kit is written from the DURABLE record, the way the stall path in
|
|
56
94
|
// `cli-improve-command.ts` already does: a stage in flight has written down
|
|
57
95
|
// what it abandoned and what it cleared, and the in-memory copy predates
|
|
58
96
|
// that. It is read only AFTER the end line, so the one-read-before-the-end
|
|
59
97
|
// rule this module's header states still holds.
|
|
60
|
-
|
|
98
|
+
//
|
|
99
|
+
// The fallback is a real case, not a formality: `writeImproveRecord`
|
|
100
|
+
// truncates in place, so a read landing mid-write parses nothing and answers
|
|
101
|
+
// `undefined`. The drain above is what stops that read from ever landing
|
|
102
|
+
// mid-write — without it this fell back to a record the CLI had not
|
|
103
|
+
// reassigned since before the stage began, which named no attempt at all.
|
|
104
|
+
// `improve.json` is a best-effort snapshot, not a precondition for a clean
|
|
105
|
+
// signal exit. A SIGTERM can land while the kit is being created, and a
|
|
106
|
+
// supervisor can remove the kit after the journal was opened. The workspace
|
|
107
|
+
// reader currently absorbs filesystem and parse failures itself, but keep the
|
|
108
|
+
// signal boundary defensive as well: this path still owes the terminal
|
|
109
|
+
// journal line and a STALL.md wherever the directory remains writable.
|
|
110
|
+
const durable = await readImproveRecord(paths.record).catch(() => undefined) ?? args.record;
|
|
61
111
|
const stall = await writeImproveStallReport({
|
|
62
112
|
record: durable,
|
|
63
113
|
stage,
|
|
@@ -113,9 +163,30 @@ export const registerImproveStopHandler = (args) => {
|
|
|
113
163
|
catch (error) {
|
|
114
164
|
// Say so rather than exiting quietly: an unwritten kit that also
|
|
115
165
|
// said nothing is the failure this whole path exists to end.
|
|
116
|
-
|
|
166
|
+
// `write` is usually stdout, but it can itself be gone during a
|
|
167
|
+
// supervised stop. It must never prevent the documented signal exit.
|
|
168
|
+
try {
|
|
169
|
+
args.write(`Could not write the stopped kit: ${error instanceof Error ? error.message : String(error)}`);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// There is nowhere left to report this; still exit with the signal
|
|
173
|
+
// code below.
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
// Keep this in `finally`: a missing or unreadable improve.json (or a
|
|
178
|
+
// later kit-write failure) records what it can and then exits 143.
|
|
179
|
+
// The production exit does not return; catching makes a test or
|
|
180
|
+
// supervisor-provided exit hook unable to create an unhandled signal
|
|
181
|
+
// rejection after that exit was attempted.
|
|
182
|
+
try {
|
|
183
|
+
exit(EXIT_CODE[signal]);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
// Nothing follows a failed injected exit hook. The real process
|
|
187
|
+
// exit above was still invoked with the documented code.
|
|
188
|
+
}
|
|
117
189
|
}
|
|
118
|
-
exit(EXIT_CODE[signal]);
|
|
119
190
|
})();
|
|
120
191
|
};
|
|
121
192
|
listeners.set(signal, listener);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-stop-handler.js","sourceRoot":"","sources":["../src/improve-stop-handler.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,qBAAqB,EACrB,kCAAkC,EAClC,wBAAwB,GAGzB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,YAAY,EACZ,iBAAiB,GAGlB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"improve-stop-handler.js","sourceRoot":"","sources":["../src/improve-stop-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-terminal-event.d.ts","sourceRoot":"","sources":["../src/improve-terminal-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"improve-terminal-event.d.ts","sourceRoot":"","sources":["../src/improve-terminal-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,eAAO,MAAM,yBAAyB,GAAI,MAAM;IAC9C,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B,KAAG,MAEgC,CAAC;AAErC;;;;;;;;GAQG;AACH,eAAO,MAAM,kCAAkC,uCAAuC,CAAC;AAEvF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,YAAY,GAAG,SAAS,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,aAAa,EACrB,cAAc,YAAY,KACzB,YAAY,GAAG,SAajB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAU,MAAM;IACnD,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,sEAAsE;IACtE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,KAAG,OAAO,CAAC,MAAM,CA0CjB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { collectImproveStallFacts } from './improve-kit-stall.js';
|
|
2
2
|
import { hostedRunAgeSeconds } from './run-journal-unfinished.js';
|
|
3
3
|
import { readRunJournal } from './run-journal.js';
|
|
4
|
-
import {
|
|
4
|
+
import { improveStagesForScope, } from './improve-workspace.js';
|
|
5
5
|
export const improveTerminalErrorClass = (args) => (args.kind === 'stopped'
|
|
6
6
|
? `improve_stopped_${(args.signal ?? 'SIGTERM').toLowerCase()}`
|
|
7
7
|
: `improve_stalled_${args.stage}`);
|
|
@@ -25,9 +25,18 @@ export const IMPROVE_SIGNALLED_AFTER_COMPLETION = 'improve_signalled_after_compl
|
|
|
25
25
|
* that had settled.
|
|
26
26
|
*/
|
|
27
27
|
export const improveUnsettledStage = (record, requestedTo) => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
// Only the stages this kit's scope runs: a page kit has no branch and no
|
|
29
|
+
// site stage, so counting them unsettled gave a finished run a STALL.md.
|
|
30
|
+
const stages = improveStagesForScope(record.scope);
|
|
31
|
+
const last = requestedTo ?? stages[stages.length - 1];
|
|
32
|
+
const bound = stages.indexOf(last);
|
|
33
|
+
// A stage whose entry was written at DISPATCH has not settled either: the
|
|
34
|
+
// entry exists to price a paid call that is still out (F19), and reading it
|
|
35
|
+
// as a settlement would name the NEXT stage as the one a stalled run died in.
|
|
36
|
+
return (bound < 0 ? stages : stages.slice(0, bound + 1)).find((stage) => {
|
|
37
|
+
const entry = record.stages[stage];
|
|
38
|
+
return !entry || entry.outcome === 'dispatched' || entry.outcome === 'stalled';
|
|
39
|
+
});
|
|
31
40
|
};
|
|
32
41
|
/**
|
|
33
42
|
* Close this run's journal record with the reason, the stage, the hosted run
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-terminal-event.js","sourceRoot":"","sources":["../src/improve-terminal-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAyB,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAwB,MAAM,kBAAkB,CAAC;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"improve-terminal-event.js","sourceRoot":"","sources":["../src/improve-terminal-event.ts"],"names":[],"mappings":"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"}
|