@12ui/design 0.2.27 → 0.2.29
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/README.md +141 -87
- package/SKILL.md +5 -5
- package/dist/branch-completion.d.ts.map +1 -1
- package/dist/branch-completion.js +37 -14
- package/dist/branch-completion.js.map +1 -1
- package/dist/branch-execution.d.ts.map +1 -1
- package/dist/branch-execution.js +28 -8
- package/dist/branch-execution.js.map +1 -1
- package/dist/branch-identity.d.ts +10 -4
- package/dist/branch-identity.d.ts.map +1 -1
- package/dist/branch-identity.js +9 -6
- package/dist/branch-identity.js.map +1 -1
- package/dist/branch-page-conversion.d.ts +9 -8
- package/dist/branch-page-conversion.d.ts.map +1 -1
- package/dist/branch-page-conversion.js +8 -2
- package/dist/branch-page-conversion.js.map +1 -1
- package/dist/branch-page-packaging.d.ts +31 -0
- package/dist/branch-page-packaging.d.ts.map +1 -0
- package/dist/branch-page-packaging.js +86 -0
- package/dist/branch-page-packaging.js.map +1 -0
- package/dist/branch-plan.d.ts +6 -0
- package/dist/branch-plan.d.ts.map +1 -1
- package/dist/branch-plan.js +6 -1
- package/dist/branch-plan.js.map +1 -1
- package/dist/branch-progress.d.ts +22 -0
- package/dist/branch-progress.d.ts.map +1 -1
- package/dist/branch-progress.js +33 -8
- package/dist/branch-progress.js.map +1 -1
- package/dist/branch-run-record.d.ts +9 -0
- package/dist/branch-run-record.d.ts.map +1 -1
- package/dist/branch-run-record.js.map +1 -1
- package/dist/branch-status.d.ts +2 -0
- package/dist/branch-status.d.ts.map +1 -1
- package/dist/branch-status.js +60 -15
- package/dist/branch-status.js.map +1 -1
- package/dist/branch-winner.d.ts +13 -15
- package/dist/branch-winner.d.ts.map +1 -1
- package/dist/branch-winner.js +25 -77
- package/dist/branch-winner.js.map +1 -1
- package/dist/cli-arguments.d.ts.map +1 -1
- package/dist/cli-arguments.js +1 -0
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli-auth-command.d.ts.map +1 -1
- package/dist/cli-auth-command.js +5 -0
- package/dist/cli-auth-command.js.map +1 -1
- package/dist/cli-auth-onboarding.d.ts +12 -0
- package/dist/cli-auth-onboarding.d.ts.map +1 -0
- package/dist/cli-auth-onboarding.js +21 -0
- package/dist/cli-auth-onboarding.js.map +1 -0
- package/dist/cli-branch-command.d.ts +14 -19
- package/dist/cli-branch-command.d.ts.map +1 -1
- package/dist/cli-branch-command.js +207 -137
- package/dist/cli-branch-command.js.map +1 -1
- package/dist/cli-capabilities.d.ts +16 -51
- package/dist/cli-capabilities.d.ts.map +1 -1
- package/dist/cli-capabilities.js +23 -26
- package/dist/cli-capabilities.js.map +1 -1
- package/dist/cli-cli-command.d.ts +3 -0
- package/dist/cli-cli-command.d.ts.map +1 -1
- package/dist/cli-cli-command.js +15 -3
- package/dist/cli-cli-command.js.map +1 -1
- package/dist/cli-conversion-derivation.d.ts +30 -0
- package/dist/cli-conversion-derivation.d.ts.map +1 -0
- package/dist/{cli-export-command.js → cli-conversion-derivation.js} +178 -110
- package/dist/cli-conversion-derivation.js.map +1 -0
- package/dist/cli-conversion-output-directory.d.ts +5 -0
- package/dist/cli-conversion-output-directory.d.ts.map +1 -0
- package/dist/{cli-export-output-directory.js → cli-conversion-output-directory.js} +10 -10
- package/dist/cli-conversion-output-directory.js.map +1 -0
- package/dist/cli-convert-command.d.ts +9 -0
- package/dist/cli-convert-command.d.ts.map +1 -1
- package/dist/cli-convert-command.js +528 -158
- 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 +77 -10
- package/dist/cli-corpus-command.js.map +1 -1
- package/dist/cli-corpus-reference-downloads.d.ts +5 -0
- package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
- package/dist/cli-corpus-reference-downloads.js +18 -7
- package/dist/cli-corpus-reference-downloads.js.map +1 -1
- package/dist/cli-corpus-run.d.ts +9 -0
- package/dist/cli-corpus-run.d.ts.map +1 -1
- package/dist/cli-corpus-run.js +18 -0
- package/dist/cli-corpus-run.js.map +1 -1
- package/dist/cli-detach.d.ts +12 -4
- package/dist/cli-detach.d.ts.map +1 -1
- package/dist/cli-detach.js +49 -17
- package/dist/cli-detach.js.map +1 -1
- package/dist/cli-draft-command.d.ts +44 -61
- package/dist/cli-draft-command.d.ts.map +1 -1
- package/dist/cli-draft-command.js +307 -180
- package/dist/cli-draft-command.js.map +1 -1
- package/dist/cli-help/conversion.d.ts +30 -0
- package/dist/cli-help/conversion.d.ts.map +1 -0
- package/dist/cli-help/conversion.js +55 -0
- package/dist/cli-help/conversion.js.map +1 -0
- package/dist/cli-help/design.d.ts +84 -0
- package/dist/cli-help/design.d.ts.map +1 -0
- package/dist/cli-help/design.js +152 -0
- package/dist/cli-help/design.js.map +1 -0
- package/dist/cli-help/index.d.ts +234 -0
- package/dist/cli-help/index.d.ts.map +1 -0
- package/dist/cli-help/index.js +32 -0
- package/dist/cli-help/index.js.map +1 -0
- package/dist/cli-help/meta.d.ts +24 -0
- package/dist/cli-help/meta.d.ts.map +1 -0
- package/dist/cli-help/meta.js +30 -0
- package/dist/cli-help/meta.js.map +1 -0
- package/dist/cli-help/render.d.ts +4 -0
- package/dist/cli-help/render.d.ts.map +1 -0
- package/dist/cli-help/render.js +28 -0
- package/dist/cli-help/render.js.map +1 -0
- package/dist/cli-help/setup.d.ts +93 -0
- package/dist/cli-help/setup.d.ts.map +1 -0
- package/dist/cli-help/setup.js +142 -0
- package/dist/cli-help/setup.js.map +1 -0
- package/dist/cli-help/types.d.ts +10 -0
- package/dist/cli-help/types.d.ts.map +1 -0
- package/dist/cli-help/types.js +2 -0
- package/dist/cli-help/types.js.map +1 -0
- package/dist/cli-next-command.d.ts +11 -8
- package/dist/cli-next-command.d.ts.map +1 -1
- package/dist/cli-next-command.js +288 -88
- package/dist/cli-next-command.js.map +1 -1
- package/dist/cli-output-paths.d.ts +2 -23
- package/dist/cli-output-paths.d.ts.map +1 -1
- package/dist/cli-output-paths.js +2 -36
- package/dist/cli-output-paths.js.map +1 -1
- package/dist/cli-package-command.d.ts +1 -0
- package/dist/cli-package-command.d.ts.map +1 -1
- package/dist/cli-package-command.js +107 -34
- package/dist/cli-package-command.js.map +1 -1
- package/dist/cli-pending-auth.d.ts +20 -0
- package/dist/cli-pending-auth.d.ts.map +1 -0
- package/dist/cli-pending-auth.js +160 -0
- package/dist/cli-pending-auth.js.map +1 -0
- package/dist/cli-progress.d.ts +256 -75
- package/dist/cli-progress.d.ts.map +1 -1
- package/dist/cli-progress.js +425 -98
- package/dist/cli-progress.js.map +1 -1
- package/dist/cli-review-command.d.ts +8 -0
- package/dist/cli-review-command.d.ts.map +1 -0
- package/dist/cli-review-command.js +71 -0
- package/dist/cli-review-command.js.map +1 -0
- package/dist/cli-run.d.ts +2 -0
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +62 -73
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-skill-command.d.ts +3 -0
- package/dist/cli-skill-command.d.ts.map +1 -1
- package/dist/cli-skill-command.js +26 -3
- package/dist/cli-skill-command.js.map +1 -1
- package/dist/cli-usage.d.ts +17 -8
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +57 -40
- package/dist/cli-usage.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -2
- package/dist/config.js.map +1 -1
- package/dist/conversion-client.d.ts +4 -0
- package/dist/conversion-client.d.ts.map +1 -1
- package/dist/conversion-client.js +8 -1
- package/dist/conversion-client.js.map +1 -1
- package/dist/conversion-outputs.d.ts +11 -0
- package/dist/conversion-outputs.d.ts.map +1 -1
- package/dist/conversion-outputs.js +13 -1
- package/dist/conversion-outputs.js.map +1 -1
- package/dist/conversion-receipt.d.ts +1 -1
- package/dist/conversion-receipt.js +1 -1
- package/dist/conversion-recovery.d.ts +20 -0
- package/dist/conversion-recovery.d.ts.map +1 -0
- package/dist/conversion-recovery.js +61 -0
- package/dist/conversion-recovery.js.map +1 -0
- package/dist/conversion-status-contract.js +1 -1
- package/dist/conversion-status-contract.js.map +1 -1
- package/dist/credential-setup.d.ts +9 -1
- package/dist/credential-setup.d.ts.map +1 -1
- package/dist/credential-setup.js +13 -1
- package/dist/credential-setup.js.map +1 -1
- package/dist/draft-adoption.d.ts +9 -3
- package/dist/draft-adoption.d.ts.map +1 -1
- package/dist/draft-adoption.js +26 -41
- package/dist/draft-adoption.js.map +1 -1
- package/dist/draft-identity.d.ts +9 -12
- package/dist/draft-identity.d.ts.map +1 -1
- package/dist/draft-identity.js +0 -0
- package/dist/draft-identity.js.map +1 -1
- package/dist/draft-run.d.ts +9 -19
- package/dist/draft-run.d.ts.map +1 -1
- package/dist/draft-run.js +67 -95
- package/dist/draft-run.js.map +1 -1
- package/dist/draft-workspace.d.ts +26 -18
- package/dist/draft-workspace.d.ts.map +1 -1
- package/dist/draft-workspace.js +16 -5
- package/dist/draft-workspace.js.map +1 -1
- package/dist/hosted-draft-identity.d.ts +20 -0
- package/dist/hosted-draft-identity.d.ts.map +1 -0
- package/dist/hosted-draft-identity.js +30 -0
- package/dist/hosted-draft-identity.js.map +1 -0
- package/dist/hosted-draft-run.d.ts +60 -0
- package/dist/hosted-draft-run.d.ts.map +1 -0
- package/dist/hosted-draft-run.js +97 -0
- package/dist/hosted-draft-run.js.map +1 -0
- package/dist/legacy-codex-cleanup.d.ts +13 -0
- package/dist/legacy-codex-cleanup.d.ts.map +1 -1
- package/dist/legacy-codex-cleanup.js +83 -0
- package/dist/legacy-codex-cleanup.js.map +1 -1
- package/dist/legacy-skill-catalog.d.ts +2 -2
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +76 -5
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/login-auth.d.ts +38 -0
- package/dist/login-auth.d.ts.map +1 -1
- package/dist/login-auth.js +67 -16
- package/dist/login-auth.js.map +1 -1
- package/dist/mcp-tool-definitions.js +1 -1
- package/dist/mcp-tool-definitions.js.map +1 -1
- package/dist/next-target.d.ts +1 -4
- package/dist/next-target.d.ts.map +1 -1
- package/dist/next-target.js +5 -9
- package/dist/next-target.js.map +1 -1
- package/dist/next-wait-lease.d.ts +18 -0
- package/dist/next-wait-lease.d.ts.map +1 -0
- package/dist/next-wait-lease.js +143 -0
- package/dist/next-wait-lease.js.map +1 -0
- package/dist/next-wait-process.d.ts +17 -0
- package/dist/next-wait-process.d.ts.map +1 -0
- package/dist/next-wait-process.js +40 -0
- package/dist/next-wait-process.js.map +1 -0
- package/dist/package-client.d.ts +30 -0
- package/dist/package-client.d.ts.map +1 -1
- package/dist/package-client.js.map +1 -1
- package/dist/package-submission.d.ts +17 -0
- package/dist/package-submission.d.ts.map +1 -1
- package/dist/package-submission.js +13 -0
- package/dist/package-submission.js.map +1 -1
- package/dist/pending-auth-store.d.ts +15 -0
- package/dist/pending-auth-store.d.ts.map +1 -0
- package/dist/pending-auth-store.js +90 -0
- package/dist/pending-auth-store.js.map +1 -0
- package/dist/responsive-quality.d.ts +2 -2
- package/dist/responsive-quality.js +2 -2
- package/dist/review-discovery.d.ts +10 -0
- package/dist/review-discovery.d.ts.map +1 -0
- package/dist/review-discovery.js +381 -0
- package/dist/review-discovery.js.map +1 -0
- package/dist/review-edit-html.d.ts +6 -0
- package/dist/review-edit-html.d.ts.map +1 -0
- package/dist/review-edit-html.js +11 -0
- package/dist/review-edit-html.js.map +1 -0
- package/dist/review-edit-source.d.ts +22 -0
- package/dist/review-edit-source.d.ts.map +1 -0
- package/dist/review-edit-source.js +103 -0
- package/dist/review-edit-source.js.map +1 -0
- package/dist/review-edit.d.ts +15 -0
- package/dist/review-edit.d.ts.map +1 -0
- package/dist/review-edit.js +192 -0
- package/dist/review-edit.js.map +1 -0
- package/dist/review-layerdoc-diff.d.ts +7 -0
- package/dist/review-layerdoc-diff.d.ts.map +1 -0
- package/dist/review-layerdoc-diff.js +92 -0
- package/dist/review-layerdoc-diff.js.map +1 -0
- package/dist/review-page-assets.d.ts +3 -0
- package/dist/review-page-assets.d.ts.map +1 -0
- package/dist/review-page-assets.js +43 -0
- package/dist/review-page-assets.js.map +1 -0
- package/dist/review-page.d.ts +3 -0
- package/dist/review-page.d.ts.map +1 -0
- package/dist/review-page.js +237 -0
- package/dist/review-page.js.map +1 -0
- package/dist/review-pricing.d.ts +14 -0
- package/dist/review-pricing.d.ts.map +1 -0
- package/dist/review-pricing.js +23 -0
- package/dist/review-pricing.js.map +1 -0
- package/dist/review-server.d.ts +15 -0
- package/dist/review-server.d.ts.map +1 -0
- package/dist/review-server.js +204 -0
- package/dist/review-server.js.map +1 -0
- package/dist/review-store.d.ts +11 -0
- package/dist/review-store.d.ts.map +1 -0
- package/dist/review-store.js +96 -0
- package/dist/review-store.js.map +1 -0
- package/dist/review-types.d.ts +128 -0
- package/dist/review-types.d.ts.map +1 -0
- package/dist/review-types.js +2 -0
- package/dist/review-types.js.map +1 -0
- package/dist/run-journal-commands.d.ts.map +1 -1
- package/dist/run-journal-commands.js +34 -76
- package/dist/run-journal-commands.js.map +1 -1
- package/dist/run-journal-in-flight.d.ts +2 -2
- package/dist/run-journal-in-flight.d.ts.map +1 -1
- package/dist/run-journal-in-flight.js +0 -0
- package/dist/run-journal-in-flight.js.map +1 -1
- package/dist/skill-installer.d.ts +2 -2
- package/dist/skill-installer.d.ts.map +1 -1
- package/dist/skill-installer.js +2 -2
- package/dist/skill-installer.js.map +1 -1
- package/open-design.json +3 -3
- package/package.json +1 -1
- package/skills/12ui-design/SKILL.md +62 -0
- package/skills/12ui-design/agents/openai.yaml +6 -0
- package/skills/12ui-design/inspire.md +11 -0
- package/dist/cli-create-command.d.ts +0 -59
- package/dist/cli-create-command.d.ts.map +0 -1
- package/dist/cli-create-command.js +0 -354
- package/dist/cli-create-command.js.map +0 -1
- package/dist/cli-export-command.d.ts +0 -26
- package/dist/cli-export-command.d.ts.map +0 -1
- package/dist/cli-export-command.js.map +0 -1
- package/dist/cli-export-output-directory.d.ts +0 -5
- package/dist/cli-export-output-directory.d.ts.map +0 -1
- package/dist/cli-export-output-directory.js.map +0 -1
- package/dist/cli-image-batch-command.d.ts +0 -29
- package/dist/cli-image-batch-command.d.ts.map +0 -1
- package/dist/cli-image-batch-command.js +0 -236
- package/dist/cli-image-batch-command.js.map +0 -1
- package/dist/cli-image-batch-materialize.d.ts +0 -27
- package/dist/cli-image-batch-materialize.d.ts.map +0 -1
- package/dist/cli-image-batch-materialize.js +0 -41
- package/dist/cli-image-batch-materialize.js.map +0 -1
- package/dist/cli-image-batch-resume.d.ts +0 -36
- package/dist/cli-image-batch-resume.d.ts.map +0 -1
- package/dist/cli-image-batch-resume.js +0 -176
- package/dist/cli-image-batch-resume.js.map +0 -1
- package/dist/cli-image-command.d.ts +0 -10
- package/dist/cli-image-command.d.ts.map +0 -1
- package/dist/cli-image-command.js +0 -106
- package/dist/cli-image-command.js.map +0 -1
- package/dist/cli-select-command.d.ts +0 -16
- package/dist/cli-select-command.d.ts.map +0 -1
- package/dist/cli-select-command.js +0 -60
- package/dist/cli-select-command.js.map +0 -1
- package/dist/create-identity.d.ts +0 -25
- package/dist/create-identity.d.ts.map +0 -1
- package/dist/create-identity.js +0 -0
- package/dist/create-identity.js.map +0 -1
- package/dist/draft-prompts.d.ts +0 -35
- package/dist/draft-prompts.d.ts.map +0 -1
- package/dist/draft-prompts.js +0 -51
- package/dist/draft-prompts.js.map +0 -1
- package/dist/image-batch-status.d.ts +0 -42
- package/dist/image-batch-status.d.ts.map +0 -1
- package/dist/image-batch-status.js +0 -143
- package/dist/image-batch-status.js.map +0 -1
- package/dist/image-generation-batch-attempt.d.ts +0 -28
- package/dist/image-generation-batch-attempt.d.ts.map +0 -1
- package/dist/image-generation-batch-attempt.js +0 -48
- package/dist/image-generation-batch-attempt.js.map +0 -1
- package/dist/image-generation-batch-manifest.d.ts +0 -25
- package/dist/image-generation-batch-manifest.d.ts.map +0 -1
- package/dist/image-generation-batch-manifest.js +0 -97
- package/dist/image-generation-batch-manifest.js.map +0 -1
- package/dist/image-generation-completion.d.ts +0 -43
- package/dist/image-generation-completion.d.ts.map +0 -1
- package/dist/image-generation-completion.js +0 -54
- package/dist/image-generation-completion.js.map +0 -1
- package/dist/image-generation-error.d.ts +0 -3
- package/dist/image-generation-error.d.ts.map +0 -1
- package/dist/image-generation-error.js +0 -30
- package/dist/image-generation-error.js.map +0 -1
- package/dist/image-generation-evidence.d.ts +0 -43
- package/dist/image-generation-evidence.d.ts.map +0 -1
- package/dist/image-generation-evidence.js +0 -28
- package/dist/image-generation-evidence.js.map +0 -1
- package/dist/image-generation-fs.d.ts +0 -3
- package/dist/image-generation-fs.d.ts.map +0 -1
- package/dist/image-generation-fs.js +0 -23
- package/dist/image-generation-fs.js.map +0 -1
- package/dist/image-generation-output.d.ts +0 -3
- package/dist/image-generation-output.d.ts.map +0 -1
- package/dist/image-generation-output.js +0 -51
- package/dist/image-generation-output.js.map +0 -1
- package/dist/image-generation-request.d.ts +0 -43
- package/dist/image-generation-request.d.ts.map +0 -1
- package/dist/image-generation-request.js +0 -52
- package/dist/image-generation-request.js.map +0 -1
- package/dist/image-generation-resume.d.ts +0 -49
- package/dist/image-generation-resume.d.ts.map +0 -1
- package/dist/image-generation-resume.js +0 -96
- package/dist/image-generation-resume.js.map +0 -1
- package/dist/image-generation-run.d.ts +0 -46
- package/dist/image-generation-run.d.ts.map +0 -1
- package/dist/image-generation-run.js +0 -158
- package/dist/image-generation-run.js.map +0 -1
- package/dist/image-generation-staging.d.ts +0 -25
- package/dist/image-generation-staging.d.ts.map +0 -1
- package/dist/image-generation-staging.js +0 -80
- package/dist/image-generation-staging.js.map +0 -1
- package/dist/image-generation-usage.d.ts +0 -75
- package/dist/image-generation-usage.d.ts.map +0 -1
- package/dist/image-generation-usage.js +0 -219
- package/dist/image-generation-usage.js.map +0 -1
- package/dist/image-provider-preflight.d.ts +0 -21
- package/dist/image-provider-preflight.d.ts.map +0 -1
- package/dist/image-provider-preflight.js +0 -184
- package/dist/image-provider-preflight.js.map +0 -1
- package/dist/selection-record.d.ts +0 -97
- package/dist/selection-record.d.ts.map +0 -1
- package/dist/selection-record.js +0 -138
- package/dist/selection-record.js.map +0 -1
- package/skills/design/SKILL.md +0 -116
- package/skills/design/agents/openai.yaml +0 -8
- package/skills/design/assets/large-logo.svg +0 -3
- package/skills/design/assets/small-400px.png +0 -0
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Or use the genuinely npm-free macOS/Linux installer:
|
|
|
16
16
|
curl -fsSL https://12ui.com/install.sh | sh
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
Both paths pin the exact CLI version, install `design` into every detected
|
|
19
|
+
Both paths pin the exact CLI version, install `12ui-design` into every detected
|
|
20
20
|
Codex, Claude Code, Grok CLI, Cursor CLI, Antigravity, and GitHub Copilot CLI
|
|
21
21
|
installation, and
|
|
22
22
|
open the 12ui device-approval page. The resulting user-owned credential has
|
|
@@ -69,7 +69,7 @@ unless `--force` is explicit.
|
|
|
69
69
|
|
|
70
70
|
## One visual interface skill
|
|
71
71
|
|
|
72
|
-
`design` routes every UI, web, and mobile request and covers the whole
|
|
72
|
+
`12ui-design` routes every UI, web, and mobile request and covers the whole
|
|
73
73
|
pipeline. Finished screenshots go straight to conversion, tiny edits stay
|
|
74
74
|
code-only, and a rough brief explores corpus-grounded directions as images
|
|
75
75
|
before anything is built:
|
|
@@ -78,11 +78,14 @@ before anything is built:
|
|
|
78
78
|
references, preserving endpoint order and metrics, when the references
|
|
79
79
|
themselves are the deliverable.
|
|
80
80
|
- Drafting claims one `/api/v1/create` run, dispatches each candidate slot
|
|
81
|
-
once, and downloads the images without re-buying a settled slot.
|
|
81
|
+
once, and downloads the images without re-buying a settled slot. The caller
|
|
82
|
+
authenticates only to 12ui; the service owns its image-provider credentials.
|
|
82
83
|
- Branching is required whenever the deliverable is more than one viewport.
|
|
83
84
|
One `12ui branch execute` run expands one approved design into the 2-8
|
|
84
85
|
screens the server plans, dispatching each only once its dependency and
|
|
85
|
-
footer gates clear
|
|
86
|
+
footer gates clear. Conversion keeps ordered `web_page` viewports in one
|
|
87
|
+
package and emits each complete `web_app`, `mobile_app`, or `immersive` state
|
|
88
|
+
as its own page.
|
|
86
89
|
- Conversion turns a finished PNG, JPEG, or WebP into LayerDoc and any
|
|
87
90
|
supported responsive, fixed, project, or document export, and converts the
|
|
88
91
|
ordered viewports of one page as a single package.
|
|
@@ -106,53 +109,40 @@ manual recreation.
|
|
|
106
109
|
--reference-image ./current-homepage.png \
|
|
107
110
|
--out-dir ./references \
|
|
108
111
|
--count 4
|
|
109
|
-
12ui
|
|
110
|
-
|
|
112
|
+
12ui draft \
|
|
113
|
+
--concept "Editorial architecture homepage with warm materiality" \
|
|
114
|
+
--candidates 4
|
|
115
|
+
12ui next <run-dir> --wait
|
|
111
116
|
12ui branch execute \
|
|
112
|
-
--
|
|
117
|
+
--start <run-dir>/candidates/A.png \
|
|
113
118
|
--concept "Editorial architecture studio site" \
|
|
114
119
|
--scope site \
|
|
115
|
-
--out-dir ./branch \
|
|
116
120
|
--convert html
|
|
117
|
-
12ui branch
|
|
118
|
-
12ui
|
|
119
|
-
--output
|
|
120
|
-
--out-dir ./exports
|
|
121
|
-
--web-profile ./web-profile.json \
|
|
122
|
-
--idempotency-key product-exports-v1
|
|
121
|
+
12ui next <branch-run-dir> --wait
|
|
122
|
+
12ui convert <conversion-id> \
|
|
123
|
+
--output html_fixed,pdf,psd,pptx,sketch \
|
|
124
|
+
--out-dir ./exports
|
|
123
125
|
```
|
|
124
126
|
|
|
125
|
-
`
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
print the key, and always write PNG bytes.
|
|
145
|
-
|
|
146
|
-
`export` downloads one successful base LayerDoc once and dispatches the chosen
|
|
147
|
-
formats in parallel. Project exports require exact web/native profiles; image
|
|
148
|
-
extraction is not repeated. The command creates parent directories as needed
|
|
149
|
-
and accepts an existing destination directory, but refuses before any API
|
|
150
|
-
request when a selected output, its asset directory, or
|
|
151
|
-
`export-manifest.json` already exists.
|
|
152
|
-
|
|
153
|
-
`capabilities --json` reports the exact `projectProfileSchema`, including the
|
|
154
|
-
required fields and `version: 1` constraint, beside the supported
|
|
155
|
-
`projectProfiles` combinations.
|
|
127
|
+
`draft` accepts 2-16 candidates and defaults to four. It records the corpus set,
|
|
128
|
+
hosted run id, stable service slots, output paths, and claim key in `draft.json`
|
|
129
|
+
before dispatch. The detached worker posts only slots whose durable service
|
|
130
|
+
state is still `pending`; in-flight, succeeded, and failed slots are never
|
|
131
|
+
posted again. Successful PNGs are digest-checked and written atomically under
|
|
132
|
+
`<run-dir>/candidates/`, with terminal evidence in `draft.complete.json`.
|
|
133
|
+
|
|
134
|
+
The retired local `image` commands and provider preflight are not part of the
|
|
135
|
+
CLI. Draft never inspects Codex authentication, `OPENAI_API_KEY`, project
|
|
136
|
+
`.env` files, or any other caller-side image-provider credential.
|
|
137
|
+
|
|
138
|
+
`convert <conversion-id>` downloads one successful base LayerDoc once and
|
|
139
|
+
dispatches the chosen formats concurrently. It creates the destination
|
|
140
|
+
directory as needed, but refuses before any API request when a selected output,
|
|
141
|
+
its asset directory, or `export-manifest.json` already exists.
|
|
142
|
+
|
|
143
|
+
`capabilities --json` reports the CLI's exact inputs and outputs, model and
|
|
144
|
+
responsive-quality choices, duration hints, status commands, and durable
|
|
145
|
+
journal/receipt contracts.
|
|
156
146
|
|
|
157
147
|
## Design Corpus inspiration
|
|
158
148
|
|
|
@@ -280,68 +270,64 @@ strict manifest, asset mapping, normalization, page-join, and limit contract.
|
|
|
280
270
|
|
|
281
271
|
```bash
|
|
282
272
|
export TWELVE_UI_API_KEY=your-key
|
|
283
|
-
12ui convert ./screen.png --output layerdoc --out ./
|
|
284
|
-
12ui convert ./screen.png --output html --model pro --width 1440 --out ./
|
|
285
|
-
12ui convert ./screen.layerdoc.json --output
|
|
286
|
-
12ui convert ./screen.layerdoc.json --output pptx --out ./
|
|
287
|
-
12ui convert
|
|
288
|
-
12ui convert ./screen.layerdoc.json --output app_project --profile '{"version":1,"framework":"swiftui","styling":"native","language":"swift","packaging":"project"}' --out ./screen-ios.zip
|
|
273
|
+
12ui convert ./screen.png --output layerdoc --out-dir ./converted
|
|
274
|
+
12ui convert ./screen.png --output html --model pro --width 1440 --out-dir ./responsive --timeout-ms 7200000
|
|
275
|
+
12ui convert ./screen.layerdoc.json --output html_fixed --out-dir ./fixed --idempotency-key screen-html-v1
|
|
276
|
+
12ui convert ./screen.layerdoc.json --output pptx --out-dir ./slides --idempotency-key screen-pptx-v1
|
|
277
|
+
12ui convert <layerdoc-conversion-id> --output html_fixed,pdf,psd,pptx,sketch --out-dir ./exports
|
|
289
278
|
12ui convert package --manifest ./package.json --out-dir ./pages
|
|
290
|
-
12ui resume conversion-id
|
|
279
|
+
12ui resume conversion-id
|
|
291
280
|
```
|
|
292
281
|
|
|
293
282
|
`convert package` submits the ordered viewports of one continuous page as ONE
|
|
294
283
|
package conversion per page, which is what preserves page order and stitching;
|
|
295
|
-
converting a
|
|
284
|
+
converting a continuous page one image at a time loses both. `branch execute`
|
|
285
|
+
uses that shape only for declared `web_page` documents; complete app states are
|
|
286
|
+
separate one-viewport pages. Every viewport of a
|
|
296
287
|
page must share one width, checked locally before anything is bought. A viewport
|
|
297
288
|
may name `sourceConversionId` to reuse an already succeeded conversion of
|
|
298
289
|
exactly those bytes instead of paying for it twice.
|
|
299
290
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
Do not infer progress from a directory listing: staged work is materialized in
|
|
305
|
-
one atomic pass at the end.
|
|
291
|
+
Draft and branch runs detach by default; `--wait` keeps either in the current
|
|
292
|
+
shell. While one runs, `12ui next <run-dir>` reports per-item state, elapsed
|
|
293
|
+
against typical, and what to do next without dispatching replacement work. Do
|
|
294
|
+
not infer progress from a directory listing.
|
|
306
295
|
|
|
307
296
|
Each conversion also writes a verified `<out>.assets/manifest.json` plus every
|
|
308
297
|
signed raster artifact beside the requested result. Set `TWELVE_UI_ORIGIN` to
|
|
309
298
|
override `https://12ui.com`; waits default to the operation expiry and can be
|
|
310
299
|
bounded explicitly with `--timeout-ms`.
|
|
311
300
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
301
|
+
`convert` blocks and records the original filenames before admission. If its
|
|
302
|
+
shell is interrupted after a conversion ID is returned, bare `resume` restores
|
|
303
|
+
every artifact in that original purchase. `--out-dir` keeps the recorded
|
|
304
|
+
basenames but moves recovery into another directory. For an older or externally
|
|
305
|
+
created operation without a local recovery record, the power form names its
|
|
306
|
+
exact output and destination:
|
|
315
307
|
|
|
316
308
|
```bash
|
|
317
|
-
set -o pipefail
|
|
318
|
-
12ui convert ./screen.png \
|
|
319
|
-
--output layerdoc \
|
|
320
|
-
--model standard \
|
|
321
|
-
--idempotency-key screen-layerdoc-v1 \
|
|
322
|
-
--detach | tee ./screen.operation.json
|
|
323
309
|
12ui resume conversion-id --output layerdoc --out ./screen.layerdoc.json
|
|
324
310
|
```
|
|
325
311
|
|
|
326
|
-
If
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
operation/result metadata to stdout; persist it when durable local evidence is
|
|
331
|
-
required.
|
|
312
|
+
If admission fails before emitting an operation ID, repeat the exact request
|
|
313
|
+
with the same explicit `--idempotency-key` so the service can replay the
|
|
314
|
+
original operation without repeating settled paid work. When the key is
|
|
315
|
+
omitted, the client generates a new UUID.
|
|
332
316
|
|
|
333
317
|
Image conversions accept `--model fast|standard|pro`; omission selects
|
|
334
|
-
`standard`.
|
|
318
|
+
`standard`. Beginning with `layerdoc-worker-v148` and still in the current
|
|
319
|
+
`layerdoc-worker-v190`, Fast, Standard, and Pro all use
|
|
335
320
|
`gpt-5.6-terra-low` for primary extraction. Fast retains color-guided
|
|
336
321
|
deterministic inpainting, source-grounded flat-border cutouts, and 1x source crops without
|
|
337
322
|
secondary metadata refinement, generative cleanup, provider background
|
|
338
323
|
removal, or upscaling. Standard has no secondary metadata refinement and uses
|
|
339
|
-
one atomic GPT Image 2 result for each opaque clean target, with Pixelcut-first
|
|
324
|
+
one target-scoped atomic GPT Image 2 result for each opaque clean target, with Pixelcut-first
|
|
340
325
|
alpha isolation and Bria admitted only after a durable hard-invalid or
|
|
341
326
|
reconciled terminal Pixelcut failure. Standard performs no Luna candidate
|
|
342
327
|
review. Pro retains a separate `gpt-5.6-terra-low` metadata-refinement call, a
|
|
343
|
-
|
|
344
|
-
and the complete revision-frozen FAL
|
|
328
|
+
target-scoped atomic clean plus the shared whole-image clean for atomic-region
|
|
329
|
+
targets, one comparative Luna review, and the complete revision-frozen FAL
|
|
330
|
+
alpha portfolio. GPT Image 2 is opaque-only.
|
|
345
331
|
Provider-routed cutouts keep enhanced upscaling; accepted deterministic Fast
|
|
346
332
|
cutouts are resized locally. The option is not accepted for LayerDoc input
|
|
347
333
|
because downstream compilation is deterministic.
|
|
@@ -361,16 +347,85 @@ raster references must still be valid and must belong to the same authenticated
|
|
|
361
347
|
account. The service resolves those owned artifacts directly; it does not fetch
|
|
362
348
|
arbitrary remote URLs. LayerDoc input produces `layerdoc`, `html`,
|
|
363
349
|
`html_fixed`, `svg`, `png`, `jpg` (JPEG), `webp`, `pdf`, `psd`, `pptx`,
|
|
364
|
-
`sketch
|
|
365
|
-
|
|
350
|
+
or `sketch`. The typed Node client and MCP integration documented below retain
|
|
351
|
+
the exact-profile `web_project` and `app_project` integration surface.
|
|
352
|
+
|
|
353
|
+
### Review stored work
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
12ui review ./my-run
|
|
357
|
+
12ui review --all
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
`review` starts a read-only-by-default server on an ephemeral localhost port,
|
|
361
|
+
prints its URL, and opens it in the browser. The page places draft candidates
|
|
362
|
+
side by side, shows branch screens and exported page HTML, and renders conversion
|
|
363
|
+
outputs. Pass one run or workspace directory, or use `--all` to find automatic
|
|
364
|
+
draft workspaces in the current system temp directory and runs under the current
|
|
365
|
+
project's `.12ui` directory. The server never binds to a network interface.
|
|
366
|
+
|
|
367
|
+
This discovery follows the CLI's existing storage contracts: automatic drafts
|
|
368
|
+
live under the system temp root as `12ui-*` directories with `draft.json` and
|
|
369
|
+
`candidates/` (`src/draft-workspace.ts`); branch artifacts live under
|
|
370
|
+
`<run-dir>/branch/{screens,pages}` (`src/branch-run-record.ts`); workspace
|
|
371
|
+
commands append artifacts to `<workspace>/journal.jsonl` (`src/run-journal.ts`),
|
|
372
|
+
and conversions write outputs beside their input unless `--out-dir` selects a
|
|
373
|
+
workspace (`src/cli-convert-command.ts`). An explicit directory is searched for
|
|
374
|
+
those markers so a parent containing several stored runs can be reviewed at
|
|
375
|
+
once.
|
|
376
|
+
|
|
377
|
+
Notes and marks are the only automatic writes. Each run stores them atomically
|
|
378
|
+
in `<run-dir>/review.json`, mode `0600`, and reloads them whenever the page is
|
|
379
|
+
opened. `pick` and `approve` are deliberately separate marks; Clear records no
|
|
380
|
+
mark. Agents can consume the file directly:
|
|
381
|
+
|
|
382
|
+
```json
|
|
383
|
+
{
|
|
384
|
+
"version": 1,
|
|
385
|
+
"updatedAt": "2026-08-21T01:23:45.000Z",
|
|
386
|
+
"items": {
|
|
387
|
+
"draft-candidate-a-0123abcd": {
|
|
388
|
+
"feedback": {
|
|
389
|
+
"note": "Keep the hierarchy and reduce the footer.",
|
|
390
|
+
"mark": "pick",
|
|
391
|
+
"updatedAt": "2026-08-21T01:23:45.000Z"
|
|
392
|
+
},
|
|
393
|
+
"edits": [
|
|
394
|
+
{
|
|
395
|
+
"id": "edit-0123abcd",
|
|
396
|
+
"prompt": "Change the heading to Northstar notes.",
|
|
397
|
+
"createdAt": "2026-08-21T01:25:00.000Z",
|
|
398
|
+
"editOperationId": "edit-operation-id",
|
|
399
|
+
"renderOperationId": "render-operation-id",
|
|
400
|
+
"original": "screen.layerdoc.json",
|
|
401
|
+
"layerdoc": "review/edits/edit-0123abcd.layerdoc.json",
|
|
402
|
+
"html": "review/edits/edit-0123abcd.html"
|
|
403
|
+
}
|
|
404
|
+
]
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
Item keys are stable hashes of their kind and run-relative path. `mark` is
|
|
411
|
+
`"pick"`, `"approve"`, or `null`; `edits` is omitted until an edit succeeds.
|
|
412
|
+
|
|
413
|
+
When an item is a LayerDoc and conversion credentials are configured, the page
|
|
414
|
+
offers an explicit text edit. It shows the price first and asks for confirmation
|
|
415
|
+
before calling the existing `POST /api/v1/edit` contract. A Design edit is a
|
|
416
|
+
metered action: it uses the daily allowance when available or costs $0.03;
|
|
417
|
+
requested image actions may cost another $0.02-$0.30. The review server never
|
|
418
|
+
applies an edit by itself. A successful edit and its deterministic fixed HTML
|
|
419
|
+
render are written under `<run-dir>/review/edits/` and displayed beside the
|
|
420
|
+
original.
|
|
366
421
|
|
|
367
422
|
### The run journal
|
|
368
423
|
|
|
369
424
|
Every command that owns a workspace directory — a draft run directory, a branch
|
|
370
|
-
out-dir, a convert
|
|
425
|
+
out-dir, or a convert output directory — appends what it did to
|
|
371
426
|
`<workspace>/journal.jsonl`. One JSON line when the command begins and one when
|
|
372
|
-
it exits, including refusals and failures. The detached workers that
|
|
373
|
-
`branch execute`, `branch resume
|
|
427
|
+
it exits, including refusals and failures. The detached workers that `draft`,
|
|
428
|
+
`branch execute`, and `branch resume` spawn append to
|
|
374
429
|
the same file as the command that started them, so a run's whole history is in
|
|
375
430
|
one place whether or not the shell that launched it survived.
|
|
376
431
|
|
|
@@ -631,8 +686,7 @@ create metered work. Set an `idempotencyKey` for any ambiguous conversion
|
|
|
631
686
|
create that may need to be repeated; otherwise the conversion client generates
|
|
632
687
|
a new UUID. Corpus retrieval always persists its key before the request.
|
|
633
688
|
|
|
634
|
-
Draft
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
and multi-page packaging; the MCP surface does not duplicate those
|
|
689
|
+
Draft and Branch execute/resume remain deliberate CLI workflows (`12ui draft`
|
|
690
|
+
and `12ui branch`). They coordinate hosted service runs, durable local run
|
|
691
|
+
directories, progress streaming, and multi-page packaging; the MCP surface does not duplicate those
|
|
638
692
|
orchestrators or quietly dispatch paid work from a status call.
|
package/SKILL.md
CHANGED
|
@@ -7,16 +7,16 @@ description: "Runs the complete 12UI visual-interface workflow inside Open
|
|
|
7
7
|
|
|
8
8
|
# 12UI for Open Design
|
|
9
9
|
|
|
10
|
-
`skills/design/SKILL.md` is the whole contract: it covers reference search,
|
|
10
|
+
`skills/12ui-design/SKILL.md` is the whole contract: it covers reference search,
|
|
11
11
|
hosted candidate generation, branching an approved direction across a page,
|
|
12
12
|
site, or multi-state app, and converting a finished image into LayerDoc and
|
|
13
13
|
production exports. The four stage skills it replaced were retired on
|
|
14
14
|
2026-08-16.
|
|
15
15
|
|
|
16
|
-
For a normal interface request, follow `skills/design/SKILL.md` end to end:
|
|
16
|
+
For a normal interface request, follow `skills/12ui-design/SKILL.md` end to end:
|
|
17
17
|
create four corpus-conditioned candidates, present their actual images through
|
|
18
18
|
Open Design's `twelve-ui-direction` choice surface, record the selected slot and
|
|
19
|
-
rationale
|
|
19
|
+
rationale in the Open Design choice, then convert or branch exactly that image.
|
|
20
20
|
Do not substitute Open Design's generic direction cards for the generated 12UI
|
|
21
21
|
candidates.
|
|
22
22
|
|
|
@@ -28,7 +28,7 @@ dispatch paid work when it is absent, rejected, or times out.
|
|
|
28
28
|
Use `12ui` when it is available on `PATH`. Otherwise invoke the pinned CLI that
|
|
29
29
|
the plugin's `open-design.json` MCP entry uses:
|
|
30
30
|
|
|
31
|
-
npx -y @12ui/design@0.2.
|
|
31
|
+
npx -y @12ui/design@0.2.29 <command> ...
|
|
32
32
|
|
|
33
33
|
Run `12ui auth status --json` (or its pinned `npx` equivalent) before the paid
|
|
34
34
|
preflight. A desktop user can authenticate with `12ui auth login`; a headless
|
|
@@ -37,6 +37,6 @@ the plugin manifest, command output, or generated artifacts.
|
|
|
37
37
|
|
|
38
38
|
Treat the generated HTML or project export as the implementation, materialize
|
|
39
39
|
it in the Open Design project workspace, and publish it as a live artifact for
|
|
40
|
-
preview and critique. Preserve the 12UI run directory,
|
|
40
|
+
preview and critique. Preserve the 12UI run directory, chosen-image rationale,
|
|
41
41
|
conversion IDs, and export manifests with the project so reruns can resume
|
|
42
42
|
settled work instead of buying it again.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch-completion.d.ts","sourceRoot":"","sources":["../src/branch-completion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"branch-completion.d.ts","sourceRoot":"","sources":["../src/branch-completion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAKzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAE1B,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,eAAe,GAAI,MAAM;IACpC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;IACrE,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACpC,KAAG,gBAoLH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM;IACpC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,KAAG,KAAK,GAAG,IAwBX,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BRANCH_WORKFLOW_REVISION, branchConceptDigest } from './branch-identity.js';
|
|
2
|
+
import { branchConversionPages, branchPackageSourcePage, } from './branch-page-packaging.js';
|
|
2
3
|
import { branchBlockedSlots } from './branch-schedule.js';
|
|
3
4
|
import { branchPlanPath, } from './branch-run-record.js';
|
|
4
5
|
/**
|
|
@@ -22,10 +23,14 @@ export const buildCompletion = (args) => {
|
|
|
22
23
|
footer: screen.footer,
|
|
23
24
|
dependsOnSlot: screen.dependsOnSlot,
|
|
24
25
|
}))).map((entry) => [entry.slot, entry]));
|
|
25
|
-
const
|
|
26
|
+
const packagePages = branchConversionPages(args.plan);
|
|
27
|
+
const packagePlacementBySlot = new Map(packagePages.flatMap((page, index) => (page.slots.map((slot) => [slot, { page, index }]))));
|
|
26
28
|
const screens = args.plan.screens.map((screen) => {
|
|
27
29
|
const downloaded = args.screens.get(screen.slot);
|
|
28
30
|
const block = blocked.get(screen.slot);
|
|
31
|
+
const packaged = packagePlacementBySlot.get(screen.slot);
|
|
32
|
+
const packagedPageIndex = packaged?.index ?? screen.pageIndex;
|
|
33
|
+
const packagedViewportOrdinal = packaged?.page.packageLineage ? 1 : screen.viewportOrdinal;
|
|
29
34
|
const status = screen.status === 'succeeded' && downloaded
|
|
30
35
|
? 'succeeded'
|
|
31
36
|
: block
|
|
@@ -33,9 +38,15 @@ export const buildCompletion = (args) => {
|
|
|
33
38
|
: 'failed';
|
|
34
39
|
return {
|
|
35
40
|
slot: screen.slot,
|
|
36
|
-
pageIndex:
|
|
37
|
-
pageId:
|
|
38
|
-
viewportOrdinal:
|
|
41
|
+
pageIndex: packagedPageIndex,
|
|
42
|
+
pageId: packaged?.page.id ?? `p${screen.pageIndex}`,
|
|
43
|
+
viewportOrdinal: packagedViewportOrdinal,
|
|
44
|
+
...(packagedPageIndex === screen.pageIndex
|
|
45
|
+
? {}
|
|
46
|
+
: { generationPageIndex: screen.pageIndex }),
|
|
47
|
+
...(packagedViewportOrdinal === screen.viewportOrdinal
|
|
48
|
+
? {}
|
|
49
|
+
: { generationViewportOrdinal: screen.viewportOrdinal }),
|
|
39
50
|
status,
|
|
40
51
|
direction: screen.direction,
|
|
41
52
|
...(downloaded
|
|
@@ -56,16 +67,27 @@ export const buildCompletion = (args) => {
|
|
|
56
67
|
const succeededCount = screens.filter((screen) => screen.status === 'succeeded').length;
|
|
57
68
|
const blockedCount = screens.filter((screen) => screen.status === 'blocked').length;
|
|
58
69
|
const failedCount = screens.length - succeededCount - blockedCount;
|
|
59
|
-
const pages =
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
const pages = packagePages.map((page, index) => {
|
|
71
|
+
const source = branchPackageSourcePage(page);
|
|
72
|
+
const sourceViewportOrdinal = page.packageLineage?.viewportOrdinal;
|
|
73
|
+
return {
|
|
74
|
+
index,
|
|
75
|
+
id: page.id,
|
|
76
|
+
kind: page.kind,
|
|
77
|
+
title: page.title,
|
|
78
|
+
slots: page.slots,
|
|
79
|
+
startsFromWinner: page.startsFromWinner,
|
|
80
|
+
...(page.synthesized ? { synthesized: true } : {}),
|
|
81
|
+
...(source.index === index && source.id === page.id && sourceViewportOrdinal === undefined
|
|
82
|
+
? {}
|
|
83
|
+
: {
|
|
84
|
+
sourcePageIndex: source.index,
|
|
85
|
+
sourcePageId: source.id,
|
|
86
|
+
...(sourceViewportOrdinal === undefined ? {} : { sourceViewportOrdinal }),
|
|
87
|
+
}),
|
|
88
|
+
...(args.conversions.has(page.id) ? { conversion: args.conversions.get(page.id) } : {}),
|
|
89
|
+
};
|
|
90
|
+
});
|
|
69
91
|
const convertedPageCount = pages.filter((page) => (page.conversion?.status === 'succeeded')).length;
|
|
70
92
|
const notes = [];
|
|
71
93
|
if (blockedCount > 0) {
|
|
@@ -132,6 +154,7 @@ export const buildCompletion = (args) => {
|
|
|
132
154
|
failedCount,
|
|
133
155
|
blockedCount,
|
|
134
156
|
pageCount: pages.length,
|
|
157
|
+
logicalPageCount: args.plan.pages.length,
|
|
135
158
|
convertedPageCount,
|
|
136
159
|
...(winnerPagesFailed.length > 0 ? { winnerPageFailed: true } : {}),
|
|
137
160
|
...(trim ? { trimmed: trim } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch-completion.js","sourceRoot":"","sources":["../src/branch-completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"branch-completion.js","sourceRoot":"","sources":["../src/branch-completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch-execution.d.ts","sourceRoot":"","sources":["../src/branch-execution.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"branch-execution.d.ts","sourceRoot":"","sources":["../src/branch-execution.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAa5B,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AAgBnC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAiBrC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,oBAAoB,KAAG,MAsB/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,qBAAqB,KAAG,MAQlE,CAAC;AAqCF,eAAO,MAAM,gBAAgB,GAAU,MAAM;IAC3C,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,CAAC,EAAE,+BAA+B,CAAC;IAChD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,KAAG,OAAO,CAAC,qBAAqB,CAyXhC,CAAC"}
|
package/dist/branch-execution.js
CHANGED
|
@@ -5,6 +5,7 @@ import { buildCompletion, terminalFailure } from './branch-completion.js';
|
|
|
5
5
|
import { createRunMaterializer } from './branch-materialize.js';
|
|
6
6
|
import { branchScreenPath } from './branch-downloads.js';
|
|
7
7
|
import { createBranchPageConversions } from './branch-page-conversion.js';
|
|
8
|
+
import { branchConversionPages } from './branch-page-packaging.js';
|
|
8
9
|
import { invalidateConversionReceipts, readLegacyConversionReceipts, recordConversionReceipt, } from './conversion-receipt.js';
|
|
9
10
|
import { BRANCH_PAGE_CONCURRENCY_DEFAULT } from './cli-progress.js';
|
|
10
11
|
import { applyBranchEnvelope, normalizeBranchPlan, } from './branch-plan.js';
|
|
@@ -31,8 +32,9 @@ const BUILD_PLAN_RETRIES = 3;
|
|
|
31
32
|
* rather than only in the record nobody reads until afterwards.
|
|
32
33
|
*/
|
|
33
34
|
export const describeBranchPlan = (plan) => {
|
|
34
|
-
const
|
|
35
|
-
const
|
|
35
|
+
const outputPages = branchConversionPages(plan);
|
|
36
|
+
const approved = outputPages.filter((page) => page.startsFromWinner).length;
|
|
37
|
+
const rest = outputPages.length - approved;
|
|
36
38
|
const composition = approved === 0
|
|
37
39
|
? ', '
|
|
38
40
|
: rest === 0
|
|
@@ -46,7 +48,11 @@ export const describeBranchPlan = (plan) => {
|
|
|
46
48
|
: `; --max-screens ${trim.maxScreens} leaves out ${trim.slots.length} planned screen(s):`
|
|
47
49
|
+ ` ${trim.slots.join(', ')}`
|
|
48
50
|
: '';
|
|
49
|
-
|
|
51
|
+
const packaging = outputPages.length === plan.pages.length
|
|
52
|
+
? `${plan.pages.length} page(s)`
|
|
53
|
+
: `${plan.pages.length} logical page group(s) packaged as ${outputPages.length}`
|
|
54
|
+
+ ' conversion page(s), with complete app states separate';
|
|
55
|
+
return `${packaging}${composition}${plan.screens.length} screen(s) to generate${left}`;
|
|
50
56
|
};
|
|
51
57
|
export const deriveBranchRunKey = (inputs) => (inputs.idempotencyKey ?? branchRunKey({
|
|
52
58
|
winner: inputs.winner.kind === 'run'
|
|
@@ -125,6 +131,8 @@ export const executeBranchRun = async (args) => {
|
|
|
125
131
|
let progressPhase = 'claiming';
|
|
126
132
|
let progressRunId = '';
|
|
127
133
|
let progressScreens = [];
|
|
134
|
+
let progressPageCount;
|
|
135
|
+
let progressLogicalPageCount;
|
|
128
136
|
const publish = () => {
|
|
129
137
|
pendingProgress = {
|
|
130
138
|
version: 1,
|
|
@@ -133,6 +141,10 @@ export const executeBranchRun = async (args) => {
|
|
|
133
141
|
startedAt,
|
|
134
142
|
updatedAt: new Date().toISOString(),
|
|
135
143
|
screens: progressScreens,
|
|
144
|
+
...(progressPageCount === undefined ? {} : { pageCount: progressPageCount }),
|
|
145
|
+
...(progressLogicalPageCount === undefined
|
|
146
|
+
? {}
|
|
147
|
+
: { logicalPageCount: progressLogicalPageCount }),
|
|
136
148
|
...(packageProgress.size > 0 ? { packages: [...packageProgress.values()] } : {}),
|
|
137
149
|
};
|
|
138
150
|
drainProgress();
|
|
@@ -228,6 +240,9 @@ export const executeBranchRun = async (args) => {
|
|
|
228
240
|
});
|
|
229
241
|
await writeBranchPlanRecord(branchPlanPath(outDir), plan);
|
|
230
242
|
emit({ kind: 'phase', phase: 'plan', detail: describeBranchPlan(plan) });
|
|
243
|
+
const packagePageCount = branchConversionPages(plan).length;
|
|
244
|
+
progressPageCount = packagePageCount;
|
|
245
|
+
progressLogicalPageCount = plan.pages.length;
|
|
231
246
|
const convert = inputs.convert;
|
|
232
247
|
const packageClient = args.packageClient;
|
|
233
248
|
// Refused before the run buys anything rather than after every screen is paid
|
|
@@ -236,7 +251,8 @@ export const executeBranchRun = async (args) => {
|
|
|
236
251
|
throw new Error('A conversion package client is required for --convert');
|
|
237
252
|
// True whenever the run converts: `normalizeBranchPlan` guarantees a source
|
|
238
253
|
// page in both scopes, so the winner's bytes are always part of the work.
|
|
239
|
-
const needsWinner = Boolean(convert) && plan
|
|
254
|
+
const needsWinner = Boolean(convert) && branchConversionPages(plan)
|
|
255
|
+
.some((page) => page.startsFromWinner);
|
|
240
256
|
const materializer = createRunMaterializer({
|
|
241
257
|
client: args.branchClient,
|
|
242
258
|
runId: envelope.id,
|
|
@@ -344,14 +360,17 @@ export const executeBranchRun = async (args) => {
|
|
|
344
360
|
* ones this overlap missed.
|
|
345
361
|
*/
|
|
346
362
|
const convertWholePages = (livePlan) => {
|
|
347
|
-
for (const page of livePlan
|
|
363
|
+
for (const page of branchConversionPages(livePlan)) {
|
|
348
364
|
const own = livePlan.screens.filter((screen) => page.slots.includes(screen.slot));
|
|
349
|
-
if (
|
|
365
|
+
if (!own.every((screen) => screen.status === 'succeeded'))
|
|
350
366
|
continue;
|
|
351
367
|
pages?.start(livePlan, page);
|
|
352
368
|
}
|
|
353
369
|
};
|
|
354
370
|
let stopped = null;
|
|
371
|
+
// A winner-only conversion page is ready before any generated state. This is
|
|
372
|
+
// common after app-state splitting, so let it overlap generation too.
|
|
373
|
+
convertWholePages(plan);
|
|
355
374
|
publishProgress('dispatching', envelope.id, branchProgressScreens(plan, {}));
|
|
356
375
|
if (plan.screens.length > 0) {
|
|
357
376
|
const dispatched = await runBranchDispatch({
|
|
@@ -390,9 +409,10 @@ export const executeBranchRun = async (args) => {
|
|
|
390
409
|
emit({
|
|
391
410
|
kind: 'phase',
|
|
392
411
|
phase: 'convert',
|
|
393
|
-
detail:
|
|
412
|
+
detail: `${packagePageCount} package conversion page(s): continuous documents stay joined,`
|
|
413
|
+
+ ` complete app states stay separate; up to ${args.pageConcurrency ?? BRANCH_PAGE_CONCURRENCY_DEFAULT} at a time`,
|
|
394
414
|
});
|
|
395
|
-
for (const page of plan
|
|
415
|
+
for (const page of branchConversionPages(plan))
|
|
396
416
|
pages?.start(plan, page);
|
|
397
417
|
}
|
|
398
418
|
// Every page settles, including any that started while screens were still
|