@12ui/design 0.2.57 → 0.2.59
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/atomic-file-replace.d.ts +21 -0
- package/dist/atomic-file-replace.d.ts.map +1 -0
- package/dist/atomic-file-replace.js +48 -0
- package/dist/atomic-file-replace.js.map +1 -0
- package/dist/branch-client.d.ts +84 -2
- package/dist/branch-client.d.ts.map +1 -1
- package/dist/branch-client.js +30 -0
- package/dist/branch-client.js.map +1 -1
- package/dist/cli-arguments.d.ts.map +1 -1
- package/dist/cli-arguments.js +2 -1
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli-capabilities.d.ts +1 -1
- package/dist/cli-conversion-derivation.d.ts +14 -1
- package/dist/cli-conversion-derivation.d.ts.map +1 -1
- package/dist/cli-conversion-derivation.js +14 -7
- 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 +86 -34
- 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 +0 -3
- package/dist/cli-corpus-command.js.map +1 -1
- package/dist/cli-draft-command.d.ts +16 -0
- package/dist/cli-draft-command.d.ts.map +1 -1
- package/dist/cli-draft-command.js +47 -9
- 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 +20 -7
- 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 +215 -33
- 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 +268 -156
- 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 -77
- package/dist/concept-input.d.ts.map +1 -1
- package/dist/concept-input.js +6 -87
- package/dist/concept-input.js.map +1 -1
- package/dist/conversion-client.d.ts +106 -17
- package/dist/conversion-client.d.ts.map +1 -1
- package/dist/conversion-client.js +244 -80
- package/dist/conversion-client.js.map +1 -1
- package/dist/corpus-client.d.ts.map +1 -1
- package/dist/corpus-client.js +0 -3
- package/dist/corpus-client.js.map +1 -1
- package/dist/draft-identity.d.ts +7 -0
- package/dist/draft-identity.d.ts.map +1 -1
- package/dist/draft-identity.js +4 -0
- package/dist/draft-identity.js.map +1 -1
- package/dist/draft-run.d.ts +13 -0
- package/dist/draft-run.d.ts.map +1 -1
- package/dist/draft-run.js +20 -2
- package/dist/draft-run.js.map +1 -1
- package/dist/draft-workspace.d.ts +4 -0
- package/dist/draft-workspace.d.ts.map +1 -1
- package/dist/draft-workspace.js.map +1 -1
- package/dist/hosted-draft-identity.d.ts +18 -0
- package/dist/hosted-draft-identity.d.ts.map +1 -1
- package/dist/hosted-draft-identity.js +8 -0
- package/dist/hosted-draft-identity.js.map +1 -1
- package/dist/hosted-draft-run.d.ts +15 -0
- package/dist/hosted-draft-run.d.ts.map +1 -1
- package/dist/hosted-draft-run.js +27 -0
- package/dist/hosted-draft-run.js.map +1 -1
- package/dist/improve-added-specs.d.ts +12 -40
- package/dist/improve-added-specs.d.ts.map +1 -1
- package/dist/improve-added-specs.js +63 -172
- 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-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 +19 -0
- package/dist/improve-capture-redirect.d.ts.map +1 -1
- package/dist/improve-capture-redirect.js +18 -1
- package/dist/improve-capture-redirect.js.map +1 -1
- 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 -20
- package/dist/improve-concept.d.ts.map +1 -1
- package/dist/improve-concept.js +12 -59
- package/dist/improve-concept.js.map +1 -1
- package/dist/improve-conversion-attempts.d.ts +12 -4
- package/dist/improve-conversion-attempts.d.ts.map +1 -1
- package/dist/improve-conversion-attempts.js.map +1 -1
- package/dist/improve-conversion-stage.d.ts +13 -2
- package/dist/improve-conversion-stage.d.ts.map +1 -1
- package/dist/improve-conversion-stage.js +211 -20
- package/dist/improve-conversion-stage.js.map +1 -1
- package/dist/improve-convert-progress.d.ts +10 -2
- package/dist/improve-convert-progress.d.ts.map +1 -1
- package/dist/improve-convert-progress.js +7 -3
- package/dist/improve-convert-progress.js.map +1 -1
- package/dist/improve-convert-resilience.d.ts +60 -13
- package/dist/improve-convert-resilience.d.ts.map +1 -1
- package/dist/improve-convert-resilience.js +85 -22
- 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 +11 -0
- package/dist/improve-core/improve-concept.d.ts.map +1 -0
- package/dist/improve-core/improve-concept.js +190 -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-icon-svg.js → improve-core/improve-icon-svg.js} +2 -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} +6 -1
- 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} +56 -28
- package/dist/{improve-plan-annotated-render.js.map → improve-core/improve-plan-annotated-render.js.map} +1 -1
- 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-core/improve-token-patch.d.ts.map +1 -0
- package/dist/{improve-token-patch.js → improve-core/improve-token-patch.js} +2 -0
- 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 +87 -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 +162 -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-readme.d.ts +4 -0
- package/dist/improve-kit-readme.d.ts.map +1 -1
- package/dist/improve-kit-readme.js +57 -16
- package/dist/improve-kit-readme.js.map +1 -1
- package/dist/improve-kit-stall.d.ts +3 -1
- package/dist/improve-kit-stall.d.ts.map +1 -1
- package/dist/improve-kit-stall.js +46 -14
- package/dist/improve-kit-stall.js.map +1 -1
- package/dist/improve-kit-status.d.ts.map +1 -1
- package/dist/improve-kit-status.js +8 -3
- package/dist/improve-kit-status.js.map +1 -1
- package/dist/improve-options.d.ts +8 -0
- package/dist/improve-options.d.ts.map +1 -1
- package/dist/improve-options.js +92 -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 +8 -2
- package/dist/improve-plan-annotator.d.ts.map +1 -1
- package/dist/improve-plan-annotator.js +35 -38
- 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 +29 -5
- 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 +10 -1
- package/dist/improve-stage-shared.d.ts.map +1 -1
- 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 +7 -4
- package/dist/improve-terminal-event.js.map +1 -1
- package/dist/improve-workspace.d.ts +198 -2
- package/dist/improve-workspace.d.ts.map +1 -1
- package/dist/improve-workspace.js +249 -92
- package/dist/improve-workspace.js.map +1 -1
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +79 -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/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 +0 -3
- package/dist/mcp-tool-handler.js.map +1 -1
- package/dist/redesign-branch-adoption.d.ts +29 -0
- package/dist/redesign-branch-adoption.d.ts.map +1 -0
- package/dist/redesign-branch-adoption.js +183 -0
- package/dist/redesign-branch-adoption.js.map +1 -0
- package/dist/redesign-branch-identity.d.ts +23 -0
- package/dist/redesign-branch-identity.d.ts.map +1 -0
- package/dist/redesign-branch-identity.js +27 -0
- package/dist/redesign-branch-identity.js.map +1 -0
- package/dist/redesign-branch-record-verification.d.ts +51 -0
- package/dist/redesign-branch-record-verification.d.ts.map +1 -0
- package/dist/redesign-branch-record-verification.js +127 -0
- package/dist/redesign-branch-record-verification.js.map +1 -0
- package/dist/redesign-branch-stage.d.ts +17 -0
- package/dist/redesign-branch-stage.d.ts.map +1 -0
- package/dist/redesign-branch-stage.js +218 -0
- package/dist/redesign-branch-stage.js.map +1 -0
- package/dist/redesign-capture.d.ts +145 -15
- package/dist/redesign-capture.d.ts.map +1 -1
- package/dist/redesign-capture.js +182 -71
- package/dist/redesign-capture.js.map +1 -1
- package/dist/redesign-page-candidates.d.ts +40 -0
- package/dist/redesign-page-candidates.d.ts.map +1 -0
- package/dist/redesign-page-candidates.js +131 -0
- package/dist/redesign-page-candidates.js.map +1 -0
- package/dist/redesign-page-ownership.d.ts +36 -0
- package/dist/redesign-page-ownership.d.ts.map +1 -0
- package/dist/redesign-page-ownership.js +174 -0
- package/dist/redesign-page-ownership.js.map +1 -0
- package/dist/redesign-plan-identity.d.ts +3 -1
- package/dist/redesign-plan-identity.d.ts.map +1 -1
- package/dist/redesign-plan-identity.js +4 -1
- package/dist/redesign-plan-identity.js.map +1 -1
- package/dist/redesign-plan.d.ts.map +1 -1
- package/dist/redesign-plan.js +12 -6
- package/dist/redesign-plan.js.map +1 -1
- package/dist/redesign-record-validation.d.ts +4 -0
- package/dist/redesign-record-validation.d.ts.map +1 -0
- package/dist/redesign-record-validation.js +210 -0
- package/dist/redesign-record-validation.js.map +1 -0
- package/dist/redesign-workspace.d.ts +43 -5
- package/dist/redesign-workspace.d.ts.map +1 -1
- package/dist/redesign-workspace.js +66 -7
- package/dist/redesign-workspace.js.map +1 -1
- package/dist/responsive-alternative-materializer.d.ts +8 -3
- package/dist/responsive-alternative-materializer.d.ts.map +1 -1
- package/dist/responsive-alternative-materializer.js +68 -51
- package/dist/responsive-alternative-materializer.js.map +1 -1
- 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/run-journal.d.ts +3 -1
- package/dist/run-journal.d.ts.map +1 -1
- package/dist/run-journal.js +7 -1
- package/dist/run-journal.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 +67 -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 +8 -4
- package/skills/12ui-design/improve.md +50 -3
- 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-icon-svg.d.ts +0 -47
- package/dist/improve-icon-svg.d.ts.map +0 -1
- package/dist/improve-icon-svg.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-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
- /package/dist/{improve-token-patch.d.ts → improve-core/improve-token-patch.d.ts} +0 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { copyFile, mkdir, readFile, stat, writeFile } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { BranchApiError, TwelveUiBranchClient, } from './branch-client.js';
|
|
5
|
+
import { CliRefusal } from './cli-refusal.js';
|
|
6
|
+
import { runConversionCommand } from './cli-convert-command.js';
|
|
7
|
+
import { readConversionConfig } from './config.js';
|
|
8
|
+
import { runImproveConversion } from './improve-conversion-stage.js';
|
|
9
|
+
import { improvePageWordsFor } from './improve-core/index.js';
|
|
10
|
+
import { improveSha256, noteImproveStage } from './improve-stage-shared.js';
|
|
11
|
+
import { improvePagePaths, writeImproveRecord } from './improve-workspace.js';
|
|
12
|
+
const POLL_INTERVAL_MS = 4_000;
|
|
13
|
+
const IMPROVE_RUN_DEADLINE_MS = 15 * 60 * 1_000;
|
|
14
|
+
const TERMINAL_CODES = new Set([
|
|
15
|
+
'quota_exhausted', 'insufficient_funds', 'expired', 'rate_limited', 'not_found',
|
|
16
|
+
'unauthorized', 'forbidden', 'idempotency_key_required',
|
|
17
|
+
]);
|
|
18
|
+
const defaultSleep = async (milliseconds) => (new Promise((resolve) => { setTimeout(resolve, milliseconds); }));
|
|
19
|
+
const referenceImage = async (file) => {
|
|
20
|
+
const bytes = await readFile(file);
|
|
21
|
+
const extension = path.extname(file).toLowerCase();
|
|
22
|
+
const mediaType = extension === '.jpg' || extension === '.jpeg'
|
|
23
|
+
? 'image/jpeg'
|
|
24
|
+
: extension === '.webp'
|
|
25
|
+
? 'image/webp'
|
|
26
|
+
: 'image/png';
|
|
27
|
+
return {
|
|
28
|
+
data: bytes.toString('base64'),
|
|
29
|
+
mediaType,
|
|
30
|
+
sha256: improveSha256(bytes),
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* THE PAGE'S OWN WORDS, WHICH THE CAPTURE ALREADY WROTE.
|
|
35
|
+
*
|
|
36
|
+
* Every site capture leaves `pages/<id>/current.domdoc.json` beside the
|
|
37
|
+
* screenshot. Measured (`.tmp/site-improve/degree-study`, finding 7): handing
|
|
38
|
+
* the model that page's text alongside the edit keeps the real copy verbatim
|
|
39
|
+
* across genuinely different compositions, while the edit alone paraphrases.
|
|
40
|
+
*
|
|
41
|
+
* A document that will not read or parse yields no words rather than failing
|
|
42
|
+
* the branch (CLAUDE.md item 5): the run then asks for exactly what it asked
|
|
43
|
+
* for before this existed, on a stage that is about to spend money.
|
|
44
|
+
*/
|
|
45
|
+
const pageWords = async (file, retain) => {
|
|
46
|
+
if (!file)
|
|
47
|
+
return '';
|
|
48
|
+
try {
|
|
49
|
+
return improvePageWordsFor(JSON.parse(await readFile(file, 'utf8')), retain);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* The words are part of what was bought, so they are part of the key: a rerun
|
|
57
|
+
* whose capture now yields different copy is a different request, and a rerun
|
|
58
|
+
* whose capture is unchanged replays without spending again (CLAUDE.md item 3).
|
|
59
|
+
*
|
|
60
|
+
* They are APPENDED ONLY WHEN AT LEAST ONE SCREEN HAS ANY, so a kit captured
|
|
61
|
+
* before this existed — or one whose visitor freed the copy — still hashes to
|
|
62
|
+
* the key it would have hashed to and replays rather than re-buying.
|
|
63
|
+
*/
|
|
64
|
+
const branchKey = (record, order, words) => {
|
|
65
|
+
const rootSha = record.pick?.sha256 ?? record.target?.sha256 ?? '';
|
|
66
|
+
const screenShas = record.pages.map((page) => page.capture?.sha256 ?? '');
|
|
67
|
+
const digest = createHash('sha256').update([
|
|
68
|
+
rootSha,
|
|
69
|
+
...screenShas,
|
|
70
|
+
record.concept,
|
|
71
|
+
JSON.stringify(record.retain),
|
|
72
|
+
order,
|
|
73
|
+
...(words.some((entry) => entry) ? words : []),
|
|
74
|
+
].join('\0')).digest('hex');
|
|
75
|
+
return `improve-branch:v1:${digest}`;
|
|
76
|
+
};
|
|
77
|
+
const candidateError = (candidate) => (candidate.error ?? {
|
|
78
|
+
code: 'improve_branch_failed',
|
|
79
|
+
message: `Site page ${candidate.slot} could not be polished.`,
|
|
80
|
+
});
|
|
81
|
+
const branchForCandidate = (args) => {
|
|
82
|
+
if (args.candidate.status === 'failed') {
|
|
83
|
+
return {
|
|
84
|
+
slot: args.candidate.slot,
|
|
85
|
+
status: 'failed',
|
|
86
|
+
error: candidateError(args.candidate),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
slot: args.candidate.slot,
|
|
91
|
+
status: args.candidate.status,
|
|
92
|
+
...(args.page.branch?.imagePath ? { imagePath: args.page.branch.imagePath } : {}),
|
|
93
|
+
...(args.page.branch?.sha256 ? { sha256: args.page.branch.sha256 } : {}),
|
|
94
|
+
...(args.candidate.status === 'succeeded' && !args.page.branch?.imagePath
|
|
95
|
+
? { imagePath: improvePagePaths(args.runDir, args.page.id).polishedImage }
|
|
96
|
+
: {}),
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
const activeCandidates = (envelope) => (envelope.candidates.filter((candidate) => candidate.status === 'pending' || candidate.status === 'dispatched'));
|
|
100
|
+
const deadlineRefusal = (envelope) => {
|
|
101
|
+
const slots = activeCandidates(envelope).map((candidate) => `${candidate.slot} (${candidate.status})`);
|
|
102
|
+
return new CliRefusal(`Improve run ${envelope.id} did not settle within 15 minutes; still pending/dispatched slots: ${slots.join(', ')}.`, 'improve_branch_timeout');
|
|
103
|
+
};
|
|
104
|
+
const allFailedRefusal = (envelope) => {
|
|
105
|
+
const failedSlots = envelope.candidates.filter((candidate) => candidate.status === 'failed')
|
|
106
|
+
.map((candidate) => `${candidate.slot} (${candidateError(candidate).code})`);
|
|
107
|
+
return new CliRefusal(`Improve run ${envelope.id} finished with no succeeded pages; failed slots: ${failedSlots.join(', ')}.`, 'improve_branch_all_failed');
|
|
108
|
+
};
|
|
109
|
+
const clientFor = (args) => {
|
|
110
|
+
if (args.dependencies.branchClient)
|
|
111
|
+
return args.dependencies.branchClient;
|
|
112
|
+
const config = (args.dependencies.readConfig ?? readConversionConfig)({
|
|
113
|
+
origin: args.passthrough.origin,
|
|
114
|
+
apiKey: args.passthrough['api-key'],
|
|
115
|
+
});
|
|
116
|
+
return (args.dependencies.createBranchClient ?? ((value) => new TwelveUiBranchClient(value)))(config);
|
|
117
|
+
};
|
|
118
|
+
const renderLayerDocRoot = async (args) => {
|
|
119
|
+
const renderDir = path.join(args.options.paths.stateDir, 'site-root');
|
|
120
|
+
await mkdir(renderDir, { recursive: true });
|
|
121
|
+
const stem = path.basename(args.record.target.value).replace(/\.layerdoc\.json$/iu, '');
|
|
122
|
+
const rendered = path.join(renderDir, `${stem}.png`);
|
|
123
|
+
if (!(await stat(rendered).catch(() => undefined))?.isFile()) {
|
|
124
|
+
await runImproveConversion({
|
|
125
|
+
input: args.record.target.value,
|
|
126
|
+
outDir: renderDir,
|
|
127
|
+
output: 'png',
|
|
128
|
+
key: `improve-site-root:v1:${args.sha256}`,
|
|
129
|
+
passthrough: args.options.passthrough,
|
|
130
|
+
runner: args.dependencies.runConvert ?? runConversionCommand,
|
|
131
|
+
journal: args.dependencies.journal,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
if (!(await stat(rendered).catch(() => undefined))?.isFile()) {
|
|
135
|
+
throw new Error(`LayerDoc root rendering completed without ${rendered}`);
|
|
136
|
+
}
|
|
137
|
+
await copyFile(rendered, args.options.paths.winnerImage);
|
|
138
|
+
return args.options.paths.winnerImage;
|
|
139
|
+
};
|
|
140
|
+
export const runImproveBranchStage = async (args) => {
|
|
141
|
+
if (args.record.scope === 'page')
|
|
142
|
+
return noteImproveStage({
|
|
143
|
+
record: args.record,
|
|
144
|
+
stage: 'branch',
|
|
145
|
+
priceCeilingUsd: 0,
|
|
146
|
+
replayed: args.record.stages.branch?.outcome === 'skipped',
|
|
147
|
+
outcome: 'skipped',
|
|
148
|
+
write: true,
|
|
149
|
+
});
|
|
150
|
+
const pagesToBranch = args.record.pages;
|
|
151
|
+
const complete = Boolean(args.record.branch)
|
|
152
|
+
&& pagesToBranch.length > 0
|
|
153
|
+
&& pagesToBranch.every((page) => (page.branch?.status === 'succeeded' && page.branch.sha256)
|
|
154
|
+
|| page.branch?.status === 'failed');
|
|
155
|
+
if (complete) {
|
|
156
|
+
if (!pagesToBranch.some((page) => page.branch?.status === 'succeeded')) {
|
|
157
|
+
const failedSlots = pagesToBranch.map((page) => `${page.branch.slot} (${page.branch.error?.code ?? 'improve_branch_failed'})`);
|
|
158
|
+
throw new CliRefusal(`Improve run ${args.record.branch.runId} finished with no succeeded pages; failed slots: ${failedSlots.join(', ')}.`, 'improve_branch_all_failed');
|
|
159
|
+
}
|
|
160
|
+
return noteImproveStage({
|
|
161
|
+
record: args.record, stage: 'branch', priceCeilingUsd: args.price, replayed: true, write: true,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
if (!args.record.capture || pagesToBranch.some((page) => !page.capture)) {
|
|
165
|
+
throw new Error('Cannot branch before every site page is captured');
|
|
166
|
+
}
|
|
167
|
+
if (!args.record.pick && !args.record.target)
|
|
168
|
+
throw new Error('Cannot branch before pick');
|
|
169
|
+
const rootSha = args.record.pick?.sha256
|
|
170
|
+
?? (args.record.target ? improveSha256(await readFile(args.record.target.value)) : undefined);
|
|
171
|
+
if (!rootSha)
|
|
172
|
+
throw new Error('Site improve has no accepted root design');
|
|
173
|
+
let root;
|
|
174
|
+
if (args.record.draft && args.record.pick) {
|
|
175
|
+
root = { winner: { createRunId: args.record.draft.runId, slot: args.record.pick.slot.toLowerCase() } };
|
|
176
|
+
}
|
|
177
|
+
else if (args.record.target?.kind === 'image') {
|
|
178
|
+
root = { referenceImage: await referenceImage(args.record.target.value) };
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
root = { referenceImage: await referenceImage(await renderLayerDocRoot({
|
|
182
|
+
record: args.record,
|
|
183
|
+
options: args.options,
|
|
184
|
+
dependencies: args.dependencies,
|
|
185
|
+
sha256: rootSha,
|
|
186
|
+
})) };
|
|
187
|
+
}
|
|
188
|
+
const screens = await Promise.all(pagesToBranch.map(async (page) => {
|
|
189
|
+
const [image, words] = await Promise.all([
|
|
190
|
+
referenceImage(page.capture.sourceImage),
|
|
191
|
+
pageWords(page.capture.domDoc, args.record.retain),
|
|
192
|
+
]);
|
|
193
|
+
return {
|
|
194
|
+
id: page.id,
|
|
195
|
+
title: page.title,
|
|
196
|
+
route: page.route,
|
|
197
|
+
surfaceType: 'web_page',
|
|
198
|
+
image,
|
|
199
|
+
...(words ? { words } : {}),
|
|
200
|
+
};
|
|
201
|
+
}));
|
|
202
|
+
const client = clientFor({ passthrough: args.options.passthrough, dependencies: args.dependencies });
|
|
203
|
+
const now = args.dependencies.now ?? Date.now;
|
|
204
|
+
const deadline = now() + IMPROVE_RUN_DEADLINE_MS;
|
|
205
|
+
let envelope;
|
|
206
|
+
let record = args.record;
|
|
207
|
+
if (record.branch) {
|
|
208
|
+
envelope = await client.getRun(record.branch.runId);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
envelope = await client.startImproveRun({
|
|
212
|
+
concept: record.concept,
|
|
213
|
+
retain: record.retain,
|
|
214
|
+
root,
|
|
215
|
+
screens,
|
|
216
|
+
referenceOrder: args.options.referenceOrder,
|
|
217
|
+
}, branchKey({ ...record, target: record.target ? { ...record.target, sha256: rootSha } : undefined }, args.options.referenceOrder, screens.map((screen) => screen.words ?? '')));
|
|
218
|
+
record = {
|
|
219
|
+
...record,
|
|
220
|
+
...(record.target ? { target: { ...record.target, sha256: rootSha } } : {}),
|
|
221
|
+
branch: { runId: envelope.id, referenceOrder: args.options.referenceOrder },
|
|
222
|
+
pages: record.pages.map((page) => {
|
|
223
|
+
const candidate = envelope.candidates[pagesToBranch.findIndex(({ id }) => id === page.id)];
|
|
224
|
+
if (!candidate)
|
|
225
|
+
throw new Error(`Improve run omitted page ${page.id}`);
|
|
226
|
+
return {
|
|
227
|
+
...page,
|
|
228
|
+
branch: branchForCandidate({ page, candidate, runDir: record.runDir }),
|
|
229
|
+
};
|
|
230
|
+
}),
|
|
231
|
+
};
|
|
232
|
+
await writeImproveRecord(args.options.paths.record, record);
|
|
233
|
+
}
|
|
234
|
+
const dispatches = envelope.candidates
|
|
235
|
+
.filter((candidate) => candidate.status === 'pending')
|
|
236
|
+
.map(async (candidate) => {
|
|
237
|
+
try {
|
|
238
|
+
await client.dispatchScreen(envelope.id, candidate.slot);
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
const code = error instanceof BranchApiError ? error.code : 'error';
|
|
242
|
+
if (code === 'candidate_in_flight')
|
|
243
|
+
return;
|
|
244
|
+
if (TERMINAL_CODES.has(code) || (error instanceof BranchApiError && error.status >= 500))
|
|
245
|
+
throw error;
|
|
246
|
+
throw error;
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
await Promise.all(dispatches).catch((error) => {
|
|
250
|
+
throw new CliRefusal(error instanceof Error ? error.message : String(error), error instanceof BranchApiError ? error.code : 'improve_branch_failed');
|
|
251
|
+
});
|
|
252
|
+
const sleep = args.dependencies.sleep ?? defaultSleep;
|
|
253
|
+
while (true) {
|
|
254
|
+
envelope = await client.getRun(envelope.id);
|
|
255
|
+
record = {
|
|
256
|
+
...record,
|
|
257
|
+
pages: record.pages.map((page) => {
|
|
258
|
+
const candidate = envelope.candidates[pagesToBranch.findIndex(({ id }) => id === page.id)];
|
|
259
|
+
return candidate && page.branch ? {
|
|
260
|
+
...page,
|
|
261
|
+
branch: branchForCandidate({ page, candidate, runDir: record.runDir }),
|
|
262
|
+
} : page;
|
|
263
|
+
}),
|
|
264
|
+
};
|
|
265
|
+
await writeImproveRecord(args.options.paths.record, record);
|
|
266
|
+
if (activeCandidates(envelope).length === 0)
|
|
267
|
+
break;
|
|
268
|
+
const remaining = deadline - now();
|
|
269
|
+
if (remaining <= 0)
|
|
270
|
+
throw deadlineRefusal(envelope);
|
|
271
|
+
await sleep(Math.min(POLL_INTERVAL_MS, remaining));
|
|
272
|
+
}
|
|
273
|
+
const pages = await Promise.all(record.pages.map(async (page) => {
|
|
274
|
+
const candidate = envelope.candidates[pagesToBranch.findIndex(({ id }) => id === page.id)];
|
|
275
|
+
if (!candidate)
|
|
276
|
+
throw new Error(`Improve run omitted page ${page.id}`);
|
|
277
|
+
if (candidate.status === 'failed') {
|
|
278
|
+
return {
|
|
279
|
+
...page,
|
|
280
|
+
branch: branchForCandidate({ page, candidate, runDir: record.runDir }),
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
if (candidate.status !== 'succeeded')
|
|
284
|
+
throw new Error(`Improve run did not settle page ${page.id}`);
|
|
285
|
+
const imagePath = improvePagePaths(record.runDir, page.id).polishedImage;
|
|
286
|
+
const existing = await stat(imagePath).catch(() => undefined);
|
|
287
|
+
let sha256 = page.branch?.sha256;
|
|
288
|
+
if (!existing?.isFile()) {
|
|
289
|
+
const downloaded = await client.downloadScreen(envelope.id, candidate.slot);
|
|
290
|
+
await mkdir(path.dirname(imagePath), { recursive: true });
|
|
291
|
+
await writeFile(imagePath, downloaded.bytes);
|
|
292
|
+
sha256 = downloaded.sha256;
|
|
293
|
+
}
|
|
294
|
+
else if (!sha256) {
|
|
295
|
+
sha256 = improveSha256(await readFile(imagePath));
|
|
296
|
+
}
|
|
297
|
+
return {
|
|
298
|
+
...page,
|
|
299
|
+
branch: {
|
|
300
|
+
slot: candidate.slot,
|
|
301
|
+
imagePath,
|
|
302
|
+
sha256,
|
|
303
|
+
status: 'succeeded',
|
|
304
|
+
},
|
|
305
|
+
};
|
|
306
|
+
}));
|
|
307
|
+
record = { ...record, pages };
|
|
308
|
+
await writeImproveRecord(args.options.paths.record, record);
|
|
309
|
+
if (!pagesToBranch.some((page) => record.pages.find(({ id }) => id === page.id)?.branch?.status === 'succeeded')) {
|
|
310
|
+
throw allFailedRefusal(envelope);
|
|
311
|
+
}
|
|
312
|
+
record = await noteImproveStage({
|
|
313
|
+
record, stage: 'branch', priceCeilingUsd: args.price, replayed: false, write: false,
|
|
314
|
+
});
|
|
315
|
+
await writeImproveRecord(args.options.paths.record, record);
|
|
316
|
+
args.dependencies.journal?.note({
|
|
317
|
+
runId: envelope.id,
|
|
318
|
+
artifacts: pages.flatMap((page) => page.branch?.status === 'succeeded' && page.branch.imagePath
|
|
319
|
+
? [page.branch.imagePath]
|
|
320
|
+
: []),
|
|
321
|
+
purchased: [envelope.id],
|
|
322
|
+
});
|
|
323
|
+
return record;
|
|
324
|
+
};
|
|
325
|
+
//# sourceMappingURL=improve-branch-stage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-branch-stage.js","sourceRoot":"","sources":["../src/improve-branch-stage.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@ export type ImproveCaptureRedirect = {
|
|
|
23
23
|
/** The two URLs when they name different pages, and nothing when they agree. */
|
|
24
24
|
export declare const improveCaptureRedirect: (record: ImproveRecord) => ImproveCaptureRedirect | undefined;
|
|
25
25
|
export declare const IMPROVE_REDIRECT_CAUSE: string;
|
|
26
|
+
/** Recovery is valid here because this guard runs before the paid draft stage. */
|
|
27
|
+
export declare const IMPROVE_REBOOTSTRAP_RECOVERY: string;
|
|
26
28
|
/**
|
|
27
29
|
* The `Captured:` line, in one place, so the kit README and the end-of-run
|
|
28
30
|
* summary cannot describe the same redirect in two different ways. Absent when
|
|
@@ -43,4 +45,21 @@ export declare const assertImproveCaptureNotRedirected: (args: {
|
|
|
43
45
|
allowRedirect: boolean;
|
|
44
46
|
runDir: string;
|
|
45
47
|
}) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Whether this run can PROVE the capture is the page that was asked for.
|
|
50
|
+
*
|
|
51
|
+
* The coverage gate used to guess this from DOM overlap and got it backwards.
|
|
52
|
+
* Over the 28 wave-2 kits that reached it (F42), the gate blocked 6 runs — all
|
|
53
|
+
* 6 on captures whose URL identity matched the request — and passed all 5 runs
|
|
54
|
+
* whose capture had landed somewhere else, three of them sign-in pages scored
|
|
55
|
+
* at 69.2%, 90.5% and 100.0%. Overlap cannot separate "wrong page" from "large
|
|
56
|
+
* redesign", because a redesign of the wrong page agrees with its own capture.
|
|
57
|
+
*
|
|
58
|
+
* The two URLs are a fact the kit already writes down, so the gate reads the
|
|
59
|
+
* fact instead of inferring it (CLAUDE.md item 8). `redirected` is only
|
|
60
|
+
* reachable under `--allow-redirect`; without it the run is refused before any
|
|
61
|
+
* paid stage by `assertImproveCaptureNotRedirected` above.
|
|
62
|
+
*/
|
|
63
|
+
export type ImproveCaptureIdentity = 'matched' | 'redirected' | 'unrecorded' | 'image';
|
|
64
|
+
export declare const improveCaptureIdentity: (record: ImproveRecord) => ImproveCaptureIdentity;
|
|
46
65
|
//# sourceMappingURL=improve-capture-redirect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-capture-redirect.d.ts","sourceRoot":"","sources":["../src/improve-capture-redirect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,sBAAsB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAkB7E,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,GACjC,QAAQ,aAAa,KACpB,sBAAsB,GAAG,SAS3B,CAAC;AAEF,eAAO,MAAM,sBAAsB,QACiD,CAAC;AAErF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,aAAa,KAAG,MAAM,GAAG,SAMvE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,GAAI,MAAM;IACtD,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,KAAG,
|
|
1
|
+
{"version":3,"file":"improve-capture-redirect.d.ts","sourceRoot":"","sources":["../src/improve-capture-redirect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,sBAAsB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAkB7E,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,GACjC,QAAQ,aAAa,KACpB,sBAAsB,GAAG,SAS3B,CAAC;AAEF,eAAO,MAAM,sBAAsB,QACiD,CAAC;AAErF,kFAAkF;AAClF,eAAO,MAAM,4BAA4B,QAEoB,CAAC;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,aAAa,KAAG,MAAM,GAAG,SAMvE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,GAAI,MAAM;IACtD,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,KAAG,IAcH,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC;AAEvF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,aAAa,KAAG,sBAQ9D,CAAC"}
|
|
@@ -32,6 +32,10 @@ export const improveCaptureRedirect = (record) => {
|
|
|
32
32
|
};
|
|
33
33
|
export const IMPROVE_REDIRECT_CAUSE = 'The page redirected, usually an auth gate:'
|
|
34
34
|
+ ' seat the session first (--bootstrap), or pass the page that actually renders.';
|
|
35
|
+
/** Recovery is valid here because this guard runs before the paid draft stage. */
|
|
36
|
+
export const IMPROVE_REBOOTSTRAP_RECOVERY = ' Correct --bootstrap and rerun the same command with'
|
|
37
|
+
+ ' this --out-dir: capture is free, so improve will re-capture in place and retain the prior'
|
|
38
|
+
+ ' redacted bootstrap and sha256 in improve.json history.';
|
|
35
39
|
/**
|
|
36
40
|
* The `Captured:` line, in one place, so the kit README and the end-of-run
|
|
37
41
|
* summary cannot describe the same redirect in two different ways. Absent when
|
|
@@ -63,6 +67,19 @@ export const assertImproveCaptureNotRedirected = (args) => {
|
|
|
63
67
|
+ ' a page you did not ask for — a coverage gate cannot catch it, because it'
|
|
64
68
|
+ ' scores the target against the capture and both would be the wrong page.'
|
|
65
69
|
+ ` The capture is kept in ${args.runDir} and replays on the next run.`
|
|
66
|
-
+ ' Pass --allow-redirect to improve the page the redirect landed on.'
|
|
70
|
+
+ ' Pass --allow-redirect to improve the page the redirect landed on.'
|
|
71
|
+
+ IMPROVE_REBOOTSTRAP_RECOVERY, 'improve_capture_redirected');
|
|
72
|
+
};
|
|
73
|
+
export const improveCaptureIdentity = (record) => {
|
|
74
|
+
if (record.input.kind !== 'url')
|
|
75
|
+
return 'image';
|
|
76
|
+
const captured = record.capture?.capturedUrl;
|
|
77
|
+
if (!captured)
|
|
78
|
+
return 'unrecorded';
|
|
79
|
+
const requested = urlIdentity(record.input.value);
|
|
80
|
+
const landed = urlIdentity(captured);
|
|
81
|
+
if (!requested || !landed)
|
|
82
|
+
return 'unrecorded';
|
|
83
|
+
return requested === landed ? 'matched' : 'redirected';
|
|
67
84
|
};
|
|
68
85
|
//# sourceMappingURL=improve-capture-redirect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-capture-redirect.js","sourceRoot":"","sources":["../src/improve-capture-redirect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAuB9C;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAAC,KAAa,EAAsB,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAqB,EACe,EAAE;IACtC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,iBAAiB,IAAI,CAAC,gBAAgB;QAAE,OAAO,SAAS,CAAC;IAC9D,IAAI,iBAAiB,KAAK,gBAAgB;QAAE,OAAO,SAAS,CAAC;IAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,4CAA4C;MAC9E,gFAAgF,CAAC;AAErF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAqB,EAAsB,EAAE;IAClF,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,QAAQ;QACb,CAAC,CAAC,aAAa,QAAQ,CAAC,QAAQ,wBAAwB,QAAQ,CAAC,SAAS,GAAG;cACzE,IAAI,sBAAsB,EAAE;QAChC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,IAIjD,EAAQ,EAAE;IACT,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa;QAAE,OAAO;IAC5C,MAAM,IAAI,UAAU,CAClB,qBAAqB,QAAQ,CAAC,QAAQ,uBAAuB,QAAQ,CAAC,SAAS,GAAG;UAChF,IAAI,sBAAsB,EAAE;UAC5B,6EAA6E;UAC7E,2EAA2E;UAC3E,0EAA0E;UAC1E,2BAA2B,IAAI,CAAC,MAAM,+BAA+B;UACrE,oEAAoE,
|
|
1
|
+
{"version":3,"file":"improve-capture-redirect.js","sourceRoot":"","sources":["../src/improve-capture-redirect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { extractImproveDomInPage } from './improve-core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* THE WHOLE PAGE'S WORDS, BESIDE A VIEWPORT DOCUMENT THAT DOES NOT MOVE.
|
|
4
|
+
*
|
|
5
|
+
* A kit's `current.domdoc.json` is the plan core's DOM-anchored geometry
|
|
6
|
+
* input: its `canvas` is one viewport, its `layers` are the leaves painted
|
|
7
|
+
* inside it, and the gate, the anchors and the selector map all read them. So
|
|
8
|
+
* it stays a viewport extraction, and the screenshot stays a viewport
|
|
9
|
+
* screenshot — a taller reference image buys the model no extra pixels
|
|
10
|
+
* (measured, `.tmp/site-improve/context-study` finding 6).
|
|
11
|
+
*
|
|
12
|
+
* Only the WORDS gain from the rest of the page, and they gain a lot: measured
|
|
13
|
+
* on 2026-09-02 with the shipped extractor, chargedesk carries 40 characters
|
|
14
|
+
* at the viewport against 1621 for the whole page, 12ui 145 against 1005,
|
|
15
|
+
* hubspot 666 against 6275. So the same extractor runs a SECOND time at
|
|
16
|
+
* `fullPage: true` and its leaves ride along under `words`, projected to the
|
|
17
|
+
* fields the words policy reads (`improvePageWordLeaves`). `canvas` and
|
|
18
|
+
* `layers` are untouched, byte for byte.
|
|
19
|
+
*
|
|
20
|
+
* The hosted capture service writes the identical field
|
|
21
|
+
* (`services/site-capture/render.mjs`), so a kit built on a laptop and one
|
|
22
|
+
* built in the browser ask the model for the same thing.
|
|
23
|
+
*/
|
|
24
|
+
export type ImproveFullPageWordsPage = {
|
|
25
|
+
evaluate: (pageFunction: typeof extractImproveDomInPage, arg: {
|
|
26
|
+
fullPage: boolean;
|
|
27
|
+
}) => Promise<unknown>;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* @param fullPage Whether the caller already extracted the whole document
|
|
31
|
+
* (`--full-page`). Its `layers` ARE the page, so a second pass would store
|
|
32
|
+
* the same leaves twice.
|
|
33
|
+
*
|
|
34
|
+
* A second pass that throws returns the document exactly as it was: improve
|
|
35
|
+
* ran without this field until today and can still run without it, and a
|
|
36
|
+
* capture is not worth failing over it (CLAUDE.md item 5).
|
|
37
|
+
*/
|
|
38
|
+
export declare const withImproveFullPageWords: (args: {
|
|
39
|
+
page: ImproveFullPageWordsPage;
|
|
40
|
+
domDoc: unknown;
|
|
41
|
+
fullPage: boolean;
|
|
42
|
+
}) => Promise<unknown>;
|
|
43
|
+
//# sourceMappingURL=improve-capture-words.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-capture-words.d.ts","sourceRoot":"","sources":["../src/improve-capture-words.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAyB,MAAM,yBAAyB,CAAC;AAEzF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,CAAC,YAAY,EAAE,OAAO,uBAAuB,EAAE,GAAG,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1G,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GAAU,MAAM;IACnD,IAAI,EAAE,wBAAwB,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB,KAAG,OAAO,CAAC,OAAO,CAYlB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { extractImproveDomInPage, improvePageWordLeaves } from './improve-core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* @param fullPage Whether the caller already extracted the whole document
|
|
4
|
+
* (`--full-page`). Its `layers` ARE the page, so a second pass would store
|
|
5
|
+
* the same leaves twice.
|
|
6
|
+
*
|
|
7
|
+
* A second pass that throws returns the document exactly as it was: improve
|
|
8
|
+
* ran without this field until today and can still run without it, and a
|
|
9
|
+
* capture is not worth failing over it (CLAUDE.md item 5).
|
|
10
|
+
*/
|
|
11
|
+
export const withImproveFullPageWords = async (args) => {
|
|
12
|
+
const { domDoc } = args;
|
|
13
|
+
if (args.fullPage)
|
|
14
|
+
return domDoc;
|
|
15
|
+
if (!domDoc || typeof domDoc !== 'object' || Array.isArray(domDoc))
|
|
16
|
+
return domDoc;
|
|
17
|
+
try {
|
|
18
|
+
const words = improvePageWordLeaves(await args.page.evaluate(extractImproveDomInPage, { fullPage: true }));
|
|
19
|
+
return words.length > 0 ? { ...domDoc, words } : domDoc;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return domDoc;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=improve-capture-words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-capture-words.js","sourceRoot":"","sources":["../src/improve-capture-words.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AA4BzF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAI9C,EAAoB,EAAE;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IACjC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAClF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,qBAAqB,CACjC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACtE,CAAC;QACF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,23 +1,9 @@
|
|
|
1
|
+
import { type ImproveRetainPolicy } from './improve-core/index.js';
|
|
2
|
+
export { DEFAULT_IMPROVE_RETAIN, IMPROVE_DIRECTION_MAX_CHARACTERS, IMPROVE_DIRECTION_TRIM_HINT, IMPROVE_RETAIN_ALL_KEPT_REFUSAL, IMPROVE_RETAIN_FACETS, improveRetainFacetLabel, improveRetainFlag, improveRetainKeeps, improveRetainKeepsEverything, improveRetainMode, type ImproveRetainFacet, type ImproveRetainPolicy, } from './improve-core/index.js';
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
4
|
+
* The core refuses with its own error because it also runs in the browser; the
|
|
5
|
+
* CLI restates that refusal as a `CliRefusal` so the run journal keeps
|
|
6
|
+
* classifying "refused, nothing bought" by `error_class` rather than by prose.
|
|
5
7
|
*/
|
|
6
|
-
export declare const
|
|
7
|
-
/**
|
|
8
|
-
* The real steering limit after reserving room for the mandatory harness.
|
|
9
|
-
*
|
|
10
|
-
* The SERVICE bound is `MAX_CREATE_CONCEPT_CHARACTERS` — 1200, on the whole
|
|
11
|
-
* concept — and improve does not get to spend all of it: the style preamble,
|
|
12
|
-
* the `Direction: ` prefix and the no-invention clause are part of the concept
|
|
13
|
-
* it sends, so what is left is the flag's budget. Nothing here can be raised to
|
|
14
|
-
* 1200 without dropping the guardrails that keep the draw from inventing UI.
|
|
15
|
-
* The number is therefore stated wherever a caller writes a direction — the
|
|
16
|
-
* usage line, `improve.md`, and the refusal below, which also names the length
|
|
17
|
-
* of what was written (F7).
|
|
18
|
-
*/
|
|
19
|
-
export declare const IMPROVE_DIRECTION_MAX_CHARACTERS: number;
|
|
20
|
-
/** Where cut detail belongs, stated once for the refusal and the skill. */
|
|
21
|
-
export declare const IMPROVE_DIRECTION_TRIM_HINT: string;
|
|
22
|
-
export declare const buildImproveConcept: (direction?: string) => string;
|
|
8
|
+
export declare const buildImproveConcept: (direction?: string, retain?: ImproveRetainPolicy) => string;
|
|
23
9
|
//# sourceMappingURL=improve-concept.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-concept.d.ts","sourceRoot":"","sources":["../src/improve-concept.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"improve-concept.d.ts","sourceRoot":"","sources":["../src/improve-concept.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,+BAA+B,EAC/B,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,4BAA4B,EAC5B,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,EAClB,SAAS,mBAAmB,KAC3B,MAOF,CAAC"}
|
package/dist/improve-concept.js
CHANGED
|
@@ -1,66 +1,19 @@
|
|
|
1
1
|
import { CliRefusal } from './cli-refusal.js';
|
|
2
|
-
import {
|
|
2
|
+
import { buildImproveConcept as buildConcept, isImproveRefusal, } from './improve-core/index.js';
|
|
3
|
+
export { DEFAULT_IMPROVE_RETAIN, IMPROVE_DIRECTION_MAX_CHARACTERS, IMPROVE_DIRECTION_TRIM_HINT, IMPROVE_RETAIN_ALL_KEPT_REFUSAL, IMPROVE_RETAIN_FACETS, improveRetainFacetLabel, improveRetainFlag, improveRetainKeeps, improveRetainKeepsEverything, improveRetainMode, } from './improve-core/index.js';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* The core refuses with its own error because it also runs in the browser; the
|
|
6
|
+
* CLI restates that refusal as a `CliRefusal` so the run journal keeps
|
|
7
|
+
* classifying "refused, nothing bought" by `error_class` rather than by prose.
|
|
7
8
|
*/
|
|
8
|
-
export const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
'Strengthen visual hierarchy, section rhythm, spacing, alignment, typography, control affordances, surface treatment, and restrained color.',
|
|
12
|
-
'Use a coherent, style-anchored system with precise rhythm, legible type, purposeful states, subtle borders, and depth only where it clarifies hierarchy.',
|
|
13
|
-
].join(' ');
|
|
14
|
-
const DIRECTION_PREFIX = 'Direction: ';
|
|
15
|
-
const RESERVED_CONCEPT_CHARACTERS = [
|
|
16
|
-
IMPROVE_BASE_DIRECTION,
|
|
17
|
-
DIRECTION_PREFIX,
|
|
18
|
-
IMPROVE_NO_INVENTION_CLAUSE,
|
|
19
|
-
].join('\n\n').length;
|
|
20
|
-
/**
|
|
21
|
-
* The real steering limit after reserving room for the mandatory harness.
|
|
22
|
-
*
|
|
23
|
-
* The SERVICE bound is `MAX_CREATE_CONCEPT_CHARACTERS` — 1200, on the whole
|
|
24
|
-
* concept — and improve does not get to spend all of it: the style preamble,
|
|
25
|
-
* the `Direction: ` prefix and the no-invention clause are part of the concept
|
|
26
|
-
* it sends, so what is left is the flag's budget. Nothing here can be raised to
|
|
27
|
-
* 1200 without dropping the guardrails that keep the draw from inventing UI.
|
|
28
|
-
* The number is therefore stated wherever a caller writes a direction — the
|
|
29
|
-
* usage line, `improve.md`, and the refusal below, which also names the length
|
|
30
|
-
* of what was written (F7).
|
|
31
|
-
*/
|
|
32
|
-
export const IMPROVE_DIRECTION_MAX_CHARACTERS = MAX_CONCEPT_CHARACTERS - RESERVED_CONCEPT_CHARACTERS;
|
|
33
|
-
/** Where cut detail belongs, stated once for the refusal and the skill. */
|
|
34
|
-
export const IMPROVE_DIRECTION_TRIM_HINT = 'Keep the intended hierarchy, rhythm, typography,'
|
|
35
|
-
+ ' surfaces, color, controls, and mood.';
|
|
36
|
-
const FABRICATION_TRIGGER = /\b(?:empty|emptiness|underfilled|under-filled|thin[ -]content|lack of content|missing content|dead space|blank (?:area|region|half|section))\b/iu;
|
|
37
|
-
export const buildImproveConcept = (direction) => {
|
|
38
|
-
const steering = normalizeConceptText(direction ?? '');
|
|
39
|
-
if (conceptCharacterCount(steering) > IMPROVE_DIRECTION_MAX_CHARACTERS) {
|
|
40
|
-
throw new CliRefusal(conceptOverLimitMessage({
|
|
41
|
-
flag: '--direction',
|
|
42
|
-
raw: direction ?? '',
|
|
43
|
-
normalized: steering,
|
|
44
|
-
limit: IMPROVE_DIRECTION_MAX_CHARACTERS,
|
|
45
|
-
because: `improve reserves the other ${RESERVED_CONCEPT_CHARACTERS} of the`
|
|
46
|
-
+ ` ${MAX_CONCEPT_CHARACTERS}-character concept for its style and no-invention`
|
|
47
|
-
+ ' guardrails, so --direction is what is left.',
|
|
48
|
-
trimHint: IMPROVE_DIRECTION_TRIM_HINT,
|
|
49
|
-
}), 'improve_direction_too_long');
|
|
9
|
+
export const buildImproveConcept = (direction, retain) => {
|
|
10
|
+
try {
|
|
11
|
+
return buildConcept(direction, retain);
|
|
50
12
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
13
|
+
catch (error) {
|
|
14
|
+
if (isImproveRefusal(error))
|
|
15
|
+
throw new CliRefusal(error.message, error.code, { cause: error });
|
|
16
|
+
throw error;
|
|
54
17
|
}
|
|
55
|
-
const concept = [
|
|
56
|
-
IMPROVE_BASE_DIRECTION,
|
|
57
|
-
...(steering ? [`${DIRECTION_PREFIX}${steering}`] : []),
|
|
58
|
-
IMPROVE_NO_INVENTION_CLAUSE,
|
|
59
|
-
].join('\n\n');
|
|
60
|
-
return readConceptValue({
|
|
61
|
-
value: concept,
|
|
62
|
-
flag: '--direction',
|
|
63
|
-
trimHint: IMPROVE_DIRECTION_TRIM_HINT,
|
|
64
|
-
});
|
|
65
18
|
};
|
|
66
19
|
//# sourceMappingURL=improve-concept.js.map
|