@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
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { closeSync, openSync, readFileSync } from 'node:fs';
|
|
3
|
+
import http from 'node:http';
|
|
4
|
+
import net from 'node:net';
|
|
5
|
+
import os from 'node:os';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { SceneArgumentError } from './numbers.js';
|
|
8
|
+
import { SERVER_PID_HEADER } from './static-server.js';
|
|
9
|
+
const portIsFree = (port) => new Promise((resolve) => {
|
|
10
|
+
const probe = net.createServer();
|
|
11
|
+
probe.once('error', () => resolve(false));
|
|
12
|
+
probe.listen(port, '127.0.0.1', () => probe.close(() => resolve(true)));
|
|
13
|
+
});
|
|
14
|
+
const freePort = () => new Promise((resolve, reject) => {
|
|
15
|
+
const probe = net.createServer();
|
|
16
|
+
probe.once('error', reject);
|
|
17
|
+
probe.listen(0, '127.0.0.1', () => {
|
|
18
|
+
const { port } = probe.address();
|
|
19
|
+
probe.close(() => resolve(port));
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
/** The pid the server on this port reports, or undefined while nothing answers. */
|
|
23
|
+
const answeringPid = (port) => new Promise((resolve) => {
|
|
24
|
+
const request = http.request({ host: '127.0.0.1', port, path: '/', method: 'HEAD', timeout: 1_000 }, (response) => {
|
|
25
|
+
response.resume();
|
|
26
|
+
const header = response.headers[SERVER_PID_HEADER];
|
|
27
|
+
resolve(typeof header === 'string' ? Number(header) : Number.NaN);
|
|
28
|
+
});
|
|
29
|
+
request.once('timeout', () => request.destroy());
|
|
30
|
+
request.once('error', () => resolve(undefined));
|
|
31
|
+
request.end();
|
|
32
|
+
});
|
|
33
|
+
const tail = (file) => {
|
|
34
|
+
try {
|
|
35
|
+
return readFileSync(file, 'utf8').trim().split('\n').slice(-5).join('\n');
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return '';
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
export const startDetachedServer = async (options) => {
|
|
42
|
+
const port = options.port || await freePort();
|
|
43
|
+
if (!(await portIsFree(port))) {
|
|
44
|
+
throw new SceneArgumentError(`port ${port} is already in use on 127.0.0.1. Pick another --port, or stop the`
|
|
45
|
+
+ ' server holding it by the pid it printed.');
|
|
46
|
+
}
|
|
47
|
+
const logFile = path.join(os.tmpdir(), `12ui-scene-serve-${port}.log`);
|
|
48
|
+
const log = openSync(logFile, 'w');
|
|
49
|
+
const [executable, ...args] = options.command(port);
|
|
50
|
+
const child = spawn(executable, args, {
|
|
51
|
+
cwd: path.resolve(options.directory),
|
|
52
|
+
detached: true,
|
|
53
|
+
stdio: ['ignore', log, log],
|
|
54
|
+
});
|
|
55
|
+
closeSync(log);
|
|
56
|
+
let exit;
|
|
57
|
+
child.once('exit', (code, signal) => { exit = signal ? `signal ${signal}` : `code ${code}`; });
|
|
58
|
+
child.once('error', (error) => { exit = error.message; });
|
|
59
|
+
child.unref();
|
|
60
|
+
const pid = child.pid;
|
|
61
|
+
const deadline = Date.now() + (options.readyTimeoutMs ?? 15_000);
|
|
62
|
+
const stillStarting = () => `the detached server (pid ${pid ?? 'none'})`;
|
|
63
|
+
while (Date.now() < deadline) {
|
|
64
|
+
if (exit !== undefined || pid === undefined) {
|
|
65
|
+
const output = tail(logFile);
|
|
66
|
+
throw new Error(`${stillStarting()} exited (${exit ?? 'no pid'}) before port ${port} answered.`
|
|
67
|
+
+ (output ? `\nIts log (${logFile}):\n${output}` : ` Its log is ${logFile}.`));
|
|
68
|
+
}
|
|
69
|
+
const answered = await answeringPid(port);
|
|
70
|
+
if (answered === pid) {
|
|
71
|
+
return { url: `http://127.0.0.1:${port}`, port, pid, logFile };
|
|
72
|
+
}
|
|
73
|
+
if (answered !== undefined) {
|
|
74
|
+
try {
|
|
75
|
+
process.kill(pid, 'SIGTERM');
|
|
76
|
+
}
|
|
77
|
+
catch { /* already gone */ }
|
|
78
|
+
throw new Error(`port ${port} answered, but not from ${stillStarting()}: another server holds it. Stopped`
|
|
79
|
+
+ ` pid ${pid}; pick another --port.`);
|
|
80
|
+
}
|
|
81
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
82
|
+
}
|
|
83
|
+
if (pid !== undefined) {
|
|
84
|
+
try {
|
|
85
|
+
process.kill(pid, 'SIGTERM');
|
|
86
|
+
}
|
|
87
|
+
catch { /* already gone */ }
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`${stillStarting()} did not answer on port ${port} within`
|
|
90
|
+
+ ` ${Math.round((options.readyTimeoutMs ?? 15_000) / 1000)} s and was stopped. Its log is ${logFile}.`);
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=serve-detach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-detach.js","sourceRoot":"","sources":["../../src/scene/serve-detach.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare const contentTypeFor: (file: string) => string;
|
|
2
2
|
/** The file a request path names inside `root`, or null when it would leave the folder. */
|
|
3
3
|
export declare const resolveInsideRoot: (root: string, requestPath: string) => string | null;
|
|
4
|
+
/** Every response names the serving pid, so `serve --detach` can tell its own child from another server on the port. */
|
|
5
|
+
export declare const SERVER_PID_HEADER = "x-12ui-scene-serve-pid";
|
|
4
6
|
export type StaticServer = {
|
|
5
7
|
url: string;
|
|
6
8
|
port: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-server.d.ts","sourceRoot":"","sources":["../../src/scene/static-server.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,MAE7C,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,aAAa,MAAM,KAAG,MAAM,GAAG,IAW9E,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAErF,eAAO,MAAM,iBAAiB,GAAU,MAAM;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"static-server.d.ts","sourceRoot":"","sources":["../../src/scene/static-server.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,MAE7C,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,aAAa,MAAM,KAAG,MAAM,GAAG,IAW9E,CAAC;AAEF,wHAAwH;AACxH,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAErF,eAAO,MAAM,iBAAiB,GAAU,MAAM;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,YAAY,CA+CvG,CAAC"}
|
|
@@ -42,9 +42,12 @@ export const resolveInsideRoot = (root, requestPath) => {
|
|
|
42
42
|
const withIndex = decoded.endsWith('/') ? path.join(resolved, 'index.html') : resolved;
|
|
43
43
|
return withIndex === root || withIndex.startsWith(`${root}${path.sep}`) ? withIndex : null;
|
|
44
44
|
};
|
|
45
|
+
/** Every response names the serving pid, so `serve --detach` can tell its own child from another server on the port. */
|
|
46
|
+
export const SERVER_PID_HEADER = 'x-12ui-scene-serve-pid';
|
|
45
47
|
export const startStaticServer = async (args) => {
|
|
46
48
|
const root = await realpath(path.resolve(args.directory));
|
|
47
49
|
const server = http.createServer((request, response) => {
|
|
50
|
+
response.setHeader(SERVER_PID_HEADER, String(process.pid));
|
|
48
51
|
const refuse = (status) => {
|
|
49
52
|
response.writeHead(status, { 'cache-control': 'no-store' });
|
|
50
53
|
response.end();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-server.js","sourceRoot":"","sources":["../../src/scene/static-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;GAIG;AAEH,MAAM,aAAa,GAAqC;IACtD,OAAO,EAAE,0BAA0B;IACnC,KAAK,EAAE,gCAAgC;IACvC,MAAM,EAAE,gCAAgC;IACxC,MAAM,EAAE,yBAAyB;IACjC,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,mBAAmB;IAC3B,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE,0BAA0B;IAClC,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,YAAY;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CACtD,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,0BAA0B,CAC9E,CAAC;AAEF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,WAAmB,EAAiB,EAAE;IACpF,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvF,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7F,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"static-server.js","sourceRoot":"","sources":["../../src/scene/static-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Eigenvalues and eigenvectors of a small symmetric matrix by cyclic Jacobi
|
|
3
|
+
* rotations. Used for the landmark covariance (coplanarity and the plane's
|
|
4
|
+
* normal) and for the solve's normal matrix (which parameters the landmarks
|
|
5
|
+
* leave free). `vectors[k]` is the unit eigenvector of `values[k]`.
|
|
6
|
+
*/
|
|
7
|
+
export type SymmetricEigen = {
|
|
8
|
+
values: number[];
|
|
9
|
+
vectors: number[][];
|
|
10
|
+
};
|
|
11
|
+
export declare const symmetricEigen: (matrix: readonly (readonly number[])[]) => SymmetricEigen;
|
|
12
|
+
//# sourceMappingURL=symmetric-eigen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symmetric-eigen.d.ts","sourceRoot":"","sources":["../../src/scene/symmetric-eigen.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,CAAC;AAEvE,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,KAAG,cAqCvE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const symmetricEigen = (matrix) => {
|
|
2
|
+
const n = matrix.length;
|
|
3
|
+
const a = matrix.map((row) => [...row]);
|
|
4
|
+
const v = Array.from({ length: n }, (_, i) => Array.from({ length: n }, (__, j) => (i === j ? 1 : 0)));
|
|
5
|
+
for (let sweep = 0; sweep < 64; sweep += 1) {
|
|
6
|
+
let off = 0;
|
|
7
|
+
for (let p = 0; p < n; p += 1)
|
|
8
|
+
for (let q = p + 1; q < n; q += 1)
|
|
9
|
+
off += a[p][q] ** 2;
|
|
10
|
+
if (off < 1e-30)
|
|
11
|
+
break;
|
|
12
|
+
for (let p = 0; p < n - 1; p += 1) {
|
|
13
|
+
for (let q = p + 1; q < n; q += 1) {
|
|
14
|
+
if (Math.abs(a[p][q]) < 1e-300)
|
|
15
|
+
continue;
|
|
16
|
+
const theta = (a[q][q] - a[p][p]) / (2 * a[p][q]);
|
|
17
|
+
const t = Math.sign(theta || 1) / (Math.abs(theta) + Math.sqrt(theta * theta + 1));
|
|
18
|
+
const c = 1 / Math.sqrt(t * t + 1);
|
|
19
|
+
const s = t * c;
|
|
20
|
+
for (let k = 0; k < n; k += 1) {
|
|
21
|
+
const akp = a[k][p], akq = a[k][q];
|
|
22
|
+
a[k][p] = c * akp - s * akq;
|
|
23
|
+
a[k][q] = s * akp + c * akq;
|
|
24
|
+
}
|
|
25
|
+
for (let k = 0; k < n; k += 1) {
|
|
26
|
+
const apk = a[p][k], aqk = a[q][k];
|
|
27
|
+
a[p][k] = c * apk - s * aqk;
|
|
28
|
+
a[q][k] = s * apk + c * aqk;
|
|
29
|
+
}
|
|
30
|
+
for (let k = 0; k < n; k += 1) {
|
|
31
|
+
const vkp = v[k][p], vkq = v[k][q];
|
|
32
|
+
v[k][p] = c * vkp - s * vkq;
|
|
33
|
+
v[k][q] = s * vkp + c * vkq;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
values: a.map((row, index) => row[index]),
|
|
40
|
+
vectors: Array.from({ length: n }, (_, k) => v.map((row) => row[k])),
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=symmetric-eigen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symmetric-eigen.js","sourceRoot":"","sources":["../../src/scene/symmetric-eigen.ts"],"names":[],"mappings":"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"}
|
package/dist/slate-actions.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type SlateStroke } from './slate-view-contract.js';
|
|
2
2
|
/**
|
|
3
3
|
* The actions a click can commit, validated and normalized. The same function
|
|
4
4
|
* runs at `run`, so the intent digest is over exactly what the runner gets.
|
|
5
5
|
*/
|
|
6
6
|
/** How many options a round can draw, and how many it draws when the click does not say. */
|
|
7
|
-
export declare const ROUND_OPTION_COUNTS: readonly [1, 2, 4, 8, 12];
|
|
7
|
+
export declare const ROUND_OPTION_COUNTS: readonly [1, 2, 4, 6, 8, 12];
|
|
8
8
|
export type RoundOptionCount = (typeof ROUND_OPTION_COUNTS)[number];
|
|
9
9
|
export declare const DEFAULT_ROUND_OPTION_COUNT: RoundOptionCount;
|
|
10
10
|
export declare const NOTE_MAX_CHARACTERS = 600;
|
|
@@ -37,7 +37,7 @@ export type SlateWorkAction = RoundAction | EditAction;
|
|
|
37
37
|
export declare const cleanUserText: (value: string) => string;
|
|
38
38
|
/** Freehand strokes as integer permille points; anything outside the limits is refused, never trimmed. */
|
|
39
39
|
export declare const normalizeStrokes: (value: unknown) => SlateStroke[];
|
|
40
|
-
/** A missing count is the default; anything but 1, 2, 4, 8 or 12 is refused, never rounded. */
|
|
40
|
+
/** A missing count is the default; anything but 1, 2, 4, 6, 8 or 12 is refused, never rounded. */
|
|
41
41
|
export declare const normalizeRoundCount: (value: unknown) => RoundOptionCount;
|
|
42
42
|
export declare const normalizeAction: (input: unknown) => SlateWorkAction;
|
|
43
43
|
//# sourceMappingURL=slate-actions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-actions.d.ts","sourceRoot":"","sources":["../src/slate-actions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"slate-actions.d.ts","sourceRoot":"","sources":["../src/slate-actions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkD,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5G;;;GAGG;AAEH,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,8BAA+B,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,eAAO,MAAM,0BAA0B,EAAE,gBAAoB,CAAC;AAC9D,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,qBAAqB,OAA8B,CAAC;AACjE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,6KAA6K,CAAC;AACjN,eAAO,MAAM,aAAa;;;;CAAqE,CAAC;AAEhG,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,gBAAgB,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AACrG,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,UAAU,CAAC;AAQvD,2FAA2F;AAC3F,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAG7C,CAAC;AAEF,0GAA0G;AAC1G,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,WAAW,EAsB5D,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,mBAAmB,GAAI,OAAO,OAAO,KAAG,gBAKpD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,eA+BhD,CAAC"}
|
package/dist/slate-actions.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { SlateError } from './slate-errors.js';
|
|
2
2
|
import { VERSION_ID_PATTERN } from './slate-ids.js';
|
|
3
|
+
import { SLATE_EDIT_PROMPT_MAX_BYTES } from './slate-view-contract.js';
|
|
3
4
|
/**
|
|
4
5
|
* The actions a click can commit, validated and normalized. The same function
|
|
5
6
|
* runs at `run`, so the intent digest is over exactly what the runner gets.
|
|
6
7
|
*/
|
|
7
8
|
/** How many options a round can draw, and how many it draws when the click does not say. */
|
|
8
|
-
export const ROUND_OPTION_COUNTS = [1, 2, 4, 8, 12];
|
|
9
|
-
export const DEFAULT_ROUND_OPTION_COUNT =
|
|
9
|
+
export const ROUND_OPTION_COUNTS = [1, 2, 4, 6, 8, 12];
|
|
10
|
+
export const DEFAULT_ROUND_OPTION_COUNT = 6;
|
|
10
11
|
export const NOTE_MAX_CHARACTERS = 600;
|
|
11
|
-
export const EDIT_PROMPT_MAX_BYTES =
|
|
12
|
+
export const EDIT_PROMPT_MAX_BYTES = SLATE_EDIT_PROMPT_MAX_BYTES;
|
|
12
13
|
/**
|
|
13
14
|
* The stored instruction of an edit that carries marks and no words: what the agent and the drawing model are told the
|
|
14
15
|
* marks mean. One constant, used only when the trimmed text is empty (the Worker keeps an equal copy, pinned by a test).
|
|
@@ -16,7 +17,7 @@ export const EDIT_PROMPT_MAX_BYTES = 6_000;
|
|
|
16
17
|
export const EDIT_MARKS_ONLY_PROMPT = 'Infer the change from the marks: an X or a cross-out means remove that element, a circle or a scribble means adjust it, and any words written there are the instruction.';
|
|
17
18
|
export const STROKE_LIMITS = { strokes: 24, pointsPerStroke: 400, pointsTotal: 3_000 };
|
|
18
19
|
const isRecord = (value) => (!!value && typeof value === 'object' && !Array.isArray(value));
|
|
19
|
-
const invalid = (message) => { throw new SlateError('invalid_input', message); };
|
|
20
|
+
const invalid = (message, l10n) => { throw new SlateError('invalid_input', message, l10n ? { l10n } : {}); };
|
|
20
21
|
/** Control characters are stripped except tab and newline; the rest is the user's text. */
|
|
21
22
|
export const cleanUserText = (value) => (
|
|
22
23
|
// eslint-disable-next-line no-control-regex
|
|
@@ -53,7 +54,7 @@ export const normalizeStrokes = (value) => {
|
|
|
53
54
|
});
|
|
54
55
|
});
|
|
55
56
|
};
|
|
56
|
-
/** A missing count is the default; anything but 1, 2, 4, 8 or 12 is refused, never rounded. */
|
|
57
|
+
/** A missing count is the default; anything but 1, 2, 4, 6, 8 or 12 is refused, never rounded. */
|
|
57
58
|
export const normalizeRoundCount = (value) => {
|
|
58
59
|
if (value === undefined || value === null)
|
|
59
60
|
return DEFAULT_ROUND_OPTION_COUNT;
|
|
@@ -74,7 +75,7 @@ export const normalizeAction = (input) => {
|
|
|
74
75
|
return invalid('note must be text');
|
|
75
76
|
const cleaned = cleanUserText(input.note).replace(/\s+/gu, ' ');
|
|
76
77
|
if ([...cleaned].length > NOTE_MAX_CHARACTERS)
|
|
77
|
-
return invalid(`A steer note can be at most ${NOTE_MAX_CHARACTERS} characters
|
|
78
|
+
return invalid(`A steer note can be at most ${NOTE_MAX_CHARACTERS} characters.`, { code: 'note_too_long', params: { max: NOTE_MAX_CHARACTERS } });
|
|
78
79
|
note = cleaned || null;
|
|
79
80
|
}
|
|
80
81
|
let fromVersionId = null;
|
|
@@ -98,9 +99,9 @@ export const normalizeAction = (input) => {
|
|
|
98
99
|
const strokes = normalizeStrokes(input.strokes);
|
|
99
100
|
const words = cleanUserText(input.prompt ?? '');
|
|
100
101
|
if (!words && strokes.length === 0)
|
|
101
|
-
return invalid('Draw on the image or say what should change.');
|
|
102
|
+
return invalid('Draw on the image or say what should change.', { code: 'edit_needs_input' });
|
|
102
103
|
if (Buffer.byteLength(words) > EDIT_PROMPT_MAX_BYTES)
|
|
103
|
-
return invalid(`An edit instruction can be at most ${EDIT_PROMPT_MAX_BYTES} bytes
|
|
104
|
+
return invalid(`An edit instruction can be at most ${EDIT_PROMPT_MAX_BYTES} bytes.`, { code: 'edit_prompt_too_long' });
|
|
104
105
|
return { kind: 'edit', versionId, prompt: words || EDIT_MARKS_ONLY_PROMPT, strokes };
|
|
105
106
|
}
|
|
106
107
|
return invalid('action.kind must be round or edit');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-actions.js","sourceRoot":"","sources":["../src/slate-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"slate-actions.js","sourceRoot":"","sources":["../src/slate-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
* and lays the frame out: the whole window in `fullscreen`, its reported height in `inline` (`?mode=inline`). The
|
|
9
9
|
* session token is the one in this page's own URL; the frame never sees it.
|
|
10
10
|
*
|
|
11
|
+
* Its own words (the overlay, its errors) are the screen's catalogue's (`SLATE_BROWSER_PAGE_KEYS`), in the browser's
|
|
12
|
+
* language, matched to a shipped locale by the screen's own rule (`mcp-slate-ui-locale-match.ts`); the same language is
|
|
13
|
+
* handed to the screen as `hostContext.locale`.
|
|
14
|
+
*
|
|
11
15
|
* String.raw so escapes reach the browser unchanged: no backtick and no dollar-brace inside.
|
|
12
16
|
*/
|
|
13
17
|
export declare const SLATE_BROWSER_HOST_SCRIPT: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-browser-host-script.d.ts","sourceRoot":"","sources":["../src/slate-browser-host-script.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"slate-browser-host-script.d.ts","sourceRoot":"","sources":["../src/slate-browser-host-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,yBAAyB,QA8HrC,CAAC"}
|
|
@@ -8,12 +8,31 @@
|
|
|
8
8
|
* and lays the frame out: the whole window in `fullscreen`, its reported height in `inline` (`?mode=inline`). The
|
|
9
9
|
* session token is the one in this page's own URL; the frame never sees it.
|
|
10
10
|
*
|
|
11
|
+
* Its own words (the overlay, its errors) are the screen's catalogue's (`SLATE_BROWSER_PAGE_KEYS`), in the browser's
|
|
12
|
+
* language, matched to a shipped locale by the screen's own rule (`mcp-slate-ui-locale-match.ts`); the same language is
|
|
13
|
+
* handed to the screen as `hostContext.locale`.
|
|
14
|
+
*
|
|
11
15
|
* String.raw so escapes reach the browser unchanged: no backtick and no dollar-brace inside.
|
|
12
16
|
*/
|
|
13
17
|
export const SLATE_BROWSER_HOST_SCRIPT = String.raw `
|
|
14
18
|
"use strict";
|
|
15
19
|
(function () {
|
|
16
20
|
var PROTOCOL = "2026-01-26";
|
|
21
|
+
var MESSAGES = __PAGE_MESSAGES__;
|
|
22
|
+
var parseIcu = (__PARSE_ICU__);
|
|
23
|
+
var formatIcu = (__FORMAT_ICU__);
|
|
24
|
+
var matchShippedLocale = (__MATCH_LOCALE__);
|
|
25
|
+
var asked = (navigator.languages && navigator.languages[0]) || navigator.language || "en-US";
|
|
26
|
+
var tag = (function () { try { return matchShippedLocale(Intl.getCanonicalLocales(asked)[0], Object.keys(MESSAGES)); } catch (err) { return "en"; } })();
|
|
27
|
+
var plural = new Intl.PluralRules(tag === "en-XA" ? "en" : tag);
|
|
28
|
+
var numbers = new Intl.NumberFormat(tag === "en-XA" ? "en" : tag);
|
|
29
|
+
function say(key, values) {
|
|
30
|
+
var own = MESSAGES[tag] || MESSAGES.en;
|
|
31
|
+
return formatIcu(parseIcu(own[key] || MESSAGES.en[key]), values || {}, { plural: function (n) { return plural.select(n); }, number: function (n) { return numbers.format(n); } });
|
|
32
|
+
}
|
|
33
|
+
document.documentElement.setAttribute("lang", tag);
|
|
34
|
+
document.title = say("title");
|
|
35
|
+
document.getElementById("screen").setAttribute("title", say("title"));
|
|
17
36
|
var query = new URLSearchParams(location.search);
|
|
18
37
|
var token = query.get("t") || "";
|
|
19
38
|
var frame = document.getElementById("screen");
|
|
@@ -29,7 +48,7 @@ export const SLATE_BROWSER_HOST_SCRIPT = String.raw `
|
|
|
29
48
|
|
|
30
49
|
function theme() { return scheme.matches ? "dark" : "light"; }
|
|
31
50
|
function context() {
|
|
32
|
-
return { theme: theme(), displayMode: mode, availableDisplayModes: modes, platform: "web", locale:
|
|
51
|
+
return { theme: theme(), displayMode: mode, availableDisplayModes: modes, platform: "web", locale: asked };
|
|
33
52
|
}
|
|
34
53
|
function layout() {
|
|
35
54
|
document.documentElement.style.colorScheme = theme();
|
|
@@ -44,7 +63,7 @@ export const SLATE_BROWSER_HOST_SCRIPT = String.raw `
|
|
|
44
63
|
function notify(method, params) { send({ jsonrpc: "2.0", method: method, params: params }); }
|
|
45
64
|
|
|
46
65
|
// ---- the session ----
|
|
47
|
-
function
|
|
66
|
+
function show(title, note) {
|
|
48
67
|
overTitle.textContent = title;
|
|
49
68
|
overNote.textContent = note;
|
|
50
69
|
over.classList.remove("hidden");
|
|
@@ -56,18 +75,18 @@ export const SLATE_BROWSER_HOST_SCRIPT = String.raw `
|
|
|
56
75
|
body: JSON.stringify(body)
|
|
57
76
|
}).then(function (res) {
|
|
58
77
|
return res.json().then(function (data) {
|
|
59
|
-
if (!res.ok) throw new Error((data && data.error && data.error.message) || ("
|
|
78
|
+
if (!res.ok) throw new Error((data && data.error && data.error.message) || say("browserSessionAnswered", { status: String(res.status) }));
|
|
60
79
|
return data;
|
|
61
80
|
});
|
|
62
81
|
}, function () {
|
|
63
|
-
if (!finished) say("
|
|
64
|
-
throw new Error("
|
|
82
|
+
if (!finished) show(say("browserSessionEnded"), say("browserRunAgain"));
|
|
83
|
+
throw new Error(say("browserNotRunning"));
|
|
65
84
|
});
|
|
66
85
|
}
|
|
67
86
|
function decided(out) {
|
|
68
87
|
if (!out.ending || !out.decided) return;
|
|
69
88
|
finished = true;
|
|
70
|
-
say(out.decided === "select" ? "
|
|
89
|
+
show(say(out.decided === "select" ? "browserChoiceSent" : "browserRequestSent"), say("browserAgentHasIt"));
|
|
71
90
|
}
|
|
72
91
|
function showWorkspace() {
|
|
73
92
|
api("/api/call", { name: "design.slate.show", arguments: {} }).then(function (out) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-browser-host-script.js","sourceRoot":"","sources":["../src/slate-browser-host-script.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"slate-browser-host-script.js","sourceRoot":"","sources":["../src/slate-browser-host-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8HlD,CAAC"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* target `browser`) and the shim that stands in for an MCP Apps host. The frame is sandboxed to scripts only, so the
|
|
4
4
|
* screen has no origin of its own to reach this server with, and its policy allows no network at all.
|
|
5
5
|
*
|
|
6
|
-
* Self-contained, like the screen: no external script, stylesheet, font or URL.
|
|
6
|
+
* Self-contained, like the screen: no external script, stylesheet, font or URL. Its words are English in the markup
|
|
7
|
+
* and re-worded by its script in the browser's language before anything shows.
|
|
7
8
|
*/
|
|
8
9
|
export declare const buildSlateBrowserHostHtml: () => string;
|
|
9
10
|
//# sourceMappingURL=slate-browser-host.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-browser-host.d.ts","sourceRoot":"","sources":["../src/slate-browser-host.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slate-browser-host.d.ts","sourceRoot":"","sources":["../src/slate-browser-host.ts"],"names":[],"mappings":"AAWA;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,QAAO,MA+B5C,CAAC"}
|
|
@@ -1,18 +1,27 @@
|
|
|
1
|
+
import { SLATE_BROWSER_PAGE_KEYS, SLATE_UI_MESSAGES } from './mcp-slate-ui-copy.js';
|
|
2
|
+
import { formatIcu, parseIcu } from './mcp-slate-ui-icu.js';
|
|
3
|
+
import { matchShippedLocale } from './mcp-slate-ui-locale-match.js';
|
|
4
|
+
import { SLATE_UI_LOCALES } from './mcp-slate-ui-locales/index.js';
|
|
1
5
|
import { SLATE_BROWSER_HOST_SCRIPT } from './slate-browser-host-script.js';
|
|
6
|
+
/** The page's own words in every shipped locale: only the keys it uses. */
|
|
7
|
+
const pageMessages = () => Object.fromEntries(Object.entries(SLATE_UI_LOCALES).map(([tag, messages]) => [
|
|
8
|
+
tag, Object.fromEntries(SLATE_BROWSER_PAGE_KEYS.map((key) => [key, messages[key]])),
|
|
9
|
+
]));
|
|
2
10
|
/**
|
|
3
11
|
* The page the browser workspace opens: a frame for the screen (built from the same modules the MCP plugin serves, with
|
|
4
12
|
* target `browser`) and the shim that stands in for an MCP Apps host. The frame is sandboxed to scripts only, so the
|
|
5
13
|
* screen has no origin of its own to reach this server with, and its policy allows no network at all.
|
|
6
14
|
*
|
|
7
|
-
* Self-contained, like the screen: no external script, stylesheet, font or URL.
|
|
15
|
+
* Self-contained, like the screen: no external script, stylesheet, font or URL. Its words are English in the markup
|
|
16
|
+
* and re-worded by its script in the browser's language before anything shows.
|
|
8
17
|
*/
|
|
9
18
|
export const buildSlateBrowserHostHtml = () => `<!doctype html>
|
|
10
|
-
<html
|
|
19
|
+
<html>
|
|
11
20
|
<head>
|
|
12
21
|
<meta charset="utf-8">
|
|
13
22
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
14
23
|
<meta name="color-scheme" content="light dark">
|
|
15
|
-
<title
|
|
24
|
+
<title>${SLATE_UI_MESSAGES.title}</title>
|
|
16
25
|
<style>
|
|
17
26
|
:root { --bg: #ffffff; --fg: #17181c; --muted: #5b5f6a; --card: #ffffff; --line: #d9dce3; }
|
|
18
27
|
@media (prefers-color-scheme: dark) { :root { --bg: #16171b; --fg: #f1f2f5; --muted: #a3a7b3; --card: #1f2126; --line: #34363d; } }
|
|
@@ -28,9 +37,13 @@ export const buildSlateBrowserHostHtml = () => `<!doctype html>
|
|
|
28
37
|
</style>
|
|
29
38
|
</head>
|
|
30
39
|
<body>
|
|
31
|
-
<iframe id="screen" title="
|
|
40
|
+
<iframe id="screen" title="${SLATE_UI_MESSAGES.title}" sandbox="allow-scripts"></iframe>
|
|
32
41
|
<div id="over" class="hidden" role="status"><div class="box"><h1 id="over-title"></h1><p id="over-note"></p></div></div>
|
|
33
|
-
<script>${SLATE_BROWSER_HOST_SCRIPT
|
|
42
|
+
<script>${SLATE_BROWSER_HOST_SCRIPT
|
|
43
|
+
.replace('__PAGE_MESSAGES__', () => JSON.stringify(pageMessages()))
|
|
44
|
+
.replace('__PARSE_ICU__', () => parseIcu.toString())
|
|
45
|
+
.replace('__FORMAT_ICU__', () => formatIcu.toString())
|
|
46
|
+
.replace('__MATCH_LOCALE__', () => matchShippedLocale.toString())}</script>
|
|
34
47
|
</body>
|
|
35
48
|
</html>
|
|
36
49
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-browser-host.js","sourceRoot":"","sources":["../src/slate-browser-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E
|
|
1
|
+
{"version":3,"file":"slate-browser-host.js","sourceRoot":"","sources":["../src/slate-browser-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,2EAA2E;AAC3E,MAAM,YAAY,GAAG,GAA2C,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;IAC9I,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpF,CAAC,CAAC,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAW,EAAE,CAAC;;;;;;SAM9C,iBAAiB,CAAC,KAAK;;;;;;;;;;;;;;;;6BAgBH,iBAAiB,CAAC,KAAK;;UAE1C,yBAAyB;KAC9B,OAAO,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;KAClE,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACnD,OAAO,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KACrD,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;;;CAGpE,CAAC"}
|
package/dist/slate-commit.js
CHANGED
|
@@ -7,7 +7,7 @@ import { digestOf, editVersionId, sha256Hex, slotFor } from './slate-ids.js';
|
|
|
7
7
|
import { nextOptionLabels, versionLabelFor } from './slate-labels.js';
|
|
8
8
|
import { appendLedger } from './slate-ledger.js';
|
|
9
9
|
import { editAnnotatedFile, editSourceFile, ensureEditDirectory } from './slate-paths.js';
|
|
10
|
-
import { composeConcept, conceptLimitProblem, freshReferenceProblem, likeSearchImageProblem } from './slate-round-params.js';
|
|
10
|
+
import { composeConcept, conceptLimitL10n, conceptLimitProblem, freshReferenceProblem, likeSearchImageProblem } from './slate-round-params.js';
|
|
11
11
|
import { readVersionBytes, writeImageOnce } from './slate-versions.js';
|
|
12
12
|
import { WORKSPACE_MAX_ROUNDS } from './slate-workspace-parse.js';
|
|
13
13
|
import { NoWrite, findVersion, isNonTerminal, mutateWorkspace } from './slate-workspace-store.js';
|
|
@@ -27,7 +27,7 @@ export const referenceSkipList = (workspace) => ([...new Set(workspace.rounds.fl
|
|
|
27
27
|
export const optionReferences = (selected, count) => (selected.length === 0 ? [] : Array.from({ length: count }, (_unused, index) => selected[index % selected.length]));
|
|
28
28
|
const asSourceMissing = (error) => {
|
|
29
29
|
if (error instanceof SlateError && (error.code === 'file_missing' || error.code === 'file_changed')) {
|
|
30
|
-
throw new SlateError('source_missing', error.message);
|
|
30
|
+
throw new SlateError('source_missing', error.message, { l10n: { code: 'source_missing' } });
|
|
31
31
|
}
|
|
32
32
|
throw error;
|
|
33
33
|
};
|
|
@@ -35,11 +35,11 @@ const freezeRound = async (action, ws, root) => {
|
|
|
35
35
|
if (!ws.brief.concept.trim())
|
|
36
36
|
throw new SlateError('invalid_input', 'This run has no recorded brief, so a new round cannot be written.');
|
|
37
37
|
if (ws.rounds.length >= WORKSPACE_MAX_ROUNDS)
|
|
38
|
-
throw new SlateError('invalid_input', 'This workspace has reached its round limit.');
|
|
38
|
+
throw new SlateError('invalid_input', 'This workspace has reached its round limit.', { l10n: { code: 'round_limit' } });
|
|
39
39
|
const concept = composeConcept(ws.brief.concept, action.note);
|
|
40
40
|
const conceptProblem = conceptLimitProblem(concept);
|
|
41
41
|
if (conceptProblem)
|
|
42
|
-
throw new SlateError('invalid_input', conceptProblem);
|
|
42
|
+
throw new SlateError('invalid_input', conceptProblem, { l10n: conceptLimitL10n(concept) });
|
|
43
43
|
const selected = [...ws.inspiration.selected];
|
|
44
44
|
let from = null;
|
|
45
45
|
if (action.fromVersionId) {
|
|
@@ -47,14 +47,14 @@ const freezeRound = async (action, ws, root) => {
|
|
|
47
47
|
const bytes = await readVersionBytes(root, ws, version).catch(asSourceMissing);
|
|
48
48
|
const sizeProblem = selected.length === 0 ? likeSearchImageProblem(bytes.byteLength) : null;
|
|
49
49
|
if (sizeProblem)
|
|
50
|
-
throw new SlateError('invalid_input', sizeProblem);
|
|
50
|
+
throw new SlateError('invalid_input', sizeProblem, { l10n: { code: 'reference_too_large' } });
|
|
51
51
|
from = { versionId: version.versionId, sourceSha256: sha256Hex(bytes) };
|
|
52
52
|
}
|
|
53
53
|
const skip = selected.length === 0 ? referenceSkipList(ws) : [];
|
|
54
54
|
if (selected.length === 0) {
|
|
55
55
|
const problem = freshReferenceProblem({ count: action.count, skipCount: skip.length });
|
|
56
56
|
if (problem)
|
|
57
|
-
throw new SlateError('no_fresh_references', problem);
|
|
57
|
+
throw new SlateError('no_fresh_references', problem, { l10n: { code: 'no_fresh_references' } });
|
|
58
58
|
}
|
|
59
59
|
const index = 1 + Math.max(...ws.rounds.map((round) => round.index));
|
|
60
60
|
const roundId = `r${index}`;
|
|
@@ -95,7 +95,7 @@ const freezeEdit = async (action, ws, root, opId) => {
|
|
|
95
95
|
throw new SlateError('not_found', `Unknown option for version ${version.versionId}`);
|
|
96
96
|
const blocker = editBlocker(ws, option.candidate);
|
|
97
97
|
if (blocker)
|
|
98
|
-
throw new SlateError(blocker.code, blocker.message);
|
|
98
|
+
throw new SlateError(blocker.code, blocker.message, { l10n: blocker.l10n });
|
|
99
99
|
const bytes = await readVersionBytes(root, ws, version).catch(asSourceMissing);
|
|
100
100
|
await ensureEditDirectory(root, opId);
|
|
101
101
|
const sourceSha256 = sha256Hex(bytes);
|
package/dist/slate-commit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-commit.js","sourceRoot":"","sources":["../src/slate-commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"slate-commit.js","sourceRoot":"","sources":["../src/slate-commit.ts"],"names":[],"mappings":"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"}
|