indusagi 0.12.19 → 0.12.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -37
- package/dist/agent/agent-loop.d.ts +3 -9
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +19 -58
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/agent.d.ts +9 -10
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +182 -129
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/error-handler.d.ts.map +1 -1
- package/dist/agent/error-handler.js.map +1 -1
- package/dist/agent/event-bus.d.ts.map +1 -1
- package/dist/agent/event-bus.js +1 -3
- package/dist/agent/event-bus.js.map +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +0 -6
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/messages.d.ts +1 -1
- package/dist/agent/messages.d.ts.map +1 -1
- package/dist/agent/proxy.d.ts +1 -14
- package/dist/agent/proxy.d.ts.map +1 -1
- package/dist/agent/proxy.js +67 -148
- package/dist/agent/proxy.js.map +1 -1
- package/dist/agent/session-manager.d.ts +10 -10
- package/dist/agent/session-manager.d.ts.map +1 -1
- package/dist/agent/session-manager.js +20 -16
- package/dist/agent/session-manager.js.map +1 -1
- package/dist/agent/state-manager.d.ts +1 -1
- package/dist/agent/state-manager.d.ts.map +1 -1
- package/dist/agent/state-manager.js +1 -0
- package/dist/agent/state-manager.js.map +1 -1
- package/dist/agent/telemetry.d.ts.map +1 -1
- package/dist/agent/telemetry.js +1 -3
- package/dist/agent/telemetry.js.map +1 -1
- package/dist/agent/tools/bash.d.ts.map +1 -1
- package/dist/agent/tools/bash.js +143 -118
- package/dist/agent/tools/bash.js.map +1 -1
- package/dist/agent/tools/edit-diff.d.ts +1 -1
- package/dist/agent/tools/edit-diff.d.ts.map +1 -1
- package/dist/agent/tools/edit-diff.js +189 -175
- package/dist/agent/tools/edit-diff.js.map +1 -1
- package/dist/agent/tools/edit.d.ts.map +1 -1
- package/dist/agent/tools/edit.js +137 -121
- package/dist/agent/tools/edit.js.map +1 -1
- package/dist/agent/tools/find.d.ts.map +1 -1
- package/dist/agent/tools/find.js +100 -65
- package/dist/agent/tools/find.js.map +1 -1
- package/dist/agent/tools/grep.d.ts.map +1 -1
- package/dist/agent/tools/grep.js +126 -97
- package/dist/agent/tools/grep.js.map +1 -1
- package/dist/agent/tools/index.d.ts +53 -40
- package/dist/agent/tools/index.d.ts.map +1 -1
- package/dist/agent/tools/index.js +19 -12
- package/dist/agent/tools/index.js.map +1 -1
- package/dist/agent/tools/ls.d.ts +2 -1
- package/dist/agent/tools/ls.d.ts.map +1 -1
- package/dist/agent/tools/ls.js +145 -94
- package/dist/agent/tools/ls.js.map +1 -1
- package/dist/agent/tools/path-utils.d.ts.map +1 -1
- package/dist/agent/tools/path-utils.js +48 -29
- package/dist/agent/tools/path-utils.js.map +1 -1
- package/dist/agent/tools/process-controller.d.ts +15 -0
- package/dist/agent/tools/process-controller.d.ts.map +1 -0
- package/dist/agent/tools/process-controller.js +39 -0
- package/dist/agent/tools/process-controller.js.map +1 -0
- package/dist/agent/tools/process-manager.d.ts +60 -0
- package/dist/agent/tools/process-manager.d.ts.map +1 -0
- package/dist/agent/tools/process-manager.js +485 -0
- package/dist/agent/tools/process-manager.js.map +1 -0
- package/dist/agent/tools/process-types.d.ts +74 -0
- package/dist/agent/tools/process-types.d.ts.map +1 -0
- package/dist/agent/tools/process-types.js +7 -0
- package/dist/agent/tools/process-types.js.map +1 -0
- package/dist/agent/tools/process.d.ts +38 -0
- package/dist/agent/tools/process.d.ts.map +1 -0
- package/dist/agent/tools/process.js +360 -0
- package/dist/agent/tools/process.js.map +1 -0
- package/dist/agent/tools/read.d.ts.map +1 -1
- package/dist/agent/tools/read.js +157 -135
- package/dist/agent/tools/read.js.map +1 -1
- package/dist/agent/tools/registry.js +2 -4
- package/dist/agent/tools/registry.js.map +1 -1
- package/dist/agent/tools/teams/activity-tracker.d.ts +66 -0
- package/dist/agent/tools/teams/activity-tracker.d.ts.map +1 -0
- package/dist/agent/tools/teams/activity-tracker.js +480 -0
- package/dist/agent/tools/teams/activity-tracker.js.map +1 -0
- package/dist/agent/tools/teams/cleanup.d.ts +51 -0
- package/dist/agent/tools/teams/cleanup.d.ts.map +1 -0
- package/dist/agent/tools/teams/cleanup.js +219 -0
- package/dist/agent/tools/teams/cleanup.js.map +1 -0
- package/dist/agent/tools/teams/fs-lock.d.ts +12 -0
- package/dist/agent/tools/teams/fs-lock.d.ts.map +1 -0
- package/dist/agent/tools/teams/fs-lock.js +74 -0
- package/dist/agent/tools/teams/fs-lock.js.map +1 -0
- package/dist/agent/tools/teams/index.d.ts +12 -0
- package/dist/agent/tools/teams/index.d.ts.map +1 -0
- package/dist/agent/tools/teams/index.js +12 -0
- package/dist/agent/tools/teams/index.js.map +1 -0
- package/dist/agent/tools/teams/mailbox.d.ts +21 -0
- package/dist/agent/tools/teams/mailbox.d.ts.map +1 -0
- package/dist/agent/tools/teams/mailbox.js +106 -0
- package/dist/agent/tools/teams/mailbox.js.map +1 -0
- package/dist/agent/tools/teams/model-policy.d.ts +23 -0
- package/dist/agent/tools/teams/model-policy.d.ts.map +1 -0
- package/dist/agent/tools/teams/model-policy.js +113 -0
- package/dist/agent/tools/teams/model-policy.js.map +1 -0
- package/dist/agent/tools/teams/names.d.ts +28 -0
- package/dist/agent/tools/teams/names.d.ts.map +1 -0
- package/dist/agent/tools/teams/names.js +109 -0
- package/dist/agent/tools/teams/names.js.map +1 -0
- package/dist/agent/tools/teams/protocol.d.ts +75 -0
- package/dist/agent/tools/teams/protocol.d.ts.map +1 -0
- package/dist/agent/tools/teams/protocol.js +205 -0
- package/dist/agent/tools/teams/protocol.js.map +1 -0
- package/dist/agent/tools/teams/task-store.d.ts +89 -0
- package/dist/agent/tools/teams/task-store.d.ts.map +1 -0
- package/dist/agent/tools/teams/task-store.js +445 -0
- package/dist/agent/tools/teams/task-store.js.map +1 -0
- package/dist/agent/tools/teams/team-attach-claim.d.ts +36 -0
- package/dist/agent/tools/teams/team-attach-claim.d.ts.map +1 -0
- package/dist/agent/tools/teams/team-attach-claim.js +144 -0
- package/dist/agent/tools/teams/team-attach-claim.js.map +1 -0
- package/dist/agent/tools/teams/team-config.d.ts +55 -0
- package/dist/agent/tools/teams/team-config.d.ts.map +1 -0
- package/dist/agent/tools/teams/team-config.js +252 -0
- package/dist/agent/tools/teams/team-config.js.map +1 -0
- package/dist/agent/tools/teams/worktree.d.ts +40 -0
- package/dist/agent/tools/teams/worktree.d.ts.map +1 -0
- package/dist/agent/tools/teams/worktree.js +213 -0
- package/dist/agent/tools/teams/worktree.js.map +1 -0
- package/dist/agent/tools/todo-store.js +2 -1
- package/dist/agent/tools/todo-store.js.map +1 -1
- package/dist/agent/tools/todo.d.ts +2 -2
- package/dist/agent/tools/todo.js +2 -2
- package/dist/agent/tools/truncate.d.ts.map +1 -1
- package/dist/agent/tools/truncate.js +150 -134
- package/dist/agent/tools/truncate.js.map +1 -1
- package/dist/agent/tools/utils/hook-runner.d.ts +9 -10
- package/dist/agent/tools/utils/hook-runner.d.ts.map +1 -1
- package/dist/agent/tools/utils/hook-runner.js +18 -16
- package/dist/agent/tools/utils/hook-runner.js.map +1 -1
- package/dist/agent/tools/utils/image-resize.d.ts +1 -14
- package/dist/agent/tools/utils/image-resize.d.ts.map +1 -1
- package/dist/agent/tools/utils/image-resize.js +80 -34
- package/dist/agent/tools/utils/image-resize.js.map +1 -1
- package/dist/agent/tools/utils/mime.d.ts +0 -8
- package/dist/agent/tools/utils/mime.d.ts.map +1 -1
- package/dist/agent/tools/utils/mime.js +43 -32
- package/dist/agent/tools/utils/mime.js.map +1 -1
- package/dist/agent/tools/utils/shell.d.ts +1 -23
- package/dist/agent/tools/utils/shell.d.ts.map +1 -1
- package/dist/agent/tools/utils/shell.js +43 -86
- package/dist/agent/tools/utils/shell.js.map +1 -1
- package/dist/agent/tools/write.d.ts.map +1 -1
- package/dist/agent/tools/write.js +105 -62
- package/dist/agent/tools/write.js.map +1 -1
- package/dist/agent/types.d.ts +69 -64
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +38 -23
- package/dist/agent/types.js.map +1 -1
- package/dist/agent.d.ts +4 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +4 -0
- package/dist/agent.js.map +1 -1
- package/dist/ai/api-registry.d.ts.map +1 -1
- package/dist/ai/api-registry.js +3 -4
- package/dist/ai/api-registry.js.map +1 -1
- package/dist/ai/cli.js +62 -82
- package/dist/ai/cli.js.map +1 -1
- package/dist/ai/env-api-keys.d.ts.map +1 -1
- package/dist/ai/env-api-keys.js +78 -81
- package/dist/ai/env-api-keys.js.map +1 -1
- package/dist/ai/index.d.ts +6 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +6 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/models.d.ts +7 -17
- package/dist/ai/models.d.ts.map +1 -1
- package/dist/ai/models.generated.d.ts +19 -0
- package/dist/ai/models.generated.d.ts.map +1 -1
- package/dist/ai/models.generated.js +14 -2
- package/dist/ai/models.generated.js.map +1 -1
- package/dist/ai/models.js +17 -11
- package/dist/ai/models.js.map +1 -1
- package/dist/ai/providers/amazon-bedrock.d.ts.map +1 -1
- package/dist/ai/providers/amazon-bedrock.js +319 -248
- package/dist/ai/providers/amazon-bedrock.js.map +1 -1
- package/dist/ai/providers/anthropic.d.ts.map +1 -1
- package/dist/ai/providers/anthropic.js +378 -324
- package/dist/ai/providers/anthropic.js.map +1 -1
- package/dist/ai/providers/azure-openai-responses.d.ts.map +1 -1
- package/dist/ai/providers/azure-openai-responses.js +164 -123
- package/dist/ai/providers/azure-openai-responses.js.map +1 -1
- package/dist/ai/providers/google-shared.d.ts +0 -18
- package/dist/ai/providers/google-shared.d.ts.map +1 -1
- package/dist/ai/providers/google-shared.js +224 -225
- package/dist/ai/providers/google-shared.js.map +1 -1
- package/dist/ai/providers/google-vertex.d.ts.map +1 -1
- package/dist/ai/providers/google-vertex.js +244 -226
- package/dist/ai/providers/google-vertex.js.map +1 -1
- package/dist/ai/providers/google.d.ts +3 -0
- package/dist/ai/providers/google.d.ts.map +1 -1
- package/dist/ai/providers/google.js +232 -210
- package/dist/ai/providers/google.js.map +1 -1
- package/dist/ai/providers/kimi.js +1 -0
- package/dist/ai/providers/kimi.js.map +1 -1
- package/dist/ai/providers/mock.d.ts +10 -0
- package/dist/ai/providers/mock.d.ts.map +1 -0
- package/dist/ai/providers/mock.js +64 -0
- package/dist/ai/providers/mock.js.map +1 -0
- package/dist/ai/providers/openai-codex-responses.d.ts.map +1 -1
- package/dist/ai/providers/openai-codex-responses.js +178 -133
- package/dist/ai/providers/openai-codex-responses.js.map +1 -1
- package/dist/ai/providers/openai-completions.d.ts.map +1 -1
- package/dist/ai/providers/openai-completions.js +468 -387
- package/dist/ai/providers/openai-completions.js.map +1 -1
- package/dist/ai/providers/openai-responses-shared.d.ts.map +1 -1
- package/dist/ai/providers/openai-responses-shared.js +187 -166
- package/dist/ai/providers/openai-responses-shared.js.map +1 -1
- package/dist/ai/providers/openai-responses.d.ts.map +1 -1
- package/dist/ai/providers/openai-responses.js +108 -85
- package/dist/ai/providers/openai-responses.js.map +1 -1
- package/dist/ai/providers/openai-scaffold.d.ts +4 -0
- package/dist/ai/providers/openai-scaffold.d.ts.map +1 -0
- package/dist/ai/providers/openai-scaffold.js +33 -0
- package/dist/ai/providers/openai-scaffold.js.map +1 -0
- package/dist/ai/providers/register-builtins.d.ts.map +1 -1
- package/dist/ai/providers/register-builtins.js +109 -42
- package/dist/ai/providers/register-builtins.js.map +1 -1
- package/dist/ai/providers/simple-options.js +2 -0
- package/dist/ai/providers/simple-options.js.map +1 -1
- package/dist/ai/providers/transform-messages.js +3 -9
- package/dist/ai/providers/transform-messages.js.map +1 -1
- package/dist/ai/stream.d.ts +4 -14
- package/dist/ai/stream.d.ts.map +1 -1
- package/dist/ai/stream.js +0 -36
- package/dist/ai/stream.js.map +1 -1
- package/dist/ai/types.d.ts +22 -3
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/ai/types.js +154 -77
- package/dist/ai/types.js.map +1 -1
- package/dist/ai/utils/base-stream-handler.js +1 -0
- package/dist/ai/utils/base-stream-handler.js.map +1 -1
- package/dist/ai/utils/event-stream.d.ts +2 -0
- package/dist/ai/utils/event-stream.d.ts.map +1 -1
- package/dist/ai/utils/event-stream.js +22 -5
- package/dist/ai/utils/event-stream.js.map +1 -1
- package/dist/ai/utils/json-parse.d.ts +3 -0
- package/dist/ai/utils/json-parse.d.ts.map +1 -1
- package/dist/ai/utils/json-parse.js +8 -5
- package/dist/ai/utils/json-parse.js.map +1 -1
- package/dist/ai/utils/oauth/anthropic.d.ts.map +1 -1
- package/dist/ai/utils/oauth/anthropic.js +110 -65
- package/dist/ai/utils/oauth/anthropic.js.map +1 -1
- package/dist/ai/utils/oauth/github-copilot.d.ts +8 -16
- package/dist/ai/utils/oauth/github-copilot.d.ts.map +1 -1
- package/dist/ai/utils/oauth/github-copilot.js +218 -227
- package/dist/ai/utils/oauth/github-copilot.js.map +1 -1
- package/dist/ai/utils/oauth/openai-codex.d.ts +4 -2
- package/dist/ai/utils/oauth/openai-codex.d.ts.map +1 -1
- package/dist/ai/utils/oauth/openai-codex.js +221 -236
- package/dist/ai/utils/oauth/openai-codex.js.map +1 -1
- package/dist/ai/utils/oauth/pkce.d.ts +6 -5
- package/dist/ai/utils/oauth/pkce.d.ts.map +1 -1
- package/dist/ai/utils/oauth/pkce.js +24 -21
- package/dist/ai/utils/oauth/pkce.js.map +1 -1
- package/dist/ai/utils/oauth/types.d.ts +31 -12
- package/dist/ai/utils/oauth/types.d.ts.map +1 -1
- package/dist/ai/utils/oauth/types.js +10 -1
- package/dist/ai/utils/oauth/types.js.map +1 -1
- package/dist/ai/utils/overflow.d.ts.map +1 -1
- package/dist/ai/utils/overflow.js +49 -21
- package/dist/ai/utils/overflow.js.map +1 -1
- package/dist/ai/utils/provider-adapter.js +9 -0
- package/dist/ai/utils/provider-adapter.js.map +1 -1
- package/dist/ai/utils/provider-client-builder.js +1 -1
- package/dist/ai/utils/provider-client-builder.js.map +1 -1
- package/dist/ai/utils/provider-errors.js +2 -0
- package/dist/ai/utils/provider-errors.js.map +1 -1
- package/dist/ai/utils/sanitize-unicode.d.ts +0 -20
- package/dist/ai/utils/sanitize-unicode.d.ts.map +1 -1
- package/dist/ai/utils/sanitize-unicode.js +35 -17
- package/dist/ai/utils/sanitize-unicode.js.map +1 -1
- package/dist/ai/utils/stream-event-helper.js +3 -0
- package/dist/ai/utils/stream-event-helper.js.map +1 -1
- package/dist/ai/utils/stream-handler-types.js +5 -0
- package/dist/ai/utils/stream-handler-types.js.map +1 -1
- package/dist/ai/utils/streaming-state-manager.js +4 -2
- package/dist/ai/utils/streaming-state-manager.js.map +1 -1
- package/dist/ai/utils/typebox-helpers.d.ts +6 -4
- package/dist/ai/utils/typebox-helpers.d.ts.map +1 -1
- package/dist/ai/utils/typebox-helpers.js +25 -7
- package/dist/ai/utils/typebox-helpers.js.map +1 -1
- package/dist/ai/utils/validation.d.ts.map +1 -1
- package/dist/ai/utils/validation.js +67 -34
- package/dist/ai/utils/validation.js.map +1 -1
- package/dist/ai.d.ts +4 -0
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +4 -0
- package/dist/ai.js.map +1 -1
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/client-pool.js +3 -2
- package/dist/mcp/client-pool.js.map +1 -1
- package/dist/mcp/client.js +19 -6
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/config.d.ts +6 -6
- package/dist/mcp/config.js +17 -17
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/errors.js +8 -0
- package/dist/mcp/errors.js.map +1 -1
- package/dist/mcp/index.d.ts +5 -5
- package/dist/mcp/index.js +5 -5
- package/dist/mcp/schema-converter.d.ts +1 -1
- package/dist/mcp/schema-converter.js +1 -1
- package/dist/mcp/server.d.ts +4 -4
- package/dist/mcp/server.js +12 -7
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-factory.d.ts +2 -2
- package/dist/mcp/tool-factory.js +2 -2
- package/dist/mcp.d.ts +0 -4
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +0 -4
- package/dist/mcp.js.map +1 -1
- package/dist/observability.d.ts +2 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +2 -0
- package/dist/observability.js.map +1 -0
- package/dist/tui/autocomplete.d.ts +14 -18
- package/dist/tui/autocomplete.d.ts.map +1 -1
- package/dist/tui/autocomplete.js +290 -402
- package/dist/tui/autocomplete.js.map +1 -1
- package/dist/tui/components/box.d.ts +1 -6
- package/dist/tui/components/box.d.ts.map +1 -1
- package/dist/tui/components/box.js +98 -67
- package/dist/tui/components/box.js.map +1 -1
- package/dist/tui/components/cancellable-loader.d.ts +6 -3
- package/dist/tui/components/cancellable-loader.d.ts.map +1 -1
- package/dist/tui/components/cancellable-loader.js +8 -9
- package/dist/tui/components/cancellable-loader.js.map +1 -1
- package/dist/tui/components/editor.d.ts +18 -0
- package/dist/tui/components/editor.d.ts.map +1 -1
- package/dist/tui/components/editor.js +356 -354
- package/dist/tui/components/editor.js.map +1 -1
- package/dist/tui/components/image.d.ts +2 -0
- package/dist/tui/components/image.d.ts.map +1 -1
- package/dist/tui/components/image.js +79 -37
- package/dist/tui/components/image.js.map +1 -1
- package/dist/tui/components/input.d.ts +4 -8
- package/dist/tui/components/input.d.ts.map +1 -1
- package/dist/tui/components/input.js +236 -232
- package/dist/tui/components/input.js.map +1 -1
- package/dist/tui/components/loader.d.ts +5 -5
- package/dist/tui/components/loader.d.ts.map +1 -1
- package/dist/tui/components/loader.js +22 -19
- package/dist/tui/components/loader.js.map +1 -1
- package/dist/tui/components/markdown.d.ts +2 -32
- package/dist/tui/components/markdown.d.ts.map +1 -1
- package/dist/tui/components/markdown.js +338 -357
- package/dist/tui/components/markdown.js.map +1 -1
- package/dist/tui/components/select-list.d.ts +1 -0
- package/dist/tui/components/select-list.d.ts.map +1 -1
- package/dist/tui/components/select-list.js +83 -82
- package/dist/tui/components/select-list.js.map +1 -1
- package/dist/tui/components/settings-list.d.ts +10 -10
- package/dist/tui/components/settings-list.d.ts.map +1 -1
- package/dist/tui/components/settings-list.js +48 -40
- package/dist/tui/components/settings-list.js.map +1 -1
- package/dist/tui/components/spacer.d.ts +1 -0
- package/dist/tui/components/spacer.d.ts.map +1 -1
- package/dist/tui/components/spacer.js +20 -5
- package/dist/tui/components/spacer.js.map +1 -1
- package/dist/tui/components/text.d.ts.map +1 -1
- package/dist/tui/components/text.js +47 -20
- package/dist/tui/components/text.js.map +1 -1
- package/dist/tui/components/truncated-text.d.ts +8 -4
- package/dist/tui/components/truncated-text.d.ts.map +1 -1
- package/dist/tui/components/truncated-text.js +15 -12
- package/dist/tui/components/truncated-text.js.map +1 -1
- package/dist/tui/editor-component.d.ts +87 -23
- package/dist/tui/editor-component.d.ts.map +1 -1
- package/dist/tui/fuzzy.d.ts.map +1 -1
- package/dist/tui/fuzzy.js +101 -50
- package/dist/tui/fuzzy.js.map +1 -1
- package/dist/tui/keybindings.d.ts +3 -3
- package/dist/tui/keybindings.d.ts.map +1 -1
- package/dist/tui/keybindings.js +137 -111
- package/dist/tui/keybindings.js.map +1 -1
- package/dist/tui/keys.d.ts +46 -43
- package/dist/tui/keys.d.ts.map +1 -1
- package/dist/tui/keys.js +493 -411
- package/dist/tui/keys.js.map +1 -1
- package/dist/tui/stdin-buffer.d.ts.map +1 -1
- package/dist/tui/stdin-buffer.js +162 -159
- package/dist/tui/stdin-buffer.js.map +1 -1
- package/dist/tui/terminal-image.d.ts +10 -5
- package/dist/tui/terminal-image.d.ts.map +1 -1
- package/dist/tui/terminal-image.js +53 -51
- package/dist/tui/terminal-image.js.map +1 -1
- package/dist/tui/terminal.d.ts +4 -27
- package/dist/tui/terminal.d.ts.map +1 -1
- package/dist/tui/terminal.js +123 -121
- package/dist/tui/terminal.js.map +1 -1
- package/dist/tui/tui.d.ts +14 -1
- package/dist/tui/tui.d.ts.map +1 -1
- package/dist/tui/tui.js +185 -145
- package/dist/tui/tui.js.map +1 -1
- package/dist/tui/utils.d.ts.map +1 -1
- package/dist/tui/utils.js +235 -216
- package/dist/tui/utils.js.map +1 -1
- package/dist/tui.d.ts +4 -0
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +4 -0
- package/dist/tui.js.map +1 -1
- package/package.json +23 -43
- package/LICENSE.md +0 -22
- package/dist/agent/tools/task-types.d.ts +0 -74
- package/dist/agent/tools/task-types.d.ts.map +0 -1
- package/dist/agent/tools/task-types.js +0 -8
- package/dist/agent/tools/task-types.js.map +0 -1
- package/dist/agent/tools/task.d.ts +0 -84
- package/dist/agent/tools/task.d.ts.map +0 -1
- package/dist/agent/tools/task.js +0 -184
- package/dist/agent/tools/task.js.map +0 -1
- package/dist/memory/embedder/base.d.ts +0 -41
- package/dist/memory/embedder/base.d.ts.map +0 -1
- package/dist/memory/embedder/base.js +0 -10
- package/dist/memory/embedder/base.js.map +0 -1
- package/dist/memory/embedder/index.d.ts +0 -8
- package/dist/memory/embedder/index.d.ts.map +0 -1
- package/dist/memory/embedder/index.js +0 -6
- package/dist/memory/embedder/index.js.map +0 -1
- package/dist/memory/embedder/openai.d.ts +0 -35
- package/dist/memory/embedder/openai.d.ts.map +0 -1
- package/dist/memory/embedder/openai.js +0 -103
- package/dist/memory/embedder/openai.js.map +0 -1
- package/dist/memory/index.d.ts +0 -33
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/index.js +0 -31
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/memory.d.ts +0 -126
- package/dist/memory/memory.d.ts.map +0 -1
- package/dist/memory/memory.js +0 -280
- package/dist/memory/memory.js.map +0 -1
- package/dist/memory/processors/base.d.ts +0 -42
- package/dist/memory/processors/base.d.ts.map +0 -1
- package/dist/memory/processors/base.js +0 -6
- package/dist/memory/processors/base.js.map +0 -1
- package/dist/memory/processors/index.d.ts +0 -16
- package/dist/memory/processors/index.d.ts.map +0 -1
- package/dist/memory/processors/index.js +0 -18
- package/dist/memory/processors/index.js.map +0 -1
- package/dist/memory/processors/message-history.d.ts +0 -35
- package/dist/memory/processors/message-history.d.ts.map +0 -1
- package/dist/memory/processors/message-history.js +0 -51
- package/dist/memory/processors/message-history.js.map +0 -1
- package/dist/memory/processors/observational-memory/index.d.ts +0 -82
- package/dist/memory/processors/observational-memory/index.d.ts.map +0 -1
- package/dist/memory/processors/observational-memory/index.js +0 -234
- package/dist/memory/processors/observational-memory/index.js.map +0 -1
- package/dist/memory/processors/observational-memory/observer-agent.d.ts +0 -64
- package/dist/memory/processors/observational-memory/observer-agent.d.ts.map +0 -1
- package/dist/memory/processors/observational-memory/observer-agent.js +0 -362
- package/dist/memory/processors/observational-memory/observer-agent.js.map +0 -1
- package/dist/memory/processors/observational-memory/reflector-agent.d.ts +0 -38
- package/dist/memory/processors/observational-memory/reflector-agent.d.ts.map +0 -1
- package/dist/memory/processors/observational-memory/reflector-agent.js +0 -213
- package/dist/memory/processors/observational-memory/reflector-agent.js.map +0 -1
- package/dist/memory/processors/observational-memory/token-counter.d.ts +0 -35
- package/dist/memory/processors/observational-memory/token-counter.d.ts.map +0 -1
- package/dist/memory/processors/observational-memory/token-counter.js +0 -90
- package/dist/memory/processors/observational-memory/token-counter.js.map +0 -1
- package/dist/memory/processors/semantic-recall.d.ts +0 -55
- package/dist/memory/processors/semantic-recall.d.ts.map +0 -1
- package/dist/memory/processors/semantic-recall.js +0 -143
- package/dist/memory/processors/semantic-recall.js.map +0 -1
- package/dist/memory/processors/working-memory.d.ts +0 -41
- package/dist/memory/processors/working-memory.d.ts.map +0 -1
- package/dist/memory/processors/working-memory.js +0 -82
- package/dist/memory/processors/working-memory.js.map +0 -1
- package/dist/memory/storage/base.d.ts +0 -288
- package/dist/memory/storage/base.d.ts.map +0 -1
- package/dist/memory/storage/base.js +0 -211
- package/dist/memory/storage/base.js.map +0 -1
- package/dist/memory/storage/index.d.ts +0 -9
- package/dist/memory/storage/index.d.ts.map +0 -1
- package/dist/memory/storage/index.js +0 -7
- package/dist/memory/storage/index.js.map +0 -1
- package/dist/memory/storage/inmemory.d.ts +0 -93
- package/dist/memory/storage/inmemory.d.ts.map +0 -1
- package/dist/memory/storage/inmemory.js +0 -646
- package/dist/memory/storage/inmemory.js.map +0 -1
- package/dist/memory/tools/working-memory.d.ts +0 -100
- package/dist/memory/tools/working-memory.d.ts.map +0 -1
- package/dist/memory/tools/working-memory.js +0 -237
- package/dist/memory/tools/working-memory.js.map +0 -1
- package/dist/memory/types.d.ts +0 -386
- package/dist/memory/types.d.ts.map +0 -1
- package/dist/memory/types.js +0 -58
- package/dist/memory/types.js.map +0 -1
- package/dist/memory/vector/base.d.ts +0 -145
- package/dist/memory/vector/base.d.ts.map +0 -1
- package/dist/memory/vector/base.js +0 -83
- package/dist/memory/vector/base.js.map +0 -1
- package/dist/memory/vector/index.d.ts +0 -8
- package/dist/memory/vector/index.d.ts.map +0 -1
- package/dist/memory/vector/index.js +0 -7
- package/dist/memory/vector/index.js.map +0 -1
- package/dist/memory/vector/inmemory.d.ts +0 -47
- package/dist/memory/vector/inmemory.d.ts.map +0 -1
- package/dist/memory/vector/inmemory.js +0 -234
- package/dist/memory/vector/inmemory.js.map +0 -1
package/dist/tui/keys.js
CHANGED
|
@@ -34,17 +34,103 @@ export function setKittyProtocolActive(active) {
|
|
|
34
34
|
export function isKittyProtocolActive() {
|
|
35
35
|
return _kittyProtocolActive;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
// =============================================================================
|
|
38
|
+
// Type-Safe Key Identifiers
|
|
39
|
+
// =============================================================================
|
|
40
|
+
const LETTER_VALUES = [
|
|
41
|
+
"a",
|
|
42
|
+
"b",
|
|
43
|
+
"c",
|
|
44
|
+
"d",
|
|
45
|
+
"e",
|
|
46
|
+
"f",
|
|
47
|
+
"g",
|
|
48
|
+
"h",
|
|
49
|
+
"i",
|
|
50
|
+
"j",
|
|
51
|
+
"k",
|
|
52
|
+
"l",
|
|
53
|
+
"m",
|
|
54
|
+
"n",
|
|
55
|
+
"o",
|
|
56
|
+
"p",
|
|
57
|
+
"q",
|
|
58
|
+
"r",
|
|
59
|
+
"s",
|
|
60
|
+
"t",
|
|
61
|
+
"u",
|
|
62
|
+
"v",
|
|
63
|
+
"w",
|
|
64
|
+
"x",
|
|
65
|
+
"y",
|
|
66
|
+
"z",
|
|
67
|
+
];
|
|
68
|
+
const SYMBOL_VALUES = [
|
|
69
|
+
"`",
|
|
70
|
+
"-",
|
|
71
|
+
"=",
|
|
72
|
+
"[",
|
|
73
|
+
"]",
|
|
74
|
+
"\\",
|
|
75
|
+
";",
|
|
76
|
+
"'",
|
|
77
|
+
",",
|
|
78
|
+
".",
|
|
79
|
+
"/",
|
|
80
|
+
"!",
|
|
81
|
+
"@",
|
|
82
|
+
"#",
|
|
83
|
+
"$",
|
|
84
|
+
"%",
|
|
85
|
+
"^",
|
|
86
|
+
"&",
|
|
87
|
+
"*",
|
|
88
|
+
"(",
|
|
89
|
+
")",
|
|
90
|
+
"_",
|
|
91
|
+
"+",
|
|
92
|
+
"|",
|
|
93
|
+
"~",
|
|
94
|
+
"{",
|
|
95
|
+
"}",
|
|
96
|
+
":",
|
|
97
|
+
"<",
|
|
98
|
+
">",
|
|
99
|
+
"?",
|
|
100
|
+
];
|
|
101
|
+
const SPECIAL_KEY_VALUES = [
|
|
102
|
+
"escape",
|
|
103
|
+
"esc",
|
|
104
|
+
"enter",
|
|
105
|
+
"return",
|
|
106
|
+
"tab",
|
|
107
|
+
"space",
|
|
108
|
+
"backspace",
|
|
109
|
+
"delete",
|
|
110
|
+
"insert",
|
|
111
|
+
"clear",
|
|
112
|
+
"home",
|
|
113
|
+
"end",
|
|
114
|
+
"pageUp",
|
|
115
|
+
"pageDown",
|
|
116
|
+
"up",
|
|
117
|
+
"down",
|
|
118
|
+
"left",
|
|
119
|
+
"right",
|
|
120
|
+
"f1",
|
|
121
|
+
"f2",
|
|
122
|
+
"f3",
|
|
123
|
+
"f4",
|
|
124
|
+
"f5",
|
|
125
|
+
"f6",
|
|
126
|
+
"f7",
|
|
127
|
+
"f8",
|
|
128
|
+
"f9",
|
|
129
|
+
"f10",
|
|
130
|
+
"f11",
|
|
131
|
+
"f12",
|
|
132
|
+
];
|
|
133
|
+
const SPECIAL_KEY_LITERAL_MAP = {
|
|
48
134
|
escape: "escape",
|
|
49
135
|
esc: "esc",
|
|
50
136
|
enter: "enter",
|
|
@@ -75,7 +161,8 @@ export const Key = {
|
|
|
75
161
|
f10: "f10",
|
|
76
162
|
f11: "f11",
|
|
77
163
|
f12: "f12",
|
|
78
|
-
|
|
164
|
+
};
|
|
165
|
+
const SYMBOL_KEY_LITERAL_MAP = {
|
|
79
166
|
backtick: "`",
|
|
80
167
|
hyphen: "-",
|
|
81
168
|
equals: "=",
|
|
@@ -107,18 +194,28 @@ export const Key = {
|
|
|
107
194
|
lessthan: "<",
|
|
108
195
|
greaterthan: ">",
|
|
109
196
|
question: "?",
|
|
110
|
-
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* Helper object for creating typed key identifiers with autocomplete.
|
|
200
|
+
*
|
|
201
|
+
* Usage:
|
|
202
|
+
* - Key.escape, Key.enter, Key.tab, etc. for special keys
|
|
203
|
+
* - Key.backtick, Key.comma, Key.period, etc. for symbol keys
|
|
204
|
+
* - Key.ctrl("c"), Key.alt("x") for single modifier
|
|
205
|
+
* - Key.ctrlShift("p"), Key.ctrlAlt("x") for combined modifiers
|
|
206
|
+
*/
|
|
207
|
+
export const Key = {
|
|
208
|
+
...SPECIAL_KEY_LITERAL_MAP,
|
|
209
|
+
...SYMBOL_KEY_LITERAL_MAP,
|
|
111
210
|
ctrl: (key) => `ctrl+${key}`,
|
|
112
211
|
shift: (key) => `shift+${key}`,
|
|
113
212
|
alt: (key) => `alt+${key}`,
|
|
114
|
-
// Combined modifiers
|
|
115
213
|
ctrlShift: (key) => `ctrl+shift+${key}`,
|
|
116
214
|
shiftCtrl: (key) => `shift+ctrl+${key}`,
|
|
117
215
|
ctrlAlt: (key) => `ctrl+alt+${key}`,
|
|
118
216
|
altCtrl: (key) => `alt+ctrl+${key}`,
|
|
119
217
|
shiftAlt: (key) => `shift+alt+${key}`,
|
|
120
218
|
altShift: (key) => `alt+shift+${key}`,
|
|
121
|
-
// Triple modifiers
|
|
122
219
|
ctrlShiftAlt: (key) => `ctrl+shift+alt+${key}`,
|
|
123
220
|
};
|
|
124
221
|
// =============================================================================
|
|
@@ -568,444 +665,429 @@ function parseKeyId(keyId) {
|
|
|
568
665
|
alt: parts.includes("alt"),
|
|
569
666
|
};
|
|
570
667
|
}
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
let modifier = 0;
|
|
593
|
-
if (shift)
|
|
594
|
-
modifier |= MODIFIERS.shift;
|
|
595
|
-
if (alt)
|
|
596
|
-
modifier |= MODIFIERS.alt;
|
|
597
|
-
if (ctrl)
|
|
598
|
-
modifier |= MODIFIERS.ctrl;
|
|
599
|
-
switch (key) {
|
|
600
|
-
case "escape":
|
|
601
|
-
case "esc":
|
|
602
|
-
if (modifier !== 0)
|
|
603
|
-
return false;
|
|
604
|
-
return data === "\x1b" || matchesKittySequence(data, CODEPOINTS.escape, 0);
|
|
605
|
-
case "space":
|
|
606
|
-
if (!_kittyProtocolActive) {
|
|
607
|
-
if (ctrl && !alt && !shift && data === "\x00") {
|
|
608
|
-
return true;
|
|
609
|
-
}
|
|
610
|
-
if (alt && !ctrl && !shift && data === "\x1b ") {
|
|
611
|
-
return true;
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
if (modifier === 0) {
|
|
615
|
-
return data === " " || matchesKittySequence(data, CODEPOINTS.space, 0);
|
|
616
|
-
}
|
|
617
|
-
return matchesKittySequence(data, CODEPOINTS.space, modifier);
|
|
618
|
-
case "tab":
|
|
619
|
-
if (shift && !ctrl && !alt) {
|
|
620
|
-
return data === "\x1b[Z" || matchesKittySequence(data, CODEPOINTS.tab, MODIFIERS.shift);
|
|
621
|
-
}
|
|
622
|
-
if (modifier === 0) {
|
|
623
|
-
return data === "\t" || matchesKittySequence(data, CODEPOINTS.tab, 0);
|
|
624
|
-
}
|
|
625
|
-
return matchesKittySequence(data, CODEPOINTS.tab, modifier);
|
|
626
|
-
case "enter":
|
|
627
|
-
case "return":
|
|
628
|
-
if (shift && !ctrl && !alt) {
|
|
629
|
-
// CSI u sequences (standard Kitty protocol)
|
|
630
|
-
if (matchesKittySequence(data, CODEPOINTS.enter, MODIFIERS.shift) ||
|
|
631
|
-
matchesKittySequence(data, CODEPOINTS.kpEnter, MODIFIERS.shift)) {
|
|
632
|
-
return true;
|
|
633
|
-
}
|
|
634
|
-
// xterm modifyOtherKeys format (fallback when Kitty protocol not enabled)
|
|
635
|
-
if (matchesModifyOtherKeys(data, CODEPOINTS.enter, MODIFIERS.shift)) {
|
|
636
|
-
return true;
|
|
637
|
-
}
|
|
638
|
-
// When Kitty protocol is active, legacy sequences are custom terminal mappings
|
|
639
|
-
// \x1b\r = Kitty's "map shift+enter send_text all \e\r"
|
|
640
|
-
// \n = Ghostty's "keybind = shift+enter=text:\n"
|
|
641
|
-
if (_kittyProtocolActive) {
|
|
642
|
-
return data === "\x1b\r" || data === "\n";
|
|
643
|
-
}
|
|
644
|
-
return false;
|
|
645
|
-
}
|
|
646
|
-
if (alt && !ctrl && !shift) {
|
|
647
|
-
// CSI u sequences (standard Kitty protocol)
|
|
648
|
-
if (matchesKittySequence(data, CODEPOINTS.enter, MODIFIERS.alt) ||
|
|
649
|
-
matchesKittySequence(data, CODEPOINTS.kpEnter, MODIFIERS.alt)) {
|
|
650
|
-
return true;
|
|
668
|
+
class KeyMatchEngine {
|
|
669
|
+
specialKeyResolverRegistry;
|
|
670
|
+
constructor() {
|
|
671
|
+
this.specialKeyResolverRegistry = {
|
|
672
|
+
escape: (data, _decodedKeyId, modifierBits) => {
|
|
673
|
+
if (modifierBits !== 0)
|
|
674
|
+
return false;
|
|
675
|
+
return data === "\x1b" || matchesKittySequence(data, CODEPOINTS.escape, 0);
|
|
676
|
+
},
|
|
677
|
+
esc: (data, _decodedKeyId, modifierBits) => {
|
|
678
|
+
if (modifierBits !== 0)
|
|
679
|
+
return false;
|
|
680
|
+
return data === "\x1b" || matchesKittySequence(data, CODEPOINTS.escape, 0);
|
|
681
|
+
},
|
|
682
|
+
space: (data, decodedKeyId, modifierBits) => {
|
|
683
|
+
const { ctrl, shift, alt } = decodedKeyId;
|
|
684
|
+
if (!_kittyProtocolActive) {
|
|
685
|
+
if (ctrl && !alt && !shift && data === "\x00")
|
|
686
|
+
return true;
|
|
687
|
+
if (alt && !ctrl && !shift && data === "\x1b ")
|
|
688
|
+
return true;
|
|
651
689
|
}
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
690
|
+
if (modifierBits === 0)
|
|
691
|
+
return data === " " || matchesKittySequence(data, CODEPOINTS.space, 0);
|
|
692
|
+
return matchesKittySequence(data, CODEPOINTS.space, modifierBits);
|
|
693
|
+
},
|
|
694
|
+
tab: (data, decodedKeyId, modifierBits) => {
|
|
695
|
+
const { ctrl, shift, alt } = decodedKeyId;
|
|
696
|
+
if (shift && !ctrl && !alt) {
|
|
697
|
+
return data === "\x1b[Z" || matchesKittySequence(data, CODEPOINTS.tab, MODIFIERS.shift);
|
|
655
698
|
}
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
699
|
+
if (modifierBits === 0)
|
|
700
|
+
return data === "\t" || matchesKittySequence(data, CODEPOINTS.tab, 0);
|
|
701
|
+
return matchesKittySequence(data, CODEPOINTS.tab, modifierBits);
|
|
702
|
+
},
|
|
703
|
+
enter: (data, decodedKeyId, modifierBits) => this.matchEnterLikeKey(data, decodedKeyId, modifierBits),
|
|
704
|
+
return: (data, decodedKeyId, modifierBits) => this.matchEnterLikeKey(data, decodedKeyId, modifierBits),
|
|
705
|
+
backspace: (data, decodedKeyId, modifierBits) => {
|
|
706
|
+
const { ctrl, shift, alt } = decodedKeyId;
|
|
707
|
+
if (alt && !ctrl && !shift) {
|
|
708
|
+
if (data === "\x1b\x7f" || data === "\x1b\b")
|
|
709
|
+
return true;
|
|
710
|
+
return matchesKittySequence(data, CODEPOINTS.backspace, MODIFIERS.alt);
|
|
660
711
|
}
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
if (modifier === 0) {
|
|
664
|
-
return (data === "\r" ||
|
|
665
|
-
(!_kittyProtocolActive && data === "\n") ||
|
|
666
|
-
data === "\x1bOM" || // SS3 M (numpad enter in some terminals)
|
|
667
|
-
matchesKittySequence(data, CODEPOINTS.enter, 0) ||
|
|
668
|
-
matchesKittySequence(data, CODEPOINTS.kpEnter, 0));
|
|
669
|
-
}
|
|
670
|
-
return (matchesKittySequence(data, CODEPOINTS.enter, modifier) ||
|
|
671
|
-
matchesKittySequence(data, CODEPOINTS.kpEnter, modifier));
|
|
672
|
-
case "backspace":
|
|
673
|
-
if (alt && !ctrl && !shift) {
|
|
674
|
-
if (data === "\x1b\x7f" || data === "\x1b\b") {
|
|
675
|
-
return true;
|
|
712
|
+
if (modifierBits === 0) {
|
|
713
|
+
return data === "\x7f" || data === "\x08" || matchesKittySequence(data, CODEPOINTS.backspace, 0);
|
|
676
714
|
}
|
|
677
|
-
return matchesKittySequence(data, CODEPOINTS.backspace,
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
return true;
|
|
740
|
-
}
|
|
741
|
-
return matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.pageDown, modifier);
|
|
742
|
-
case "up":
|
|
743
|
-
if (alt && !ctrl && !shift) {
|
|
744
|
-
return data === "\x1bp" || matchesKittySequence(data, ARROW_CODEPOINTS.up, MODIFIERS.alt);
|
|
745
|
-
}
|
|
746
|
-
if (modifier === 0) {
|
|
747
|
-
return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.up) ||
|
|
748
|
-
matchesKittySequence(data, ARROW_CODEPOINTS.up, 0));
|
|
749
|
-
}
|
|
750
|
-
if (matchesLegacyModifierSequence(data, "up", modifier)) {
|
|
715
|
+
return matchesKittySequence(data, CODEPOINTS.backspace, modifierBits);
|
|
716
|
+
},
|
|
717
|
+
insert: (data, _decodedKeyId, modifierBits) => this.matchFunctionalKey(data, "insert", FUNCTIONAL_CODEPOINTS.insert, modifierBits),
|
|
718
|
+
delete: (data, _decodedKeyId, modifierBits) => this.matchFunctionalKey(data, "delete", FUNCTIONAL_CODEPOINTS.delete, modifierBits),
|
|
719
|
+
clear: (data, _decodedKeyId, modifierBits) => {
|
|
720
|
+
if (modifierBits === 0)
|
|
721
|
+
return matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.clear);
|
|
722
|
+
return matchesLegacyModifierSequence(data, "clear", modifierBits);
|
|
723
|
+
},
|
|
724
|
+
home: (data, _decodedKeyId, modifierBits) => this.matchFunctionalKey(data, "home", FUNCTIONAL_CODEPOINTS.home, modifierBits),
|
|
725
|
+
end: (data, _decodedKeyId, modifierBits) => this.matchFunctionalKey(data, "end", FUNCTIONAL_CODEPOINTS.end, modifierBits),
|
|
726
|
+
pageup: (data, _decodedKeyId, modifierBits) => this.matchFunctionalKey(data, "pageUp", FUNCTIONAL_CODEPOINTS.pageUp, modifierBits),
|
|
727
|
+
pagedown: (data, _decodedKeyId, modifierBits) => this.matchFunctionalKey(data, "pageDown", FUNCTIONAL_CODEPOINTS.pageDown, modifierBits),
|
|
728
|
+
up: (data, decodedKeyId, modifierBits) => this.matchArrowKey(data, "up", ARROW_CODEPOINTS.up, decodedKeyId, modifierBits),
|
|
729
|
+
down: (data, decodedKeyId, modifierBits) => this.matchArrowKey(data, "down", ARROW_CODEPOINTS.down, decodedKeyId, modifierBits),
|
|
730
|
+
left: (data, decodedKeyId, modifierBits) => this.matchLeftArrow(data, decodedKeyId, modifierBits),
|
|
731
|
+
right: (data, decodedKeyId, modifierBits) => this.matchRightArrow(data, decodedKeyId, modifierBits),
|
|
732
|
+
f1: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f1", modifierBits),
|
|
733
|
+
f2: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f2", modifierBits),
|
|
734
|
+
f3: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f3", modifierBits),
|
|
735
|
+
f4: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f4", modifierBits),
|
|
736
|
+
f5: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f5", modifierBits),
|
|
737
|
+
f6: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f6", modifierBits),
|
|
738
|
+
f7: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f7", modifierBits),
|
|
739
|
+
f8: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f8", modifierBits),
|
|
740
|
+
f9: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f9", modifierBits),
|
|
741
|
+
f10: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f10", modifierBits),
|
|
742
|
+
f11: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f11", modifierBits),
|
|
743
|
+
f12: (data, _decodedKeyId, modifierBits) => this.matchFunctionKey(data, "f12", modifierBits),
|
|
744
|
+
};
|
|
745
|
+
}
|
|
746
|
+
matches(data, keyId) {
|
|
747
|
+
const decodedKeyId = parseKeyId(keyId);
|
|
748
|
+
if (!decodedKeyId)
|
|
749
|
+
return false;
|
|
750
|
+
const modifierBits = this.computeModifierMask(decodedKeyId);
|
|
751
|
+
const specialKeyResolver = this.specialKeyResolverRegistry[decodedKeyId.key];
|
|
752
|
+
if (specialKeyResolver) {
|
|
753
|
+
return specialKeyResolver(data, decodedKeyId, modifierBits);
|
|
754
|
+
}
|
|
755
|
+
return this.matchPrintableKey(data, decodedKeyId, modifierBits);
|
|
756
|
+
}
|
|
757
|
+
computeModifierMask(decodedKeyId) {
|
|
758
|
+
let modifierBits = 0;
|
|
759
|
+
if (decodedKeyId.shift)
|
|
760
|
+
modifierBits |= MODIFIERS.shift;
|
|
761
|
+
if (decodedKeyId.alt)
|
|
762
|
+
modifierBits |= MODIFIERS.alt;
|
|
763
|
+
if (decodedKeyId.ctrl)
|
|
764
|
+
modifierBits |= MODIFIERS.ctrl;
|
|
765
|
+
return modifierBits;
|
|
766
|
+
}
|
|
767
|
+
matchFunctionKey(data, functionKey, modifierBits) {
|
|
768
|
+
if (modifierBits !== 0)
|
|
769
|
+
return false;
|
|
770
|
+
return matchesLegacySequence(data, LEGACY_KEY_SEQUENCES[functionKey]);
|
|
771
|
+
}
|
|
772
|
+
matchEnterLikeKey(data, decodedKeyId, modifierBits) {
|
|
773
|
+
const { ctrl, shift, alt } = decodedKeyId;
|
|
774
|
+
if (shift && !ctrl && !alt) {
|
|
775
|
+
if (matchesKittySequence(data, CODEPOINTS.enter, MODIFIERS.shift) ||
|
|
776
|
+
matchesKittySequence(data, CODEPOINTS.kpEnter, MODIFIERS.shift)) {
|
|
751
777
|
return true;
|
|
752
778
|
}
|
|
753
|
-
|
|
754
|
-
case "down":
|
|
755
|
-
if (alt && !ctrl && !shift) {
|
|
756
|
-
return data === "\x1bn" || matchesKittySequence(data, ARROW_CODEPOINTS.down, MODIFIERS.alt);
|
|
757
|
-
}
|
|
758
|
-
if (modifier === 0) {
|
|
759
|
-
return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.down) ||
|
|
760
|
-
matchesKittySequence(data, ARROW_CODEPOINTS.down, 0));
|
|
761
|
-
}
|
|
762
|
-
if (matchesLegacyModifierSequence(data, "down", modifier)) {
|
|
779
|
+
if (matchesModifyOtherKeys(data, CODEPOINTS.enter, MODIFIERS.shift)) {
|
|
763
780
|
return true;
|
|
764
781
|
}
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
if (alt && !ctrl && !shift) {
|
|
768
|
-
return (data === "\x1b[1;3D" ||
|
|
769
|
-
(!_kittyProtocolActive && data === "\x1bB") ||
|
|
770
|
-
data === "\x1bb" ||
|
|
771
|
-
matchesKittySequence(data, ARROW_CODEPOINTS.left, MODIFIERS.alt));
|
|
772
|
-
}
|
|
773
|
-
if (ctrl && !alt && !shift) {
|
|
774
|
-
return (data === "\x1b[1;5D" ||
|
|
775
|
-
matchesLegacyModifierSequence(data, "left", MODIFIERS.ctrl) ||
|
|
776
|
-
matchesKittySequence(data, ARROW_CODEPOINTS.left, MODIFIERS.ctrl));
|
|
782
|
+
if (_kittyProtocolActive) {
|
|
783
|
+
return data === "\x1b\r" || data === "\n";
|
|
777
784
|
}
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
785
|
+
return false;
|
|
786
|
+
}
|
|
787
|
+
if (alt && !ctrl && !shift) {
|
|
788
|
+
if (matchesKittySequence(data, CODEPOINTS.enter, MODIFIERS.alt) ||
|
|
789
|
+
matchesKittySequence(data, CODEPOINTS.kpEnter, MODIFIERS.alt)) {
|
|
783
790
|
return true;
|
|
784
791
|
}
|
|
785
|
-
|
|
786
|
-
case "right":
|
|
787
|
-
if (alt && !ctrl && !shift) {
|
|
788
|
-
return (data === "\x1b[1;3C" ||
|
|
789
|
-
(!_kittyProtocolActive && data === "\x1bF") ||
|
|
790
|
-
data === "\x1bf" ||
|
|
791
|
-
matchesKittySequence(data, ARROW_CODEPOINTS.right, MODIFIERS.alt));
|
|
792
|
-
}
|
|
793
|
-
if (ctrl && !alt && !shift) {
|
|
794
|
-
return (data === "\x1b[1;5C" ||
|
|
795
|
-
matchesLegacyModifierSequence(data, "right", MODIFIERS.ctrl) ||
|
|
796
|
-
matchesKittySequence(data, ARROW_CODEPOINTS.right, MODIFIERS.ctrl));
|
|
797
|
-
}
|
|
798
|
-
if (modifier === 0) {
|
|
799
|
-
return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.right) ||
|
|
800
|
-
matchesKittySequence(data, ARROW_CODEPOINTS.right, 0));
|
|
801
|
-
}
|
|
802
|
-
if (matchesLegacyModifierSequence(data, "right", modifier)) {
|
|
792
|
+
if (matchesModifyOtherKeys(data, CODEPOINTS.enter, MODIFIERS.alt)) {
|
|
803
793
|
return true;
|
|
804
794
|
}
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
case "f2":
|
|
808
|
-
case "f3":
|
|
809
|
-
case "f4":
|
|
810
|
-
case "f5":
|
|
811
|
-
case "f6":
|
|
812
|
-
case "f7":
|
|
813
|
-
case "f8":
|
|
814
|
-
case "f9":
|
|
815
|
-
case "f10":
|
|
816
|
-
case "f11":
|
|
817
|
-
case "f12": {
|
|
818
|
-
if (modifier !== 0) {
|
|
819
|
-
return false;
|
|
795
|
+
if (!_kittyProtocolActive) {
|
|
796
|
+
return data === "\x1b\r";
|
|
820
797
|
}
|
|
821
|
-
|
|
822
|
-
|
|
798
|
+
return false;
|
|
799
|
+
}
|
|
800
|
+
if (modifierBits === 0) {
|
|
801
|
+
return (data === "\r" ||
|
|
802
|
+
(!_kittyProtocolActive && data === "\n") ||
|
|
803
|
+
data === "\x1bOM" ||
|
|
804
|
+
matchesKittySequence(data, CODEPOINTS.enter, 0) ||
|
|
805
|
+
matchesKittySequence(data, CODEPOINTS.kpEnter, 0));
|
|
806
|
+
}
|
|
807
|
+
return (matchesKittySequence(data, CODEPOINTS.enter, modifierBits) ||
|
|
808
|
+
matchesKittySequence(data, CODEPOINTS.kpEnter, modifierBits));
|
|
809
|
+
}
|
|
810
|
+
matchFunctionalKey(data, legacyName, codepoint, modifierBits) {
|
|
811
|
+
if (modifierBits === 0) {
|
|
812
|
+
return matchesLegacySequence(data, LEGACY_KEY_SEQUENCES[legacyName]) || matchesKittySequence(data, codepoint, 0);
|
|
813
|
+
}
|
|
814
|
+
if (matchesLegacyModifierSequence(data, legacyName, modifierBits)) {
|
|
815
|
+
return true;
|
|
816
|
+
}
|
|
817
|
+
return matchesKittySequence(data, codepoint, modifierBits);
|
|
818
|
+
}
|
|
819
|
+
matchArrowKey(data, arrowName, codepoint, decodedKeyId, modifierBits) {
|
|
820
|
+
const { ctrl, shift, alt } = decodedKeyId;
|
|
821
|
+
if (alt && !ctrl && !shift) {
|
|
822
|
+
const altLegacy = arrowName === "up" ? "\x1bp" : "\x1bn";
|
|
823
|
+
return data === altLegacy || matchesKittySequence(data, codepoint, MODIFIERS.alt);
|
|
824
|
+
}
|
|
825
|
+
if (modifierBits === 0) {
|
|
826
|
+
return matchesLegacySequence(data, LEGACY_KEY_SEQUENCES[arrowName]) || matchesKittySequence(data, codepoint, 0);
|
|
827
|
+
}
|
|
828
|
+
if (matchesLegacyModifierSequence(data, arrowName, modifierBits)) {
|
|
829
|
+
return true;
|
|
830
|
+
}
|
|
831
|
+
return matchesKittySequence(data, codepoint, modifierBits);
|
|
832
|
+
}
|
|
833
|
+
matchLeftArrow(data, decodedKeyId, modifierBits) {
|
|
834
|
+
const { ctrl, shift, alt } = decodedKeyId;
|
|
835
|
+
if (alt && !ctrl && !shift) {
|
|
836
|
+
return (data === "\x1b[1;3D" ||
|
|
837
|
+
(!_kittyProtocolActive && data === "\x1bB") ||
|
|
838
|
+
data === "\x1bb" ||
|
|
839
|
+
matchesKittySequence(data, ARROW_CODEPOINTS.left, MODIFIERS.alt));
|
|
840
|
+
}
|
|
841
|
+
if (ctrl && !alt && !shift) {
|
|
842
|
+
return (data === "\x1b[1;5D" ||
|
|
843
|
+
matchesLegacyModifierSequence(data, "left", MODIFIERS.ctrl) ||
|
|
844
|
+
matchesKittySequence(data, ARROW_CODEPOINTS.left, MODIFIERS.ctrl));
|
|
845
|
+
}
|
|
846
|
+
if (modifierBits === 0) {
|
|
847
|
+
return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.left) ||
|
|
848
|
+
matchesKittySequence(data, ARROW_CODEPOINTS.left, 0));
|
|
849
|
+
}
|
|
850
|
+
if (matchesLegacyModifierSequence(data, "left", modifierBits)) {
|
|
851
|
+
return true;
|
|
823
852
|
}
|
|
853
|
+
return matchesKittySequence(data, ARROW_CODEPOINTS.left, modifierBits);
|
|
824
854
|
}
|
|
825
|
-
|
|
826
|
-
|
|
855
|
+
matchRightArrow(data, decodedKeyId, modifierBits) {
|
|
856
|
+
const { ctrl, shift, alt } = decodedKeyId;
|
|
857
|
+
if (alt && !ctrl && !shift) {
|
|
858
|
+
return (data === "\x1b[1;3C" ||
|
|
859
|
+
(!_kittyProtocolActive && data === "\x1bF") ||
|
|
860
|
+
data === "\x1bf" ||
|
|
861
|
+
matchesKittySequence(data, ARROW_CODEPOINTS.right, MODIFIERS.alt));
|
|
862
|
+
}
|
|
863
|
+
if (ctrl && !alt && !shift) {
|
|
864
|
+
return (data === "\x1b[1;5C" ||
|
|
865
|
+
matchesLegacyModifierSequence(data, "right", MODIFIERS.ctrl) ||
|
|
866
|
+
matchesKittySequence(data, ARROW_CODEPOINTS.right, MODIFIERS.ctrl));
|
|
867
|
+
}
|
|
868
|
+
if (modifierBits === 0) {
|
|
869
|
+
return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.right) ||
|
|
870
|
+
matchesKittySequence(data, ARROW_CODEPOINTS.right, 0));
|
|
871
|
+
}
|
|
872
|
+
if (matchesLegacyModifierSequence(data, "right", modifierBits)) {
|
|
873
|
+
return true;
|
|
874
|
+
}
|
|
875
|
+
return matchesKittySequence(data, ARROW_CODEPOINTS.right, modifierBits);
|
|
876
|
+
}
|
|
877
|
+
matchPrintableKey(data, decodedKeyId, modifierBits) {
|
|
878
|
+
const { key, ctrl, shift, alt } = decodedKeyId;
|
|
879
|
+
if (!(key.length === 1 && ((key >= "a" && key <= "z") || SYMBOL_KEYS.has(key)))) {
|
|
880
|
+
return false;
|
|
881
|
+
}
|
|
827
882
|
const codepoint = key.charCodeAt(0);
|
|
828
|
-
const
|
|
829
|
-
if (ctrl && alt && !shift && !_kittyProtocolActive &&
|
|
830
|
-
|
|
831
|
-
return data === `\x1b${rawCtrl}`;
|
|
883
|
+
const controlCharacter = rawCtrlChar(key);
|
|
884
|
+
if (ctrl && alt && !shift && !_kittyProtocolActive && controlCharacter) {
|
|
885
|
+
return data === `\x1b${controlCharacter}`;
|
|
832
886
|
}
|
|
833
887
|
if (alt && !ctrl && !shift && !_kittyProtocolActive && key >= "a" && key <= "z") {
|
|
834
|
-
|
|
835
|
-
if (data === `\x1b${key}`)
|
|
888
|
+
if (data === `\x1b${key}`) {
|
|
836
889
|
return true;
|
|
890
|
+
}
|
|
837
891
|
}
|
|
838
892
|
if (ctrl && !shift && !alt) {
|
|
839
|
-
|
|
840
|
-
if (rawCtrl && data === rawCtrl)
|
|
893
|
+
if (controlCharacter && data === controlCharacter) {
|
|
841
894
|
return true;
|
|
895
|
+
}
|
|
842
896
|
return matchesKittySequence(data, codepoint, MODIFIERS.ctrl);
|
|
843
897
|
}
|
|
844
898
|
if (ctrl && shift && !alt) {
|
|
845
899
|
return matchesKittySequence(data, codepoint, MODIFIERS.shift + MODIFIERS.ctrl);
|
|
846
900
|
}
|
|
847
901
|
if (shift && !ctrl && !alt) {
|
|
848
|
-
|
|
849
|
-
if (data === key.toUpperCase())
|
|
902
|
+
if (data === key.toUpperCase()) {
|
|
850
903
|
return true;
|
|
904
|
+
}
|
|
851
905
|
return matchesKittySequence(data, codepoint, MODIFIERS.shift);
|
|
852
906
|
}
|
|
853
|
-
if (
|
|
854
|
-
return matchesKittySequence(data, codepoint,
|
|
907
|
+
if (modifierBits !== 0) {
|
|
908
|
+
return matchesKittySequence(data, codepoint, modifierBits);
|
|
855
909
|
}
|
|
856
|
-
// Check both raw char and Kitty sequence (needed for release events)
|
|
857
910
|
return data === key || matchesKittySequence(data, codepoint, 0);
|
|
858
911
|
}
|
|
859
|
-
return false;
|
|
860
912
|
}
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
else if (effectiveCodepoint === CODEPOINTS.enter || effectiveCodepoint === CODEPOINTS.kpEnter)
|
|
888
|
-
keyName = "enter";
|
|
889
|
-
else if (effectiveCodepoint === CODEPOINTS.space)
|
|
890
|
-
keyName = "space";
|
|
891
|
-
else if (effectiveCodepoint === CODEPOINTS.backspace)
|
|
892
|
-
keyName = "backspace";
|
|
893
|
-
else if (effectiveCodepoint === FUNCTIONAL_CODEPOINTS.delete)
|
|
894
|
-
keyName = "delete";
|
|
895
|
-
else if (effectiveCodepoint === FUNCTIONAL_CODEPOINTS.insert)
|
|
896
|
-
keyName = "insert";
|
|
897
|
-
else if (effectiveCodepoint === FUNCTIONAL_CODEPOINTS.home)
|
|
898
|
-
keyName = "home";
|
|
899
|
-
else if (effectiveCodepoint === FUNCTIONAL_CODEPOINTS.end)
|
|
900
|
-
keyName = "end";
|
|
901
|
-
else if (effectiveCodepoint === FUNCTIONAL_CODEPOINTS.pageUp)
|
|
902
|
-
keyName = "pageUp";
|
|
903
|
-
else if (effectiveCodepoint === FUNCTIONAL_CODEPOINTS.pageDown)
|
|
904
|
-
keyName = "pageDown";
|
|
905
|
-
else if (effectiveCodepoint === ARROW_CODEPOINTS.up)
|
|
906
|
-
keyName = "up";
|
|
907
|
-
else if (effectiveCodepoint === ARROW_CODEPOINTS.down)
|
|
908
|
-
keyName = "down";
|
|
909
|
-
else if (effectiveCodepoint === ARROW_CODEPOINTS.left)
|
|
910
|
-
keyName = "left";
|
|
911
|
-
else if (effectiveCodepoint === ARROW_CODEPOINTS.right)
|
|
912
|
-
keyName = "right";
|
|
913
|
-
else if (effectiveCodepoint >= 97 && effectiveCodepoint <= 122)
|
|
914
|
-
keyName = String.fromCharCode(effectiveCodepoint);
|
|
915
|
-
else if (SYMBOL_KEYS.has(String.fromCharCode(effectiveCodepoint)))
|
|
916
|
-
keyName = String.fromCharCode(effectiveCodepoint);
|
|
917
|
-
if (keyName) {
|
|
918
|
-
return mods.length > 0 ? `${mods.join("+")}+${keyName}` : keyName;
|
|
913
|
+
class KeyParseEngine {
|
|
914
|
+
legacyLiteralParseTable = {
|
|
915
|
+
"\x1b": "escape",
|
|
916
|
+
"\x1c": "ctrl+\\",
|
|
917
|
+
"\x1d": "ctrl+]",
|
|
918
|
+
"\x1f": "ctrl+-",
|
|
919
|
+
"\x1b\x1b": "ctrl+alt+[",
|
|
920
|
+
"\x1b\x1c": "ctrl+alt+\\",
|
|
921
|
+
"\x1b\x1d": "ctrl+alt+]",
|
|
922
|
+
"\x1b\x1f": "ctrl+alt+-",
|
|
923
|
+
"\t": "tab",
|
|
924
|
+
"\x00": "ctrl+space",
|
|
925
|
+
" ": "space",
|
|
926
|
+
"\x1b[Z": "shift+tab",
|
|
927
|
+
"\x1b[A": "up",
|
|
928
|
+
"\x1b[B": "down",
|
|
929
|
+
"\x1b[C": "right",
|
|
930
|
+
"\x1b[D": "left",
|
|
931
|
+
"\x1b[3~": "delete",
|
|
932
|
+
"\x1b[5~": "pageUp",
|
|
933
|
+
"\x1b[6~": "pageDown",
|
|
934
|
+
};
|
|
935
|
+
parse(data) {
|
|
936
|
+
const kittyDerivedKeyId = this.parseFromKitty(data);
|
|
937
|
+
if (kittyDerivedKeyId) {
|
|
938
|
+
return kittyDerivedKeyId;
|
|
919
939
|
}
|
|
940
|
+
return this.parseFromLegacy(data);
|
|
920
941
|
}
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
942
|
+
parseFromKitty(data) {
|
|
943
|
+
const parsedKitty = parseKittySequence(data);
|
|
944
|
+
if (!parsedKitty) {
|
|
945
|
+
return undefined;
|
|
946
|
+
}
|
|
947
|
+
const orderedModifiers = this.formatModifierNames(parsedKitty.modifier & ~LOCK_MASK);
|
|
948
|
+
const lookupCodepoint = parsedKitty.baseLayoutKey ?? parsedKitty.codepoint;
|
|
949
|
+
const keyName = this.resolveKeyName(lookupCodepoint);
|
|
950
|
+
if (!keyName)
|
|
951
|
+
return undefined;
|
|
952
|
+
return orderedModifiers.length > 0 ? `${orderedModifiers.join("+")}+${keyName}` : keyName;
|
|
928
953
|
}
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
// Legacy sequences (used when Kitty protocol is not active, or for unambiguous sequences)
|
|
933
|
-
if (data === "\x1b")
|
|
934
|
-
return "escape";
|
|
935
|
-
if (data === "\x1c")
|
|
936
|
-
return "ctrl+\\";
|
|
937
|
-
if (data === "\x1d")
|
|
938
|
-
return "ctrl+]";
|
|
939
|
-
if (data === "\x1f")
|
|
940
|
-
return "ctrl+-";
|
|
941
|
-
if (data === "\x1b\x1b")
|
|
942
|
-
return "ctrl+alt+[";
|
|
943
|
-
if (data === "\x1b\x1c")
|
|
944
|
-
return "ctrl+alt+\\";
|
|
945
|
-
if (data === "\x1b\x1d")
|
|
946
|
-
return "ctrl+alt+]";
|
|
947
|
-
if (data === "\x1b\x1f")
|
|
948
|
-
return "ctrl+alt+-";
|
|
949
|
-
if (data === "\t")
|
|
950
|
-
return "tab";
|
|
951
|
-
if (data === "\r" || (!_kittyProtocolActive && data === "\n") || data === "\x1bOM")
|
|
952
|
-
return "enter";
|
|
953
|
-
if (data === "\x00")
|
|
954
|
-
return "ctrl+space";
|
|
955
|
-
if (data === " ")
|
|
956
|
-
return "space";
|
|
957
|
-
if (data === "\x7f" || data === "\x08")
|
|
958
|
-
return "backspace";
|
|
959
|
-
if (data === "\x1b[Z")
|
|
960
|
-
return "shift+tab";
|
|
961
|
-
if (!_kittyProtocolActive && data === "\x1b\r")
|
|
962
|
-
return "alt+enter";
|
|
963
|
-
if (!_kittyProtocolActive && data === "\x1b ")
|
|
964
|
-
return "alt+space";
|
|
965
|
-
if (data === "\x1b\x7f" || data === "\x1b\b")
|
|
966
|
-
return "alt+backspace";
|
|
967
|
-
if (!_kittyProtocolActive && data === "\x1bB")
|
|
968
|
-
return "alt+left";
|
|
969
|
-
if (!_kittyProtocolActive && data === "\x1bF")
|
|
970
|
-
return "alt+right";
|
|
971
|
-
if (!_kittyProtocolActive && data.length === 2 && data[0] === "\x1b") {
|
|
972
|
-
const code = data.charCodeAt(1);
|
|
973
|
-
if (code >= 1 && code <= 26) {
|
|
974
|
-
return `ctrl+alt+${String.fromCharCode(code + 96)}`;
|
|
975
|
-
}
|
|
976
|
-
// Legacy alt+letter (ESC followed by letter a-z)
|
|
977
|
-
if (code >= 97 && code <= 122) {
|
|
978
|
-
return `alt+${String.fromCharCode(code)}`;
|
|
954
|
+
parseFromLegacy(data) {
|
|
955
|
+
if (_kittyProtocolActive && (data === "\x1b\r" || data === "\n")) {
|
|
956
|
+
return "shift+enter";
|
|
979
957
|
}
|
|
958
|
+
const mappedLegacyIdentifier = LEGACY_SEQUENCE_KEY_IDS[data];
|
|
959
|
+
if (mappedLegacyIdentifier) {
|
|
960
|
+
return mappedLegacyIdentifier;
|
|
961
|
+
}
|
|
962
|
+
if (data === "\r" || (!_kittyProtocolActive && data === "\n") || data === "\x1bOM") {
|
|
963
|
+
return "enter";
|
|
964
|
+
}
|
|
965
|
+
if (data === "\x7f" || data === "\x08") {
|
|
966
|
+
return "backspace";
|
|
967
|
+
}
|
|
968
|
+
if (!_kittyProtocolActive && data === "\x1b\r") {
|
|
969
|
+
return "alt+enter";
|
|
970
|
+
}
|
|
971
|
+
if (!_kittyProtocolActive && data === "\x1b ") {
|
|
972
|
+
return "alt+space";
|
|
973
|
+
}
|
|
974
|
+
if (data === "\x1b\x7f" || data === "\x1b\b") {
|
|
975
|
+
return "alt+backspace";
|
|
976
|
+
}
|
|
977
|
+
if (!_kittyProtocolActive && data === "\x1bB") {
|
|
978
|
+
return "alt+left";
|
|
979
|
+
}
|
|
980
|
+
if (!_kittyProtocolActive && data === "\x1bF") {
|
|
981
|
+
return "alt+right";
|
|
982
|
+
}
|
|
983
|
+
if (data === "\x1b[H" || data === "\x1bOH") {
|
|
984
|
+
return "home";
|
|
985
|
+
}
|
|
986
|
+
if (data === "\x1b[F" || data === "\x1bOF") {
|
|
987
|
+
return "end";
|
|
988
|
+
}
|
|
989
|
+
const exactMatch = this.legacyLiteralParseTable[data];
|
|
990
|
+
if (exactMatch) {
|
|
991
|
+
return exactMatch;
|
|
992
|
+
}
|
|
993
|
+
if (!_kittyProtocolActive && data.length === 2 && data[0] === "\x1b") {
|
|
994
|
+
const legacyCode = data.charCodeAt(1);
|
|
995
|
+
if (legacyCode >= 1 && legacyCode <= 26) {
|
|
996
|
+
return `ctrl+alt+${String.fromCharCode(legacyCode + 96)}`;
|
|
997
|
+
}
|
|
998
|
+
if (legacyCode >= 97 && legacyCode <= 122) {
|
|
999
|
+
return `alt+${String.fromCharCode(legacyCode)}`;
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
1002
|
+
if (data.length === 1) {
|
|
1003
|
+
const rawCode = data.charCodeAt(0);
|
|
1004
|
+
if (rawCode >= 1 && rawCode <= 26) {
|
|
1005
|
+
return `ctrl+${String.fromCharCode(rawCode + 96)}`;
|
|
1006
|
+
}
|
|
1007
|
+
if (rawCode >= 32 && rawCode <= 126) {
|
|
1008
|
+
return data;
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
return undefined;
|
|
980
1012
|
}
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
if (
|
|
1003
|
-
return
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1013
|
+
resolveKeyName(codepoint) {
|
|
1014
|
+
if (codepoint === CODEPOINTS.escape)
|
|
1015
|
+
return "escape";
|
|
1016
|
+
if (codepoint === CODEPOINTS.tab)
|
|
1017
|
+
return "tab";
|
|
1018
|
+
if (codepoint === CODEPOINTS.enter || codepoint === CODEPOINTS.kpEnter)
|
|
1019
|
+
return "enter";
|
|
1020
|
+
if (codepoint === CODEPOINTS.space)
|
|
1021
|
+
return "space";
|
|
1022
|
+
if (codepoint === CODEPOINTS.backspace)
|
|
1023
|
+
return "backspace";
|
|
1024
|
+
if (codepoint === FUNCTIONAL_CODEPOINTS.delete)
|
|
1025
|
+
return "delete";
|
|
1026
|
+
if (codepoint === FUNCTIONAL_CODEPOINTS.insert)
|
|
1027
|
+
return "insert";
|
|
1028
|
+
if (codepoint === FUNCTIONAL_CODEPOINTS.home)
|
|
1029
|
+
return "home";
|
|
1030
|
+
if (codepoint === FUNCTIONAL_CODEPOINTS.end)
|
|
1031
|
+
return "end";
|
|
1032
|
+
if (codepoint === FUNCTIONAL_CODEPOINTS.pageUp)
|
|
1033
|
+
return "pageUp";
|
|
1034
|
+
if (codepoint === FUNCTIONAL_CODEPOINTS.pageDown)
|
|
1035
|
+
return "pageDown";
|
|
1036
|
+
if (codepoint === ARROW_CODEPOINTS.up)
|
|
1037
|
+
return "up";
|
|
1038
|
+
if (codepoint === ARROW_CODEPOINTS.down)
|
|
1039
|
+
return "down";
|
|
1040
|
+
if (codepoint === ARROW_CODEPOINTS.left)
|
|
1041
|
+
return "left";
|
|
1042
|
+
if (codepoint === ARROW_CODEPOINTS.right)
|
|
1043
|
+
return "right";
|
|
1044
|
+
if (codepoint >= 97 && codepoint <= 122)
|
|
1045
|
+
return String.fromCharCode(codepoint);
|
|
1046
|
+
const char = String.fromCharCode(codepoint);
|
|
1047
|
+
if (SYMBOL_KEYS.has(char)) {
|
|
1048
|
+
return char;
|
|
1007
1049
|
}
|
|
1050
|
+
return undefined;
|
|
1008
1051
|
}
|
|
1009
|
-
|
|
1052
|
+
formatModifierNames(modifierBits) {
|
|
1053
|
+
const orderedModifiers = [];
|
|
1054
|
+
if (modifierBits & MODIFIERS.shift)
|
|
1055
|
+
orderedModifiers.push("shift");
|
|
1056
|
+
if (modifierBits & MODIFIERS.ctrl)
|
|
1057
|
+
orderedModifiers.push("ctrl");
|
|
1058
|
+
if (modifierBits & MODIFIERS.alt)
|
|
1059
|
+
orderedModifiers.push("alt");
|
|
1060
|
+
return orderedModifiers;
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
const keyMatcherEngine = new KeyMatchEngine();
|
|
1064
|
+
const keyParserEngine = new KeyParseEngine();
|
|
1065
|
+
/**
|
|
1066
|
+
* Match input data against a key identifier string.
|
|
1067
|
+
*
|
|
1068
|
+
* Supported key identifiers:
|
|
1069
|
+
* - Single keys: "escape", "tab", "enter", "backspace", "delete", "home", "end", "space"
|
|
1070
|
+
* - Arrow keys: "up", "down", "left", "right"
|
|
1071
|
+
* - Ctrl combinations: "ctrl+c", "ctrl+z", etc.
|
|
1072
|
+
* - Shift combinations: "shift+tab", "shift+enter"
|
|
1073
|
+
* - Alt combinations: "alt+enter", "alt+backspace"
|
|
1074
|
+
* - Combined modifiers: "shift+ctrl+p", "ctrl+alt+x"
|
|
1075
|
+
*
|
|
1076
|
+
* Use the Key helper for autocomplete: Key.ctrl("c"), Key.escape, Key.ctrlShift("p")
|
|
1077
|
+
*
|
|
1078
|
+
* @param data - Raw input data from terminal
|
|
1079
|
+
* @param keyId - Key identifier (e.g., "ctrl+c", "escape", Key.ctrl("c"))
|
|
1080
|
+
*/
|
|
1081
|
+
export function matchesKey(data, keyId) {
|
|
1082
|
+
return keyMatcherEngine.matches(data, keyId);
|
|
1083
|
+
}
|
|
1084
|
+
/**
|
|
1085
|
+
* Parse input data and return the key identifier if recognized.
|
|
1086
|
+
*
|
|
1087
|
+
* @param data - Raw input data from terminal
|
|
1088
|
+
* @returns Key identifier string (e.g., "ctrl+c") or undefined
|
|
1089
|
+
*/
|
|
1090
|
+
export function parseKey(data) {
|
|
1091
|
+
return keyParserEngine.parse(data);
|
|
1010
1092
|
}
|
|
1011
1093
|
//# sourceMappingURL=keys.js.map
|