indusagi 0.12.19 → 0.12.21
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 +16 -36
- 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/terminal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/tui/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,MAAM,OAAO,oBAAoB;
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/tui/terminal.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/tui.d.ts
CHANGED
|
@@ -64,6 +64,11 @@ export declare function isFocusable(component: Component | null): component is C
|
|
|
64
64
|
* TUI finds and strips this marker, then positions the hardware cursor there.
|
|
65
65
|
*/
|
|
66
66
|
export declare const CURSOR_MARKER = "\u001B_pi:c\u0007";
|
|
67
|
+
type InputListenerResult = {
|
|
68
|
+
consume?: boolean;
|
|
69
|
+
data?: string;
|
|
70
|
+
} | undefined;
|
|
71
|
+
type InputListener = (data: string) => InputListenerResult;
|
|
67
72
|
export { visibleWidth };
|
|
68
73
|
/**
|
|
69
74
|
* Anchor position for overlays
|
|
@@ -165,9 +170,12 @@ export declare class TUI extends Container {
|
|
|
165
170
|
private previousLines;
|
|
166
171
|
private previousWidth;
|
|
167
172
|
private focusedComponent;
|
|
173
|
+
private inputListeners;
|
|
168
174
|
private readonly focusManager;
|
|
169
175
|
private readonly renderEngine;
|
|
170
176
|
private readonly layoutEngine;
|
|
177
|
+
private readonly inputDispatcher;
|
|
178
|
+
private readonly overlayRegistry;
|
|
171
179
|
/** Global callback for debug key (Shift+Ctrl+D). Called before input is forwarded to focused component. */
|
|
172
180
|
onDebug?: () => void;
|
|
173
181
|
private renderRequested;
|
|
@@ -179,7 +187,6 @@ export declare class TUI extends Container {
|
|
|
179
187
|
private maxLinesRendered;
|
|
180
188
|
private previousViewportTop;
|
|
181
189
|
private fullRedrawCount;
|
|
182
|
-
private overlayStack;
|
|
183
190
|
constructor(terminal: Terminal, showHardwareCursor?: boolean);
|
|
184
191
|
get fullRedraws(): number;
|
|
185
192
|
getShowHardwareCursor(): boolean;
|
|
@@ -200,6 +207,8 @@ export declare class TUI extends Container {
|
|
|
200
207
|
private getTopmostVisibleOverlay;
|
|
201
208
|
invalidate(): void;
|
|
202
209
|
start(): void;
|
|
210
|
+
addInputListener(listener: InputListener): () => void;
|
|
211
|
+
removeInputListener(listener: InputListener): void;
|
|
203
212
|
private queryCellSize;
|
|
204
213
|
stop(): void;
|
|
205
214
|
requestRender(force?: boolean): void;
|
|
@@ -213,6 +222,10 @@ export declare class TUI extends Container {
|
|
|
213
222
|
private resolveOverlayLayout;
|
|
214
223
|
/** Composite all overlays into content lines (in stack order, later = on top). */
|
|
215
224
|
private compositeOverlays;
|
|
225
|
+
private collectRenderedOverlays;
|
|
226
|
+
private ensureOverlayWorkingHeight;
|
|
227
|
+
private compositeRenderedOverlays;
|
|
228
|
+
private clampCompositeWidth;
|
|
216
229
|
private static readonly SEGMENT_RESET;
|
|
217
230
|
private applyLineResets;
|
|
218
231
|
/** Splice overlay content into a base line at a specific column. Single-pass optimized. */
|
package/dist/tui/tui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/tui/tui.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/tui/tui.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/tui.js
CHANGED
|
@@ -8,6 +8,9 @@ import { isKeyRelease, matchesKey } from "./keys.js";
|
|
|
8
8
|
import { getCapabilities, setCellDimensions } from "./terminal-image.js";
|
|
9
9
|
import { extractSegments, sliceByColumn, sliceWithWidth, visibleWidth } from "./utils.js";
|
|
10
10
|
export class ComponentBase {
|
|
11
|
+
_cachedWidth;
|
|
12
|
+
_cachedRender;
|
|
13
|
+
wantsKeyRelease;
|
|
11
14
|
invalidate() {
|
|
12
15
|
this._cachedWidth = undefined;
|
|
13
16
|
this._cachedRender = undefined;
|
|
@@ -48,9 +51,7 @@ function parseSizeValue(value, referenceSize) {
|
|
|
48
51
|
return undefined;
|
|
49
52
|
}
|
|
50
53
|
export class FocusManager {
|
|
51
|
-
|
|
52
|
-
this.focused = null;
|
|
53
|
-
}
|
|
54
|
+
focused = null;
|
|
54
55
|
setFocus(component) {
|
|
55
56
|
const previous = this.focused;
|
|
56
57
|
if (isFocusable(previous))
|
|
@@ -182,10 +183,7 @@ export class LayoutEngine {
|
|
|
182
183
|
* Container - a component that contains other components
|
|
183
184
|
*/
|
|
184
185
|
export class Container extends ComponentBase {
|
|
185
|
-
|
|
186
|
-
super(...arguments);
|
|
187
|
-
this.children = [];
|
|
188
|
-
}
|
|
186
|
+
children = [];
|
|
189
187
|
addChild(component) {
|
|
190
188
|
this.children.push(component);
|
|
191
189
|
component.onMount?.();
|
|
@@ -215,29 +213,113 @@ export class Container extends ComponentBase {
|
|
|
215
213
|
return lines;
|
|
216
214
|
}
|
|
217
215
|
}
|
|
216
|
+
class OverlayRegistry {
|
|
217
|
+
stack = [];
|
|
218
|
+
create(component, options, preFocus) {
|
|
219
|
+
const entry = { component, options, preFocus, hidden: false };
|
|
220
|
+
this.stack.push(entry);
|
|
221
|
+
return entry;
|
|
222
|
+
}
|
|
223
|
+
remove(entry) {
|
|
224
|
+
const index = this.stack.indexOf(entry);
|
|
225
|
+
if (index === -1)
|
|
226
|
+
return false;
|
|
227
|
+
this.stack.splice(index, 1);
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
pop() {
|
|
231
|
+
return this.stack.pop();
|
|
232
|
+
}
|
|
233
|
+
values() {
|
|
234
|
+
return this.stack;
|
|
235
|
+
}
|
|
236
|
+
count() {
|
|
237
|
+
return this.stack.length;
|
|
238
|
+
}
|
|
239
|
+
isVisible(entry, termWidth, termHeight) {
|
|
240
|
+
if (entry.hidden)
|
|
241
|
+
return false;
|
|
242
|
+
if (!entry.options?.visible)
|
|
243
|
+
return true;
|
|
244
|
+
return entry.options.visible(termWidth, termHeight);
|
|
245
|
+
}
|
|
246
|
+
topVisible(termWidth, termHeight) {
|
|
247
|
+
for (let i = this.stack.length - 1; i >= 0; i--) {
|
|
248
|
+
const entry = this.stack[i];
|
|
249
|
+
if (this.isVisible(entry, termWidth, termHeight))
|
|
250
|
+
return entry;
|
|
251
|
+
}
|
|
252
|
+
return undefined;
|
|
253
|
+
}
|
|
254
|
+
hasVisible(termWidth, termHeight) {
|
|
255
|
+
return this.stack.some((entry) => this.isVisible(entry, termWidth, termHeight));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
class InputDispatchEngine {
|
|
259
|
+
applyListeners(data, listeners) {
|
|
260
|
+
if (listeners.size === 0)
|
|
261
|
+
return data;
|
|
262
|
+
let current = data;
|
|
263
|
+
for (const listener of listeners) {
|
|
264
|
+
const result = listener(current);
|
|
265
|
+
if (result?.consume)
|
|
266
|
+
return null;
|
|
267
|
+
if (result?.data !== undefined)
|
|
268
|
+
current = result.data;
|
|
269
|
+
}
|
|
270
|
+
return current.length > 0 ? current : null;
|
|
271
|
+
}
|
|
272
|
+
dispatchToFocused(data, focused) {
|
|
273
|
+
if (!focused?.handleInput)
|
|
274
|
+
return false;
|
|
275
|
+
if (isKeyRelease(data) && !focused.wantsKeyRelease)
|
|
276
|
+
return false;
|
|
277
|
+
focused.handleInput(data);
|
|
278
|
+
return true;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
class CursorPlacementResolver {
|
|
282
|
+
static extract(lines) {
|
|
283
|
+
for (let row = 0; row < lines.length; row++) {
|
|
284
|
+
const line = lines[row];
|
|
285
|
+
const markerIndex = line.indexOf(CURSOR_MARKER);
|
|
286
|
+
if (markerIndex === -1)
|
|
287
|
+
continue;
|
|
288
|
+
const col = visibleWidth(line.slice(0, markerIndex));
|
|
289
|
+
lines[row] = line.slice(0, markerIndex) + line.slice(markerIndex + CURSOR_MARKER.length);
|
|
290
|
+
return { row, col };
|
|
291
|
+
}
|
|
292
|
+
return null;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
218
295
|
/**
|
|
219
296
|
* TUI - Main class for managing terminal UI with differential rendering
|
|
220
297
|
*/
|
|
221
298
|
export class TUI extends Container {
|
|
299
|
+
terminal;
|
|
300
|
+
previousLines = [];
|
|
301
|
+
previousWidth = 0;
|
|
302
|
+
focusedComponent = null;
|
|
303
|
+
inputListeners = new Set();
|
|
304
|
+
focusManager = new FocusManager();
|
|
305
|
+
renderEngine = new RenderEngine();
|
|
306
|
+
layoutEngine = new LayoutEngine();
|
|
307
|
+
inputDispatcher = new InputDispatchEngine();
|
|
308
|
+
overlayRegistry = new OverlayRegistry();
|
|
309
|
+
/** Global callback for debug key (Shift+Ctrl+D). Called before input is forwarded to focused component. */
|
|
310
|
+
onDebug;
|
|
311
|
+
renderRequested = false;
|
|
312
|
+
cursorRow = 0; // Logical cursor row (end of rendered content)
|
|
313
|
+
hardwareCursorRow = 0; // Actual terminal cursor row (may differ due to IME positioning)
|
|
314
|
+
inputBuffer = ""; // Buffer for parsing terminal responses
|
|
315
|
+
cellSizeQueryPending = false;
|
|
316
|
+
showHardwareCursor = process.env.PI_HARDWARE_CURSOR === "1";
|
|
317
|
+
maxLinesRendered = 0; // Track terminal's working area (max lines ever rendered)
|
|
318
|
+
previousViewportTop = 0; // Track previous viewport top for resize-aware cursor moves
|
|
319
|
+
fullRedrawCount = 0;
|
|
320
|
+
// Overlay stack for modal components rendered on top of base content is maintained by OverlayRegistry
|
|
222
321
|
constructor(terminal, showHardwareCursor) {
|
|
223
322
|
super();
|
|
224
|
-
this.previousLines = [];
|
|
225
|
-
this.previousWidth = 0;
|
|
226
|
-
this.focusedComponent = null;
|
|
227
|
-
this.focusManager = new FocusManager();
|
|
228
|
-
this.renderEngine = new RenderEngine();
|
|
229
|
-
this.layoutEngine = new LayoutEngine();
|
|
230
|
-
this.renderRequested = false;
|
|
231
|
-
this.cursorRow = 0; // Logical cursor row (end of rendered content)
|
|
232
|
-
this.hardwareCursorRow = 0; // Actual terminal cursor row (may differ due to IME positioning)
|
|
233
|
-
this.inputBuffer = ""; // Buffer for parsing terminal responses
|
|
234
|
-
this.cellSizeQueryPending = false;
|
|
235
|
-
this.showHardwareCursor = process.env.PI_HARDWARE_CURSOR === "1";
|
|
236
|
-
this.maxLinesRendered = 0; // Track terminal's working area (max lines ever rendered)
|
|
237
|
-
this.previousViewportTop = 0; // Track previous viewport top for resize-aware cursor moves
|
|
238
|
-
this.fullRedrawCount = 0;
|
|
239
|
-
// Overlay stack for modal components rendered on top of base content
|
|
240
|
-
this.overlayStack = [];
|
|
241
323
|
this.terminal = terminal;
|
|
242
324
|
if (showHardwareCursor !== undefined) {
|
|
243
325
|
this.showHardwareCursor = showHardwareCursor;
|
|
@@ -267,47 +349,36 @@ export class TUI extends Container {
|
|
|
267
349
|
* Returns a handle to control the overlay's visibility.
|
|
268
350
|
*/
|
|
269
351
|
showOverlay(component, options) {
|
|
270
|
-
const entry =
|
|
271
|
-
this.overlayStack.push(entry);
|
|
272
|
-
// Only focus if overlay is actually visible
|
|
352
|
+
const entry = this.overlayRegistry.create(component, options, this.focusedComponent);
|
|
273
353
|
if (this.isOverlayVisible(entry)) {
|
|
274
354
|
this.setFocus(component);
|
|
275
355
|
}
|
|
276
356
|
this.terminal.hideCursor();
|
|
277
357
|
this.requestRender();
|
|
278
|
-
// Return handle for controlling this overlay
|
|
279
358
|
return {
|
|
280
359
|
hide: () => {
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
const topVisible = this.getTopmostVisibleOverlay();
|
|
287
|
-
this.setFocus(topVisible?.component ?? entry.preFocus);
|
|
288
|
-
}
|
|
289
|
-
if (this.overlayStack.length === 0)
|
|
290
|
-
this.terminal.hideCursor();
|
|
291
|
-
this.requestRender();
|
|
360
|
+
if (!this.overlayRegistry.remove(entry))
|
|
361
|
+
return;
|
|
362
|
+
if (this.focusedComponent === component) {
|
|
363
|
+
const topVisible = this.getTopmostVisibleOverlay();
|
|
364
|
+
this.setFocus(topVisible?.component ?? entry.preFocus);
|
|
292
365
|
}
|
|
366
|
+
if (this.overlayRegistry.count() === 0)
|
|
367
|
+
this.terminal.hideCursor();
|
|
368
|
+
this.requestRender();
|
|
293
369
|
},
|
|
294
370
|
setHidden: (hidden) => {
|
|
295
371
|
if (entry.hidden === hidden)
|
|
296
372
|
return;
|
|
297
373
|
entry.hidden = hidden;
|
|
298
|
-
// Update focus when hiding/showing
|
|
299
374
|
if (hidden) {
|
|
300
|
-
// If this overlay had focus, move focus to next visible or preFocus
|
|
301
375
|
if (this.focusedComponent === component) {
|
|
302
376
|
const topVisible = this.getTopmostVisibleOverlay();
|
|
303
377
|
this.setFocus(topVisible?.component ?? entry.preFocus);
|
|
304
378
|
}
|
|
305
379
|
}
|
|
306
|
-
else {
|
|
307
|
-
|
|
308
|
-
if (this.isOverlayVisible(entry)) {
|
|
309
|
-
this.setFocus(component);
|
|
310
|
-
}
|
|
380
|
+
else if (this.isOverlayVisible(entry)) {
|
|
381
|
+
this.setFocus(component);
|
|
311
382
|
}
|
|
312
383
|
this.requestRender();
|
|
313
384
|
},
|
|
@@ -316,42 +387,32 @@ export class TUI extends Container {
|
|
|
316
387
|
}
|
|
317
388
|
/** Hide the topmost overlay and restore previous focus. */
|
|
318
389
|
hideOverlay() {
|
|
319
|
-
const overlay = this.
|
|
390
|
+
const overlay = this.overlayRegistry.pop();
|
|
320
391
|
if (!overlay)
|
|
321
392
|
return;
|
|
322
|
-
// Find topmost visible overlay, or fall back to preFocus
|
|
323
393
|
const topVisible = this.getTopmostVisibleOverlay();
|
|
324
394
|
this.setFocus(topVisible?.component ?? overlay.preFocus);
|
|
325
|
-
if (this.
|
|
395
|
+
if (this.overlayRegistry.count() === 0)
|
|
326
396
|
this.terminal.hideCursor();
|
|
327
397
|
this.requestRender();
|
|
328
398
|
}
|
|
329
399
|
/** Check if there are any visible overlays */
|
|
330
400
|
hasOverlay() {
|
|
331
|
-
return this.
|
|
401
|
+
return this.overlayRegistry.hasVisible(this.terminal.columns, this.terminal.rows);
|
|
332
402
|
}
|
|
333
403
|
/** Check if an overlay entry is currently visible */
|
|
334
404
|
isOverlayVisible(entry) {
|
|
335
|
-
|
|
336
|
-
return false;
|
|
337
|
-
if (entry.options?.visible) {
|
|
338
|
-
return entry.options.visible(this.terminal.columns, this.terminal.rows);
|
|
339
|
-
}
|
|
340
|
-
return true;
|
|
405
|
+
return this.overlayRegistry.isVisible(entry, this.terminal.columns, this.terminal.rows);
|
|
341
406
|
}
|
|
342
407
|
/** Find the topmost visible overlay, if any */
|
|
343
408
|
getTopmostVisibleOverlay() {
|
|
344
|
-
|
|
345
|
-
if (this.isOverlayVisible(this.overlayStack[i])) {
|
|
346
|
-
return this.overlayStack[i];
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
return undefined;
|
|
409
|
+
return this.overlayRegistry.topVisible(this.terminal.columns, this.terminal.rows);
|
|
350
410
|
}
|
|
351
411
|
invalidate() {
|
|
352
412
|
super.invalidate();
|
|
353
|
-
for (const overlay of this.
|
|
413
|
+
for (const overlay of this.overlayRegistry.values()) {
|
|
354
414
|
overlay.component.invalidate?.();
|
|
415
|
+
}
|
|
355
416
|
}
|
|
356
417
|
start() {
|
|
357
418
|
this.terminal.start((data) => this.handleInput(data), () => this.requestRender());
|
|
@@ -359,6 +420,15 @@ export class TUI extends Container {
|
|
|
359
420
|
this.queryCellSize();
|
|
360
421
|
this.requestRender();
|
|
361
422
|
}
|
|
423
|
+
addInputListener(listener) {
|
|
424
|
+
this.inputListeners.add(listener);
|
|
425
|
+
return () => {
|
|
426
|
+
this.inputListeners.delete(listener);
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
removeInputListener(listener) {
|
|
430
|
+
this.inputListeners.delete(listener);
|
|
431
|
+
}
|
|
362
432
|
queryCellSize() {
|
|
363
433
|
// Only query if terminal supports images (cell size is only used for image rendering)
|
|
364
434
|
if (!getCapabilities().images) {
|
|
@@ -403,7 +473,10 @@ export class TUI extends Container {
|
|
|
403
473
|
});
|
|
404
474
|
}
|
|
405
475
|
handleInput(data) {
|
|
406
|
-
|
|
476
|
+
const listenerData = this.inputDispatcher.applyListeners(data, this.inputListeners);
|
|
477
|
+
if (listenerData === null)
|
|
478
|
+
return;
|
|
479
|
+
data = listenerData;
|
|
407
480
|
if (this.cellSizeQueryPending) {
|
|
408
481
|
this.inputBuffer += data;
|
|
409
482
|
const filtered = this.parseCellSizeResponse();
|
|
@@ -411,33 +484,16 @@ export class TUI extends Container {
|
|
|
411
484
|
return;
|
|
412
485
|
data = filtered;
|
|
413
486
|
}
|
|
414
|
-
// Global debug key handler (Shift+Ctrl+D)
|
|
415
487
|
if (matchesKey(data, "shift+ctrl+d") && this.onDebug) {
|
|
416
488
|
this.onDebug();
|
|
417
489
|
return;
|
|
418
490
|
}
|
|
419
|
-
|
|
420
|
-
// (visibility can change due to terminal resize or visible() callback)
|
|
421
|
-
const focusedOverlay = this.overlayStack.find((o) => o.component === this.focusedComponent);
|
|
491
|
+
const focusedOverlay = this.overlayRegistry.values().find((entry) => entry.component === this.focusedComponent);
|
|
422
492
|
if (focusedOverlay && !this.isOverlayVisible(focusedOverlay)) {
|
|
423
|
-
// Focused overlay is no longer visible, redirect to topmost visible overlay
|
|
424
493
|
const topVisible = this.getTopmostVisibleOverlay();
|
|
425
|
-
|
|
426
|
-
this.setFocus(topVisible.component);
|
|
427
|
-
}
|
|
428
|
-
else {
|
|
429
|
-
// No visible overlays, restore to preFocus
|
|
430
|
-
this.setFocus(focusedOverlay.preFocus);
|
|
431
|
-
}
|
|
494
|
+
this.setFocus(topVisible?.component ?? focusedOverlay.preFocus);
|
|
432
495
|
}
|
|
433
|
-
|
|
434
|
-
// The focused component can decide how to handle Ctrl+C
|
|
435
|
-
if (this.focusedComponent?.handleInput) {
|
|
436
|
-
// Filter out key release events unless component opts in
|
|
437
|
-
if (isKeyRelease(data) && !this.focusedComponent.wantsKeyRelease) {
|
|
438
|
-
return;
|
|
439
|
-
}
|
|
440
|
-
this.focusedComponent.handleInput(data);
|
|
496
|
+
if (this.inputDispatcher.dispatchToFocused(data, this.focusedComponent)) {
|
|
441
497
|
this.requestRender();
|
|
442
498
|
}
|
|
443
499
|
}
|
|
@@ -489,67 +545,63 @@ export class TUI extends Container {
|
|
|
489
545
|
}
|
|
490
546
|
/** Composite all overlays into content lines (in stack order, later = on top). */
|
|
491
547
|
compositeOverlays(lines, termWidth, termHeight) {
|
|
492
|
-
|
|
548
|
+
const overlays = this.overlayRegistry.values();
|
|
549
|
+
if (overlays.length === 0)
|
|
493
550
|
return lines;
|
|
494
551
|
const result = [...lines];
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
552
|
+
const rendered = this.collectRenderedOverlays(overlays, termWidth, termHeight, result.length);
|
|
553
|
+
this.ensureOverlayWorkingHeight(result, rendered.minLinesNeeded);
|
|
554
|
+
const viewportStart = Math.max(0, result.length - termHeight);
|
|
555
|
+
const modified = this.compositeRenderedOverlays(result, rendered.items, viewportStart, termWidth);
|
|
556
|
+
this.clampCompositeWidth(result, modified, termWidth);
|
|
557
|
+
return result;
|
|
558
|
+
}
|
|
559
|
+
collectRenderedOverlays(overlays, termWidth, termHeight, initialMinLines) {
|
|
560
|
+
const items = [];
|
|
561
|
+
let minLinesNeeded = initialMinLines;
|
|
562
|
+
for (const entry of overlays) {
|
|
500
563
|
if (!this.isOverlayVisible(entry))
|
|
501
564
|
continue;
|
|
502
|
-
const {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
const
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
// Apply maxHeight if specified
|
|
509
|
-
if (maxHeight !== undefined && overlayLines.length > maxHeight) {
|
|
510
|
-
overlayLines = overlayLines.slice(0, maxHeight);
|
|
511
|
-
}
|
|
512
|
-
// Get final row/col with actual overlay height
|
|
513
|
-
const { row, col } = this.resolveOverlayLayout(options, overlayLines.length, termWidth, termHeight);
|
|
514
|
-
rendered.push({ overlayLines, row, col, w: width });
|
|
515
|
-
minLinesNeeded = Math.max(minLinesNeeded, row + overlayLines.length);
|
|
565
|
+
const { width, maxHeight } = this.resolveOverlayLayout(entry.options, 0, termWidth, termHeight);
|
|
566
|
+
const rawLines = entry.component.render(width);
|
|
567
|
+
const overlayLines = maxHeight !== undefined && rawLines.length > maxHeight ? rawLines.slice(0, maxHeight) : rawLines;
|
|
568
|
+
const finalPos = this.resolveOverlayLayout(entry.options, overlayLines.length, termWidth, termHeight);
|
|
569
|
+
items.push({ overlayLines, row: finalPos.row, col: finalPos.col, width });
|
|
570
|
+
minLinesNeeded = Math.max(minLinesNeeded, finalPos.row + overlayLines.length);
|
|
516
571
|
}
|
|
517
|
-
|
|
518
|
-
|
|
572
|
+
return { items, minLinesNeeded };
|
|
573
|
+
}
|
|
574
|
+
ensureOverlayWorkingHeight(result, minLinesNeeded) {
|
|
519
575
|
const workingHeight = Math.max(this.maxLinesRendered, minLinesNeeded);
|
|
520
|
-
// Extend result with empty lines if content is too short for overlay placement or working area
|
|
521
576
|
while (result.length < workingHeight) {
|
|
522
577
|
result.push("");
|
|
523
578
|
}
|
|
524
|
-
|
|
525
|
-
|
|
579
|
+
}
|
|
580
|
+
compositeRenderedOverlays(result, rendered, viewportStart, termWidth) {
|
|
526
581
|
const modifiedLines = new Set();
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
582
|
+
for (const renderedOverlay of rendered) {
|
|
583
|
+
for (let localRow = 0; localRow < renderedOverlay.overlayLines.length; localRow++) {
|
|
584
|
+
const targetRow = viewportStart + renderedOverlay.row + localRow;
|
|
585
|
+
if (targetRow < 0 || targetRow >= result.length)
|
|
586
|
+
continue;
|
|
587
|
+
const originalOverlayLine = renderedOverlay.overlayLines[localRow];
|
|
588
|
+
const overlayLine = visibleWidth(originalOverlayLine) > renderedOverlay.width
|
|
589
|
+
? sliceByColumn(originalOverlayLine, 0, renderedOverlay.width, true)
|
|
590
|
+
: originalOverlayLine;
|
|
591
|
+
result[targetRow] = this.compositeLineAt(result[targetRow], overlayLine, renderedOverlay.col, renderedOverlay.width, termWidth);
|
|
592
|
+
modifiedLines.add(targetRow);
|
|
538
593
|
}
|
|
539
594
|
}
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
result[idx] = sliceByColumn(result[idx], 0, termWidth, true);
|
|
548
|
-
}
|
|
595
|
+
return modifiedLines;
|
|
596
|
+
}
|
|
597
|
+
clampCompositeWidth(result, modified, termWidth) {
|
|
598
|
+
for (const row of modified) {
|
|
599
|
+
if (visibleWidth(result[row]) <= termWidth)
|
|
600
|
+
continue;
|
|
601
|
+
result[row] = sliceByColumn(result[row], 0, termWidth, true);
|
|
549
602
|
}
|
|
550
|
-
return result;
|
|
551
603
|
}
|
|
552
|
-
static
|
|
604
|
+
static SEGMENT_RESET = "\x1b[0m\x1b]8;;\x07";
|
|
553
605
|
applyLineResets(lines) {
|
|
554
606
|
const reset = TUI.SEGMENT_RESET;
|
|
555
607
|
return lines.map((line) => (this.containsImage(line) ? line : line + reset));
|
|
@@ -599,19 +651,7 @@ export class TUI extends Container {
|
|
|
599
651
|
* @returns Cursor position { row, col } or null if no marker found
|
|
600
652
|
*/
|
|
601
653
|
extractCursorPosition(lines) {
|
|
602
|
-
|
|
603
|
-
const line = lines[row];
|
|
604
|
-
const markerIndex = line.indexOf(CURSOR_MARKER);
|
|
605
|
-
if (markerIndex !== -1) {
|
|
606
|
-
// Calculate visual column (width of text before marker)
|
|
607
|
-
const beforeMarker = line.slice(0, markerIndex);
|
|
608
|
-
const col = visibleWidth(beforeMarker);
|
|
609
|
-
// Strip marker from the line
|
|
610
|
-
lines[row] = line.slice(0, markerIndex) + line.slice(markerIndex + CURSOR_MARKER.length);
|
|
611
|
-
return { row, col };
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
return null;
|
|
654
|
+
return CursorPlacementResolver.extract(lines);
|
|
615
655
|
}
|
|
616
656
|
renderFullFrame(newLines, width, height, cursorPos, clear) {
|
|
617
657
|
this.fullRedrawCount += 1;
|
|
@@ -640,7 +680,7 @@ export class TUI extends Container {
|
|
|
640
680
|
}
|
|
641
681
|
prepareRenderFrame(width, height) {
|
|
642
682
|
let newLines = this.render(width);
|
|
643
|
-
if (this.
|
|
683
|
+
if (this.overlayRegistry.count() > 0) {
|
|
644
684
|
newLines = this.compositeOverlays(newLines, width, height);
|
|
645
685
|
}
|
|
646
686
|
const cursorPos = this.extractCursorPosition(newLines);
|