catui-agent 1.0.0-beta.0
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/LICENSE +674 -0
- package/README.md +267 -0
- package/dist/build-meta.json +6 -0
- package/dist/builtin-extensions.d.ts +47 -0
- package/dist/builtin-extensions.js +1 -0
- package/dist/catui-defaults.d.ts +555 -0
- package/dist/catui-defaults.js +22 -0
- package/dist/cli/args.d.ts +70 -0
- package/dist/cli/args.js +158 -0
- package/dist/cli/config-selector.d.ts +10 -0
- package/dist/cli/config-selector.js +1 -0
- package/dist/cli/file-processor.d.ts +11 -0
- package/dist/cli/file-processor.js +6 -0
- package/dist/cli/list-models.d.ts +12 -0
- package/dist/cli/list-models.js +2 -0
- package/dist/cli/session-picker.d.ts +5 -0
- package/dist/cli/session-picker.js +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +2 -0
- package/dist/config.d.ts +103 -0
- package/dist/config.js +1 -0
- package/dist/core/agent-dir/agent-dir-context.d.ts +60 -0
- package/dist/core/agent-dir/agent-dir-context.js +1 -0
- package/dist/core/agent-dir/agent-metadata.d.ts +48 -0
- package/dist/core/agent-dir/agent-metadata.js +1 -0
- package/dist/core/agent-dir/migration-tool.d.ts +40 -0
- package/dist/core/agent-dir/migration-tool.js +7 -0
- package/dist/core/export-html/AGENT.md +12 -0
- package/dist/core/export-html/ansi-to-html.d.ts +9 -0
- package/dist/core/export-html/ansi-to-html.js +2 -0
- package/dist/core/export-html/index.d.ts +39 -0
- package/dist/core/export-html/index.js +2 -0
- package/dist/core/export-html/template.css +971 -0
- package/dist/core/export-html/template.html +54 -0
- package/dist/core/export-html/template.js +66 -0
- package/dist/core/export-html/tool-renderer.d.ts +28 -0
- package/dist/core/export-html/tool-renderer.js +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +4 -0
- package/dist/core/export-html/vendor/marked.min.js +56 -0
- package/dist/core/extensions-host/index.d.ts +13 -0
- package/dist/core/extensions-host/index.js +1 -0
- package/dist/core/extensions-host/loader.d.ts +21 -0
- package/dist/core/extensions-host/loader.js +1 -0
- package/dist/core/extensions-host/runner.d.ts +233 -0
- package/dist/core/extensions-host/runner.js +3 -0
- package/dist/core/extensions-host/types.d.ts +1079 -0
- package/dist/core/extensions-host/types.js +1 -0
- package/dist/core/extensions-host/wrapper.d.ts +29 -0
- package/dist/core/extensions-host/wrapper.js +2 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/index.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop-continuations.d.ts +17 -0
- package/dist/core/lib/agent-core/src/agent-loop-continuations.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop-stream-events.d.ts +19 -0
- package/dist/core/lib/agent-core/src/agent-loop-stream-events.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-results.d.ts +10 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-results.js +3 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-summaries.d.ts +22 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-summaries.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop.d.ts +26 -0
- package/dist/core/lib/agent-core/src/agent-loop.js +4 -0
- package/dist/core/lib/agent-core/src/agent-run-result.d.ts +9 -0
- package/dist/core/lib/agent-core/src/agent-run-result.js +1 -0
- package/dist/core/lib/agent-core/src/agent.d.ts +215 -0
- package/dist/core/lib/agent-core/src/agent.js +1 -0
- package/dist/core/lib/agent-core/src/errors.d.ts +62 -0
- package/dist/core/lib/agent-core/src/errors.js +1 -0
- package/dist/core/lib/agent-core/src/index.d.ts +14 -0
- package/dist/core/lib/agent-core/src/index.js +1 -0
- package/dist/core/lib/agent-core/src/proxy.d.ts +91 -0
- package/dist/core/lib/agent-core/src/proxy.js +2 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-agent-loop.d.ts +15 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-agent-loop.js +2 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-streaming-tool-executor.d.ts +33 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-streaming-tool-executor.js +1 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-tool-orchestration.d.ts +35 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-tool-orchestration.js +3 -0
- package/dist/core/lib/agent-core/src/types.d.ts +417 -0
- package/dist/core/lib/agent-core/src/types.js +1 -0
- package/dist/core/lib/ai/src/api-registry.d.ts +27 -0
- package/dist/core/lib/ai/src/api-registry.js +1 -0
- package/dist/core/lib/ai/src/config-path.d.ts +1 -0
- package/dist/core/lib/ai/src/config-path.js +1 -0
- package/dist/core/lib/ai/src/debug-logger.d.ts +94 -0
- package/dist/core/lib/ai/src/debug-logger.js +4 -0
- package/dist/core/lib/ai/src/env-api-keys.d.ts +8 -0
- package/dist/core/lib/ai/src/env-api-keys.js +1 -0
- package/dist/core/lib/ai/src/env.d.ts +7 -0
- package/dist/core/lib/ai/src/env.js +1 -0
- package/dist/core/lib/ai/src/events.d.ts +8 -0
- package/dist/core/lib/ai/src/events.js +1 -0
- package/dist/core/lib/ai/src/index.d.ts +27 -0
- package/dist/core/lib/ai/src/index.js +1 -0
- package/dist/core/lib/ai/src/json.d.ts +7 -0
- package/dist/core/lib/ai/src/json.js +1 -0
- package/dist/core/lib/ai/src/models.d.ts +31 -0
- package/dist/core/lib/ai/src/models.generated.d.ts +15315 -0
- package/dist/core/lib/ai/src/models.generated.js +1 -0
- package/dist/core/lib/ai/src/models.js +1 -0
- package/dist/core/lib/ai/src/overflow.d.ts +7 -0
- package/dist/core/lib/ai/src/overflow.js +1 -0
- package/dist/core/lib/ai/src/providers/amazon-bedrock.d.ts +20 -0
- package/dist/core/lib/ai/src/providers/amazon-bedrock.js +1 -0
- package/dist/core/lib/ai/src/providers/anthropic.d.ts +38 -0
- package/dist/core/lib/ai/src/providers/anthropic.js +2 -0
- package/dist/core/lib/ai/src/providers/azure-openai-responses.d.ts +21 -0
- package/dist/core/lib/ai/src/providers/azure-openai-responses.js +1 -0
- package/dist/core/lib/ai/src/providers/github-copilot-headers.d.ts +13 -0
- package/dist/core/lib/ai/src/providers/github-copilot-headers.js +1 -0
- package/dist/core/lib/ai/src/providers/google-gemini-cli.d.ts +79 -0
- package/dist/core/lib/ai/src/providers/google-gemini-cli.js +2 -0
- package/dist/core/lib/ai/src/providers/google-shared.d.ts +70 -0
- package/dist/core/lib/ai/src/providers/google-shared.js +2 -0
- package/dist/core/lib/ai/src/providers/google-vertex.d.ts +20 -0
- package/dist/core/lib/ai/src/providers/google-vertex.js +1 -0
- package/dist/core/lib/ai/src/providers/google.d.ts +18 -0
- package/dist/core/lib/ai/src/providers/google.js +1 -0
- package/dist/core/lib/ai/src/providers/openai-codex-responses.d.ts +8 -0
- package/dist/core/lib/ai/src/providers/openai-codex-responses.js +7 -0
- package/dist/core/lib/ai/src/providers/openai-completions.d.ts +20 -0
- package/dist/core/lib/ai/src/providers/openai-completions.js +6 -0
- package/dist/core/lib/ai/src/providers/openai-responses-shared.d.ts +22 -0
- package/dist/core/lib/ai/src/providers/openai-responses-shared.js +10 -0
- package/dist/core/lib/ai/src/providers/openai-responses.d.ts +19 -0
- package/dist/core/lib/ai/src/providers/openai-responses.js +1 -0
- package/dist/core/lib/ai/src/providers/register-builtins.d.ts +8 -0
- package/dist/core/lib/ai/src/providers/register-builtins.js +1 -0
- package/dist/core/lib/ai/src/providers/simple-options.d.ts +13 -0
- package/dist/core/lib/ai/src/providers/simple-options.js +1 -0
- package/dist/core/lib/ai/src/providers/transform-messages.d.ts +13 -0
- package/dist/core/lib/ai/src/providers/transform-messages.js +1 -0
- package/dist/core/lib/ai/src/registry.d.ts +8 -0
- package/dist/core/lib/ai/src/registry.js +1 -0
- package/dist/core/lib/ai/src/schema.d.ts +10 -0
- package/dist/core/lib/ai/src/schema.js +1 -0
- package/dist/core/lib/ai/src/stream.d.ts +33 -0
- package/dist/core/lib/ai/src/stream.js +1 -0
- package/dist/core/lib/ai/src/types.d.ts +331 -0
- package/dist/core/lib/ai/src/types.js +0 -0
- package/dist/core/lib/ai/src/utils/event-stream-types.d.ts +12 -0
- package/dist/core/lib/ai/src/utils/event-stream-types.js +0 -0
- package/dist/core/lib/ai/src/utils/event-stream.d.ts +31 -0
- package/dist/core/lib/ai/src/utils/event-stream.js +1 -0
- package/dist/core/lib/ai/src/utils/http-proxy.d.ts +13 -0
- package/dist/core/lib/ai/src/utils/http-proxy.js +1 -0
- package/dist/core/lib/ai/src/utils/json-parse.d.ts +14 -0
- package/dist/core/lib/ai/src/utils/json-parse.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/anthropic.d.ts +22 -0
- package/dist/core/lib/ai/src/utils/oauth/anthropic.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/decode-credential.d.ts +12 -0
- package/dist/core/lib/ai/src/utils/oauth/decode-credential.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/github-copilot.d.ts +35 -0
- package/dist/core/lib/ai/src/utils/oauth/github-copilot.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/google-antigravity.d.ts +31 -0
- package/dist/core/lib/ai/src/utils/oauth/google-antigravity.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/google-gemini-cli.d.ts +31 -0
- package/dist/core/lib/ai/src/utils/oauth/google-gemini-cli.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/index.d.ts +60 -0
- package/dist/core/lib/ai/src/utils/oauth/index.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/openai-codex.d.ts +39 -0
- package/dist/core/lib/ai/src/utils/oauth/openai-codex.js +11 -0
- package/dist/core/lib/ai/src/utils/oauth/pkce.d.ts +18 -0
- package/dist/core/lib/ai/src/utils/oauth/pkce.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/types.d.ts +52 -0
- package/dist/core/lib/ai/src/utils/oauth/types.js +0 -0
- package/dist/core/lib/ai/src/utils/overflow.d.ts +57 -0
- package/dist/core/lib/ai/src/utils/overflow.js +1 -0
- package/dist/core/lib/ai/src/utils/sanitize-unicode.d.ts +16 -0
- package/dist/core/lib/ai/src/utils/sanitize-unicode.js +1 -0
- package/dist/core/lib/ai/src/utils/typebox-helpers.d.ts +22 -0
- package/dist/core/lib/ai/src/utils/typebox-helpers.js +1 -0
- package/dist/core/lib/ai/src/utils/validation.d.ts +23 -0
- package/dist/core/lib/ai/src/utils/validation.js +6 -0
- package/dist/core/lib/tui/src/autocomplete.d.ts +62 -0
- package/dist/core/lib/tui/src/autocomplete.js +2 -0
- package/dist/core/lib/tui/src/components/box.d.ts +27 -0
- package/dist/core/lib/tui/src/components/box.js +1 -0
- package/dist/core/lib/tui/src/components/cached-container.d.ts +42 -0
- package/dist/core/lib/tui/src/components/cached-container.js +1 -0
- package/dist/core/lib/tui/src/components/cancellable-loader.d.ts +27 -0
- package/dist/core/lib/tui/src/components/cancellable-loader.js +1 -0
- package/dist/core/lib/tui/src/components/editor.d.ts +222 -0
- package/dist/core/lib/tui/src/components/editor.js +21 -0
- package/dist/core/lib/tui/src/components/image.d.ts +33 -0
- package/dist/core/lib/tui/src/components/image.js +1 -0
- package/dist/core/lib/tui/src/components/input.d.ts +42 -0
- package/dist/core/lib/tui/src/components/input.js +2 -0
- package/dist/core/lib/tui/src/components/loader.d.ts +26 -0
- package/dist/core/lib/tui/src/components/loader.js +1 -0
- package/dist/core/lib/tui/src/components/markdown.d.ts +100 -0
- package/dist/core/lib/tui/src/components/markdown.js +7 -0
- package/dist/core/lib/tui/src/components/select-list.d.ts +37 -0
- package/dist/core/lib/tui/src/components/select-list.js +1 -0
- package/dist/core/lib/tui/src/components/settings-list.d.ts +55 -0
- package/dist/core/lib/tui/src/components/settings-list.js +1 -0
- package/dist/core/lib/tui/src/components/spacer.d.ts +17 -0
- package/dist/core/lib/tui/src/components/spacer.js +1 -0
- package/dist/core/lib/tui/src/components/text.d.ts +24 -0
- package/dist/core/lib/tui/src/components/text.js +1 -0
- package/dist/core/lib/tui/src/components/truncated-text.d.ts +18 -0
- package/dist/core/lib/tui/src/components/truncated-text.js +2 -0
- package/dist/core/lib/tui/src/editor-component.d.ts +51 -0
- package/dist/core/lib/tui/src/editor-component.js +0 -0
- package/dist/core/lib/tui/src/fuzzy.d.ts +32 -0
- package/dist/core/lib/tui/src/fuzzy.js +1 -0
- package/dist/core/lib/tui/src/index.d.ts +29 -0
- package/dist/core/lib/tui/src/index.js +1 -0
- package/dist/core/lib/tui/src/keybindings.d.ts +44 -0
- package/dist/core/lib/tui/src/keybindings.js +1 -0
- package/dist/core/lib/tui/src/keys.d.ts +149 -0
- package/dist/core/lib/tui/src/keys.js +5 -0
- package/dist/core/lib/tui/src/kill-ring.d.ts +33 -0
- package/dist/core/lib/tui/src/kill-ring.js +1 -0
- package/dist/core/lib/tui/src/stdin-buffer.d.ts +38 -0
- package/dist/core/lib/tui/src/stdin-buffer.js +1 -0
- package/dist/core/lib/tui/src/terminal-image.d.ts +73 -0
- package/dist/core/lib/tui/src/terminal-image.js +1 -0
- package/dist/core/lib/tui/src/terminal.d.ts +86 -0
- package/dist/core/lib/tui/src/terminal.js +1 -0
- package/dist/core/lib/tui/src/tui.d.ts +220 -0
- package/dist/core/lib/tui/src/tui.js +12 -0
- package/dist/core/lib/tui/src/undo-stack.d.ts +22 -0
- package/dist/core/lib/tui/src/undo-stack.js +1 -0
- package/dist/core/lib/tui/src/utils.d.ts +83 -0
- package/dist/core/lib/tui/src/utils.js +2 -0
- package/dist/core/mcp/figma-auth.d.ts +21 -0
- package/dist/core/mcp/figma-auth.js +22 -0
- package/dist/core/mcp/index.d.ts +11 -0
- package/dist/core/mcp/index.js +1 -0
- package/dist/core/mcp/mcp-adapter.d.ts +21 -0
- package/dist/core/mcp/mcp-adapter.js +3 -0
- package/dist/core/mcp/mcp-client.d.ts +91 -0
- package/dist/core/mcp/mcp-client.js +6 -0
- package/dist/core/mcp/mcp-config.d.ts +55 -0
- package/dist/core/mcp/mcp-config.js +1 -0
- package/dist/core/mcp/mcp-guidance.d.ts +52 -0
- package/dist/core/mcp/mcp-guidance.js +54 -0
- package/dist/core/mcp/mcp-manager.d.ts +51 -0
- package/dist/core/mcp/mcp-manager.js +1 -0
- package/dist/core/mcp/mcp-types.d.ts +62 -0
- package/dist/core/mcp/mcp-types.js +0 -0
- package/dist/core/messages.d.ts +77 -0
- package/dist/core/messages.js +17 -0
- package/dist/core/model/custom-providers.d.ts +34 -0
- package/dist/core/model/custom-providers.js +1 -0
- package/dist/core/model/discovery-cache.d.ts +65 -0
- package/dist/core/model/discovery-cache.js +1 -0
- package/dist/core/model/discovery-cache.test.d.ts +7 -0
- package/dist/core/model/discovery-cache.test.js +1 -0
- package/dist/core/model/discovery.d.ts +79 -0
- package/dist/core/model/discovery.js +1 -0
- package/dist/core/model/discovery.test.d.ts +7 -0
- package/dist/core/model/discovery.test.js +1 -0
- package/dist/core/model/index.d.ts +10 -0
- package/dist/core/model/index.js +1 -0
- package/dist/core/model/known-models.d.ts +65 -0
- package/dist/core/model/known-models.generated.d.ts +2 -0
- package/dist/core/model/known-models.generated.js +1 -0
- package/dist/core/model/known-models.js +1 -0
- package/dist/core/model/switcher.d.ts +80 -0
- package/dist/core/model/switcher.js +1 -0
- package/dist/core/model-registry.d.ts +186 -0
- package/dist/core/model-registry.js +9 -0
- package/dist/core/model-resolver.d.ts +106 -0
- package/dist/core/model-resolver.js +1 -0
- package/dist/core/package-manager.d.ts +156 -0
- package/dist/core/package-manager.js +3 -0
- package/dist/core/persona/persona-manager.d.ts +35 -0
- package/dist/core/persona/persona-manager.js +5 -0
- package/dist/core/platform/abort-slot.d.ts +26 -0
- package/dist/core/platform/abort-slot.js +1 -0
- package/dist/core/platform/config/auth-storage.d.ts +126 -0
- package/dist/core/platform/config/auth-storage.js +1 -0
- package/dist/core/platform/config/defaults.d.ts +8 -0
- package/dist/core/platform/config/defaults.js +1 -0
- package/dist/core/platform/config/diagnostics.d.ts +20 -0
- package/dist/core/platform/config/diagnostics.js +0 -0
- package/dist/core/platform/config/resolve-config-value.d.ts +12 -0
- package/dist/core/platform/config/resolve-config-value.js +1 -0
- package/dist/core/platform/config/resource-loader.d.ts +188 -0
- package/dist/core/platform/config/resource-loader.js +2 -0
- package/dist/core/platform/config/settings-manager.d.ts +314 -0
- package/dist/core/platform/config/settings-manager.js +1 -0
- package/dist/core/platform/exec/bash-executor.d.ts +41 -0
- package/dist/core/platform/exec/bash-executor.js +1 -0
- package/dist/core/platform/exec/exec.d.ts +25 -0
- package/dist/core/platform/exec/exec.js +1 -0
- package/dist/core/platform/i18n/index.d.ts +26 -0
- package/dist/core/platform/i18n/index.js +1 -0
- package/dist/core/platform/i18n/messages.d.ts +56 -0
- package/dist/core/platform/i18n/messages.js +1 -0
- package/dist/core/platform/i18n/messages.zh.d.ts +56 -0
- package/dist/core/platform/i18n/messages.zh.js +1 -0
- package/dist/core/platform/i18n/slash-commands.d.ts +53 -0
- package/dist/core/platform/i18n/slash-commands.js +1 -0
- package/dist/core/platform/i18n/slash-commands.zh.d.ts +53 -0
- package/dist/core/platform/i18n/slash-commands.zh.js +1 -0
- package/dist/core/platform/i18n/themes.d.ts +11 -0
- package/dist/core/platform/i18n/themes.js +1 -0
- package/dist/core/platform/i18n/themes.zh.d.ts +11 -0
- package/dist/core/platform/i18n/themes.zh.js +1 -0
- package/dist/core/platform/keybindings.d.ts +61 -0
- package/dist/core/platform/keybindings.js +1 -0
- package/dist/core/platform/listeners.d.ts +21 -0
- package/dist/core/platform/listeners.js +1 -0
- package/dist/core/platform/telemetry/batching-dispatcher.d.ts +41 -0
- package/dist/core/platform/telemetry/batching-dispatcher.js +1 -0
- package/dist/core/platform/telemetry/build-meta.d.ts +12 -0
- package/dist/core/platform/telemetry/build-meta.js +1 -0
- package/dist/core/platform/telemetry/caller-context.d.ts +32 -0
- package/dist/core/platform/telemetry/caller-context.js +1 -0
- package/dist/core/platform/telemetry/credentials.d.ts +27 -0
- package/dist/core/platform/telemetry/credentials.js +1 -0
- package/dist/core/platform/telemetry/ext-events.d.ts +89 -0
- package/dist/core/platform/telemetry/ext-events.js +1 -0
- package/dist/core/platform/telemetry/index.d.ts +13 -0
- package/dist/core/platform/telemetry/index.js +1 -0
- package/dist/core/platform/telemetry/insforge-base.d.ts +37 -0
- package/dist/core/platform/telemetry/insforge-base.js +1 -0
- package/dist/core/platform/telemetry/types.d.ts +33 -0
- package/dist/core/platform/telemetry/types.js +0 -0
- package/dist/core/platform/timings.d.ts +2 -0
- package/dist/core/platform/timings.js +3 -0
- package/dist/core/platform/utils/logger.d.ts +75 -0
- package/dist/core/platform/utils/logger.js +1 -0
- package/dist/core/platform/utils/shell.d.ts +25 -0
- package/dist/core/platform/utils/shell.js +9 -0
- package/dist/core/platform/utils/sleep.d.ts +7 -0
- package/dist/core/platform/utils/sleep.js +1 -0
- package/dist/core/platform/utils/tools-manager.d.ts +19 -0
- package/dist/core/platform/utils/tools-manager.js +1 -0
- package/dist/core/prompt/prompt-templates.d.ts +49 -0
- package/dist/core/prompt/prompt-templates.js +2 -0
- package/dist/core/prompt/system-prompt.d.ts +24 -0
- package/dist/core/prompt/system-prompt.js +139 -0
- package/dist/core/runtime/agent-session.d.ts +676 -0
- package/dist/core/runtime/agent-session.js +15 -0
- package/dist/core/runtime/bash-runner.d.ts +56 -0
- package/dist/core/runtime/bash-runner.js +2 -0
- package/dist/core/runtime/catui-agent.d.ts +182 -0
- package/dist/core/runtime/catui-agent.js +1 -0
- package/dist/core/runtime/compaction-controller.d.ts +43 -0
- package/dist/core/runtime/compaction-controller.js +1 -0
- package/dist/core/runtime/default-tools.d.ts +9 -0
- package/dist/core/runtime/default-tools.js +1 -0
- package/dist/core/runtime/event-bridge.d.ts +21 -0
- package/dist/core/runtime/event-bridge.js +1 -0
- package/dist/core/runtime/event-bus.d.ts +8 -0
- package/dist/core/runtime/event-bus.js +1 -0
- package/dist/core/runtime/export-bridge.d.ts +23 -0
- package/dist/core/runtime/export-bridge.js +1 -0
- package/dist/core/runtime/extension-core-bindings.d.ts +46 -0
- package/dist/core/runtime/extension-core-bindings.js +3 -0
- package/dist/core/runtime/model-controller.d.ts +84 -0
- package/dist/core/runtime/model-controller.js +1 -0
- package/dist/core/runtime/model-cycle.d.ts +20 -0
- package/dist/core/runtime/model-cycle.js +1 -0
- package/dist/core/runtime/prompt-assembly.d.ts +20 -0
- package/dist/core/runtime/prompt-assembly.js +3 -0
- package/dist/core/runtime/retry-coordinator.d.ts +84 -0
- package/dist/core/runtime/retry-coordinator.js +1 -0
- package/dist/core/runtime/sdk.d.ts +163 -0
- package/dist/core/runtime/sdk.js +1 -0
- package/dist/core/runtime/session-context.d.ts +155 -0
- package/dist/core/runtime/session-context.js +0 -0
- package/dist/core/runtime/session-lifecycle-controller.d.ts +42 -0
- package/dist/core/runtime/session-lifecycle-controller.js +1 -0
- package/dist/core/runtime/session-tree-controller.d.ts +40 -0
- package/dist/core/runtime/session-tree-controller.js +1 -0
- package/dist/core/runtime/slash-command-catalog.d.ts +27 -0
- package/dist/core/runtime/slash-command-catalog.js +1 -0
- package/dist/core/runtime/thinking-levels.d.ts +31 -0
- package/dist/core/runtime/thinking-levels.js +1 -0
- package/dist/core/runtime/tool-runtime-controller.d.ts +35 -0
- package/dist/core/runtime/tool-runtime-controller.js +1 -0
- package/dist/core/runtime/turn-context.d.ts +52 -0
- package/dist/core/runtime/turn-context.js +1 -0
- package/dist/core/session/compaction/branch-summarization.d.ts +85 -0
- package/dist/core/session/compaction/branch-summarization.js +38 -0
- package/dist/core/session/compaction/compaction.d.ts +120 -0
- package/dist/core/session/compaction/compaction.js +104 -0
- package/dist/core/session/compaction/index.d.ts +9 -0
- package/dist/core/session/compaction/index.js +1 -0
- package/dist/core/session/compaction/utils.d.ts +37 -0
- package/dist/core/session/compaction/utils.js +17 -0
- package/dist/core/session/session-manager.d.ts +359 -0
- package/dist/core/session/session-manager.js +14 -0
- package/dist/core/skills.d.ts +57 -0
- package/dist/core/skills.js +4 -0
- package/dist/core/slash-commands.d.ts +36 -0
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/soul-integration.d.ts +77 -0
- package/dist/core/soul-integration.js +1 -0
- package/dist/core/soul-options-contract.d.ts +10 -0
- package/dist/core/soul-options-contract.js +0 -0
- package/dist/core/sub-agent/agent-definition-loader.d.ts +96 -0
- package/dist/core/sub-agent/agent-definition-loader.js +2 -0
- package/dist/core/sub-agent/agent-definition.d.ts +162 -0
- package/dist/core/sub-agent/agent-definition.js +6 -0
- package/dist/core/sub-agent/agent-handoff-safety.d.ts +39 -0
- package/dist/core/sub-agent/agent-handoff-safety.js +1 -0
- package/dist/core/sub-agent/agent-input-output.d.ts +143 -0
- package/dist/core/sub-agent/agent-input-output.js +1 -0
- package/dist/core/sub-agent/agent-output-persistence.d.ts +43 -0
- package/dist/core/sub-agent/agent-output-persistence.js +3 -0
- package/dist/core/sub-agent/agent-prompt-builder.d.ts +37 -0
- package/dist/core/sub-agent/agent-prompt-builder.js +2 -0
- package/dist/core/sub-agent/agent-registry.d.ts +145 -0
- package/dist/core/sub-agent/agent-registry.js +1 -0
- package/dist/core/sub-agent/agent-result-extractor.d.ts +28 -0
- package/dist/core/sub-agent/agent-result-extractor.js +3 -0
- package/dist/core/sub-agent/agent-telemetry.d.ts +71 -0
- package/dist/core/sub-agent/agent-telemetry.js +1 -0
- package/dist/core/sub-agent/agent-tool-filter.d.ts +89 -0
- package/dist/core/sub-agent/agent-tool-filter.js +2 -0
- package/dist/core/sub-agent/agent-tool.d.ts +69 -0
- package/dist/core/sub-agent/agent-tool.js +11 -0
- package/dist/core/sub-agent/index.d.ts +26 -0
- package/dist/core/sub-agent/index.js +1 -0
- package/dist/core/sub-agent/send-message-tool.d.ts +33 -0
- package/dist/core/sub-agent/send-message-tool.js +2 -0
- package/dist/core/sub-agent/sub-agent-backend.d.ts +26 -0
- package/dist/core/sub-agent/sub-agent-backend.js +7 -0
- package/dist/core/sub-agent/sub-agent-runtime.d.ts +34 -0
- package/dist/core/sub-agent/sub-agent-runtime.js +1 -0
- package/dist/core/sub-agent/sub-agent-types.d.ts +138 -0
- package/dist/core/sub-agent/sub-agent-types.js +0 -0
- package/dist/core/sub-agent/subprocess-backend.d.ts +35 -0
- package/dist/core/sub-agent/subprocess-backend.js +1 -0
- package/dist/core/sub-agent/subprocess-worker.d.ts +12 -0
- package/dist/core/sub-agent/subprocess-worker.js +1 -0
- package/dist/core/theme-contract.d.ts +32 -0
- package/dist/core/theme-contract.js +0 -0
- package/dist/core/tools/bash.d.ts +73 -0
- package/dist/core/tools/bash.js +21 -0
- package/dist/core/tools/edit-diff.d.ts +58 -0
- package/dist/core/tools/edit-diff.js +16 -0
- package/dist/core/tools/edit.d.ts +46 -0
- package/dist/core/tools/edit.js +1 -0
- package/dist/core/tools/file-state-cache.d.ts +30 -0
- package/dist/core/tools/file-state-cache.js +1 -0
- package/dist/core/tools/find.d.ts +46 -0
- package/dist/core/tools/find.js +8 -0
- package/dist/core/tools/grep.d.ts +58 -0
- package/dist/core/tools/grep.js +13 -0
- package/dist/core/tools/index.d.ts +116 -0
- package/dist/core/tools/index.js +1 -0
- package/dist/core/tools/input-validation.d.ts +13 -0
- package/dist/core/tools/input-validation.js +1 -0
- package/dist/core/tools/ls.d.ts +45 -0
- package/dist/core/tools/ls.js +4 -0
- package/dist/core/tools/orchestrator.d.ts +76 -0
- package/dist/core/tools/orchestrator.js +1 -0
- package/dist/core/tools/path-utils.d.ts +7 -0
- package/dist/core/tools/path-utils.js +1 -0
- package/dist/core/tools/pdf-extract.d.ts +11 -0
- package/dist/core/tools/pdf-extract.js +1 -0
- package/dist/core/tools/read.d.ts +46 -0
- package/dist/core/tools/read.js +11 -0
- package/dist/core/tools/source.d.ts +78 -0
- package/dist/core/tools/source.js +1 -0
- package/dist/core/tools/time.d.ts +19 -0
- package/dist/core/tools/time.js +2 -0
- package/dist/core/tools/truncate.d.ts +66 -0
- package/dist/core/tools/truncate.js +5 -0
- package/dist/core/tools/write-guard.d.ts +2 -0
- package/dist/core/tools/write-guard.js +1 -0
- package/dist/core/tools/write.d.ts +36 -0
- package/dist/core/tools/write.js +1 -0
- package/dist/core/workspace/index.d.ts +8 -0
- package/dist/core/workspace/index.js +1 -0
- package/dist/core/workspace/worktree-manager.d.ts +73 -0
- package/dist/core/workspace/worktree-manager.js +3 -0
- package/dist/extensions/builtin/AGENT.md +115 -0
- package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.d.ts +9 -0
- package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.js +4 -0
- package/dist/extensions/builtin/ask-user-question/index.d.ts +8 -0
- package/dist/extensions/builtin/ask-user-question/index.js +1 -0
- package/dist/extensions/builtin/ask-user-question/prompt.d.ts +14 -0
- package/dist/extensions/builtin/ask-user-question/prompt.js +30 -0
- package/dist/extensions/builtin/ask-user-question/types.d.ts +69 -0
- package/dist/extensions/builtin/ask-user-question/types.js +1 -0
- package/dist/extensions/builtin/browser/AGENT.md +17 -0
- package/dist/extensions/builtin/browser/agent-workspace/agent_helpers.py +12 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/amazon/product-search.md +198 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/archive-org/scraping.md +341 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv/scraping.md +311 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv-bulk/scraping.md +333 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/atlas/overview.md +70 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/booking-com/scraping.md +578 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/capterra/scraping.md +440 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/centilebrain/generate-estimates.md +110 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coingecko/scraping.md +325 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coinmarketcap/scraping.md +463 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coursera/scraping.md +360 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/craigslist/scraping.md +390 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/crossref/scraping.md +568 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/dev-to/scraping.md +323 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/duckduckgo/scraping.md +349 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/ebay/scraping.md +435 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/etsy/scraping.md +506 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/eventbrite/scraping.md +363 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/expedia/automation.md +168 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/groups.md +236 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/pages.md +295 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/framer/editor.md +108 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/fred/scraping.md +493 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/g2/scraping.md +580 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/genius/scraping.md +511 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/repo-actions.md +65 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/scraping.md +184 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/glassdoor/scraping.md +543 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gmail/compose.md +122 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/goodreads/scraping.md +461 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gutenberg/scraping.md +383 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/hackernews/scraping.md +243 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/howlongtobeat/scraping.md +473 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/imdb/scraping.md +271 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/itch-io/scraping.md +436 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/job-boards/indeed-glassdoor.md +1021 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/letterboxd/scraping.md +349 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/linkedin/invitation-manager.md +109 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/loom/folder-enumeration.md +170 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/macrotrends/scraping.md +537 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/article-hydration.md +120 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/scraping.md +414 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/metacritic/scraping.md +477 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/musicbrainz/scraping.md +478 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/nasa/scraping.md +339 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/news-aggregation/multi-source.md +205 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/open-library/scraping.md +472 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openalex/scraping.md +470 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openstreetmap/scraping.md +490 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/package-registries/npm-pypi.md +478 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/polymarket/scraping.md +234 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/producthunt/scraping.md +307 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/pubmed/scraping.md +421 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/quora/scraping.md +364 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rawg/scraping.md +352 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/reddit/scraping.md +124 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rest-countries/scraping.md +233 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/sec-edgar/scraping.md +361 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/README.md +36 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/embedded-apps.md +72 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/knowledge-base.md +109 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/polaris-inputs.md +137 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/soundcloud/scraping.md +362 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/spotify/scraping.md +339 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/stackoverflow/scraping.md +435 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/steam/scraping.md +575 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/substack/scraping.md +338 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/thetechgeeks/pricing.md +52 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tiktok/upload.md +107 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tradingview/scraping.md +309 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trello/boards-and-lists.md +88 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trustpilot/scraping.md +375 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/walmart/scraping.md +444 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wayback-machine/scraping.md +306 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/weather/scraping.md +398 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wellfound/scraping.md +596 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/world-bank/scraping.md +356 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/xiaohongshu/scraping.md +84 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/youtube/scraping.md +418 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/zillow/scraping.md +433 -0
- package/dist/extensions/builtin/browser/browser.md +73 -0
- package/dist/extensions/builtin/browser/index.d.ts +8 -0
- package/dist/extensions/builtin/browser/index.js +15 -0
- package/dist/extensions/builtin/browser/install.md +142 -0
- package/dist/extensions/builtin/browser/interaction-skills/connection.md +48 -0
- package/dist/extensions/builtin/browser/interaction-skills/cookies.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/cross-origin-iframes.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/dialogs.md +64 -0
- package/dist/extensions/builtin/browser/interaction-skills/downloads.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/drag-and-drop.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/dropdowns.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/iframes.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/network-requests.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/print-as-pdf.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/profile-sync.md +90 -0
- package/dist/extensions/builtin/browser/interaction-skills/screenshots.md +17 -0
- package/dist/extensions/builtin/browser/interaction-skills/scrolling.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/shadow-dom.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/tabs.md +69 -0
- package/dist/extensions/builtin/browser/interaction-skills/uploads.md +1 -0
- package/dist/extensions/builtin/browser/interaction-skills/viewport.md +3 -0
- package/dist/extensions/builtin/browser/src/browser_harness/AGENT.md +15 -0
- package/dist/extensions/builtin/browser/src/browser_harness/__init__.py +8 -0
- package/dist/extensions/builtin/browser/src/browser_harness/_ipc.py +90 -0
- package/dist/extensions/builtin/browser/src/browser_harness/admin.py +722 -0
- package/dist/extensions/builtin/browser/src/browser_harness/daemon.py +328 -0
- package/dist/extensions/builtin/browser/src/browser_harness/helpers.py +396 -0
- package/dist/extensions/builtin/browser/src/browser_harness/run.py +103 -0
- package/dist/extensions/builtin/btw/index.d.ts +8 -0
- package/dist/extensions/builtin/btw/index.js +15 -0
- package/dist/extensions/builtin/debug/collectors.d.ts +96 -0
- package/dist/extensions/builtin/debug/collectors.js +7 -0
- package/dist/extensions/builtin/debug/index.d.ts +8 -0
- package/dist/extensions/builtin/debug/index.js +49 -0
- package/dist/extensions/builtin/diagnostics/diagnostic-buffer.d.ts +19 -0
- package/dist/extensions/builtin/diagnostics/diagnostic-buffer.js +1 -0
- package/dist/extensions/builtin/diagnostics/index.d.ts +8 -0
- package/dist/extensions/builtin/diagnostics/index.js +1 -0
- package/dist/extensions/builtin/diagnostics/redaction.d.ts +8 -0
- package/dist/extensions/builtin/diagnostics/redaction.js +1 -0
- package/dist/extensions/builtin/diagnostics/reporter.d.ts +17 -0
- package/dist/extensions/builtin/diagnostics/reporter.js +1 -0
- package/dist/extensions/builtin/diagnostics/types.d.ts +62 -0
- package/dist/extensions/builtin/diagnostics/types.js +1 -0
- package/dist/extensions/builtin/discipline/index.d.ts +8 -0
- package/dist/extensions/builtin/discipline/index.js +7 -0
- package/dist/extensions/builtin/discipline/skills/brainstorming/SKILL.md +33 -0
- package/dist/extensions/builtin/discipline/skills/executing-plans/SKILL.md +25 -0
- package/dist/extensions/builtin/discipline/skills/finishing-development-branch/SKILL.md +25 -0
- package/dist/extensions/builtin/discipline/skills/receiving-code-review/SKILL.md +22 -0
- package/dist/extensions/builtin/discipline/skills/requesting-code-review/SKILL.md +31 -0
- package/dist/extensions/builtin/discipline/skills/systematic-debugging/SKILL.md +28 -0
- package/dist/extensions/builtin/discipline/skills/test-driven-development/SKILL.md +32 -0
- package/dist/extensions/builtin/discipline/skills/using-git-worktrees/SKILL.md +25 -0
- package/dist/extensions/builtin/discipline/skills/verification-before-completion/SKILL.md +27 -0
- package/dist/extensions/builtin/discipline/skills/writing-plans/SKILL.md +26 -0
- package/dist/extensions/builtin/goal/README.md +67 -0
- package/dist/extensions/builtin/goal/goal-command.d.ts +13 -0
- package/dist/extensions/builtin/goal/goal-command.js +9 -0
- package/dist/extensions/builtin/goal/goal-controller.d.ts +143 -0
- package/dist/extensions/builtin/goal/goal-controller.js +1 -0
- package/dist/extensions/builtin/goal/goal-format.d.ts +52 -0
- package/dist/extensions/builtin/goal/goal-format.js +1 -0
- package/dist/extensions/builtin/goal/goal-parser.d.ts +27 -0
- package/dist/extensions/builtin/goal/goal-parser.js +2 -0
- package/dist/extensions/builtin/goal/goal-prompts.d.ts +15 -0
- package/dist/extensions/builtin/goal/goal-prompts.js +5 -0
- package/dist/extensions/builtin/goal/goal-store.d.ts +28 -0
- package/dist/extensions/builtin/goal/goal-store.js +1 -0
- package/dist/extensions/builtin/goal/goal-tools.d.ts +26 -0
- package/dist/extensions/builtin/goal/goal-tools.js +3 -0
- package/dist/extensions/builtin/goal/goal-types.d.ts +87 -0
- package/dist/extensions/builtin/goal/goal-types.js +1 -0
- package/dist/extensions/builtin/goal/index.d.ts +8 -0
- package/dist/extensions/builtin/goal/index.js +10 -0
- package/dist/extensions/builtin/grub/README.md +112 -0
- package/dist/extensions/builtin/grub/grub-controller.d.ts +67 -0
- package/dist/extensions/builtin/grub/grub-controller.js +1 -0
- package/dist/extensions/builtin/grub/grub-decision.d.ts +8 -0
- package/dist/extensions/builtin/grub/grub-decision.js +1 -0
- package/dist/extensions/builtin/grub/grub-feature-list.d.ts +54 -0
- package/dist/extensions/builtin/grub/grub-feature-list.js +2 -0
- package/dist/extensions/builtin/grub/grub-format.d.ts +13 -0
- package/dist/extensions/builtin/grub/grub-format.js +4 -0
- package/dist/extensions/builtin/grub/grub-harness.d.ts +9 -0
- package/dist/extensions/builtin/grub/grub-harness.js +3 -0
- package/dist/extensions/builtin/grub/grub-i18n.d.ts +166 -0
- package/dist/extensions/builtin/grub/grub-i18n.js +1 -0
- package/dist/extensions/builtin/grub/grub-parser.d.ts +24 -0
- package/dist/extensions/builtin/grub/grub-parser.js +2 -0
- package/dist/extensions/builtin/grub/grub-persistence.d.ts +17 -0
- package/dist/extensions/builtin/grub/grub-persistence.js +2 -0
- package/dist/extensions/builtin/grub/grub-prompts.d.ts +12 -0
- package/dist/extensions/builtin/grub/grub-prompts.js +97 -0
- package/dist/extensions/builtin/grub/grub-turn.d.ts +16 -0
- package/dist/extensions/builtin/grub/grub-turn.js +1 -0
- package/dist/extensions/builtin/grub/grub-types.d.ts +110 -0
- package/dist/extensions/builtin/grub/grub-types.js +1 -0
- package/dist/extensions/builtin/grub/index.d.ts +8 -0
- package/dist/extensions/builtin/grub/index.js +6 -0
- package/dist/extensions/builtin/idle-think/curiosity.d.ts +46 -0
- package/dist/extensions/builtin/idle-think/curiosity.js +2 -0
- package/dist/extensions/builtin/idle-think/idle-think-runtime.d.ts +46 -0
- package/dist/extensions/builtin/idle-think/idle-think-runtime.js +1 -0
- package/dist/extensions/builtin/idle-think/index.d.ts +15 -0
- package/dist/extensions/builtin/idle-think/index.js +1 -0
- package/dist/extensions/builtin/idle-think/insights.d.ts +27 -0
- package/dist/extensions/builtin/idle-think/insights.js +5 -0
- package/dist/extensions/builtin/idle-think/thinker.d.ts +26 -0
- package/dist/extensions/builtin/idle-think/thinker.js +9 -0
- package/dist/extensions/builtin/insights/html-report.d.ts +21 -0
- package/dist/extensions/builtin/insights/html-report.js +463 -0
- package/dist/extensions/builtin/insights/index.d.ts +24 -0
- package/dist/extensions/builtin/insights/index.js +2 -0
- package/dist/extensions/builtin/insights/insights-engine.d.ts +18 -0
- package/dist/extensions/builtin/insights/insights-engine.js +39 -0
- package/dist/extensions/builtin/insights/prompts.d.ts +17 -0
- package/dist/extensions/builtin/insights/prompts.js +180 -0
- package/dist/extensions/builtin/insights/session-scanner.d.ts +27 -0
- package/dist/extensions/builtin/insights/session-scanner.js +19 -0
- package/dist/extensions/builtin/insights/stats.d.ts +13 -0
- package/dist/extensions/builtin/insights/stats.js +1 -0
- package/dist/extensions/builtin/insights/types.d.ts +199 -0
- package/dist/extensions/builtin/insights/types.js +0 -0
- package/dist/extensions/builtin/link-world/agent-workspace/README.md +16 -0
- package/dist/extensions/builtin/link-world/index.d.ts +8 -0
- package/dist/extensions/builtin/link-world/index.js +19 -0
- package/dist/extensions/builtin/link-world/internet-search/internet-search.md +65 -0
- package/dist/extensions/builtin/link-world/link-world-agent.md +82 -0
- package/dist/extensions/builtin/link-world/linkworld.md +313 -0
- package/dist/extensions/builtin/link-world/network-routing/network-routing.md +67 -0
- package/dist/extensions/builtin/loop/README.md +92 -0
- package/dist/extensions/builtin/loop/cron/cron-parser.d.ts +56 -0
- package/dist/extensions/builtin/loop/cron/cron-parser.js +1 -0
- package/dist/extensions/builtin/loop/cron/cron-scheduler.d.ts +85 -0
- package/dist/extensions/builtin/loop/cron/cron-scheduler.js +10 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks-lock.d.ts +42 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks-lock.js +1 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks.d.ts +200 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks.js +2 -0
- package/dist/extensions/builtin/loop/cron/index.d.ts +18 -0
- package/dist/extensions/builtin/loop/cron/index.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.d.ts +35 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.d.ts +29 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.d.ts +25 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.js +2 -0
- package/dist/extensions/builtin/loop/cron-tools/index.d.ts +16 -0
- package/dist/extensions/builtin/loop/cron-tools/index.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/prompt.d.ts +35 -0
- package/dist/extensions/builtin/loop/cron-tools/prompt.js +38 -0
- package/dist/extensions/builtin/loop/index.d.ts +19 -0
- package/dist/extensions/builtin/loop/index.js +2 -0
- package/dist/extensions/builtin/loop/loop-skill.d.ts +18 -0
- package/dist/extensions/builtin/loop/loop-skill.js +58 -0
- package/dist/extensions/builtin/lsp/index.d.ts +8 -0
- package/dist/extensions/builtin/lsp/index.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-client.d.ts +22 -0
- package/dist/extensions/builtin/lsp/lsp-client.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-config.d.ts +8 -0
- package/dist/extensions/builtin/lsp/lsp-config.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-formatters.d.ts +15 -0
- package/dist/extensions/builtin/lsp/lsp-formatters.js +18 -0
- package/dist/extensions/builtin/lsp/lsp-server-instance.d.ts +24 -0
- package/dist/extensions/builtin/lsp/lsp-server-instance.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-server-manager.d.ts +21 -0
- package/dist/extensions/builtin/lsp/lsp-server-manager.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-tool.d.ts +33 -0
- package/dist/extensions/builtin/lsp/lsp-tool.js +2 -0
- package/dist/extensions/builtin/lsp/types.d.ts +31 -0
- package/dist/extensions/builtin/lsp/types.js +1 -0
- package/dist/extensions/builtin/mcp/figma-design.md +68 -0
- package/dist/extensions/builtin/mcp/index.d.ts +14 -0
- package/dist/extensions/builtin/mcp/index.js +25 -0
- package/dist/extensions/builtin/mcp/mcp-management.md +85 -0
- package/dist/extensions/builtin/plan/clear-context-state.d.ts +8 -0
- package/dist/extensions/builtin/plan/clear-context-state.js +1 -0
- package/dist/extensions/builtin/plan/enter-plan-mode-tool.d.ts +11 -0
- package/dist/extensions/builtin/plan/enter-plan-mode-tool.js +2 -0
- package/dist/extensions/builtin/plan/exit-plan-mode-tool.d.ts +18 -0
- package/dist/extensions/builtin/plan/exit-plan-mode-tool.js +13 -0
- package/dist/extensions/builtin/plan/index.d.ts +8 -0
- package/dist/extensions/builtin/plan/index.js +24 -0
- package/dist/extensions/builtin/plan/plan-agents.d.ts +23 -0
- package/dist/extensions/builtin/plan/plan-agents.js +43 -0
- package/dist/extensions/builtin/plan/plan-file-manager.d.ts +26 -0
- package/dist/extensions/builtin/plan/plan-file-manager.js +1 -0
- package/dist/extensions/builtin/plan/plan-permissions.d.ts +15 -0
- package/dist/extensions/builtin/plan/plan-permissions.js +12 -0
- package/dist/extensions/builtin/plan/plan-validation.d.ts +18 -0
- package/dist/extensions/builtin/plan/plan-validation.js +5 -0
- package/dist/extensions/builtin/plan/plan-workflow-prompt.d.ts +18 -0
- package/dist/extensions/builtin/plan/plan-workflow-prompt.js +102 -0
- package/dist/extensions/builtin/plan/teammate-approval.d.ts +49 -0
- package/dist/extensions/builtin/plan/teammate-approval.js +3 -0
- package/dist/extensions/builtin/plan/types.d.ts +133 -0
- package/dist/extensions/builtin/plan/types.js +1 -0
- package/dist/extensions/builtin/presence/index.d.ts +40 -0
- package/dist/extensions/builtin/presence/index.js +15 -0
- package/dist/extensions/builtin/presence/presence-memory.d.ts +47 -0
- package/dist/extensions/builtin/presence/presence-memory.js +1 -0
- package/dist/extensions/builtin/recap/AGENT.md +15 -0
- package/dist/extensions/builtin/recap/index.d.ts +8 -0
- package/dist/extensions/builtin/recap/index.js +1 -0
- package/dist/extensions/builtin/recap/recap-budget.d.ts +24 -0
- package/dist/extensions/builtin/recap/recap-budget.js +1 -0
- package/dist/extensions/builtin/recap/recap-extractor.d.ts +34 -0
- package/dist/extensions/builtin/recap/recap-extractor.js +3 -0
- package/dist/extensions/builtin/recap/recap-renderer.d.ts +19 -0
- package/dist/extensions/builtin/recap/recap-renderer.js +2 -0
- package/dist/extensions/builtin/recap/recap-synthesizer.d.ts +51 -0
- package/dist/extensions/builtin/recap/recap-synthesizer.js +19 -0
- package/dist/extensions/builtin/recap/recap-types.d.ts +40 -0
- package/dist/extensions/builtin/recap/recap-types.js +1 -0
- package/dist/extensions/builtin/sal/README.md +72 -0
- package/dist/extensions/builtin/sal/anchors.d.ts +46 -0
- package/dist/extensions/builtin/sal/anchors.js +1 -0
- package/dist/extensions/builtin/sal/eval/index.d.ts +18 -0
- package/dist/extensions/builtin/sal/eval/index.js +1 -0
- package/dist/extensions/builtin/sal/eval/insforge-sink.d.ts +30 -0
- package/dist/extensions/builtin/sal/eval/insforge-sink.js +1 -0
- package/dist/extensions/builtin/sal/eval/jsonl-sink.d.ts +27 -0
- package/dist/extensions/builtin/sal/eval/jsonl-sink.js +3 -0
- package/dist/extensions/builtin/sal/eval/noop-sink.d.ts +8 -0
- package/dist/extensions/builtin/sal/eval/noop-sink.js +1 -0
- package/dist/extensions/builtin/sal/eval/types.d.ts +60 -0
- package/dist/extensions/builtin/sal/eval/types.js +1 -0
- package/dist/extensions/builtin/sal/index.d.ts +12 -0
- package/dist/extensions/builtin/sal/index.js +7 -0
- package/dist/extensions/builtin/sal/sal-config.d.ts +46 -0
- package/dist/extensions/builtin/sal/sal-config.js +1 -0
- package/dist/extensions/builtin/sal/sal-context.d.ts +11 -0
- package/dist/extensions/builtin/sal/sal-context.js +2 -0
- package/dist/extensions/builtin/sal/sal-runtime.d.ts +72 -0
- package/dist/extensions/builtin/sal/sal-runtime.js +0 -0
- package/dist/extensions/builtin/sal/sal-trace.d.ts +11 -0
- package/dist/extensions/builtin/sal/sal-trace.js +1 -0
- package/dist/extensions/builtin/sal/terrain.d.ts +73 -0
- package/dist/extensions/builtin/sal/terrain.js +3 -0
- package/dist/extensions/builtin/sal/weights.d.ts +28 -0
- package/dist/extensions/builtin/sal/weights.js +1 -0
- package/dist/extensions/builtin/security-audit/README.md +289 -0
- package/dist/extensions/builtin/security-audit/engine/detector.d.ts +44 -0
- package/dist/extensions/builtin/security-audit/engine/detector.js +1 -0
- package/dist/extensions/builtin/security-audit/engine/interceptor.d.ts +61 -0
- package/dist/extensions/builtin/security-audit/engine/interceptor.js +27 -0
- package/dist/extensions/builtin/security-audit/engine/logger.d.ts +65 -0
- package/dist/extensions/builtin/security-audit/engine/logger.js +65 -0
- package/dist/extensions/builtin/security-audit/index.d.ts +13 -0
- package/dist/extensions/builtin/security-audit/index.js +49 -0
- package/dist/extensions/builtin/security-audit/interface.d.ts +167 -0
- package/dist/extensions/builtin/security-audit/interface.js +1 -0
- package/dist/extensions/builtin/soul/index.d.ts +13 -0
- package/dist/extensions/builtin/soul/index.js +1 -0
- package/dist/extensions/builtin/subagent/index.d.ts +8 -0
- package/dist/extensions/builtin/subagent/index.js +8 -0
- package/dist/extensions/builtin/subagent/subagent-parser.d.ts +30 -0
- package/dist/extensions/builtin/subagent/subagent-parser.js +15 -0
- package/dist/extensions/builtin/subagent/subagent-runner.d.ts +49 -0
- package/dist/extensions/builtin/subagent/subagent-runner.js +8 -0
- package/dist/extensions/builtin/subagent/subagent-types.d.ts +57 -0
- package/dist/extensions/builtin/subagent/subagent-types.js +0 -0
- package/dist/extensions/builtin/task/index.d.ts +8 -0
- package/dist/extensions/builtin/task/index.js +1 -0
- package/dist/extensions/builtin/task/task-store.d.ts +42 -0
- package/dist/extensions/builtin/task/task-store.js +1 -0
- package/dist/extensions/builtin/task/task-tools/task-create-tool.d.ts +37 -0
- package/dist/extensions/builtin/task/task-tools/task-create-tool.js +40 -0
- package/dist/extensions/builtin/task/task-tools/task-get-tool.d.ts +31 -0
- package/dist/extensions/builtin/task/task-tools/task-get-tool.js +23 -0
- package/dist/extensions/builtin/task/task-tools/task-list-tool.d.ts +27 -0
- package/dist/extensions/builtin/task/task-tools/task-list-tool.js +22 -0
- package/dist/extensions/builtin/task/task-tools/task-output-tool.d.ts +32 -0
- package/dist/extensions/builtin/task/task-tools/task-output-tool.js +10 -0
- package/dist/extensions/builtin/task/task-tools/task-stop-tool.d.ts +31 -0
- package/dist/extensions/builtin/task/task-tools/task-stop-tool.js +5 -0
- package/dist/extensions/builtin/task/task-tools/task-update-tool.d.ts +47 -0
- package/dist/extensions/builtin/task/task-tools/task-update-tool.js +77 -0
- package/dist/extensions/builtin/task/task-tools/tool-search-tool.d.ts +34 -0
- package/dist/extensions/builtin/task/task-tools/tool-search-tool.js +14 -0
- package/dist/extensions/builtin/task/task-types.d.ts +30 -0
- package/dist/extensions/builtin/task/task-types.js +1 -0
- package/dist/extensions/builtin/teach/README.md +197 -0
- package/dist/extensions/builtin/teach/index.d.ts +12 -0
- package/dist/extensions/builtin/teach/index.js +6 -0
- package/dist/extensions/builtin/teach/references/analogy-library.md +153 -0
- package/dist/extensions/builtin/teach/references/learning-paths.md +214 -0
- package/dist/extensions/builtin/teach/references/source-verification.md +268 -0
- package/dist/extensions/builtin/teach/references/teaching-template.md +237 -0
- package/dist/extensions/builtin/teach/teach-format.d.ts +35 -0
- package/dist/extensions/builtin/teach/teach-format.js +6 -0
- package/dist/extensions/builtin/teach/teach-i18n.d.ts +47 -0
- package/dist/extensions/builtin/teach/teach-i18n.js +1 -0
- package/dist/extensions/builtin/teach/teach-persistence.d.ts +36 -0
- package/dist/extensions/builtin/teach/teach-persistence.js +35 -0
- package/dist/extensions/builtin/teach/teach-prompts.d.ts +52 -0
- package/dist/extensions/builtin/teach/teach-prompts.js +35 -0
- package/dist/extensions/builtin/teach/teach-runtime.d.ts +93 -0
- package/dist/extensions/builtin/teach/teach-runtime.js +9 -0
- package/dist/extensions/builtin/teach/teach-types.d.ts +81 -0
- package/dist/extensions/builtin/teach/teach-types.js +0 -0
- package/dist/extensions/builtin/team/AGENT.md +112 -0
- package/dist/extensions/builtin/team/TESTING.md +299 -0
- package/dist/extensions/builtin/team/index.d.ts +26 -0
- package/dist/extensions/builtin/team/index.js +11 -0
- package/dist/extensions/builtin/team/team-dashboard.d.ts +13 -0
- package/dist/extensions/builtin/team/team-dashboard.js +1 -0
- package/dist/extensions/builtin/team/team-harness.d.ts +35 -0
- package/dist/extensions/builtin/team/team-harness.js +18 -0
- package/dist/extensions/builtin/team/team-mailbox.d.ts +50 -0
- package/dist/extensions/builtin/team/team-mailbox.js +4 -0
- package/dist/extensions/builtin/team/team-orchestrator.d.ts +39 -0
- package/dist/extensions/builtin/team/team-orchestrator.js +5 -0
- package/dist/extensions/builtin/team/team-parser.d.ts +84 -0
- package/dist/extensions/builtin/team/team-parser.js +38 -0
- package/dist/extensions/builtin/team/team-permissions.d.ts +63 -0
- package/dist/extensions/builtin/team/team-permissions.js +1 -0
- package/dist/extensions/builtin/team/team-presets.d.ts +45 -0
- package/dist/extensions/builtin/team/team-presets.js +2 -0
- package/dist/extensions/builtin/team/team-psyche.d.ts +14 -0
- package/dist/extensions/builtin/team/team-psyche.js +5 -0
- package/dist/extensions/builtin/team/team-runtime-helpers.d.ts +48 -0
- package/dist/extensions/builtin/team/team-runtime-helpers.js +2 -0
- package/dist/extensions/builtin/team/team-runtime.d.ts +91 -0
- package/dist/extensions/builtin/team/team-runtime.js +3 -0
- package/dist/extensions/builtin/team/team-state-store.d.ts +29 -0
- package/dist/extensions/builtin/team/team-state-store.js +2 -0
- package/dist/extensions/builtin/team/team-task-store.d.ts +35 -0
- package/dist/extensions/builtin/team/team-task-store.js +2 -0
- package/dist/extensions/builtin/team/team-transcript.d.ts +31 -0
- package/dist/extensions/builtin/team/team-transcript.js +2 -0
- package/dist/extensions/builtin/team/team-types.d.ts +250 -0
- package/dist/extensions/builtin/team/team-types.js +0 -0
- package/dist/extensions/builtin/team/team-ui.d.ts +50 -0
- package/dist/extensions/builtin/team/team-ui.js +2 -0
- package/dist/extensions/builtin/token-save/README.md +56 -0
- package/dist/extensions/builtin/token-save/config.d.ts +8 -0
- package/dist/extensions/builtin/token-save/config.js +1 -0
- package/dist/extensions/builtin/token-save/filters.d.ts +14 -0
- package/dist/extensions/builtin/token-save/filters.js +24 -0
- package/dist/extensions/builtin/token-save/index.d.ts +8 -0
- package/dist/extensions/builtin/token-save/index.js +4 -0
- package/dist/extensions/builtin/token-save/lexer.d.ts +11 -0
- package/dist/extensions/builtin/token-save/lexer.js +1 -0
- package/dist/extensions/builtin/token-save/recovery.d.ts +1 -0
- package/dist/extensions/builtin/token-save/recovery.js +1 -0
- package/dist/extensions/builtin/token-save/rewrite.d.ts +19 -0
- package/dist/extensions/builtin/token-save/rewrite.js +1 -0
- package/dist/extensions/builtin/token-save/runner.d.ts +14 -0
- package/dist/extensions/builtin/token-save/runner.js +3 -0
- package/dist/extensions/builtin/token-save/stream.d.ts +20 -0
- package/dist/extensions/builtin/token-save/stream.js +1 -0
- package/dist/extensions/builtin/token-save/toml-dsl.d.ts +25 -0
- package/dist/extensions/builtin/token-save/toml-dsl.js +3 -0
- package/dist/extensions/builtin/token-save/tracking.d.ts +24 -0
- package/dist/extensions/builtin/token-save/tracking.js +8 -0
- package/dist/extensions/optional/AGENT.md +11 -0
- package/dist/extensions/optional/export-html/index.d.ts +41 -0
- package/dist/extensions/optional/export-html/index.js +2 -0
- package/dist/extensions/optional/simplify/index.d.ts +35 -0
- package/dist/extensions/optional/simplify/index.js +77 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +1 -0
- package/dist/main.d.ts +7 -0
- package/dist/main.js +41 -0
- package/dist/migrations.d.ts +30 -0
- package/dist/migrations.js +4 -0
- package/dist/models.d.ts +7 -0
- package/dist/models.js +1 -0
- package/dist/modes/acp/acp-mode.d.ts +30 -0
- package/dist/modes/acp/acp-mode.js +25 -0
- package/dist/modes/index.d.ts +14 -0
- package/dist/modes/index.js +1 -0
- package/dist/modes/interactive/agent-loop-status.d.ts +8 -0
- package/dist/modes/interactive/agent-loop-status.js +1 -0
- package/dist/modes/interactive/components/apikey-input.d.ts +10 -0
- package/dist/modes/interactive/components/apikey-input.js +3 -0
- package/dist/modes/interactive/components/armin.d.ts +39 -0
- package/dist/modes/interactive/components/armin.js +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +21 -0
- package/dist/modes/interactive/components/assistant-message.js +1 -0
- package/dist/modes/interactive/components/attachments-bar.d.ts +37 -0
- package/dist/modes/interactive/components/attachments-bar.js +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +40 -0
- package/dist/modes/interactive/components/bash-execution.js +13 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +21 -0
- package/dist/modes/interactive/components/bordered-loader.js +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +21 -0
- package/dist/modes/interactive/components/branch-summary-message.js +3 -0
- package/dist/modes/interactive/components/buddy/pet-sprites.d.ts +31 -0
- package/dist/modes/interactive/components/buddy/pet-sprites.js +1 -0
- package/dist/modes/interactive/components/catui-loader.d.ts +55 -0
- package/dist/modes/interactive/components/catui-loader.js +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +21 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +3 -0
- package/dist/modes/interactive/components/config-selector.d.ts +76 -0
- package/dist/modes/interactive/components/config-selector.js +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +19 -0
- package/dist/modes/interactive/components/countdown-timer.js +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +37 -0
- package/dist/modes/interactive/components/custom-editor.js +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +26 -0
- package/dist/modes/interactive/components/custom-message.js +2 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +28 -0
- package/dist/modes/interactive/components/daxnuts.js +1 -0
- package/dist/modes/interactive/components/diff.d.ts +17 -0
- package/dist/modes/interactive/components/diff.js +3 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +20 -0
- package/dist/modes/interactive/components/dynamic-border.js +1 -0
- package/dist/modes/interactive/components/editor-buddy-layout.d.ts +17 -0
- package/dist/modes/interactive/components/editor-buddy-layout.js +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +25 -0
- package/dist/modes/interactive/components/extension-editor.js +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +29 -0
- package/dist/modes/interactive/components/extension-input.js +2 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +32 -0
- package/dist/modes/interactive/components/extension-selector.js +2 -0
- package/dist/modes/interactive/components/footer.d.ts +34 -0
- package/dist/modes/interactive/components/footer.js +1 -0
- package/dist/modes/interactive/components/index.d.ts +44 -0
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +46 -0
- package/dist/modes/interactive/components/keybinding-hints.js +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +47 -0
- package/dist/modes/interactive/components/login-dialog.js +1 -0
- package/dist/modes/interactive/components/memory-stats.d.ts +14 -0
- package/dist/modes/interactive/components/memory-stats.js +2 -0
- package/dist/modes/interactive/components/model-selector.d.ts +59 -0
- package/dist/modes/interactive/components/model-selector.js +2 -0
- package/dist/modes/interactive/components/notification-queue.d.ts +49 -0
- package/dist/modes/interactive/components/notification-queue.js +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +30 -0
- package/dist/modes/interactive/components/oauth-selector.js +1 -0
- package/dist/modes/interactive/components/persona-selector.d.ts +24 -0
- package/dist/modes/interactive/components/persona-selector.js +1 -0
- package/dist/modes/interactive/components/plan-progress-panel.d.ts +24 -0
- package/dist/modes/interactive/components/plan-progress-panel.js +1 -0
- package/dist/modes/interactive/components/provider-selector.d.ts +25 -0
- package/dist/modes/interactive/components/provider-selector.js +1 -0
- package/dist/modes/interactive/components/raw-text.d.ts +19 -0
- package/dist/modes/interactive/components/raw-text.js +3 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +54 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +28 -0
- package/dist/modes/interactive/components/session-selector-search.js +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +100 -0
- package/dist/modes/interactive/components/session-selector.js +2 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +77 -0
- package/dist/modes/interactive/components/settings-selector.js +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +15 -0
- package/dist/modes/interactive/components/show-images-selector.js +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +22 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +3 -0
- package/dist/modes/interactive/components/soul-stats.d.ts +15 -0
- package/dist/modes/interactive/components/soul-stats.js +2 -0
- package/dist/modes/interactive/components/sub-agent-panel.d.ts +24 -0
- package/dist/modes/interactive/components/sub-agent-panel.js +1 -0
- package/dist/modes/interactive/components/task-status-panel.d.ts +36 -0
- package/dist/modes/interactive/components/task-status-panel.js +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +16 -0
- package/dist/modes/interactive/components/theme-selector.js +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +16 -0
- package/dist/modes/interactive/components/thinking-selector.js +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +80 -0
- package/dist/modes/interactive/components/tool-execution.js +58 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +73 -0
- package/dist/modes/interactive/components/tree-selector.js +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +35 -0
- package/dist/modes/interactive/components/user-message-selector.js +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +13 -0
- package/dist/modes/interactive/components/user-message.js +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +29 -0
- package/dist/modes/interactive/components/visual-truncate.js +1 -0
- package/dist/modes/interactive/controllers/auth-provider-config-controller.d.ts +64 -0
- package/dist/modes/interactive/controllers/auth-provider-config-controller.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/custom-overlay-host.d.ts +38 -0
- package/dist/modes/interactive/controllers/extension-ui/custom-overlay-host.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/editor-component-adapter.d.ts +37 -0
- package/dist/modes/interactive/controllers/extension-ui/editor-component-adapter.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/persistent-surface-registry.d.ts +53 -0
- package/dist/modes/interactive/controllers/extension-ui/persistent-surface-registry.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/prompt-host.d.ts +52 -0
- package/dist/modes/interactive/controllers/extension-ui/prompt-host.js +2 -0
- package/dist/modes/interactive/controllers/image-pipeline-controller.d.ts +106 -0
- package/dist/modes/interactive/controllers/image-pipeline-controller.js +1 -0
- package/dist/modes/interactive/controllers/input-submit-controller.d.ts +80 -0
- package/dist/modes/interactive/controllers/input-submit-controller.js +2 -0
- package/dist/modes/interactive/controllers/interrupt-controller.d.ts +75 -0
- package/dist/modes/interactive/controllers/interrupt-controller.js +1 -0
- package/dist/modes/interactive/controllers/model-overlay-controller.d.ts +127 -0
- package/dist/modes/interactive/controllers/model-overlay-controller.js +3 -0
- package/dist/modes/interactive/controllers/self-update-controller.d.ts +71 -0
- package/dist/modes/interactive/controllers/self-update-controller.js +24 -0
- package/dist/modes/interactive/controllers/settings-overlay-controller.d.ts +56 -0
- package/dist/modes/interactive/controllers/settings-overlay-controller.js +2 -0
- package/dist/modes/interactive/controllers/slash-dispatcher-controller.d.ts +74 -0
- package/dist/modes/interactive/controllers/slash-dispatcher-controller.js +1 -0
- package/dist/modes/interactive/controllers/stream-render-controller.d.ts +110 -0
- package/dist/modes/interactive/controllers/stream-render-controller.js +2 -0
- package/dist/modes/interactive/controllers/tree-overlay-controller.d.ts +55 -0
- package/dist/modes/interactive/controllers/tree-overlay-controller.js +1 -0
- package/dist/modes/interactive/footer-data-provider.d.ts +32 -0
- package/dist/modes/interactive/footer-data-provider.js +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +303 -0
- package/dist/modes/interactive/interactive-mode.js +119 -0
- package/dist/modes/interactive/services/tips.d.ts +20 -0
- package/dist/modes/interactive/services/tips.js +1 -0
- package/dist/modes/interactive/slash-command-arguments.d.ts +28 -0
- package/dist/modes/interactive/slash-command-arguments.js +1 -0
- package/dist/modes/interactive/state/interactive-state.d.ts +74 -0
- package/dist/modes/interactive/state/interactive-state.js +1 -0
- package/dist/modes/interactive/theme/dark.json +85 -0
- package/dist/modes/interactive/theme/light.json +84 -0
- package/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/dist/modes/interactive/theme/theme.d.ts +81 -0
- package/dist/modes/interactive/theme/theme.js +16 -0
- package/dist/modes/interactive/theme/warm.json +81 -0
- package/dist/modes/print-mode.d.ts +38 -0
- package/dist/modes/print-mode.js +2 -0
- package/dist/modes/rpc/rpc-client.d.ts +221 -0
- package/dist/modes/rpc/rpc-client.js +2 -0
- package/dist/modes/rpc/rpc-mode.d.ts +14 -0
- package/dist/modes/rpc/rpc-mode.js +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +449 -0
- package/dist/modes/rpc/rpc-types.js +0 -0
- package/dist/modes/utils/agent-loop-result-format.d.ts +10 -0
- package/dist/modes/utils/agent-loop-result-format.js +1 -0
- package/dist/modes/utils/clipboard-image.d.ts +10 -0
- package/dist/modes/utils/clipboard-image.js +1 -0
- package/dist/modes/utils/clipboard-native.d.ts +11 -0
- package/dist/modes/utils/clipboard-native.js +1 -0
- package/dist/modes/utils/clipboard.d.ts +1 -0
- package/dist/modes/utils/clipboard.js +1 -0
- package/dist/modes/utils/image-convert.d.ts +8 -0
- package/dist/modes/utils/image-convert.js +1 -0
- package/dist/modes/utils/image-resize.d.ts +41 -0
- package/dist/modes/utils/image-resize.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-continuations.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-stream-events.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-tool-results.js +3 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-tool-summaries.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop.js +4 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-run-result.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/errors.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/index.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/proxy.js +2 -0
- package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-agent-loop.js +2 -0
- package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-streaming-tool-executor.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-tool-orchestration.js +3 -0
- package/dist/node_modules/@catui/agent-core/dist/types.js +1 -0
- package/dist/node_modules/@catui/agent-core/package.json +28 -0
- package/dist/node_modules/@catui/ai/dist/api-registry.js +1 -0
- package/dist/node_modules/@catui/ai/dist/cli.js +21 -0
- package/dist/node_modules/@catui/ai/dist/config-path.js +1 -0
- package/dist/node_modules/@catui/ai/dist/debug-logger.js +4 -0
- package/dist/node_modules/@catui/ai/dist/env-api-keys.js +1 -0
- package/dist/node_modules/@catui/ai/dist/env.js +1 -0
- package/dist/node_modules/@catui/ai/dist/events.js +1 -0
- package/dist/node_modules/@catui/ai/dist/index.js +1 -0
- package/dist/node_modules/@catui/ai/dist/json.js +1 -0
- package/dist/node_modules/@catui/ai/dist/models.generated.js +1 -0
- package/dist/node_modules/@catui/ai/dist/models.js +1 -0
- package/dist/node_modules/@catui/ai/dist/overflow.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/amazon-bedrock.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/anthropic.js +2 -0
- package/dist/node_modules/@catui/ai/dist/providers/azure-openai-responses.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/github-copilot-headers.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/google-gemini-cli.js +2 -0
- package/dist/node_modules/@catui/ai/dist/providers/google-shared.js +2 -0
- package/dist/node_modules/@catui/ai/dist/providers/google-vertex.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/google.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-codex-responses.js +7 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-completions.js +6 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-responses-shared.js +10 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-responses.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/register-builtins.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/simple-options.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/transform-messages.js +1 -0
- package/dist/node_modules/@catui/ai/dist/registry.js +1 -0
- package/dist/node_modules/@catui/ai/dist/schema.js +1 -0
- package/dist/node_modules/@catui/ai/dist/stream.js +1 -0
- package/dist/node_modules/@catui/ai/dist/types.js +0 -0
- package/dist/node_modules/@catui/ai/dist/utils/event-stream-types.js +0 -0
- package/dist/node_modules/@catui/ai/dist/utils/event-stream.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/http-proxy.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/json-parse.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/anthropic.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/decode-credential.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/github-copilot.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/google-antigravity.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/google-gemini-cli.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/index.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/openai-codex.js +11 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/pkce.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/types.js +0 -0
- package/dist/node_modules/@catui/ai/dist/utils/overflow.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/sanitize-unicode.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/typebox-helpers.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/validation.js +6 -0
- package/dist/node_modules/@catui/ai/package.json +106 -0
- package/dist/node_modules/@catui/tui/dist/autocomplete.js +2 -0
- package/dist/node_modules/@catui/tui/dist/components/box.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/cached-container.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/cancellable-loader.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/editor.js +21 -0
- package/dist/node_modules/@catui/tui/dist/components/image.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/input.js +2 -0
- package/dist/node_modules/@catui/tui/dist/components/loader.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/markdown.js +7 -0
- package/dist/node_modules/@catui/tui/dist/components/select-list.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/settings-list.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/spacer.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/text.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/truncated-text.js +2 -0
- package/dist/node_modules/@catui/tui/dist/editor-component.js +0 -0
- package/dist/node_modules/@catui/tui/dist/fuzzy.js +1 -0
- package/dist/node_modules/@catui/tui/dist/index.js +1 -0
- package/dist/node_modules/@catui/tui/dist/keybindings.js +1 -0
- package/dist/node_modules/@catui/tui/dist/keys.js +5 -0
- package/dist/node_modules/@catui/tui/dist/kill-ring.js +1 -0
- package/dist/node_modules/@catui/tui/dist/stdin-buffer.js +1 -0
- package/dist/node_modules/@catui/tui/dist/terminal-image.js +1 -0
- package/dist/node_modules/@catui/tui/dist/terminal.js +1 -0
- package/dist/node_modules/@catui/tui/dist/tui.js +12 -0
- package/dist/node_modules/@catui/tui/dist/undo-stack.js +1 -0
- package/dist/node_modules/@catui/tui/dist/utils.js +2 -0
- package/dist/node_modules/@catui/tui/package.json +37 -0
- package/dist/packages/mem-core/src/store.d.ts +21 -0
- package/dist/packages/mem-core/src/store.js +1 -0
- package/dist/packages/mem-core/src/types.d.ts +329 -0
- package/dist/packages/mem-core/src/types.js +0 -0
- package/dist/packages/protocol/src/commands.d.ts +33 -0
- package/dist/packages/protocol/src/commands.js +0 -0
- package/dist/packages/protocol/src/flags.d.ts +20 -0
- package/dist/packages/protocol/src/flags.js +0 -0
- package/dist/packages/protocol/src/hooks.d.ts +17 -0
- package/dist/packages/protocol/src/hooks.js +0 -0
- package/dist/packages/protocol/src/index.d.ts +15 -0
- package/dist/packages/protocol/src/index.js +1 -0
- package/dist/packages/protocol/src/lifecycle.d.ts +61 -0
- package/dist/packages/protocol/src/lifecycle.js +0 -0
- package/dist/packages/protocol/src/tools.d.ts +77 -0
- package/dist/packages/protocol/src/tools.js +0 -0
- package/dist/packages/soul-core/src/config.d.ts +20 -0
- package/dist/packages/soul-core/src/config.js +1 -0
- package/dist/packages/soul-core/src/diagnostics.d.ts +23 -0
- package/dist/packages/soul-core/src/diagnostics.js +1 -0
- package/dist/packages/soul-core/src/evolution.d.ts +75 -0
- package/dist/packages/soul-core/src/evolution.js +1 -0
- package/dist/packages/soul-core/src/index.d.ts +13 -0
- package/dist/packages/soul-core/src/index.js +1 -0
- package/dist/packages/soul-core/src/injection.d.ts +35 -0
- package/dist/packages/soul-core/src/injection.js +8 -0
- package/dist/packages/soul-core/src/manager.d.ts +101 -0
- package/dist/packages/soul-core/src/manager.js +1 -0
- package/dist/packages/soul-core/src/store.d.ts +62 -0
- package/dist/packages/soul-core/src/store.js +1 -0
- package/dist/packages/soul-core/src/types.d.ts +317 -0
- package/dist/packages/soul-core/src/types.js +0 -0
- package/dist/public-config.d.ts +12 -0
- package/dist/public-config.js +1 -0
- package/dist/runtime.d.ts +9 -0
- package/dist/runtime.js +1 -0
- package/dist/session-compaction.d.ts +7 -0
- package/dist/session-compaction.js +1 -0
- package/dist/session.d.ts +7 -0
- package/dist/session.js +1 -0
- package/dist/skills.d.ts +7 -0
- package/dist/skills.js +1 -0
- package/dist/tools.d.ts +7 -0
- package/dist/tools.js +1 -0
- package/dist/utils/changelog.d.ts +20 -0
- package/dist/utils/changelog.js +4 -0
- package/dist/utils/diagnostics.d.ts +37 -0
- package/dist/utils/diagnostics.js +1 -0
- package/dist/utils/frontmatter.d.ts +7 -0
- package/dist/utils/frontmatter.js +4 -0
- package/dist/utils/git.d.ts +25 -0
- package/dist/utils/git.js +1 -0
- package/dist/utils/mime.d.ts +1 -0
- package/dist/utils/mime.js +1 -0
- package/dist/utils/photon.d.ts +6 -0
- package/dist/utils/photon.js +1 -0
- package/dist/utils/startup-profiler.d.ts +87 -0
- package/dist/utils/startup-profiler.js +2 -0
- package/docs/codex-goal-command-impl.md +1055 -0
- package/docs/codex-goal-vs-grub.md +500 -0
- package/docs/custom-provider.md +27 -0
- package/docs/extensions.md +27 -0
- package/docs/keybindings.md +27 -0
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +251 -0
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +123 -0
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -0
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/256/236/347/216/260/346/212/245/345/221/212.md" +158 -0
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/257/271/346/257/224/345/210/206/346/236/220.md" +128 -0
- package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +321 -0
- package/docs/loop-usage-examples.md +215 -0
- package/docs/models.md +27 -0
- package/docs/packages.md +27 -0
- package/docs/pi-design-philosophy.md +457 -0
- package/docs/planmode.md +1987 -0
- package/docs/prompt-templates.md +27 -0
- package/docs/providers.md +27 -0
- package/docs/sdk.md +27 -0
- package/docs/skills.md +27 -0
- package/docs/themes.md +27 -0
- package/docs/tui.md +27 -0
- package/package.json +191 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@catui/ai",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Unified LLM API with automatic model discovery and provider configuration",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"default": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./types": {
|
|
15
|
+
"import": "./dist/types.js",
|
|
16
|
+
"default": "./dist/types.js",
|
|
17
|
+
"types": "./dist/types.d.ts"
|
|
18
|
+
},
|
|
19
|
+
"./schema": {
|
|
20
|
+
"import": "./dist/schema.js",
|
|
21
|
+
"default": "./dist/schema.js",
|
|
22
|
+
"types": "./dist/schema.d.ts"
|
|
23
|
+
},
|
|
24
|
+
"./events": {
|
|
25
|
+
"import": "./dist/events.js",
|
|
26
|
+
"default": "./dist/events.js",
|
|
27
|
+
"types": "./dist/events.d.ts"
|
|
28
|
+
},
|
|
29
|
+
"./models": {
|
|
30
|
+
"import": "./dist/models.js",
|
|
31
|
+
"default": "./dist/models.js",
|
|
32
|
+
"types": "./dist/models.d.ts"
|
|
33
|
+
},
|
|
34
|
+
"./registry": {
|
|
35
|
+
"import": "./dist/registry.js",
|
|
36
|
+
"default": "./dist/registry.js",
|
|
37
|
+
"types": "./dist/registry.d.ts"
|
|
38
|
+
},
|
|
39
|
+
"./stream": {
|
|
40
|
+
"import": "./dist/stream.js",
|
|
41
|
+
"default": "./dist/stream.js",
|
|
42
|
+
"types": "./dist/stream.d.ts"
|
|
43
|
+
},
|
|
44
|
+
"./env": {
|
|
45
|
+
"import": "./dist/env.js",
|
|
46
|
+
"default": "./dist/env.js",
|
|
47
|
+
"types": "./dist/env.d.ts"
|
|
48
|
+
},
|
|
49
|
+
"./overflow": {
|
|
50
|
+
"import": "./dist/overflow.js",
|
|
51
|
+
"default": "./dist/overflow.js",
|
|
52
|
+
"types": "./dist/overflow.d.ts"
|
|
53
|
+
},
|
|
54
|
+
"./json": {
|
|
55
|
+
"import": "./dist/json.js",
|
|
56
|
+
"default": "./dist/json.js",
|
|
57
|
+
"types": "./dist/json.d.ts"
|
|
58
|
+
},
|
|
59
|
+
"./oauth": {
|
|
60
|
+
"import": "./dist/utils/oauth/index.js",
|
|
61
|
+
"default": "./dist/utils/oauth/index.js",
|
|
62
|
+
"types": "./dist/utils/oauth/index.d.ts"
|
|
63
|
+
},
|
|
64
|
+
"./providers/*": {
|
|
65
|
+
"import": "./dist/providers/*.js",
|
|
66
|
+
"default": "./dist/providers/*.js",
|
|
67
|
+
"types": "./dist/providers/*.d.ts"
|
|
68
|
+
},
|
|
69
|
+
"./package.json": "./package.json"
|
|
70
|
+
},
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"@anthropic-ai/sdk": "^0.73.0",
|
|
73
|
+
"@aws-sdk/client-bedrock-runtime": "^3.983.0",
|
|
74
|
+
"@google/genai": "^1.40.0",
|
|
75
|
+
"@mistralai/mistralai": "1.10.0",
|
|
76
|
+
"@sinclair/typebox": "^0.34.41",
|
|
77
|
+
"ajv": "^8.17.1",
|
|
78
|
+
"ajv-formats": "^3.0.1",
|
|
79
|
+
"chalk": "^5.6.2",
|
|
80
|
+
"openai": "6.10.0",
|
|
81
|
+
"partial-json": "^0.1.7",
|
|
82
|
+
"proxy-agent": "^6.5.0",
|
|
83
|
+
"undici": "^7.19.1",
|
|
84
|
+
"zod-to-json-schema": "^3.24.6"
|
|
85
|
+
},
|
|
86
|
+
"keywords": [
|
|
87
|
+
"ai",
|
|
88
|
+
"llm",
|
|
89
|
+
"openai",
|
|
90
|
+
"anthropic",
|
|
91
|
+
"gemini",
|
|
92
|
+
"bedrock",
|
|
93
|
+
"unified",
|
|
94
|
+
"api",
|
|
95
|
+
"catui-agent"
|
|
96
|
+
],
|
|
97
|
+
"author": "Catui Team",
|
|
98
|
+
"license": "GPL-3.0",
|
|
99
|
+
"repository": {
|
|
100
|
+
"type": "git",
|
|
101
|
+
"url": "git+https://github.com/O-Catui/Catui.git"
|
|
102
|
+
},
|
|
103
|
+
"engines": {
|
|
104
|
+
"node": ">=20.0.0"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var N=Object.defineProperty;var P=(l,t)=>N(l,"name",{value:t,configurable:!0});import{spawnSync as O}from"child_process";import{readdirSync as q,statSync as F}from"fs";import{homedir as A}from"os";import{basename as $,dirname as C,join as W}from"path";import{weightedFuzzyFilter as H}from"./fuzzy.js";const L=new Set([" "," ",'"',"'","="]);function I(l){for(let t=l.length-1;t>=0;t-=1)if(L.has(l[t]??""))return t;return-1}P(I,"findLastDelimiter");function R(l){let t=!1,e=-1;for(let i=0;i<l.length;i+=1)l[i]==='"'&&(t=!t,t&&(e=i));return t?e:null}P(R,"findUnclosedQuoteStart");function z(l,t){return t===0||L.has(l[t-1]??"")}P(z,"isTokenStart");function T(l){const t=R(l);return t===null?null:t>0&&l[t-1]==="@"?z(l,t-1)?l.slice(t-1):null:z(l,t)?l.slice(t):null}P(T,"extractQuotedPrefix");function B(l){return l.startsWith('@"')?{rawPrefix:l.slice(2),isAtPrefix:!0,isQuotedPrefix:!0}:l.startsWith('"')?{rawPrefix:l.slice(1),isAtPrefix:!1,isQuotedPrefix:!0}:l.startsWith("@")?{rawPrefix:l.slice(1),isAtPrefix:!0,isQuotedPrefix:!1}:{rawPrefix:l,isAtPrefix:!1,isQuotedPrefix:!1}}P(B,"parsePathPrefix");function M(l){return l.match(/(?:^|\s)(\S*)$/)?.[1]??l}P(M,"getCurrentArgumentPrefix");function j(l,t,e){const i=t.slice(0,t.length-e.length),s=i.trim()?i.trim().split(/\s+/):[];return{commandName:l,argumentText:t,argumentPrefix:e,tokenIndex:s.length,previousTokens:s}}P(j,"getArgumentCompletionContext");function k(l,t){const e=t.isQuotedPrefix||l.includes(" "),i=t.isAtPrefix?"@":"";return e?`${`${i}"`}${l}"`:`${i}${l}`}P(k,"buildCompletionValue");function V(l,t,e,i){const s=["--base-directory",l,"--max-results",String(i),"--type","f","--type","d","--full-path","--hidden","--exclude",".git","--exclude",".git/*","--exclude",".git/**"];e&&s.push(e);const n=O(t,s,{encoding:"utf-8",stdio:["pipe","pipe","pipe"],maxBuffer:10*1024*1024});if(n.status!==0||!n.stdout)return[];const f=n.stdout.trim().split(`
|
|
2
|
+
`).filter(Boolean),r=[];for(const a of f){const g=a.endsWith("/")?a.slice(0,-1):a;if(g===".git"||g.startsWith(".git/")||g.includes("/.git/"))continue;const u=a.endsWith("/");r.push({path:a,isDirectory:u})}return r}P(V,"walkDirectoryWithFd");class Y{static{P(this,"CombinedAutocompleteProvider")}commands;basePath;fdPath;constructor(t=[],e=process.cwd(),i=null){this.commands=t,this.basePath=e,this.fdPath=i}getSuggestions(t,e,i){const n=(t[e]||"").slice(0,i),f=this.extractAtPrefix(n);if(f){const{rawPrefix:a,isQuotedPrefix:g}=B(f),u=this.getFuzzyFileSuggestions(a,{isQuotedPrefix:g});return u.length===0?null:{items:u,prefix:f}}if(n.startsWith("/")){const a=n.indexOf(" ");if(a===-1){const g=n.slice(1),u=this.commands.map(o=>({name:"name"in o?o.name:o.value,label:"name"in o?o.name:o.label,description:o.description})),c=H(u,g,[{name:"name",getText:P(o=>o.name,"getText"),weight:3},...g.length>0?[]:[{name:"description",getText:P(o=>o.description??"","getText"),weight:.5}]]).slice(0,10).map(o=>({value:o.name,label:o.label,...o.description&&{description:o.description}}));return c.length===0?null:{items:c,prefix:n}}else{const g=n.slice(1,a),u=n.slice(a+1),c=M(u),o=this.commands.find(d=>("name"in d?d.name:d.value)===g);if(!o||!("getArgumentCompletions"in o)||!o.getArgumentCompletions)return null;const h=o.getArgumentCompletions(c,j(g,u,c));return!h||h.length===0?null:{items:h,prefix:c}}}const r=this.extractPathPrefix(n,!1);if(r!==null){const a=this.getFileSuggestions(r);return a.length===0?null:a.length===1&&a[0]?.value===r&&!r.endsWith("/")?{items:a,prefix:r}:{items:a,prefix:r}}return null}applyCompletion(t,e,i,s,n){const f=t[e]||"",r=f.slice(0,i-n.length),a=f.slice(i),g=n.startsWith('"')||n.startsWith('@"'),u=a.startsWith('"'),c=s.value.endsWith('"'),o=g&&c&&u?a.slice(1):a;if(n.startsWith("/")&&r.trim()===""&&!n.slice(1).includes("/")){const v=`${r}/${s.value} ${o}`,x=[...t];return x[e]=v,{lines:x,cursorLine:e,cursorCol:r.length+s.value.length+2}}if(n.startsWith("@")){const v=s.label.endsWith("/"),x=v?"":" ",S=`${r+s.value}${x}${o}`,w=[...t];w[e]=S;const D=s.value.endsWith('"'),E=v&&D?s.value.length-1:s.value.length;return{lines:w,cursorLine:e,cursorCol:r.length+E+x.length}}const d=f.slice(0,i);if(d.includes("/")&&d.includes(" ")){const v=r+s.value+o,x=[...t];x[e]=v;const S=s.label.endsWith("/"),w=s.value.endsWith('"'),D=S&&w?s.value.length-1:s.value.length;return{lines:x,cursorLine:e,cursorCol:r.length+D}}const m=r+s.value+o,y=[...t];y[e]=m;const Q=s.label.endsWith("/"),p=s.value.endsWith('"'),b=Q&&p?s.value.length-1:s.value.length;return{lines:y,cursorLine:e,cursorCol:r.length+b}}extractAtPrefix(t){const e=T(t);if(e?.startsWith('@"'))return e;const i=I(t),s=i===-1?0:i+1;return t[s]==="@"?t.slice(s):null}extractPathPrefix(t,e=!1){const i=T(t);if(i)return i;const s=I(t),n=s===-1?t:t.slice(s+1);return e||n.includes("/")||n.startsWith(".")||n.startsWith("~/")||n===""&&t.endsWith(" ")?n:null}expandHomePath(t){if(t.startsWith("~/")){const e=W(A(),t.slice(2));return t.endsWith("/")&&!e.endsWith("/")?`${e}/`:e}else if(t==="~")return A();return t}resolveScopedFuzzyQuery(t){const e=t.lastIndexOf("/");if(e===-1)return null;const i=t.slice(0,e+1),s=t.slice(e+1);let n;i.startsWith("~/")?n=this.expandHomePath(i):i.startsWith("/")?n=i:n=W(this.basePath,i);try{if(!F(n).isDirectory())return null}catch{return null}return{baseDir:n,query:s,displayBase:i}}scopedPathForDisplay(t,e){return t==="/"?`/${e}`:`${t}${e}`}getFileSuggestions(t){try{let e,i;const{rawPrefix:s,isAtPrefix:n,isQuotedPrefix:f}=B(t);let r=s;if(r.startsWith("~")&&(r=this.expandHomePath(r)),s===""||s==="./"||s==="../"||s==="~"||s==="~/"||s==="/"||n&&s==="")s.startsWith("~")||r.startsWith("/")?e=r:e=W(this.basePath,r),i="";else if(s.endsWith("/"))s.startsWith("~")||r.startsWith("/")?e=r:e=W(this.basePath,r),i="";else{const c=C(r),o=$(r);s.startsWith("~")||r.startsWith("/")?e=c:e=W(this.basePath,c),i=o}const g=q(e,{withFileTypes:!0}),u=[];for(const c of g){if(!c.name.toLowerCase().startsWith(i.toLowerCase()))continue;let o=c.isDirectory();if(!o&&c.isSymbolicLink())try{const p=W(e,c.name);o=F(p).isDirectory()}catch{}let h;const d=c.name,m=s;if(m.endsWith("/"))h=m+d;else if(m.includes("/"))if(m.startsWith("~/")){const p=m.slice(2),b=C(p);h=`~/${b==="."?d:W(b,d)}`}else if(m.startsWith("/")){const p=C(m);p==="/"?h=`/${d}`:h=`${p}/${d}`}else h=W(C(m),d);else m.startsWith("~")?h=`~/${d}`:h=d;const y=o?`${h}/`:h,Q=k(y,{isDirectory:o,isAtPrefix:n,isQuotedPrefix:f});u.push({value:Q,label:d+(o?"/":"")})}return u.sort((c,o)=>{const h=c.value.endsWith("/"),d=o.value.endsWith("/");return h&&!d?-1:!h&&d?1:c.label.localeCompare(o.label)}),u}catch{return[]}}scoreEntry(t,e,i){const n=$(t).toLowerCase(),f=e.toLowerCase();let r=0;return n===f?r=100:n.startsWith(f)?r=80:n.includes(f)?r=50:t.toLowerCase().includes(f)&&(r=30),i&&r>0&&(r+=10),r}getFuzzyFileSuggestions(t,e){if(!this.fdPath)return[];try{const i=this.resolveScopedFuzzyQuery(t),s=i?.baseDir??this.basePath,n=i?.query??t,r=V(s,this.fdPath,n,100).map(u=>({...u,score:n?this.scoreEntry(u.path,n,u.isDirectory):1})).filter(u=>u.score>0);r.sort((u,c)=>c.score-u.score);const a=r.slice(0,20),g=[];for(const{path:u,isDirectory:c}of a){const o=c?u.slice(0,-1):u,h=i?this.scopedPathForDisplay(i.displayBase,o):o,d=$(o),m=c?`${h}/`:h,y=k(m,{isDirectory:c,isAtPrefix:!0,isQuotedPrefix:e.isQuotedPrefix});g.push({value:y,label:d+(c?"/":""),description:h})}return g}catch{return[]}}getForceFileSuggestions(t,e,i){const n=(t[e]||"").slice(0,i);if(n.trim().startsWith("/")&&!n.trim().includes(" "))return null;const f=this.extractPathPrefix(n,!0);if(f!==null){const r=this.getFileSuggestions(f);return r.length===0?null:{items:r,prefix:f}}return null}shouldTriggerFileCompletion(t,e,i){const n=(t[e]||"").slice(0,i);return!(n.trim().startsWith("/")&&!n.trim().includes(" "))}}export{Y as CombinedAutocompleteProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var o=Object.defineProperty;var d=(c,i)=>o(c,"name",{value:i,configurable:!0});import{applyBackgroundToLine as p,visibleWidth as g}from"../utils.js";class v{static{d(this,"Box")}children=[];paddingX;paddingY;bgFn;cache;constructor(i=1,t=1,h){this.paddingX=i,this.paddingY=t,this.bgFn=h}addChild(i){this.children.push(i),this.invalidateCache()}removeChild(i){const t=this.children.indexOf(i);t!==-1&&(this.children.splice(t,1),this.invalidateCache())}clear(){this.children=[],this.invalidateCache()}setBgFn(i){this.bgFn=i}invalidateCache(){this.cache=void 0}matchCache(i,t,h){const e=this.cache;return!!e&&e.width===i&&e.bgSample===h&&e.childLines.length===t.length&&e.childLines.every((s,a)=>s===t[a])}invalidate(){this.invalidateCache();for(const i of this.children)i.invalidate?.()}render(i){if(this.children.length===0)return[];const t=Math.max(1,i-this.paddingX*2),h=" ".repeat(this.paddingX),e=[];for(const n of this.children){const l=n.render(t);for(const r of l)e.push(h+r)}if(e.length===0)return[];const s=this.bgFn?this.bgFn("test"):void 0;if(this.matchCache(i,e,s))return this.cache.lines;const a=[];for(let n=0;n<this.paddingY;n++)a.push(this.applyBg("",i));for(const n of e)a.push(this.applyBg(n,i));for(let n=0;n<this.paddingY;n++)a.push(this.applyBg("",i));return this.cache={childLines:e,width:i,bgSample:s,lines:a},a}applyBg(i,t){const h=g(i),e=Math.max(0,t-h),s=i+" ".repeat(e);return this.bgFn?p(s,t,this.bgFn):s}}export{v as Box};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var n=Object.defineProperty;var h=(s,e)=>n(s,"name",{value:e,configurable:!0});import{Container as l}from"../tui.js";class C extends l{static{h(this,"CachedContainer")}cache=new Map;_dirty=new WeakSet;markDirty(e){this._dirty.add(e)}addChild(e){super.addChild(e),this._dirty.add(e)}removeChild(e){this.cache.delete(e),super.removeChild(e)}clear(){this.cache.clear(),super.clear()}invalidate(){for(const e of this.children)this._dirty.add(e);super.invalidate()}render(e){const d=[],a=new Map;for(const i of this.children){const r=this.cache.get(i),c=this._dirty.has(i);let t;!c&&r&&r.width===e?t=r.lines:t=i.render(e),a.set(i,{lines:t,width:e}),d.push(...t)}return this.cache=a,this._dirty=new WeakSet,d}}export{C as CachedContainer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.defineProperty;var r=(o,t)=>e(o,"name",{value:t,configurable:!0});import{getEditorKeybindings as n}from"../keybindings.js";import{Loader as l}from"./loader.js";class d extends l{static{r(this,"CancellableLoader")}abortController=new AbortController;onAbort;get signal(){return this.abortController.signal}get aborted(){return this.abortController.signal.aborted}handleInput(t){n().matches(t,"selectCancel")&&(this.abortController.abort(),this.onAbort?.())}dispose(){this.stop()}}export{d as CancellableLoader};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var $=Object.defineProperty;var w=(p,t)=>$(p,"name",{value:t,configurable:!0});import{getEditorKeybindings as j}from"../keybindings.js";import{matchesKey as v}from"../keys.js";import{KillRing as K}from"../kill-ring.js";import{CURSOR_MARKER as N}from"../tui.js";import{UndoStack as X}from"../undo-stack.js";import{getSegmenter as _,isPunctuationChar as T,isWhitespaceChar as b,visibleWidth as m}from"../utils.js";import{SelectList as P}from"./select-list.js";const x=_();function F(p,t){if(!p||t<=0)return[{text:"",startIndex:0,endIndex:0}];if(m(p)<=t)return[{text:p,startIndex:0,endIndex:p.length}];const s=[],i=[...x.segment(p)];let n=0,r=0,o=-1,h=0;for(let l=0;l<i.length;l++){const a=i[l],d=a.segment,g=m(d),c=a.index,I=b(d);n+g>t&&(o>=0?(s.push({text:p.slice(r,o),startIndex:r,endIndex:o}),r=o,n-=h):r<c&&(s.push({text:p.slice(r,c),startIndex:r,endIndex:c}),r=c,n=0),o=-1),n+=g;const S=i[l+1];I&&S&&!b(S.segment)&&(o=S.index,h=n)}return s.push({text:p.slice(r),startIndex:r,endIndex:p.length}),s}w(F,"wordWrapLine");const G=/^\x1b\[(\d+)(?::(\d*))?(?::(\d+))?(?:;(\d+))?(?::(\d+))?u$/,Y=1,D=2,H=4;function z(p){const t=p.match(G);if(!t)return;const e=Number.parseInt(t[1]??"",10);if(!Number.isFinite(e))return;const s=t[2]&&t[2].length>0?Number.parseInt(t[2],10):void 0,i=t[4]?Number.parseInt(t[4],10):1,n=Number.isFinite(i)?i-1:0;if(n&(D|H))return;let r=e;if(n&Y&&typeof s=="number"&&(r=s),!(!Number.isFinite(r)||r<32))try{return String.fromCodePoint(r)}catch{return}}w(z,"decodeKittyPrintable");class nt{static{w(this,"Editor")}state={lines:[""],cursorLine:0,cursorCol:0};focused=!1;tui;theme;paddingX=0;lastWidth=80;scrollOffset=0;borderColor;highlightInput=null;autocompleteProvider;autocompleteList;autocompleteState=null;autocompletePrefix="";autocompleteMaxVisible=5;pastes=new Map;pasteCounter=0;pasteBuffer="";isInPaste=!1;history=[];historyIndex=-1;killRing=new K;lastAction=null;jumpMode=null;preferredVisualCol=null;undoStack=new X;onSubmit;onChange;disableSubmit=!1;placeholder="";constructor(t,e,s={}){this.tui=t,this.theme=e,this.borderColor=e.borderColor;const i=s.paddingX??0;this.paddingX=Number.isFinite(i)?Math.max(0,Math.floor(i)):0;const n=s.autocompleteMaxVisible??5;this.autocompleteMaxVisible=Number.isFinite(n)?Math.max(3,Math.min(20,Math.floor(n))):5}getPaddingX(){return this.paddingX}setPaddingX(t){const e=Number.isFinite(t)?Math.max(0,Math.floor(t)):0;this.paddingX!==e&&(this.paddingX=e,this.tui.requestRender())}getAutocompleteMaxVisible(){return this.autocompleteMaxVisible}setAutocompleteMaxVisible(t){const e=Number.isFinite(t)?Math.max(3,Math.min(20,Math.floor(t))):5;this.autocompleteMaxVisible!==e&&(this.autocompleteMaxVisible=e,this.tui.requestRender())}setAutocompleteProvider(t){this.autocompleteProvider=t}addToHistory(t){const e=t.trim();e&&(this.history.length>0&&this.history[0]===e||(this.history.unshift(e),this.history.length>100&&this.history.pop()))}isEditorEmpty(){return this.state.lines.length===1&&this.state.lines[0]===""}isOnFirstVisualLine(){const t=this.buildVisualLineMap(this.lastWidth);return this.findCurrentVisualLine(t)===0}isCursorOnFirstVisualLine(){return this.isOnFirstVisualLine()}isOnLastVisualLine(){const t=this.buildVisualLineMap(this.lastWidth);return this.findCurrentVisualLine(t)===t.length-1}navigateHistory(t){if(this.lastAction=null,this.history.length===0)return;const e=this.historyIndex-t;e<-1||e>=this.history.length||(this.historyIndex===-1&&e>=0&&this.pushUndoSnapshot(),this.historyIndex=e,this.historyIndex===-1?this.setTextInternal(""):this.setTextInternal(this.history[this.historyIndex]||""))}setTextInternal(t){const e=t.replace(/\r\n/g,`
|
|
2
|
+
`).replace(/\r/g,`
|
|
3
|
+
`).split(`
|
|
4
|
+
`);this.state.lines=e.length===0?[""]:e,this.state.cursorLine=this.state.lines.length-1,this.setCursorCol(this.state.lines[this.state.cursorLine]?.length||0),this.scrollOffset=0,this.onChange&&this.onChange(this.getText())}invalidate(){}render(t){const e=Math.max(0,Math.floor((t-1)/2)),s=Math.min(this.paddingX,e),i=Math.max(1,t-s*2),n=Math.max(1,i-(s?0:1));this.lastWidth=n;const r=this.borderColor("\u2500"),o=this.layoutText(n),h=this.tui.terminal.rows,l=Math.max(5,Math.floor(h*.3));let a=o.findIndex(f=>f.hasCursor);a===-1&&(a=0),a<this.scrollOffset?this.scrollOffset=a:a>=this.scrollOffset+l&&(this.scrollOffset=a-l+1);const d=Math.max(0,o.length-l);this.scrollOffset=Math.max(0,Math.min(this.scrollOffset,d));const g=o.slice(this.scrollOffset,this.scrollOffset+l),c=[],I=" ".repeat(s),S=I;if(this.scrollOffset>0){const f=`\u2500\u2500\u2500 \u2191 ${this.scrollOffset} more `,u=t-m(f);c.push(this.borderColor(f+"\u2500".repeat(Math.max(0,u))))}else c.push(r.repeat(t));const R=this.focused&&!this.autocompleteState;for(const f of g){let u=f.text,L=m(f.text),k=!1;if(f.hasCursor&&f.cursorPos!==void 0){const y=u.slice(0,f.cursorPos),C=u.slice(f.cursorPos),A=R?N:"";if(C.length>0){const M=[...x.segment(C)][0]?.segment||"",U=C.slice(M.length),E=`\x1B[7m${M}\x1B[0m`;u=y+A+E+U}else u=y+A+"\x1B[7m \x1B[0m",L=L+1,L>i&&s>0&&(k=!0)}if(this.highlightInput&&f.hasCursor){const y=/\x1b\[7m[\s\S]*?\x1b\[0m/,C=u.match(y);if(C&&C.index!==void 0){const A=C.index,V=this.highlightInput(u.slice(0,A)),M=this.highlightInput(u.slice(A+C[0].length));u=V+C[0]+M,L=m(u)}}else this.highlightInput&&(u=this.highlightInput(u),L=m(u));const W=" ".repeat(Math.max(0,i-L)),B=k?S.slice(1):S;c.push(`${I}${u}${W}${B}`)}const O=o.length-(this.scrollOffset+g.length);if(O>0){const f=`\u2500\u2500\u2500 \u2193 ${O} more `,u=t-m(f);c.push(this.borderColor(f+"\u2500".repeat(Math.max(0,u))))}else c.push(r.repeat(t));if(this.autocompleteState&&this.autocompleteList){const f=this.autocompleteList.render(i);for(const u of f){const L=m(u),k=" ".repeat(Math.max(0,i-L));c.push(`${I}${u}${k}${S}`)}}return c}handleInput(t){const e=j();if(this.jumpMode!==null){if(e.matches(t,"jumpForward")||e.matches(t,"jumpBackward")){this.jumpMode=null;return}if(t.charCodeAt(0)>=32){const i=this.jumpMode;this.jumpMode=null,this.jumpToChar(t,i);return}this.jumpMode=null}if(t.includes("\x1B[200~")&&(this.isInPaste=!0,this.pasteBuffer="",t=t.replace("\x1B[200~","")),this.isInPaste){this.pasteBuffer+=t;const i=this.pasteBuffer.indexOf("\x1B[201~");if(i!==-1){const n=this.pasteBuffer.substring(0,i);n.length>0&&this.handlePaste(n),this.isInPaste=!1;const r=this.pasteBuffer.substring(i+6);this.pasteBuffer="",r.length>0&&this.handleInput(r);return}return}if(e.matches(t,"copy"))return;if(e.matches(t,"undo")){this.undo();return}if(this.autocompleteState&&this.autocompleteList){if(e.matches(t,"selectCancel")){this.cancelAutocomplete();return}if(e.matches(t,"selectUp")||e.matches(t,"selectDown")){this.autocompleteList.handleInput(t);return}if(e.matches(t,"tab")){const i=this.autocompleteList.getSelectedItem();if(i&&this.autocompleteProvider){this.pushUndoSnapshot(),this.lastAction=null;const n=this.autocompleteProvider.applyCompletion(this.state.lines,this.state.cursorLine,this.state.cursorCol,i,this.autocompletePrefix);this.state.lines=n.lines,this.state.cursorLine=n.cursorLine,this.setCursorCol(n.cursorCol),this.cancelAutocomplete(),this.onChange&&this.onChange(this.getText())}return}if(e.matches(t,"selectConfirm")){const i=this.autocompleteList.getSelectedItem();if(i&&this.autocompleteProvider){this.pushUndoSnapshot(),this.lastAction=null;const n=this.autocompleteProvider.applyCompletion(this.state.lines,this.state.cursorLine,this.state.cursorCol,i,this.autocompletePrefix);if(this.state.lines=n.lines,this.state.cursorLine=n.cursorLine,this.setCursorCol(n.cursorCol),this.autocompletePrefix.startsWith("/"))this.cancelAutocomplete();else{this.cancelAutocomplete(),this.onChange&&this.onChange(this.getText());return}}}}if(e.matches(t,"tab")&&!this.autocompleteState){this.handleTabCompletion();return}if(e.matches(t,"deleteToLineEnd")){this.deleteToEndOfLine();return}if(e.matches(t,"deleteToLineStart")){this.deleteToStartOfLine();return}if(e.matches(t,"deleteWordBackward")){this.deleteWordBackwards();return}if(e.matches(t,"deleteWordForward")){this.deleteWordForward();return}if(e.matches(t,"deleteCharBackward")||v(t,"shift+backspace")){this.handleBackspace();return}if(e.matches(t,"deleteCharForward")||v(t,"shift+delete")){this.handleForwardDelete();return}if(e.matches(t,"yank")){this.yank();return}if(e.matches(t,"yankPop")){this.yankPop();return}if(e.matches(t,"cursorLineStart")){this.moveToLineStart();return}if(e.matches(t,"cursorLineEnd")){this.moveToLineEnd();return}if(e.matches(t,"cursorWordLeft")){this.moveWordBackwards();return}if(e.matches(t,"cursorWordRight")){this.moveWordForwards();return}if(e.matches(t,"newLine")||t.charCodeAt(0)===10&&t.length>1||t==="\x1B\r"||t==="\x1B[13;2~"||t.length>1&&t.includes("\x1B")&&t.includes("\r")||t===`
|
|
5
|
+
`&&t.length===1){if(this.shouldSubmitOnBackslashEnter(t,e)){this.handleBackspace(),this.submitValue();return}this.addNewLine();return}if(e.matches(t,"submit")){if(this.disableSubmit)return;const i=this.state.lines[this.state.cursorLine]||"";if(this.state.cursorCol>0&&i[this.state.cursorCol-1]==="\\"){this.handleBackspace(),this.addNewLine();return}this.submitValue();return}if(e.matches(t,"cursorUp")){this.isEditorEmpty()?this.navigateHistory(-1):this.historyIndex>-1&&this.isOnFirstVisualLine()?this.navigateHistory(-1):this.isOnFirstVisualLine()?this.moveToLineStart():this.moveCursor(-1,0);return}if(e.matches(t,"cursorDown")){this.historyIndex>-1&&this.isOnLastVisualLine()?this.navigateHistory(1):this.isOnLastVisualLine()?this.moveToLineEnd():this.moveCursor(1,0);return}if(e.matches(t,"cursorRight")){this.moveCursor(0,1);return}if(e.matches(t,"cursorLeft")){this.moveCursor(0,-1);return}if(e.matches(t,"pageUp")){this.pageScroll(-1);return}if(e.matches(t,"pageDown")){this.pageScroll(1);return}if(e.matches(t,"jumpForward")){this.jumpMode="forward";return}if(e.matches(t,"jumpBackward")){this.jumpMode="backward";return}if(v(t,"shift+space")){this.insertCharacter(" ");return}const s=z(t);if(s!==void 0){this.insertCharacter(s);return}t.charCodeAt(0)>=32&&this.insertCharacter(t)}layoutText(t){const e=[];if(this.state.lines.length===0||this.state.lines.length===1&&this.state.lines[0]===""){const s=this.placeholder||"";return e.push({text:s,hasCursor:!0,cursorPos:0,isPlaceholder:s!==""}),e}for(let s=0;s<this.state.lines.length;s++){const i=this.state.lines[s]||"",n=s===this.state.cursorLine;if(m(i)<=t)n?e.push({text:i,hasCursor:!0,cursorPos:this.state.cursorCol}):e.push({text:i,hasCursor:!1});else{const o=F(i,t);for(let h=0;h<o.length;h++){const l=o[h];if(!l)continue;const a=this.state.cursorCol,d=h===o.length-1;let g=!1,c=0;n&&(d?(g=a>=l.startIndex,c=a-l.startIndex):(g=a>=l.startIndex&&a<l.endIndex,g&&(c=a-l.startIndex,c>l.text.length&&(c=l.text.length)))),g?e.push({text:l.text,hasCursor:!0,cursorPos:c}):e.push({text:l.text,hasCursor:!1})}}}return e}getText(){return this.state.lines.join(`
|
|
6
|
+
`)}getExpandedText(){let t=this.state.lines.join(`
|
|
7
|
+
`);for(const[e,s]of this.pastes){const i=new RegExp(`\\[paste #${e}( (\\+\\d+ lines|\\d+ chars))?\\]`,"g");t=t.replace(i,s)}return t}getLines(){return[...this.state.lines]}getCursor(){return{line:this.state.cursorLine,col:this.state.cursorCol}}setText(t){this.lastAction=null,this.historyIndex=-1,this.getText()!==t&&this.pushUndoSnapshot(),this.setTextInternal(t)}insertTextAtCursor(t){t&&(this.pushUndoSnapshot(),this.lastAction=null,this.historyIndex=-1,this.insertTextAtCursorInternal(t))}insertTextAtCursorInternal(t){if(!t)return;const e=t.replace(/\r\n/g,`
|
|
8
|
+
`).replace(/\r/g,`
|
|
9
|
+
`),s=e.split(`
|
|
10
|
+
`),i=this.state.lines[this.state.cursorLine]||"",n=i.slice(0,this.state.cursorCol),r=i.slice(this.state.cursorCol);s.length===1?(this.state.lines[this.state.cursorLine]=n+e+r,this.setCursorCol(this.state.cursorCol+e.length)):(this.state.lines=[...this.state.lines.slice(0,this.state.cursorLine),n+s[0],...s.slice(1,-1),s[s.length-1]+r,...this.state.lines.slice(this.state.cursorLine+1)],this.state.cursorLine+=s.length-1,this.setCursorCol((s[s.length-1]||"").length)),this.onChange&&this.onChange(this.getText())}insertCharacter(t,e){this.historyIndex=-1,e||((b(t)||this.lastAction!=="type-word")&&this.pushUndoSnapshot(),this.lastAction="type-word");const s=this.state.lines[this.state.cursorLine]||"",i=s.slice(0,this.state.cursorCol),n=s.slice(this.state.cursorCol);if(this.state.lines[this.state.cursorLine]=i+t+n,this.setCursorCol(this.state.cursorCol+t.length),this.onChange&&this.onChange(this.getText()),this.autocompleteState)this.updateAutocomplete();else if(t==="/"&&this.isAtStartOfMessage())this.tryTriggerAutocomplete();else if(t==="@"){const o=(this.state.lines[this.state.cursorLine]||"").slice(0,this.state.cursorCol),h=o[o.length-2];(o.length===1||h===" "||h===" ")&&this.tryTriggerAutocomplete()}else if(/[a-zA-Z0-9.\-_]/.test(t)){const o=(this.state.lines[this.state.cursorLine]||"").slice(0,this.state.cursorCol);this.isInSlashCommandContext(o)?this.tryTriggerAutocomplete():o.match(/(?:^|[\s])@[^\s]*$/)&&this.tryTriggerAutocomplete()}}handlePaste(t){this.historyIndex=-1,this.lastAction=null,this.pushUndoSnapshot();let i=t.replace(/\r\n/g,`
|
|
11
|
+
`).replace(/\r/g,`
|
|
12
|
+
`).replace(/\t/g," ").split("").filter(o=>o===`
|
|
13
|
+
`||o.charCodeAt(0)>=32).join("");if(/^[/~.]/.test(i)){const o=this.state.lines[this.state.cursorLine]||"",h=this.state.cursorCol>0?o[this.state.cursorCol-1]:"";h&&/\w/.test(h)&&(i=` ${i}`)}const n=i.split(`
|
|
14
|
+
`),r=i.length;if(n.length>10||r>1e3){this.pasteCounter++;const o=this.pasteCounter;this.pastes.set(o,i);const h=n.length>10?`[paste #${o} +${n.length} lines]`:`[paste #${o} ${r} chars]`;this.insertTextAtCursorInternal(h);return}if(n.length===1){for(const o of i)this.insertCharacter(o,!0);return}this.insertTextAtCursorInternal(i)}addNewLine(){this.historyIndex=-1,this.lastAction=null,this.pushUndoSnapshot();const t=this.state.lines[this.state.cursorLine]||"",e=t.slice(0,this.state.cursorCol),s=t.slice(this.state.cursorCol);this.state.lines[this.state.cursorLine]=e,this.state.lines.splice(this.state.cursorLine+1,0,s),this.state.cursorLine++,this.setCursorCol(0),this.onChange&&this.onChange(this.getText())}shouldSubmitOnBackslashEnter(t,e){if(this.disableSubmit||!v(t,"enter"))return!1;const s=e.getKeys("submit");if(!(s.includes("shift+enter")||s.includes("shift+return")))return!1;const n=this.state.lines[this.state.cursorLine]||"";return this.state.cursorCol>0&&n[this.state.cursorCol-1]==="\\"}submitValue(){let t=this.state.lines.join(`
|
|
15
|
+
`).trim();for(const[e,s]of this.pastes){const i=new RegExp(`\\[paste #${e}( (\\+\\d+ lines|\\d+ chars))?\\]`,"g");t=t.replace(i,s)}this.state={lines:[""],cursorLine:0,cursorCol:0},this.pastes.clear(),this.pasteCounter=0,this.historyIndex=-1,this.scrollOffset=0,this.undoStack.clear(),this.lastAction=null,this.onChange&&this.onChange(""),this.onSubmit&&this.onSubmit(t)}handleBackspace(){if(this.historyIndex=-1,this.lastAction=null,this.state.cursorCol>0){this.pushUndoSnapshot();const t=this.state.lines[this.state.cursorLine]||"",e=t.slice(0,this.state.cursorCol),s=[...x.segment(e)],i=s[s.length-1],n=i?i.segment.length:1,r=t.slice(0,this.state.cursorCol-n),o=t.slice(this.state.cursorCol);this.state.lines[this.state.cursorLine]=r+o,this.setCursorCol(this.state.cursorCol-n)}else if(this.state.cursorLine>0){this.pushUndoSnapshot();const t=this.state.lines[this.state.cursorLine]||"",e=this.state.lines[this.state.cursorLine-1]||"";this.state.lines[this.state.cursorLine-1]=e+t,this.state.lines.splice(this.state.cursorLine,1),this.state.cursorLine--,this.setCursorCol(e.length)}if(this.onChange&&this.onChange(this.getText()),this.autocompleteState)this.updateAutocomplete();else{const e=(this.state.lines[this.state.cursorLine]||"").slice(0,this.state.cursorCol);this.isInSlashCommandContext(e)?this.tryTriggerAutocomplete():e.match(/(?:^|[\s])@[^\s]*$/)&&this.tryTriggerAutocomplete()}}setCursorCol(t){this.state.cursorCol=t,this.preferredVisualCol=null}moveToVisualLine(t,e,s){const i=t[e],n=t[s];if(i&&n){const r=this.state.cursorCol-i.startCol,h=e===t.length-1||t[e+1]?.logicalLine!==i.logicalLine?i.length:Math.max(0,i.length-1),a=s===t.length-1||t[s+1]?.logicalLine!==n.logicalLine?n.length:Math.max(0,n.length-1),d=this.computeVerticalMoveColumn(r,h,a);this.state.cursorLine=n.logicalLine;const g=n.startCol+d,c=this.state.lines[n.logicalLine]||"";this.state.cursorCol=Math.min(g,c.length)}}computeVerticalMoveColumn(t,e,s){const i=this.preferredVisualCol!==null,n=t<e,r=s<t;if(!i||n)return r?(this.preferredVisualCol=t,s):(this.preferredVisualCol=null,t);const o=s<this.preferredVisualCol;if(r||o)return s;const h=this.preferredVisualCol;return this.preferredVisualCol=null,h}moveToLineStart(){this.lastAction=null,this.setCursorCol(0)}moveToLineEnd(){this.lastAction=null;const t=this.state.lines[this.state.cursorLine]||"";this.setCursorCol(t.length)}deleteToStartOfLine(){this.historyIndex=-1;const t=this.state.lines[this.state.cursorLine]||"";if(this.state.cursorCol>0){this.pushUndoSnapshot();const e=t.slice(0,this.state.cursorCol);this.killRing.push(e,{prepend:!0,accumulate:this.lastAction==="kill"}),this.lastAction="kill",this.state.lines[this.state.cursorLine]=t.slice(this.state.cursorCol),this.setCursorCol(0)}else if(this.state.cursorLine>0){this.pushUndoSnapshot(),this.killRing.push(`
|
|
16
|
+
`,{prepend:!0,accumulate:this.lastAction==="kill"}),this.lastAction="kill";const e=this.state.lines[this.state.cursorLine-1]||"";this.state.lines[this.state.cursorLine-1]=e+t,this.state.lines.splice(this.state.cursorLine,1),this.state.cursorLine--,this.setCursorCol(e.length)}this.onChange&&this.onChange(this.getText())}deleteToEndOfLine(){this.historyIndex=-1;const t=this.state.lines[this.state.cursorLine]||"";if(this.state.cursorCol<t.length){this.pushUndoSnapshot();const e=t.slice(this.state.cursorCol);this.killRing.push(e,{prepend:!1,accumulate:this.lastAction==="kill"}),this.lastAction="kill",this.state.lines[this.state.cursorLine]=t.slice(0,this.state.cursorCol)}else if(this.state.cursorLine<this.state.lines.length-1){this.pushUndoSnapshot(),this.killRing.push(`
|
|
17
|
+
`,{prepend:!1,accumulate:this.lastAction==="kill"}),this.lastAction="kill";const e=this.state.lines[this.state.cursorLine+1]||"";this.state.lines[this.state.cursorLine]=t+e,this.state.lines.splice(this.state.cursorLine+1,1)}this.onChange&&this.onChange(this.getText())}deleteWordBackwards(){this.historyIndex=-1;const t=this.state.lines[this.state.cursorLine]||"";if(this.state.cursorCol===0){if(this.state.cursorLine>0){this.pushUndoSnapshot(),this.killRing.push(`
|
|
18
|
+
`,{prepend:!0,accumulate:this.lastAction==="kill"}),this.lastAction="kill";const e=this.state.lines[this.state.cursorLine-1]||"";this.state.lines[this.state.cursorLine-1]=e+t,this.state.lines.splice(this.state.cursorLine,1),this.state.cursorLine--,this.setCursorCol(e.length)}}else{this.pushUndoSnapshot();const e=this.lastAction==="kill",s=this.state.cursorCol;this.moveWordBackwards();const i=this.state.cursorCol;this.setCursorCol(s);const n=t.slice(i,this.state.cursorCol);this.killRing.push(n,{prepend:!0,accumulate:e}),this.lastAction="kill",this.state.lines[this.state.cursorLine]=t.slice(0,i)+t.slice(this.state.cursorCol),this.setCursorCol(i)}this.onChange&&this.onChange(this.getText())}deleteWordForward(){this.historyIndex=-1;const t=this.state.lines[this.state.cursorLine]||"";if(this.state.cursorCol>=t.length){if(this.state.cursorLine<this.state.lines.length-1){this.pushUndoSnapshot(),this.killRing.push(`
|
|
19
|
+
`,{prepend:!1,accumulate:this.lastAction==="kill"}),this.lastAction="kill";const e=this.state.lines[this.state.cursorLine+1]||"";this.state.lines[this.state.cursorLine]=t+e,this.state.lines.splice(this.state.cursorLine+1,1)}}else{this.pushUndoSnapshot();const e=this.lastAction==="kill",s=this.state.cursorCol;this.moveWordForwards();const i=this.state.cursorCol;this.setCursorCol(s);const n=t.slice(this.state.cursorCol,i);this.killRing.push(n,{prepend:!1,accumulate:e}),this.lastAction="kill",this.state.lines[this.state.cursorLine]=t.slice(0,this.state.cursorCol)+t.slice(i)}this.onChange&&this.onChange(this.getText())}handleForwardDelete(){this.historyIndex=-1,this.lastAction=null;const t=this.state.lines[this.state.cursorLine]||"";if(this.state.cursorCol<t.length){this.pushUndoSnapshot();const e=t.slice(this.state.cursorCol),i=[...x.segment(e)][0],n=i?i.segment.length:1,r=t.slice(0,this.state.cursorCol),o=t.slice(this.state.cursorCol+n);this.state.lines[this.state.cursorLine]=r+o}else if(this.state.cursorLine<this.state.lines.length-1){this.pushUndoSnapshot();const e=this.state.lines[this.state.cursorLine+1]||"";this.state.lines[this.state.cursorLine]=t+e,this.state.lines.splice(this.state.cursorLine+1,1)}if(this.onChange&&this.onChange(this.getText()),this.autocompleteState)this.updateAutocomplete();else{const s=(this.state.lines[this.state.cursorLine]||"").slice(0,this.state.cursorCol);this.isInSlashCommandContext(s)?this.tryTriggerAutocomplete():s.match(/(?:^|[\s])@[^\s]*$/)&&this.tryTriggerAutocomplete()}}buildVisualLineMap(t){const e=[];for(let s=0;s<this.state.lines.length;s++){const i=this.state.lines[s]||"",n=m(i);if(i.length===0)e.push({logicalLine:s,startCol:0,length:0});else if(n<=t)e.push({logicalLine:s,startCol:0,length:i.length});else{const r=F(i,t);for(const o of r)e.push({logicalLine:s,startCol:o.startIndex,length:o.endIndex-o.startIndex})}}return e}findCurrentVisualLine(t){for(let e=0;e<t.length;e++){const s=t[e];if(s&&s.logicalLine===this.state.cursorLine){const i=this.state.cursorCol-s.startCol,n=e===t.length-1||t[e+1]?.logicalLine!==s.logicalLine;if(i>=0&&(i<s.length||n&&i<=s.length))return e}}return t.length-1}moveCursor(t,e){this.lastAction=null;const s=this.buildVisualLineMap(this.lastWidth),i=this.findCurrentVisualLine(s);if(t!==0){const n=i+t;n>=0&&n<s.length&&this.moveToVisualLine(s,i,n)}if(e!==0){const n=this.state.lines[this.state.cursorLine]||"";if(e>0)if(this.state.cursorCol<n.length){const r=n.slice(this.state.cursorCol),h=[...x.segment(r)][0];this.setCursorCol(this.state.cursorCol+(h?h.segment.length:1))}else if(this.state.cursorLine<this.state.lines.length-1)this.state.cursorLine++,this.setCursorCol(0);else{const r=s[i];r&&(this.preferredVisualCol=this.state.cursorCol-r.startCol)}else if(this.state.cursorCol>0){const r=n.slice(0,this.state.cursorCol),o=[...x.segment(r)],h=o[o.length-1];this.setCursorCol(this.state.cursorCol-(h?h.segment.length:1))}else if(this.state.cursorLine>0){this.state.cursorLine--;const r=this.state.lines[this.state.cursorLine]||"";this.setCursorCol(r.length)}}}pageScroll(t){this.lastAction=null;const e=this.tui.terminal.rows,s=Math.max(5,Math.floor(e*.3)),i=this.buildVisualLineMap(this.lastWidth),n=this.findCurrentVisualLine(i),r=Math.max(0,Math.min(i.length-1,n+t*s));this.moveToVisualLine(i,n,r)}moveWordBackwards(){this.lastAction=null;const t=this.state.lines[this.state.cursorLine]||"";if(this.state.cursorCol===0){if(this.state.cursorLine>0){this.state.cursorLine--;const n=this.state.lines[this.state.cursorLine]||"";this.setCursorCol(n.length)}return}const e=t.slice(0,this.state.cursorCol),s=[...x.segment(e)];let i=this.state.cursorCol;for(;s.length>0&&b(s[s.length-1]?.segment||"");)i-=s.pop()?.segment.length||0;if(s.length>0){const n=s[s.length-1]?.segment||"";if(T(n))for(;s.length>0&&T(s[s.length-1]?.segment||"");)i-=s.pop()?.segment.length||0;else for(;s.length>0&&!b(s[s.length-1]?.segment||"")&&!T(s[s.length-1]?.segment||"");)i-=s.pop()?.segment.length||0}this.setCursorCol(i)}yank(){if(this.killRing.length===0)return;this.pushUndoSnapshot();const t=this.killRing.peek();this.insertYankedText(t),this.lastAction="yank"}yankPop(){if(this.lastAction!=="yank"||this.killRing.length<=1)return;this.pushUndoSnapshot(),this.deleteYankedText(),this.killRing.rotate();const t=this.killRing.peek();this.insertYankedText(t),this.lastAction="yank"}insertYankedText(t){this.historyIndex=-1;const e=t.split(`
|
|
20
|
+
`);if(e.length===1){const s=this.state.lines[this.state.cursorLine]||"",i=s.slice(0,this.state.cursorCol),n=s.slice(this.state.cursorCol);this.state.lines[this.state.cursorLine]=i+t+n,this.setCursorCol(this.state.cursorCol+t.length)}else{const s=this.state.lines[this.state.cursorLine]||"",i=s.slice(0,this.state.cursorCol),n=s.slice(this.state.cursorCol);this.state.lines[this.state.cursorLine]=i+(e[0]||"");for(let o=1;o<e.length-1;o++)this.state.lines.splice(this.state.cursorLine+o,0,e[o]||"");const r=this.state.cursorLine+e.length-1;this.state.lines.splice(r,0,(e[e.length-1]||"")+n),this.state.cursorLine=r,this.setCursorCol((e[e.length-1]||"").length)}this.onChange&&this.onChange(this.getText())}deleteYankedText(){const t=this.killRing.peek();if(!t)return;const e=t.split(`
|
|
21
|
+
`);if(e.length===1){const s=this.state.lines[this.state.cursorLine]||"",i=t.length,n=s.slice(0,this.state.cursorCol-i),r=s.slice(this.state.cursorCol);this.state.lines[this.state.cursorLine]=n+r,this.setCursorCol(this.state.cursorCol-i)}else{const s=this.state.cursorLine-(e.length-1),i=(this.state.lines[s]||"").length-(e[0]||"").length,n=(this.state.lines[this.state.cursorLine]||"").slice(this.state.cursorCol),r=(this.state.lines[s]||"").slice(0,i);this.state.lines.splice(s,e.length,r+n),this.state.cursorLine=s,this.setCursorCol(i)}this.onChange&&this.onChange(this.getText())}pushUndoSnapshot(){this.undoStack.push(this.state)}undo(){this.historyIndex=-1;const t=this.undoStack.pop();t&&(Object.assign(this.state,t),this.lastAction=null,this.preferredVisualCol=null,this.onChange&&this.onChange(this.getText()))}jumpToChar(t,e){this.lastAction=null;const s=e==="forward",i=this.state.lines,n=s?i.length:-1,r=s?1:-1;for(let o=this.state.cursorLine;o!==n;o+=r){const h=i[o]||"",a=o===this.state.cursorLine?s?this.state.cursorCol+1:this.state.cursorCol-1:void 0,d=s?h.indexOf(t,a):h.lastIndexOf(t,a);if(d!==-1){this.state.cursorLine=o,this.setCursorCol(d);return}}}moveWordForwards(){this.lastAction=null;const t=this.state.lines[this.state.cursorLine]||"";if(this.state.cursorCol>=t.length){this.state.cursorLine<this.state.lines.length-1&&(this.state.cursorLine++,this.setCursorCol(0));return}const e=t.slice(this.state.cursorCol),i=x.segment(e)[Symbol.iterator]();let n=i.next(),r=this.state.cursorCol;for(;!n.done&&b(n.value.segment);)r+=n.value.segment.length,n=i.next();if(!n.done){const o=n.value.segment;if(T(o))for(;!n.done&&T(n.value.segment);)r+=n.value.segment.length,n=i.next();else for(;!n.done&&!b(n.value.segment)&&!T(n.value.segment);)r+=n.value.segment.length,n=i.next()}this.setCursorCol(r)}isSlashMenuAllowed(){return this.state.cursorLine===0}isAtStartOfMessage(){if(!this.isSlashMenuAllowed())return!1;const e=(this.state.lines[this.state.cursorLine]||"").slice(0,this.state.cursorCol);return e.trim()===""||e.trim()==="/"}isInSlashCommandContext(t){return this.isSlashMenuAllowed()&&t.trimStart().startsWith("/")}tryTriggerAutocomplete(t=!1){if(!this.autocompleteProvider)return;if(t){const s=this.autocompleteProvider;if(!(!s.shouldTriggerFileCompletion||s.shouldTriggerFileCompletion(this.state.lines,this.state.cursorLine,this.state.cursorCol)))return}const e=this.autocompleteProvider.getSuggestions(this.state.lines,this.state.cursorLine,this.state.cursorCol);e&&e.items.length>0?(this.autocompletePrefix=e.prefix,this.autocompleteList=new P(e.items,this.autocompleteMaxVisible,this.theme.selectList),this.autocompleteState="regular"):this.cancelAutocomplete()}handleTabCompletion(){if(!this.autocompleteProvider)return;const e=(this.state.lines[this.state.cursorLine]||"").slice(0,this.state.cursorCol);this.isInSlashCommandContext(e)&&!e.trimStart().includes(" ")?this.handleSlashCommandCompletion():this.forceFileAutocomplete(!0)}handleSlashCommandCompletion(){this.tryTriggerAutocomplete(!0)}forceFileAutocomplete(t=!1){if(!this.autocompleteProvider)return;const e=this.autocompleteProvider;if(typeof e.getForceFileSuggestions!="function"){this.tryTriggerAutocomplete(!0);return}const s=e.getForceFileSuggestions(this.state.lines,this.state.cursorLine,this.state.cursorCol);if(s&&s.items.length>0){if(t&&s.items.length===1){const i=s.items[0];this.pushUndoSnapshot(),this.lastAction=null;const n=this.autocompleteProvider.applyCompletion(this.state.lines,this.state.cursorLine,this.state.cursorCol,i,s.prefix);this.state.lines=n.lines,this.state.cursorLine=n.cursorLine,this.setCursorCol(n.cursorCol),this.onChange&&this.onChange(this.getText());return}this.autocompletePrefix=s.prefix,this.autocompleteList=new P(s.items,this.autocompleteMaxVisible,this.theme.selectList),this.autocompleteState="force"}else this.cancelAutocomplete()}cancelAutocomplete(){this.autocompleteState=null,this.autocompleteList=void 0,this.autocompletePrefix=""}isShowingAutocomplete(){return this.autocompleteState!==null}updateAutocomplete(){if(!this.autocompleteState||!this.autocompleteProvider)return;if(this.autocompleteState==="force"){this.forceFileAutocomplete();return}const t=this.autocompleteProvider.getSuggestions(this.state.lines,this.state.cursorLine,this.state.cursorCol);t&&t.items.length>0?(this.autocompletePrefix=t.prefix,this.autocompleteList=new P(t.items,this.autocompleteMaxVisible,this.theme.selectList)):this.cancelAutocomplete()}}export{nt as Editor,F as wordWrapLine};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var o=Object.defineProperty;var d=(n,s)=>o(n,"name",{value:s,configurable:!0});import{getCapabilities as l,getImageDimensions as r,imageFallback as c,renderImage as g}from"../terminal-image.js";class I{static{d(this,"Image")}base64Data;mimeType;dimensions;theme;options;imageId;cachedLines;cachedWidth;constructor(s,t,a,i={},e){this.base64Data=s,this.mimeType=t,this.theme=a,this.options=i,this.dimensions=e||r(s,t)||{widthPx:800,heightPx:600},this.imageId=i.imageId}getImageId(){return this.imageId}invalidate(){this.cachedLines=void 0,this.cachedWidth=void 0}render(s){if(this.cachedLines&&this.cachedWidth===s)return this.cachedLines;const t=Math.min(s-2,this.options.maxWidthCells??60),a=l();let i;if(a.images){const e=g(this.base64Data,this.dimensions,{maxWidthCells:t,imageId:this.imageId});if(e){e.imageId&&(this.imageId=e.imageId),i=[];for(let m=0;m<e.rows-1;m++)i.push("");const h=e.rows>1?`\x1B[${e.rows-1}A`:"";i.push(h+e.sequence)}else{const h=c(this.mimeType,this.dimensions,this.options.filename);i=[this.theme.fallbackColor(h)]}}else{const e=c(this.mimeType,this.dimensions,this.options.filename);i=[this.theme.fallbackColor(e)]}return this.cachedLines=i,this.cachedWidth=s,i}}export{I as Image};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var R=Object.defineProperty;var m=(d,s)=>R(d,"name",{value:s,configurable:!0});import{getEditorKeybindings as S}from"../keybindings.js";import{KillRing as y}from"../kill-ring.js";import{CURSOR_MARKER as T}from"../tui.js";import{UndoStack as L}from"../undo-stack.js";import{getSegmenter as U,isPunctuationChar as o,isWhitespaceChar as u,visibleWidth as E}from"../utils.js";const l=U();class D{static{m(this,"Input")}value="";cursor=0;onSubmit;onEscape;focused=!1;pasteBuffer="";isInPaste=!1;killRing=new y;lastAction=null;undoStack=new L;getValue(){return this.value}setValue(s){this.value=s,this.cursor=Math.min(this.cursor,s.length)}handleInput(s){if(s.includes("\x1B[200~")&&(this.isInPaste=!0,this.pasteBuffer="",s=s.replace("\x1B[200~","")),this.isInPaste){this.pasteBuffer+=s;const e=this.pasteBuffer.indexOf("\x1B[201~");if(e!==-1){const r=this.pasteBuffer.substring(0,e);this.handlePaste(r),this.isInPaste=!1;const n=this.pasteBuffer.substring(e+6);this.pasteBuffer="",n&&this.handleInput(n)}return}const t=S();if(t.matches(s,"selectCancel")){this.onEscape&&this.onEscape();return}if(t.matches(s,"undo")){this.undo();return}if(t.matches(s,"submit")||s===`
|
|
2
|
+
`){this.onSubmit&&this.onSubmit(this.value);return}if(t.matches(s,"deleteCharBackward")){this.handleBackspace();return}if(t.matches(s,"deleteCharForward")){this.handleForwardDelete();return}if(t.matches(s,"deleteWordBackward")){this.deleteWordBackwards();return}if(t.matches(s,"deleteWordForward")){this.deleteWordForward();return}if(t.matches(s,"deleteToLineStart")){this.deleteToLineStart();return}if(t.matches(s,"deleteToLineEnd")){this.deleteToLineEnd();return}if(t.matches(s,"yank")){this.yank();return}if(t.matches(s,"yankPop")){this.yankPop();return}if(t.matches(s,"cursorLeft")){if(this.lastAction=null,this.cursor>0){const e=this.value.slice(0,this.cursor),r=[...l.segment(e)],n=r[r.length-1];this.cursor-=n?n.segment.length:1}return}if(t.matches(s,"cursorRight")){if(this.lastAction=null,this.cursor<this.value.length){const e=this.value.slice(this.cursor),n=[...l.segment(e)][0];this.cursor+=n?n.segment.length:1}return}if(t.matches(s,"cursorLineStart")){this.lastAction=null,this.cursor=0;return}if(t.matches(s,"cursorLineEnd")){this.lastAction=null,this.cursor=this.value.length;return}if(t.matches(s,"cursorWordLeft")){this.moveWordBackwards();return}if(t.matches(s,"cursorWordRight")){this.moveWordForwards();return}[...s].some(e=>{const r=e.charCodeAt(0);return r<32||r===127||r>=128&&r<=159})||this.insertCharacter(s)}insertCharacter(s){(u(s)||this.lastAction!=="type-word")&&this.pushUndo(),this.lastAction="type-word",this.value=this.value.slice(0,this.cursor)+s+this.value.slice(this.cursor),this.cursor+=s.length}handleBackspace(){if(this.lastAction=null,this.cursor>0){this.pushUndo();const s=this.value.slice(0,this.cursor),t=[...l.segment(s)],i=t[t.length-1],e=i?i.segment.length:1;this.value=this.value.slice(0,this.cursor-e)+this.value.slice(this.cursor),this.cursor-=e}}handleForwardDelete(){if(this.lastAction=null,this.cursor<this.value.length){this.pushUndo();const s=this.value.slice(this.cursor),i=[...l.segment(s)][0],e=i?i.segment.length:1;this.value=this.value.slice(0,this.cursor)+this.value.slice(this.cursor+e)}}deleteToLineStart(){if(this.cursor===0)return;this.pushUndo();const s=this.value.slice(0,this.cursor);this.killRing.push(s,{prepend:!0,accumulate:this.lastAction==="kill"}),this.lastAction="kill",this.value=this.value.slice(this.cursor),this.cursor=0}deleteToLineEnd(){if(this.cursor>=this.value.length)return;this.pushUndo();const s=this.value.slice(this.cursor);this.killRing.push(s,{prepend:!1,accumulate:this.lastAction==="kill"}),this.lastAction="kill",this.value=this.value.slice(0,this.cursor)}deleteWordBackwards(){if(this.cursor===0)return;const s=this.lastAction==="kill";this.pushUndo();const t=this.cursor;this.moveWordBackwards();const i=this.cursor;this.cursor=t;const e=this.value.slice(i,this.cursor);this.killRing.push(e,{prepend:!0,accumulate:s}),this.lastAction="kill",this.value=this.value.slice(0,i)+this.value.slice(this.cursor),this.cursor=i}deleteWordForward(){if(this.cursor>=this.value.length)return;const s=this.lastAction==="kill";this.pushUndo();const t=this.cursor;this.moveWordForwards();const i=this.cursor;this.cursor=t;const e=this.value.slice(this.cursor,i);this.killRing.push(e,{prepend:!1,accumulate:s}),this.lastAction="kill",this.value=this.value.slice(0,this.cursor)+this.value.slice(i)}yank(){const s=this.killRing.peek();s&&(this.pushUndo(),this.value=this.value.slice(0,this.cursor)+s+this.value.slice(this.cursor),this.cursor+=s.length,this.lastAction="yank")}yankPop(){if(this.lastAction!=="yank"||this.killRing.length<=1)return;this.pushUndo();const s=this.killRing.peek()||"";this.value=this.value.slice(0,this.cursor-s.length)+this.value.slice(this.cursor),this.cursor-=s.length,this.killRing.rotate();const t=this.killRing.peek()||"";this.value=this.value.slice(0,this.cursor)+t+this.value.slice(this.cursor),this.cursor+=t.length,this.lastAction="yank"}pushUndo(){this.undoStack.push({value:this.value,cursor:this.cursor})}undo(){const s=this.undoStack.pop();s&&(this.value=s.value,this.cursor=s.cursor,this.lastAction=null)}moveWordBackwards(){if(this.cursor===0)return;this.lastAction=null;const s=this.value.slice(0,this.cursor),t=[...l.segment(s)];for(;t.length>0&&u(t[t.length-1]?.segment||"");)this.cursor-=t.pop()?.segment.length||0;if(t.length>0){const i=t[t.length-1]?.segment||"";if(o(i))for(;t.length>0&&o(t[t.length-1]?.segment||"");)this.cursor-=t.pop()?.segment.length||0;else for(;t.length>0&&!u(t[t.length-1]?.segment||"")&&!o(t[t.length-1]?.segment||"");)this.cursor-=t.pop()?.segment.length||0}}moveWordForwards(){if(this.cursor>=this.value.length)return;this.lastAction=null;const s=this.value.slice(this.cursor),i=l.segment(s)[Symbol.iterator]();let e=i.next();for(;!e.done&&u(e.value.segment);)this.cursor+=e.value.segment.length,e=i.next();if(!e.done){const r=e.value.segment;if(o(r))for(;!e.done&&o(e.value.segment);)this.cursor+=e.value.segment.length,e=i.next();else for(;!e.done&&!u(e.value.segment)&&!o(e.value.segment);)this.cursor+=e.value.segment.length,e=i.next()}}handlePaste(s){this.lastAction=null,this.pushUndo();const t=s.replace(/\r\n/g,"").replace(/\r/g,"").replace(/\n/g,"");this.value=this.value.slice(0,this.cursor)+t+this.value.slice(this.cursor),this.cursor+=t.length}invalidate(){}render(s){const i=s-2;if(i<=0)return["> "];let e="",r=this.cursor;if(this.value.length<i)e=this.value;else{const a=this.cursor===this.value.length?i-1:i,g=Math.floor(a/2),v=m(h=>{for(;h<this.value.length;){const c=this.value.charCodeAt(h);if(c>=56320&&c<57344){h++;continue}break}return h},"findValidStart"),k=m(h=>{for(;h>0;){const c=this.value.charCodeAt(h-1);if(c>=55296&&c<56320){h--;continue}break}return h},"findValidEnd");if(this.cursor<g)e=this.value.slice(0,k(a)),r=this.cursor;else if(this.cursor>this.value.length-g){const h=v(this.value.length-a);e=this.value.slice(h),r=this.cursor-h}else{const h=v(this.cursor-g);e=this.value.slice(h,k(h+a)),r=g}}const x=[...l.segment(e.slice(r))][0],C=e.slice(0,r),p=x?.segment??" ",w=e.slice(r+p.length),A=this.focused?T:"",b=`\x1B[7m${p}\x1B[27m`,f=C+A+b+w,W=E(f),B=" ".repeat(Math.max(0,i-W));return["> "+f+B]}}export{D as Input};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var n=Object.defineProperty;var t=(s,e)=>n(s,"name",{value:e,configurable:!0});import{Text as l}from"./text.js";class u extends l{static{t(this,"Loader")}spinnerColorFn;messageColorFn;message;frames=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];currentFrame=0;intervalId=null;ui=null;constructor(e,r,i,a="Loading..."){super("",1,0),this.spinnerColorFn=r,this.messageColorFn=i,this.message=a,this.ui=e,this.start()}render(e){return["",...super.render(e)]}start(){this.updateDisplay(),this.intervalId=setInterval(()=>{this.currentFrame=(this.currentFrame+1)%this.frames.length,this.updateDisplay()},80)}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null)}setMessage(e){this.message=e,this.updateDisplay()}updateDisplay(){const e=this.frames[this.currentFrame];this.setText(`${this.spinnerColorFn(e)} ${this.messageColorFn(this.message)}`),this.ui&&this.ui.requestRender()}}export{u as Loader};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
var N=Object.defineProperty;var C=($,t)=>N($,"name",{value:t,configurable:!0});import{marked as j}from"marked";import{isImageLine as P}from"../terminal-image.js";import{applyBackgroundToLine as q,visibleWidth as b,wrapTextWithAnsi as W}from"../utils.js";class Y{static{C(this,"Markdown")}text;paddingX;paddingY;defaultTextStyle;theme;defaultStylePrefix;cachedText;cachedWidth;cachedLines;constructor(t,n,s,e,r){this.text=t,this.paddingX=n,this.paddingY=s,this.theme=e,this.defaultTextStyle=r}setText(t){this.text=t,this.invalidate()}invalidate(){this.cachedText=void 0,this.cachedWidth=void 0,this.cachedLines=void 0}render(t){if(this.cachedLines&&this.cachedText===this.text&&this.cachedWidth===t)return this.cachedLines;const n=Math.max(1,t-this.paddingX*2);if(!this.text||this.text.trim()===""){const p=[];return this.cachedText=this.text,this.cachedWidth=t,this.cachedLines=p,p}const s=this.text.replace(/\t/g," "),e=j.lexer(s),r=[];for(let p=0;p<e.length;p++){const k=e[p],S=e[p+1],I=this.renderToken(k,n,S?.type);r.push(...I)}const o=[];for(const p of r)P(p)?o.push(p):o.push(...W(p,n));const f=" ".repeat(this.paddingX),i=" ".repeat(this.paddingX),a=this.defaultTextStyle?.bgColor,d=[];for(const p of o){if(P(p)){d.push(p);continue}const k=f+p+i;if(a)d.push(q(k,t,a));else{const S=b(k),I=Math.max(0,t-S);d.push(k+" ".repeat(I))}}const L=" ".repeat(t),y=[];for(let p=0;p<this.paddingY;p++){const k=a?q(L,t,a):L;y.push(k)}const m=[...y,...d,...y];return this.cachedText=this.text,this.cachedWidth=t,this.cachedLines=m,m.length>0?m:[""]}applyDefaultStyle(t){if(!this.defaultTextStyle)return t;let n=t;return this.defaultTextStyle.color&&(n=this.defaultTextStyle.color(n)),this.defaultTextStyle.bold&&(n=this.theme.bold(n)),this.defaultTextStyle.italic&&(n=this.theme.italic(n)),this.defaultTextStyle.strikethrough&&(n=this.theme.strikethrough(n)),this.defaultTextStyle.underline&&(n=this.theme.underline(n)),n}getDefaultStylePrefix(){if(!this.defaultTextStyle)return"";if(this.defaultStylePrefix!==void 0)return this.defaultStylePrefix;const t="\0";let n=t;this.defaultTextStyle.color&&(n=this.defaultTextStyle.color(n)),this.defaultTextStyle.bold&&(n=this.theme.bold(n)),this.defaultTextStyle.italic&&(n=this.theme.italic(n)),this.defaultTextStyle.strikethrough&&(n=this.theme.strikethrough(n)),this.defaultTextStyle.underline&&(n=this.theme.underline(n));const s=n.indexOf(t);return this.defaultStylePrefix=s>=0?n.slice(0,s):"",this.defaultStylePrefix}getStylePrefix(t){const s=t("\0"),e=s.indexOf("\0");return e>=0?s.slice(0,e):""}getDefaultInlineStyleContext(){return{applyText:C(t=>this.applyDefaultStyle(t),"applyText"),stylePrefix:this.getDefaultStylePrefix()}}renderToken(t,n,s){const e=[];switch(t.type){case"heading":{const r=t.depth,o=`${"#".repeat(r)} `,f=this.renderInlineTokens(t.tokens||[]);let i;r===1?i=this.theme.heading(this.theme.bold(this.theme.underline(f))):r===2?i=this.theme.heading(this.theme.bold(f)):i=this.theme.heading(this.theme.bold(o+f)),e.push(i),s!=="space"&&e.push("");break}case"paragraph":{const r=this.renderInlineTokens(t.tokens||[]);e.push(r),s&&s!=="list"&&s!=="space"&&e.push("");break}case"code":{const r=this.theme.codeBlockIndent??" ";if(e.push(this.theme.codeBlockBorder(`\`\`\`${t.lang||""}`)),this.theme.highlightCode){const o=this.theme.highlightCode(t.text,t.lang);for(const f of o)e.push(`${r}${f}`)}else{const o=t.text.split(`
|
|
2
|
+
`);for(const f of o)e.push(`${r}${this.theme.codeBlock(f)}`)}e.push(this.theme.codeBlockBorder("```")),s!=="space"&&e.push("");break}case"list":{const r=this.renderList(t,0);e.push(...r);break}case"table":{const r=this.renderTable(t,n);e.push(...r);break}case"blockquote":{const r=C(d=>this.theme.quote(this.theme.italic(d)),"quoteStyle"),o={applyText:r,stylePrefix:this.getStylePrefix(r)},i=this.renderInlineTokens(t.tokens||[],o).split(`
|
|
3
|
+
`),a=Math.max(1,n-2);for(const d of i){const L=W(d,a);for(const y of L)e.push(this.theme.quoteBorder("\u2502 ")+y)}s!=="space"&&e.push("");break}case"hr":e.push(this.theme.hr("\u2500".repeat(Math.min(n,80)))),s!=="space"&&e.push("");break;case"html":"raw"in t&&typeof t.raw=="string"&&e.push(this.applyDefaultStyle(t.raw.trim()));break;case"space":e.push("");break;default:"text"in t&&typeof t.text=="string"&&e.push(t.text)}return e}renderInlineTokens(t,n){let s="";const e=n??this.getDefaultInlineStyleContext(),{applyText:r,stylePrefix:o}=e,f=C(i=>i.split(`
|
|
4
|
+
`).map(d=>r(d)).join(`
|
|
5
|
+
`),"applyTextWithNewlines");for(const i of t)switch(i.type){case"text":i.tokens&&i.tokens.length>0?s+=this.renderInlineTokens(i.tokens,e):s+=f(i.text);break;case"paragraph":s+=this.renderInlineTokens(i.tokens||[],e);break;case"strong":{const a=this.renderInlineTokens(i.tokens||[],e);s+=this.theme.bold(a)+o;break}case"em":{const a=this.renderInlineTokens(i.tokens||[],e);s+=this.theme.italic(a)+o;break}case"codespan":s+=this.theme.code(i.text)+o;break;case"link":{const a=this.renderInlineTokens(i.tokens||[],e),d=i.href.startsWith("mailto:")?i.href.slice(7):i.href;i.text===i.href||i.text===d?s+=this.theme.link(this.theme.underline(a))+o:s+=this.theme.link(this.theme.underline(a))+this.theme.linkUrl(` (${i.href})`)+o;break}case"br":s+=`
|
|
6
|
+
`;break;case"del":{const a=this.renderInlineTokens(i.tokens||[],e);s+=this.theme.strikethrough(a)+o;break}case"html":"raw"in i&&typeof i.raw=="string"&&(s+=f(i.raw));break;default:"text"in i&&typeof i.text=="string"&&(s+=f(i.text))}return s}renderList(t,n){const s=[],e=" ".repeat(n),r=t.start??1;for(let o=0;o<t.items.length;o++){const f=t.items[o],i=t.ordered?`${r+o}. `:"- ",a=this.renderListItem(f.tokens||[],n);if(a.length>0){const d=a[0];/^\s+\x1b\[36m[-\d]/.test(d)?s.push(d):s.push(e+this.theme.listBullet(i)+d);for(let y=1;y<a.length;y++){const m=a[y];/^\s+\x1b\[36m[-\d]/.test(m)?s.push(m):s.push(`${e} ${m}`)}}else s.push(e+this.theme.listBullet(i))}return s}renderListItem(t,n){const s=[];for(const e of t)if(e.type==="list"){const r=this.renderList(e,n+1);s.push(...r)}else if(e.type==="text"){const r=e.tokens&&e.tokens.length>0?this.renderInlineTokens(e.tokens):e.text||"";s.push(r)}else if(e.type==="paragraph"){const r=this.renderInlineTokens(e.tokens||[]);s.push(r)}else if(e.type==="code"){const r=this.theme.codeBlockIndent??" ";if(s.push(this.theme.codeBlockBorder(`\`\`\`${e.lang||""}`)),this.theme.highlightCode){const o=this.theme.highlightCode(e.text,e.lang);for(const f of o)s.push(`${r}${f}`)}else{const o=e.text.split(`
|
|
7
|
+
`);for(const f of o)s.push(`${r}${this.theme.codeBlock(f)}`)}s.push(this.theme.codeBlockBorder("```"))}else{const r=this.renderInlineTokens([e]);r&&s.push(r)}return s}getLongestWordWidth(t,n){const s=t.split(/\s+/).filter(r=>r.length>0);let e=0;for(const r of s)e=Math.max(e,b(r));return n===void 0?e:Math.min(e,n)}wrapCellText(t,n){return W(t,Math.max(1,n))}renderTable(t,n){const s=[],e=t.header.length;if(e===0)return s;const r=3*e+1,o=n-r;if(o<e){const h=t.raw?W(t.raw,n):[];return h.push(""),h}const f=30,i=[],a=[];for(let h=0;h<e;h++){const c=this.renderInlineTokens(t.header[h].tokens||[]);i[h]=b(c),a[h]=Math.max(1,this.getLongestWordWidth(c,f))}for(const h of t.rows)for(let c=0;c<h.length;c++){const x=this.renderInlineTokens(h[c].tokens||[]);i[c]=Math.max(i[c]||0,b(x)),a[c]=Math.max(a[c]||1,this.getLongestWordWidth(x,f))}let d=a,L=d.reduce((h,c)=>h+c,0);if(L>o){d=new Array(e).fill(1);const h=o-e;if(h>0){const c=a.reduce((l,g)=>l+Math.max(0,g-1),0),x=a.map(l=>{const g=Math.max(0,l-1);return c>0?Math.floor(g/c*h):0});for(let l=0;l<e;l++)d[l]+=x[l]??0;const T=x.reduce((l,g)=>l+g,0);let u=h-T;for(let l=0;u>0&&l<e;l++)d[l]++,u--}L=d.reduce((c,x)=>c+x,0)}const y=i.reduce((h,c)=>h+c,0)+r;let m;if(y<=n)m=i.map((h,c)=>Math.max(h,d[c]));else{const h=i.reduce((u,l,g)=>u+Math.max(0,l-d[g]),0),c=Math.max(0,o-L);m=d.map((u,l)=>{const g=i[l],M=Math.max(0,g-u);let w=0;return h>0&&(w=Math.floor(M/h*c)),u+w});const x=m.reduce((u,l)=>u+l,0);let T=o-x;for(;T>0;){let u=!1;for(let l=0;l<e&&T>0;l++)m[l]<i[l]&&(m[l]++,T--,u=!0);if(!u)break}}const p=m.map(h=>"\u2500".repeat(h));s.push(`\u250C\u2500${p.join("\u2500\u252C\u2500")}\u2500\u2510`);const k=t.header.map((h,c)=>{const x=this.renderInlineTokens(h.tokens||[]);return this.wrapCellText(x,m[c])}),S=Math.max(...k.map(h=>h.length));for(let h=0;h<S;h++){const c=k.map((x,T)=>{const u=x[h]||"",l=u+" ".repeat(Math.max(0,m[T]-b(u)));return this.theme.bold(l)});s.push(`\u2502 ${c.join(" \u2502 ")} \u2502`)}const B=`\u251C\u2500${m.map(h=>"\u2500".repeat(h)).join("\u2500\u253C\u2500")}\u2500\u2524`;s.push(B);for(let h=0;h<t.rows.length;h++){const x=t.rows[h].map((u,l)=>{const g=this.renderInlineTokens(u.tokens||[]);return this.wrapCellText(g,m[l])}),T=Math.max(...x.map(u=>u.length));for(let u=0;u<T;u++){const l=x.map((g,M)=>{const w=g[u]||"";return w+" ".repeat(Math.max(0,m[M]-b(w)))});s.push(`\u2502 ${l.join(" \u2502 ")} \u2502`)}h<t.rows.length-1&&s.push(B)}const D=m.map(h=>"\u2500".repeat(h));return s.push(`\u2514\u2500${D.join("\u2500\u2534\u2500")}\u2500\u2518`),s.push(""),s}}export{Y as Markdown};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var C=Object.defineProperty;var p=(f,e)=>C(f,"name",{value:e,configurable:!0});import{getEditorKeybindings as M}from"../keybindings.js";import{truncateToWidth as i}from"../utils.js";const V=p(f=>f.replace(/[\r\n]+/g," ").trim(),"normalizeToSingleLine");class L{static{p(this,"SelectList")}items=[];filteredItems=[];selectedIndex=0;maxVisible=5;theme;onSelect;onCancel;onSelectionChange;constructor(e,t,n){this.items=e,this.filteredItems=e,this.maxVisible=t,this.theme=n}setFilter(e){this.filteredItems=this.items.filter(t=>t.value.toLowerCase().startsWith(e.toLowerCase())),this.selectedIndex=0}setSelectedIndex(e){this.selectedIndex=Math.max(0,Math.min(e,this.filteredItems.length-1))}invalidate(){}render(e){const t=[];if(this.filteredItems.length===0)return t.push(this.theme.noMatch(" No matching commands")),t;const n=Math.max(0,Math.min(this.selectedIndex-Math.floor(this.maxVisible/2),this.filteredItems.length-this.maxVisible)),u=Math.min(n+this.maxVisible,this.filteredItems.length);for(let a=n;a<u;a++){const l=this.filteredItems[a];if(!l)continue;const S=a===this.selectedIndex,x=l.description?V(l.description):void 0;let h="";if(S){const s=l.label||l.value;if(x&&e>40){const c=Math.min(30,e-2-4),o=i(s,c,""),r=" ".repeat(Math.max(1,32-o.length)),g=2+o.length+r.length,m=e-g-2;if(m>10){const d=i(x,m,"");h=this.theme.selectedText(`\u2192 ${o}${r}${d}`)}else{const d=e-2-2;h=this.theme.selectedText(`\u2192 ${i(s,d,"")}`)}}else{const c=e-2-2;h=this.theme.selectedText(`\u2192 ${i(s,c,"")}`)}}else{const I=l.label||l.value,s=" ";if(x&&e>40){const c=Math.min(30,e-s.length-4),o=i(I,c,""),r=" ".repeat(Math.max(1,32-o.length)),g=s.length+o.length+r.length,m=e-g-2;if(m>10){const d=i(x,m,""),W=this.theme.description(r+d);h=s+o+W}else{const d=e-s.length-2;h=s+i(I,d,"")}}else{const c=e-s.length-2;h=s+i(I,c,"")}}t.push(h)}if(n>0||u<this.filteredItems.length){const a=` (${this.selectedIndex+1}/${this.filteredItems.length})`;t.push(this.theme.scrollInfo(i(a,e-2,"")))}return t}handleInput(e){const t=M();if(t.matches(e,"selectUp"))this.selectedIndex=this.selectedIndex===0?this.filteredItems.length-1:this.selectedIndex-1,this.notifySelectionChange();else if(t.matches(e,"selectDown"))this.selectedIndex=this.selectedIndex===this.filteredItems.length-1?0:this.selectedIndex+1,this.notifySelectionChange();else if(t.matches(e,"selectConfirm")){const n=this.filteredItems[this.selectedIndex];n&&this.onSelect&&this.onSelect(n)}else t.matches(e,"selectCancel")&&this.onCancel&&this.onCancel()}notifySelectionChange(){const e=this.filteredItems[this.selectedIndex];e&&this.onSelectionChange&&this.onSelectionChange(e)}getSelectedItem(){return this.filteredItems[this.selectedIndex]||null}}export{L as SelectList};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var v=Object.defineProperty;var I=(d,e)=>v(d,"name",{value:e,configurable:!0});import{fuzzyFilter as V}from"../fuzzy.js";import{getEditorKeybindings as M}from"../keybindings.js";import{truncateToWidth as l,visibleWidth as r,wrapTextWithAnsi as L}from"../utils.js";import{Input as y}from"./input.js";class F{static{I(this,"SettingsList")}items;filteredItems;theme;selectedIndex=0;maxVisible;onChange;onCancel;searchInput;searchEnabled;submenuComponent=null;submenuItemIndex=null;constructor(e,t,s,n,a,c={}){this.items=e,this.filteredItems=e,this.maxVisible=t,this.theme=s,this.onChange=n,this.onCancel=a,this.searchEnabled=c.enableSearch??!1,this.searchEnabled&&(this.searchInput=new y)}updateValue(e,t){const s=this.items.find(n=>n.id===e);s&&(s.currentValue=t)}invalidate(){this.submenuComponent?.invalidate?.()}render(e){return this.submenuComponent?this.submenuComponent.render(e):this.renderMainList(e)}renderMainList(e){const t=[];if(this.searchEnabled&&this.searchInput&&(t.push(...this.searchInput.render(e)),t.push("")),this.items.length===0)return t.push(this.theme.hint(" No settings available")),this.searchEnabled&&this.addHintLine(t,e),t;const s=this.searchEnabled?this.filteredItems:this.items;if(s.length===0)return t.push(l(this.theme.hint(" No matching settings"),e)),this.addHintLine(t,e),t;const n=Math.max(0,Math.min(this.selectedIndex-Math.floor(this.maxVisible/2),s.length-this.maxVisible)),a=Math.min(n+this.maxVisible,s.length),c=Math.min(30,Math.max(...this.items.map(i=>r(i.label))));for(let i=n;i<a;i++){const h=s[i];if(!h)continue;const u=i===this.selectedIndex,o=u?this.theme.cursor:" ",f=r(o),b=h.label+" ".repeat(Math.max(0,c-r(h.label))),x=this.theme.label(b,u),p=" ",g=f+c+r(p),C=e-g-2,E=this.theme.value(l(h.currentValue,C,""),u);t.push(l(o+x+p+E,e))}if(n>0||a<s.length){const i=` (${this.selectedIndex+1}/${s.length})`;t.push(this.theme.hint(l(i,e-2,"")))}const m=s[this.selectedIndex];if(m?.description){t.push("");const i=L(m.description,e-4);for(const h of i)t.push(this.theme.description(` ${h}`))}return this.addHintLine(t,e),t}handleInput(e){if(this.submenuComponent){this.submenuComponent.handleInput?.(e);return}const t=M(),s=this.searchEnabled?this.filteredItems:this.items;if(t.matches(e,"selectUp")){if(s.length===0)return;this.selectedIndex=this.selectedIndex===0?s.length-1:this.selectedIndex-1}else if(t.matches(e,"selectDown")){if(s.length===0)return;this.selectedIndex=this.selectedIndex===s.length-1?0:this.selectedIndex+1}else if(t.matches(e,"selectConfirm")||e===" ")this.activateItem();else if(t.matches(e,"selectCancel"))this.onCancel();else if(this.searchEnabled&&this.searchInput){const n=e.replace(/ /g,"");if(!n)return;this.searchInput.handleInput(n),this.applyFilter(this.searchInput.getValue())}}activateItem(){const e=this.searchEnabled?this.filteredItems[this.selectedIndex]:this.items[this.selectedIndex];if(e){if(e.submenu)this.submenuItemIndex=this.selectedIndex,this.submenuComponent=e.submenu(e.currentValue,t=>{t!==void 0&&(e.currentValue=t,this.onChange(e.id,t)),this.closeSubmenu()});else if(e.values&&e.values.length>0){const s=(e.values.indexOf(e.currentValue)+1)%e.values.length,n=e.values[s];e.currentValue=n,this.onChange(e.id,n)}}}closeSubmenu(){this.submenuComponent=null,this.submenuItemIndex!==null&&(this.selectedIndex=this.submenuItemIndex,this.submenuItemIndex=null)}applyFilter(e){this.filteredItems=V(this.items,e,t=>t.label),this.selectedIndex=0}addHintLine(e,t){e.push(""),e.push(l(this.theme.hint(this.searchEnabled?" Type to search \xB7 Enter/Space to change \xB7 Esc to cancel":" Enter/Space to change \xB7 Esc to cancel"),t))}}export{F as SettingsList};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var r=Object.defineProperty;var n=(e,s)=>r(e,"name",{value:s,configurable:!0});class c{static{n(this,"Spacer")}lines;constructor(s=1){this.lines=s}setLines(s){this.lines=s}invalidate(){}render(s){const t=[];for(let i=0;i<this.lines;i++)t.push("");return t}}export{c as Spacer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var m=Object.defineProperty;var u=(o,t)=>m(o,"name",{value:t,configurable:!0});import{applyBackgroundToLine as p,visibleWidth as L,wrapTextWithAnsi as T}from"../utils.js";class F{static{u(this,"Text")}text;paddingX;paddingY;customBgFn;cachedText;cachedWidth;cachedLines;constructor(t="",s=1,n=1,c){this.text=t,this.paddingX=s,this.paddingY=n,this.customBgFn=c}setText(t){this.text=t,this.cachedText=void 0,this.cachedWidth=void 0,this.cachedLines=void 0}setCustomBgFn(t){this.customBgFn=t,this.cachedText=void 0,this.cachedWidth=void 0,this.cachedLines=void 0}invalidate(){this.cachedText=void 0,this.cachedWidth=void 0,this.cachedLines=void 0}render(t){if(this.cachedLines&&this.cachedText===this.text&&this.cachedWidth===t)return this.cachedLines;if(!this.text||this.text.trim()===""){const e=[];return this.cachedText=this.text,this.cachedWidth=t,this.cachedLines=e,e}const s=this.text.replace(/\t/g," "),n=Math.max(1,t-this.paddingX*2),c=T(s,n),g=" ".repeat(this.paddingX),x=" ".repeat(this.paddingX),h=[];for(const e of c){const i=g+e+x;if(this.customBgFn)h.push(p(i,t,this.customBgFn));else{const f=L(i),l=Math.max(0,t-f);h.push(i+" ".repeat(l))}}const r=" ".repeat(t),d=[];for(let e=0;e<this.paddingY;e++){const i=this.customBgFn?p(r,t,this.customBgFn):r;d.push(i)}const a=[...d,...h,...d];return this.cachedText=this.text,this.cachedWidth=t,this.cachedLines=a,a.length>0?a:[""]}}export{F as Text};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var f=Object.defineProperty;var h=(d,t)=>f(d,"name",{value:t,configurable:!0});import{truncateToWidth as m,visibleWidth as T}from"../utils.js";class b{static{h(this,"TruncatedText")}text;paddingX;paddingY;constructor(t,i=0,n=0){this.text=t,this.paddingX=i,this.paddingY=n}invalidate(){}render(t){const i=[],n=" ".repeat(t);for(let e=0;e<this.paddingY;e++)i.push(n);const r=Math.max(1,t-this.paddingX*2);let s=this.text;const a=this.text.indexOf(`
|
|
2
|
+
`);a!==-1&&(s=this.text.substring(0,a));const o=m(s,r),l=" ".repeat(this.paddingX),c=" ".repeat(this.paddingX),p=l+o+c,g=T(p),x=Math.max(0,t-g),u=p+" ".repeat(x);i.push(u);for(let e=0;e<this.paddingY;e++)i.push(n);return i}}export{b as TruncatedText};
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var w=Object.defineProperty;var p=(s,n)=>w(s,"name",{value:n,configurable:!0});function x(s,n){const h=s.toLowerCase(),o=n.toLowerCase(),c=p(e=>{if(e.length===0)return{matches:!0,score:0};if(e.length>o.length)return{matches:!1,score:0};let g=0,f=0,m=-1,d=0;for(let l=0;l<o.length&&g<e.length;l++)if(o[l]===e[g]){const M=l===0||/[\s\-_./:]/.test(o[l-1]);m===l-1?(d++,f-=d*5):(d=0,m>=0&&(f+=(l-m-1)*2)),M&&(f-=10),f+=l*.1,m=l,g++}return g<e.length?{matches:!1,score:0}:{matches:!0,score:f}},"matchQuery"),t=c(h);if(t.matches)return t;const r=h.match(/^(?<letters>[a-z]+)(?<digits>[0-9]+)$/),i=h.match(/^(?<digits>[0-9]+)(?<letters>[a-z]+)$/),a=r?`${r.groups?.digits??""}${r.groups?.letters??""}`:i?`${i.groups?.letters??""}${i.groups?.digits??""}`:"";if(!a)return t;const u=c(a);return u.matches?{matches:!0,score:u.score+5}:t}p(x,"fuzzyMatch");function k(s,n,h){if(!n.trim())return s;const o=n.trim().split(/\s+/).filter(t=>t.length>0);if(o.length===0)return s;const c=[];for(const t of s){const r=h(t);let i=0,a=!0;for(const u of o){const e=x(u,r);if(e.matches)i+=e.score;else{a=!1;break}}a&&c.push({item:t,totalScore:i})}return c.sort((t,r)=>t.totalScore-r.totalScore),c.map(t=>t.item)}p(k,"fuzzyFilter");function $(s,n,h){if(!n.trim())return s;const o=n.trim().split(/\s+/).filter(t=>t.length>0);if(o.length===0)return s;const c=[];for(const t of s){let r=0,i=!1;for(const a of h){const u=a.getText(t);let e=0;for(const g of o){const f=x(g,u);if(f.matches)e+=f.score;else{e=1/0;break}}e!==1/0&&(r+=e*a.weight,i=!0)}i&&c.push({item:t,totalScore:r})}return c.sort((t,r)=>t.totalScore-r.totalScore),c.map(t=>t.item)}p($,"weightedFuzzyFilter");export{k as fuzzyFilter,x as fuzzyMatch,$ as weightedFuzzyFilter};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{CombinedAutocompleteProvider as o}from"./autocomplete.js";import{Box as i}from"./components/box.js";import{CachedContainer as m}from"./components/cached-container.js";import{CancellableLoader as n}from"./components/cancellable-loader.js";import{Editor as l}from"./components/editor.js";import{Image as x}from"./components/image.js";import{Input as g}from"./components/input.js";import{Loader as y}from"./components/loader.js";import{Markdown as I}from"./components/markdown.js";import{SelectList as C}from"./components/select-list.js";import{SettingsList as D}from"./components/settings-list.js";import{Spacer as h}from"./components/spacer.js";import{Text as R}from"./components/text.js";import{TruncatedText as z}from"./components/truncated-text.js";import{fuzzyFilter as S,fuzzyMatch as L,weightedFuzzyFilter as P}from"./fuzzy.js";import{DEFAULT_EDITOR_KEYBINDINGS as w,EditorKeybindingsManager as M,getEditorKeybindings as W,setEditorKeybindings as B}from"./keybindings.js";import{isKeyRelease as _,isKeyRepeat as k,isKittyProtocolActive as G,Key as N,matchesKey as O,parseKey as J,setKittyProtocolActive as Y}from"./keys.js";import{StdinBuffer as q}from"./stdin-buffer.js";import{ProcessTerminal as Q}from"./terminal.js";import{allocateImageId as X,calculateImageRows as Z,deleteAllKittyImages as $,deleteKittyImage as ee,detectCapabilities as te,encodeITerm2 as oe,encodeKitty as re,getCapabilities as ie,getCellDimensions as ae,getGifDimensions as me,getImageDimensions as se,getJpegDimensions as ne,getPngDimensions as pe,getWebpDimensions as le,imageFallback as fe,renderImage as xe,resetCapabilitiesCache as de,setCellDimensions as ge}from"./terminal-image.js";import{Container as ye,CURSOR_MARKER as Ke,isFocusable as Ie,TUI as be}from"./tui.js";import{truncateToWidth as ue,visibleWidth as De,wrapTextWithAnsi as Te}from"./utils.js";export{i as Box,Ke as CURSOR_MARKER,m as CachedContainer,n as CancellableLoader,o as CombinedAutocompleteProvider,ye as Container,w as DEFAULT_EDITOR_KEYBINDINGS,l as Editor,M as EditorKeybindingsManager,x as Image,g as Input,N as Key,y as Loader,I as Markdown,Q as ProcessTerminal,C as SelectList,D as SettingsList,h as Spacer,q as StdinBuffer,be as TUI,R as Text,z as TruncatedText,X as allocateImageId,Z as calculateImageRows,$ as deleteAllKittyImages,ee as deleteKittyImage,te as detectCapabilities,oe as encodeITerm2,re as encodeKitty,S as fuzzyFilter,L as fuzzyMatch,ie as getCapabilities,ae as getCellDimensions,W as getEditorKeybindings,me as getGifDimensions,se as getImageDimensions,ne as getJpegDimensions,pe as getPngDimensions,le as getWebpDimensions,fe as imageFallback,Ie as isFocusable,_ as isKeyRelease,k as isKeyRepeat,G as isKittyProtocolActive,O as matchesKey,J as parseKey,xe as renderImage,de as resetCapabilitiesCache,ge as setCellDimensions,B as setEditorKeybindings,Y as setKittyProtocolActive,ue as truncateToWidth,De as visibleWidth,P as weightedFuzzyFilter,Te as wrapTextWithAnsi};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var a=Object.defineProperty;var n=(s,e)=>a(s,"name",{value:e,configurable:!0});import{matchesKey as i}from"./keys.js";const l={cursorUp:"up",cursorDown:"down",cursorLeft:["left","ctrl+b"],cursorRight:["right","ctrl+f"],cursorWordLeft:["alt+left","ctrl+left","alt+b"],cursorWordRight:["alt+right","ctrl+right","alt+f"],cursorLineStart:["home","ctrl+a"],cursorLineEnd:["end","ctrl+e"],jumpForward:"ctrl+]",jumpBackward:"ctrl+alt+]",pageUp:"pageUp",pageDown:"pageDown",deleteCharBackward:"backspace",deleteCharForward:["delete","ctrl+d"],deleteWordBackward:["ctrl+w","alt+backspace"],deleteWordForward:["alt+d","alt+delete"],deleteToLineStart:"ctrl+u",deleteToLineEnd:"ctrl+k",newLine:"shift+enter",submit:"enter",tab:"tab",selectUp:"up",selectDown:"down",selectPageUp:"pageUp",selectPageDown:"pageDown",selectConfirm:"enter",selectCancel:["escape","ctrl+c"],copy:"ctrl+c",yank:"ctrl+y",yankPop:"alt+y",undo:"ctrl+-",expandTools:"ctrl+o",toggleSessionPath:"ctrl+p",toggleSessionSort:"ctrl+s",renameSession:"ctrl+r",deleteSession:"ctrl+d",deleteSessionNoninvasive:"ctrl+backspace"};class d{static{n(this,"EditorKeybindingsManager")}actionToKeys;constructor(e={}){this.actionToKeys=new Map,this.buildMaps(e)}buildMaps(e){this.actionToKeys.clear();for(const[r,t]of Object.entries(l)){const o=Array.isArray(t)?t:[t];this.actionToKeys.set(r,[...o])}for(const[r,t]of Object.entries(e)){if(t===void 0)continue;const o=Array.isArray(t)?t:[t];this.actionToKeys.set(r,o)}}matches(e,r){const t=this.actionToKeys.get(r);if(!t)return!1;for(const o of t)if(i(e,o))return!0;return!1}getKeys(e){return this.actionToKeys.get(e)??[]}setConfig(e){this.buildMaps(e)}}let c=null;function y(){return c||(c=new d),c}n(y,"getEditorKeybindings");function g(s){c=s}n(g,"setEditorKeybindings");export{l as DEFAULT_EDITOR_KEYBINDINGS,d as EditorKeybindingsManager,y as getEditorKeybindings,g as setEditorKeybindings};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
var U=Object.defineProperty;var o=(e,f)=>U(e,"name",{value:f,configurable:!0});let m=!1;function T(e){m=e}o(T,"setKittyProtocolActive");function v(){return m}o(v,"isKittyProtocolActive");const N={escape:"escape",esc:"esc",enter:"enter",return:"return",tab:"tab",space:"space",backspace:"backspace",delete:"delete",insert:"insert",clear:"clear",home:"home",end:"end",pageUp:"pageUp",pageDown:"pageDown",up:"up",down:"down",left:"left",right:"right",f1:"f1",f2:"f2",f3:"f3",f4:"f4",f5:"f5",f6:"f6",f7:"f7",f8:"f8",f9:"f9",f10:"f10",f11:"f11",f12:"f12",backtick:"`",hyphen:"-",equals:"=",leftbracket:"[",rightbracket:"]",backslash:"\\",semicolon:";",quote:"'",comma:",",period:".",slash:"/",exclamation:"!",at:"@",hash:"#",dollar:"$",percent:"%",caret:"^",ampersand:"&",asterisk:"*",leftparen:"(",rightparen:")",underscore:"_",plus:"+",pipe:"|",tilde:"~",leftbrace:"{",rightbrace:"}",colon:":",lessthan:"<",greaterthan:">",question:"?",ctrl:o(e=>`ctrl+${e}`,"ctrl"),shift:o(e=>`shift+${e}`,"shift"),alt:o(e=>`alt+${e}`,"alt"),ctrlShift:o(e=>`ctrl+shift+${e}`,"ctrlShift"),shiftCtrl:o(e=>`shift+ctrl+${e}`,"shiftCtrl"),ctrlAlt:o(e=>`ctrl+alt+${e}`,"ctrlAlt"),altCtrl:o(e=>`alt+ctrl+${e}`,"altCtrl"),shiftAlt:o(e=>`shift+alt+${e}`,"shiftAlt"),altShift:o(e=>`alt+shift+${e}`,"altShift"),ctrlShiftAlt:o(e=>`ctrl+shift+alt+${e}`,"ctrlShiftAlt")},S=new Set(["`","-","=","[","]","\\",";","'",",",".","/","!","@","#","$","%","^","&","*","(",")","_","+","|","~","{","}",":","<",">","?"]),u={shift:1,alt:2,ctrl:4},k=192,b={escape:27,tab:9,enter:13,space:32,backspace:127,kpEnter:57414},g={up:-1,down:-2,right:-3,left:-4},l={delete:-10,insert:-11,pageUp:-12,pageDown:-13,home:-14,end:-15},E={up:["\x1B[A","\x1BOA"],down:["\x1B[B","\x1BOB"],right:["\x1B[C","\x1BOC"],left:["\x1B[D","\x1BOD"],home:["\x1B[H","\x1BOH","\x1B[1~","\x1B[7~"],end:["\x1B[F","\x1BOF","\x1B[4~","\x1B[8~"],insert:["\x1B[2~"],delete:["\x1B[3~"],pageUp:["\x1B[5~","\x1B[[5~"],pageDown:["\x1B[6~","\x1B[[6~"],clear:["\x1B[E","\x1BOE"],f1:["\x1BOP","\x1B[11~","\x1B[[A"],f2:["\x1BOQ","\x1B[12~","\x1B[[B"],f3:["\x1BOR","\x1B[13~","\x1B[[C"],f4:["\x1BOS","\x1B[14~","\x1B[[D"],f5:["\x1B[15~","\x1B[[E"],f6:["\x1B[17~"],f7:["\x1B[18~"],f8:["\x1B[19~"],f9:["\x1B[20~"],f10:["\x1B[21~"],f11:["\x1B[23~"],f12:["\x1B[24~"]},I={up:["\x1B[a"],down:["\x1B[b"],right:["\x1B[c"],left:["\x1B[d"],clear:["\x1B[e"],insert:["\x1B[2$"],delete:["\x1B[3$"],pageUp:["\x1B[5$"],pageDown:["\x1B[6$"],home:["\x1B[7$"],end:["\x1B[8$"]},L={up:["\x1BOa"],down:["\x1BOb"],right:["\x1BOc"],left:["\x1BOd"],clear:["\x1BOe"],insert:["\x1B[2^"],delete:["\x1B[3^"],pageUp:["\x1B[5^"],pageDown:["\x1B[6^"],home:["\x1B[7^"],end:["\x1B[8^"]},_={"\x1BOA":"up","\x1BOB":"down","\x1BOC":"right","\x1BOD":"left","\x1BOH":"home","\x1BOF":"end","\x1B[E":"clear","\x1BOE":"clear","\x1BOe":"ctrl+clear","\x1B[e":"shift+clear","\x1B[2~":"insert","\x1B[2$":"shift+insert","\x1B[2^":"ctrl+insert","\x1B[3$":"shift+delete","\x1B[3^":"ctrl+delete","\x1B[[5~":"pageUp","\x1B[[6~":"pageDown","\x1B[a":"shift+up","\x1B[b":"shift+down","\x1B[c":"shift+right","\x1B[d":"shift+left","\x1BOa":"ctrl+up","\x1BOb":"ctrl+down","\x1BOc":"ctrl+right","\x1BOd":"ctrl+left","\x1B[5$":"shift+pageUp","\x1B[6$":"shift+pageDown","\x1B[7$":"shift+home","\x1B[8$":"shift+end","\x1B[5^":"ctrl+pageUp","\x1B[6^":"ctrl+pageDown","\x1B[7^":"ctrl+home","\x1B[8^":"ctrl+end","\x1BOP":"f1","\x1BOQ":"f2","\x1BOR":"f3","\x1BOS":"f4","\x1B[11~":"f1","\x1B[12~":"f2","\x1B[13~":"f3","\x1B[14~":"f4","\x1B[[A":"f1","\x1B[[B":"f2","\x1B[[C":"f3","\x1B[[D":"f4","\x1B[[E":"f5","\x1B[15~":"f5","\x1B[17~":"f6","\x1B[18~":"f7","\x1B[19~":"f8","\x1B[20~":"f9","\x1B[21~":"f10","\x1B[23~":"f11","\x1B[24~":"f12","\x1Bb":"alt+left","\x1Bf":"alt+right","\x1Bp":"alt+up","\x1Bn":"alt+down"},C=o((e,f)=>f.includes(e),"matchesLegacySequence"),w=o((e,f,x)=>x===u.shift?C(e,I[f]):x===u.ctrl?C(e,L[f]):!1,"matchesLegacyModifierSequence");let $="press";function H(e){return e.includes("\x1B[200~")?!1:!!(e.includes(":3u")||e.includes(":3~")||e.includes(":3A")||e.includes(":3B")||e.includes(":3C")||e.includes(":3D")||e.includes(":3H")||e.includes(":3F"))}o(H,"isKeyRelease");function q(e){return e.includes("\x1B[200~")?!1:!!(e.includes(":2u")||e.includes(":2~")||e.includes(":2A")||e.includes(":2B")||e.includes(":2C")||e.includes(":2D")||e.includes(":2H")||e.includes(":2F"))}o(q,"isKeyRepeat");function D(e){if(!e)return"press";const f=parseInt(e,10);return f===2?"repeat":f===3?"release":"press"}o(D,"parseEventType");function A(e){const f=e.match(/^\x1b\[(\d+)(?::(\d*))?(?::(\d+))?(?:;(\d+))?(?::(\d+))?u$/);if(f){const s=parseInt(f[1],10),i=f[2]&&f[2].length>0?parseInt(f[2],10):void 0,r=f[3]?parseInt(f[3],10):void 0,O=f[4]?parseInt(f[4],10):1,y=D(f[5]);return $=y,{codepoint:s,shiftedKey:i,baseLayoutKey:r,modifier:O-1,eventType:y}}const x=e.match(/^\x1b\[1;(\d+)(?::(\d+))?([ABCD])$/);if(x){const s=parseInt(x[1],10),i=D(x[2]),r={A:-1,B:-2,C:-3,D:-4};return $=i,{codepoint:r[x[3]],modifier:s-1,eventType:i}}const t=e.match(/^\x1b\[(\d+)(?:;(\d+))?(?::(\d+))?~$/);if(t){const s=parseInt(t[1],10),i=t[2]?parseInt(t[2],10):1,r=D(t[3]),y={2:l.insert,3:l.delete,5:l.pageUp,6:l.pageDown,7:l.home,8:l.end}[s];if(y!==void 0)return $=r,{codepoint:y,modifier:i-1,eventType:r}}const c=e.match(/^\x1b\[1;(\d+)(?::(\d+))?([HF])$/);if(c){const s=parseInt(c[1],10),i=D(c[2]),r=c[3]==="H"?l.home:l.end;return $=i,{codepoint:r,modifier:s-1,eventType:i}}return null}o(A,"parseKittySequence");function n(e,f,x){const t=A(e);if(!t)return!1;const c=t.modifier&~k,s=x&~k;if(c!==s)return!1;if(t.codepoint===f)return!0;if(t.baseLayoutKey!==void 0&&t.baseLayoutKey===f){const i=t.codepoint,r=i>=97&&i<=122,O=S.has(String.fromCharCode(i));if(!r&&!O)return!0}return!1}o(n,"matchesKittySequence");function K(e,f,x){const t=e.match(/^\x1b\[27;(\d+);(\d+)~$/);if(!t)return!1;const c=parseInt(t[1],10),s=parseInt(t[2],10),i=c-1;return s===f&&i===x}o(K,"matchesModifyOtherKeys");function M(e){const f=e.toLowerCase(),x=f.charCodeAt(0);return x>=97&&x<=122||f==="["||f==="\\"||f==="]"||f==="_"?String.fromCharCode(x&31):f==="-"?"":null}o(M,"rawCtrlChar");function B(e){const f=e.toLowerCase().split("+"),x=f[f.length-1];return x?{key:x,ctrl:f.includes("ctrl"),shift:f.includes("shift"),alt:f.includes("alt")}:null}o(B,"parseKeyId");function P(e,f){const x=B(f);if(!x)return!1;const{key:t,ctrl:c,shift:s,alt:i}=x;let r=0;switch(s&&(r|=u.shift),i&&(r|=u.alt),c&&(r|=u.ctrl),t){case"escape":case"esc":return r!==0?!1:e==="\x1B"||n(e,b.escape,0);case"space":return!m&&(c&&!i&&!s&&e==="\0"||i&&!c&&!s&&e==="\x1B ")?!0:r===0?e===" "||n(e,b.space,0):n(e,b.space,r);case"tab":return s&&!c&&!i?e==="\x1B[Z"||n(e,b.tab,u.shift):r===0?e===" "||n(e,b.tab,0):n(e,b.tab,r);case"enter":case"return":return s&&!c&&!i?n(e,b.enter,u.shift)||n(e,b.kpEnter,u.shift)||K(e,b.enter,u.shift)?!0:m?e==="\x1B\r"||e===`
|
|
2
|
+
`:!1:i&&!c&&!s?n(e,b.enter,u.alt)||n(e,b.kpEnter,u.alt)||K(e,b.enter,u.alt)?!0:m?!1:e==="\x1B\r":r===0?e==="\r"||!m&&e===`
|
|
3
|
+
`||e==="\x1BOM"||n(e,b.enter,0)||n(e,b.kpEnter,0):n(e,b.enter,r)||n(e,b.kpEnter,r);case"backspace":return i&&!c&&!s?e==="\x1B\x7F"||e==="\x1B\b"?!0:n(e,b.backspace,u.alt):r===0?e==="\x7F"||e==="\b"||n(e,b.backspace,0):n(e,b.backspace,r);case"insert":return r===0?C(e,E.insert)||n(e,l.insert,0):w(e,"insert",r)?!0:n(e,l.insert,r);case"delete":return r===0?C(e,E.delete)||n(e,l.delete,0):w(e,"delete",r)?!0:n(e,l.delete,r);case"clear":return r===0?C(e,E.clear):w(e,"clear",r);case"home":return r===0?C(e,E.home)||n(e,l.home,0):w(e,"home",r)?!0:n(e,l.home,r);case"end":return r===0?C(e,E.end)||n(e,l.end,0):w(e,"end",r)?!0:n(e,l.end,r);case"pageup":return r===0?C(e,E.pageUp)||n(e,l.pageUp,0):w(e,"pageUp",r)?!0:n(e,l.pageUp,r);case"pagedown":return r===0?C(e,E.pageDown)||n(e,l.pageDown,0):w(e,"pageDown",r)?!0:n(e,l.pageDown,r);case"up":return i&&!c&&!s?e==="\x1Bp"||n(e,g.up,u.alt):r===0?C(e,E.up)||n(e,g.up,0):w(e,"up",r)?!0:n(e,g.up,r);case"down":return i&&!c&&!s?e==="\x1Bn"||n(e,g.down,u.alt):r===0?C(e,E.down)||n(e,g.down,0):w(e,"down",r)?!0:n(e,g.down,r);case"left":return i&&!c&&!s?e==="\x1B[1;3D"||!m&&e==="\x1BB"||e==="\x1Bb"||n(e,g.left,u.alt):c&&!i&&!s?e==="\x1B[1;5D"||w(e,"left",u.ctrl)||n(e,g.left,u.ctrl):r===0?C(e,E.left)||n(e,g.left,0):w(e,"left",r)?!0:n(e,g.left,r);case"right":return i&&!c&&!s?e==="\x1B[1;3C"||!m&&e==="\x1BF"||e==="\x1Bf"||n(e,g.right,u.alt):c&&!i&&!s?e==="\x1B[1;5C"||w(e,"right",u.ctrl)||n(e,g.right,u.ctrl):r===0?C(e,E.right)||n(e,g.right,0):w(e,"right",r)?!0:n(e,g.right,r);case"f1":case"f2":case"f3":case"f4":case"f5":case"f6":case"f7":case"f8":case"f9":case"f10":case"f11":case"f12":return r!==0?!1:C(e,E[t])}if(t.length===1&&(t>="a"&&t<="z"||S.has(t))){const O=t.charCodeAt(0),y=M(t);return c&&i&&!s&&!m&&y?e===`\x1B${y}`:i&&!c&&!s&&!m&&t>="a"&&t<="z"&&e===`\x1B${t}`?!0:c&&!s&&!i?y&&e===y?!0:n(e,O,u.ctrl):c&&s&&!i?n(e,O,u.shift+u.ctrl):s&&!c&&!i?e===t.toUpperCase()?!0:n(e,O,u.shift):r!==0?n(e,O,r):e===t||n(e,O,0)}return!1}o(P,"matchesKey");function R(e){const f=A(e);if(f){const{codepoint:t,baseLayoutKey:c,modifier:s}=f,i=[],r=s&~k;r&u.shift&&i.push("shift"),r&u.ctrl&&i.push("ctrl"),r&u.alt&&i.push("alt");const O=t>=97&&t<=122,y=S.has(String.fromCharCode(t)),p=O||y?t:c??t;let h;if(p===b.escape?h="escape":p===b.tab?h="tab":p===b.enter||p===b.kpEnter?h="enter":p===b.space?h="space":p===b.backspace?h="backspace":p===l.delete?h="delete":p===l.insert?h="insert":p===l.home?h="home":p===l.end?h="end":p===l.pageUp?h="pageUp":p===l.pageDown?h="pageDown":p===g.up?h="up":p===g.down?h="down":p===g.left?h="left":p===g.right?h="right":(p>=97&&p<=122||S.has(String.fromCharCode(p)))&&(h=String.fromCharCode(p)),h)return i.length>0?`${i.join("+")}+${h}`:h}if(m&&(e==="\x1B\r"||e===`
|
|
4
|
+
`))return"shift+enter";const x=_[e];if(x)return x;if(e==="\x1B")return"escape";if(e==="")return"ctrl+\\";if(e==="")return"ctrl+]";if(e==="")return"ctrl+-";if(e==="\x1B\x1B")return"ctrl+alt+[";if(e==="\x1B")return"ctrl+alt+\\";if(e==="\x1B")return"ctrl+alt+]";if(e==="\x1B")return"ctrl+alt+-";if(e===" ")return"tab";if(e==="\r"||!m&&e===`
|
|
5
|
+
`||e==="\x1BOM")return"enter";if(e==="\0")return"ctrl+space";if(e===" ")return"space";if(e==="\x7F"||e==="\b")return"backspace";if(e==="\x1B[Z")return"shift+tab";if(!m&&e==="\x1B\r")return"alt+enter";if(!m&&e==="\x1B ")return"alt+space";if(e==="\x1B\x7F"||e==="\x1B\b")return"alt+backspace";if(!m&&e==="\x1BB")return"alt+left";if(!m&&e==="\x1BF")return"alt+right";if(!m&&e.length===2&&e[0]==="\x1B"){const t=e.charCodeAt(1);if(t>=1&&t<=26)return`ctrl+alt+${String.fromCharCode(t+96)}`;if(t>=97&&t<=122)return`alt+${String.fromCharCode(t)}`}if(e==="\x1B[A")return"up";if(e==="\x1B[B")return"down";if(e==="\x1B[C")return"right";if(e==="\x1B[D")return"left";if(e==="\x1B[H"||e==="\x1BOH")return"home";if(e==="\x1B[F"||e==="\x1BOF")return"end";if(e==="\x1B[3~")return"delete";if(e==="\x1B[5~")return"pageUp";if(e==="\x1B[6~")return"pageDown";if(e.length===1){const t=e.charCodeAt(0);if(t>=1&&t<=26)return`ctrl+${String.fromCharCode(t+96)}`;if(t>=32&&t<=126)return e}}o(R,"parseKey");export{N as Key,H as isKeyRelease,q as isKeyRepeat,v as isKittyProtocolActive,P as matchesKey,R as parseKey,T as setKittyProtocolActive};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var s=Object.defineProperty;var r=(n,i)=>s(n,"name",{value:i,configurable:!0});class e{static{r(this,"KillRing")}ring=[];push(i,t){if(i)if(t.accumulate&&this.ring.length>0){const h=this.ring.pop();this.ring.push(t.prepend?i+h:h+i)}else this.ring.push(i)}peek(){return this.ring.length>0?this.ring[this.ring.length-1]:void 0}rotate(){if(this.ring.length>1){const i=this.ring.pop();this.ring.unshift(i)}}get length(){return this.ring.length}}export{e as KillRing};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var a=Object.defineProperty;var o=(t,e)=>a(t,"name",{value:e,configurable:!0});import{EventEmitter as b}from"events";const u="\x1B",l="\x1B[200~",c="\x1B[201~";function g(t){if(!t.startsWith(u))return"not-escape";if(t.length===1)return"incomplete";const e=t.slice(1);return e.startsWith("[")?e.startsWith("[M")?t.length>=6?"complete":"incomplete":d(t):e.startsWith("]")?B(t):e.startsWith("P")?C(t):e.startsWith("_")?W(t):e.startsWith("O")?e.length>=2?"complete":"incomplete":(e.length===1,"complete")}o(g,"isCompleteSequence");function d(t){if(!t.startsWith(`${u}[`))return"complete";if(t.length<3)return"incomplete";const e=t.slice(2),i=e[e.length-1],r=i.charCodeAt(0);if(r>=64&&r<=126){if(e.startsWith("<")){if(/^<\d+;\d+;\d+[Mm]$/.test(e))return"complete";if(i==="M"||i==="m"){const s=e.slice(1,-1).split(";");if(s.length===3&&s.every(n=>/^\d+$/.test(n)))return"complete"}return"incomplete"}return"complete"}return"incomplete"}o(d,"isCompleteCsiSequence");function B(t){return!t.startsWith(`${u}]`)||t.endsWith(`${u}\\`)||t.endsWith("\x07")?"complete":"incomplete"}o(B,"isCompleteOscSequence");function C(t){return!t.startsWith(`${u}P`)||t.endsWith(`${u}\\`)?"complete":"incomplete"}o(C,"isCompleteDcsSequence");function W(t){return!t.startsWith(`${u}_`)||t.endsWith(`${u}\\`)?"complete":"incomplete"}o(W,"isCompleteApcSequence");function m(t){const e=[];let i=0;for(;i<t.length;){const r=t.slice(i);if(r.startsWith(u)){let f=1;for(;f<=r.length;){const s=r.slice(0,f),n=g(s);if(n==="complete"){e.push(s),i+=f;break}else if(n==="incomplete")f++;else{e.push(s),i+=f;break}}if(f>r.length)return{sequences:e,remainder:r}}else e.push(r[0]),i++}return{sequences:e,remainder:""}}o(m,"extractCompleteSequences");class M extends b{static{o(this,"StdinBuffer")}buffer="";timeout=null;timeoutMs;pasteMode=!1;pasteBuffer="";constructor(e={}){super(),this.timeoutMs=e.timeout??10}process(e){this.timeout&&(clearTimeout(this.timeout),this.timeout=null);let i;if(Buffer.isBuffer(e))if(e.length===1&&e[0]>127){const s=e[0]-128;i=`\x1B${String.fromCharCode(s)}`}else i=e.toString();else i=e;if(i.length===0&&this.buffer.length===0){this.emit("data","");return}if(this.buffer+=i,this.pasteMode){this.pasteBuffer+=this.buffer,this.buffer="";const s=this.pasteBuffer.indexOf(c);if(s!==-1){const n=this.pasteBuffer.slice(0,s),h=this.pasteBuffer.slice(s+c.length);this.pasteMode=!1,this.pasteBuffer="",this.emit("paste",n),h.length>0&&this.process(h)}return}const r=this.buffer.indexOf(l);if(r!==-1){if(r>0){const n=this.buffer.slice(0,r),h=m(n);for(const p of h.sequences)this.emit("data",p)}this.buffer=this.buffer.slice(r+l.length),this.pasteMode=!0,this.pasteBuffer=this.buffer,this.buffer="";const s=this.pasteBuffer.indexOf(c);if(s!==-1){const n=this.pasteBuffer.slice(0,s),h=this.pasteBuffer.slice(s+c.length);this.pasteMode=!1,this.pasteBuffer="",this.emit("paste",n),h.length>0&&this.process(h)}return}const f=m(this.buffer);this.buffer=f.remainder;for(const s of f.sequences)this.emit("data",s);this.buffer.length>0&&(this.timeout=setTimeout(()=>{const s=this.flush();for(const n of s)this.emit("data",n)},this.timeoutMs))}flush(){if(this.timeout&&(clearTimeout(this.timeout),this.timeout=null),this.buffer.length===0)return[];const e=[this.buffer];return this.buffer="",e}clear(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null),this.buffer="",this.pasteMode=!1,this.pasteBuffer=""}getBuffer(){return this.buffer}destroy(){this.clear()}}export{M as StdinBuffer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var x=Object.defineProperty;var u=(t,e)=>x(t,"name",{value:e,configurable:!0});let c=null,f={widthPx:9,heightPx:18};function d(){return f}u(d,"getCellDimensions");function $(t){f=t}u($,"setCellDimensions");function m(){const t=process.env.TERM_PROGRAM?.toLowerCase()||"",e=process.env.TERM?.toLowerCase()||"",r=process.env.COLORTERM?.toLowerCase()||"";return process.env.KITTY_WINDOW_ID||t==="kitty"?{images:"kitty",trueColor:!0,hyperlinks:!0}:t==="ghostty"||e.includes("ghostty")||process.env.GHOSTTY_RESOURCES_DIR?{images:"kitty",trueColor:!0,hyperlinks:!0}:process.env.WEZTERM_PANE||t==="wezterm"?{images:"kitty",trueColor:!0,hyperlinks:!0}:process.env.ITERM_SESSION_ID||t==="iterm.app"?{images:"iterm2",trueColor:!0,hyperlinks:!0}:t==="vscode"?{images:null,trueColor:!0,hyperlinks:!0}:t==="alacritty"?{images:null,trueColor:!0,hyperlinks:!0}:{images:null,trueColor:r==="truecolor"||r==="24bit",hyperlinks:!0}}u(m,"detectCapabilities");function p(){return c||(c=m()),c}u(p,"getCapabilities");function y(){c=null}u(y,"resetCapabilitiesCache");const h="\x1B_G",a="\x1B]1337;File=";function k(t){return t.startsWith(h)||t.startsWith(a)?!0:t.includes(h)||t.includes(a)}u(k,"isImageLine");function S(){return Math.floor(Math.random()*4294967294)+1}u(S,"allocateImageId");function I(t,e={}){const n=["a=T","f=100","q=2"];if(e.columns&&n.push(`c=${e.columns}`),e.rows&&n.push(`r=${e.rows}`),e.imageId&&n.push(`i=${e.imageId}`),t.length<=4096)return`\x1B_G${n.join(",")};${t}\x1B\\`;const s=[];let i=0,l=!0;for(;i<t.length;){const o=t.slice(i,i+4096),g=i+4096>=t.length;l?(s.push(`\x1B_G${n.join(",")},m=1;${o}\x1B\\`),l=!1):g?s.push(`\x1B_Gm=0;${o}\x1B\\`):s.push(`\x1B_Gm=1;${o}\x1B\\`),i+=4096}return s.join("")}u(I,"encodeKitty");function U(t){return`\x1B_Ga=d,d=I,i=${t}\x1B\\`}u(U,"deleteKittyImage");function v(){return"\x1B_Ga=d,d=A\x1B\\"}u(v,"deleteAllKittyImages");function w(t,e={}){const r=[`inline=${e.inline!==!1?1:0}`];if(e.width!==void 0&&r.push(`width=${e.width}`),e.height!==void 0&&r.push(`height=${e.height}`),e.name){const n=Buffer.from(e.name).toString("base64");r.push(`name=${n}`)}return e.preserveAspectRatio===!1&&r.push("preserveAspectRatio=0"),`\x1B]1337;File=${r.join(";")}:${t}\x07`}u(w,"encodeITerm2");function P(t,e,r={widthPx:9,heightPx:18}){const s=e*r.widthPx/t.widthPx,i=t.heightPx*s,l=Math.ceil(i/r.heightPx);return Math.max(1,l)}u(P,"calculateImageRows");function E(t){try{const e=Buffer.from(t,"base64");if(e.length<24||e[0]!==137||e[1]!==80||e[2]!==78||e[3]!==71)return null;const r=e.readUInt32BE(16),n=e.readUInt32BE(20);return{widthPx:r,heightPx:n}}catch{return null}}u(E,"getPngDimensions");function b(t){try{const e=Buffer.from(t,"base64");if(e.length<2||e[0]!==255||e[1]!==216)return null;let r=2;for(;r<e.length-9;){if(e[r]!==255){r++;continue}const n=e[r+1];if(n>=192&&n<=194){const i=e.readUInt16BE(r+5);return{widthPx:e.readUInt16BE(r+7),heightPx:i}}if(r+3>=e.length)return null;const s=e.readUInt16BE(r+2);if(s<2)return null;r+=2+s}return null}catch{return null}}u(b,"getJpegDimensions");function C(t){try{const e=Buffer.from(t,"base64");if(e.length<10)return null;const r=e.slice(0,6).toString("ascii");if(r!=="GIF87a"&&r!=="GIF89a")return null;const n=e.readUInt16LE(6),s=e.readUInt16LE(8);return{widthPx:n,heightPx:s}}catch{return null}}u(C,"getGifDimensions");function _(t){try{const e=Buffer.from(t,"base64");if(e.length<30)return null;const r=e.slice(0,4).toString("ascii"),n=e.slice(8,12).toString("ascii");if(r!=="RIFF"||n!=="WEBP")return null;const s=e.slice(12,16).toString("ascii");if(s==="VP8 "){if(e.length<30)return null;const i=e.readUInt16LE(26)&16383,l=e.readUInt16LE(28)&16383;return{widthPx:i,heightPx:l}}else if(s==="VP8L"){if(e.length<25)return null;const i=e.readUInt32LE(21),l=(i&16383)+1,o=(i>>14&16383)+1;return{widthPx:l,heightPx:o}}else if(s==="VP8X"){if(e.length<30)return null;const i=(e[24]|e[25]<<8|e[26]<<16)+1,l=(e[27]|e[28]<<8|e[29]<<16)+1;return{widthPx:i,heightPx:l}}return null}catch{return null}}u(_,"getWebpDimensions");function B(t,e){return e==="image/png"?E(t):e==="image/jpeg"?b(t):e==="image/gif"?C(t):e==="image/webp"?_(t):null}u(B,"getImageDimensions");function G(t,e,r={}){const n=p();if(!n.images)return null;const s=r.maxWidthCells??80,i=P(e,s,d());return n.images==="kitty"?{sequence:I(t,{columns:s,rows:i,imageId:r.imageId}),rows:i,imageId:r.imageId}:n.images==="iterm2"?{sequence:w(t,{width:s,height:"auto",preserveAspectRatio:r.preserveAspectRatio??!0}),rows:i}:null}u(G,"renderImage");function L(t,e,r){const n=[];return r&&n.push(r),n.push(`[${t}]`),e&&n.push(`${e.widthPx}x${e.heightPx}`),`[Image: ${n.join(" ")}]`}u(L,"imageFallback");export{S as allocateImageId,P as calculateImageRows,v as deleteAllKittyImages,U as deleteKittyImage,m as detectCapabilities,w as encodeITerm2,I as encodeKitty,p as getCapabilities,d as getCellDimensions,C as getGifDimensions,B as getImageDimensions,b as getJpegDimensions,E as getPngDimensions,_ as getWebpDimensions,L as imageFallback,k as isImageLine,G as renderImage,y as resetCapabilitiesCache,$ as setCellDimensions};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var f=Object.defineProperty;var c=(u,t)=>f(u,"name",{value:t,configurable:!0});import*as p from"node:fs";import{createRequire as h}from"node:module";import{setKittyProtocolActive as l}from"./keys.js";import{StdinBuffer as w}from"./stdin-buffer.js";const m=h(import.meta.url);class P{static{c(this,"ProcessTerminal")}wasRaw=!1;inputHandler;resizeHandler;_kittyProtocolActive=!1;stdinBuffer;stdinDataHandler;writeLogPath=process.env.CATUI_TUI_WRITE_LOG??process.env.NANOPENCIL_TUI_WRITE_LOG??"";get kittyProtocolActive(){return this._kittyProtocolActive}start(t,e){this.inputHandler=t,this.resizeHandler=e,this.wasRaw=process.stdin.isRaw||!1,process.stdin.setRawMode&&process.stdin.setRawMode(!0),process.stdin.setEncoding("utf8"),process.stdin.resume(),process.stdout.write("\x1B[?2004h"),process.stdout.on("resize",this.resizeHandler),process.platform!=="win32"&&process.kill(process.pid,"SIGWINCH"),this.enableWindowsVTInput(),this.queryAndEnableKittyProtocol()}setupStdinBuffer(){this.stdinBuffer=new w({timeout:10});const t=/^\x1b\[\?(\d+)u$/;this.stdinBuffer.on("data",e=>{if(!this._kittyProtocolActive&&e.match(t)){this._kittyProtocolActive=!0,l(!0),process.stdout.write("\x1B[>7u");return}this.inputHandler&&this.inputHandler(e)}),this.stdinBuffer.on("paste",e=>{this.inputHandler&&this.inputHandler(`\x1B[200~${e}\x1B[201~`)}),this.stdinDataHandler=e=>{this.stdinBuffer.process(e)}}queryAndEnableKittyProtocol(){this.setupStdinBuffer(),process.stdin.on("data",this.stdinDataHandler);const t=process.env.TERM_PROGRAM?.toLowerCase()||"";new Set(["warpterminal","waveterm"]).has(t)||process.stdout.write("\x1B[?u")}enableWindowsVTInput(){if(process.platform==="win32")try{const e=m("koffi").load("kernel32.dll"),o=e.func("void* __stdcall GetStdHandle(int)"),i=e.func("bool __stdcall GetConsoleMode(void*, _Out_ uint32_t*)"),r=e.func("bool __stdcall SetConsoleMode(void*, uint32_t)"),d=-10,n=512,s=o(d),a=new Uint32Array(1);i(s,a),r(s,a[0]|n)}catch{}}async drainInput(t=1e3,e=50){this._kittyProtocolActive&&(process.stdout.write("\x1B[<u"),this._kittyProtocolActive=!1,l(!1));const o=this.inputHandler;this.inputHandler=void 0;let i=Date.now();const r=c(()=>{i=Date.now()},"onData");process.stdin.on("data",r);const d=Date.now()+t;try{for(;;){const n=Date.now(),s=d-n;if(s<=0||n-i>=e)break;await new Promise(a=>setTimeout(a,Math.min(e,s)))}}finally{process.stdin.removeListener("data",r),this.inputHandler=o}}stop(){process.stdout.write("\x1B[?2004l"),this._kittyProtocolActive&&(process.stdout.write("\x1B[<u"),this._kittyProtocolActive=!1,l(!1)),this.stdinBuffer&&(this.stdinBuffer.destroy(),this.stdinBuffer=void 0),this.stdinDataHandler&&(process.stdin.removeListener("data",this.stdinDataHandler),this.stdinDataHandler=void 0),this.inputHandler=void 0,this.resizeHandler&&(process.stdout.removeListener("resize",this.resizeHandler),this.resizeHandler=void 0),process.stdin.pause(),process.stdin.setRawMode&&process.stdin.setRawMode(this.wasRaw)}write(t){if(process.stdout.write(t),this.writeLogPath)try{p.appendFileSync(this.writeLogPath,t,{encoding:"utf8"})}catch{}}get columns(){return process.stdout.columns||80}get rows(){return process.stdout.rows||24}moveBy(t){t>0?process.stdout.write(`\x1B[${t}B`):t<0&&process.stdout.write(`\x1B[${-t}A`)}hideCursor(){process.stdout.write("\x1B[?25l")}showCursor(){process.stdout.write("\x1B[?25h")}clearLine(){process.stdout.write("\x1B[K")}clearFromCursor(){process.stdout.write("\x1B[J")}clearScreen(){process.stdout.write("\x1B[2J\x1B[H")}setTitle(t){process.stdout.write(`\x1B]0;${t}\x07`)}}export{P as ProcessTerminal};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
var W=Object.defineProperty;var b=(R,e)=>W(R,"name",{value:e,configurable:!0});import*as $ from"node:fs";import*as V from"node:os";import*as k from"node:path";import{isKeyRelease as N,matchesKey as K}from"./keys.js";import{getCapabilities as G,isImageLine as I,setCellDimensions as j}from"./terminal-image.js";import{extractSegments as J,sliceByColumn as P,sliceWithWidth as Y,visibleWidth as L}from"./utils.js";function _(R){return R!==null&&"focused"in R}b(_,"isFocusable");function Q(){if(process.env.CATUI_SYNC_OUTPUT==="0")return!1;if(process.env.CATUI_SYNC_OUTPUT==="1")return!0;const R=process.env.TERM_PROGRAM?.toLowerCase()||"";return!new Set(["warpterminal","waveterm"]).has(R)}b(Q,"shouldUseSynchronizedOutput");const F="\x1B_pi:c\x07";function q(R,e){if(R===void 0)return;if(typeof R=="number")return R;const t=R.match(/^(\d+(?:\.\d+)?)%$/);if(t)return Math.floor(e*parseFloat(t[1])/100)}b(q,"parseSizeValue");class X{static{b(this,"Container")}children=[];addChild(e){this.children.push(e)}removeChild(e){const t=this.children.indexOf(e);t!==-1&&this.children.splice(t,1)}clear(){this.children=[]}invalidate(){for(const e of this.children)e.invalidate?.()}render(e){const t=[];for(const i of this.children)t.push(...i.render(e));return t}}class D extends X{static{b(this,"TUI")}terminal;previousLines=[];previousWidth=0;focusedComponent=null;inputListeners=new Set;onDebug;renderRequested=!1;renderWaiters=[];cursorRow=0;hardwareCursorRow=0;inputBuffer="";cellSizeQueryPending=!1;showHardwareCursor=process.env.CATUI_HARDWARE_CURSOR==="1";clearOnShrink=process.env.CATUI_CLEAR_ON_SHRINK==="1";maxLinesRendered=0;previousViewportTop=0;fullRedrawCount=0;stopped=!1;synchronizedOutputEnabled=Q();overlayStack=[];debugLog(e){if(process.env.CATUI_DEBUG_RENDER!=="1")return;const t=k.join(V.homedir(),".catui","agent","catui-debug.log");$.appendFileSync(t,`[${new Date().toISOString()}] [tui] ${e}
|
|
2
|
+
`)}constructor(e,t){super(),this.terminal=e,t!==void 0&&(this.showHardwareCursor=t)}get fullRedraws(){return this.fullRedrawCount}getShowHardwareCursor(){return this.showHardwareCursor}setShowHardwareCursor(e){this.showHardwareCursor!==e&&(this.showHardwareCursor=e,e||this.terminal.hideCursor(),this.requestRender())}getClearOnShrink(){return this.clearOnShrink}setClearOnShrink(e){this.clearOnShrink=e}wrapRenderBuffer(e){return this.synchronizedOutputEnabled?`\x1B[?2026h${e}\x1B[?2026l`:e}setFocus(e){_(this.focusedComponent)&&(this.focusedComponent.focused=!1),this.focusedComponent=e,_(e)&&(e.focused=!0)}showOverlay(e,t){const i={component:e,options:t,preFocus:this.focusedComponent,hidden:!1};return this.overlayStack.push(i),this.isOverlayVisible(i)&&this.setFocus(e),this.terminal.hideCursor(),this.requestRender(),{hide:b(()=>{const n=this.overlayStack.indexOf(i);if(n!==-1){if(this.overlayStack.splice(n,1),this.focusedComponent===e){const r=this.getTopmostVisibleOverlay();this.setFocus(r?.component??i.preFocus)}this.overlayStack.length===0&&this.terminal.hideCursor(),this.requestRender()}},"hide"),setHidden:b(n=>{if(i.hidden!==n){if(i.hidden=n,n){if(this.focusedComponent===e){const r=this.getTopmostVisibleOverlay();this.setFocus(r?.component??i.preFocus)}}else this.isOverlayVisible(i)&&this.setFocus(e);this.requestRender()}},"setHidden"),isHidden:b(()=>i.hidden,"isHidden")}}hideOverlay(){const e=this.overlayStack.pop();if(!e)return;const t=this.getTopmostVisibleOverlay();this.setFocus(t?.component??e.preFocus),this.overlayStack.length===0&&this.terminal.hideCursor(),this.requestRender()}hasOverlay(){return this.overlayStack.some(e=>this.isOverlayVisible(e))}isOverlayVisible(e){return e.hidden?!1:e.options?.visible?e.options.visible(this.terminal.columns,this.terminal.rows):!0}getTopmostVisibleOverlay(){for(let e=this.overlayStack.length-1;e>=0;e--)if(this.isOverlayVisible(this.overlayStack[e]))return this.overlayStack[e]}invalidate(){super.invalidate();for(const e of this.overlayStack)e.component.invalidate?.()}start(){this.stopped=!1,this.terminal.start(e=>this.handleInput(e),()=>this.requestRender()),this.terminal.hideCursor(),this.queryCellSize(),this.requestRender()}addInputListener(e){return this.inputListeners.add(e),()=>{this.inputListeners.delete(e)}}removeInputListener(e){this.inputListeners.delete(e)}queryCellSize(){G().images&&(this.cellSizeQueryPending=!0,this.terminal.write("\x1B[16t"))}stop(){if(this.stopped=!0,this.previousLines.length>0){const t=this.previousLines.length-this.hardwareCursorRow;t>0?this.terminal.write(`\x1B[${t}B`):t<0&&this.terminal.write(`\x1B[${-t}A`),this.terminal.write(`\r
|
|
3
|
+
`)}this.terminal.showCursor(),this.terminal.stop()}requestRender(e=!1){e&&(this.previousLines=[],this.previousWidth=-1,this.cursorRow=0,this.hardwareCursorRow=0,this.maxLinesRendered=0,this.previousViewportTop=0),!this.renderRequested&&(this.renderRequested=!0,this.debugLog(`requestRender (force=${e})`),process.nextTick(()=>{const t=this.renderWaiters.splice(0);this.renderRequested=!1;try{this.doRender()}finally{for(const i of t)i()}}))}async awaitRender(){this.renderRequested&&await new Promise(e=>{this.renderWaiters.push(e)})}handleInput(e){if(this.inputListeners.size>0){let i=e;for(const n of this.inputListeners){const r=n(i);if(r?.consume)return;r?.data!==void 0&&(i=r.data)}if(i.length===0)return;e=i}if(this.cellSizeQueryPending){this.inputBuffer+=e;const i=this.parseCellSizeResponse();if(i.length===0)return;e=i}if(K(e,"shift+ctrl+d")&&this.onDebug){this.onDebug();return}const t=this.overlayStack.find(i=>i.component===this.focusedComponent);if(t&&!this.isOverlayVisible(t)){const i=this.getTopmostVisibleOverlay();i?this.setFocus(i.component):this.setFocus(t.preFocus)}if(this.focusedComponent?.handleInput){if(N(e)&&!this.focusedComponent.wantsKeyRelease)return;this.focusedComponent.handleInput(e),this.requestRender()}}parseCellSizeResponse(){const e=/\x1b\[6;(\d+);(\d+)t/,t=this.inputBuffer.match(e);if(t){const r=parseInt(t[1],10),l=parseInt(t[2],10);r>0&&l>0&&(j({widthPx:l,heightPx:r}),this.invalidate(),this.requestRender()),this.inputBuffer=this.inputBuffer.replace(e,""),this.cellSizeQueryPending=!1}if(/\x1b(\[6?;?[\d;]*)?$/.test(this.inputBuffer)){const r=this.inputBuffer[this.inputBuffer.length-1];if(!/[a-zA-Z~]/.test(r))return""}const n=this.inputBuffer;return this.inputBuffer="",this.cellSizeQueryPending=!1,n}resolveOverlayLayout(e,t,i,n){const r=e??{},l=typeof r.margin=="number"?{top:r.margin,right:r.margin,bottom:r.margin,left:r.margin}:r.margin??{},s=Math.max(0,l.top??0),w=Math.max(0,l.right??0),y=Math.max(0,l.bottom??0),u=Math.max(0,l.left??0),v=Math.max(1,i-u-w),m=Math.max(1,n-s-y);let h=q(r.width,i)??Math.min(80,v);r.minWidth!==void 0&&(h=Math.max(h,r.minWidth)),h=Math.max(1,Math.min(h,v));let c=q(r.maxHeight,n);c!==void 0&&(c=Math.max(1,Math.min(c,m)));const d=c!==void 0?Math.min(t,c):t;let p,x;if(r.row!==void 0)if(typeof r.row=="string"){const C=r.row.match(/^(\d+(?:\.\d+)?)%$/);if(C){const g=Math.max(0,m-d),M=parseFloat(C[1])/100;p=s+Math.floor(g*M)}else p=this.resolveAnchorRow("center",d,m,s)}else p=r.row;else{const C=r.anchor??"center";p=this.resolveAnchorRow(C,d,m,s)}if(r.col!==void 0)if(typeof r.col=="string"){const C=r.col.match(/^(\d+(?:\.\d+)?)%$/);if(C){const g=Math.max(0,v-h),M=parseFloat(C[1])/100;x=u+Math.floor(g*M)}else x=this.resolveAnchorCol("center",h,v,u)}else x=r.col;else{const C=r.anchor??"center";x=this.resolveAnchorCol(C,h,v,u)}return r.offsetY!==void 0&&(p+=r.offsetY),r.offsetX!==void 0&&(x+=r.offsetX),p=Math.max(s,Math.min(p,n-y-d)),x=Math.max(u,Math.min(x,i-w-h)),{width:h,row:p,col:x,maxHeight:c}}resolveAnchorRow(e,t,i,n){switch(e){case"top-left":case"top-center":case"top-right":return n;case"bottom-left":case"bottom-center":case"bottom-right":return n+i-t;case"left-center":case"center":case"right-center":return n+Math.floor((i-t)/2)}}resolveAnchorCol(e,t,i,n){switch(e){case"top-left":case"left-center":case"bottom-left":return n;case"top-right":case"right-center":case"bottom-right":return n+i-t;case"top-center":case"center":case"bottom-center":return n+Math.floor((i-t)/2)}}compositeOverlays(e,t,i){if(this.overlayStack.length===0)return e;const n=[...e],r=[];let l=n.length;for(const u of this.overlayStack){if(!this.isOverlayVisible(u))continue;const{component:v,options:m}=u,{width:h,maxHeight:c}=this.resolveOverlayLayout(m,0,t,i);let d=v.render(h);c!==void 0&&d.length>c&&(d=d.slice(0,c));const{row:p,col:x}=this.resolveOverlayLayout(m,d.length,t,i);r.push({overlayLines:d,row:p,col:x,w:h}),l=Math.max(l,p+d.length)}const s=Math.max(this.maxLinesRendered,l);for(;n.length<s;)n.push("");const w=Math.max(0,s-i),y=new Set;for(const{overlayLines:u,row:v,col:m,w:h}of r)for(let c=0;c<u.length;c++){const d=w+v+c;if(d>=0&&d<n.length){const p=L(u[c])>h?P(u[c],0,h,!0):u[c];n[d]=this.compositeLineAt(n[d],p,m,h,t),y.add(d)}}for(const u of y)L(n[u])>t&&(n[u]=P(n[u],0,t,!0));return n}static SEGMENT_RESET="\x1B[0m\x1B]8;;\x07";applyLineResets(e){const t=D.SEGMENT_RESET;for(let i=0;i<e.length;i++){const n=e[i];I(n)||(e[i]=n+t)}return e}compositeLineAt(e,t,i,n,r){if(I(e))return e;const l=i+n,s=J(e,i,l,r-l,!0),w=Y(t,0,n,!0),y=Math.max(0,i-s.beforeWidth),u=Math.max(0,n-w.width),v=Math.max(i,s.beforeWidth),m=Math.max(n,w.width),h=Math.max(0,r-v-m),c=Math.max(0,h-s.afterWidth),d=D.SEGMENT_RESET,p=s.before+" ".repeat(y)+d+w.text+" ".repeat(u)+d+s.after+" ".repeat(c);return L(p)<=r?p:P(p,0,r,!0)}extractCursorPosition(e,t){const i=Math.max(0,e.length-t);for(let n=e.length-1;n>=i;n--){const r=e[n],l=r.indexOf(F);if(l!==-1){const s=r.slice(0,l),w=L(s);return e[n]=r.slice(0,l)+r.slice(l+F.length),{row:n,col:w}}}return null}doRender(){if(this.stopped)return;const e=this.terminal.columns,t=this.terminal.rows;this.debugLog(`doRender: width=${e} height=${t} stopped=${this.stopped} children=${this.children.length}`);let i=Math.max(0,this.maxLinesRendered-t),n=this.previousViewportTop,r=this.hardwareCursorRow;const l=b(o=>{const a=r-n;return o-i-a},"computeLineDiff");let s=this.render(e);this.overlayStack.length>0&&(s=this.compositeOverlays(s,e,t));const w=this.extractCursorPosition(s,t);s=this.applyLineResets(s);const y=this.previousWidth!==0&&this.previousWidth!==e,u=b(o=>{this.fullRedrawCount+=1;let a="";o&&(a+="\x1B[3J\x1B[2J\x1B[H");for(let f=0;f<s.length;f++)f>0&&(a+=`\r
|
|
4
|
+
`),a+=s[f];this.terminal.write(this.wrapRenderBuffer(a)),this.cursorRow=Math.max(0,s.length-1),this.hardwareCursorRow=this.cursorRow,o?this.maxLinesRendered=s.length:this.maxLinesRendered=Math.max(this.maxLinesRendered,s.length),this.previousViewportTop=Math.max(0,this.maxLinesRendered-t),this.positionHardwareCursor(w,s.length),this.previousLines=s,this.previousWidth=e},"fullRender"),v=process.env.CATUI_DEBUG_REDRAW==="1",m=b(o=>{if(!v)return;const a=k.join(V.homedir(),".catui","agent","catui-debug.log"),f=`[${new Date().toISOString()}] fullRender: ${o} (prev=${this.previousLines.length}, new=${s.length}, height=${t})
|
|
5
|
+
`;$.appendFileSync(a,f)},"logRedraw");if(this.previousLines.length===0&&!y){m("first render"),u(!1);return}if(y){m(`width changed (${this.previousWidth} -> ${e})`),u(!0);return}if(this.clearOnShrink&&s.length<this.maxLinesRendered&&this.overlayStack.length===0){m(`clearOnShrink (maxLinesRendered=${this.maxLinesRendered})`),u(!0);return}let h=-1,c=-1;const d=Math.max(s.length,this.previousLines.length);for(let o=0;o<d;o++){const a=o<this.previousLines.length?this.previousLines[o]:"",f=o<s.length?s[o]:"";a!==f&&(h===-1&&(h=o),c=o)}const p=s.length>this.previousLines.length;p&&(h===-1&&(h=this.previousLines.length),c=s.length-1);const x=p&&h===this.previousLines.length&&h>0;if(h===-1){this.positionHardwareCursor(w,s.length),this.previousViewportTop=Math.max(0,this.maxLinesRendered-t);return}if(h>=s.length){if(this.previousLines.length>s.length){let o="";const a=Math.max(0,s.length-1),f=l(a);f>0?o+=`\x1B[${f}B`:f<0&&(o+=`\x1B[${-f}A`),o+="\r";const S=this.previousLines.length-s.length;if(S>t){m(`extraLines > height (${S} > ${t})`),u(!0);return}S>0&&(o+="\x1B[1B");for(let B=0;B<S;B++)o+="\r\x1B[2K",B<S-1&&(o+="\x1B[1B");S>0&&(o+=`\x1B[${S}A`),this.terminal.write(this.wrapRenderBuffer(o)),this.cursorRow=a,this.hardwareCursorRow=a}this.positionHardwareCursor(w,s.length),this.previousLines=s,this.previousWidth=e,this.previousViewportTop=Math.max(0,this.maxLinesRendered-t);return}const C=Math.max(0,this.previousLines.length-t);if(h<C){m(`firstChanged < viewportTop (${h} < ${C})`),u(!0);return}let g="";const M=n+t-1,A=x?h-1:h;if(A>M){const o=Math.max(0,Math.min(t-1,r-n)),a=t-1-o;a>0&&(g+=`\x1B[${a}B`);const f=A-M;g+=`\r
|
|
6
|
+
`.repeat(f),n+=f,i+=f,r=A}const O=l(A);O>0?g+=`\x1B[${O}B`:O<0&&(g+=`\x1B[${-O}A`),g+=x?`\r
|
|
7
|
+
`:"\r";const T=Math.min(c,s.length-1);for(let o=h;o<=T;o++){o>h&&(g+=`\r
|
|
8
|
+
`),g+="\x1B[2K";const a=s[o];if(!I(a)&&L(a)>e){const S=k.join(V.homedir(),".catui","agent","catui-crash.log"),B=[`Crash at ${new Date().toISOString()}`,`Terminal width: ${e}`,`Line ${o} visible width: ${L(a)}`,"","=== All rendered lines ===",...s.map((U,H)=>`[${H}] (w=${L(U)}) ${U}`),""].join(`
|
|
9
|
+
`);$.mkdirSync(k.dirname(S),{recursive:!0}),$.writeFileSync(S,B),this.stop();const z=[`Rendered line ${o} exceeds terminal width (${L(a)} > ${e}).`,"","This is likely caused by a custom TUI component not truncating its output.","Use visibleWidth() to measure and truncateToWidth() to truncate lines.","",`Debug log written to: ${S}`].join(`
|
|
10
|
+
`);throw new Error(z)}g+=a}let E=T;if(this.previousLines.length>s.length){if(T<s.length-1){const a=s.length-1-T;g+=`\x1B[${a}B`,E=s.length-1}const o=this.previousLines.length-s.length;for(let a=s.length;a<this.previousLines.length;a++)g+=`\r
|
|
11
|
+
\x1B[2K`;g+=`\x1B[${o}A`}if(process.env.CATUI_TUI_DEBUG==="1"){const o="/tmp/tui";$.mkdirSync(o,{recursive:!0});const a=k.join(o,`render-${Date.now()}-${Math.random().toString(36).slice(2)}.log`),f=[`firstChanged: ${h}`,`viewportTop: ${i}`,`cursorRow: ${this.cursorRow}`,`height: ${t}`,`lineDiff: ${O}`,`hardwareCursorRow: ${r}`,`renderEnd: ${T}`,`finalCursorRow: ${E}`,`cursorPos: ${JSON.stringify(w)}`,`newLines.length: ${s.length}`,`previousLines.length: ${this.previousLines.length}`,"","=== newLines ===",JSON.stringify(s,null,2),"","=== previousLines ===",JSON.stringify(this.previousLines,null,2),"","=== buffer ===",JSON.stringify(g)].join(`
|
|
12
|
+
`);$.writeFileSync(a,f)}this.terminal.write(this.wrapRenderBuffer(g)),this.cursorRow=Math.max(0,s.length-1),this.hardwareCursorRow=E,this.maxLinesRendered=Math.max(this.maxLinesRendered,s.length),this.previousViewportTop=Math.max(0,this.maxLinesRendered-t),this.positionHardwareCursor(w,s.length),this.previousLines=s,this.previousWidth=e}positionHardwareCursor(e,t){if(!e||t<=0){this.terminal.hideCursor();return}const i=Math.max(0,Math.min(e.row,t-1)),n=Math.max(0,e.col),r=i-this.hardwareCursorRow;let l="";r>0?l+=`\x1B[${r}B`:r<0&&(l+=`\x1B[${-r}A`),l+=`\x1B[${n+1}G`,l&&this.terminal.write(l),this.hardwareCursorRow=i,this.showHardwareCursor?this.terminal.showCursor():this.terminal.hideCursor()}}export{F as CURSOR_MARKER,X as Container,D as TUI,_ as isFocusable,L as visibleWidth};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var c=Object.defineProperty;var e=(s,t)=>c(s,"name",{value:t,configurable:!0});class a{static{e(this,"UndoStack")}stack=[];push(t){this.stack.push(structuredClone(t))}pop(){return this.stack.pop()}clear(){this.stack.length=0}get length(){return this.stack.length}}export{a as UndoStack};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var $=Object.defineProperty;var g=(e,n)=>$(e,"name",{value:n,configurable:!0});import{eastAsianWidth as R}from"get-east-asian-width";const m=new Intl.Segmenter(void 0,{granularity:"grapheme"});function D(){return m}g(D,"getSegmenter");function y(e){const n=e.codePointAt(0);return n>=126976&&n<=130047||n>=8960&&n<=9215||n>=9728&&n<=10175||n>=11088&&n<=11093||e.includes("\uFE0F")||e.length>2}g(y,"couldBeEmoji");const P=new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Mark}|\\p{Surrogate})+$","v"),T=new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+","v"),_=new RegExp("^\\p{RGI_Emoji}$","v"),I=512,C=new Map;function w(e){if(P.test(e))return 0;if(y(e)&&_.test(e))return 2;const o=e.replace(T,"").codePointAt(0);if(o===void 0)return 0;if(o>=127462&&o<=127487)return 2;let t=R(o);if(e.length>1)for(const r of e.slice(1)){const i=r.codePointAt(0);i>=65280&&i<=65519&&(t+=R(i))}return t}g(w,"graphemeWidth");function x(e){if(e.length===0)return 0;let n=!0;for(let i=0;i<e.length;i++){const s=e.charCodeAt(i);if(s<32||s>126){n=!1;break}}if(n)return e.length;const o=C.get(e);if(o!==void 0)return o;let t=e;e.includes(" ")&&(t=t.replace(/\t/g," ")),t.includes("\x1B")&&(t=t.replace(/\x1b\[[0-9;]*[mGKHJ]/g,""),t=t.replace(/\x1b\]8;;[^\x07]*\x07/g,""),t=t.replace(/\x1b_[^\x07\x1b]*(?:\x07|\x1b\\)/g,""));let r=0;for(const{segment:i}of m.segment(t))r+=w(i);if(C.size>=I){const i=C.keys().next().value;i!==void 0&&C.delete(i)}return C.set(e,r),r}g(x,"visibleWidth");function k(e,n){if(n>=e.length||e[n]!=="\x1B")return null;const o=e[n+1];if(o==="["){let t=n+2;for(;t<e.length&&!/[mGKHJ]/.test(e[t]);)t++;return t<e.length?{code:e.substring(n,t+1),length:t+1-n}:null}if(o==="]"){let t=n+2;for(;t<e.length;){if(e[t]==="\x07")return{code:e.substring(n,t+1),length:t+1-n};if(e[t]==="\x1B"&&e[t+1]==="\\")return{code:e.substring(n,t+2),length:t+2-n};t++}return null}if(o==="_"){let t=n+2;for(;t<e.length;){if(e[t]==="\x07")return{code:e.substring(n,t+1),length:t+1-n};if(e[t]==="\x1B"&&e[t+1]==="\\")return{code:e.substring(n,t+2),length:t+2-n};t++}return null}return null}g(k,"extractAnsiCode");class W{static{g(this,"AnsiCodeTracker")}bold=!1;dim=!1;italic=!1;underline=!1;blink=!1;inverse=!1;hidden=!1;strikethrough=!1;fgColor=null;bgColor=null;process(n){if(!n.endsWith("m"))return;const o=n.match(/\x1b\[([\d;]*)m/);if(!o)return;const t=o[1];if(t===""||t==="0"){this.reset();return}const r=t.split(";");let i=0;for(;i<r.length;){const s=Number.parseInt(r[i],10);if(s===38||s===48){if(r[i+1]==="5"&&r[i+2]!==void 0){const l=`${r[i]};${r[i+1]};${r[i+2]}`;s===38?this.fgColor=l:this.bgColor=l,i+=3;continue}else if(r[i+1]==="2"&&r[i+4]!==void 0){const l=`${r[i]};${r[i+1]};${r[i+2]};${r[i+3]};${r[i+4]}`;s===38?this.fgColor=l:this.bgColor=l,i+=5;continue}}switch(s){case 0:this.reset();break;case 1:this.bold=!0;break;case 2:this.dim=!0;break;case 3:this.italic=!0;break;case 4:this.underline=!0;break;case 5:this.blink=!0;break;case 7:this.inverse=!0;break;case 8:this.hidden=!0;break;case 9:this.strikethrough=!0;break;case 21:this.bold=!1;break;case 22:this.bold=!1,this.dim=!1;break;case 23:this.italic=!1;break;case 24:this.underline=!1;break;case 25:this.blink=!1;break;case 27:this.inverse=!1;break;case 28:this.hidden=!1;break;case 29:this.strikethrough=!1;break;case 39:this.fgColor=null;break;case 49:this.bgColor=null;break;default:s>=30&&s<=37||s>=90&&s<=97?this.fgColor=String(s):(s>=40&&s<=47||s>=100&&s<=107)&&(this.bgColor=String(s));break}i++}}reset(){this.bold=!1,this.dim=!1,this.italic=!1,this.underline=!1,this.blink=!1,this.inverse=!1,this.hidden=!1,this.strikethrough=!1,this.fgColor=null,this.bgColor=null}clear(){this.reset()}getActiveCodes(){const n=[];return this.bold&&n.push("1"),this.dim&&n.push("2"),this.italic&&n.push("3"),this.underline&&n.push("4"),this.blink&&n.push("5"),this.inverse&&n.push("7"),this.hidden&&n.push("8"),this.strikethrough&&n.push("9"),this.fgColor&&n.push(this.fgColor),this.bgColor&&n.push(this.bgColor),n.length===0?"":`\x1B[${n.join(";")}m`}hasActiveCodes(){return this.bold||this.dim||this.italic||this.underline||this.blink||this.inverse||this.hidden||this.strikethrough||this.fgColor!==null||this.bgColor!==null}getLineEndReset(){return this.underline?"\x1B[24m":""}}function L(e,n){let o=0;for(;o<e.length;){const t=k(e,o);t?(n.process(t.code),o+=t.length):o++}}g(L,"updateTrackerFromText");function S(e){const n=[];let o="",t="",r=!1,i=0;for(;i<e.length;){const s=k(e,i);if(s){t+=s.code,i+=s.length;continue}const l=e[i],f=l===" ";f!==r&&o&&(n.push(o),o=""),t&&(o+=t,t=""),r=f,o+=l,i++}return t&&(o+=t),o&&n.push(o),n}g(S,"splitIntoTokensWithAnsi");function K(e,n){if(!e)return[""];const o=e.split(`
|
|
2
|
+
`),t=[],r=new W;for(const i of o){const s=t.length>0?r.getActiveCodes():"";t.push(...j(s+i,n)),L(i,r)}return t.length>0?t:[""]}g(K,"wrapTextWithAnsi");function j(e,n){if(!e)return[""];if(x(e)<=n)return[e];const t=[],r=new W,i=S(e);let s="",l=0;for(const f of i){const c=x(f),a=f.trim()==="";if(c>n&&!a){if(s){const h=r.getLineEndReset();h&&(s+=h),t.push(s),s="",l=0}const u=M(f,n,r);t.push(...u.slice(0,-1)),s=u[u.length-1],l=x(s);continue}if(l+c>n&&l>0){let u=s.trimEnd();const h=r.getLineEndReset();h&&(u+=h),t.push(u),a?(s=r.getActiveCodes(),l=0):(s=r.getActiveCodes()+f,l=c)}else s+=f,l+=c;L(f,r)}return s&&t.push(s),t.length>0?t.map(f=>f.trimEnd()):[""]}g(j,"wrapSingleLine");const N=/[(){}[\]<>.,;:'"!?+\-=*/\\|&%^$#@~`]/;function V(e){return/\s/.test(e)}g(V,"isWhitespaceChar");function z(e){return N.test(e)}g(z,"isPunctuationChar");function M(e,n,o){const t=[];let r=o.getActiveCodes(),i=0,s=0;const l=[];for(;s<e.length;){const f=k(e,s);if(f)l.push({type:"ansi",value:f.code}),s+=f.length;else{let c=s;for(;c<e.length&&!k(e,c);)c++;const a=e.slice(s,c);for(const d of m.segment(a))l.push({type:"grapheme",value:d.segment});s=c}}for(const f of l){if(f.type==="ansi"){r+=f.value,o.process(f.value);continue}const c=f.value;if(!c)continue;const a=x(c);if(i+a>n){const d=o.getLineEndReset();d&&(r+=d),t.push(r),r=o.getActiveCodes(),i=0}r+=c,i+=a}return r&&t.push(r),t.length>0?t:[""]}g(M,"breakLongWord");function J(e,n,o){const t=x(e),r=Math.max(0,n-t),i=" ".repeat(r),s=e+i;return o(s)}g(J,"applyBackgroundToLine");function U(e,n,o="...",t=!1){const r=x(e);if(r<=n)return t?e+" ".repeat(n-r):e;const i=x(o),s=n-i;if(s<=0)return o.substring(0,n);let l=0;const f=[];for(;l<e.length;){const u=k(e,l);if(u)f.push({type:"ansi",value:u.code}),l+=u.length;else{let h=l;for(;h<e.length&&!k(e,h);)h++;const b=e.slice(l,h);for(const p of m.segment(b))f.push({type:"grapheme",value:p.segment});l=h}}let c="",a=0;for(const u of f){if(u.type==="ansi"){c+=u.value;continue}const h=u.value;if(!h)continue;const b=x(h);if(a+b>s)break;c+=h,a+=b}const d=`${c}\x1B[0m${o}`;if(t){const u=x(d);return d+" ".repeat(Math.max(0,n-u))}return d}g(U,"truncateToWidth");function O(e,n,o,t=!1){return B(e,n,o,t).text}g(O,"sliceByColumn");function B(e,n,o,t=!1){if(o<=0)return{text:"",width:0};const r=n+o;let i="",s=0,l=0,f=0,c="";for(;f<e.length;){const a=k(e,f);if(a){l>=n&&l<r?i+=a.code:l<n&&(c+=a.code),f+=a.length;continue}let d=f;for(;d<e.length&&!k(e,d);)d++;for(const{segment:u}of m.segment(e.slice(f,d))){const h=w(u),b=l>=n&&l<r,p=!t||l+h<=r;if(b&&p&&(c&&(i+=c,c=""),i+=u,s+=h),l+=h,l>=r)break}if(f=d,l>=r)break}return{text:i,width:s}}g(B,"sliceWithWidth");const E=new W;function X(e,n,o,t,r=!1){let i="",s=0,l="",f=0,c=0,a=0,d="",u=!1;const h=o+t;for(E.clear();a<e.length;){const b=k(e,a);if(b){E.process(b.code),c<n?d+=b.code:c>=o&&c<h&&u&&(l+=b.code),a+=b.length;continue}let p=a;for(;p<e.length&&!k(e,p);)p++;for(const{segment:A}of m.segment(e.slice(a,p))){const v=w(A);if(c<n?(d&&(i+=d,d=""),i+=A,s+=v):c>=o&&c<h&&(!r||c+v<=h)&&(u||(l+=E.getActiveCodes(),u=!0),l+=A,f+=v),c+=v,t<=0?c>=n:c>=h)break}if(a=p,t<=0?c>=n:c>=h)break}return{before:i,beforeWidth:s,after:l,afterWidth:f}}g(X,"extractSegments");export{J as applyBackgroundToLine,k as extractAnsiCode,X as extractSegments,D as getSegmenter,z as isPunctuationChar,V as isWhitespaceChar,O as sliceByColumn,B as sliceWithWidth,U as truncateToWidth,x as visibleWidth,K as wrapTextWithAnsi};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@catui/tui",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Terminal User Interface library with differential rendering for efficient text-based applications",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"tui",
|
|
9
|
+
"terminal",
|
|
10
|
+
"ui",
|
|
11
|
+
"text-editor",
|
|
12
|
+
"differential-rendering",
|
|
13
|
+
"typescript",
|
|
14
|
+
"cli",
|
|
15
|
+
"catui-agent"
|
|
16
|
+
],
|
|
17
|
+
"author": "Catui Team",
|
|
18
|
+
"license": "GPL-3.0",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/O-Catui/Catui.git"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=20.0.0"
|
|
25
|
+
},
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@types/mime-types": "^2.1.4",
|
|
29
|
+
"chalk": "^5.5.0",
|
|
30
|
+
"get-east-asian-width": "^1.3.0",
|
|
31
|
+
"marked": "^15.0.12",
|
|
32
|
+
"mime-types": "^3.0.1"
|
|
33
|
+
},
|
|
34
|
+
"optionalDependencies": {
|
|
35
|
+
"koffi": "^2.9.0"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: readJson, writeJson, deriveNameFromContent, deriveSummaryFromContent, ensureDir
|
|
3
|
+
* [FROM]: Depends on node:fs, node:fs/promises, node:path, ./types.js
|
|
4
|
+
* [TO]: Consumed by packages/mem-core/src/index.ts
|
|
5
|
+
* [HERE]: packages/mem-core/src/store.ts - persistence layer for JSON storage, all other modules go through here
|
|
6
|
+
*/
|
|
7
|
+
import type { Episode, MemoryEntry, Meta, WorkEntry } from "./types.js";
|
|
8
|
+
export declare function readJson<T>(path: string, fallback: T): Promise<T>;
|
|
9
|
+
export declare function writeJson(path: string, data: unknown): Promise<void>;
|
|
10
|
+
/** Derive a short name (≤30 chars) from content text */
|
|
11
|
+
declare function deriveNameFromContent(content: string): string;
|
|
12
|
+
/** Derive a summary (≤150 chars) from content text, breaking at sentence boundary */
|
|
13
|
+
declare function deriveSummaryFromContent(content: string): string;
|
|
14
|
+
export declare function loadEntries(path: string): Promise<MemoryEntry[]>;
|
|
15
|
+
export declare function saveEntries(path: string, entries: MemoryEntry[], max: number, utilityFn: (e: MemoryEntry) => number): Promise<void>;
|
|
16
|
+
export declare function loadEpisodes(episodesDir: string): Promise<Episode[]>;
|
|
17
|
+
export declare function saveEpisode(episodesDir: string, ep: Episode): Promise<void>;
|
|
18
|
+
export declare function loadWork(path: string): Promise<WorkEntry[]>;
|
|
19
|
+
export declare function saveWork(path: string, entries: WorkEntry[], max: number, utilityFn: (w: WorkEntry) => number): Promise<void>;
|
|
20
|
+
export declare function loadMeta(path: string): Promise<Meta>;
|
|
21
|
+
export { deriveNameFromContent, deriveSummaryFromContent };
|