@bastani/atomic 0.9.24 → 0.9.25-alpha.1
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/CHANGELOG.md +33 -0
- package/dist/builtin/intercom/index.bundle.mjs +5 -0
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/CHANGELOG.md +11 -0
- package/dist/builtin/mcp/index.bundle.mjs +219 -71
- package/dist/builtin/mcp/package.json +6 -2
- package/dist/builtin/subagents/package.json +3 -3
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +1 -0
- package/dist/builtin/web-access/index.bundle.mjs +7 -6
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +6 -0
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +1 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_6_1_sol.md +66 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +1 -0
- package/dist/cli/startup-ui.d.ts +3 -4
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +3 -4
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +5 -0
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-export.d.ts.map +1 -1
- package/dist/core/agent-session-export.js +3 -0
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +4 -0
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +2 -1
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-nested-tools.d.ts +10 -0
- package/dist/core/agent-session-nested-tools.d.ts.map +1 -0
- package/dist/core/agent-session-nested-tools.js +76 -0
- package/dist/core/agent-session-nested-tools.js.map +1 -0
- package/dist/core/agent-session-runtime-auth.js +3 -1
- package/dist/core/agent-session-runtime-auth.js.map +1 -1
- package/dist/core/agent-session-state.d.ts +2 -0
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js +11 -11
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +18 -3
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +15 -3
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +6 -2
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +18 -18
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/execution-model-router.d.ts.map +1 -1
- package/dist/core/execution-model-router.js +24 -8
- package/dist/core/execution-model-router.js.map +1 -1
- package/dist/core/export-html/template.js +12 -0
- package/dist/core/extensions/agent-events.d.ts +3 -0
- package/dist/core/extensions/agent-events.d.ts.map +1 -1
- package/dist/core/extensions/agent-events.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +2 -0
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +9 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/event-results.d.ts +3 -0
- package/dist/core/extensions/event-results.d.ts.map +1 -1
- package/dist/core/extensions/event-results.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -0
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +4 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-core.js +3 -5
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-host-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-host-modules.js +7 -1
- package/dist/core/extensions/loader-host-modules.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +3 -0
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +4 -0
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +2 -0
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js +16 -1
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +5 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +34 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +5 -0
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/tool-events.d.ts +4 -0
- package/dist/core/extensions/tool-events.d.ts.map +1 -1
- package/dist/core/extensions/tool-events.js.map +1 -1
- package/dist/core/extensions/tool-types.d.ts +34 -3
- package/dist/core/extensions/tool-types.d.ts.map +1 -1
- package/dist/core/extensions/tool-types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js +14 -2
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/fast-model-routing-transport.d.ts.map +1 -1
- package/dist/core/fast-model-routing-transport.js +2 -1
- package/dist/core/fast-model-routing-transport.js.map +1 -1
- package/dist/core/fast-model-routing.d.ts +1 -2
- package/dist/core/fast-model-routing.d.ts.map +1 -1
- package/dist/core/fast-model-routing.js +13 -11
- package/dist/core/fast-model-routing.js.map +1 -1
- package/dist/core/fast-model-variants.d.ts +4 -1
- package/dist/core/fast-model-variants.d.ts.map +1 -1
- package/dist/core/fast-model-variants.js +42 -17
- package/dist/core/fast-model-variants.js.map +1 -1
- package/dist/core/model-registry.d.ts +4 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +9 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-defaults.js +1 -1
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-routing-candidates.d.ts +4 -0
- package/dist/core/model-routing-candidates.d.ts.map +1 -1
- package/dist/core/model-routing-candidates.js +8 -3
- package/dist/core/model-routing-candidates.js.map +1 -1
- package/dist/core/model-routing-evals.d.ts.map +1 -1
- package/dist/core/model-routing-evals.js +4 -5
- package/dist/core/model-routing-evals.js.map +1 -1
- package/dist/core/model-runtime.d.ts +3 -2
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +19 -25
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/nested-tool-calls.d.ts +64 -0
- package/dist/core/nested-tool-calls.d.ts.map +1 -0
- package/dist/core/nested-tool-calls.js +132 -0
- package/dist/core/nested-tool-calls.js.map +1 -0
- package/dist/core/package-manager-resolver.d.ts.map +1 -1
- package/dist/core/package-manager-resolver.js +21 -3
- package/dist/core/package-manager-resolver.js.map +1 -1
- package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -1
- package/dist/core/package-manager-resource-accumulator.js +2 -0
- package/dist/core/package-manager-resource-accumulator.js.map +1 -1
- package/dist/core/package-manager-types.d.ts +2 -0
- package/dist/core/package-manager-types.d.ts.map +1 -1
- package/dist/core/package-manager-types.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +1 -0
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js +12 -6
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-extensions.d.ts +1 -0
- package/dist/core/resource-loader-extensions.d.ts.map +1 -1
- package/dist/core/resource-loader-extensions.js +64 -4
- package/dist/core/resource-loader-extensions.js.map +1 -1
- package/dist/core/resource-loader-paths.d.ts.map +1 -1
- package/dist/core/resource-loader-paths.js +2 -1
- package/dist/core/resource-loader-paths.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +5 -4
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/resource-loader-source-info.d.ts.map +1 -1
- package/dist/core/resource-loader-source-info.js +7 -5
- package/dist/core/resource-loader-source-info.js.map +1 -1
- package/dist/core/sdk-types.d.ts +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +2 -0
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +5 -1
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +1 -1
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +4 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +27 -1
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-core.d.ts +2 -0
- package/dist/core/settings-manager-core.d.ts.map +1 -1
- package/dist/core/settings-manager-core.js +4 -0
- package/dist/core/settings-manager-core.js.map +1 -1
- package/dist/core/settings-manager-ui-accessors.d.ts +3 -1
- package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-ui-accessors.js +13 -0
- package/dist/core/settings-manager-ui-accessors.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-merge.d.ts +1 -0
- package/dist/core/settings-merge.d.ts.map +1 -1
- package/dist/core/settings-merge.js +30 -1
- package/dist/core/settings-merge.js.map +1 -1
- package/dist/core/settings-types.d.ts +8 -1
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/source-info.d.ts +3 -0
- package/dist/core/source-info.d.ts.map +1 -1
- package/dist/core/source-info.js +11 -0
- package/dist/core/source-info.js.map +1 -1
- package/dist/core/tool-loadout.d.ts +6 -0
- package/dist/core/tool-loadout.d.ts.map +1 -0
- package/dist/core/tool-loadout.js +63 -0
- package/dist/core/tool-loadout.js.map +1 -0
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.js +1 -0
- package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +31 -11
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +4 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +32 -0
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/powershell.d.ts +27 -21
- package/dist/core/tools/powershell.d.ts.map +1 -1
- package/dist/core/tools/render-utils.d.ts +4 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +19 -0
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/tool-concurrency.d.ts +1 -1
- package/dist/core/tools/tool-concurrency.d.ts.map +1 -1
- package/dist/core/tools/tool-concurrency.js +28 -3
- package/dist/core/tools/tool-concurrency.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +4 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/usage-totals.d.ts +2 -0
- package/dist/core/usage-totals.d.ts.map +1 -1
- package/dist/core/usage-totals.js +23 -0
- package/dist/core/usage-totals.js.map +1 -1
- package/dist/extensions/codemode/execute.d.ts +10 -0
- package/dist/extensions/codemode/execute.d.ts.map +1 -0
- package/dist/extensions/codemode/execute.js +313 -0
- package/dist/extensions/codemode/execute.js.map +1 -0
- package/dist/extensions/codemode/index.d.ts +11 -0
- package/dist/extensions/codemode/index.d.ts.map +1 -0
- package/dist/extensions/codemode/index.js +14 -0
- package/dist/extensions/codemode/index.js.map +1 -0
- package/dist/extensions/codemode/renderer.d.ts +4 -0
- package/dist/extensions/codemode/renderer.d.ts.map +1 -0
- package/dist/extensions/codemode/renderer.js +78 -0
- package/dist/extensions/codemode/renderer.js.map +1 -0
- package/dist/extensions/codemode/tool.d.ts +51 -0
- package/dist/extensions/codemode/tool.d.ts.map +1 -0
- package/dist/extensions/codemode/tool.js +134 -0
- package/dist/extensions/codemode/tool.js.map +1 -0
- package/dist/extensions/codemode/worker.d.ts +2 -0
- package/dist/extensions/codemode/worker.d.ts.map +1 -0
- package/dist/extensions/codemode/worker.js +2 -0
- package/dist/extensions/codemode/worker.js.map +1 -0
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +5 -1
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +31 -10
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/tool-search/index.d.ts +5 -0
- package/dist/extensions/tool-search/index.d.ts.map +1 -0
- package/dist/extensions/tool-search/index.js +6 -0
- package/dist/extensions/tool-search/index.js.map +1 -0
- package/dist/extensions/tool-search/tool.d.ts +41 -0
- package/dist/extensions/tool-search/tool.d.ts.map +1 -0
- package/dist/extensions/tool-search/tool.js +161 -0
- package/dist/extensions/tool-search/tool.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -0
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +2 -0
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.js +9 -1
- package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector-project-scope.js +4 -1
- package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts +2 -2
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +1 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +42 -7
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.js +3 -0
- package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +13 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js +3 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +3 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/components/themed-text.d.ts +8 -0
- package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
- package/dist/modes/interactive/components/themed-text.js +14 -0
- package/dist/modes/interactive/components/themed-text.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +5 -3
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +2 -0
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +2 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +5 -0
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.js +7 -10
- package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +5 -0
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +1 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +8 -3
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-tui.d.ts +2 -1
- package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-tui.js +1 -0
- package/dist/modes/interactive/interactive-tui.js.map +1 -1
- package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -1
- package/dist/modes/interactive/theme/color-utils.js +3 -0
- package/dist/modes/interactive/theme/color-utils.js.map +1 -1
- package/dist/modes/interactive/theme/export-colors.d.ts.map +1 -1
- package/dist/modes/interactive/theme/export-colors.js +4 -1
- package/dist/modes/interactive/theme/export-colors.js.map +1 -1
- package/dist/modes/interactive/theme/system-theme.d.ts +23 -0
- package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/system-theme.js +462 -0
- package/dist/modes/interactive/theme/system-theme.js.map +1 -0
- package/dist/modes/interactive/theme/terminal-colors.d.ts +10 -0
- package/dist/modes/interactive/theme/terminal-colors.d.ts.map +1 -0
- package/dist/modes/interactive/theme/terminal-colors.js +36 -0
- package/dist/modes/interactive/theme/terminal-colors.js.map +1 -0
- package/dist/modes/interactive/theme/terminal-detection.d.ts +4 -6
- package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -1
- package/dist/modes/interactive/theme/terminal-detection.js +12 -46
- package/dist/modes/interactive/theme/terminal-detection.js.map +1 -1
- package/dist/modes/interactive/theme/theme-class.d.ts +1 -0
- package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-class.js +2 -2
- package/dist/modes/interactive/theme/theme-class.js.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts +16 -8
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +106 -64
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.js +23 -2
- package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.js +1 -1
- package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +2 -2
- package/dist/modes/interactive/theme/theme.d.ts +2 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +2 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive-engine/engine-session-stats.d.ts +26 -0
- package/dist/modes/interactive-engine/engine-session-stats.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-session-stats.js +71 -0
- package/dist/modes/interactive-engine/engine-session-stats.js.map +1 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +2 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.js +4 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +3 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +27 -5
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js +3 -1
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +8 -2
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +2 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/shell.d.ts +1 -3
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +3 -30
- package/dist/utils/shell.js.map +1 -1
- package/docs/extensions/api-reference.md +5 -1
- package/docs/extensions/authoring.md +31 -1
- package/docs/extensions/events.md +3 -1
- package/docs/extensions.md +14 -0
- package/docs/models/evals.md +45 -2
- package/docs/models/reference.md +33 -2
- package/docs/models.md +1 -0
- package/docs/packages.md +2 -0
- package/docs/providers.md +34 -7
- package/docs/reference/cli.md +4 -0
- package/docs/rpc/protocol.md +10 -0
- package/docs/sdk/reference.md +5 -1
- package/docs/sdk/structured-decisions.md +2 -2
- package/docs/session-format.md +5 -0
- package/docs/settings.md +19 -5
- package/docs/skills.md +1 -1
- package/docs/themes/reference.md +2 -1
- package/docs/themes.md +4 -2
- package/docs/tools.md +39 -0
- package/npm-shrinkwrap.json +115 -113
- package/package.json +12 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-theme.js","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/system-theme.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tcolorToOkhsl,\n\tcolorToOklch,\n\ttype OkhslChannels,\n\tokhslColor,\n\toklabToOkhslLightness,\n\ttype RgbColor,\n\trgbColor,\n} from \"@earendil-works/pi-tui\";\nimport type { ThemeBg, ThemeColor } from \"./theme-class.ts\";\n\nexport const SYSTEM_THEME_NAME = \"system\";\ntype ThemeAppearance = \"dark\" | \"light\";\ntype ThemeToken = ThemeColor | ThemeBg | \"scrollbarTrack\" | \"thinkingMax\";\ninterface Family {\n\thue: number;\n\tsaturation: { min: number; max: number };\n\tslot: number;\n}\nconst FAMILIES = {\n\tneutral: { hue: 231.49, saturation: { min: 0.02, max: 0.08 }, slot: 8 },\n\tblue: { hue: 231.49, saturation: { min: 0.1, max: 0.68 }, slot: 4 },\n\tgreen: { hue: 158.68, saturation: { min: 0.1, max: 0.76 }, slot: 2 },\n\tred: { hue: 20, saturation: { min: 0.1, max: 0.92 }, slot: 1 },\n\tyellow: { hue: 82.36, saturation: { min: 0.5, max: 1 }, slot: 3 },\n\torange: { hue: 52, saturation: { min: 0.12, max: 0.85 }, slot: 3 },\n\tviolet: { hue: 295, saturation: { min: 0.2, max: 0.6 }, slot: 5 },\n\tcalamine: { hue: 202.43, saturation: { min: 0.1, max: 0.74 }, slot: 6 },\n\tthinkingSlate: { hue: 231.49, saturation: { min: 0.08, max: 0.2 }, slot: 4 },\n\tthinkingBlue: { hue: 231.49, saturation: { min: 0.2, max: 0.45 }, slot: 4 },\n\tthinkingPeriwinkle: { hue: 263.25, saturation: { min: 0.3, max: 0.6 }, slot: 6 },\n\tthinkingViolet: { hue: 295, saturation: { min: 0.4, max: 0.75 }, slot: 5 },\n\tthinkingMagenta: { hue: 337.5, saturation: { min: 0.5, max: 0.85 }, slot: 13 },\n\tthinkingRed: { hue: 20, saturation: { min: 0.95, max: 1 }, slot: 1 },\n} satisfies Record<string, Family>;\ntype FamilyName = keyof typeof FAMILIES;\nconst TOKEN_FAMILIES: Record<ThemeToken, FamilyName> = {\n\tselectedBg: \"blue\",\n\tsearchMatchBg: \"orange\",\n\tuserMessageBg: \"blue\",\n\tcustomMessageBg: \"violet\",\n\ttoolPendingBg: \"neutral\",\n\ttoolSuccessBg: \"green\",\n\ttoolErrorBg: \"red\",\n\ttext: \"neutral\",\n\tuserMessageText: \"neutral\",\n\tcustomMessageText: \"neutral\",\n\ttoolTitle: \"neutral\",\n\tsyntaxOperator: \"neutral\",\n\tsyntaxPunctuation: \"neutral\",\n\tmuted: \"neutral\",\n\tdim: \"neutral\",\n\tthinkingText: \"neutral\",\n\ttoolOutput: \"neutral\",\n\tmdLinkUrl: \"neutral\",\n\tmdQuote: \"neutral\",\n\tmdQuoteBorder: \"neutral\",\n\tmdHr: \"neutral\",\n\tmdCodeBlockBorder: \"neutral\",\n\ttoolDiffContext: \"neutral\",\n\tsyntaxComment: \"neutral\",\n\tscrollbarTrack: \"neutral\",\n\tscrollbarThumb: \"neutral\",\n\tsearchMatchText: \"neutral\",\n\tborderMuted: \"neutral\",\n\taccent: \"violet\",\n\tborderAccent: \"violet\",\n\tcustomMessageLabel: \"violet\",\n\tmdCode: \"violet\",\n\tmdListBullet: \"violet\",\n\tsyntaxType: \"violet\",\n\tborder: \"blue\",\n\tmdLink: \"blue\",\n\tsyntaxKeyword: \"blue\",\n\tsyntaxVariable: \"calamine\",\n\tsuccess: \"green\",\n\tmdCodeBlock: \"green\",\n\ttoolDiffAdded: \"green\",\n\tbashMode: \"green\",\n\tsyntaxNumber: \"green\",\n\terror: \"red\",\n\ttoolDiffRemoved: \"red\",\n\twarning: \"yellow\",\n\tmdHeading: \"yellow\",\n\tsyntaxFunction: \"yellow\",\n\tsyntaxString: \"orange\",\n\tthinkingOff: \"neutral\",\n\tthinkingMinimal: \"thinkingSlate\",\n\tthinkingLow: \"thinkingBlue\",\n\tthinkingMedium: \"thinkingPeriwinkle\",\n\tthinkingHigh: \"thinkingViolet\",\n\tthinkingXhigh: \"thinkingMagenta\",\n\tthinkingMax: \"thinkingRed\",\n};\nconst TOKEN_SLOTS: Partial<Record<ThemeToken, number>> = { syntaxString: 2, syntaxNumber: 5, searchMatchBg: 3 };\ninterface Curve {\n\tcoefficients: number[];\n\treachable: [number, number];\n}\n// Upstream's reviewed target-lightness curves, evaluated in OKLab.\nconst LEVELS = {\n\tpanel: {\n\t\tdark: { coefficients: [0.29131, -0.39746, 2.33185, -0.85524, -1.2076, 0.86276], reachable: [0, 0.979] },\n\t\tlight: { coefficients: [-3.74073, 27.94549, -78.44258, 112.6798, -79.60015, 22.11277], reachable: [0.348, 1] },\n\t},\n\ttrack: {\n\t\tdark: { coefficients: [0.39028, -0.23015, 0.83573, 2.43829, -4.38292, 2.01582], reachable: [0, 0.946] },\n\t\tlight: { coefficients: [-5.24921, 38.37322, -107.28833, 152.10005, -106.17127, 29.18061], reachable: [0.368, 1] },\n\t},\n\tthinking0: {\n\t\tdark: { coefficients: [0.52988, -0.05809, -0.30924, 4.63567, -6.52933, 2.89108], reachable: [0, 0.873] },\n\t\tlight: {\n\t\t\tcoefficients: [-28.27749, 182.85284, -469.62416, 603.15916, -384.59976, 97.35147],\n\t\t\treachable: [0.51, 1],\n\t\t},\n\t},\n\tthinking1: {\n\t\tdark: { coefficients: [0.55278, -0.03667, -0.45659, 4.95347, -6.90265, 3.0706], reachable: [0, 0.858] },\n\t\tlight: {\n\t\t\tcoefficients: [-37.10484, 235.86282, -596.62344, 754.3633, -474.00763, 118.3551],\n\t\t\treachable: [0.535, 1],\n\t\t},\n\t},\n\tthinking2: {\n\t\tdark: { coefficients: [0.57486, -0.01765, -0.58987, 5.25227, -7.27175, 3.25532], reachable: [0, 0.842] },\n\t\tlight: {\n\t\t\tcoefficients: [-59.89653, 377.05024, -945.07843, 1182.03145, -734.96375, 181.68658],\n\t\t\treachable: [0.556, 1],\n\t\t},\n\t},\n\tthinking3: {\n\t\tdark: { coefficients: [0.59621, -0.00062, -0.71148, 5.53588, -7.6392, 3.44606], reachable: [0, 0.827] },\n\t\tlight: {\n\t\t\tcoefficients: [-72.07122, 445.84082, -1099.57352, 1353.88793, -829.53392, 202.26164],\n\t\t\treachable: [0.58, 1],\n\t\t},\n\t},\n\tthinking4: {\n\t\tdark: { coefficients: [0.61691, 0.01462, -0.82288, 5.80651, -8.00641, 3.64333], reachable: [0, 0.811] },\n\t\tlight: {\n\t\t\tcoefficients: [-110.14338, 674.21488, -1645.75941, 2004.32367, -1215.15899, 293.3183],\n\t\t\treachable: [0.6, 1],\n\t\t},\n\t},\n\tthinking5: {\n\t\tdark: { coefficients: [0.63702, 0.02826, -0.92498, 6.06465, -8.37246, 3.84651], reachable: [0, 0.795] },\n\t\tlight: {\n\t\t\tcoefficients: [-175.47701, 1063.54495, -2570.70594, 3098.80776, -1860.15527, 444.76392],\n\t\t\treachable: [0.62, 1],\n\t\t},\n\t},\n\tthinking6: {\n\t\tdark: { coefficients: [0.65658, 0.04044, -1.01835, 6.30989, -8.73529, 4.05439], reachable: [0, 0.779] },\n\t\tlight: {\n\t\t\tcoefficients: [-183.81712, 1094.70055, -2602.68539, 3088.71276, -1826.91131, 430.75931],\n\t\t\treachable: [0.643, 1],\n\t\t},\n\t},\n\tsubtle: {\n\t\tdark: { coefficients: [0.56762, -0.02475, -0.5383, 5.12628, -7.10931, 3.17324], reachable: [0, 0.848] },\n\t\tlight: {\n\t\t\tcoefficients: [-232.85459, 1376.54473, -3249.11801, 3827.91186, -2248.29472, 526.55751],\n\t\t\treachable: [0.657, 1],\n\t\t},\n\t},\n\tthumb: {\n\t\tdark: { coefficients: [0.60323, 0.00278, -0.73328, 5.57157, -7.68067, 3.46933], reachable: [0, 0.823] },\n\t\tlight: {\n\t\t\tcoefficients: [-82.89897, 511.01355, -1255.98095, 1540.76821, -940.68087, 228.58523],\n\t\t\treachable: [0.586, 1],\n\t\t},\n\t},\n\treadable: {\n\t\tdark: { coefficients: [0.66937, 0.04704, -1.06871, 6.43941, -8.9332, 4.17229], reachable: [0, 0.77] },\n\t\tlight: {\n\t\t\tcoefficients: [-1554.52576, 8733.56817, -19604.93507, 21977.72696, -12300.99599, 2749.81288],\n\t\t\treachable: [0.751, 1],\n\t\t},\n\t},\n\temphasis: {\n\t\tdark: { coefficients: [0.7303, 0.07695, -1.31626, 7.1681, -10.14436, 4.92846], reachable: [0, 0.712] },\n\t\tlight: {\n\t\t\tcoefficients: [-4948.31942, 26870.91986, -58334.48399, 63280.17197, -34298.01053, 7430.30146],\n\t\t\treachable: [0.811, 1],\n\t\t},\n\t},\n\ttextOnPanel: {\n\t\tdark: { coefficients: [0.86713, 0.05232, -0.89428, 4.79014, -5.5432, 1.75023], reachable: [0, 0.542] },\n\t\tlight: {\n\t\t\tcoefficients: [-8570.89457, 43954.60805, -90084.00702, 92220.6791, -47152.15802, 9632.27113],\n\t\t\treachable: [0.867, 1],\n\t\t},\n\t},\n\ttext: {\n\t\tdark: { coefficients: [0.89242, 0.02311, -0.44862, 2.34417, -0.06084, -2.63844], reachable: [0, 0.5] },\n\t\tlight: {\n\t\t\tcoefficients: [-2004.67048, 6664.47299, -6060.70202, -1792.61209, 5133.82359, -1939.85583],\n\t\t\treachable: [0.894, 1],\n\t\t},\n\t},\n} satisfies Record<string, Record<ThemeAppearance, Curve>>;\ntype Level = keyof typeof LEVELS;\ntype Surface = ThemeBg | \"background\" | \"scrollbarTrack\";\ninterface Rule {\n\ttoken: ThemeToken;\n\ton: Surface[];\n\tlevel: Level;\n}\nconst TOOL_PANELS: Surface[] = [\"toolPendingBg\", \"toolSuccessBg\", \"toolErrorBg\"];\nconst MESSAGE_PANELS: Surface[] = [\"userMessageBg\", \"customMessageBg\"];\nconst PANELS: ThemeBg[] = [\n\t\"userMessageBg\",\n\t\"toolPendingBg\",\n\t\"toolSuccessBg\",\n\t\"toolErrorBg\",\n\t\"selectedBg\",\n\t\"searchMatchBg\",\n\t\"customMessageBg\",\n];\nconst THINKING: ThemeToken[] = [\n\t\"thinkingOff\",\n\t\"thinkingMinimal\",\n\t\"thinkingLow\",\n\t\"thinkingMedium\",\n\t\"thinkingHigh\",\n\t\"thinkingXhigh\",\n\t\"thinkingMax\",\n];\nconst THINKING_LEVELS: Level[] = [\n\t\"thinking0\",\n\t\"thinking1\",\n\t\"thinking2\",\n\t\"thinking3\",\n\t\"thinking4\",\n\t\"thinking5\",\n\t\"thinking6\",\n];\nconst each = (tokens: ThemeToken[], on: Surface[], level: Level): Rule[] =>\n\ttokens.map((token) => ({ token, on, level }));\nconst RULES: Rule[] = [\n\t...each(PANELS, [\"background\"], \"panel\"),\n\t{ token: \"text\", on: [\"background\"], level: \"text\" },\n\t{ token: \"text\", on: [\"selectedBg\"], level: \"textOnPanel\" },\n\t{ token: \"userMessageText\", on: [\"userMessageBg\"], level: \"textOnPanel\" },\n\t{ token: \"toolTitle\", on: TOOL_PANELS, level: \"textOnPanel\" },\n\t...each([\"accent\", \"success\", \"error\", \"warning\"], [\"background\", \"selectedBg\", ...TOOL_PANELS], \"readable\"),\n\t{ token: \"muted\", on: [\"background\", \"selectedBg\", \"customMessageBg\", ...TOOL_PANELS], level: \"readable\" },\n\t{ token: \"dim\", on: [\"background\", \"selectedBg\", \"customMessageBg\", ...TOOL_PANELS], level: \"subtle\" },\n\t{ token: \"thinkingText\", on: [\"background\"], level: \"readable\" },\n\t{ token: \"customMessageText\", on: [\"customMessageBg\", ...TOOL_PANELS], level: \"readable\" },\n\t{\n\t\ttoken: \"customMessageLabel\",\n\t\ton: [\"background\", \"customMessageBg\", \"selectedBg\", ...TOOL_PANELS],\n\t\tlevel: \"readable\",\n\t},\n\t{ token: \"toolOutput\", on: [\"background\", ...TOOL_PANELS], level: \"readable\" },\n\t...each(\n\t\t[\"mdHeading\", \"mdLink\", \"mdLinkUrl\", \"mdCode\", \"mdQuote\", \"mdCodeBlockBorder\", \"mdListBullet\"],\n\t\t[\"background\", ...MESSAGE_PANELS],\n\t\t\"readable\",\n\t),\n\t{ token: \"mdCodeBlock\", on: [\"background\", ...MESSAGE_PANELS, ...TOOL_PANELS], level: \"readable\" },\n\t...each([\"toolDiffAdded\", \"toolDiffRemoved\", \"toolDiffContext\"], [\"background\", ...TOOL_PANELS], \"readable\"),\n\t...each(\n\t\t[\n\t\t\t\"syntaxComment\",\n\t\t\t\"syntaxKeyword\",\n\t\t\t\"syntaxFunction\",\n\t\t\t\"syntaxVariable\",\n\t\t\t\"syntaxString\",\n\t\t\t\"syntaxNumber\",\n\t\t\t\"syntaxType\",\n\t\t\t\"syntaxOperator\",\n\t\t\t\"syntaxPunctuation\",\n\t\t],\n\t\t[\"background\", ...MESSAGE_PANELS, ...TOOL_PANELS],\n\t\t\"readable\",\n\t),\n\t{ token: \"searchMatchText\", on: [\"searchMatchBg\"], level: \"readable\" },\n\t...each([\"bashMode\", \"border\", \"borderAccent\"], [\"background\"], \"readable\"),\n\t{ token: \"borderMuted\", on: [\"background\"], level: \"subtle\" },\n\t...each([\"mdQuoteBorder\", \"mdHr\"], [\"background\", ...MESSAGE_PANELS, ...TOOL_PANELS], \"readable\"),\n\t{ token: \"scrollbarTrack\", on: [\"background\"], level: \"track\" },\n\t{ token: \"scrollbarThumb\", on: [\"scrollbarTrack\"], level: \"thumb\" },\n\t...THINKING.map((token, index): Rule => ({ token, on: [\"background\"], level: THINKING_LEVELS[index] })),\n];\nconst READABLE_FLOOR: Record<ThemeAppearance, Level> = { dark: \"readable\", light: \"subtle\" };\nconst FOREGROUND_TOKENS: ThemeColor[] = [\"text\", \"userMessageText\", \"toolTitle\"];\nconst TEXT_MINIMUM_WCAG_CONTRAST = 4.5;\nconst SOLVE_ORDER: ThemeToken[] = (() => {\n\tconst order: ThemeToken[] = [];\n\tconst visit = (token: ThemeToken): void => {\n\t\tif (order.includes(token)) return;\n\t\tfor (const rule of RULES)\n\t\t\tif (rule.token === token) for (const surface of rule.on) if (surface !== \"background\") visit(surface);\n\t\torder.push(token);\n\t};\n\tfor (const rule of RULES) visit(rule.token);\n\treturn order;\n})();\nexport interface SystemThemeInput {\n\tforeground?: RgbColor;\n\tbackground?: RgbColor;\n\tpalette?: RgbColor[];\n\tsaturation?: number;\n\tappearanceHint?: ThemeAppearance;\n}\nexport interface SystemThemeColors {\n\tcolors: Record<ThemeToken, string | number>;\n\tdim: ThemeColor[];\n\tappearance: ThemeAppearance | undefined;\n}\nfunction oklabLightness(color: RgbColor): number {\n\treturn colorToOklch(rgbColor(color.r, color.g, color.b)).l;\n}\nexport function relativeLuminance({ r, g, b }: RgbColor): number {\n\tconst linear = (channel: number) => {\n\t\tconst value = channel / 255;\n\t\treturn value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;\n\t};\n\treturn 0.2126 * linear(r) + 0.7152 * linear(g) + 0.0722 * linear(b);\n}\nexport function wcagContrast(first: RgbColor, second: RgbColor): number {\n\tconst a = relativeLuminance(first);\n\tconst b = relativeLuminance(second);\n\treturn (Math.max(a, b) + 0.05) / (Math.min(a, b) + 0.05);\n}\nexport function terminalAppearance(background: RgbColor, foreground?: RgbColor): ThemeAppearance {\n\tconst whiteContrast = wcagContrast({ r: 255, g: 255, b: 255 }, background);\n\tconst blackContrast = wcagContrast({ r: 0, g: 0, b: 0 }, background);\n\tif (foreground) {\n\t\tconst foregroundL = oklabLightness(foreground);\n\t\tconst backgroundL = oklabLightness(background);\n\t\tif (Math.abs(foregroundL - backgroundL) > 0.05) {\n\t\t\tconst appearance = foregroundL > backgroundL ? \"dark\" : \"light\";\n\t\t\tif ((appearance === \"dark\" ? whiteContrast : blackContrast) >= TEXT_MINIMUM_WCAG_CONTRAST) return appearance;\n\t\t}\n\t}\n\treturn whiteContrast >= blackContrast ? \"dark\" : \"light\";\n}\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\nfunction hexOf({ r, g, b }: RgbColor): string {\n\treturn `#${[r, g, b].map((channel) => Math.round(channel).toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\nfunction bellWeight(lightness: number): number {\n\tconst gaussian = (x: number): number => Math.exp(-((x - 0.5) ** 2) / (2 * 0.25 ** 2));\n\treturn (gaussian(lightness) - gaussian(0)) / (1 - gaussian(0));\n}\nfunction saturationCurve({ saturation: { min, max } }: Family, lightness: number): number {\n\tconst floor = max > 0 ? min / max : 1;\n\treturn floor + (1 - floor) * bellWeight(lightness);\n}\nfunction levelTarget(level: Level, appearance: ThemeAppearance, surfaceL: number): number | undefined {\n\tconst curve: Curve = LEVELS[level][appearance];\n\tif (surfaceL < curve.reachable[0] || surfaceL > curve.reachable[1]) return undefined;\n\treturn curve.coefficients.reduce((sum, coefficient, power) => sum + coefficient * surfaceL ** power, 0);\n}\nexport function generateSystemThemeColors(input: SystemThemeInput): SystemThemeColors {\n\tconst saturation = clamp(input.saturation ?? 1, 0, 1);\n\tconst { background, foreground } = input;\n\tif (!background) return indexedColors(saturation, input.appearanceHint);\n\tconst palette = input.palette?.length === 16 ? input.palette.map(okhslOf) : undefined;\n\tconst appearance = terminalAppearance(background, foreground);\n\tconst lighter = appearance === \"dark\";\n\tconst extreme = lighter ? 1 : 0;\n\tconst backgroundL = oklabLightness(background);\n\tconst paint = (token: ThemeToken, oklabL: number): RgbColor => {\n\t\tconst lightness = oklabToOkhslLightness(oklabL);\n\t\tconst family: Family = FAMILIES[TOKEN_FAMILIES[token]];\n\t\tif (!palette) {\n\t\t\tconst { min, max } = family.saturation;\n\t\t\treturn okhslColor(family.hue, (min + (max - min) * bellWeight(lightness)) * saturation, lightness);\n\t\t}\n\t\treturn anchored(palette[TOKEN_SLOTS[token] ?? family.slot], family, lightness, saturation);\n\t};\n\tconst target = (level: Level, surfaceL: number, t: number): number | undefined => {\n\t\tconst reached = levelTarget(level, appearance, surfaceL);\n\t\tif (reached === undefined && t === 0) return undefined;\n\t\tconst distance = (reached ?? extreme) - surfaceL;\n\t\tconst floor = (levelTarget(READABLE_FLOOR[appearance], appearance, surfaceL) ?? extreme) - surfaceL;\n\t\tconst compressed =\n\t\t\tMath.abs(distance) > Math.abs(floor) ? distance - (distance - floor) * Math.min(t, 1) : distance;\n\t\treturn surfaceL + compressed * (1 - Math.max(0, t - 1));\n\t};\n\tconst extremeText = lighter ? { r: 255, g: 255, b: 255 } : { r: 0, g: 0, b: 0 };\n\tconst readable = (color: RgbColor) => wcagContrast(extremeText, color) >= TEXT_MINIMUM_WCAG_CONTRAST;\n\tconst limitPanel = (token: ThemeToken, l: number): RgbColor => {\n\t\tconst color = paint(token, l);\n\t\tif (readable(color)) return color;\n\t\tlet [low, high] = [backgroundL, l];\n\t\tfor (let index = 0; index < 20; index++) {\n\t\t\tconst middle = (low + high) / 2;\n\t\t\tif (readable(paint(token, middle))) low = middle;\n\t\t\telse high = middle;\n\t\t}\n\t\treturn paint(token, low);\n\t};\n\tconst solve = (t: number): Map<Surface | ThemeToken, RgbColor> | undefined => {\n\t\tconst colors = new Map<Surface | ThemeToken, RgbColor>([[\"background\", background]]);\n\t\tfor (const token of SOLVE_ORDER) {\n\t\t\tconst targets: number[] = [];\n\t\t\tfor (const rule of RULES) {\n\t\t\t\tif (rule.token !== token) continue;\n\t\t\t\tfor (const surface of rule.on) {\n\t\t\t\t\tconst value = target(rule.level, oklabLightness(colors.get(surface) ?? background), t);\n\t\t\t\t\tif (value === undefined || value < 0 || value > 1) return undefined;\n\t\t\t\t\ttargets.push(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst l = lighter ? Math.max(...targets) : Math.min(...targets);\n\t\t\tcolors.set(token, PANELS.includes(token as ThemeBg) ? limitPanel(token, l) : paint(token, l));\n\t\t}\n\t\treturn colors;\n\t};\n\tlet relaxation = 0;\n\tlet colors = solve(0);\n\tif (!colors) {\n\t\tlet [low, high] = [0, 2];\n\t\tcolors = solve(high);\n\t\tfor (let index = 0; index < 20; index++) {\n\t\t\tconst middle = (low + high) / 2;\n\t\t\tconst attempt = solve(middle);\n\t\t\tif (attempt) [high, colors] = [middle, attempt];\n\t\t\telse low = middle;\n\t\t}\n\t\trelaxation = high;\n\t}\n\tconst solved = colors ?? new Map<Surface | ThemeToken, RgbColor>();\n\tconst surfacesOf = (token: ThemeToken) =>\n\t\tRULES.filter((rule) => rule.token === token).flatMap((rule) =>\n\t\t\trule.on.map((surface) => solved.get(surface) ?? background),\n\t\t);\n\tconst result = {} as Record<ThemeToken, string | number>;\n\tfor (const token of Object.keys(TOKEN_FAMILIES) as ThemeToken[]) {\n\t\tconst color = solved.get(token);\n\t\tresult[token] = color ? hexOf(color) : \"\";\n\t}\n\tfor (const token of FOREGROUND_TOKENS) {\n\t\tconst surfaces = surfacesOf(token);\n\t\tlet text = solved.get(token);\n\t\tif (foreground) {\n\t\t\tconst targets = surfaces.map((surface) => target(\"emphasis\", oklabLightness(surface), relaxation));\n\t\t\tif (targets.every((value) => value !== undefined && value >= 0 && value <= 1)) {\n\t\t\t\tconst needed = lighter ? Math.max(...(targets as number[])) : Math.min(...(targets as number[]));\n\t\t\t\tconst foregroundL = oklabLightness(foreground);\n\t\t\t\tif (lighter ? foregroundL >= needed : foregroundL <= needed) {\n\t\t\t\t\tresult[token] = \"\";\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ttext = anchored(okhslOf(foreground), FAMILIES.neutral, oklabToOkhslLightness(needed), saturation);\n\t\t\t}\n\t\t}\n\t\tif (text) result[token] = hexOf(withTextContrast(text, surfaces, lighter));\n\t}\n\treturn { colors: result, dim: [], appearance };\n}\nfunction okhslOf({ r, g, b }: RgbColor): OkhslChannels {\n\treturn colorToOkhsl(rgbColor(r, g, b));\n}\nfunction anchored(source: OkhslChannels, family: Family, lightness: number, saturation: number): RgbColor {\n\tconst anchor = saturationCurve(family, source.l);\n\tconst falloff = anchor > 0 ? Math.min(1, saturationCurve(family, lightness) / anchor) : 1;\n\treturn okhslColor(source.h, source.s * falloff * saturation, lightness);\n}\nfunction withTextContrast(color: RgbColor, surfaces: RgbColor[], lighter: boolean): RgbColor {\n\tconst meets = (candidate: RgbColor) =>\n\t\tsurfaces.every((surface) => wcagContrast(candidate, surface) >= TEXT_MINIMUM_WCAG_CONTRAST);\n\tif (meets(color)) return color;\n\tconst { h, s, l } = okhslOf(color);\n\tconst at = (lightness: number) => okhslColor(h, s, lightness);\n\tconst extreme = lighter ? 1 : 0;\n\tif (!meets(at(extreme))) return at(extreme);\n\tlet [low, high] = [l, extreme];\n\tfor (let index = 0; index < 20; index++) {\n\t\tconst middle = (low + high) / 2;\n\t\tif (meets(at(middle))) high = middle;\n\t\telse low = middle;\n\t}\n\treturn at(high);\n}\nfunction indexedColors(saturation: number, appearance: ThemeAppearance | undefined): SystemThemeColors {\n\tconst colors = {} as Record<ThemeToken, string | number>;\n\tconst dim: ThemeColor[] = [];\n\tfor (const [token, familyName] of Object.entries(TOKEN_FAMILIES) as [ThemeToken, FamilyName][]) {\n\t\tif (PANELS.includes(token as ThemeBg)) {\n\t\t\tcolors[token] = \"\";\n\t\t\tcontinue;\n\t\t}\n\t\tconst neutral = familyName === \"neutral\";\n\t\tcolors[token] = !neutral && saturation > 0 ? (TOKEN_SLOTS[token] ?? FAMILIES[familyName].slot) : \"\";\n\t\tif (neutral && !FOREGROUND_TOKENS.includes(token as ThemeColor)) dim.push(token as ThemeColor);\n\t}\n\treturn { colors, dim, appearance };\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TerminalColors } from "@earendil-works/pi-tui";
|
|
2
|
+
export declare function setTerminalColors(next: TerminalColors): void;
|
|
3
|
+
export declare function getTerminalColors(): TerminalColors;
|
|
4
|
+
export declare function markTerminalColorsPending(): void;
|
|
5
|
+
export declare function areTerminalColorsPending(): boolean;
|
|
6
|
+
export declare function setTerminalColorScheme(next: "dark" | "light" | undefined): void;
|
|
7
|
+
export declare function detectColorFgBgTheme(env?: NodeJS.ProcessEnv): "dark" | "light" | undefined;
|
|
8
|
+
export declare function detectTerminalTheme(reported?: TerminalColors, reportedScheme?: "dark" | "light", env?: NodeJS.ProcessEnv): "dark" | "light";
|
|
9
|
+
export declare function getTerminalTheme(): "dark" | "light";
|
|
10
|
+
//# sourceMappingURL=terminal-colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-colors.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/terminal-colors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAM7D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAG5D;AACD,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AACD,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AACD,wBAAgB,wBAAwB,IAAI,OAAO,CAElD;AACD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAE/E;AACD,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAKvG;AACD,wBAAgB,mBAAmB,CAClC,QAAQ,GAAE,cAAmB,EAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,EACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,GAAG,OAAO,CAIlB;AACD,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,OAAO,CAEnD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { terminalAppearance } from "./system-theme.js";
|
|
2
|
+
let colors = {};
|
|
3
|
+
let pending = false;
|
|
4
|
+
let scheme;
|
|
5
|
+
export function setTerminalColors(next) {
|
|
6
|
+
colors = { ...next };
|
|
7
|
+
pending = false;
|
|
8
|
+
}
|
|
9
|
+
export function getTerminalColors() {
|
|
10
|
+
return colors;
|
|
11
|
+
}
|
|
12
|
+
export function markTerminalColorsPending() {
|
|
13
|
+
pending = true;
|
|
14
|
+
}
|
|
15
|
+
export function areTerminalColorsPending() {
|
|
16
|
+
return pending;
|
|
17
|
+
}
|
|
18
|
+
export function setTerminalColorScheme(next) {
|
|
19
|
+
scheme = next;
|
|
20
|
+
}
|
|
21
|
+
export function detectColorFgBgTheme(env = process.env) {
|
|
22
|
+
const background = env.COLORFGBG?.split(";").at(-1)?.trim();
|
|
23
|
+
if (!background || !/^\d+$/.test(background))
|
|
24
|
+
return undefined;
|
|
25
|
+
const index = Number(background);
|
|
26
|
+
return index <= 6 || index === 8 ? "dark" : "light";
|
|
27
|
+
}
|
|
28
|
+
export function detectTerminalTheme(reported = {}, reportedScheme, env = process.env) {
|
|
29
|
+
return reported.background
|
|
30
|
+
? terminalAppearance(reported.background, reported.foreground)
|
|
31
|
+
: (reportedScheme ?? detectColorFgBgTheme(env) ?? "dark");
|
|
32
|
+
}
|
|
33
|
+
export function getTerminalTheme() {
|
|
34
|
+
return detectTerminalTheme(colors, scheme);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=terminal-colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-colors.js","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/terminal-colors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,IAAI,MAAM,GAAmB,EAAE,CAAC;AAChC,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI,MAAoC,CAAC;AACzC,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACrD,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IACrB,OAAO,GAAG,KAAK,CAAC;AACjB,CAAC;AACD,MAAM,UAAU,iBAAiB;IAChC,OAAO,MAAM,CAAC;AACf,CAAC;AACD,MAAM,UAAU,yBAAyB;IACxC,OAAO,GAAG,IAAI,CAAC;AAChB,CAAC;AACD,MAAM,UAAU,wBAAwB;IACvC,OAAO,OAAO,CAAC;AAChB,CAAC;AACD,MAAM,UAAU,sBAAsB,CAAC,IAAkC;IACxE,MAAM,GAAG,IAAI,CAAC;AACf,CAAC;AACD,MAAM,UAAU,oBAAoB,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;IACxE,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC5D,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,mBAAmB,CAClC,QAAQ,GAAmB,EAAE,EAC7B,cAAiC,EACjC,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,OAAO,QAAQ,CAAC,UAAU;QACzB,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC9D,CAAC,CAAC,CAAC,cAAc,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC;AAC5D,CAAC;AACD,MAAM,UAAU,gBAAgB;IAC/B,OAAO,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["import type { TerminalColors } from \"@earendil-works/pi-tui\";\nimport { terminalAppearance } from \"./system-theme.js\";\n\nlet colors: TerminalColors = {};\nlet pending = false;\nlet scheme: \"dark\" | \"light\" | undefined;\nexport function setTerminalColors(next: TerminalColors): void {\n\tcolors = { ...next };\n\tpending = false;\n}\nexport function getTerminalColors(): TerminalColors {\n\treturn colors;\n}\nexport function markTerminalColorsPending(): void {\n\tpending = true;\n}\nexport function areTerminalColorsPending(): boolean {\n\treturn pending;\n}\nexport function setTerminalColorScheme(next: \"dark\" | \"light\" | undefined): void {\n\tscheme = next;\n}\nexport function detectColorFgBgTheme(env: NodeJS.ProcessEnv = process.env): \"dark\" | \"light\" | undefined {\n\tconst background = env.COLORFGBG?.split(\";\").at(-1)?.trim();\n\tif (!background || !/^\\d+$/.test(background)) return undefined;\n\tconst index = Number(background);\n\treturn index <= 6 || index === 8 ? \"dark\" : \"light\";\n}\nexport function detectTerminalTheme(\n\treported: TerminalColors = {},\n\treportedScheme?: \"dark\" | \"light\",\n\tenv: NodeJS.ProcessEnv = process.env,\n): \"dark\" | \"light\" {\n\treturn reported.background\n\t\t? terminalAppearance(reported.background, reported.foreground)\n\t\t: (reportedScheme ?? detectColorFgBgTheme(env) ?? \"dark\");\n}\nexport function getTerminalTheme(): \"dark\" | \"light\" {\n\treturn detectTerminalTheme(colors, scheme);\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { RgbColor } from "@earendil-works/pi-tui";
|
|
1
|
+
import type { RgbColor, TerminalColors } from "@earendil-works/pi-tui";
|
|
2
|
+
export { detectColorFgBgTheme, detectTerminalTheme, getTerminalTheme } from "./terminal-colors.js";
|
|
2
3
|
export type TerminalTheme = "dark" | "light";
|
|
3
4
|
export declare function parseAutoThemeSetting(themeSetting: string | undefined): {
|
|
4
5
|
lightTheme: string;
|
|
@@ -15,18 +16,15 @@ export interface TerminalThemeDetectionOptions {
|
|
|
15
16
|
env?: NodeJS.ProcessEnv;
|
|
16
17
|
}
|
|
17
18
|
export interface TerminalBackgroundThemeDetector {
|
|
18
|
-
|
|
19
|
+
queryTerminalColors({ timeoutMs }: {
|
|
19
20
|
timeoutMs: number;
|
|
20
|
-
}): Promise<
|
|
21
|
+
}): Promise<TerminalColors>;
|
|
21
22
|
}
|
|
22
23
|
export interface TerminalBackgroundThemeDetectionOptions extends TerminalThemeDetectionOptions {
|
|
23
24
|
ui: TerminalBackgroundThemeDetector;
|
|
24
25
|
timeoutMs: number;
|
|
25
26
|
}
|
|
26
27
|
export interface TerminalAutoThemeDetector extends TerminalBackgroundThemeDetector {
|
|
27
|
-
queryTerminalColorScheme({ timeoutMs }: {
|
|
28
|
-
timeoutMs: number;
|
|
29
|
-
}): Promise<TerminalTheme | undefined>;
|
|
30
28
|
}
|
|
31
29
|
export interface TerminalAutoThemeDetectionOptions extends TerminalThemeDetectionOptions {
|
|
32
30
|
ui: TerminalAutoThemeDetector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-detection.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/terminal-detection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal-detection.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/terminal-detection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIvE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEnG,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7C,wBAAgB,qBAAqB,CACpC,YAAY,EAAE,MAAM,GAAG,SAAS,GAC9B;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAavD;AAED,wBAAgB,mBAAmB,CAClC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,aAAa,EAAE,aAAa,GAC1B,MAAM,GAAG,SAAS,CAQpB;AAED,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,qBAAqB,GAAG,WAAW,GAAG,UAAU,CAAC;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,+BAA+B;IAC/C,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,uCAAwC,SAAQ,6BAA6B;IAC7F,EAAE,EAAE,+BAA+B,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAA0B,SAAQ,+BAA+B;CAAG;AAErF,MAAM,WAAW,iCAAkC,SAAQ,6BAA6B;IACvF,EAAE,EAAE,yBAAyB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,aAAa,CAEhE;AAED,wBAAgB,+BAA+B,CAAC,OAAO,GAAE,6BAAkC,GAAG,sBAAsB,CAkBnH;AAED,wBAAsB,6BAA6B,CAAC,EACnD,EAAE,EACF,SAAS,EACT,GAAG,GACH,EAAE,uCAAuC,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAiB3E;AAED,wBAAsB,0BAA0B,CAAC,EAChD,EAAE,EACF,SAAS,EACT,GAAG,GACH,EAAE,iCAAiC,GAAG,OAAO,CAAC,aAAa,CAAC,CAE5D;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { terminalAppearance } from "./system-theme.js";
|
|
2
|
+
import { detectColorFgBgTheme, detectTerminalTheme, getTerminalTheme } from "./terminal-colors.js";
|
|
3
|
+
export { detectColorFgBgTheme, detectTerminalTheme, getTerminalTheme } from "./terminal-colors.js";
|
|
2
4
|
export function parseAutoThemeSetting(themeSetting) {
|
|
3
5
|
if (!themeSetting)
|
|
4
6
|
return undefined;
|
|
@@ -24,38 +26,17 @@ export function resolveThemeSetting(themeSetting, terminalTheme) {
|
|
|
24
26
|
return themeSetting;
|
|
25
27
|
return undefined;
|
|
26
28
|
}
|
|
27
|
-
function getColorFgBgBackgroundIndex(colorfgbg) {
|
|
28
|
-
const parts = colorfgbg.split(";");
|
|
29
|
-
for (let i = parts.length - 1; i >= 0; i--) {
|
|
30
|
-
const bg = parseInt(parts[i].trim(), 10);
|
|
31
|
-
if (Number.isInteger(bg) && bg >= 0 && bg <= 255) {
|
|
32
|
-
return bg;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return undefined;
|
|
36
|
-
}
|
|
37
|
-
function getRgbColorLuminance({ r, g, b }) {
|
|
38
|
-
const toLinear = (channel) => {
|
|
39
|
-
const value = channel / 255;
|
|
40
|
-
return value <= 0.03928 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;
|
|
41
|
-
};
|
|
42
|
-
return 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);
|
|
43
|
-
}
|
|
44
|
-
function getAnsiColorLuminance(index) {
|
|
45
|
-
return getRgbColorLuminance(hexToRgb(ansi256ToHex(index)));
|
|
46
|
-
}
|
|
47
29
|
export function getThemeForRgbColor(rgb) {
|
|
48
|
-
return
|
|
30
|
+
return terminalAppearance(rgb);
|
|
49
31
|
}
|
|
50
32
|
export function detectTerminalBackgroundFromEnv(options = {}) {
|
|
51
33
|
const env = options.env ?? process.env;
|
|
52
|
-
const
|
|
53
|
-
const bg = getColorFgBgBackgroundIndex(colorfgbg);
|
|
34
|
+
const bg = detectColorFgBgTheme(env);
|
|
54
35
|
if (bg !== undefined) {
|
|
55
36
|
return {
|
|
56
|
-
theme:
|
|
37
|
+
theme: bg,
|
|
57
38
|
source: "COLORFGBG",
|
|
58
|
-
detail: `background color index ${
|
|
39
|
+
detail: `background color index ${env.COLORFGBG?.split(";").at(-1)}`,
|
|
59
40
|
confidence: "high",
|
|
60
41
|
};
|
|
61
42
|
}
|
|
@@ -68,10 +49,11 @@ export function detectTerminalBackgroundFromEnv(options = {}) {
|
|
|
68
49
|
}
|
|
69
50
|
export async function detectTerminalBackgroundTheme({ ui, timeoutMs, env, }) {
|
|
70
51
|
try {
|
|
71
|
-
const
|
|
52
|
+
const colors = await ui.queryTerminalColors({ timeoutMs });
|
|
53
|
+
const rgb = colors.background;
|
|
72
54
|
if (rgb) {
|
|
73
55
|
return {
|
|
74
|
-
theme:
|
|
56
|
+
theme: detectTerminalTheme(colors, undefined, env),
|
|
75
57
|
source: "terminal background",
|
|
76
58
|
detail: `OSC 11 background rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,
|
|
77
59
|
confidence: "high",
|
|
@@ -84,25 +66,9 @@ export async function detectTerminalBackgroundTheme({ ui, timeoutMs, env, }) {
|
|
|
84
66
|
return detectTerminalBackgroundFromEnv({ env });
|
|
85
67
|
}
|
|
86
68
|
export async function detectTerminalThemeForAuto({ ui, timeoutMs, env, }) {
|
|
87
|
-
|
|
88
|
-
try {
|
|
89
|
-
colorSchemePromise = ui.queryTerminalColorScheme({ timeoutMs });
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
// Fall back to OSC 11 / COLORFGBG detection when starting the color-scheme query fails.
|
|
93
|
-
}
|
|
94
|
-
const backgroundThemePromise = detectTerminalBackgroundTheme({ ui, timeoutMs, env });
|
|
95
|
-
try {
|
|
96
|
-
const colorScheme = await colorSchemePromise;
|
|
97
|
-
if (colorScheme)
|
|
98
|
-
return colorScheme;
|
|
99
|
-
}
|
|
100
|
-
catch {
|
|
101
|
-
// Fall back to the concurrently queried OSC 11 / COLORFGBG detection.
|
|
102
|
-
}
|
|
103
|
-
return (await backgroundThemePromise).theme;
|
|
69
|
+
return (await detectTerminalBackgroundTheme({ ui, timeoutMs, env })).theme;
|
|
104
70
|
}
|
|
105
71
|
export function getDefaultTheme() {
|
|
106
|
-
return
|
|
72
|
+
return getTerminalTheme();
|
|
107
73
|
}
|
|
108
74
|
//# sourceMappingURL=terminal-detection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-detection.js","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/terminal-detection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"terminal-detection.js","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/terminal-detection.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RgbColor, TerminalColors } from \"@earendil-works/pi-tui\";\nimport { terminalAppearance } from \"./system-theme.js\";\nimport { detectColorFgBgTheme, detectTerminalTheme, getTerminalTheme } from \"./terminal-colors.js\";\n\nexport { detectColorFgBgTheme, detectTerminalTheme, getTerminalTheme } from \"./terminal-colors.js\";\n\nexport type TerminalTheme = \"dark\" | \"light\";\n\nexport function parseAutoThemeSetting(\n\tthemeSetting: string | undefined,\n): { lightTheme: string; darkTheme: string } | undefined {\n\tif (!themeSetting) return undefined;\n\tconst slashIndex = themeSetting.indexOf(\"/\");\n\tif (slashIndex === -1 || themeSetting.indexOf(\"/\", slashIndex + 1) !== -1) {\n\t\treturn undefined;\n\t}\n\n\tconst lightTheme = themeSetting.slice(0, slashIndex).trim();\n\tconst darkTheme = themeSetting.slice(slashIndex + 1).trim();\n\tif (!lightTheme || !darkTheme) {\n\t\treturn undefined;\n\t}\n\treturn { lightTheme, darkTheme };\n}\n\nexport function resolveThemeSetting(\n\tthemeSetting: string | undefined,\n\tterminalTheme: TerminalTheme,\n): string | undefined {\n\tconst autoTheme = parseAutoThemeSetting(themeSetting);\n\tif (autoTheme) {\n\t\treturn terminalTheme === \"light\" ? autoTheme.lightTheme : autoTheme.darkTheme;\n\t}\n\tif (themeSetting?.includes(\"/\")) return undefined;\n\tif (typeof themeSetting === \"string\") return themeSetting;\n\treturn undefined;\n}\n\nexport interface TerminalThemeDetection {\n\ttheme: TerminalTheme;\n\tsource: \"terminal background\" | \"COLORFGBG\" | \"fallback\";\n\tdetail: string;\n\tconfidence: \"high\" | \"low\";\n}\n\nexport interface TerminalThemeDetectionOptions {\n\tenv?: NodeJS.ProcessEnv;\n}\n\nexport interface TerminalBackgroundThemeDetector {\n\tqueryTerminalColors({ timeoutMs }: { timeoutMs: number }): Promise<TerminalColors>;\n}\n\nexport interface TerminalBackgroundThemeDetectionOptions extends TerminalThemeDetectionOptions {\n\tui: TerminalBackgroundThemeDetector;\n\ttimeoutMs: number;\n}\n\nexport interface TerminalAutoThemeDetector extends TerminalBackgroundThemeDetector {}\n\nexport interface TerminalAutoThemeDetectionOptions extends TerminalThemeDetectionOptions {\n\tui: TerminalAutoThemeDetector;\n\ttimeoutMs: number;\n}\n\nexport function getThemeForRgbColor(rgb: RgbColor): TerminalTheme {\n\treturn terminalAppearance(rgb);\n}\n\nexport function detectTerminalBackgroundFromEnv(options: TerminalThemeDetectionOptions = {}): TerminalThemeDetection {\n\tconst env = options.env ?? process.env;\n\tconst bg = detectColorFgBgTheme(env);\n\tif (bg !== undefined) {\n\t\treturn {\n\t\t\ttheme: bg,\n\t\t\tsource: \"COLORFGBG\",\n\t\t\tdetail: `background color index ${env.COLORFGBG?.split(\";\").at(-1)}`,\n\t\t\tconfidence: \"high\",\n\t\t};\n\t}\n\n\treturn {\n\t\ttheme: \"dark\",\n\t\tsource: \"fallback\",\n\t\tdetail: \"no terminal background hint found\",\n\t\tconfidence: \"low\",\n\t};\n}\n\nexport async function detectTerminalBackgroundTheme({\n\tui,\n\ttimeoutMs,\n\tenv,\n}: TerminalBackgroundThemeDetectionOptions): Promise<TerminalThemeDetection> {\n\ttry {\n\t\tconst colors = await ui.queryTerminalColors({ timeoutMs });\n\t\tconst rgb = colors.background;\n\t\tif (rgb) {\n\t\t\treturn {\n\t\t\t\ttheme: detectTerminalTheme(colors, undefined, env),\n\t\t\t\tsource: \"terminal background\",\n\t\t\t\tdetail: `OSC 11 background rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,\n\t\t\t\tconfidence: \"high\",\n\t\t\t};\n\t\t}\n\t} catch {\n\t\t// Fall back to environment-based detection when the terminal query fails.\n\t}\n\n\treturn detectTerminalBackgroundFromEnv({ env });\n}\n\nexport async function detectTerminalThemeForAuto({\n\tui,\n\ttimeoutMs,\n\tenv,\n}: TerminalAutoThemeDetectionOptions): Promise<TerminalTheme> {\n\treturn (await detectTerminalBackgroundTheme({ ui, timeoutMs, env })).theme;\n}\n\nexport function getDefaultTheme(): string {\n\treturn getTerminalTheme();\n}\n"]}
|
|
@@ -24,6 +24,7 @@ export declare class Theme {
|
|
|
24
24
|
sourcePath?: string;
|
|
25
25
|
sourceInfo?: SourceInfo;
|
|
26
26
|
workingIndicator?: Partial<Record<WorkingIndicatorTone, string | number>>;
|
|
27
|
+
dim?: ThemeColor[];
|
|
27
28
|
});
|
|
28
29
|
fg(color: ThemeColor, text: string): string;
|
|
29
30
|
bg(color: ThemeBg, text: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-class.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme-class.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAU,KAAK,SAAS,EAAU,MAAM,kBAAkB,CAAC;AAElE,MAAM,MAAM,UAAU,GACnB,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,aAAa,GACb,SAAS,GACT,OAAO,GACP,SAAS,GACT,OAAO,GACP,KAAK,GACL,MAAM,GACN,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,oBAAoB,GACpB,WAAW,GACX,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,aAAa,GACb,mBAAmB,GACnB,SAAS,GACT,eAAe,GACf,MAAM,GACN,cAAc,GACd,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,mBAAmB,GACnB,aAAa,GACb,iBAAiB,GACjB,aAAa,GACb,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,UAAU,CAAC;AAEd,MAAM,MAAM,OAAO,GAChB,YAAY,GACZ,gBAAgB,GAChB,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,aAAa,CAAC;AAEjB;;;;;GAKG;AACH,KAAK,kBAAkB,GAAG,iBAAiB,CAAC;AAC5C,KAAK,eAAe,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE1D,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5F,qBAAa,KAAK;IACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,sBAAsB,CAAoC;IAElE,YACC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,GACzE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EACrD,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,GACnE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAClD,IAAI,EAAE,SAAS,EACf,OAAO,GAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"theme-class.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export class Theme {
|
|
|
19
19
|
searchMatchText: fgColors.searchMatchText ?? fgColors.text,
|
|
20
20
|
};
|
|
21
21
|
for (const [key, value] of Object.entries(foregrounds)) {
|
|
22
|
-
this.fgColors.set(key, fgAnsi(value, mode));
|
|
22
|
+
this.fgColors.set(key, `${options.dim?.includes(key) ? "\x1b[2m" : ""}${fgAnsi(value, mode)}`);
|
|
23
23
|
}
|
|
24
24
|
this.bgColors = new Map();
|
|
25
25
|
const backgrounds = {
|
|
@@ -39,7 +39,7 @@ export class Theme {
|
|
|
39
39
|
const ansi = this.fgColors.get(color);
|
|
40
40
|
if (!ansi)
|
|
41
41
|
throw new Error(`Unknown theme color: ${color}`);
|
|
42
|
-
return `${ansi}${text}\x1b[39m`; // Reset
|
|
42
|
+
return `${ansi}${text}${ansi.startsWith("\x1b[2m") ? "\x1b[22m" : ""}\x1b[39m`; // Reset foreground and optional faint styling
|
|
43
43
|
}
|
|
44
44
|
bg(color, text) {
|
|
45
45
|
const ansi = this.bgColors.get(color);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-class.js","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme-class.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport type { SourceInfo } from \"../../../core/source-info.ts\";\nimport { bgAnsi, type ColorMode, fgAnsi } from \"./color-utils.ts\";\n\nexport type ThemeColor =\n\t| \"accent\"\n\t| \"border\"\n\t| \"borderAccent\"\n\t| \"borderMuted\"\n\t| \"success\"\n\t| \"error\"\n\t| \"warning\"\n\t| \"muted\"\n\t| \"dim\"\n\t| \"text\"\n\t| \"thinkingText\"\n\t| \"searchMatchText\"\n\t| \"userMessageText\"\n\t| \"customMessageText\"\n\t| \"customMessageLabel\"\n\t| \"toolTitle\"\n\t| \"toolOutput\"\n\t| \"mdHeading\"\n\t| \"mdLink\"\n\t| \"mdLinkUrl\"\n\t| \"mdCode\"\n\t| \"mdCodeBlock\"\n\t| \"mdCodeBlockBorder\"\n\t| \"mdQuote\"\n\t| \"mdQuoteBorder\"\n\t| \"mdHr\"\n\t| \"mdListBullet\"\n\t| \"toolDiffAdded\"\n\t| \"toolDiffRemoved\"\n\t| \"toolDiffContext\"\n\t| \"syntaxComment\"\n\t| \"syntaxKeyword\"\n\t| \"syntaxFunction\"\n\t| \"syntaxVariable\"\n\t| \"syntaxString\"\n\t| \"syntaxNumber\"\n\t| \"syntaxType\"\n\t| \"syntaxOperator\"\n\t| \"syntaxPunctuation\"\n\t| \"thinkingOff\"\n\t| \"thinkingMinimal\"\n\t| \"thinkingLow\"\n\t| \"thinkingMedium\"\n\t| \"thinkingHigh\"\n\t| \"thinkingXhigh\"\n\t| \"bashMode\";\n\nexport type ThemeBg =\n\t| \"selectedBg\"\n\t| \"scrollbarThumb\"\n\t| \"searchMatchBg\"\n\t| \"userMessageBg\"\n\t| \"customMessageBg\"\n\t| \"toolPendingBg\"\n\t| \"toolSuccessBg\"\n\t| \"toolErrorBg\";\n\n/**\n * Colors a theme may omit. Each one resolves from a color every theme already\n * defines, so a theme written before the token existed keeps validating and\n * keeps rendering: `searchMatchText` falls back to `text` and `searchMatchBg`\n * to `selectedBg`.\n */\ntype OptionalThemeColor = \"searchMatchText\";\ntype OptionalThemeBg = \"scrollbarThumb\" | \"searchMatchBg\";\n\nexport type WorkingIndicatorTone = \"dark\" | \"lift\" | \"muted\" | \"accent\" | \"bright\" | \"peak\";\n\nexport class Theme {\n\treadonly name?: string;\n\treadonly sourcePath?: string;\n\tsourceInfo?: SourceInfo;\n\tprivate fgColors: Map<ThemeColor, string>;\n\tprivate bgColors: Map<ThemeBg, string>;\n\tprivate mode: ColorMode;\n\tprivate workingIndicatorColors: Map<WorkingIndicatorTone, string>;\n\n\tconstructor(\n\t\tfgColors: Record<Exclude<ThemeColor, OptionalThemeColor>, string | number> &\n\t\t\tPartial<Record<OptionalThemeColor, string | number>>,\n\t\tbgColors: Record<Exclude<ThemeBg, OptionalThemeBg>, string | number> &\n\t\t\tPartial<Record<OptionalThemeBg, string | number>>,\n\t\tmode: ColorMode,\n\t\toptions: {\n\t\t\tname?: string;\n\t\t\tsourcePath?: string;\n\t\t\tsourceInfo?: SourceInfo;\n\t\t\tworkingIndicator?: Partial<Record<WorkingIndicatorTone, string | number>>;\n\t\t} = {},\n\t) {\n\t\tthis.name = options.name;\n\t\tthis.sourcePath = options.sourcePath;\n\t\tthis.sourceInfo = options.sourceInfo;\n\t\tthis.mode = mode;\n\t\tthis.fgColors = new Map();\n\t\tconst foregrounds = {\n\t\t\t...fgColors,\n\t\t\tsearchMatchText: fgColors.searchMatchText ?? fgColors.text,\n\t\t};\n\t\tfor (const [key, value] of Object.entries(foregrounds) as [ThemeColor, string | number][]) {\n\t\t\tthis.fgColors.set(key, fgAnsi(value, mode));\n\t\t}\n\t\tthis.bgColors = new Map();\n\t\tconst backgrounds = {\n\t\t\t...bgColors,\n\t\t\tscrollbarThumb: bgColors.scrollbarThumb ?? bgColors.selectedBg,\n\t\t\tsearchMatchBg: bgColors.searchMatchBg ?? bgColors.selectedBg,\n\t\t};\n\t\tfor (const [key, value] of Object.entries(backgrounds) as [ThemeBg, string | number][]) {\n\t\t\tthis.bgColors.set(key, bgAnsi(value, mode));\n\t\t}\n\t\tthis.workingIndicatorColors = new Map();\n\t\tfor (const [key, value] of Object.entries(options.workingIndicator ?? {}) as [\n\t\t\tWorkingIndicatorTone,\n\t\t\tstring | number,\n\t\t][]) {\n\t\t\tthis.workingIndicatorColors.set(key, fgAnsi(value, mode));\n\t\t}\n\t}\n\n\tfg(color: ThemeColor, text: string): string {\n\t\tconst ansi = this.fgColors.get(color);\n\t\tif (!ansi) throw new Error(`Unknown theme color: ${color}`);\n\t\treturn `${ansi}${text}\\x1b[39m`; // Reset only foreground color\n\t}\n\n\tbg(color: ThemeBg, text: string): string {\n\t\tconst ansi = this.bgColors.get(color);\n\t\tif (!ansi) throw new Error(`Unknown theme background color: ${color}`);\n\t\t// Truncation and nested components may reset SGR inside a filled row.\n\t\t// Restore the enclosing background before ellipses and trailing padding.\n\t\tconst filled = text.replace(/\\x1b\\[(?:0|49)?m/g, (reset) => reset + ansi);\n\t\treturn `${ansi}${filled}\\x1b[49m`; // Reset only background color\n\t}\n\n\tbold(text: string): string {\n\t\treturn chalk.bold(text);\n\t}\n\n\titalic(text: string): string {\n\t\treturn chalk.italic(text);\n\t}\n\n\tunderline(text: string): string {\n\t\treturn chalk.underline(text);\n\t}\n\n\tinverse(text: string): string {\n\t\treturn chalk.inverse(text);\n\t}\n\n\tstrikethrough(text: string): string {\n\t\treturn chalk.strikethrough(text);\n\t}\n\n\tgetFgAnsi(color: ThemeColor): string {\n\t\tconst ansi = this.fgColors.get(color);\n\t\tif (!ansi) throw new Error(`Unknown theme color: ${color}`);\n\t\treturn ansi;\n\t}\n\n\tgetWorkingIndicatorAnsi(tone: WorkingIndicatorTone): string | undefined {\n\t\treturn this.workingIndicatorColors.get(tone);\n\t}\n\n\tgetBgAnsi(color: ThemeBg): string {\n\t\tconst ansi = this.bgColors.get(color);\n\t\tif (!ansi) throw new Error(`Unknown theme background color: ${color}`);\n\t\treturn ansi;\n\t}\n\n\tgetColorMode(): ColorMode {\n\t\treturn this.mode;\n\t}\n\n\tgetThinkingBorderColor(\n\t\tlevel: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\",\n\t): (str: string) => string {\n\t\t// Map thinking levels to dedicated theme colors\n\t\tswitch (level) {\n\t\t\tcase \"off\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingOff\", str);\n\t\t\tcase \"minimal\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingMinimal\", str);\n\t\t\tcase \"low\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingLow\", str);\n\t\t\tcase \"medium\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingMedium\", str);\n\t\t\tcase \"high\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingHigh\", str);\n\t\t\tcase \"xhigh\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingXhigh\", str);\n\t\t\tcase \"max\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingXhigh\", str);\n\t\t\tdefault:\n\t\t\t\treturn (str: string) => this.fg(\"thinkingOff\", str);\n\t\t}\n\t}\n\n\tgetBashModeBorderColor(): (str: string) => string {\n\t\treturn (str: string) => this.fg(\"bashMode\", str);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"theme-class.js","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme-class.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport type { SourceInfo } from \"../../../core/source-info.ts\";\nimport { bgAnsi, type ColorMode, fgAnsi } from \"./color-utils.ts\";\n\nexport type ThemeColor =\n\t| \"accent\"\n\t| \"border\"\n\t| \"borderAccent\"\n\t| \"borderMuted\"\n\t| \"success\"\n\t| \"error\"\n\t| \"warning\"\n\t| \"muted\"\n\t| \"dim\"\n\t| \"text\"\n\t| \"thinkingText\"\n\t| \"searchMatchText\"\n\t| \"userMessageText\"\n\t| \"customMessageText\"\n\t| \"customMessageLabel\"\n\t| \"toolTitle\"\n\t| \"toolOutput\"\n\t| \"mdHeading\"\n\t| \"mdLink\"\n\t| \"mdLinkUrl\"\n\t| \"mdCode\"\n\t| \"mdCodeBlock\"\n\t| \"mdCodeBlockBorder\"\n\t| \"mdQuote\"\n\t| \"mdQuoteBorder\"\n\t| \"mdHr\"\n\t| \"mdListBullet\"\n\t| \"toolDiffAdded\"\n\t| \"toolDiffRemoved\"\n\t| \"toolDiffContext\"\n\t| \"syntaxComment\"\n\t| \"syntaxKeyword\"\n\t| \"syntaxFunction\"\n\t| \"syntaxVariable\"\n\t| \"syntaxString\"\n\t| \"syntaxNumber\"\n\t| \"syntaxType\"\n\t| \"syntaxOperator\"\n\t| \"syntaxPunctuation\"\n\t| \"thinkingOff\"\n\t| \"thinkingMinimal\"\n\t| \"thinkingLow\"\n\t| \"thinkingMedium\"\n\t| \"thinkingHigh\"\n\t| \"thinkingXhigh\"\n\t| \"bashMode\";\n\nexport type ThemeBg =\n\t| \"selectedBg\"\n\t| \"scrollbarThumb\"\n\t| \"searchMatchBg\"\n\t| \"userMessageBg\"\n\t| \"customMessageBg\"\n\t| \"toolPendingBg\"\n\t| \"toolSuccessBg\"\n\t| \"toolErrorBg\";\n\n/**\n * Colors a theme may omit. Each one resolves from a color every theme already\n * defines, so a theme written before the token existed keeps validating and\n * keeps rendering: `searchMatchText` falls back to `text` and `searchMatchBg`\n * to `selectedBg`.\n */\ntype OptionalThemeColor = \"searchMatchText\";\ntype OptionalThemeBg = \"scrollbarThumb\" | \"searchMatchBg\";\n\nexport type WorkingIndicatorTone = \"dark\" | \"lift\" | \"muted\" | \"accent\" | \"bright\" | \"peak\";\n\nexport class Theme {\n\treadonly name?: string;\n\treadonly sourcePath?: string;\n\tsourceInfo?: SourceInfo;\n\tprivate fgColors: Map<ThemeColor, string>;\n\tprivate bgColors: Map<ThemeBg, string>;\n\tprivate mode: ColorMode;\n\tprivate workingIndicatorColors: Map<WorkingIndicatorTone, string>;\n\n\tconstructor(\n\t\tfgColors: Record<Exclude<ThemeColor, OptionalThemeColor>, string | number> &\n\t\t\tPartial<Record<OptionalThemeColor, string | number>>,\n\t\tbgColors: Record<Exclude<ThemeBg, OptionalThemeBg>, string | number> &\n\t\t\tPartial<Record<OptionalThemeBg, string | number>>,\n\t\tmode: ColorMode,\n\t\toptions: {\n\t\t\tname?: string;\n\t\t\tsourcePath?: string;\n\t\t\tsourceInfo?: SourceInfo;\n\t\t\tworkingIndicator?: Partial<Record<WorkingIndicatorTone, string | number>>;\n\t\t\tdim?: ThemeColor[];\n\t\t} = {},\n\t) {\n\t\tthis.name = options.name;\n\t\tthis.sourcePath = options.sourcePath;\n\t\tthis.sourceInfo = options.sourceInfo;\n\t\tthis.mode = mode;\n\t\tthis.fgColors = new Map();\n\t\tconst foregrounds = {\n\t\t\t...fgColors,\n\t\t\tsearchMatchText: fgColors.searchMatchText ?? fgColors.text,\n\t\t};\n\t\tfor (const [key, value] of Object.entries(foregrounds) as [ThemeColor, string | number][]) {\n\t\t\tthis.fgColors.set(key, `${options.dim?.includes(key) ? \"\\x1b[2m\" : \"\"}${fgAnsi(value, mode)}`);\n\t\t}\n\t\tthis.bgColors = new Map();\n\t\tconst backgrounds = {\n\t\t\t...bgColors,\n\t\t\tscrollbarThumb: bgColors.scrollbarThumb ?? bgColors.selectedBg,\n\t\t\tsearchMatchBg: bgColors.searchMatchBg ?? bgColors.selectedBg,\n\t\t};\n\t\tfor (const [key, value] of Object.entries(backgrounds) as [ThemeBg, string | number][]) {\n\t\t\tthis.bgColors.set(key, bgAnsi(value, mode));\n\t\t}\n\t\tthis.workingIndicatorColors = new Map();\n\t\tfor (const [key, value] of Object.entries(options.workingIndicator ?? {}) as [\n\t\t\tWorkingIndicatorTone,\n\t\t\tstring | number,\n\t\t][]) {\n\t\t\tthis.workingIndicatorColors.set(key, fgAnsi(value, mode));\n\t\t}\n\t}\n\n\tfg(color: ThemeColor, text: string): string {\n\t\tconst ansi = this.fgColors.get(color);\n\t\tif (!ansi) throw new Error(`Unknown theme color: ${color}`);\n\t\treturn `${ansi}${text}${ansi.startsWith(\"\\x1b[2m\") ? \"\\x1b[22m\" : \"\"}\\x1b[39m`; // Reset foreground and optional faint styling\n\t}\n\n\tbg(color: ThemeBg, text: string): string {\n\t\tconst ansi = this.bgColors.get(color);\n\t\tif (!ansi) throw new Error(`Unknown theme background color: ${color}`);\n\t\t// Truncation and nested components may reset SGR inside a filled row.\n\t\t// Restore the enclosing background before ellipses and trailing padding.\n\t\tconst filled = text.replace(/\\x1b\\[(?:0|49)?m/g, (reset) => reset + ansi);\n\t\treturn `${ansi}${filled}\\x1b[49m`; // Reset only background color\n\t}\n\n\tbold(text: string): string {\n\t\treturn chalk.bold(text);\n\t}\n\n\titalic(text: string): string {\n\t\treturn chalk.italic(text);\n\t}\n\n\tunderline(text: string): string {\n\t\treturn chalk.underline(text);\n\t}\n\n\tinverse(text: string): string {\n\t\treturn chalk.inverse(text);\n\t}\n\n\tstrikethrough(text: string): string {\n\t\treturn chalk.strikethrough(text);\n\t}\n\n\tgetFgAnsi(color: ThemeColor): string {\n\t\tconst ansi = this.fgColors.get(color);\n\t\tif (!ansi) throw new Error(`Unknown theme color: ${color}`);\n\t\treturn ansi;\n\t}\n\n\tgetWorkingIndicatorAnsi(tone: WorkingIndicatorTone): string | undefined {\n\t\treturn this.workingIndicatorColors.get(tone);\n\t}\n\n\tgetBgAnsi(color: ThemeBg): string {\n\t\tconst ansi = this.bgColors.get(color);\n\t\tif (!ansi) throw new Error(`Unknown theme background color: ${color}`);\n\t\treturn ansi;\n\t}\n\n\tgetColorMode(): ColorMode {\n\t\treturn this.mode;\n\t}\n\n\tgetThinkingBorderColor(\n\t\tlevel: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\",\n\t): (str: string) => string {\n\t\t// Map thinking levels to dedicated theme colors\n\t\tswitch (level) {\n\t\t\tcase \"off\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingOff\", str);\n\t\t\tcase \"minimal\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingMinimal\", str);\n\t\t\tcase \"low\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingLow\", str);\n\t\t\tcase \"medium\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingMedium\", str);\n\t\t\tcase \"high\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingHigh\", str);\n\t\t\tcase \"xhigh\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingXhigh\", str);\n\t\t\tcase \"max\":\n\t\t\t\treturn (str: string) => this.fg(\"thinkingXhigh\", str);\n\t\t\tdefault:\n\t\t\t\treturn (str: string) => this.fg(\"thinkingOff\", str);\n\t\t}\n\t}\n\n\tgetBashModeBorderColor(): (str: string) => string {\n\t\treturn (str: string) => this.fg(\"bashMode\", str);\n\t}\n}\n"]}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import type { TUI } from "@earendil-works/pi-tui";
|
|
1
|
+
import type { TerminalColors, TUI } from "@earendil-works/pi-tui";
|
|
2
2
|
import type { SettingsManager } from "../../../core/settings-manager.ts";
|
|
3
3
|
import { type TerminalTheme, type Theme } from "./theme.js";
|
|
4
4
|
type ThemeResult = {
|
|
5
5
|
success: boolean;
|
|
6
6
|
error?: string;
|
|
7
7
|
};
|
|
8
|
+
export declare function requestTerminalColors(ui: Pick<TUI, "queryTerminalColors">, apply: (colors: TerminalColors) => void): Promise<void>;
|
|
8
9
|
export declare class InteractiveThemeController {
|
|
9
10
|
private readonly ui;
|
|
10
11
|
private readonly getSettingsManager;
|
|
11
12
|
private readonly showError;
|
|
12
13
|
private readonly onChanged;
|
|
13
14
|
private currentThemeSetting;
|
|
14
|
-
private
|
|
15
|
+
private terminalColors;
|
|
15
16
|
private activeThemeName;
|
|
16
17
|
private autoSyncEnabled;
|
|
17
18
|
private terminalColorSchemeUnsubscribe;
|
|
19
|
+
private terminalColorQuery;
|
|
18
20
|
constructor(ui: TUI, options: {
|
|
19
21
|
getSettingsManager: () => SettingsManager;
|
|
20
22
|
showError: (message: string) => void;
|
|
@@ -22,19 +24,25 @@ export declare class InteractiveThemeController {
|
|
|
22
24
|
initialThemeSetting?: string;
|
|
23
25
|
});
|
|
24
26
|
applyFromSettings(): Promise<void>;
|
|
27
|
+
waitForTerminalColors(): Promise<void>;
|
|
25
28
|
getThemeSelection(): string | undefined;
|
|
26
|
-
setThemeName(
|
|
27
|
-
setThemeSetting(
|
|
28
|
-
setThemeInstance(
|
|
29
|
-
preview(
|
|
29
|
+
setThemeName(name: string, showError?: boolean): ThemeResult;
|
|
30
|
+
setThemeSetting(setting: string): Promise<void>;
|
|
31
|
+
setThemeInstance(instance: Theme): ThemeResult;
|
|
32
|
+
preview(setting: string): void;
|
|
30
33
|
disableAutoSync(): void;
|
|
31
34
|
rebindTui(): void;
|
|
35
|
+
dispose(): void;
|
|
32
36
|
getTerminalTheme(): TerminalTheme;
|
|
37
|
+
private getThemeSetting;
|
|
38
|
+
private resolveThemeName;
|
|
33
39
|
private applyThemeName;
|
|
34
|
-
private
|
|
40
|
+
private queryTerminalColors;
|
|
41
|
+
private applyTerminalColors;
|
|
42
|
+
private reapplyForTerminal;
|
|
35
43
|
private setAutoSync;
|
|
36
44
|
private bindTerminalColorSchemeListener;
|
|
37
|
-
private
|
|
45
|
+
private notifyChanged;
|
|
38
46
|
}
|
|
39
47
|
export {};
|
|
40
48
|
//# sourceMappingURL=theme-controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-controller.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"theme-controller.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,cAAc,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAQzE,OAAO,EAMN,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,MAAM,YAAY,CAAC;AAEpB,KAAK,WAAW,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,wBAAgB,qBAAqB,CACpC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,EACpC,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GACrC,OAAO,CAAC,IAAI,CAAC,CAQf;AAcD,qBAAa,0BAA0B;IACtC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,8BAA8B,CAA2B;IACjE,OAAO,CAAC,kBAAkB,CAAoC;IAC9D,YACC,EAAE,EAAE,GAAG,EACP,OAAO,EAAE;QACR,kBAAkB,EAAE,MAAM,eAAe,CAAC;QAC1C,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,SAAS,EAAE,MAAM,IAAI,CAAC;QACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC7B,EAWD;IACK,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOvC;IACD,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAErC;IACD,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtC;IACD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,WAAW,CAKzD;IACK,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpD;IACD,gBAAgB,CAAC,QAAQ,EAAE,KAAK,GAAG,WAAW,CAM7C;IACD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAM7B;IACD,eAAe,IAAI,IAAI,CAEtB;IACD,SAAS,IAAI,IAAI,CAIhB;IACD,OAAO,IAAI,IAAI,CAId;IACD,gBAAgB,IAAI,aAAa,CAEhC;IACD,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;IAGxB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,mBAAmB;IAG3B,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,+BAA+B;IASvC,OAAO,CAAC,aAAa;CAIrB"}
|