@12ui/design 0.2.71 → 0.2.73
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 +248 -55
- package/SKILL.md +28 -33
- package/dist/cli-arguments.d.ts.map +1 -1
- package/dist/cli-arguments.js +3 -0
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli-branch-command.d.ts.map +1 -1
- package/dist/cli-branch-command.js +4 -0
- package/dist/cli-branch-command.js.map +1 -1
- package/dist/cli-capabilities.d.ts +35 -1
- package/dist/cli-capabilities.d.ts.map +1 -1
- package/dist/cli-capabilities.js +36 -1
- package/dist/cli-capabilities.js.map +1 -1
- package/dist/cli-corpus-command.d.ts +5 -4
- package/dist/cli-corpus-command.d.ts.map +1 -1
- package/dist/cli-corpus-command.js +17 -26
- package/dist/cli-corpus-command.js.map +1 -1
- package/dist/cli-corpus-run.js +1 -1
- package/dist/cli-corpus-run.js.map +1 -1
- package/dist/cli-draft-command.js +1 -1
- package/dist/cli-draft-command.js.map +1 -1
- package/dist/cli-help/design.d.ts +26 -6
- package/dist/cli-help/design.d.ts.map +1 -1
- package/dist/cli-help/design.js +39 -7
- package/dist/cli-help/design.js.map +1 -1
- package/dist/cli-help/index.d.ts +206 -7
- package/dist/cli-help/index.d.ts.map +1 -1
- package/dist/cli-help/index.js +4 -0
- package/dist/cli-help/index.js.map +1 -1
- package/dist/cli-help/meta.d.ts +1 -1
- package/dist/cli-help/meta.d.ts.map +1 -1
- package/dist/cli-help/meta.js +2 -1
- package/dist/cli-help/meta.js.map +1 -1
- package/dist/cli-help/scene.d.ts +96 -0
- package/dist/cli-help/scene.d.ts.map +1 -0
- package/dist/cli-help/scene.js +162 -0
- package/dist/cli-help/scene.js.map +1 -0
- package/dist/cli-help/workflow.d.ts +90 -0
- package/dist/cli-help/workflow.d.ts.map +1 -0
- package/dist/cli-help/workflow.js +89 -0
- package/dist/cli-help/workflow.js.map +1 -0
- package/dist/cli-open-browser.d.ts +7 -0
- package/dist/cli-open-browser.d.ts.map +1 -0
- package/dist/cli-open-browser.js +25 -0
- package/dist/cli-open-browser.js.map +1 -0
- package/dist/cli-prototype-command.d.ts +3 -1
- package/dist/cli-prototype-command.d.ts.map +1 -1
- package/dist/cli-prototype-command.js +33 -7
- package/dist/cli-prototype-command.js.map +1 -1
- package/dist/cli-review-command.d.ts.map +1 -1
- package/dist/cli-review-command.js +1 -16
- package/dist/cli-review-command.js.map +1 -1
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +41 -3
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-scene-command.d.ts +3 -0
- package/dist/cli-scene-command.d.ts.map +1 -0
- package/dist/cli-scene-command.js +292 -0
- package/dist/cli-scene-command.js.map +1 -0
- package/dist/cli-usage.d.ts +8 -0
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +65 -6
- package/dist/cli-usage.js.map +1 -1
- package/dist/cli-workflow-command.d.ts +8 -0
- package/dist/cli-workflow-command.d.ts.map +1 -0
- package/dist/cli-workflow-command.js +97 -0
- package/dist/cli-workflow-command.js.map +1 -0
- package/dist/cli-workspace-command.d.ts +25 -0
- package/dist/cli-workspace-command.d.ts.map +1 -0
- package/dist/cli-workspace-command.js +95 -0
- package/dist/cli-workspace-command.js.map +1 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -4
- package/dist/config.js.map +1 -1
- package/dist/corpus-access.d.ts +11 -0
- package/dist/corpus-access.d.ts.map +1 -0
- package/dist/corpus-access.js +18 -0
- package/dist/corpus-access.js.map +1 -0
- package/dist/corpus-client.d.ts +11 -11
- package/dist/corpus-client.d.ts.map +1 -1
- package/dist/corpus-client.js +17 -6
- package/dist/corpus-client.js.map +1 -1
- package/dist/corpus-inspiration-failure.d.ts +1 -1
- package/dist/corpus-inspiration-failure.js +2 -2
- package/dist/corpus-inspiration-failure.js.map +1 -1
- package/dist/corpus-reference-download-retry.d.ts.map +1 -1
- package/dist/corpus-reference-download-retry.js +11 -1
- package/dist/corpus-reference-download-retry.js.map +1 -1
- package/dist/corpus-request-error.d.ts +2 -0
- package/dist/corpus-request-error.d.ts.map +1 -1
- package/dist/corpus-request-error.js +2 -0
- package/dist/corpus-request-error.js.map +1 -1
- package/dist/corpus-retry-guidance.d.ts +5 -0
- package/dist/corpus-retry-guidance.d.ts.map +1 -0
- package/dist/corpus-retry-guidance.js +18 -0
- package/dist/corpus-retry-guidance.js.map +1 -0
- package/dist/improve-pricing-plan.d.ts.map +1 -1
- package/dist/improve-pricing-plan.js +2 -4
- package/dist/improve-pricing-plan.js.map +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +52 -0
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/mcp-slate-command.d.ts +31 -0
- package/dist/mcp-slate-command.d.ts.map +1 -0
- package/dist/mcp-slate-command.js +118 -0
- package/dist/mcp-slate-command.js.map +1 -0
- package/dist/mcp-slate-image.d.ts +22 -0
- package/dist/mcp-slate-image.d.ts.map +1 -0
- package/dist/mcp-slate-image.js +28 -0
- package/dist/mcp-slate-image.js.map +1 -0
- package/dist/mcp-slate-latest.d.ts +13 -0
- package/dist/mcp-slate-latest.d.ts.map +1 -0
- package/dist/mcp-slate-latest.js +34 -0
- package/dist/mcp-slate-latest.js.map +1 -0
- package/dist/mcp-slate-names.d.ts +25 -0
- package/dist/mcp-slate-names.d.ts.map +1 -0
- package/dist/mcp-slate-names.js +49 -0
- package/dist/mcp-slate-names.js.map +1 -0
- package/dist/mcp-slate-resource.d.ts +5 -0
- package/dist/mcp-slate-resource.d.ts.map +1 -0
- package/dist/mcp-slate-resource.js +37 -0
- package/dist/mcp-slate-resource.js.map +1 -0
- package/dist/mcp-slate-run.d.ts +41 -0
- package/dist/mcp-slate-run.d.ts.map +1 -0
- package/dist/mcp-slate-run.js +88 -0
- package/dist/mcp-slate-run.js.map +1 -0
- package/dist/mcp-slate-tool-defs.d.ts +61 -0
- package/dist/mcp-slate-tool-defs.d.ts.map +1 -0
- package/dist/mcp-slate-tool-defs.js +247 -0
- package/dist/mcp-slate-tool-defs.js.map +1 -0
- package/dist/mcp-slate-tools.d.ts +8 -0
- package/dist/mcp-slate-tools.d.ts.map +1 -0
- package/dist/mcp-slate-tools.js +45 -0
- package/dist/mcp-slate-tools.js.map +1 -0
- package/dist/mcp-slate-ui-copy.d.ts +134 -0
- package/dist/mcp-slate-ui-copy.d.ts.map +1 -0
- package/dist/mcp-slate-ui-copy.js +136 -0
- package/dist/mcp-slate-ui-copy.js.map +1 -0
- package/dist/mcp-slate-ui-script-bridge.d.ts +18 -0
- package/dist/mcp-slate-ui-script-bridge.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-bridge.js +137 -0
- package/dist/mcp-slate-ui-script-bridge.js.map +1 -0
- package/dist/mcp-slate-ui-script-browser.d.ts +12 -0
- package/dist/mcp-slate-ui-script-browser.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-browser.js +19 -0
- package/dist/mcp-slate-ui-script-browser.js.map +1 -0
- package/dist/mcp-slate-ui-script-dialog.d.ts +20 -0
- package/dist/mcp-slate-ui-script-dialog.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-dialog.js +332 -0
- package/dist/mcp-slate-ui-script-dialog.js.map +1 -0
- package/dist/mcp-slate-ui-script-inline.d.ts +10 -0
- package/dist/mcp-slate-ui-script-inline.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-inline.js +221 -0
- package/dist/mcp-slate-ui-script-inline.js.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration.d.ts +12 -0
- package/dist/mcp-slate-ui-script-inspiration.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration.js +216 -0
- package/dist/mcp-slate-ui-script-inspiration.js.map +1 -0
- package/dist/mcp-slate-ui-script-more.d.ts +30 -0
- package/dist/mcp-slate-ui-script-more.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-more.js +225 -0
- package/dist/mcp-slate-ui-script-more.js.map +1 -0
- package/dist/mcp-slate-ui-script-progress.d.ts +7 -0
- package/dist/mcp-slate-ui-script-progress.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-progress.js +9 -0
- package/dist/mcp-slate-ui-script-progress.js.map +1 -0
- package/dist/mcp-slate-ui-script-remote.d.ts +28 -0
- package/dist/mcp-slate-ui-script-remote.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-remote.js +147 -0
- package/dist/mcp-slate-ui-script-remote.js.map +1 -0
- package/dist/mcp-slate-ui-script-scribble.d.ts +19 -0
- package/dist/mcp-slate-ui-script-scribble.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-scribble.js +114 -0
- package/dist/mcp-slate-ui-script-scribble.js.map +1 -0
- package/dist/mcp-slate-ui-script-select.d.ts +16 -0
- package/dist/mcp-slate-ui-script-select.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-select.js +73 -0
- package/dist/mcp-slate-ui-script-select.js.map +1 -0
- package/dist/mcp-slate-ui-script-stage.d.ts +11 -0
- package/dist/mcp-slate-ui-script-stage.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-stage.js +181 -0
- package/dist/mcp-slate-ui-script-stage.js.map +1 -0
- package/dist/mcp-slate-ui-script-state.d.ts +13 -0
- package/dist/mcp-slate-ui-script-state.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-state.js +306 -0
- package/dist/mcp-slate-ui-script-state.js.map +1 -0
- package/dist/mcp-slate-ui-script-thumbtools.d.ts +23 -0
- package/dist/mcp-slate-ui-script-thumbtools.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-thumbtools.js +103 -0
- package/dist/mcp-slate-ui-script-thumbtools.js.map +1 -0
- package/dist/mcp-slate-ui-script.d.ts +28 -0
- package/dist/mcp-slate-ui-script.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script.js +58 -0
- package/dist/mcp-slate-ui-script.js.map +1 -0
- package/dist/mcp-slate-ui-styles-dialog.d.ts +17 -0
- package/dist/mcp-slate-ui-styles-dialog.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-dialog.js +73 -0
- package/dist/mcp-slate-ui-styles-dialog.js.map +1 -0
- package/dist/mcp-slate-ui-styles-stage.d.ts +12 -0
- package/dist/mcp-slate-ui-styles-stage.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-stage.js +53 -0
- package/dist/mcp-slate-ui-styles-stage.js.map +1 -0
- package/dist/mcp-slate-ui-styles-thumbtools.d.ts +10 -0
- package/dist/mcp-slate-ui-styles-thumbtools.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-thumbtools.js +25 -0
- package/dist/mcp-slate-ui-styles-thumbtools.js.map +1 -0
- package/dist/mcp-slate-ui-styles.d.ts +13 -0
- package/dist/mcp-slate-ui-styles.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles.js +117 -0
- package/dist/mcp-slate-ui-styles.js.map +1 -0
- package/dist/mcp-slate-ui.d.ts +16 -0
- package/dist/mcp-slate-ui.d.ts.map +1 -0
- package/dist/mcp-slate-ui.js +58 -0
- package/dist/mcp-slate-ui.js.map +1 -0
- package/dist/mcp-slate-workspace-tools.d.ts +15 -0
- package/dist/mcp-slate-workspace-tools.d.ts.map +1 -0
- package/dist/mcp-slate-workspace-tools.js +155 -0
- package/dist/mcp-slate-workspace-tools.js.map +1 -0
- package/dist/mcp-tool-definitions.d.ts.map +1 -1
- package/dist/mcp-tool-definitions.js +9 -7
- package/dist/mcp-tool-definitions.js.map +1 -1
- package/dist/mcp-tool-handler.d.ts +8 -2
- package/dist/mcp-tool-handler.d.ts.map +1 -1
- package/dist/mcp-tool-handler.js +34 -13
- package/dist/mcp-tool-handler.js.map +1 -1
- package/dist/mcp-workflow-tools.d.ts +6 -0
- package/dist/mcp-workflow-tools.d.ts.map +1 -0
- package/dist/mcp-workflow-tools.js +108 -0
- package/dist/mcp-workflow-tools.js.map +1 -0
- package/dist/prototype-browsers.d.ts +8 -2
- package/dist/prototype-browsers.d.ts.map +1 -1
- package/dist/prototype-browsers.js +8 -3
- package/dist/prototype-browsers.js.map +1 -1
- package/dist/prototype-label-client.d.ts +5 -0
- package/dist/prototype-label-client.d.ts.map +1 -1
- package/dist/prototype-label-client.js.map +1 -1
- package/dist/prototype-poststep.d.ts +2 -2
- package/dist/prototype-poststep.d.ts.map +1 -1
- package/dist/prototype-poststep.js +3 -0
- package/dist/prototype-poststep.js.map +1 -1
- package/dist/prototype-process.js +1 -1
- package/dist/prototype-process.js.map +1 -1
- package/dist/prototype-run-record.d.ts +6 -2
- package/dist/prototype-run-record.d.ts.map +1 -1
- package/dist/prototype-run-record.js +6 -0
- package/dist/prototype-run-record.js.map +1 -1
- package/dist/prototype-runner.d.ts +2 -2
- package/dist/prototype-runner.d.ts.map +1 -1
- package/dist/prototype-runner.js +5 -2
- package/dist/prototype-runner.js.map +1 -1
- package/dist/prototype-workflow-contract.d.ts +13 -0
- package/dist/prototype-workflow-contract.d.ts.map +1 -0
- package/dist/prototype-workflow-contract.js +82 -0
- package/dist/prototype-workflow-contract.js.map +1 -0
- package/dist/prototype-workflow-labels.d.ts +29 -0
- package/dist/prototype-workflow-labels.d.ts.map +1 -0
- package/dist/prototype-workflow-labels.js +93 -0
- package/dist/prototype-workflow-labels.js.map +1 -0
- package/dist/run-journal-commands.d.ts.map +1 -1
- package/dist/run-journal-commands.js +24 -5
- package/dist/run-journal-commands.js.map +1 -1
- package/dist/scene/camera-model.d.ts +48 -0
- package/dist/scene/camera-model.d.ts.map +1 -0
- package/dist/scene/camera-model.js +89 -0
- package/dist/scene/camera-model.js.map +1 -0
- package/dist/scene/camera-solve.d.ts +58 -0
- package/dist/scene/camera-solve.d.ts.map +1 -0
- package/dist/scene/camera-solve.js +288 -0
- package/dist/scene/camera-solve.js.map +1 -0
- package/dist/scene/capture-plan.d.ts +28 -0
- package/dist/scene/capture-plan.d.ts.map +1 -0
- package/dist/scene/capture-plan.js +79 -0
- package/dist/scene/capture-plan.js.map +1 -0
- package/dist/scene/capture.d.ts +21 -0
- package/dist/scene/capture.d.ts.map +1 -0
- package/dist/scene/capture.js +118 -0
- package/dist/scene/capture.js.map +1 -0
- package/dist/scene/image-colors.d.ts +25 -0
- package/dist/scene/image-colors.d.ts.map +1 -0
- package/dist/scene/image-colors.js +110 -0
- package/dist/scene/image-colors.js.map +1 -0
- package/dist/scene/image-rectify.d.ts +25 -0
- package/dist/scene/image-rectify.d.ts.map +1 -0
- package/dist/scene/image-rectify.js +82 -0
- package/dist/scene/image-rectify.js.map +1 -0
- package/dist/scene/image-sheet.d.ts +19 -0
- package/dist/scene/image-sheet.d.ts.map +1 -0
- package/dist/scene/image-sheet.js +118 -0
- package/dist/scene/image-sheet.js.map +1 -0
- package/dist/scene/least-squares.d.ts +31 -0
- package/dist/scene/least-squares.d.ts.map +1 -0
- package/dist/scene/least-squares.js +173 -0
- package/dist/scene/least-squares.js.map +1 -0
- package/dist/scene/numbers.d.ts +17 -0
- package/dist/scene/numbers.d.ts.map +1 -0
- package/dist/scene/numbers.js +39 -0
- package/dist/scene/numbers.js.map +1 -0
- package/dist/scene/placement.d.ts +43 -0
- package/dist/scene/placement.d.ts.map +1 -0
- package/dist/scene/placement.js +107 -0
- package/dist/scene/placement.js.map +1 -0
- package/dist/scene/raster.d.ts +18 -0
- package/dist/scene/raster.d.ts.map +1 -0
- package/dist/scene/raster.js +31 -0
- package/dist/scene/raster.js.map +1 -0
- package/dist/scene/scene-kit.d.ts +20 -0
- package/dist/scene/scene-kit.d.ts.map +1 -0
- package/dist/scene/scene-kit.js +74 -0
- package/dist/scene/scene-kit.js.map +1 -0
- package/dist/scene/scene-verbs.d.ts +4 -0
- package/dist/scene/scene-verbs.d.ts.map +1 -0
- package/dist/scene/scene-verbs.js +5 -0
- package/dist/scene/scene-verbs.js.map +1 -0
- package/dist/scene/seeded-random.d.ts +20 -0
- package/dist/scene/seeded-random.d.ts.map +1 -0
- package/dist/scene/seeded-random.js +42 -0
- package/dist/scene/seeded-random.js.map +1 -0
- package/dist/scene/spec-expression.d.ts +25 -0
- package/dist/scene/spec-expression.d.ts.map +1 -0
- package/dist/scene/spec-expression.js +234 -0
- package/dist/scene/spec-expression.js.map +1 -0
- package/dist/scene/static-server.d.ts +13 -0
- package/dist/scene/static-server.d.ts.map +1 -0
- package/dist/scene/static-server.js +99 -0
- package/dist/scene/static-server.js.map +1 -0
- package/dist/server.d.ts +22 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +44 -8
- package/dist/server.js.map +1 -1
- package/dist/slate-actions.d.ts +38 -0
- package/dist/slate-actions.d.ts.map +1 -0
- package/dist/slate-actions.js +102 -0
- package/dist/slate-actions.js.map +1 -0
- package/dist/slate-annotate.d.ts +36 -0
- package/dist/slate-annotate.d.ts.map +1 -0
- package/dist/slate-annotate.js +71 -0
- package/dist/slate-annotate.js.map +1 -0
- package/dist/slate-approvals.d.ts +61 -0
- package/dist/slate-approvals.d.ts.map +1 -0
- package/dist/slate-approvals.js +153 -0
- package/dist/slate-approvals.js.map +1 -0
- package/dist/slate-browser-decision.d.ts +30 -0
- package/dist/slate-browser-decision.d.ts.map +1 -0
- package/dist/slate-browser-decision.js +24 -0
- package/dist/slate-browser-decision.js.map +1 -0
- package/dist/slate-browser-host-script.d.ts +14 -0
- package/dist/slate-browser-host-script.d.ts.map +1 -0
- package/dist/slate-browser-host-script.js +125 -0
- package/dist/slate-browser-host-script.js.map +1 -0
- package/dist/slate-browser-host.d.ts +9 -0
- package/dist/slate-browser-host.d.ts.map +1 -0
- package/dist/slate-browser-host.js +37 -0
- package/dist/slate-browser-host.js.map +1 -0
- package/dist/slate-browser-server.d.ts +37 -0
- package/dist/slate-browser-server.d.ts.map +1 -0
- package/dist/slate-browser-server.js +186 -0
- package/dist/slate-browser-server.js.map +1 -0
- package/dist/slate-commit.d.ts +28 -0
- package/dist/slate-commit.d.ts.map +1 -0
- package/dist/slate-commit.js +218 -0
- package/dist/slate-commit.js.map +1 -0
- package/dist/slate-corpus.d.ts +14 -0
- package/dist/slate-corpus.d.ts.map +1 -0
- package/dist/slate-corpus.js +32 -0
- package/dist/slate-corpus.js.map +1 -0
- package/dist/slate-edit-prompt.d.ts +18 -0
- package/dist/slate-edit-prompt.d.ts.map +1 -0
- package/dist/slate-edit-prompt.js +41 -0
- package/dist/slate-edit-prompt.js.map +1 -0
- package/dist/slate-edit-runner.d.ts +4 -0
- package/dist/slate-edit-runner.d.ts.map +1 -0
- package/dist/slate-edit-runner.js +90 -0
- package/dist/slate-edit-runner.js.map +1 -0
- package/dist/slate-editability.d.ts +20 -0
- package/dist/slate-editability.d.ts.map +1 -0
- package/dist/slate-editability.js +19 -0
- package/dist/slate-editability.js.map +1 -0
- package/dist/slate-errors.d.ts +15 -0
- package/dist/slate-errors.d.ts.map +1 -0
- package/dist/slate-errors.js +21 -0
- package/dist/slate-errors.js.map +1 -0
- package/dist/slate-handoff-options.d.ts +40 -0
- package/dist/slate-handoff-options.d.ts.map +1 -0
- package/dist/slate-handoff-options.js +127 -0
- package/dist/slate-handoff-options.js.map +1 -0
- package/dist/slate-handoff.d.ts +11 -0
- package/dist/slate-handoff.d.ts.map +1 -0
- package/dist/slate-handoff.js +56 -0
- package/dist/slate-handoff.js.map +1 -0
- package/dist/slate-ids.d.ts +33 -0
- package/dist/slate-ids.d.ts.map +1 -0
- package/dist/slate-ids.js +47 -0
- package/dist/slate-ids.js.map +1 -0
- package/dist/slate-image-executor.d.ts +39 -0
- package/dist/slate-image-executor.d.ts.map +1 -0
- package/dist/slate-image-executor.js +52 -0
- package/dist/slate-image-executor.js.map +1 -0
- package/dist/slate-inspiration.d.ts +22 -0
- package/dist/slate-inspiration.d.ts.map +1 -0
- package/dist/slate-inspiration.js +112 -0
- package/dist/slate-inspiration.js.map +1 -0
- package/dist/slate-labels.d.ts +11 -0
- package/dist/slate-labels.d.ts.map +1 -0
- package/dist/slate-labels.js +32 -0
- package/dist/slate-labels.js.map +1 -0
- package/dist/slate-ledger.d.ts +29 -0
- package/dist/slate-ledger.d.ts.map +1 -0
- package/dist/slate-ledger.js +65 -0
- package/dist/slate-ledger.js.map +1 -0
- package/dist/slate-liveness.d.ts +26 -0
- package/dist/slate-liveness.d.ts.map +1 -0
- package/dist/slate-liveness.js +49 -0
- package/dist/slate-liveness.js.map +1 -0
- package/dist/slate-local-image.d.ts +19 -0
- package/dist/slate-local-image.d.ts.map +1 -0
- package/dist/slate-local-image.js +36 -0
- package/dist/slate-local-image.js.map +1 -0
- package/dist/slate-lock.d.ts +64 -0
- package/dist/slate-lock.d.ts.map +1 -0
- package/dist/slate-lock.js +178 -0
- package/dist/slate-lock.js.map +1 -0
- package/dist/slate-paths.d.ts +45 -0
- package/dist/slate-paths.d.ts.map +1 -0
- package/dist/slate-paths.js +132 -0
- package/dist/slate-paths.js.map +1 -0
- package/dist/slate-pick.d.ts +29 -0
- package/dist/slate-pick.d.ts.map +1 -0
- package/dist/slate-pick.js +55 -0
- package/dist/slate-pick.js.map +1 -0
- package/dist/slate-reference-ids.d.ts +6 -0
- package/dist/slate-reference-ids.d.ts.map +1 -0
- package/dist/slate-reference-ids.js +17 -0
- package/dist/slate-reference-ids.js.map +1 -0
- package/dist/slate-reference-store.d.ts +23 -0
- package/dist/slate-reference-store.d.ts.map +1 -0
- package/dist/slate-reference-store.js +46 -0
- package/dist/slate-reference-store.js.map +1 -0
- package/dist/slate-resume.d.ts +19 -0
- package/dist/slate-resume.d.ts.map +1 -0
- package/dist/slate-resume.js +94 -0
- package/dist/slate-resume.js.map +1 -0
- package/dist/slate-round-params.d.ts +20 -0
- package/dist/slate-round-params.d.ts.map +1 -0
- package/dist/slate-round-params.js +32 -0
- package/dist/slate-round-params.js.map +1 -0
- package/dist/slate-round-prompt.d.ts +18 -0
- package/dist/slate-round-prompt.d.ts.map +1 -0
- package/dist/slate-round-prompt.js +20 -0
- package/dist/slate-round-prompt.js.map +1 -0
- package/dist/slate-round-runner.d.ts +4 -0
- package/dist/slate-round-runner.d.ts.map +1 -0
- package/dist/slate-round-runner.js +125 -0
- package/dist/slate-round-runner.js.map +1 -0
- package/dist/slate-round-search.d.ts +7 -0
- package/dist/slate-round-search.d.ts.map +1 -0
- package/dist/slate-round-search.js +77 -0
- package/dist/slate-round-search.js.map +1 -0
- package/dist/slate-run-action.d.ts +14 -0
- package/dist/slate-run-action.d.ts.map +1 -0
- package/dist/slate-run-action.js +81 -0
- package/dist/slate-run-action.js.map +1 -0
- package/dist/slate-runner-context.d.ts +57 -0
- package/dist/slate-runner-context.d.ts.map +1 -0
- package/dist/slate-runner-context.js +79 -0
- package/dist/slate-runner-context.js.map +1 -0
- package/dist/slate-runner-failure.d.ts +8 -0
- package/dist/slate-runner-failure.d.ts.map +1 -0
- package/dist/slate-runner-failure.js +17 -0
- package/dist/slate-runner-failure.js.map +1 -0
- package/dist/slate-runner-flag.d.ts +3 -0
- package/dist/slate-runner-flag.d.ts.map +1 -0
- package/dist/slate-runner-flag.js +3 -0
- package/dist/slate-runner-flag.js.map +1 -0
- package/dist/slate-runner-main.d.ts +31 -0
- package/dist/slate-runner-main.d.ts.map +1 -0
- package/dist/slate-runner-main.js +132 -0
- package/dist/slate-runner-main.js.map +1 -0
- package/dist/slate-runner-spawn.d.ts +23 -0
- package/dist/slate-runner-spawn.d.ts.map +1 -0
- package/dist/slate-runner-spawn.js +27 -0
- package/dist/slate-runner-spawn.js.map +1 -0
- package/dist/slate-runtime.d.ts +38 -0
- package/dist/slate-runtime.d.ts.map +1 -0
- package/dist/slate-runtime.js +48 -0
- package/dist/slate-runtime.js.map +1 -0
- package/dist/slate-versions.d.ts +26 -0
- package/dist/slate-versions.d.ts.map +1 -0
- package/dist/slate-versions.js +110 -0
- package/dist/slate-versions.js.map +1 -0
- package/dist/slate-view-contract.d.ts +233 -0
- package/dist/slate-view-contract.d.ts.map +1 -0
- package/dist/slate-view-contract.js +17 -0
- package/dist/slate-view-contract.js.map +1 -0
- package/dist/slate-view-types.d.ts +2 -0
- package/dist/slate-view-types.d.ts.map +1 -0
- package/dist/slate-view-types.js +2 -0
- package/dist/slate-view-types.js.map +1 -0
- package/dist/slate-view.d.ts +19 -0
- package/dist/slate-view.d.ts.map +1 -0
- package/dist/slate-view.js +184 -0
- package/dist/slate-view.js.map +1 -0
- package/dist/slate-workspace-parse.d.ts +20 -0
- package/dist/slate-workspace-parse.d.ts.map +1 -0
- package/dist/slate-workspace-parse.js +437 -0
- package/dist/slate-workspace-parse.js.map +1 -0
- package/dist/slate-workspace-store.d.ts +44 -0
- package/dist/slate-workspace-store.d.ts.map +1 -0
- package/dist/slate-workspace-store.js +270 -0
- package/dist/slate-workspace-store.js.map +1 -0
- package/dist/slate-workspace-types.d.ts +176 -0
- package/dist/slate-workspace-types.d.ts.map +1 -0
- package/dist/slate-workspace-types.js +13 -0
- package/dist/slate-workspace-types.js.map +1 -0
- package/dist/workflow/adapter-12ui.d.ts +4 -0
- package/dist/workflow/adapter-12ui.d.ts.map +1 -0
- package/dist/workflow/adapter-12ui.js +147 -0
- package/dist/workflow/adapter-12ui.js.map +1 -0
- package/dist/workflow/adapter-layerdoc.d.ts +16 -0
- package/dist/workflow/adapter-layerdoc.d.ts.map +1 -0
- package/dist/workflow/adapter-layerdoc.js +116 -0
- package/dist/workflow/adapter-layerdoc.js.map +1 -0
- package/dist/workflow/adapter-openai.d.ts +4 -0
- package/dist/workflow/adapter-openai.d.ts.map +1 -0
- package/dist/workflow/adapter-openai.js +166 -0
- package/dist/workflow/adapter-openai.js.map +1 -0
- package/dist/workflow/adapter-process.d.ts +7 -0
- package/dist/workflow/adapter-process.d.ts.map +1 -0
- package/dist/workflow/adapter-process.js +174 -0
- package/dist/workflow/adapter-process.js.map +1 -0
- package/dist/workflow/adapter-prototype-labels.d.ts +15 -0
- package/dist/workflow/adapter-prototype-labels.d.ts.map +1 -0
- package/dist/workflow/adapter-prototype-labels.js +71 -0
- package/dist/workflow/adapter-prototype-labels.js.map +1 -0
- package/dist/workflow/adapter-types.d.ts +40 -0
- package/dist/workflow/adapter-types.d.ts.map +1 -0
- package/dist/workflow/adapter-types.js +2 -0
- package/dist/workflow/adapter-types.js.map +1 -0
- package/dist/workflow/adapter-utils.d.ts +11 -0
- package/dist/workflow/adapter-utils.d.ts.map +1 -0
- package/dist/workflow/adapter-utils.js +72 -0
- package/dist/workflow/adapter-utils.js.map +1 -0
- package/dist/workflow/adapters.d.ts +6 -0
- package/dist/workflow/adapters.d.ts.map +1 -0
- package/dist/workflow/adapters.js +25 -0
- package/dist/workflow/adapters.js.map +1 -0
- package/dist/workflow/artifact.d.ts +11 -0
- package/dist/workflow/artifact.d.ts.map +1 -0
- package/dist/workflow/artifact.js +94 -0
- package/dist/workflow/artifact.js.map +1 -0
- package/dist/workflow/bundle-collect.d.ts +8 -0
- package/dist/workflow/bundle-collect.d.ts.map +1 -0
- package/dist/workflow/bundle-collect.js +56 -0
- package/dist/workflow/bundle-collect.js.map +1 -0
- package/dist/workflow/bundle-export.d.ts +16 -0
- package/dist/workflow/bundle-export.d.ts.map +1 -0
- package/dist/workflow/bundle-export.js +174 -0
- package/dist/workflow/bundle-export.js.map +1 -0
- package/dist/workflow/bundle-paths.d.ts +7 -0
- package/dist/workflow/bundle-paths.d.ts.map +1 -0
- package/dist/workflow/bundle-paths.js +35 -0
- package/dist/workflow/bundle-paths.js.map +1 -0
- package/dist/workflow/bundle.d.ts +4 -0
- package/dist/workflow/bundle.d.ts.map +1 -0
- package/dist/workflow/bundle.js +4 -0
- package/dist/workflow/bundle.js.map +1 -0
- package/dist/workflow/capture.d.ts +36 -0
- package/dist/workflow/capture.d.ts.map +1 -0
- package/dist/workflow/capture.js +81 -0
- package/dist/workflow/capture.js.map +1 -0
- package/dist/workflow/continuation-branch.d.ts +15 -0
- package/dist/workflow/continuation-branch.d.ts.map +1 -0
- package/dist/workflow/continuation-branch.js +103 -0
- package/dist/workflow/continuation-branch.js.map +1 -0
- package/dist/workflow/continuation-plans.d.ts +38 -0
- package/dist/workflow/continuation-plans.d.ts.map +1 -0
- package/dist/workflow/continuation-plans.js +78 -0
- package/dist/workflow/continuation-plans.js.map +1 -0
- package/dist/workflow/continuation.d.ts +25 -0
- package/dist/workflow/continuation.d.ts.map +1 -0
- package/dist/workflow/continuation.js +89 -0
- package/dist/workflow/continuation.js.map +1 -0
- package/dist/workflow/layerdoc-reader.d.ts +27 -0
- package/dist/workflow/layerdoc-reader.d.ts.map +1 -0
- package/dist/workflow/layerdoc-reader.js +81 -0
- package/dist/workflow/layerdoc-reader.js.map +1 -0
- package/dist/workflow/project-evidence.d.ts +48 -0
- package/dist/workflow/project-evidence.d.ts.map +1 -0
- package/dist/workflow/project-evidence.js +200 -0
- package/dist/workflow/project-evidence.js.map +1 -0
- package/dist/workflow/providers.d.ts +35 -0
- package/dist/workflow/providers.d.ts.map +1 -0
- package/dist/workflow/providers.js +110 -0
- package/dist/workflow/providers.js.map +1 -0
- package/dist/workflow/recipes-layerdoc-validation.d.ts +4 -0
- package/dist/workflow/recipes-layerdoc-validation.d.ts.map +1 -0
- package/dist/workflow/recipes-layerdoc-validation.js +98 -0
- package/dist/workflow/recipes-layerdoc-validation.js.map +1 -0
- package/dist/workflow/recipes-result-validation.d.ts +6 -0
- package/dist/workflow/recipes-result-validation.d.ts.map +1 -0
- package/dist/workflow/recipes-result-validation.js +38 -0
- package/dist/workflow/recipes-result-validation.js.map +1 -0
- package/dist/workflow/recipes-schemas.d.ts +7 -0
- package/dist/workflow/recipes-schemas.d.ts.map +1 -0
- package/dist/workflow/recipes-schemas.js +67 -0
- package/dist/workflow/recipes-schemas.js.map +1 -0
- package/dist/workflow/recipes-validation.d.ts +14 -0
- package/dist/workflow/recipes-validation.d.ts.map +1 -0
- package/dist/workflow/recipes-validation.js +68 -0
- package/dist/workflow/recipes-validation.js.map +1 -0
- package/dist/workflow/recipes.d.ts +20 -0
- package/dist/workflow/recipes.d.ts.map +1 -0
- package/dist/workflow/recipes.js +167 -0
- package/dist/workflow/recipes.js.map +1 -0
- package/dist/workflow/routing.d.ts +4 -0
- package/dist/workflow/routing.d.ts.map +1 -0
- package/dist/workflow/routing.js +28 -0
- package/dist/workflow/routing.js.map +1 -0
- package/dist/workflow/schema.d.ts +5 -0
- package/dist/workflow/schema.d.ts.map +1 -0
- package/dist/workflow/schema.js +29 -0
- package/dist/workflow/schema.js.map +1 -0
- package/dist/workflow/service.d.ts +59 -0
- package/dist/workflow/service.d.ts.map +1 -0
- package/dist/workflow/service.js +170 -0
- package/dist/workflow/service.js.map +1 -0
- package/dist/workflow/store-json.d.ts +5 -0
- package/dist/workflow/store-json.d.ts.map +1 -0
- package/dist/workflow/store-json.js +35 -0
- package/dist/workflow/store-json.js.map +1 -0
- package/dist/workflow/store-lock.d.ts +3 -0
- package/dist/workflow/store-lock.d.ts.map +1 -0
- package/dist/workflow/store-lock.js +85 -0
- package/dist/workflow/store-lock.js.map +1 -0
- package/dist/workflow/store-paths.d.ts +17 -0
- package/dist/workflow/store-paths.d.ts.map +1 -0
- package/dist/workflow/store-paths.js +67 -0
- package/dist/workflow/store-paths.js.map +1 -0
- package/dist/workflow/store-validation.d.ts +7 -0
- package/dist/workflow/store-validation.d.ts.map +1 -0
- package/dist/workflow/store-validation.js +119 -0
- package/dist/workflow/store-validation.js.map +1 -0
- package/dist/workflow/store.d.ts +10 -0
- package/dist/workflow/store.d.ts.map +1 -0
- package/dist/workflow/store.js +193 -0
- package/dist/workflow/store.js.map +1 -0
- package/dist/workflow/types.d.ts +120 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +15 -0
- package/dist/workflow/types.js.map +1 -0
- package/dist/workflow-transport.d.ts +28 -0
- package/dist/workflow-transport.d.ts.map +1 -0
- package/dist/workflow-transport.js +184 -0
- package/dist/workflow-transport.js.map +1 -0
- package/open-design.json +2 -2
- package/package.json +4 -1
- package/prototype-kit/tests/rules-check.mjs +9 -0
- package/runtime/codex-conversion/src/images/native-invoke.mjs +1 -1
- package/runtime/codex-conversion/src/images/native.mjs +8 -4
- package/runtime/layerdoc-validator.mjs +1860 -0
- package/scene-kit/starter/camera.js +10 -0
- package/scene-kit/starter/gobo.js +60 -0
- package/scene-kit/starter/index.html +23 -0
- package/scene-kit/starter/lib.js +84 -0
- package/scene-kit/starter/main.js +78 -0
- package/scene-kit/starter/scene.js +33 -0
- package/scene-kit/vendor/LICENSE +21 -0
- package/scene-kit/vendor/addons/geometries/RoundedBoxGeometry.js +216 -0
- package/scene-kit/vendor/addons/renderers/CSS3DRenderer.js +454 -0
- package/scene-kit/vendor/three.core.js +60586 -0
- package/scene-kit/vendor/three.module.js +19719 -0
- package/skills/12ui-design/SKILL.md +21 -61
- package/skills/12ui-design/improve.md +5 -1
- package/skills/12ui-design/inspire.md +8 -5
- package/skills/12ui-design/outputs.md +23 -2
- package/skills/12ui-design/scene.md +172 -0
- package/skills/12ui-design/session.md +161 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The MCP Apps bridge: JSON-RPC 2.0 over `postMessage`, the host context, the
|
|
3
|
+
* height-only size report, and the two ways an app talks to the agent.
|
|
4
|
+
*
|
|
5
|
+
* Rules kept, each proven against Codex desktop (see
|
|
6
|
+
* docs/analysis/codex-plugin-screens-2026-09-30.md):
|
|
7
|
+
* - it reports its height and never its width, because hosts treat a reported
|
|
8
|
+
* width as a floor and a frame that grew could not shrink back to its pane;
|
|
9
|
+
* - in fullscreen it reports nothing (the host owns the size);
|
|
10
|
+
* - a message to the agent names what happened and carries no command: the
|
|
11
|
+
* host wraps app messages as untrusted input, so the agent confirms with the
|
|
12
|
+
* model-visible data tool instead.
|
|
13
|
+
*
|
|
14
|
+
* Fragment of the view's script; written with String.raw so escapes reach the
|
|
15
|
+
* browser unchanged. It must contain no backtick and no dollar-brace.
|
|
16
|
+
*/
|
|
17
|
+
export const SLATE_UI_BRIDGE = String.raw `
|
|
18
|
+
var PROTOCOL = "2026-01-26";
|
|
19
|
+
var TARGET = __TARGET__;
|
|
20
|
+
var TOOLS = __TOOLS__;
|
|
21
|
+
var COPY = __COPY__;
|
|
22
|
+
var CONVERT = __CONVERT__;
|
|
23
|
+
var $ = function (id) { return document.getElementById(id); };
|
|
24
|
+
|
|
25
|
+
// ---- JSON-RPC over postMessage ----
|
|
26
|
+
var pending = new Map();
|
|
27
|
+
var nextId = 1;
|
|
28
|
+
var inflight = 0;
|
|
29
|
+
function post(msg) { window.parent.postMessage(msg, "*"); }
|
|
30
|
+
function request(method, params) {
|
|
31
|
+
return new Promise(function (resolve, reject) {
|
|
32
|
+
var id = nextId++;
|
|
33
|
+
pending.set(id, { resolve: resolve, reject: reject });
|
|
34
|
+
post({ jsonrpc: "2.0", id: id, method: method, params: params });
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function notify(method, params) { post({ jsonrpc: "2.0", method: method, params: params }); }
|
|
38
|
+
// Fill {name} slots of a copy string.
|
|
39
|
+
function tpl(text, values) {
|
|
40
|
+
return text.replace(/\{(\w+)\}/g, function (whole, key) { return values && values[key] !== undefined ? String(values[key]) : whole; });
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// A tool call resolves to its structured content, or rejects with the tool's own code and sentence.
|
|
44
|
+
function callTool(name, args) {
|
|
45
|
+
inflight++;
|
|
46
|
+
return request("tools/call", { name: name, arguments: args }).then(function (result) {
|
|
47
|
+
inflight--;
|
|
48
|
+
if (result && result.isError) {
|
|
49
|
+
var sc = result.structuredContent || {};
|
|
50
|
+
var text = result.content && result.content[0] && result.content[0].text;
|
|
51
|
+
var err = new Error(sc.message || text || "The tool failed.");
|
|
52
|
+
err.code = sc.code || "error";
|
|
53
|
+
err.retryable = !!sc.retryable;
|
|
54
|
+
if (sc.retryAfterSeconds !== undefined) err.retryAfterSeconds = sc.retryAfterSeconds;
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}, function (err) { inflight--; throw err; });
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
window.addEventListener("message", function (event) {
|
|
62
|
+
if (event.source !== window.parent) return;
|
|
63
|
+
var m = event.data;
|
|
64
|
+
if (!m || m.jsonrpc !== "2.0") return;
|
|
65
|
+
if (m.method === undefined) {
|
|
66
|
+
var p = pending.get(m.id);
|
|
67
|
+
if (!p) return;
|
|
68
|
+
pending.delete(m.id);
|
|
69
|
+
if (m.error) p.reject(new Error(m.error.message || "request failed"));
|
|
70
|
+
else p.resolve(m.result);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (m.id !== undefined) {
|
|
74
|
+
// Host request (ui/resource-teardown, ping): acknowledge.
|
|
75
|
+
post({ jsonrpc: "2.0", id: m.id, result: {} });
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (m.method === "ui/notifications/tool-result") onToolResult(m.params);
|
|
79
|
+
else if (m.method === "ui/notifications/host-context-changed") applyHost(m.params || {});
|
|
80
|
+
else if (m.method === "ui/notifications/tool-cancelled") fatal("The tool call was cancelled: " + ((m.params && m.params.reason) || "no reason given"));
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// ---- host context: theme, CSS variables, display mode (feature-detected, all optional) ----
|
|
84
|
+
function applyHost(ctx) {
|
|
85
|
+
var before = state.host.displayMode;
|
|
86
|
+
state.host = Object.assign(state.host, ctx);
|
|
87
|
+
if (ctx.theme === "light" || ctx.theme === "dark") {
|
|
88
|
+
document.documentElement.dataset.theme = ctx.theme;
|
|
89
|
+
document.documentElement.style.colorScheme = ctx.theme;
|
|
90
|
+
}
|
|
91
|
+
var vars = ctx.styles && ctx.styles.variables;
|
|
92
|
+
if (vars) Object.keys(vars).forEach(function (k) { if (vars[k]) document.documentElement.style.setProperty(k, vars[k]); });
|
|
93
|
+
if (ctx.displayMode !== undefined && ctx.displayMode !== before) lastHeight = -1;
|
|
94
|
+
if (state.view) renderAll();
|
|
95
|
+
reportSize();
|
|
96
|
+
}
|
|
97
|
+
function modes() { return state.host.availableDisplayModes || []; }
|
|
98
|
+
function isFullscreen() { return state.host.displayMode === "fullscreen"; }
|
|
99
|
+
function canFullscreen() { return modes().indexOf("fullscreen") >= 0; }
|
|
100
|
+
function canInline() { return modes().indexOf("inline") >= 0; }
|
|
101
|
+
function requestMode(mode) { return request("ui/request-display-mode", { mode: mode }).catch(function () {}); }
|
|
102
|
+
|
|
103
|
+
// Height only. Width is the host's to decide; the layout is fluid, so it fills exactly what it is given.
|
|
104
|
+
var lastHeight = -1;
|
|
105
|
+
function reportSize() {
|
|
106
|
+
if (isFullscreen()) return;
|
|
107
|
+
var height = Math.ceil(document.documentElement.getBoundingClientRect().height);
|
|
108
|
+
if (height === lastHeight) return;
|
|
109
|
+
lastHeight = height;
|
|
110
|
+
notify("ui/notifications/size-changed", { height: height });
|
|
111
|
+
}
|
|
112
|
+
new ResizeObserver(reportSize).observe(document.body);
|
|
113
|
+
|
|
114
|
+
function fatal(text) {
|
|
115
|
+
$("app").classList.add("hidden");
|
|
116
|
+
$("stage").classList.add("hidden");
|
|
117
|
+
$("fatal").textContent = text;
|
|
118
|
+
$("fatal").classList.remove("hidden");
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// ---- the agent: a message the agent verifies, and context it may read (best effort) ----
|
|
122
|
+
function messageAgent(text) {
|
|
123
|
+
// _meta["openai/message"] is an OpenAI extension; hosts that do not know it ignore it.
|
|
124
|
+
return request("ui/message", {
|
|
125
|
+
role: "user",
|
|
126
|
+
content: [{ type: "text", text: text }],
|
|
127
|
+
_meta: { "openai/message": { target: "active", send: true } }
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function updateModelContext(text) {
|
|
131
|
+
// Correctness never depends on this: a host without a composer may refuse it, and the failure is swallowed.
|
|
132
|
+
request("ui/update-model-context", {
|
|
133
|
+
content: [{ type: "text", text: text, annotations: { audience: ["assistant"] } }]
|
|
134
|
+
}).catch(function () {});
|
|
135
|
+
}
|
|
136
|
+
`;
|
|
137
|
+
//# sourceMappingURL=mcp-slate-ui-script-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-bridge.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuHxC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What only the browser target does (TARGET is "browser"): the words it records for the agent.
|
|
3
|
+
*
|
|
4
|
+
* The screen in a browser page has no agent on the other end of its host: the shim in the page (slate-browser-host.ts)
|
|
5
|
+
* keeps what the screen would have sent with `ui/message` and hands it to the command that opened the page, which
|
|
6
|
+
* prints it in its result beside the decision itself. So these say what happened and nothing else: the agent
|
|
7
|
+
* reads the decision, the pick and the request from that result, not from the sentence.
|
|
8
|
+
*
|
|
9
|
+
* Fragment of the view's script; String.raw, no backtick, no dollar-brace.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SLATE_UI_BROWSER: string;
|
|
12
|
+
//# sourceMappingURL=mcp-slate-ui-script-browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-browser.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-script-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,QAO5B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What only the browser target does (TARGET is "browser"): the words it records for the agent.
|
|
3
|
+
*
|
|
4
|
+
* The screen in a browser page has no agent on the other end of its host: the shim in the page (slate-browser-host.ts)
|
|
5
|
+
* keeps what the screen would have sent with `ui/message` and hands it to the command that opened the page, which
|
|
6
|
+
* prints it in its result beside the decision itself. So these say what happened and nothing else: the agent
|
|
7
|
+
* reads the decision, the pick and the request from that result, not from the sentence.
|
|
8
|
+
*
|
|
9
|
+
* Fragment of the view's script; String.raw, no backtick, no dollar-brace.
|
|
10
|
+
*/
|
|
11
|
+
export const SLATE_UI_BROWSER = String.raw `
|
|
12
|
+
function browserSelectMessage(label) {
|
|
13
|
+
return "I selected " + label + " in the Design workspace.";
|
|
14
|
+
}
|
|
15
|
+
function browserHandoffMessage(kind, label, handoffId) {
|
|
16
|
+
return "I asked to " + (kind === "branch" ? "build from" : "convert") + " " + label + " in the Design workspace (request " + handoffId + ").";
|
|
17
|
+
}
|
|
18
|
+
`;
|
|
19
|
+
//# sourceMappingURL=mcp-slate-ui-script-browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-browser.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;CAOzC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The four dialogs of the workspace: Design (new options or more like this,
|
|
3
|
+
* an optional steer note, and the inspiration selected in its tab), Edit (an
|
|
4
|
+
* instruction and a scribble over the image), Branch (what to build) and
|
|
5
|
+
* Convert (which format, with only the options that format has). Each is opened
|
|
6
|
+
* by its button, confirmed by one verb (Generate, Apply, Send, Send) and closed
|
|
7
|
+
* by Cancel or Escape; Select has no dialog.
|
|
8
|
+
*
|
|
9
|
+
* Common rules: a title, fields, an error line (role alert, empty by default),
|
|
10
|
+
* then Cancel and the primary. The primary keeps its label and disables while a
|
|
11
|
+
* call is in flight; on success the dialog closes at once. One id is minted
|
|
12
|
+
* when the dialog opens (the op id of Design and Edit, the hand-off id of
|
|
13
|
+
* Branch and Convert), so a double click sends one request.
|
|
14
|
+
*
|
|
15
|
+
* Design and Edit start work through the run tool, which returns as soon as
|
|
16
|
+
* the work is committed; Branch and Convert hand off to the agent through
|
|
17
|
+
* sendHandoff. Nothing here shows or asks for money.
|
|
18
|
+
*/
|
|
19
|
+
export declare const SLATE_UI_DIALOG: string;
|
|
20
|
+
//# sourceMappingURL=mcp-slate-ui-script-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-dialog.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-script-dialog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,eAAe,QAwT3B,CAAC"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The four dialogs of the workspace: Design (new options or more like this,
|
|
3
|
+
* an optional steer note, and the inspiration selected in its tab), Edit (an
|
|
4
|
+
* instruction and a scribble over the image), Branch (what to build) and
|
|
5
|
+
* Convert (which format, with only the options that format has). Each is opened
|
|
6
|
+
* by its button, confirmed by one verb (Generate, Apply, Send, Send) and closed
|
|
7
|
+
* by Cancel or Escape; Select has no dialog.
|
|
8
|
+
*
|
|
9
|
+
* Common rules: a title, fields, an error line (role alert, empty by default),
|
|
10
|
+
* then Cancel and the primary. The primary keeps its label and disables while a
|
|
11
|
+
* call is in flight; on success the dialog closes at once. One id is minted
|
|
12
|
+
* when the dialog opens (the op id of Design and Edit, the hand-off id of
|
|
13
|
+
* Branch and Convert), so a double click sends one request.
|
|
14
|
+
*
|
|
15
|
+
* Design and Edit start work through the run tool, which returns as soon as
|
|
16
|
+
* the work is committed; Branch and Convert hand off to the agent through
|
|
17
|
+
* sendHandoff. Nothing here shows or asks for money.
|
|
18
|
+
*/
|
|
19
|
+
export const SLATE_UI_DIALOG = String.raw `
|
|
20
|
+
var DIALOG_TITLES = { design: COPY.design, edit: COPY.edit, branch: COPY.branch, convert: COPY.convert };
|
|
21
|
+
var DIALOG_VERBS = { design: COPY.generate, edit: COPY.apply, branch: COPY.send, convert: COPY.send };
|
|
22
|
+
|
|
23
|
+
function field(labelText, control, id) {
|
|
24
|
+
var wrap = el("div", "field");
|
|
25
|
+
var label = el("label", "lbl", labelText);
|
|
26
|
+
if (id) label.setAttribute("for", id);
|
|
27
|
+
wrap.appendChild(label);
|
|
28
|
+
wrap.appendChild(control);
|
|
29
|
+
return wrap;
|
|
30
|
+
}
|
|
31
|
+
function group(labelText, control) {
|
|
32
|
+
var wrap = el("div", "field");
|
|
33
|
+
wrap.appendChild(el("span", "lbl", labelText));
|
|
34
|
+
wrap.appendChild(control);
|
|
35
|
+
return wrap;
|
|
36
|
+
}
|
|
37
|
+
function textarea(id, rows, placeholder, max, onInput) {
|
|
38
|
+
var area = el("textarea");
|
|
39
|
+
area.id = id;
|
|
40
|
+
area.setAttribute("rows", String(rows));
|
|
41
|
+
area.placeholder = placeholder;
|
|
42
|
+
area.setAttribute("maxlength", String(max));
|
|
43
|
+
area.addEventListener("input", function () { onInput(area.value); updateDialogUi(); });
|
|
44
|
+
return area;
|
|
45
|
+
}
|
|
46
|
+
function radioRow(name, options, current, onChange) {
|
|
47
|
+
var row = el("div", "radios");
|
|
48
|
+
row.setAttribute("role", "radiogroup");
|
|
49
|
+
options.forEach(function (opt) {
|
|
50
|
+
var label = el("label", "radio");
|
|
51
|
+
var input = el("input");
|
|
52
|
+
input.type = "radio";
|
|
53
|
+
input.name = name;
|
|
54
|
+
input.value = String(opt.value);
|
|
55
|
+
input.checked = opt.value === current;
|
|
56
|
+
if (opt.disabled) input.disabled = true;
|
|
57
|
+
input.addEventListener("change", function () { onChange(opt.value); updateDialogUi(); });
|
|
58
|
+
label.appendChild(input);
|
|
59
|
+
label.appendChild(el("span", "", opt.label));
|
|
60
|
+
row.appendChild(label);
|
|
61
|
+
});
|
|
62
|
+
return row;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// ---- what this Mac can do now ----
|
|
66
|
+
function localImage() { return (state.view && state.view.local && state.view.local.image) || { ready: false, reason: null }; }
|
|
67
|
+
|
|
68
|
+
// ---- open and close ----
|
|
69
|
+
function openDialog(kind, opener) {
|
|
70
|
+
if (state.dialog || !state.view) return;
|
|
71
|
+
var v = selectedVersion();
|
|
72
|
+
if (kind !== "design" && !v) return;
|
|
73
|
+
if (kind === "edit" && !v.editable) return;
|
|
74
|
+
state.dialog = {
|
|
75
|
+
kind: kind, id: uuid4(), versionId: v ? v.versionId : null, opener: opener,
|
|
76
|
+
mode: "new", note: "", prompt: "", explanation: "",
|
|
77
|
+
format: CONVERT.choices[0].value, clean: "enhance", quality: "standard", width: "", layouts: "standard",
|
|
78
|
+
strokes: [], current: null, committing: false, error: "", els: {}
|
|
79
|
+
};
|
|
80
|
+
mountDialog();
|
|
81
|
+
}
|
|
82
|
+
function closeDialog() {
|
|
83
|
+
var d = state.dialog;
|
|
84
|
+
if (!d) return;
|
|
85
|
+
state.dialog = null;
|
|
86
|
+
stageEls.dialog.textContent = "";
|
|
87
|
+
if (d.opener && d.opener.isConnected !== false && d.opener.focus) d.opener.focus();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ---- what each dialog would send ----
|
|
91
|
+
// The one round action: the Design dialog and the Generate more panel both build it here. Only the panel sets a count.
|
|
92
|
+
function roundAction(request) {
|
|
93
|
+
var action = { kind: "round", mode: request.mode };
|
|
94
|
+
var note = (request.note || "").trim();
|
|
95
|
+
if (note) action.note = note;
|
|
96
|
+
if (request.count !== undefined) action.count = request.count;
|
|
97
|
+
if (request.mode === "like") action.fromVersionId = request.fromVersionId;
|
|
98
|
+
return action;
|
|
99
|
+
}
|
|
100
|
+
function editAction(d) {
|
|
101
|
+
var action = { kind: "edit", versionId: d.versionId, prompt: d.prompt.trim() };
|
|
102
|
+
if (d.strokes.length > 0) action.strokes = d.strokes.map(function (s) { return s.map(function (p) { return [p[0], p[1]]; }); });
|
|
103
|
+
return action;
|
|
104
|
+
}
|
|
105
|
+
// The hosted server takes the marked image from the screen (there is no server-side compositing), so an edit with
|
|
106
|
+
// strokes carries it; the local server draws its own from the strokes.
|
|
107
|
+
function editActionFor(d, version) {
|
|
108
|
+
var action = editAction(d);
|
|
109
|
+
if (TARGET !== "remote" || d.strokes.length === 0) return Promise.resolve(action);
|
|
110
|
+
return compositeMarked(version, d.strokes).then(function (marked) {
|
|
111
|
+
action.annotated = marked;
|
|
112
|
+
return action;
|
|
113
|
+
}, function (err) { throw new Error(tpl(COPY.markFailed, { detail: errText(err) })); });
|
|
114
|
+
}
|
|
115
|
+
function convertChoice(d) { return CONVERT.choices.filter(function (c) { return c.value === d.format; })[0]; }
|
|
116
|
+
// An empty width is fine (the service picks); anything else must be a whole number the CLI accepts.
|
|
117
|
+
function widthOf(d) {
|
|
118
|
+
var t = d.width.trim();
|
|
119
|
+
if (!t) return { ok: true, value: null };
|
|
120
|
+
var n = Number(t);
|
|
121
|
+
var ok = /^[0-9]+$/.test(t) && n >= 1 && n <= CONVERT.maxWidth;
|
|
122
|
+
return { ok: ok, value: ok ? n : null };
|
|
123
|
+
}
|
|
124
|
+
function convertOptions(d) {
|
|
125
|
+
var choice = convertChoice(d);
|
|
126
|
+
// The hosted server has one engine and two outputs; nothing else is a choice.
|
|
127
|
+
if (TARGET === "remote") return { engine: "local", output: choice.output };
|
|
128
|
+
if (choice.engine === "local") return { engine: "local", output: choice.output, cleanAssets: d.clean };
|
|
129
|
+
var options = { engine: "service", output: choice.output, model: d.quality };
|
|
130
|
+
var width = widthOf(d);
|
|
131
|
+
if (width.value !== null) options.width = width.value;
|
|
132
|
+
if (choice.output === "html") options.responsiveQuality = d.layouts;
|
|
133
|
+
return options;
|
|
134
|
+
}
|
|
135
|
+
function dialogReady(d) {
|
|
136
|
+
var v = ver(d.versionId);
|
|
137
|
+
if (d.kind === "design") return localImage().ready && (d.mode === "new" || pickable(v));
|
|
138
|
+
if (d.kind === "edit") return localImage().ready && !!v && v.editable && !!d.prompt.trim();
|
|
139
|
+
if (d.kind === "branch") return !!d.explanation.trim();
|
|
140
|
+
return !!convertChoice(d) && widthOf(d).ok;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// ---- send ----
|
|
144
|
+
function runAction(action, opId) {
|
|
145
|
+
return callTool(TOOLS.run, { runDir: state.view.runDir, opId: opId, action: action }).then(function (result) {
|
|
146
|
+
var sc = result.structuredContent || {};
|
|
147
|
+
if (sc.view) applyView(sc.view, true);
|
|
148
|
+
// The hosted server has no runner: the person's agent does the work, and is told here (best effort, like Select).
|
|
149
|
+
if (TARGET === "remote") remoteTellRun(action, opId);
|
|
150
|
+
return sc;
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
// The one way a round starts: the selection is committed first, so the round uses the inspiration the person sees.
|
|
154
|
+
function startRound(opId, request) {
|
|
155
|
+
return whenSelectionSettled().then(function () { return runAction(roundAction(request), opId); });
|
|
156
|
+
}
|
|
157
|
+
function commitDialog() {
|
|
158
|
+
var d = state.dialog;
|
|
159
|
+
if (!d || d.committing || !dialogReady(d)) return;
|
|
160
|
+
d.committing = true;
|
|
161
|
+
d.error = "";
|
|
162
|
+
updateDialogUi();
|
|
163
|
+
var version = ver(d.versionId);
|
|
164
|
+
var work;
|
|
165
|
+
if (d.kind === "branch") work = sendHandoff("branch", version, d.id, { explanation: d.explanation.trim() });
|
|
166
|
+
else if (d.kind === "convert") work = sendHandoff("convert", version, d.id, convertOptions(d));
|
|
167
|
+
else if (d.kind === "edit") {
|
|
168
|
+
var edited = cand(version.candidateId);
|
|
169
|
+
work = editActionFor(d, version).then(function (action) { return runAction(action, d.id); }).then(function () {
|
|
170
|
+
// The new version is shown the moment it lands.
|
|
171
|
+
state.awaitEdit = { candidateId: version.candidateId, count: edited ? edited.versionIds.length : 0 };
|
|
172
|
+
});
|
|
173
|
+
} else work = startRound(d.id, { mode: d.mode, note: d.note, fromVersionId: d.versionId });
|
|
174
|
+
work.then(function () {
|
|
175
|
+
closeDialog();
|
|
176
|
+
}, function (err) {
|
|
177
|
+
if (state.dialog !== d) return;
|
|
178
|
+
d.committing = false;
|
|
179
|
+
d.error = errText(err);
|
|
180
|
+
updateDialogUi();
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// ---- the dialog's elements ----
|
|
185
|
+
function designBody(d, box) {
|
|
186
|
+
var v = ver(d.versionId);
|
|
187
|
+
var modes = [{ value: "new", label: COPY.newOptions }, { value: "like", label: COPY.moreLikeThis, disabled: !pickable(v) }];
|
|
188
|
+
box.appendChild(radioRow("mode", modes, d.mode, function (value) { d.mode = value; }));
|
|
189
|
+
box.appendChild(field(COPY.noteLabel, textarea("dialognote", 2, COPY.notePlaceholder, 600, function (value) { d.note = value; }), "dialognote"));
|
|
190
|
+
var line = el("div", "refline");
|
|
191
|
+
var chosen = currentSelected().slice(0, MAX_SELECTED);
|
|
192
|
+
if (chosen.length > 0) {
|
|
193
|
+
var thumbs = el("span", "refthumbs");
|
|
194
|
+
chosen.forEach(function (id) {
|
|
195
|
+
var img = el("img", "refmini empty");
|
|
196
|
+
img.alt = "";
|
|
197
|
+
thumbs.appendChild(img);
|
|
198
|
+
bindReference(img, id, "thumb");
|
|
199
|
+
});
|
|
200
|
+
line.appendChild(thumbs);
|
|
201
|
+
}
|
|
202
|
+
line.appendChild(el("span", "", chosen.length > 0 ? COPY.usingSelected : COPY.usingFresh));
|
|
203
|
+
box.appendChild(line);
|
|
204
|
+
}
|
|
205
|
+
function editBody(d, box) {
|
|
206
|
+
var v = ver(d.versionId);
|
|
207
|
+
var wrap = el("div", "imgwrap");
|
|
208
|
+
wrap.style.setProperty("--ar", String(v.width / v.height));
|
|
209
|
+
var img = el("img", "stageimg empty");
|
|
210
|
+
img.alt = COPY.versionPrefix + v.label;
|
|
211
|
+
img.setAttribute("draggable", "false");
|
|
212
|
+
wrap.appendChild(img);
|
|
213
|
+
bindImage(img, v, "full", true);
|
|
214
|
+
var cached = state.thumbs[imageKey(v, "thumb")];
|
|
215
|
+
if (cached) img.src = cached;
|
|
216
|
+
scribbleAttach(wrap, d);
|
|
217
|
+
box.appendChild(wrap);
|
|
218
|
+
var tools = el("div", "dialogtools");
|
|
219
|
+
d.els.undo = button(COPY.undo, "", function () { scribbleUndo(d); });
|
|
220
|
+
d.els.clear = button(COPY.clear, "", function () { scribbleClear(d); });
|
|
221
|
+
tools.appendChild(d.els.undo);
|
|
222
|
+
tools.appendChild(d.els.clear);
|
|
223
|
+
box.appendChild(tools);
|
|
224
|
+
box.appendChild(field(COPY.editLabel, textarea("dialogedit", 3, COPY.editPlaceholder, 6000, function (value) { d.prompt = value; }), "dialogedit"));
|
|
225
|
+
}
|
|
226
|
+
function branchBody(d, box) {
|
|
227
|
+
box.appendChild(field(COPY.branchLabel, textarea("dialogbranch", 4, COPY.branchPlaceholder, 2000, function (value) { d.explanation = value; }), "dialogbranch"));
|
|
228
|
+
}
|
|
229
|
+
function convertBody(d, box) {
|
|
230
|
+
var select = el("select");
|
|
231
|
+
select.id = "dialogformat";
|
|
232
|
+
var service = el("optgroup");
|
|
233
|
+
service.setAttribute("label", COPY.serviceGroup);
|
|
234
|
+
CONVERT.choices.forEach(function (choice) {
|
|
235
|
+
var option = el("option", "", choice.label);
|
|
236
|
+
option.setAttribute("value", choice.value);
|
|
237
|
+
if (choice.value === d.format) option.setAttribute("selected", "");
|
|
238
|
+
(choice.engine === "local" ? select : service).appendChild(option);
|
|
239
|
+
});
|
|
240
|
+
if (service.childNodes.length > 0) select.appendChild(service);
|
|
241
|
+
select.addEventListener("change", function () { d.format = select.value; updateDialogUi(); });
|
|
242
|
+
box.appendChild(field(COPY.convertLabel, select, "dialogformat"));
|
|
243
|
+
// The hosted server builds from the image and has nothing else to ask: no assets, quality, width or layouts.
|
|
244
|
+
if (TARGET === "remote") return;
|
|
245
|
+
// Only the options the chosen format has are shown; the rest are hidden, not disabled.
|
|
246
|
+
d.els.local = group(COPY.cleanLabel, radioRow("clean", [{ value: "crop", label: COPY.crop }, { value: "enhance", label: COPY.enhance }], d.clean, function (value) { d.clean = value; }));
|
|
247
|
+
d.els.quality = group(COPY.qualityLabel, radioRow("quality", [{ value: "fast", label: COPY.fast }, { value: "standard", label: COPY.standard }, { value: "pro", label: COPY.pro }], d.quality, function (value) { d.quality = value; }));
|
|
248
|
+
var width = el("input");
|
|
249
|
+
width.type = "number";
|
|
250
|
+
width.id = "dialogwidth";
|
|
251
|
+
width.setAttribute("min", "1");
|
|
252
|
+
width.setAttribute("max", String(CONVERT.maxWidth));
|
|
253
|
+
width.setAttribute("placeholder", COPY.widthPlaceholder);
|
|
254
|
+
width.setAttribute("inputmode", "numeric");
|
|
255
|
+
width.addEventListener("input", function () { d.width = width.value; updateDialogUi(); });
|
|
256
|
+
d.els.width = field(COPY.widthLabel, width, "dialogwidth");
|
|
257
|
+
d.els.layouts = group(COPY.layoutsLabel, radioRow("layouts", [{ value: "standard", label: COPY.standard }, { value: "pro", label: COPY.pro }], d.layouts, function (value) { d.layouts = value; }));
|
|
258
|
+
[d.els.local, d.els.quality, d.els.width, d.els.layouts].forEach(function (node) { box.appendChild(node); });
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
function mountDialog() {
|
|
262
|
+
var d = state.dialog;
|
|
263
|
+
var host = stageEls.dialog;
|
|
264
|
+
host.textContent = "";
|
|
265
|
+
var backdrop = el("div", "modal");
|
|
266
|
+
backdrop.addEventListener("click", function (e) { if (e.target === backdrop && !d.committing) closeDialog(); });
|
|
267
|
+
var box = el("div", "modalbox" + (d.kind === "edit" ? " wide" : ""));
|
|
268
|
+
box.setAttribute("role", "dialog");
|
|
269
|
+
box.setAttribute("aria-modal", "true");
|
|
270
|
+
box.setAttribute("aria-label", DIALOG_TITLES[d.kind]);
|
|
271
|
+
box.appendChild(el("h2", "", DIALOG_TITLES[d.kind]));
|
|
272
|
+
if (d.kind === "design") designBody(d, box);
|
|
273
|
+
else if (d.kind === "edit") editBody(d, box);
|
|
274
|
+
else if (d.kind === "branch") branchBody(d, box);
|
|
275
|
+
else convertBody(d, box);
|
|
276
|
+
d.els.alert = el("p", "alert");
|
|
277
|
+
d.els.alert.setAttribute("role", "alert");
|
|
278
|
+
box.appendChild(d.els.alert);
|
|
279
|
+
var buttons = el("div", "dialogbtns");
|
|
280
|
+
buttons.appendChild(el("span", "spacer"));
|
|
281
|
+
buttons.appendChild(button(COPY.cancel, "", closeDialog));
|
|
282
|
+
d.els.primary = button(DIALOG_VERBS[d.kind], "primary", commitDialog);
|
|
283
|
+
buttons.appendChild(d.els.primary);
|
|
284
|
+
box.appendChild(buttons);
|
|
285
|
+
backdrop.appendChild(box);
|
|
286
|
+
host.appendChild(backdrop);
|
|
287
|
+
d.els.box = box;
|
|
288
|
+
updateDialogUi();
|
|
289
|
+
var first = box.querySelector("textarea") || box.querySelector("select") || box.querySelector("input:checked") || d.els.primary;
|
|
290
|
+
if (first && first.focus) first.focus();
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
function updateDialogUi() {
|
|
294
|
+
var d = state.dialog;
|
|
295
|
+
if (!d || !d.els.primary) return;
|
|
296
|
+
d.els.primary.disabled = d.committing || !dialogReady(d);
|
|
297
|
+
// A dialog that cannot run on this Mac says why, in the same line an error would use.
|
|
298
|
+
var local = localImage();
|
|
299
|
+
var blockedByLocal = (d.kind === "design" || d.kind === "edit") && !local.ready;
|
|
300
|
+
d.els.alert.textContent = d.error || (blockedByLocal && local.reason ? local.reason : "");
|
|
301
|
+
d.els.alert.classList.toggle("hidden", !d.els.alert.textContent);
|
|
302
|
+
if (d.els.undo) d.els.undo.disabled = d.strokes.length === 0 || d.committing;
|
|
303
|
+
if (d.els.clear) d.els.clear.disabled = d.strokes.length === 0 || d.committing;
|
|
304
|
+
if (d.kind === "convert" && TARGET !== "remote") {
|
|
305
|
+
var choice = convertChoice(d);
|
|
306
|
+
var isLocal = !!choice && choice.engine === "local";
|
|
307
|
+
d.els.local.classList.toggle("hidden", !isLocal);
|
|
308
|
+
d.els.quality.classList.toggle("hidden", isLocal);
|
|
309
|
+
d.els.width.classList.toggle("hidden", isLocal);
|
|
310
|
+
d.els.layouts.classList.toggle("hidden", isLocal || choice.output !== "html");
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// Escape closes; Tab stays inside the dialog.
|
|
315
|
+
document.addEventListener("keydown", function (e) {
|
|
316
|
+
var d = state.dialog;
|
|
317
|
+
if (!d) return;
|
|
318
|
+
if (e.key === "Escape" && !d.committing) { closeDialog(); return; }
|
|
319
|
+
if (e.key !== "Tab" || !d.els.box) return;
|
|
320
|
+
var items = Array.prototype.filter.call(d.els.box.querySelectorAll("button, textarea, input, select"), function (n) {
|
|
321
|
+
if (n.disabled) return false;
|
|
322
|
+
for (var node = n; node && node.classList; node = node.parentElement) if (node.classList.contains("hidden")) return false;
|
|
323
|
+
return true;
|
|
324
|
+
});
|
|
325
|
+
if (items.length === 0) return;
|
|
326
|
+
var first = items[0];
|
|
327
|
+
var last = items[items.length - 1];
|
|
328
|
+
if (e.shiftKey && document.activeElement === first) { last.focus(); if (e.preventDefault) e.preventDefault(); }
|
|
329
|
+
else if (!e.shiftKey && document.activeElement === last) { first.focus(); if (e.preventDefault) e.preventDefault(); }
|
|
330
|
+
});
|
|
331
|
+
`;
|
|
332
|
+
//# sourceMappingURL=mcp-slate-ui-script-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-dialog.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script-dialog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwTxC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The inline card: one large image of the selected option with a badge, one
|
|
3
|
+
* row under it with the strip of thumbnails (the newest round, plus the picked
|
|
4
|
+
* or viewed option of an older round) and Select, and one status line;
|
|
5
|
+
* an icon-only control opens the workspace. Also the view application, the
|
|
6
|
+
* large image and the thumbnail buttons shared with the workspace, and the
|
|
7
|
+
* tool-result entry point.
|
|
8
|
+
*/
|
|
9
|
+
export declare const SLATE_UI_INLINE: string;
|
|
10
|
+
//# sourceMappingURL=mcp-slate-ui-script-inline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-inline.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-script-inline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,QAmN3B,CAAC"}
|