@12ui/design 0.2.75 → 0.2.77
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 +126 -116
- package/SKILL.md +33 -28
- package/dist/cli-arguments.d.ts.map +1 -1
- package/dist/cli-arguments.js +21 -7
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli-capabilities.d.ts +3 -2
- package/dist/cli-capabilities.d.ts.map +1 -1
- package/dist/cli-capabilities.js +2 -1
- package/dist/cli-capabilities.js.map +1 -1
- package/dist/cli-codex-readiness.d.ts +6 -0
- package/dist/cli-codex-readiness.d.ts.map +1 -1
- package/dist/cli-codex-readiness.js +12 -12
- package/dist/cli-codex-readiness.js.map +1 -1
- package/dist/cli-help/design.d.ts +2 -2
- package/dist/cli-help/design.d.ts.map +1 -1
- package/dist/cli-help/design.js +3 -1
- package/dist/cli-help/design.js.map +1 -1
- package/dist/cli-help/index.d.ts +19 -9
- package/dist/cli-help/index.d.ts.map +1 -1
- package/dist/cli-help/scene.d.ts +15 -5
- package/dist/cli-help/scene.d.ts.map +1 -1
- package/dist/cli-help/scene.js +44 -0
- package/dist/cli-help/scene.js.map +1 -1
- package/dist/cli-help/workflow.d.ts +2 -2
- package/dist/cli-help/workflow.d.ts.map +1 -1
- package/dist/cli-help/workflow.js +4 -3
- package/dist/cli-help/workflow.js.map +1 -1
- package/dist/cli-review-command.d.ts.map +1 -1
- package/dist/cli-review-command.js +2 -0
- package/dist/cli-review-command.js.map +1 -1
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +6 -0
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-scene-command.d.ts.map +1 -1
- package/dist/cli-scene-command.js +39 -6
- package/dist/cli-scene-command.js.map +1 -1
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +8 -6
- package/dist/cli-usage.js.map +1 -1
- package/dist/cli-workspace-draw.d.ts +1 -11
- package/dist/cli-workspace-draw.d.ts.map +1 -1
- package/dist/cli-workspace-draw.js +17 -18
- package/dist/cli-workspace-draw.js.map +1 -1
- package/dist/cli-workspace-runner.d.ts +30 -0
- package/dist/cli-workspace-runner.d.ts.map +1 -0
- package/dist/cli-workspace-runner.js +105 -0
- package/dist/cli-workspace-runner.js.map +1 -0
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +26 -2
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/mcp-slate-command.d.ts +9 -0
- package/dist/mcp-slate-command.d.ts.map +1 -1
- package/dist/mcp-slate-command.js +19 -5
- package/dist/mcp-slate-command.js.map +1 -1
- package/dist/mcp-slate-image.js +1 -1
- package/dist/mcp-slate-image.js.map +1 -1
- package/dist/mcp-slate-tool-defs.js +1 -1
- package/dist/mcp-slate-tool-defs.js.map +1 -1
- package/dist/mcp-slate-ui-copy.d.ts +403 -33
- package/dist/mcp-slate-ui-copy.d.ts.map +1 -1
- package/dist/mcp-slate-ui-copy.js +247 -57
- package/dist/mcp-slate-ui-copy.js.map +1 -1
- package/dist/mcp-slate-ui-icu.d.ts +47 -0
- package/dist/mcp-slate-ui-icu.d.ts.map +1 -0
- package/dist/mcp-slate-ui-icu.js +229 -0
- package/dist/mcp-slate-ui-icu.js.map +1 -0
- package/dist/mcp-slate-ui-locale-match.d.ts +12 -0
- package/dist/mcp-slate-ui-locale-match.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locale-match.js +34 -0
- package/dist/mcp-slate-ui-locale-match.js.map +1 -0
- package/dist/mcp-slate-ui-locales/de-DE.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/de-DE.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/de-DE.js +217 -0
- package/dist/mcp-slate-ui-locales/de-DE.js.map +1 -0
- package/dist/mcp-slate-ui-locales/es-419.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/es-419.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/es-419.js +217 -0
- package/dist/mcp-slate-ui-locales/es-419.js.map +1 -0
- package/dist/mcp-slate-ui-locales/es-ES.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/es-ES.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/es-ES.js +217 -0
- package/dist/mcp-slate-ui-locales/es-ES.js.map +1 -0
- package/dist/mcp-slate-ui-locales/fr-FR.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/fr-FR.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/fr-FR.js +217 -0
- package/dist/mcp-slate-ui-locales/fr-FR.js.map +1 -0
- package/dist/mcp-slate-ui-locales/hi-IN.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/hi-IN.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/hi-IN.js +217 -0
- package/dist/mcp-slate-ui-locales/hi-IN.js.map +1 -0
- package/dist/mcp-slate-ui-locales/index.d.ts +11 -0
- package/dist/mcp-slate-ui-locales/index.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/index.js +34 -0
- package/dist/mcp-slate-ui-locales/index.js.map +1 -0
- package/dist/mcp-slate-ui-locales/it-IT.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/it-IT.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/it-IT.js +217 -0
- package/dist/mcp-slate-ui-locales/it-IT.js.map +1 -0
- package/dist/mcp-slate-ui-locales/ja-JP.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/ja-JP.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/ja-JP.js +217 -0
- package/dist/mcp-slate-ui-locales/ja-JP.js.map +1 -0
- package/dist/mcp-slate-ui-locales/ko-KR.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/ko-KR.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/ko-KR.js +217 -0
- package/dist/mcp-slate-ui-locales/ko-KR.js.map +1 -0
- package/dist/mcp-slate-ui-locales/pt-BR.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/pt-BR.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/pt-BR.js +217 -0
- package/dist/mcp-slate-ui-locales/pt-BR.js.map +1 -0
- package/dist/mcp-slate-ui-locales/zh-CN.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/zh-CN.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/zh-CN.js +217 -0
- package/dist/mcp-slate-ui-locales/zh-CN.js.map +1 -0
- package/dist/mcp-slate-ui-locales/zh-TW.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/zh-TW.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/zh-TW.js +217 -0
- package/dist/mcp-slate-ui-locales/zh-TW.js.map +1 -0
- package/dist/mcp-slate-ui-script-bridge.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-bridge.js +8 -9
- package/dist/mcp-slate-ui-script-bridge.js.map +1 -1
- package/dist/mcp-slate-ui-script-dialog.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-dialog.js +60 -30
- package/dist/mcp-slate-ui-script-dialog.js.map +1 -1
- package/dist/mcp-slate-ui-script-inline.d.ts +9 -6
- package/dist/mcp-slate-ui-script-inline.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inline.js +91 -46
- package/dist/mcp-slate-ui-script-inline.js.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-collage.d.ts +20 -0
- package/dist/mcp-slate-ui-script-inspiration-collage.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration-collage.js +68 -0
- package/dist/mcp-slate-ui-script-inspiration-collage.js.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration-grid.d.ts +26 -0
- package/dist/mcp-slate-ui-script-inspiration-grid.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration-grid.js +246 -0
- package/dist/mcp-slate-ui-script-inspiration-grid.js.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration.d.ts +10 -9
- package/dist/mcp-slate-ui-script-inspiration.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration.js +161 -120
- package/dist/mcp-slate-ui-script-inspiration.js.map +1 -1
- package/dist/mcp-slate-ui-script-l10n.d.ts +29 -0
- package/dist/mcp-slate-ui-script-l10n.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-l10n.js +135 -0
- package/dist/mcp-slate-ui-script-l10n.js.map +1 -0
- package/dist/mcp-slate-ui-script-more.d.ts +3 -2
- package/dist/mcp-slate-ui-script-more.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-more.js +19 -18
- package/dist/mcp-slate-ui-script-more.js.map +1 -1
- package/dist/mcp-slate-ui-script-pause.d.ts +33 -0
- package/dist/mcp-slate-ui-script-pause.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-pause.js +217 -0
- package/dist/mcp-slate-ui-script-pause.js.map +1 -0
- package/dist/mcp-slate-ui-script-remote.d.ts +2 -0
- package/dist/mcp-slate-ui-script-remote.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-remote.js +39 -6
- package/dist/mcp-slate-ui-script-remote.js.map +1 -1
- package/dist/mcp-slate-ui-script-scribble.js +1 -1
- package/dist/mcp-slate-ui-script-select.js +6 -6
- package/dist/mcp-slate-ui-script-stage.d.ts +3 -2
- package/dist/mcp-slate-ui-script-stage.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-stage.js +31 -19
- package/dist/mcp-slate-ui-script-stage.js.map +1 -1
- package/dist/mcp-slate-ui-script-state.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-state.js +77 -57
- package/dist/mcp-slate-ui-script-state.js.map +1 -1
- package/dist/mcp-slate-ui-script.d.ts +2 -2
- package/dist/mcp-slate-ui-script.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script.js +21 -7
- package/dist/mcp-slate-ui-script.js.map +1 -1
- package/dist/mcp-slate-ui-styles-dialog.d.ts +6 -7
- package/dist/mcp-slate-ui-styles-dialog.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles-dialog.js +13 -29
- package/dist/mcp-slate-ui-styles-dialog.js.map +1 -1
- package/dist/mcp-slate-ui-styles-inspiration.d.ts +18 -0
- package/dist/mcp-slate-ui-styles-inspiration.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-inspiration.js +43 -0
- package/dist/mcp-slate-ui-styles-inspiration.js.map +1 -0
- package/dist/mcp-slate-ui-styles-pause.d.ts +10 -0
- package/dist/mcp-slate-ui-styles-pause.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-pause.js +25 -0
- package/dist/mcp-slate-ui-styles-pause.js.map +1 -0
- package/dist/mcp-slate-ui-styles-stage.d.ts +10 -6
- package/dist/mcp-slate-ui-styles-stage.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles-stage.js +24 -16
- package/dist/mcp-slate-ui-styles-stage.js.map +1 -1
- package/dist/mcp-slate-ui-styles.d.ts +12 -5
- package/dist/mcp-slate-ui-styles.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles.js +38 -21
- package/dist/mcp-slate-ui-styles.js.map +1 -1
- package/dist/mcp-slate-ui.d.ts +11 -3
- package/dist/mcp-slate-ui.d.ts.map +1 -1
- package/dist/mcp-slate-ui.js +24 -16
- package/dist/mcp-slate-ui.js.map +1 -1
- package/dist/mcp-workflow-tools.js +3 -3
- package/dist/mcp-workflow-tools.js.map +1 -1
- package/dist/mosaic-bands.d.ts +44 -0
- package/dist/mosaic-bands.d.ts.map +1 -0
- package/dist/mosaic-bands.js +153 -0
- package/dist/mosaic-bands.js.map +1 -0
- package/dist/review-discovery.d.ts.map +1 -1
- package/dist/review-discovery.js +36 -54
- package/dist/review-discovery.js.map +1 -1
- package/dist/review-page.d.ts.map +1 -1
- package/dist/review-page.js +2 -1
- package/dist/review-page.js.map +1 -1
- package/dist/review-run-roots.d.ts +40 -0
- package/dist/review-run-roots.d.ts.map +1 -0
- package/dist/review-run-roots.js +94 -0
- package/dist/review-run-roots.js.map +1 -0
- package/dist/review-server.d.ts +2 -0
- package/dist/review-server.d.ts.map +1 -1
- package/dist/review-server.js +2 -0
- package/dist/review-server.js.map +1 -1
- package/dist/review-types.d.ts +10 -0
- package/dist/review-types.d.ts.map +1 -1
- package/dist/scene/camera-diagnostics.d.ts +61 -0
- package/dist/scene/camera-diagnostics.d.ts.map +1 -0
- package/dist/scene/camera-diagnostics.js +166 -0
- package/dist/scene/camera-diagnostics.js.map +1 -0
- package/dist/scene/camera-solve.d.ts +2 -0
- package/dist/scene/camera-solve.d.ts.map +1 -1
- package/dist/scene/camera-solve.js +59 -42
- package/dist/scene/camera-solve.js.map +1 -1
- package/dist/scene/capture.d.ts +24 -0
- package/dist/scene/capture.d.ts.map +1 -1
- package/dist/scene/capture.js +53 -2
- package/dist/scene/capture.js.map +1 -1
- package/dist/scene/convert-run.d.ts +30 -0
- package/dist/scene/convert-run.d.ts.map +1 -0
- package/dist/scene/convert-run.js +135 -0
- package/dist/scene/convert-run.js.map +1 -0
- package/dist/scene/media-query.d.ts +21 -0
- package/dist/scene/media-query.d.ts.map +1 -0
- package/dist/scene/media-query.js +208 -0
- package/dist/scene/media-query.js.map +1 -0
- package/dist/scene/page-css.d.ts +38 -0
- package/dist/scene/page-css.d.ts.map +1 -0
- package/dist/scene/page-css.js +210 -0
- package/dist/scene/page-css.js.map +1 -0
- package/dist/scene/page-images.d.ts +33 -0
- package/dist/scene/page-images.d.ts.map +1 -0
- package/dist/scene/page-images.js +53 -0
- package/dist/scene/page-images.js.map +1 -0
- package/dist/scene/page-merge.d.ts +41 -0
- package/dist/scene/page-merge.d.ts.map +1 -0
- package/dist/scene/page-merge.js +197 -0
- package/dist/scene/page-merge.js.map +1 -0
- package/dist/scene/responsive-bands.d.ts +19 -0
- package/dist/scene/responsive-bands.d.ts.map +1 -0
- package/dist/scene/responsive-bands.js +25 -0
- package/dist/scene/responsive-bands.js.map +1 -0
- package/dist/scene/scene-index.d.ts +10 -0
- package/dist/scene/scene-index.d.ts.map +1 -0
- package/dist/scene/scene-index.js +43 -0
- package/dist/scene/scene-index.js.map +1 -0
- package/dist/scene/scene-merge.d.ts +29 -0
- package/dist/scene/scene-merge.d.ts.map +1 -0
- package/dist/scene/scene-merge.js +130 -0
- package/dist/scene/scene-merge.js.map +1 -0
- package/dist/scene/scene-verbs.d.ts +1 -1
- package/dist/scene/scene-verbs.d.ts.map +1 -1
- package/dist/scene/scene-verbs.js +1 -1
- package/dist/scene/scene-verbs.js.map +1 -1
- package/dist/scene/serve-detach.d.ts +23 -0
- package/dist/scene/serve-detach.d.ts.map +1 -0
- package/dist/scene/serve-detach.js +92 -0
- package/dist/scene/serve-detach.js.map +1 -0
- package/dist/scene/static-server.d.ts +2 -0
- package/dist/scene/static-server.d.ts.map +1 -1
- package/dist/scene/static-server.js +3 -0
- package/dist/scene/static-server.js.map +1 -1
- package/dist/scene/symmetric-eigen.d.ts +12 -0
- package/dist/scene/symmetric-eigen.d.ts.map +1 -0
- package/dist/scene/symmetric-eigen.js +43 -0
- package/dist/scene/symmetric-eigen.js.map +1 -0
- package/dist/slate-actions.d.ts +3 -3
- package/dist/slate-actions.d.ts.map +1 -1
- package/dist/slate-actions.js +9 -8
- package/dist/slate-actions.js.map +1 -1
- package/dist/slate-browser-host-script.d.ts +4 -0
- package/dist/slate-browser-host-script.d.ts.map +1 -1
- package/dist/slate-browser-host-script.js +25 -6
- package/dist/slate-browser-host-script.js.map +1 -1
- package/dist/slate-browser-host.d.ts +2 -1
- package/dist/slate-browser-host.d.ts.map +1 -1
- package/dist/slate-browser-host.js +18 -5
- package/dist/slate-browser-host.js.map +1 -1
- package/dist/slate-commit.js +7 -7
- package/dist/slate-commit.js.map +1 -1
- package/dist/slate-corpus.d.ts.map +1 -1
- package/dist/slate-corpus.js +3 -2
- package/dist/slate-corpus.js.map +1 -1
- package/dist/slate-edit-runner.d.ts.map +1 -1
- package/dist/slate-edit-runner.js +5 -4
- package/dist/slate-edit-runner.js.map +1 -1
- package/dist/slate-editability.d.ts +2 -0
- package/dist/slate-editability.d.ts.map +1 -1
- package/dist/slate-editability.js +1 -1
- package/dist/slate-editability.js.map +1 -1
- package/dist/slate-errors.d.ts +7 -1
- package/dist/slate-errors.d.ts.map +1 -1
- package/dist/slate-errors.js +3 -2
- package/dist/slate-errors.js.map +1 -1
- package/dist/slate-handoff-options.d.ts +2 -1
- package/dist/slate-handoff-options.d.ts.map +1 -1
- package/dist/slate-handoff-options.js +2 -2
- package/dist/slate-handoff-options.js.map +1 -1
- package/dist/slate-handoff.js +1 -1
- package/dist/slate-handoff.js.map +1 -1
- package/dist/slate-image-executor.d.ts +18 -1
- package/dist/slate-image-executor.d.ts.map +1 -1
- package/dist/slate-image-executor.js +1 -0
- package/dist/slate-image-executor.js.map +1 -1
- package/dist/slate-inspiration.js +2 -2
- package/dist/slate-inspiration.js.map +1 -1
- package/dist/slate-local-image.d.ts.map +1 -1
- package/dist/slate-local-image.js +4 -1
- package/dist/slate-local-image.js.map +1 -1
- package/dist/slate-lock.js +1 -1
- package/dist/slate-lock.js.map +1 -1
- package/dist/slate-resume.js +6 -6
- package/dist/slate-resume.js.map +1 -1
- package/dist/slate-round-params.d.ts +3 -0
- package/dist/slate-round-params.d.ts.map +1 -1
- package/dist/slate-round-params.js +5 -0
- package/dist/slate-round-params.js.map +1 -1
- package/dist/slate-round-queries.d.ts +18 -0
- package/dist/slate-round-queries.d.ts.map +1 -0
- package/dist/slate-round-queries.js +29 -0
- package/dist/slate-round-queries.js.map +1 -0
- package/dist/slate-round-runner.d.ts.map +1 -1
- package/dist/slate-round-runner.js +12 -9
- package/dist/slate-round-runner.js.map +1 -1
- package/dist/slate-round-search.js +5 -5
- package/dist/slate-round-search.js.map +1 -1
- package/dist/slate-run-action.d.ts.map +1 -1
- package/dist/slate-run-action.js +2 -1
- package/dist/slate-run-action.js.map +1 -1
- package/dist/slate-runner-context.d.ts +3 -1
- package/dist/slate-runner-context.d.ts.map +1 -1
- package/dist/slate-runner-context.js +4 -3
- package/dist/slate-runner-context.js.map +1 -1
- package/dist/slate-runner-failure.d.ts +7 -1
- package/dist/slate-runner-failure.d.ts.map +1 -1
- package/dist/slate-runner-failure.js +6 -5
- package/dist/slate-runner-failure.js.map +1 -1
- package/dist/slate-runtime.d.ts.map +1 -1
- package/dist/slate-runtime.js +1 -0
- package/dist/slate-runtime.js.map +1 -1
- package/dist/slate-versions.js +3 -3
- package/dist/slate-versions.js.map +1 -1
- package/dist/slate-view-contract.d.ts +62 -1
- package/dist/slate-view-contract.d.ts.map +1 -1
- package/dist/slate-view-contract.js +30 -0
- package/dist/slate-view-contract.js.map +1 -1
- package/dist/slate-view.d.ts.map +1 -1
- package/dist/slate-view.js +19 -3
- package/dist/slate-view.js.map +1 -1
- package/dist/slate-workspace-parse.d.ts.map +1 -1
- package/dist/slate-workspace-parse.js +22 -0
- package/dist/slate-workspace-parse.js.map +1 -1
- package/dist/slate-workspace-types.d.ts +2 -0
- package/dist/slate-workspace-types.d.ts.map +1 -1
- package/dist/workflow/adapter-12ui.d.ts.map +1 -1
- package/dist/workflow/adapter-12ui.js +3 -5
- package/dist/workflow/adapter-12ui.js.map +1 -1
- package/dist/workflow/providers.d.ts.map +1 -1
- package/dist/workflow/providers.js +5 -2
- package/dist/workflow/providers.js.map +1 -1
- package/dist/workflow/recipes.d.ts +1 -2
- package/dist/workflow/recipes.d.ts.map +1 -1
- package/dist/workflow/recipes.js +6 -18
- package/dist/workflow/recipes.js.map +1 -1
- package/dist/workflow/routing.d.ts.map +1 -1
- package/dist/workflow/routing.js +3 -1
- package/dist/workflow/routing.js.map +1 -1
- package/dist/workflow/types.d.ts +7 -0
- package/dist/workflow/types.d.ts.map +1 -1
- package/dist/workflow/types.js +7 -0
- package/dist/workflow/types.js.map +1 -1
- package/dist/workspace-draw-client.d.ts +42 -1
- package/dist/workspace-draw-client.d.ts.map +1 -1
- package/dist/workspace-draw-client.js +56 -7
- package/dist/workspace-draw-client.js.map +1 -1
- package/dist/workspace-draw-codex.d.ts +9 -4
- package/dist/workspace-draw-codex.d.ts.map +1 -1
- package/dist/workspace-draw-codex.js +17 -3
- package/dist/workspace-draw-codex.js.map +1 -1
- package/dist/workspace-draw-messages.d.ts +24 -0
- package/dist/workspace-draw-messages.d.ts.map +1 -1
- package/dist/workspace-draw-messages.js +26 -2
- package/dist/workspace-draw-messages.js.map +1 -1
- package/dist/workspace-draw-run.d.ts +19 -1
- package/dist/workspace-draw-run.d.ts.map +1 -1
- package/dist/workspace-draw-run.js +76 -3
- package/dist/workspace-draw-run.js.map +1 -1
- package/dist/workspace-draw-store.d.ts +2 -0
- package/dist/workspace-draw-store.d.ts.map +1 -1
- package/dist/workspace-draw-store.js +3 -1
- package/dist/workspace-draw-store.js.map +1 -1
- package/dist/workspace-draw-types.d.ts +1 -0
- package/dist/workspace-draw-types.d.ts.map +1 -1
- package/dist/workspace-draw-types.js +1 -0
- package/dist/workspace-draw-types.js.map +1 -1
- package/dist/workspace-origin.d.ts +15 -0
- package/dist/workspace-origin.d.ts.map +1 -0
- package/dist/workspace-origin.js +36 -0
- package/dist/workspace-origin.js.map +1 -0
- package/dist/workspace-runner-children.d.ts +28 -0
- package/dist/workspace-runner-children.d.ts.map +1 -0
- package/dist/workspace-runner-children.js +112 -0
- package/dist/workspace-runner-children.js.map +1 -0
- package/dist/workspace-runner-client.d.ts +41 -0
- package/dist/workspace-runner-client.d.ts.map +1 -0
- package/dist/workspace-runner-client.js +63 -0
- package/dist/workspace-runner-client.js.map +1 -0
- package/dist/workspace-runner-main.d.ts +56 -0
- package/dist/workspace-runner-main.d.ts.map +1 -0
- package/dist/workspace-runner-main.js +350 -0
- package/dist/workspace-runner-main.js.map +1 -0
- package/dist/workspace-runner-policy.d.ts +40 -0
- package/dist/workspace-runner-policy.d.ts.map +1 -0
- package/dist/workspace-runner-policy.js +47 -0
- package/dist/workspace-runner-policy.js.map +1 -0
- package/dist/workspace-runner-spawn.d.ts +42 -0
- package/dist/workspace-runner-spawn.d.ts.map +1 -0
- package/dist/workspace-runner-spawn.js +60 -0
- package/dist/workspace-runner-spawn.js.map +1 -0
- package/dist/workspace-runner-stop.d.ts +25 -0
- package/dist/workspace-runner-stop.d.ts.map +1 -0
- package/dist/workspace-runner-stop.js +44 -0
- package/dist/workspace-runner-stop.js.map +1 -0
- package/dist/workspace-runner-store.d.ts +26 -0
- package/dist/workspace-runner-store.d.ts.map +1 -0
- package/dist/workspace-runner-store.js +114 -0
- package/dist/workspace-runner-store.js.map +1 -0
- package/open-design.json +2 -2
- package/package.json +2 -2
- package/runtime/codex-conversion/src/images/native-invoke.mjs +24 -5
- package/runtime/codex-conversion/src/images/native.mjs +3 -2
- package/skills/12ui-design/SKILL.md +79 -19
- package/skills/12ui-design/agents/openai.yaml +2 -0
- package/skills/12ui-design/improve.md +1 -5
- package/skills/12ui-design/inspire.md +5 -8
- package/skills/12ui-design/outputs.md +2 -23
- package/skills/12ui-design/scene.md +27 -156
- package/skills/12ui-design/session.md +0 -161
package/README.md
CHANGED
|
@@ -79,15 +79,116 @@ unless `--force` is explicit.
|
|
|
79
79
|
## One visual interface skill
|
|
80
80
|
|
|
81
81
|
`12ui-design` is the single design entrypoint. Every client receives the same
|
|
82
|
-
`skills/12ui-design` bytes.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
`skills/12ui-design` bytes. The skill runs `12ui draft`, `12ui branch execute`,
|
|
83
|
+
`12ui convert` and `12ui improve`; the CLI owns local and hosted engine selection.
|
|
84
|
+
The Design workspace is a view of those runs: the hosted plugin's inline screen,
|
|
85
|
+
the local plugin's `design.slate.show`, or `12ui workspace open --wait` in a browser.
|
|
86
|
+
|
|
87
|
+
The skill's `scene.md` guide rebuilds a design image as a live Three.js scene.
|
|
88
|
+
It runs `12ui convert --engine auto` (Codex when it is ready, otherwise the 12ui
|
|
89
|
+
API) in the background for the static page while the agent models the scene with
|
|
90
|
+
the local `12ui scene` tools (`12ui scene --help`): camera solve, placement, a
|
|
91
|
+
starter harness with a bundled three.js, `12ui scene merge` to put the converted
|
|
92
|
+
page into the scene, capture with the managed Chromium, and review sheets. The
|
|
93
|
+
`12ui scene` tools need no account and make no network request.
|
|
94
|
+
|
|
95
|
+
`improve --apply` captures the URL and edits the actual repository. Without a target it drafts candidates, stops for
|
|
96
|
+
an explicit choice, then applies that choice locally. Without `--apply`, the existing hosted implementation-kit behavior
|
|
97
|
+
remains. Inspect the real application after editing.
|
|
98
|
+
|
|
99
|
+
### Draft, branch, convert and improve
|
|
100
|
+
|
|
101
|
+
`12ui draft`, `12ui branch`, `12ui convert` and `12ui improve` are the primary
|
|
102
|
+
commands, and the ones the 12ui-design skill runs. Each keeps its own saved-run
|
|
103
|
+
format. `convert --engine auto`, the default, runs on local Codex when it is
|
|
104
|
+
ready and otherwise selects the 12ui API before dispatch; a saved run keeps its
|
|
105
|
+
recorded engine. Local conversion selects external images when `OPENAI_API_KEY`
|
|
106
|
+
is set and native Codex images otherwise. Pass `--engine` or an image backend to
|
|
107
|
+
choose one yourself.
|
|
108
|
+
|
|
109
|
+
Local HTML does not produce LayerDoc. Native design formats and hosted branch
|
|
110
|
+
assembly remain dedicated conversion workflows. React export is whole-page JSX,
|
|
111
|
+
not a functional application. Preserve existing run directories and their
|
|
112
|
+
recorded engine for recovery; importing an output into a workflow workspace does
|
|
113
|
+
not migrate an in-flight dispatch.
|
|
114
|
+
|
|
115
|
+
The four stage skills that used to carry these sections separately —
|
|
116
|
+
`design-search`, `design-draft`, `design-branch`, and `design-convert` — were
|
|
117
|
+
retired on 2026-08-16 after a trial measured them buying no routing precision
|
|
118
|
+
over the one broadened description. `skill install` removes any copy still
|
|
119
|
+
present in an agent home.
|
|
120
|
+
|
|
121
|
+
Corpus-conditioned image generation explores visual directions. The selected
|
|
122
|
+
image then guides editable implementation, with browser inspection against the
|
|
123
|
+
approved target and focused correction of observed mismatches.
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
12ui skill status --json
|
|
127
|
+
12ui corpus inspire \
|
|
128
|
+
--query "Editorial architecture homepage with warm materiality" \
|
|
129
|
+
--reference-image ./current-homepage.png \
|
|
130
|
+
--out-dir ./references \
|
|
131
|
+
--count 4
|
|
132
|
+
12ui draft \
|
|
133
|
+
--concept "Editorial architecture homepage with warm materiality" \
|
|
134
|
+
--reference ./current-homepage.png \
|
|
135
|
+
--retain style \
|
|
136
|
+
--candidates 4
|
|
137
|
+
12ui next <run-dir> --wait
|
|
138
|
+
12ui branch execute \
|
|
139
|
+
--start <run-dir>/candidates/A.png \
|
|
140
|
+
--concept "Editorial architecture studio site" \
|
|
141
|
+
--scope site \
|
|
142
|
+
--convert html \
|
|
143
|
+
--prototype
|
|
144
|
+
12ui next <branch-run-dir> --wait
|
|
145
|
+
12ui improve https://example.com/dashboard \
|
|
146
|
+
--direction "Editorial hierarchy, compact controls, quiet blue surfaces" \
|
|
147
|
+
--repo ./dashboard \
|
|
148
|
+
--out-dir ./dashboard-improve
|
|
149
|
+
12ui improve https://example.com/dashboard \
|
|
150
|
+
--target ./approved-dashboard.png \
|
|
151
|
+
--repo ./dashboard \
|
|
152
|
+
--out-dir ./dashboard-align
|
|
153
|
+
12ui convert <conversion-id> \
|
|
154
|
+
--output html_fixed,pdf,psd,pptx,sketch \
|
|
155
|
+
--out-dir ./exports
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`draft` accepts 2-16 candidates and defaults to four. `--reference` accepts a
|
|
159
|
+
local PNG/JPEG/WebP path or HTTP(S) URL, keeps the normal corpus retrieval, and
|
|
160
|
+
sends the original image to every hosted candidate. Its new-page default retains
|
|
161
|
+
style while excluding layout, content, and assets; `--retain layout` is the
|
|
162
|
+
explicit source-geometry opt-in. It records the corpus set,
|
|
163
|
+
hosted run id, stable service slots, output paths, and claim key in `draft.json`
|
|
164
|
+
before dispatch. Every dispatch request stays in the foreground and posts only
|
|
165
|
+
slots whose durable service state is still `pending`; in-flight, succeeded, and
|
|
166
|
+
failed slots are never posted again. `12ui next <run-dir> --wait` repairs only
|
|
167
|
+
never-started slots, then polls and downloads. Successful PNGs are digest-checked and written atomically under
|
|
168
|
+
`<run-dir>/candidates/`, with terminal evidence in `draft.complete.json`.
|
|
169
|
+
|
|
170
|
+
`12ui draft` never inspects Codex authentication, `OPENAI_API_KEY`, project
|
|
171
|
+
`.env` files, or another caller-side image-provider credential. This describes
|
|
172
|
+
`12ui draft`, not the workflow ledger's `draft` recipe.
|
|
173
|
+
|
|
174
|
+
`convert <conversion-id>` downloads one successful base LayerDoc once and
|
|
175
|
+
dispatches the chosen formats concurrently. It creates the destination
|
|
176
|
+
directory as needed, but refuses before any API request when a selected output,
|
|
177
|
+
its asset directory, or `export-manifest.json` already exists.
|
|
178
|
+
|
|
179
|
+
`capabilities --json` reports the CLI's exact inputs and outputs, model and
|
|
180
|
+
responsive-quality choices, duration hints, status commands, and durable
|
|
181
|
+
journal/receipt contracts.
|
|
182
|
+
|
|
183
|
+
### The local workflow ledger
|
|
184
|
+
|
|
185
|
+
The CLI also keeps a persistent local workflow ledger, a secondary surface shared
|
|
186
|
+
by the local CLI and MCP for hosts that drive individual operations themselves:
|
|
86
187
|
|
|
87
188
|
```sh
|
|
88
189
|
12ui workflow import /absolute/path/reference.png --workspace ./design-work --role reference
|
|
89
190
|
12ui workflow prepare ./request.json --workspace ./design-work --key homepage-direction-a
|
|
90
|
-
12ui workflow execute <operation-id> --workspace ./design-work --providers session --session-capabilities
|
|
191
|
+
12ui workflow execute <operation-id> --workspace ./design-work --providers session --session-capabilities text
|
|
91
192
|
12ui workflow register <operation-id> --workspace ./design-work --attempt <handoff-attempt-number> --result ./result.json
|
|
92
193
|
12ui workflow status <operation-id> --workspace ./design-work
|
|
93
194
|
```
|
|
@@ -99,33 +200,25 @@ relative to the shell's current directory; file paths inside those results and
|
|
|
99
200
|
recipe image paths are workspace-relative unless absolute.
|
|
100
201
|
|
|
101
202
|
`request.json` names a capability, prompt, imported input artifacts and output
|
|
102
|
-
contract.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
and
|
|
112
|
-
|
|
113
|
-
The explicitly selected legacy `improve --apply` route captures the URL and
|
|
114
|
-
edits the actual repository. Without a target it drafts candidates, stops for
|
|
115
|
-
an explicit choice, then applies that choice locally. Without `--apply`, the existing hosted implementation-kit behavior
|
|
116
|
-
remains. Inspect the real application after editing.
|
|
117
|
-
|
|
118
|
-
Provider routing considers the declared host session first, then eligible Codex
|
|
119
|
-
and Claude subscription CLI capabilities, then explicitly authorized OpenAI API
|
|
120
|
-
and 12ui providers. Codex text/code subprocess execution requires
|
|
203
|
+
contract. A host session takes only text or code: the execute result is then a
|
|
204
|
+
handoff, and the session registers its real files or JSON value. Image, image-edit
|
|
205
|
+
and convert work never goes to a session; the 12ui CLI runs it through its own
|
|
206
|
+
providers. Preparation, imports and registration do not need a 12ui account.
|
|
207
|
+
`12ui workflow --help` documents the complete contract, provider policy and
|
|
208
|
+
interruption behavior.
|
|
209
|
+
|
|
210
|
+
Provider routing considers a host session that declared text or code first, then
|
|
211
|
+
eligible Codex and Claude subscription CLI capabilities, then explicitly authorized
|
|
212
|
+
OpenAI API and 12ui providers. Image, image-edit and convert work never routes to
|
|
213
|
+
a session. Codex text/code subprocess execution requires
|
|
121
214
|
`--trust-codex-config`: explicit trust in the existing user's CLI configuration,
|
|
122
215
|
including tools and hooks beyond the command sandbox. This does not authorize
|
|
123
216
|
paid fallback and does not apply to the current session's tools. Claude requires
|
|
124
217
|
supported safe mode, edits code with a fixed file-tool set without shell tests,
|
|
125
218
|
and currently cannot attach images to text requests. Run checks in the parent
|
|
126
219
|
session. Image capability is never inferred from a text CLI's presence.
|
|
127
|
-
Session capabilities must be
|
|
128
|
-
declared from available tools. Key presence alone does not authorize paid work;
|
|
220
|
+
Session capabilities (text or code) must be
|
|
221
|
+
explicitly declared from available tools. Key presence alone does not authorize paid work;
|
|
129
222
|
`--allow-paid` is required for a funded route. An ambiguous dispatched operation
|
|
130
223
|
requires reconciliation and cannot silently replay on another provider.
|
|
131
224
|
An accepted job with a failed download, or a completed response with malformed
|
|
@@ -141,7 +234,7 @@ overrides from the child environment and uses the user's normal CLI configuratio
|
|
|
141
234
|
|
|
142
235
|
The recipes `draft`, `branch`, `edit`, `redesign`, `labels`, `review`, `convert` and
|
|
143
236
|
`implement` build requests for this shared ledger. They do not imply that every
|
|
144
|
-
|
|
237
|
+
hosted pipeline or native design export has a local implementation.
|
|
145
238
|
After registering a recipe plan, `12ui workflow continue <operation-id> --workspace <directory>`
|
|
146
239
|
prepares eligible child operations without inference; execute each
|
|
147
240
|
returned ready ID explicitly, then continue the same plan to unlock dependencies.
|
|
@@ -188,90 +281,6 @@ provide an offline editor. Standard hosted `12ui convert <layerdoc.json>` does
|
|
|
188
281
|
not read the sidecar: it requires hydrated HTTP asset references. Uploading and
|
|
189
282
|
hydrating local assets remains a separate API integration.
|
|
190
283
|
|
|
191
|
-
### Existing conversion and hosted commands
|
|
192
|
-
|
|
193
|
-
The following APIs and legacy CLI commands remain available when explicitly
|
|
194
|
-
selected. They have their own saved-run formats; their automatic engine/backend
|
|
195
|
-
rules are separate from the new workflow provider policy. `convert --engine auto`
|
|
196
|
-
can select hosted API before dispatch when local Codex is unavailable. Existing
|
|
197
|
-
local conversion selects external images when `OPENAI_API_KEY` is set and native
|
|
198
|
-
Codex images otherwise. Use an explicit engine/backend when that legacy boundary
|
|
199
|
-
is intended; a key is not authorization to choose it on the user's behalf.
|
|
200
|
-
|
|
201
|
-
Local HTML does not produce LayerDoc. Native design formats and hosted branch
|
|
202
|
-
assembly remain dedicated conversion workflows. React export is whole-page JSX,
|
|
203
|
-
not a functional application. Preserve existing legacy run directories and their
|
|
204
|
-
recorded engine for recovery; importing an output into a workflow workspace does
|
|
205
|
-
not migrate an in-flight legacy dispatch.
|
|
206
|
-
|
|
207
|
-
The four stage skills that used to carry these sections separately —
|
|
208
|
-
`design-search`, `design-draft`, `design-branch`, and `design-convert` — were
|
|
209
|
-
retired on 2026-08-16 after a trial measured them buying no routing precision
|
|
210
|
-
over the one broadened description. `skill install` removes any copy still
|
|
211
|
-
present in an agent home.
|
|
212
|
-
|
|
213
|
-
For an explicitly authorized legacy hosted run, corpus-conditioned image generation explores visual directions. The selected
|
|
214
|
-
image then guides editable implementation, with browser inspection against the
|
|
215
|
-
approved target and focused correction of observed mismatches.
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
12ui skill status --json
|
|
219
|
-
12ui corpus inspire \
|
|
220
|
-
--query "Editorial architecture homepage with warm materiality" \
|
|
221
|
-
--reference-image ./current-homepage.png \
|
|
222
|
-
--out-dir ./references \
|
|
223
|
-
--count 4
|
|
224
|
-
12ui draft \
|
|
225
|
-
--concept "Editorial architecture homepage with warm materiality" \
|
|
226
|
-
--reference ./current-homepage.png \
|
|
227
|
-
--retain style \
|
|
228
|
-
--candidates 4
|
|
229
|
-
12ui next <run-dir> --wait
|
|
230
|
-
12ui branch execute \
|
|
231
|
-
--start <run-dir>/candidates/A.png \
|
|
232
|
-
--concept "Editorial architecture studio site" \
|
|
233
|
-
--scope site \
|
|
234
|
-
--convert html \
|
|
235
|
-
--prototype
|
|
236
|
-
12ui next <branch-run-dir> --wait
|
|
237
|
-
12ui improve https://example.com/dashboard \
|
|
238
|
-
--direction "Editorial hierarchy, compact controls, quiet blue surfaces" \
|
|
239
|
-
--repo ./dashboard \
|
|
240
|
-
--out-dir ./dashboard-improve
|
|
241
|
-
12ui improve https://example.com/dashboard \
|
|
242
|
-
--target ./approved-dashboard.png \
|
|
243
|
-
--repo ./dashboard \
|
|
244
|
-
--out-dir ./dashboard-align
|
|
245
|
-
12ui convert <conversion-id> \
|
|
246
|
-
--output html_fixed,pdf,psd,pptx,sketch \
|
|
247
|
-
--out-dir ./exports
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
`draft` accepts 2-16 candidates and defaults to four. `--reference` accepts a
|
|
251
|
-
local PNG/JPEG/WebP path or HTTP(S) URL, keeps the normal corpus retrieval, and
|
|
252
|
-
sends the original image to every hosted candidate. Its new-page default retains
|
|
253
|
-
style while excluding layout, content, and assets; `--retain layout` is the
|
|
254
|
-
explicit source-geometry opt-in. It records the corpus set,
|
|
255
|
-
hosted run id, stable service slots, output paths, and claim key in `draft.json`
|
|
256
|
-
before dispatch. Every dispatch request stays in the foreground and posts only
|
|
257
|
-
slots whose durable service state is still `pending`; in-flight, succeeded, and
|
|
258
|
-
failed slots are never posted again. `12ui next <run-dir> --wait` repairs only
|
|
259
|
-
never-started slots, then polls and downloads. Successful PNGs are digest-checked and written atomically under
|
|
260
|
-
`<run-dir>/candidates/`, with terminal evidence in `draft.complete.json`.
|
|
261
|
-
|
|
262
|
-
The legacy `draft` command never inspects Codex authentication, `OPENAI_API_KEY`,
|
|
263
|
-
project `.env` files, or another caller-side image-provider credential. This
|
|
264
|
-
boundary describes legacy hosted draft, not the new `workflow draft` recipe.
|
|
265
|
-
|
|
266
|
-
`convert <conversion-id>` downloads one successful base LayerDoc once and
|
|
267
|
-
dispatches the chosen formats concurrently. It creates the destination
|
|
268
|
-
directory as needed, but refuses before any API request when a selected output,
|
|
269
|
-
its asset directory, or `export-manifest.json` already exists.
|
|
270
|
-
|
|
271
|
-
`capabilities --json` reports the CLI's exact inputs and outputs, model and
|
|
272
|
-
responsive-quality choices, duration hints, status commands, and durable
|
|
273
|
-
journal/receipt contracts.
|
|
274
|
-
|
|
275
284
|
## Design Corpus inspiration
|
|
276
285
|
|
|
277
286
|
`TwelveUiCorpusClient` supports public status, inspiration and logo searches,
|
|
@@ -303,7 +312,7 @@ const image = await corpus.download(first.id, 'ref-hd');
|
|
|
303
312
|
|
|
304
313
|
Every inspiration request requires a stable idempotency key. See
|
|
305
314
|
[`docs/corpus-v1.openapi.yaml`](https://github.com/just-every/12ui-plugin/blob/main/docs/corpus-v1.openapi.yaml).
|
|
306
|
-
`download` accepts `thumb`, `thumb-hd`, `ref`, and `ref-hd`; the
|
|
315
|
+
`download` accepts `thumb`, `thumb-hd`, `ref`, and `ref-hd`; the original
|
|
307
316
|
`thumb`/`ref` sizes remain supported.
|
|
308
317
|
|
|
309
318
|
For agent workflows that need four reference images,
|
|
@@ -461,7 +470,7 @@ DOM candidates, known destinations and source HTML/plan/completion before build.
|
|
|
461
470
|
Generic image `workflow labels` annotations cannot be substituted. Duplicate IDs,
|
|
462
471
|
unknown destinations and contradictory action fields are rejected before immutable
|
|
463
472
|
workflow success. Native local pages permit only navigation to real pages or none.
|
|
464
|
-
|
|
473
|
+
`12ui branch resume` refuses to replace this pause with hosted labeling.
|
|
465
474
|
|
|
466
475
|
The manifest preserves source custody, operation IDs and actual provider/funding/
|
|
467
476
|
usage facts. `labels.costMicros` counts new hosted prototype-label calls only;
|
|
@@ -930,8 +939,9 @@ plan, never an API key) and searches the free reference corpus. Twelve tools:
|
|
|
930
939
|
|
|
931
940
|
A hand-off records the request durably (Branch: your words, verbatim; Convert: the format and its
|
|
932
941
|
options) with a verified copy of the image, and sends the agent a short message. The agent reads
|
|
933
|
-
the record with `design.slate.data
|
|
934
|
-
|
|
942
|
+
the record with `design.slate.data` and runs the filled-in `12ui` command it names (`12ui branch
|
|
943
|
+
execute` for a Branch, `12ui convert` for a Convert), and asks you before anything that uses your
|
|
944
|
+
12ui credits (a conversion to LayerDoc, fixed HTML, SVG, PDF, PSD and
|
|
935
945
|
the other service formats is always that). `12ui slate-runner` is an internal command and is not
|
|
936
946
|
a public surface.
|
|
937
947
|
|
|
@@ -953,7 +963,7 @@ network access (`-c sandbox_workspace_write.network_access=true`) and the 12ui s
|
|
|
953
963
|
(`--add-dir ~/.local/share/12ui`, which the workspace writes to) runs everything, Design and Edit
|
|
954
964
|
included; full access needs none of it.
|
|
955
965
|
|
|
956
|
-
Among these tools, only
|
|
966
|
+
Among these tools, only `design.convert` creates metered work; corpus retrieval, including the
|
|
957
967
|
workspace's own search, is free and subject to abuse limits.
|
|
958
968
|
`design.workflow.execute` can use a funded provider only with its explicit authorization policy.
|
|
959
969
|
Set an `idempotencyKey` for any ambiguous conversion
|
package/SKILL.md
CHANGED
|
@@ -7,31 +7,36 @@ description: "Runs the complete 12UI visual-interface workflow inside Open
|
|
|
7
7
|
|
|
8
8
|
# 12UI for Open Design
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
paid work
|
|
27
|
-
|
|
28
|
-
Use `12ui`
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
10
|
+
`skills/12ui-design/SKILL.md` is the whole contract: it covers reference search,
|
|
11
|
+
hosted candidate generation, branching an approved direction across a page,
|
|
12
|
+
site, or multi-state app, and converting a finished image into LayerDoc and
|
|
13
|
+
production exports. The four stage skills it replaced were retired on
|
|
14
|
+
2026-08-16.
|
|
15
|
+
|
|
16
|
+
For a normal interface request, follow `skills/12ui-design/SKILL.md` end to end:
|
|
17
|
+
create four corpus-conditioned candidates, present their actual images through
|
|
18
|
+
Open Design's `twelve-ui-direction` choice surface, record the selected slot and
|
|
19
|
+
rationale in the Open Design choice, then convert or branch exactly that image.
|
|
20
|
+
Do not substitute Open Design's generic direction cards for the generated 12UI
|
|
21
|
+
candidates.
|
|
22
|
+
|
|
23
|
+
Before the first command that can consume 12UI quota, request the declared
|
|
24
|
+
`twelve-ui-spend-approval` confirmation surface with a concise description of
|
|
25
|
+
the work being authorized. An approval applies only to the current run. Do not
|
|
26
|
+
dispatch paid work when it is absent, rejected, or times out.
|
|
27
|
+
|
|
28
|
+
Use `12ui` when it is available on `PATH`. Otherwise invoke the pinned CLI that
|
|
29
|
+
the plugin's `open-design.json` MCP entry uses:
|
|
30
|
+
|
|
31
|
+
npx -y @12ui/design@0.2.77 <command> ...
|
|
32
|
+
|
|
33
|
+
Run `12ui auth status --json` (or its pinned `npx` equivalent) before the paid
|
|
34
|
+
preflight. A desktop user can authenticate with `12ui auth login`; a headless
|
|
35
|
+
run supplies `TWELVE_UI_API_KEY`. Never put a credential into project files,
|
|
36
|
+
the plugin manifest, command output, or generated artifacts.
|
|
37
|
+
|
|
38
|
+
Treat the generated HTML or project export as the implementation, materialize
|
|
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, chosen-image rationale,
|
|
41
|
+
conversion IDs, and export manifests with the project so reruns can resume
|
|
42
|
+
settled work instead of buying it again.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-arguments.d.ts","sourceRoot":"","sources":["../src/cli-arguments.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AAKhE,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAyBhD,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EAAE,KACb;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"cli-arguments.d.ts","sourceRoot":"","sources":["../src/cli-arguments.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AAKhE,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAyBhD,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EAAE,KACb;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAyCtC,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,QAAQ,EAAE,MAAM,MAAM,KAAG,MAAM,GAAG,SAGnE,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,WAAW,GAAI,OAAO,QAAQ,EAAE,MAAM,MAAM,KAAG,MAAM,EAGjE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,QAAQ,EAAE,MAAM,MAAM,KAAG,OAA+B,CAAC"}
|
package/dist/cli-arguments.js
CHANGED
|
@@ -37,27 +37,41 @@ export const parseCliArguments = (argv) => {
|
|
|
37
37
|
command.push(value);
|
|
38
38
|
continue;
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
// `--name=value` carries its value in the same token, so a value that
|
|
41
|
+
// starts with "-" (`--orbit=-15,15`) needs no quoting tricks. The run
|
|
42
|
+
// journal's normalizeArgv already reads this form the same way.
|
|
43
|
+
const body = value.slice(2);
|
|
44
|
+
const equals = body.indexOf('=');
|
|
45
|
+
const name = equals >= 0 ? body.slice(0, equals) : body;
|
|
41
46
|
if (!name)
|
|
42
47
|
throw new Error('Invalid empty flag');
|
|
43
48
|
if (CLI_BOOLEAN_FLAGS.has(name)) {
|
|
49
|
+
if (equals >= 0)
|
|
50
|
+
throw new Error(`--${name} takes no value; drop "=${body.slice(equals + 1)}"`);
|
|
44
51
|
flags[name] = true;
|
|
45
52
|
continue;
|
|
46
53
|
}
|
|
47
|
-
|
|
48
|
-
if (
|
|
49
|
-
|
|
54
|
+
let flagValue;
|
|
55
|
+
if (equals >= 0) {
|
|
56
|
+
flagValue = body.slice(equals + 1);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const next = argv[index + 1];
|
|
60
|
+
if (!next || next.startsWith('--'))
|
|
61
|
+
throw new Error(`--${name} requires a value`);
|
|
62
|
+
flagValue = next;
|
|
63
|
+
index += 1;
|
|
64
|
+
}
|
|
50
65
|
if ((name === 'bootstrap' || name === 'page') && flags[name] !== undefined) {
|
|
51
66
|
const current = flags[name];
|
|
52
67
|
flags[name] = [
|
|
53
68
|
...(Array.isArray(current) ? current : typeof current === 'string' ? [current] : []),
|
|
54
|
-
|
|
69
|
+
flagValue,
|
|
55
70
|
];
|
|
56
71
|
}
|
|
57
72
|
else {
|
|
58
|
-
flags[name] =
|
|
73
|
+
flags[name] = flagValue;
|
|
59
74
|
}
|
|
60
|
-
index += 1;
|
|
61
75
|
}
|
|
62
76
|
return { command, flags };
|
|
63
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-arguments.js","sourceRoot":"","sources":["../src/cli-arguments.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,+EAA+E;AAC/E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,KAAK;IACL,OAAO;IACP,gBAAgB;IAChB,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,WAAW;IACX,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,WAAW;IACX,QAAQ;IACR,qBAAqB;IACrB,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,UAAU;IACV,oBAAoB;IACpB,SAAS;IACT,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAc,EAC0B,EAAE;IAC1C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACjD,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-arguments.js","sourceRoot":"","sources":["../src/cli-arguments.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,8 @@ export declare const CLI_CAPABILITIES: {
|
|
|
7
7
|
readonly capabilities: readonly ["text", "image", "image-edit", "code", "convert"];
|
|
8
8
|
readonly workspace: "Required persistent local directory except for provider discovery.";
|
|
9
9
|
readonly preparation: "Prepare and recipe commands record work without model dispatch; execute chooses a provider.";
|
|
10
|
-
readonly session: "Declare session capabilities explicitly; execute returns a handoff and register records its result with the exact --attempt number.";
|
|
10
|
+
readonly session: "Declare session capabilities explicitly (text or code only); execute returns a handoff and register records its result with the exact --attempt number.";
|
|
11
|
+
readonly generation: "image, image-edit and convert always run through the 12ui CLI's own providers, never a host session.";
|
|
11
12
|
readonly codexConfiguration: "Codex child execution requires --trust-codex-config, including trust in configured tools and hooks. This does not authorize paid fallbacks.";
|
|
12
13
|
readonly paidProviders: "openai and 12ui require explicit --allow-paid permission; available credentials do not authorize spending.";
|
|
13
14
|
readonly recovery: "Ambiguous dispatched work requires reconciliation and never silently falls through to another provider.";
|
|
@@ -52,7 +53,7 @@ export declare const CLI_CAPABILITIES: {
|
|
|
52
53
|
/** Local helpers for rebuilding a design image as a live Three.js scene (the 12ui-design skill's scene.md). */
|
|
53
54
|
readonly localScene: {
|
|
54
55
|
readonly command: "12ui scene <verb>";
|
|
55
|
-
readonly verbs: readonly ["init", "solve", "ray", "project", "rect", "serve", "capture", "sheet", "blend", "colors", "rectify"];
|
|
56
|
+
readonly verbs: readonly ["init", "solve", "ray", "project", "rect", "serve", "capture", "sheet", "blend", "colors", "rectify", "merge"];
|
|
56
57
|
readonly network: "none";
|
|
57
58
|
readonly browser: "managed Chromium for capture";
|
|
58
59
|
readonly skill: "12ui-design";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-capabilities.d.ts","sourceRoot":"","sources":["../src/cli-capabilities.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"cli-capabilities.d.ts","sourceRoot":"","sources":["../src/cli-capabilities.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwD3B,+GAA+G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkD/G;;;;;OAKG;;;;;;;;;;;IAeH;;;;;;OAMG;;;;;;;QAUD,iFAAiF;;;IAGnF;;;;;;OAMG;;;QAGD,yEAAyE;;;;;QASzE,6EAA6E;;QAE7E,6EAA6E;;;;;;;IAO/E,uEAAuE;;;;;;;;;;;;QAYrE;;;WAGG;;;;;;;;;;;;;;;;;;CAkBG,CAAC"}
|
package/dist/cli-capabilities.js
CHANGED
|
@@ -15,7 +15,8 @@ export const CLI_CAPABILITIES = {
|
|
|
15
15
|
capabilities: ['text', 'image', 'image-edit', 'code', 'convert'],
|
|
16
16
|
workspace: 'Required persistent local directory except for provider discovery.',
|
|
17
17
|
preparation: 'Prepare and recipe commands record work without model dispatch; execute chooses a provider.',
|
|
18
|
-
session: 'Declare session capabilities explicitly; execute returns a handoff and register records its result with the exact --attempt number.',
|
|
18
|
+
session: 'Declare session capabilities explicitly (text or code only); execute returns a handoff and register records its result with the exact --attempt number.',
|
|
19
|
+
generation: 'image, image-edit and convert always run through the 12ui CLI\'s own providers, never a host session.',
|
|
19
20
|
codexConfiguration: 'Codex child execution requires --trust-codex-config, including trust in configured tools and hooks. This does not authorize paid fallbacks.',
|
|
20
21
|
paidProviders: 'openai and 12ui require explicit --allow-paid permission; available credentials do not authorize spending.',
|
|
21
22
|
recovery: 'Ambiguous dispatched work requires reconciliation and never silently falls through to another provider.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-capabilities.js","sourceRoot":"","sources":["../src/cli-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE;QACR,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;QACrI,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC;QAC5F,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;QAC3D,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC;QAChE,SAAS,EAAE,oEAAoE;QAC/E,WAAW,EAAE,6FAA6F;QAC1G,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli-capabilities.js","sourceRoot":"","sources":["../src/cli-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SlateServerMessageCode } from './slate-view-contract.js';
|
|
1
2
|
/** `codex features list` prints `<name> <stage> <true|false>` per feature; image generation must be on. */
|
|
2
3
|
export declare const imageGenerationEnabled: (featuresList: string) => boolean;
|
|
3
4
|
/** Which check decided the probe: `ready`, or the first one that failed. Callers word their own sentence from it. */
|
|
@@ -8,6 +9,11 @@ export type CodexReadiness = {
|
|
|
8
9
|
check: CodexReadinessCheck;
|
|
9
10
|
codexBin: string;
|
|
10
11
|
codexHome: string;
|
|
12
|
+
/**
|
|
13
|
+
* The reason as a person reads it on the Design workspace screen (`server.<code>`): `reason` is for the operator and
|
|
14
|
+
* names flags and files; this names what to do. Absent when ready.
|
|
15
|
+
*/
|
|
16
|
+
personCode?: SlateServerMessageCode;
|
|
11
17
|
/** What `codex --version` printed, once it ran. */
|
|
12
18
|
version?: string;
|
|
13
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-codex-readiness.d.ts","sourceRoot":"","sources":["../src/cli-codex-readiness.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-codex-readiness.d.ts","sourceRoot":"","sources":["../src/cli-codex-readiness.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AASvE,6GAA6G;AAC7G,eAAO,MAAM,sBAAsB,GAAI,cAAc,MAAM,KAAG,OAE7D,CAAC;AASF,qHAAqH;AACrH,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,QAAQ,GAAG,kBAAkB,CAAC;AAErI,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAChG;;;OAGG;IACH,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CA0CnJ"}
|
|
@@ -27,10 +27,10 @@ export async function probeCodexReadiness(options = {}) {
|
|
|
27
27
|
const codexHome = path.resolve(options.codexHome ?? (source.CODEX_HOME?.trim() || path.join(homedir(), '.codex')));
|
|
28
28
|
const located = options.codexBin ?? locateCodexBinary(source)?.binary;
|
|
29
29
|
if (located === undefined)
|
|
30
|
-
return { ready: false, reason: NO_CODEX_BINARY_REASON, check: 'no_binary', codexBin: '', codexHome };
|
|
30
|
+
return { ready: false, reason: NO_CODEX_BINARY_REASON, check: 'no_binary', personCode: 'codex_missing', codexBin: '', codexHome };
|
|
31
31
|
const codexBin = located;
|
|
32
32
|
let version;
|
|
33
|
-
const result = (check, reason) => ({ ready: check === 'ready', reason, check, codexBin, codexHome, ...(version ? { version } : {}) });
|
|
33
|
+
const result = (check, reason, personCode) => ({ ready: check === 'ready', reason, check, ...(personCode ? { personCode } : {}), codexBin, codexHome, ...(version ? { version } : {}) });
|
|
34
34
|
// Match the runtime's subscription environment: no provider API credentials.
|
|
35
35
|
const env = { CODEX_HOME: codexHome };
|
|
36
36
|
for (const key of ['PATH', 'HOME', 'TMPDIR', 'TEMP', 'TMP', 'LANG', 'LC_ALL', 'SYSTEMROOT']) {
|
|
@@ -41,31 +41,31 @@ export async function probeCodexReadiness(options = {}) {
|
|
|
41
41
|
version = (await inspect(codexBin, ['--version'], env)).trim().replace(/^codex-cli\s+/u, '').split('\n')[0]?.trim() || undefined;
|
|
42
42
|
}
|
|
43
43
|
catch {
|
|
44
|
-
return result('binary', 'Codex CLI could not run. Install Codex on PATH or pass --codex-bin with a working executable.');
|
|
44
|
+
return result('binary', 'Codex CLI could not run. Install Codex on PATH or pass --codex-bin with a working executable.', 'codex_broken');
|
|
45
45
|
}
|
|
46
46
|
try {
|
|
47
47
|
await access(path.join(codexHome, 'auth.json'), constants.R_OK);
|
|
48
48
|
}
|
|
49
49
|
catch {
|
|
50
|
-
return result('auth_file', 'Selected Codex home has no readable auth.json. Run codex login with this CODEX_HOME, or select your authenticated home with --codex-home.');
|
|
50
|
+
return result('auth_file', 'Selected Codex home has no readable auth.json. Run codex login with this CODEX_HOME, or select your authenticated home with --codex-home.', 'codex_signed_out');
|
|
51
51
|
}
|
|
52
52
|
try {
|
|
53
53
|
const login = await inspect(codexBin, ['login', 'status'], env);
|
|
54
54
|
if (!login.includes('Logged in using ChatGPT')) {
|
|
55
|
-
return result('chatgpt_login', 'Codex conversion requires ChatGPT authentication. Run codex login with the selected CODEX_HOME; API-key login is not supported.');
|
|
55
|
+
return result('chatgpt_login', 'Codex conversion requires ChatGPT authentication. Run codex login with the selected CODEX_HOME; API-key login is not supported.', 'codex_api_key');
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
catch {
|
|
59
|
-
return result('login_status', 'Codex login status failed. Run codex login with the selected CODEX_HOME and retry.');
|
|
59
|
+
return result('login_status', 'Codex login status failed. Run codex login with the selected CODEX_HOME and retry.', 'codex_login_unknown');
|
|
60
60
|
}
|
|
61
61
|
try {
|
|
62
62
|
const help = await inspect(codexBin, ['exec', '--help'], env);
|
|
63
63
|
const missing = requiredExecFlags.filter(flag => !new RegExp(`${flag}(?=[\\s=,]|$)`).test(help));
|
|
64
64
|
if (missing.length)
|
|
65
|
-
return result('exec_flags', `Codex CLI lacks required conversion flags: ${missing.join(', ')}. Update Codex or select a compatible executable with --codex-bin
|
|
65
|
+
return result('exec_flags', `Codex CLI lacks required conversion flags: ${missing.join(', ')}. Update Codex or select a compatible executable with --codex-bin.`, 'codex_outdated');
|
|
66
66
|
}
|
|
67
67
|
catch {
|
|
68
|
-
return result('exec_flags', 'Codex exec --help failed. Update Codex or select a compatible executable with --codex-bin.');
|
|
68
|
+
return result('exec_flags', 'Codex exec --help failed. Update Codex or select a compatible executable with --codex-bin.', 'codex_outdated');
|
|
69
69
|
}
|
|
70
70
|
try {
|
|
71
71
|
const cache = JSON.parse(await readFile(path.join(codexHome, 'models_cache.json'), 'utf8'));
|
|
@@ -74,18 +74,18 @@ export async function probeCodexReadiness(options = {}) {
|
|
|
74
74
|
&& Array.isArray(model.supported_reasoning_levels)
|
|
75
75
|
&& model.supported_reasoning_levels.some((level) => level?.effort === 'low'));
|
|
76
76
|
if (!available)
|
|
77
|
-
return result('models', 'The selected Codex model cache does not list gpt-6-astra with low reasoning. Refresh Codex model availability for this ChatGPT account, then retry.');
|
|
77
|
+
return result('models', 'The selected Codex model cache does not list gpt-6-astra with low reasoning. Refresh Codex model availability for this ChatGPT account, then retry.', 'codex_model_missing');
|
|
78
78
|
}
|
|
79
79
|
catch {
|
|
80
|
-
return result('models', 'Selected Codex home has no readable, valid models_cache.json. Open Codex with this CODEX_HOME to refresh its model cache, then retry.');
|
|
80
|
+
return result('models', 'Selected Codex home has no readable, valid models_cache.json. Open Codex with this CODEX_HOME to refresh its model cache, then retry.', 'codex_model_missing');
|
|
81
81
|
}
|
|
82
82
|
try {
|
|
83
83
|
if (!imageGenerationEnabled(await inspect(codexBin, ['features', 'list'], env))) {
|
|
84
|
-
return result('image_generation', 'Codex image generation is not enabled for this Codex home (codex features list shows image_generation off).');
|
|
84
|
+
return result('image_generation', 'Codex image generation is not enabled for this Codex home (codex features list shows image_generation off).', 'codex_images_off');
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
catch {
|
|
88
|
-
return result('image_generation', 'Codex features list failed. Update Codex or select a compatible executable with --codex-bin.');
|
|
88
|
+
return result('image_generation', 'Codex features list failed. Update Codex or select a compatible executable with --codex-bin.', 'codex_outdated');
|
|
89
89
|
}
|
|
90
90
|
return result('ready', 'Codex CLI, ChatGPT login, required flags, cached gpt-6-astra low availability, and image generation are ready.');
|
|
91
91
|
}
|