@12ui/design 0.2.72 → 0.2.74
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 +242 -54
- 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 +26 -1
- package/dist/cli-capabilities.d.ts.map +1 -1
- package/dist/cli-capabilities.js +26 -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 +113 -7
- package/dist/cli-help/index.d.ts.map +1 -1
- package/dist/cli-help/index.js +2 -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/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 +35 -3
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +39 -5
- 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 +41 -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 +123 -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 +145 -0
- package/dist/mcp-slate-ui-copy.d.ts.map +1 -0
- package/dist/mcp-slate-ui-copy.js +164 -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 +21 -0
- package/dist/mcp-slate-ui-script-dialog.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-dialog.js +321 -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 +224 -0
- package/dist/mcp-slate-ui-script-inline.js.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration.d.ts +13 -0
- package/dist/mcp-slate-ui-script-inspiration.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration.js +236 -0
- package/dist/mcp-slate-ui-script-inspiration.js.map +1 -0
- package/dist/mcp-slate-ui-script-more.d.ts +32 -0
- package/dist/mcp-slate-ui-script-more.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-more.js +289 -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 +12 -0
- package/dist/mcp-slate-ui-script-stage.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-stage.js +180 -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.d.ts +27 -0
- package/dist/mcp-slate-ui-script.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script.js +60 -0
- package/dist/mcp-slate-ui-script.js.map +1 -0
- package/dist/mcp-slate-ui-styles-dialog.d.ts +20 -0
- package/dist/mcp-slate-ui-styles-dialog.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-dialog.js +95 -0
- package/dist/mcp-slate-ui-styles-dialog.js.map +1 -0
- package/dist/mcp-slate-ui-styles-stage.d.ts +19 -0
- package/dist/mcp-slate-ui-styles-stage.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-stage.js +67 -0
- package/dist/mcp-slate-ui-styles-stage.js.map +1 -0
- package/dist/mcp-slate-ui-styles.d.ts +18 -0
- package/dist/mcp-slate-ui-styles.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles.js +132 -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 +59 -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-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-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 +18 -5
- package/dist/run-journal-commands.js.map +1 -1
- 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 +43 -0
- package/dist/slate-actions.d.ts.map +1 -0
- package/dist/slate-actions.js +108 -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 +117 -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 +232 -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 +442 -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 +2 -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/skills/12ui-design/SKILL.md +17 -63
- 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/session.md +161 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three dialogs of the workspace: Edit (a drawing over the image, an
|
|
3
|
+
* optional instruction, or both), Branch (an optional description of what to
|
|
4
|
+
* build) and Convert (which format, with only the options that format has).
|
|
5
|
+
* Each is opened by its button, confirmed by one verb (Apply, Send, Send) and
|
|
6
|
+
* closed by Cancel or Escape; Select has no dialog, and Generate more is a
|
|
7
|
+
* panel, not a dialog (mcp-slate-ui-script-more.ts).
|
|
8
|
+
*
|
|
9
|
+
* Common rules: a title, fields, one line that says what will happen, an error
|
|
10
|
+
* line (role alert, empty by default), then Cancel and the primary. The
|
|
11
|
+
* primary keeps its label and disables while a call is in flight; on success
|
|
12
|
+
* the dialog closes at once. One id is minted when the dialog opens (the op id
|
|
13
|
+
* of Edit, the hand-off id of Branch and Convert), so a double click sends one
|
|
14
|
+
* request.
|
|
15
|
+
*
|
|
16
|
+
* Edit starts work through the run tool, which returns as soon as the work is
|
|
17
|
+
* committed; Branch and Convert hand off to the agent through sendHandoff.
|
|
18
|
+
* Nothing here shows or asks for money.
|
|
19
|
+
*/
|
|
20
|
+
export const SLATE_UI_DIALOG = String.raw `
|
|
21
|
+
var DIALOG_TITLES = { edit: COPY.edit, branch: COPY.branch, convert: COPY.convert };
|
|
22
|
+
var DIALOG_VERBS = { edit: COPY.apply, branch: COPY.send, convert: COPY.send };
|
|
23
|
+
|
|
24
|
+
function field(labelText, control, id) {
|
|
25
|
+
var wrap = el("div", "field");
|
|
26
|
+
var label = el("label", "lbl", labelText);
|
|
27
|
+
if (id) label.setAttribute("for", id);
|
|
28
|
+
wrap.appendChild(label);
|
|
29
|
+
wrap.appendChild(control);
|
|
30
|
+
return wrap;
|
|
31
|
+
}
|
|
32
|
+
function group(labelText, control) {
|
|
33
|
+
var wrap = el("div", "field");
|
|
34
|
+
wrap.appendChild(el("span", "lbl", labelText));
|
|
35
|
+
wrap.appendChild(control);
|
|
36
|
+
return wrap;
|
|
37
|
+
}
|
|
38
|
+
// One muted line under a control: what it does, or what will happen.
|
|
39
|
+
function helpLine(text) { return el("p", "help", text); }
|
|
40
|
+
function textarea(id, rows, placeholder, max, onInput, ariaLabel) {
|
|
41
|
+
var area = el("textarea");
|
|
42
|
+
area.id = id;
|
|
43
|
+
area.setAttribute("rows", String(rows));
|
|
44
|
+
area.placeholder = placeholder;
|
|
45
|
+
area.setAttribute("aria-label", ariaLabel);
|
|
46
|
+
area.setAttribute("maxlength", String(max));
|
|
47
|
+
area.addEventListener("input", function () { onInput(area.value); updateDialogUi(); });
|
|
48
|
+
return area;
|
|
49
|
+
}
|
|
50
|
+
function radioRow(name, options, current, onChange) {
|
|
51
|
+
var row = el("div", "radios");
|
|
52
|
+
row.setAttribute("role", "radiogroup");
|
|
53
|
+
options.forEach(function (opt) {
|
|
54
|
+
var label = el("label", "radio");
|
|
55
|
+
var input = el("input");
|
|
56
|
+
input.type = "radio";
|
|
57
|
+
input.name = name;
|
|
58
|
+
input.value = String(opt.value);
|
|
59
|
+
input.checked = opt.value === current;
|
|
60
|
+
if (opt.disabled) input.disabled = true;
|
|
61
|
+
input.addEventListener("change", function () { onChange(opt.value); updateDialogUi(); });
|
|
62
|
+
label.appendChild(input);
|
|
63
|
+
label.appendChild(el("span", "", opt.label));
|
|
64
|
+
row.appendChild(label);
|
|
65
|
+
});
|
|
66
|
+
return row;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ---- what this Mac can do now ----
|
|
70
|
+
function localImage() { return (state.view && state.view.local && state.view.local.image) || { ready: false, reason: null }; }
|
|
71
|
+
|
|
72
|
+
// ---- open and close ----
|
|
73
|
+
function openDialog(kind, opener) {
|
|
74
|
+
if (state.dialog || !state.view) return;
|
|
75
|
+
var v = selectedVersion();
|
|
76
|
+
if (!v) return;
|
|
77
|
+
if (kind === "edit" && !v.editable) return;
|
|
78
|
+
state.dialog = {
|
|
79
|
+
kind: kind, id: uuid4(), versionId: v.versionId, opener: opener,
|
|
80
|
+
prompt: "", explanation: "",
|
|
81
|
+
format: CONVERT.choices[0].value, quality: "standard", width: "", layouts: "standard",
|
|
82
|
+
strokes: [], current: null, committing: false, error: "", els: {}
|
|
83
|
+
};
|
|
84
|
+
mountDialog();
|
|
85
|
+
}
|
|
86
|
+
function closeDialog() {
|
|
87
|
+
var d = state.dialog;
|
|
88
|
+
if (!d) return;
|
|
89
|
+
state.dialog = null;
|
|
90
|
+
stageEls.dialog.textContent = "";
|
|
91
|
+
if (d.opener && d.opener.isConnected !== false && d.opener.focus) d.opener.focus();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// ---- what each dialog would send ----
|
|
95
|
+
// The instruction is optional when the edit carries marks: a drawing alone is sent with no words and the server infers them.
|
|
96
|
+
function editAction(d) {
|
|
97
|
+
var action = { kind: "edit", versionId: d.versionId };
|
|
98
|
+
var words = d.prompt.trim();
|
|
99
|
+
if (words) action.prompt = words;
|
|
100
|
+
if (d.strokes.length > 0) action.strokes = d.strokes.map(function (s) { return s.map(function (p) { return [p[0], p[1]]; }); });
|
|
101
|
+
return action;
|
|
102
|
+
}
|
|
103
|
+
// The hosted server takes the marked image from the screen (there is no server-side compositing), so an edit with
|
|
104
|
+
// strokes carries it; the local server draws its own from the strokes.
|
|
105
|
+
function editActionFor(d, version) {
|
|
106
|
+
var action = editAction(d);
|
|
107
|
+
if (TARGET !== "remote" || d.strokes.length === 0) return Promise.resolve(action);
|
|
108
|
+
return compositeMarked(version, d.strokes).then(function (marked) {
|
|
109
|
+
action.annotated = marked;
|
|
110
|
+
return action;
|
|
111
|
+
}, function (err) { throw new Error(tpl(COPY.markFailed, { detail: errText(err) })); });
|
|
112
|
+
}
|
|
113
|
+
function convertChoice(d) { return CONVERT.choices.filter(function (c) { return c.value === d.format; })[0]; }
|
|
114
|
+
// An empty width is fine (the service picks); anything else must be a whole number the CLI accepts.
|
|
115
|
+
function widthOf(d) {
|
|
116
|
+
var t = d.width.trim();
|
|
117
|
+
if (!t) return { ok: true, value: null };
|
|
118
|
+
var n = Number(t);
|
|
119
|
+
var ok = /^[0-9]+$/.test(t) && n >= 1 && n <= CONVERT.maxWidth;
|
|
120
|
+
return { ok: ok, value: ok ? n : null };
|
|
121
|
+
}
|
|
122
|
+
function convertOptions(d) {
|
|
123
|
+
var choice = convertChoice(d);
|
|
124
|
+
// The hosted server has one engine and two outputs; nothing else is a choice.
|
|
125
|
+
if (TARGET === "remote") return { engine: "local", output: choice.output };
|
|
126
|
+
if (choice.engine === "local") return { engine: "local", output: choice.output };
|
|
127
|
+
var options = { engine: "service", output: choice.output, model: d.quality };
|
|
128
|
+
var width = widthOf(d);
|
|
129
|
+
if (width.value !== null) options.width = width.value;
|
|
130
|
+
if (choice.output === "html") options.responsiveQuality = d.layouts;
|
|
131
|
+
return options;
|
|
132
|
+
}
|
|
133
|
+
function dialogReady(d) {
|
|
134
|
+
var v = ver(d.versionId);
|
|
135
|
+
// An edit needs a drawing, words or both; Branch has no required field.
|
|
136
|
+
if (d.kind === "edit") return localImage().ready && !!v && v.editable && (d.strokes.length > 0 || !!d.prompt.trim());
|
|
137
|
+
if (d.kind === "branch") return true;
|
|
138
|
+
return !!convertChoice(d) && widthOf(d).ok;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// ---- send ----
|
|
142
|
+
function runAction(action, opId) {
|
|
143
|
+
return callTool(TOOLS.run, { runDir: state.view.runDir, opId: opId, action: action }).then(function (result) {
|
|
144
|
+
var sc = result.structuredContent || {};
|
|
145
|
+
if (sc.view) applyView(sc.view, true);
|
|
146
|
+
// The hosted server has no runner: the person's agent does the work, and is told here (best effort, like Select).
|
|
147
|
+
if (TARGET === "remote") remoteTellRun(action, opId);
|
|
148
|
+
return sc;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
function commitDialog() {
|
|
152
|
+
var d = state.dialog;
|
|
153
|
+
if (!d || d.committing || !dialogReady(d)) return;
|
|
154
|
+
d.committing = true;
|
|
155
|
+
d.error = "";
|
|
156
|
+
updateDialogUi();
|
|
157
|
+
var version = ver(d.versionId);
|
|
158
|
+
var work;
|
|
159
|
+
if (d.kind === "branch") work = sendHandoff("branch", version, d.id, { explanation: d.explanation.trim() });
|
|
160
|
+
else if (d.kind === "convert") work = sendHandoff("convert", version, d.id, convertOptions(d));
|
|
161
|
+
else {
|
|
162
|
+
var edited = cand(version.candidateId);
|
|
163
|
+
work = editActionFor(d, version).then(function (action) { return runAction(action, d.id); }).then(function () {
|
|
164
|
+
// The new version is shown the moment it lands.
|
|
165
|
+
state.awaitEdit = { candidateId: version.candidateId, count: edited ? edited.versionIds.length : 0 };
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
work.then(function () {
|
|
169
|
+
closeDialog();
|
|
170
|
+
}, function (err) {
|
|
171
|
+
if (state.dialog !== d) return;
|
|
172
|
+
d.committing = false;
|
|
173
|
+
d.error = errText(err);
|
|
174
|
+
updateDialogUi();
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// ---- the dialog's elements ----
|
|
179
|
+
function editBody(d, box) {
|
|
180
|
+
var v = ver(d.versionId);
|
|
181
|
+
var wrap = el("div", "imgwrap");
|
|
182
|
+
wrap.style.setProperty("--ar", String(v.width / v.height));
|
|
183
|
+
var img = el("img", "stageimg empty");
|
|
184
|
+
img.alt = COPY.versionPrefix + v.label;
|
|
185
|
+
img.setAttribute("draggable", "false");
|
|
186
|
+
wrap.appendChild(img);
|
|
187
|
+
bindImage(img, v, "full", true);
|
|
188
|
+
var cached = state.thumbs[imageKey(v, "thumb")];
|
|
189
|
+
if (cached) img.src = cached;
|
|
190
|
+
scribbleAttach(wrap, d);
|
|
191
|
+
box.appendChild(wrap);
|
|
192
|
+
// Under the image: the hint that it can be drawn on, and the two drawing controls.
|
|
193
|
+
var tools = el("div", "dialogtools");
|
|
194
|
+
tools.appendChild(el("p", "hint", COPY.scribbleHint));
|
|
195
|
+
d.els.undo = button(COPY.undo, "", function () { scribbleUndo(d); });
|
|
196
|
+
d.els.clear = button(COPY.clear, "", function () { scribbleClear(d); });
|
|
197
|
+
tools.appendChild(d.els.undo);
|
|
198
|
+
tools.appendChild(d.els.clear);
|
|
199
|
+
box.appendChild(tools);
|
|
200
|
+
box.appendChild(textarea("dialogedit", 3, COPY.editPlaceholder, 6000, function (value) { d.prompt = value; }, COPY.editAria));
|
|
201
|
+
d.els.help = helpLine("");
|
|
202
|
+
box.appendChild(d.els.help);
|
|
203
|
+
}
|
|
204
|
+
function branchBody(d, box) {
|
|
205
|
+
box.appendChild(textarea("dialogbranch", 4, COPY.branchPlaceholder, 2000, function (value) { d.explanation = value; }, COPY.branchAria));
|
|
206
|
+
box.appendChild(helpLine(COPY.branchHelp));
|
|
207
|
+
}
|
|
208
|
+
function convertBody(d, box) {
|
|
209
|
+
var select = el("select");
|
|
210
|
+
select.id = "dialogformat";
|
|
211
|
+
var service = el("optgroup");
|
|
212
|
+
service.setAttribute("label", COPY.serviceGroup);
|
|
213
|
+
CONVERT.choices.forEach(function (choice) {
|
|
214
|
+
var option = el("option", "", choice.label);
|
|
215
|
+
option.setAttribute("value", choice.value);
|
|
216
|
+
if (choice.value === d.format) option.setAttribute("selected", "");
|
|
217
|
+
(choice.engine === "local" ? select : service).appendChild(option);
|
|
218
|
+
});
|
|
219
|
+
if (service.childNodes.length > 0) select.appendChild(service);
|
|
220
|
+
select.addEventListener("change", function () { d.format = select.value; updateDialogUi(); });
|
|
221
|
+
box.appendChild(field(COPY.convertLabel, select, "dialogformat"));
|
|
222
|
+
// One line that follows the choice: what the person gets.
|
|
223
|
+
d.els.formatHelp = helpLine("");
|
|
224
|
+
box.appendChild(d.els.formatHelp);
|
|
225
|
+
// The hosted server builds from the image and has nothing else to ask: no quality, width or layouts.
|
|
226
|
+
if (TARGET === "remote") return;
|
|
227
|
+
// Only the options the chosen format has are shown; the rest are hidden, not disabled. Each says what it does in one line.
|
|
228
|
+
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; }));
|
|
229
|
+
d.els.quality.appendChild(helpLine(COPY.qualityHelp));
|
|
230
|
+
var width = el("input");
|
|
231
|
+
width.type = "number";
|
|
232
|
+
width.id = "dialogwidth";
|
|
233
|
+
width.setAttribute("min", "1");
|
|
234
|
+
width.setAttribute("max", String(CONVERT.maxWidth));
|
|
235
|
+
width.setAttribute("placeholder", COPY.widthPlaceholder);
|
|
236
|
+
width.setAttribute("inputmode", "numeric");
|
|
237
|
+
width.addEventListener("input", function () { d.width = width.value; updateDialogUi(); });
|
|
238
|
+
d.els.width = field(COPY.widthLabel, width, "dialogwidth");
|
|
239
|
+
d.els.width.appendChild(helpLine(COPY.widthHelp));
|
|
240
|
+
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; }));
|
|
241
|
+
d.els.layouts.appendChild(helpLine(COPY.layoutsHelp));
|
|
242
|
+
[d.els.quality, d.els.width, d.els.layouts].forEach(function (node) { box.appendChild(node); });
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
function mountDialog() {
|
|
246
|
+
var d = state.dialog;
|
|
247
|
+
var host = stageEls.dialog;
|
|
248
|
+
host.textContent = "";
|
|
249
|
+
var backdrop = el("div", "modal");
|
|
250
|
+
backdrop.addEventListener("click", function (e) { if (e.target === backdrop && !d.committing) closeDialog(); });
|
|
251
|
+
var box = el("div", "modalbox" + (d.kind === "edit" ? " wide" : ""));
|
|
252
|
+
box.setAttribute("role", "dialog");
|
|
253
|
+
box.setAttribute("aria-modal", "true");
|
|
254
|
+
box.setAttribute("aria-label", DIALOG_TITLES[d.kind]);
|
|
255
|
+
box.appendChild(el("h2", "", DIALOG_TITLES[d.kind]));
|
|
256
|
+
if (d.kind === "edit") editBody(d, box);
|
|
257
|
+
else if (d.kind === "branch") branchBody(d, box);
|
|
258
|
+
else convertBody(d, box);
|
|
259
|
+
d.els.alert = el("p", "alert");
|
|
260
|
+
d.els.alert.setAttribute("role", "alert");
|
|
261
|
+
box.appendChild(d.els.alert);
|
|
262
|
+
var buttons = el("div", "dialogbtns");
|
|
263
|
+
buttons.appendChild(el("span", "spacer"));
|
|
264
|
+
buttons.appendChild(button(COPY.cancel, "", closeDialog));
|
|
265
|
+
d.els.primary = button(DIALOG_VERBS[d.kind], "primary", commitDialog);
|
|
266
|
+
buttons.appendChild(d.els.primary);
|
|
267
|
+
box.appendChild(buttons);
|
|
268
|
+
backdrop.appendChild(box);
|
|
269
|
+
host.appendChild(backdrop);
|
|
270
|
+
d.els.box = box;
|
|
271
|
+
updateDialogUi();
|
|
272
|
+
var first = box.querySelector("textarea") || box.querySelector("select") || box.querySelector("input:checked") || d.els.primary;
|
|
273
|
+
if (first && first.focus) first.focus();
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
function updateDialogUi() {
|
|
277
|
+
var d = state.dialog;
|
|
278
|
+
if (!d || !d.els.primary) return;
|
|
279
|
+
d.els.primary.disabled = d.committing || !dialogReady(d);
|
|
280
|
+
// A dialog that cannot run on this Mac says why, in the same line an error would use.
|
|
281
|
+
var local = localImage();
|
|
282
|
+
var blockedByLocal = d.kind === "edit" && !local.ready;
|
|
283
|
+
d.els.alert.textContent = d.error || (blockedByLocal && local.reason ? local.reason : "");
|
|
284
|
+
d.els.alert.classList.toggle("hidden", !d.els.alert.textContent);
|
|
285
|
+
if (d.els.undo) d.els.undo.disabled = d.strokes.length === 0 || d.committing;
|
|
286
|
+
if (d.els.clear) d.els.clear.disabled = d.strokes.length === 0 || d.committing;
|
|
287
|
+
if (d.els.help) {
|
|
288
|
+
var marksOnly = d.strokes.length > 0 && !d.prompt.trim();
|
|
289
|
+
d.els.help.textContent = marksOnly ? COPY.editHelpMarks : tpl(COPY.editHelp, { label: (ver(d.versionId) || {}).label || "" });
|
|
290
|
+
}
|
|
291
|
+
if (d.kind === "convert") {
|
|
292
|
+
var choice = convertChoice(d);
|
|
293
|
+
d.els.formatHelp.textContent = (choice && CONVERT.descriptions[choice.value]) || "";
|
|
294
|
+
}
|
|
295
|
+
if (d.kind === "convert" && TARGET !== "remote") {
|
|
296
|
+
var isLocal = !!choice && choice.engine === "local";
|
|
297
|
+
d.els.quality.classList.toggle("hidden", isLocal);
|
|
298
|
+
d.els.width.classList.toggle("hidden", isLocal);
|
|
299
|
+
d.els.layouts.classList.toggle("hidden", isLocal || choice.output !== "html");
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// Escape closes; Tab stays inside the dialog.
|
|
304
|
+
document.addEventListener("keydown", function (e) {
|
|
305
|
+
var d = state.dialog;
|
|
306
|
+
if (!d) return;
|
|
307
|
+
if (e.key === "Escape" && !d.committing) { closeDialog(); return; }
|
|
308
|
+
if (e.key !== "Tab" || !d.els.box) return;
|
|
309
|
+
var items = Array.prototype.filter.call(d.els.box.querySelectorAll("button, textarea, input, select"), function (n) {
|
|
310
|
+
if (n.disabled) return false;
|
|
311
|
+
for (var node = n; node && node.classList; node = node.parentElement) if (node.classList.contains("hidden")) return false;
|
|
312
|
+
return true;
|
|
313
|
+
});
|
|
314
|
+
if (items.length === 0) return;
|
|
315
|
+
var first = items[0];
|
|
316
|
+
var last = items[items.length - 1];
|
|
317
|
+
if (e.shiftKey && document.activeElement === first) { last.focus(); if (e.preventDefault) e.preventDefault(); }
|
|
318
|
+
else if (!e.shiftKey && document.activeElement === last) { first.focus(); if (e.preventDefault) e.preventDefault(); }
|
|
319
|
+
});
|
|
320
|
+
`;
|
|
321
|
+
//# 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;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4SxC,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,QAsN3B,CAAC"}
|
|
@@ -0,0 +1,224 @@
|
|
|
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 const SLATE_UI_INLINE = String.raw `
|
|
10
|
+
// ---- apply a view: selection, announcements, polling, render ----
|
|
11
|
+
var pickRestored = null;
|
|
12
|
+
function applyView(view, fromPoll) {
|
|
13
|
+
if (!view || view.schema !== "12ui.slate.view/3" || !Array.isArray(view.candidates)) return;
|
|
14
|
+
var prev = state.view;
|
|
15
|
+
if (prev && prev.runDir !== view.runDir) {
|
|
16
|
+
state.sel = { candidateId: null, versionId: null, followLatest: true };
|
|
17
|
+
state.dialog = null;
|
|
18
|
+
resetMore();
|
|
19
|
+
state.insp.local = null;
|
|
20
|
+
state.awaitEdit = null;
|
|
21
|
+
pickRestored = null;
|
|
22
|
+
}
|
|
23
|
+
if (prev) announceSettled(prev, view);
|
|
24
|
+
else view.ops.forEach(function (op) { state.lastOpStates[op.opId] = op.state; });
|
|
25
|
+
if (!prev || prev.stamp !== view.stamp) poll.step = 0;
|
|
26
|
+
state.view = view;
|
|
27
|
+
// An edit that was just applied is shown the moment its version exists.
|
|
28
|
+
if (state.awaitEdit) {
|
|
29
|
+
var edited = cand(state.awaitEdit.candidateId);
|
|
30
|
+
if (edited && edited.versionIds.length > state.awaitEdit.count) {
|
|
31
|
+
state.sel = { candidateId: edited.candidateId, versionId: edited.latestVersionId, followLatest: true };
|
|
32
|
+
state.awaitEdit = null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
syncOpStatus(prev, view);
|
|
36
|
+
if (view.pick && pickRestored !== view.runDir) {
|
|
37
|
+
pickRestored = view.runDir;
|
|
38
|
+
var earlier = ver(view.pick.versionId);
|
|
39
|
+
if (earlier) state.sel = { candidateId: earlier.candidateId, versionId: earlier.versionId, followLatest: false };
|
|
40
|
+
if (!fromPoll && view.pick.fileState === "missing") setStatus(COPY.pickMissing, "err");
|
|
41
|
+
else if (!fromPoll && view.pick.fileState === "changed") setStatus(COPY.pickChanged, "err");
|
|
42
|
+
}
|
|
43
|
+
ensureSelection();
|
|
44
|
+
renderAll();
|
|
45
|
+
schedulePoll();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function renderAll() {
|
|
49
|
+
if (!state.view) return;
|
|
50
|
+
$("fatal").classList.add("hidden");
|
|
51
|
+
var full = isFullscreen();
|
|
52
|
+
$("app").classList.toggle("hidden", full);
|
|
53
|
+
$("stage").classList.toggle("hidden", !full);
|
|
54
|
+
if (full) renderStage(); else renderInline();
|
|
55
|
+
// A dialog that is open follows the view: what this Mac can do now, for one.
|
|
56
|
+
if (state.dialog) updateDialogUi();
|
|
57
|
+
syncMore();
|
|
58
|
+
reportSize();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Rebuild a container only when what it shows changed, so polling never steals focus or discards typing.
|
|
62
|
+
function setIfChanged(node, signature, build) {
|
|
63
|
+
if (node.__sig === signature) return false;
|
|
64
|
+
node.__sig = signature;
|
|
65
|
+
node.textContent = "";
|
|
66
|
+
build(node);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// ---- the large image, shared by the card and the workspace ----
|
|
71
|
+
function pickable(version) { return !!version && version.fileState === "ok"; }
|
|
72
|
+
// Why an option has no picture to show, or "" when it has one.
|
|
73
|
+
function optionNote(c) {
|
|
74
|
+
var v = latestVersion(c);
|
|
75
|
+
if (c.state === "failed") return c.error || optionName(c);
|
|
76
|
+
if (c.state === "pending") return optionName(c);
|
|
77
|
+
if (v && v.fileState === "missing") return COPY.fileMissing;
|
|
78
|
+
if (v && v.fileState === "changed") return COPY.fileChanged;
|
|
79
|
+
return "";
|
|
80
|
+
}
|
|
81
|
+
// The full picture jumps the queue; while it loads, the thumbnail (already fetched) stands in.
|
|
82
|
+
function heroInto(wrap, c, v) {
|
|
83
|
+
wrap.textContent = "";
|
|
84
|
+
wrap.classList.remove("note");
|
|
85
|
+
wrap.style.removeProperty("--ar");
|
|
86
|
+
// The workspace's action row is as wide as the picture, so Select sits under its right edge: the shared parent carries the ratio too.
|
|
87
|
+
var shared = wrap.parentElement;
|
|
88
|
+
if (shared) shared.style.removeProperty("--ar");
|
|
89
|
+
if (!c) return;
|
|
90
|
+
if (!v || v.fileState !== "ok") {
|
|
91
|
+
wrap.classList.add("note");
|
|
92
|
+
var reason = !v ? optionNote(c) : v.fileState === "changed" ? COPY.fileChanged : COPY.fileMissing;
|
|
93
|
+
wrap.appendChild(el("div", "heronote" + (c.state === "pending" ? " shimmer" : ""), reason));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
wrap.style.setProperty("--ar", String(v.width / v.height));
|
|
97
|
+
if (shared) shared.style.setProperty("--ar", String(v.width / v.height));
|
|
98
|
+
var img = el("img", "heroimg empty");
|
|
99
|
+
img.alt = COPY.versionPrefix + v.label;
|
|
100
|
+
img.setAttribute("draggable", "false");
|
|
101
|
+
wrap.appendChild(img);
|
|
102
|
+
bindImage(img, v, "full", true);
|
|
103
|
+
var cached = state.thumbs[imageKey(v, "thumb")];
|
|
104
|
+
if (cached) img.src = cached;
|
|
105
|
+
wrap.appendChild(el("span", "badge", v.label));
|
|
106
|
+
if (c.busy) wrap.appendChild(progressBar());
|
|
107
|
+
}
|
|
108
|
+
function heroSignature(c, v) {
|
|
109
|
+
return JSON.stringify([state.sel, v && [v.sha256, v.fileState, v.label], c && [c.state, c.error, c.busy]]);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// ---- a small thumbnail button for an option: the strip in the card, the selection in the workspace ----
|
|
113
|
+
function thumbButton(c, cls) {
|
|
114
|
+
var b = button("", cls);
|
|
115
|
+
var selected = state.sel.candidateId === c.candidateId;
|
|
116
|
+
b.setAttribute("aria-label", optionName(c));
|
|
117
|
+
b.setAttribute("aria-pressed", selected ? "true" : "false");
|
|
118
|
+
if (selected) b.classList.add("selected");
|
|
119
|
+
b.setAttribute("data-option", c.label);
|
|
120
|
+
var v = latestVersion(c);
|
|
121
|
+
var note = optionNote(c);
|
|
122
|
+
if (note && c.state !== "pending") b.title = note;
|
|
123
|
+
if (c.state === "failed" || (v && v.fileState !== "ok")) b.classList.add("failed");
|
|
124
|
+
if (c.state === "pending") b.classList.add("shimmer");
|
|
125
|
+
var img = el("img", "thumb empty");
|
|
126
|
+
img.alt = "";
|
|
127
|
+
if (v && v.fileState === "ok" && c.state === "ready") bindImage(img, v, "thumb", false);
|
|
128
|
+
else img.setAttribute("data-nofile", "");
|
|
129
|
+
b.appendChild(img);
|
|
130
|
+
b.appendChild(el("b", "code", c.label));
|
|
131
|
+
b.addEventListener("click", function () { selectCandidate(c.candidateId); });
|
|
132
|
+
return b;
|
|
133
|
+
}
|
|
134
|
+
function thumbSignature(c) {
|
|
135
|
+
var lv = latestVersion(c);
|
|
136
|
+
return [c.candidateId, c.state, c.error, c.latestVersionId, c.versionIds.length, lv ? lv.fileState : ""];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function renderInline() {
|
|
140
|
+
var v = state.view;
|
|
141
|
+
var empty = v.candidates.length === 0;
|
|
142
|
+
$("empty").classList.toggle("hidden", !empty);
|
|
143
|
+
$("empty").textContent = COPY.empty;
|
|
144
|
+
$("card").classList.toggle("hidden", empty);
|
|
145
|
+
if (empty) { reportSize(); return; }
|
|
146
|
+
syncTabs();
|
|
147
|
+
var onDesigns = state.tab === "designs";
|
|
148
|
+
$("pane-designs").classList.toggle("hidden", !onDesigns);
|
|
149
|
+
$("pane-inspiration").classList.toggle("hidden", onDesigns);
|
|
150
|
+
if (!onDesigns) {
|
|
151
|
+
renderInspiration($("pane-inspiration"), "card");
|
|
152
|
+
syncControls();
|
|
153
|
+
reportSize();
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
syncProgressLine(v);
|
|
157
|
+
var c = selectedCandidate();
|
|
158
|
+
var sel = selectedVersion();
|
|
159
|
+
setIfChanged($("hero"), heroSignature(c, sel), function (node) { heroInto(node, c, sel); });
|
|
160
|
+
var strip = $("strip");
|
|
161
|
+
// Where keyboard focus sits among the strip's buttons (the thumbnails), so a rebuild can put it back.
|
|
162
|
+
var focusAt = strip.contains(document.activeElement) ? Array.prototype.indexOf.call(strip.querySelectorAll("button"), document.activeElement) : -1;
|
|
163
|
+
var options = inlineCandidates();
|
|
164
|
+
var rebuilt = setIfChanged(strip, JSON.stringify([state.sel.candidateId, options.map(thumbSignature)]), function (node) {
|
|
165
|
+
options.forEach(function (x) { node.appendChild(thumbButton(x, "thumbbtn")); });
|
|
166
|
+
});
|
|
167
|
+
// The Generate more tile is pinned beside the strip, outside its scroll, so it is never pushed out of view; built once.
|
|
168
|
+
var wrap = $("stripwrap");
|
|
169
|
+
if (!wrap.querySelector(".moretile")) wrap.appendChild(moreTile());
|
|
170
|
+
// Choosing a thumbnail rebuilds the strip: keep keyboard focus at the same place in it.
|
|
171
|
+
var stripButtons = strip.querySelectorAll("button");
|
|
172
|
+
if (rebuilt && focusAt >= 0 && stripButtons[focusAt]) stripButtons[focusAt].focus();
|
|
173
|
+
var shown = Array.prototype.filter.call(strip.children, function (b) { return b.classList.contains("selected"); })[0];
|
|
174
|
+
if (rebuilt && shown && shown.scrollIntoView && strip.scrollWidth > strip.clientWidth) { try { shown.scrollIntoView({ inline: "nearest", block: "nearest" }); } catch (e) { /* best effort */ } }
|
|
175
|
+
strip.classList.toggle("fade", strip.scrollWidth > strip.clientWidth + 1);
|
|
176
|
+
syncControls();
|
|
177
|
+
reportSize();
|
|
178
|
+
}
|
|
179
|
+
window.addEventListener("resize", function () {
|
|
180
|
+
var strip = $("strip");
|
|
181
|
+
if (strip) strip.classList.toggle("fade", strip.scrollWidth > strip.clientWidth + 1);
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
function syncControls() {
|
|
185
|
+
if (!state.view) return;
|
|
186
|
+
var v = selectedVersion();
|
|
187
|
+
var same = samePick(v);
|
|
188
|
+
var label = same ? COPY.selected : COPY.select;
|
|
189
|
+
var disabled = !(pickable(v) && !state.busy && !same);
|
|
190
|
+
if (!isFullscreen()) {
|
|
191
|
+
var expand = $("expand");
|
|
192
|
+
expand.classList.toggle("hidden", !canFullscreen());
|
|
193
|
+
expand.disabled = state.view.candidates.length === 0;
|
|
194
|
+
$("select").disabled = disabled;
|
|
195
|
+
$("select").textContent = label;
|
|
196
|
+
}
|
|
197
|
+
if (typeof syncStageControls === "function") syncStageControls(label, disabled);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function expandWorkspace() {
|
|
201
|
+
if (!canFullscreen()) return;
|
|
202
|
+
requestMode("fullscreen");
|
|
203
|
+
}
|
|
204
|
+
function closeWorkspace() {
|
|
205
|
+
if (isFullscreen() && canInline()) requestMode("inline");
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
$("expand").addEventListener("click", expandWorkspace);
|
|
209
|
+
$("select").addEventListener("click", function () { doSelect(selectedVersion()); });
|
|
210
|
+
|
|
211
|
+
// ---- tool result: the workspace ----
|
|
212
|
+
function onToolResult(result) {
|
|
213
|
+
if (!result || result.isError) {
|
|
214
|
+
var t = result && result.content && result.content[0] && result.content[0].text;
|
|
215
|
+
fatal(COPY.toolError + (t ? ": " + t : "."));
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
var data = result.structuredContent;
|
|
219
|
+
if (!data || !Array.isArray(data.candidates)) { fatal(COPY.noView); return; }
|
|
220
|
+
applyView(data, false);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
`;
|
|
224
|
+
//# sourceMappingURL=mcp-slate-ui-script-inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-inline.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script-inline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsNxC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tabs (Designs and Inspiration, in the card and the workspace) and the
|
|
3
|
+
* Inspiration tab, which is the same in both places: a search row, the newest
|
|
4
|
+
* search's results, and one section per round with the references that
|
|
5
|
+
* produced its options. Every reference is a toggle. The selection lives in
|
|
6
|
+
* the view (`inspiration.selected`, at most eight, in click order) and is
|
|
7
|
+
* written whole through the inspiration tool, one write in flight at a time,
|
|
8
|
+
* last click wins locally; the next round reads it at commit. Nothing in this
|
|
9
|
+
* tab starts work. While a search runs the newest-search slot is skeleton
|
|
10
|
+
* tiles; a search with no results says so.
|
|
11
|
+
*/
|
|
12
|
+
export declare const SLATE_UI_INSPIRATION: string;
|
|
13
|
+
//# sourceMappingURL=mcp-slate-ui-script-inspiration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-inspiration.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-script-inspiration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,QA+NhC,CAAC"}
|