@bastani/atomic 0.9.12 → 0.9.13-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +150 -0
- package/README.md +35 -17
- package/dist/builtin/i-have-adhd/CHANGELOG.md +17 -0
- package/dist/builtin/i-have-adhd/LICENSE +21 -0
- package/dist/builtin/i-have-adhd/README.md +18 -0
- package/dist/builtin/i-have-adhd/index.ts +238 -0
- package/dist/builtin/i-have-adhd/package.json +56 -0
- package/dist/builtin/i-have-adhd/skills/i-have-adhd/SKILL.md +140 -0
- package/dist/builtin/intercom/CHANGELOG.md +25 -0
- package/dist/builtin/intercom/README.md +30 -16
- package/dist/builtin/intercom/broker/bounded-stderr-install.ts +18 -0
- package/dist/builtin/intercom/broker/bounded-stderr.ts +132 -0
- package/dist/builtin/intercom/broker/broker.ts +12 -23
- package/dist/builtin/intercom/broker/client.ts +81 -5
- package/dist/builtin/intercom/broker/paths.ts +9 -0
- package/dist/builtin/intercom/broker/presence-handler.ts +103 -0
- package/dist/builtin/intercom/broker/spawn.ts +128 -29
- package/dist/builtin/intercom/contact-supervisor-tool.ts +13 -3
- package/dist/builtin/intercom/foreground-detach-handoff.ts +30 -14
- package/dist/builtin/intercom/group.ts +64 -25
- package/dist/builtin/intercom/index-heavy.ts +51 -8
- package/dist/builtin/intercom/index.ts +50 -22
- package/dist/builtin/intercom/intercom-tool.ts +82 -5
- package/dist/builtin/intercom/intercom-utils.ts +15 -29
- package/dist/builtin/intercom/lazy-subagent-ack.ts +11 -6
- package/dist/builtin/intercom/package.json +2 -3
- package/dist/builtin/intercom/runtime-group.ts +13 -0
- package/dist/builtin/intercom/skills/intercom/SKILL.md +30 -2
- package/dist/builtin/intercom/source-ownership.ts +9 -12
- package/dist/builtin/intercom/subagent-relay.ts +32 -16
- package/dist/builtin/intercom/terminal-ordering-barrier.ts +21 -4
- package/dist/builtin/intercom/types.ts +3 -1
- package/dist/builtin/intercom/ui/compose.ts +8 -6
- package/dist/builtin/intercom/ui/session-list.ts +7 -5
- package/dist/builtin/mcp/CHANGELOG.md +19 -0
- package/dist/builtin/mcp/README.md +3 -1
- package/dist/builtin/mcp/glimpse-ui.ts +2 -1
- package/dist/builtin/mcp/index.ts +10 -26
- package/dist/builtin/mcp/mcp-panel.ts +35 -34
- package/dist/builtin/mcp/mcp-setup-panel.ts +35 -33
- package/dist/builtin/mcp/npx-resolver.ts +3 -2
- package/dist/builtin/mcp/package.json +3 -3
- package/dist/builtin/mcp/sampling-handler.ts +5 -1
- package/dist/builtin/mcp/server-manager.ts +4 -7
- package/dist/builtin/mcp/startup-warmup.ts +20 -8
- package/dist/builtin/subagents/CHANGELOG.md +63 -0
- package/dist/builtin/subagents/README.md +144 -351
- package/dist/builtin/subagents/agents/worker.md +1 -1
- package/dist/builtin/subagents/package.json +5 -5
- package/dist/builtin/subagents/prompts/parallel-context-build.md +2 -2
- package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +4 -4
- package/dist/builtin/subagents/prompts/review-loop.md +1 -1
- package/dist/builtin/subagents/skills/subagent/SKILL.md +39 -102
- package/dist/builtin/subagents/src/agents/agent-discovery.ts +1 -29
- package/dist/builtin/subagents/src/agents/agent-loaders.ts +1 -40
- package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +6 -135
- package/dist/builtin/subagents/src/agents/agent-management.ts +52 -282
- package/dist/builtin/subagents/src/agents/agent-paths.ts +0 -22
- package/dist/builtin/subagents/src/agents/agent-types.ts +0 -40
- package/dist/builtin/subagents/src/agents/agents.ts +0 -3
- package/dist/builtin/subagents/src/agents/identity.ts +2 -4
- package/dist/builtin/subagents/src/agents/skills-paths.ts +8 -1
- package/dist/builtin/subagents/src/extension/doctor.ts +4 -24
- package/dist/builtin/subagents/src/extension/fanout-child.ts +76 -56
- package/dist/builtin/subagents/src/extension/index.ts +32 -39
- package/dist/builtin/subagents/src/extension/prompt-guidance.ts +2 -2
- package/dist/builtin/subagents/src/extension/schemas.ts +1 -157
- package/dist/builtin/subagents/src/extension/startup-maintenance.ts +25 -46
- package/dist/builtin/subagents/src/extension/tool-description.ts +4 -13
- package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +6 -2
- package/dist/builtin/subagents/src/intercom/result-intercom.ts +27 -29
- package/dist/builtin/subagents/src/intercom/supervisor-authorization.ts +9 -2
- package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +248 -435
- package/dist/builtin/subagents/src/runs/background/completion-notification.ts +8 -3
- package/dist/builtin/subagents/src/runs/background/notify.ts +83 -26
- package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +1 -281
- package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +0 -5
- package/dist/builtin/subagents/src/runs/foreground/execution.ts +1 -4
- package/dist/builtin/subagents/src/runs/foreground/inprocess-run-sync.ts +559 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +103 -259
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +29 -31
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +10 -173
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +7 -5
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +13 -6
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +1 -646
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +2 -7
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +14 -7
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +39 -20
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +16 -11
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +1 -14
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +194 -104
- package/dist/builtin/subagents/src/runs/inprocess/background-single.ts +195 -0
- package/dist/builtin/subagents/src/runs/inprocess/background.ts +90 -0
- package/dist/builtin/subagents/src/runs/inprocess/child-policy.ts +27 -0
- package/dist/builtin/subagents/src/runs/inprocess/control-registry.ts +55 -0
- package/dist/builtin/subagents/src/runs/inprocess/control-status.ts +106 -0
- package/dist/builtin/subagents/src/runs/inprocess/index.ts +50 -0
- package/dist/builtin/subagents/src/runs/inprocess/nested-routing.ts +218 -0
- package/dist/builtin/subagents/src/runs/{shared/subagent-prompt-runtime.ts → inprocess/prompt-behavior.ts} +37 -75
- package/dist/builtin/subagents/src/runs/inprocess/runner.ts +1392 -0
- package/dist/builtin/subagents/src/runs/{shared/nested-events.ts → inprocess/runtime-support/nested-api.ts} +13 -7
- package/dist/builtin/subagents/src/runs/{shared/nested-events-control.ts → inprocess/runtime-support/nested-control.ts} +18 -17
- package/dist/builtin/subagents/src/runs/{shared/nested-events-core.ts → inprocess/runtime-support/nested-core.ts} +14 -61
- package/dist/builtin/subagents/src/runs/{shared/nested-events-projection.ts → inprocess/runtime-support/nested-projection.ts} +4 -12
- package/dist/builtin/subagents/src/runs/{shared/nested-events-registry.ts → inprocess/runtime-support/nested-registry.ts} +19 -4
- package/dist/builtin/subagents/src/runs/{shared/nested-render.ts → inprocess/runtime-support/nested-rendering.ts} +3 -3
- package/dist/builtin/subagents/src/runs/{shared/nested-events-sanitize.ts → inprocess/runtime-support/nested-sanitize.ts} +4 -6
- package/dist/builtin/subagents/src/runs/inprocess.ts +1 -0
- package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +23 -7
- package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +0 -1
- package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +15 -492
- package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +13 -97
- package/dist/builtin/subagents/src/runs/shared/run-history.ts +3 -5
- package/dist/builtin/subagents/src/runs/shared/single-output.ts +4 -4
- package/dist/builtin/subagents/src/runs/shared/worktree.ts +7 -2
- package/dist/builtin/subagents/src/shared/formatters.ts +2 -56
- package/dist/builtin/subagents/src/shared/settings.ts +14 -350
- package/dist/builtin/subagents/src/shared/types-async.ts +8 -32
- package/dist/builtin/subagents/src/shared/types-config.ts +29 -13
- package/dist/builtin/subagents/src/shared/types-depth.ts +30 -56
- package/dist/builtin/subagents/src/shared/types-results.ts +18 -60
- package/dist/builtin/subagents/src/shared/types-runtime.ts +0 -1
- package/dist/builtin/subagents/src/shared/utils.ts +5 -0
- package/dist/builtin/subagents/src/slash/bridge-settlement.ts +87 -0
- package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +49 -10
- package/dist/builtin/subagents/src/slash/slash-bridge.ts +27 -7
- package/dist/builtin/subagents/src/slash/slash-commands.ts +37 -82
- package/dist/builtin/subagents/src/slash/slash-live-state.ts +3 -94
- package/dist/builtin/subagents/src/tui/render-event-formatting.ts +3 -35
- package/dist/builtin/subagents/src/tui/render-progress.ts +89 -0
- package/dist/builtin/subagents/src/tui/render-result-compact.ts +77 -68
- package/dist/builtin/subagents/src/tui/render-result.ts +79 -99
- package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -6
- package/dist/builtin/subagents/src/tui/render-status-progress.ts +8 -5
- package/dist/builtin/subagents/src/tui/render-widget-graph.ts +6 -63
- package/dist/builtin/subagents/src/tui/render-widget.ts +0 -24
- package/dist/builtin/web-access/CHANGELOG.md +14 -0
- package/dist/builtin/web-access/chrome-cookies.ts +3 -2
- package/dist/builtin/web-access/github-api.ts +7 -6
- package/dist/builtin/web-access/github-extract.ts +2 -1
- package/dist/builtin/web-access/package.json +3 -3
- package/dist/builtin/web-access/subprocess.ts +3 -1
- package/dist/builtin/web-access/summary-review.ts +2 -2
- package/dist/builtin/web-access/web-search-features.ts +38 -22
- package/dist/builtin/web-access/web-search-summary.ts +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +70 -0
- package/dist/builtin/workflows/README.md +54 -4
- package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +3 -0
- package/dist/builtin/workflows/builtin/ralph-models.ts +25 -20
- package/dist/builtin/workflows/builtin/shared-prompts.ts +5 -2
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/durable/backend.ts +25 -1
- package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +60 -3
- package/dist/builtin/workflows/src/durable/completed-catalog.ts +67 -1
- package/dist/builtin/workflows/src/durable/completed-subtree.ts +22 -7
- package/dist/builtin/workflows/src/durable/dbos-metadata.ts +15 -1
- package/dist/builtin/workflows/src/durable/local-command.ts +2 -1
- package/dist/builtin/workflows/src/durable/resume-runtime.ts +1 -0
- package/dist/builtin/workflows/src/durable/tool-primitive.ts +4 -28
- package/dist/builtin/workflows/src/durable/types.ts +22 -1
- package/dist/builtin/workflows/src/durable/workflow-child-result.ts +3 -1
- package/dist/builtin/workflows/src/engine/primitives/workflow.ts +1 -1
- package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +10 -2
- package/dist/builtin/workflows/src/engine/run-durable-topology.ts +9 -2
- package/dist/builtin/workflows/src/engine/run.ts +17 -1
- package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +18 -39
- package/dist/builtin/workflows/src/extension/companions.ts +1 -1
- package/dist/builtin/workflows/src/extension/config-file-loader.ts +10 -1
- package/dist/builtin/workflows/src/extension/config-loader.ts +1 -1
- package/dist/builtin/workflows/src/extension/dispatcher.ts +4 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +2095 -1181
- package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +332 -39
- package/dist/builtin/workflows/src/extension/mcp.ts +13 -2
- package/dist/builtin/workflows/src/extension/render-result.ts +5 -0
- package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +6 -3
- package/dist/builtin/workflows/src/extension/runtime.ts +7 -1
- package/dist/builtin/workflows/src/extension/ui-surface.ts +7 -20
- package/dist/builtin/workflows/src/extension/wiring.ts +86 -17
- package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +12 -3
- package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +5 -2
- package/dist/builtin/workflows/src/extension/workflow-ports.ts +14 -6
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +11 -6
- package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +17 -7
- package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +11 -0
- package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +18 -1
- package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +12 -8
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +9 -4
- package/dist/builtin/workflows/src/intercom/intercom-routing.ts +12 -6
- package/dist/builtin/workflows/src/intercom/result-intercom.ts +35 -4
- package/dist/builtin/workflows/src/runs/background/quit.ts +28 -4
- package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +2 -1
- package/dist/builtin/workflows/src/runs/background/status.ts +70 -8
- package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +11 -3
- package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +2 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +4 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +26 -2
- package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +3 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +3 -2
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +688 -38
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +3 -1
- package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +19 -514
- package/dist/builtin/workflows/src/runs/shared/retry.ts +44 -0
- package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +5 -2
- package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +2 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +10 -3
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +11 -3
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +5 -1
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +5 -0
- package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +34 -2
- package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +28 -6
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +3 -0
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +4 -0
- package/dist/builtin/workflows/src/shared/run-indicator-status.ts +75 -0
- package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +10 -4
- package/dist/builtin/workflows/src/shared/store-public-types.ts +47 -9
- package/dist/builtin/workflows/src/shared/store-run-methods.ts +42 -8
- package/dist/builtin/workflows/src/shared/store-stage-methods.ts +31 -8
- package/dist/builtin/workflows/src/shared/store-types.ts +35 -1
- package/dist/builtin/workflows/src/shared/timing.ts +10 -0
- package/dist/builtin/workflows/src/shared/workflow-artifact-env.ts +21 -0
- package/dist/builtin/workflows/src/shared/workflow-artifacts.ts +2 -5
- package/dist/builtin/workflows/src/tui/chat-surface-message.ts +22 -2
- package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +37 -2
- package/dist/builtin/workflows/src/tui/graph-view-constants.ts +0 -15
- package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +38 -47
- package/dist/builtin/workflows/src/tui/graph-view-input.ts +48 -45
- package/dist/builtin/workflows/src/tui/graph-view-layout.ts +266 -0
- package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +1 -86
- package/dist/builtin/workflows/src/tui/graph-view-render.ts +209 -91
- package/dist/builtin/workflows/src/tui/graph-view-state.ts +5 -7
- package/dist/builtin/workflows/src/tui/graph-view-types.ts +13 -7
- package/dist/builtin/workflows/src/tui/inline-form-editor.ts +8 -6
- package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +2 -1
- package/dist/builtin/workflows/src/tui/inputs-overlay.ts +7 -4
- package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +66 -0
- package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +1 -0
- package/dist/builtin/workflows/src/tui/node-card.ts +1 -1
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +18 -46
- package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +15 -26
- package/dist/builtin/workflows/src/tui/session-list.ts +1 -1
- package/dist/builtin/workflows/src/tui/session-overlays.ts +19 -12
- package/dist/builtin/workflows/src/tui/session-picker.ts +47 -4
- package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +5 -14
- package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +8 -7
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +12 -3
- package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +1 -11
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +0 -8
- package/dist/builtin/workflows/src/tui/status-list.ts +32 -47
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +9 -5
- package/dist/builtin/workflows/src/tui/widget.ts +16 -46
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +0 -15
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +2 -26
- package/dist/builtin/workflows/src/tui/workflow-status.ts +3 -3
- package/dist/bun/split-loader.js +2 -0
- package/dist/bun/split-loader.js.map +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +6 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/auth-check.d.ts +35 -0
- package/dist/cli/auth-check.d.ts.map +1 -0
- package/dist/cli/auth-check.js +100 -0
- package/dist/cli/auth-check.js.map +1 -0
- package/dist/cli/auth-command.d.ts +27 -0
- package/dist/cli/auth-command.d.ts.map +1 -0
- package/dist/cli/auth-command.js +150 -0
- package/dist/cli/auth-command.js.map +1 -0
- package/dist/cli/config-selector.js +2 -2
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/credential-print.d.ts +18 -23
- package/dist/cli/credential-print.d.ts.map +1 -1
- package/dist/cli/credential-print.js +42 -88
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/cli/experimental/auth.d.ts +16 -0
- package/dist/cli/experimental/auth.d.ts.map +1 -0
- package/dist/cli/experimental/auth.js +13 -0
- package/dist/cli/experimental/auth.js.map +1 -0
- package/dist/cli/experimental/cli.d.ts +6 -0
- package/dist/cli/experimental/cli.d.ts.map +1 -0
- package/dist/cli/experimental/cli.js +5 -0
- package/dist/cli/experimental/cli.js.map +1 -0
- package/dist/cli/experimental/command-options.d.ts +17 -0
- package/dist/cli/experimental/command-options.d.ts.map +1 -0
- package/dist/cli/experimental/command-options.js +35 -0
- package/dist/cli/experimental/command-options.js.map +1 -0
- package/dist/cli/experimental/command.d.ts +63 -0
- package/dist/cli/experimental/command.d.ts.map +1 -0
- package/dist/cli/experimental/command.js +127 -0
- package/dist/cli/experimental/command.js.map +1 -0
- package/dist/cli/experimental/commands/client.d.ts +13 -0
- package/dist/cli/experimental/commands/client.d.ts.map +1 -0
- package/dist/cli/experimental/commands/client.js +25 -0
- package/dist/cli/experimental/commands/client.js.map +1 -0
- package/dist/cli/experimental/commands/pi.d.ts +15 -0
- package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
- package/dist/cli/experimental/commands/pi.js +28 -0
- package/dist/cli/experimental/commands/pi.js.map +1 -0
- package/dist/cli/experimental/commands/server.d.ts +13 -0
- package/dist/cli/experimental/commands/server.d.ts.map +1 -0
- package/dist/cli/experimental/commands/server.js +25 -0
- package/dist/cli/experimental/commands/server.js.map +1 -0
- package/dist/cli/experimental/transport-address.d.ts +10 -0
- package/dist/cli/experimental/transport-address.d.ts.map +1 -0
- package/dist/cli/experimental/transport-address.js +38 -0
- package/dist/cli/experimental/transport-address.js.map +1 -0
- package/dist/cli/session-picker.js +2 -2
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +4 -10
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/remote-session.d.ts +64 -0
- package/dist/client/remote-session.d.ts.map +1 -0
- package/dist/client/remote-session.js +351 -0
- package/dist/client/remote-session.js.map +1 -0
- package/dist/client/transcript.d.ts +12 -0
- package/dist/client/transcript.d.ts.map +1 -0
- package/dist/client/transcript.js +98 -0
- package/dist/client/transcript.js.map +1 -0
- package/dist/core/agent-session-auto-compaction.d.ts +17 -13
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +192 -67
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-bash.d.ts.map +1 -1
- package/dist/core/agent-session-bash.js +2 -0
- package/dist/core/agent-session-bash.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts +3 -6
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +64 -28
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-events.d.ts +1 -11
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +64 -37
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +4 -2
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +19 -2
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-models.d.ts +1 -0
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-models.js +23 -5
- package/dist/core/agent-session-models.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js +22 -6
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +4 -0
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-retry.d.ts +21 -4
- package/dist/core/agent-session-retry.d.ts.map +1 -1
- package/dist/core/agent-session-retry.js +232 -106
- package/dist/core/agent-session-retry.js.map +1 -1
- package/dist/core/agent-session-runtime-auth.d.ts.map +1 -1
- package/dist/core/agent-session-runtime-auth.js +3 -0
- package/dist/core/agent-session-runtime-auth.js.map +1 -1
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js +2 -1
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +37 -14
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +5 -1
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +5 -1
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +18 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +37 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/atomic-guide-command.d.ts.map +1 -1
- package/dist/core/atomic-guide-command.js +2 -3
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/auth-storage.d.ts +18 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +83 -0
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts +5 -0
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +43 -19
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/builtin-packages.d.ts.map +1 -1
- package/dist/core/builtin-packages.js +6 -0
- package/dist/core/builtin-packages.js.map +1 -1
- package/dist/core/codex-fast-mode.d.ts.map +1 -1
- package/dist/core/codex-fast-mode.js +8 -3
- package/dist/core/codex-fast-mode.js.map +1 -1
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js +4 -3
- package/dist/core/exec.js.map +1 -1
- package/dist/core/extensions/agent-events.d.ts +0 -1
- package/dist/core/extensions/agent-events.d.ts.map +1 -1
- package/dist/core/extensions/agent-events.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +5 -3
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +40 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/event-results.d.ts +5 -0
- package/dist/core/extensions/event-results.d.ts.map +1 -1
- package/dist/core/extensions/event-results.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +1 -0
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +14 -1
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
- package/dist/core/extensions/loader-discovery.js +3 -23
- package/dist/core/extensions/loader-discovery.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +20 -3
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +7 -1
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/message-types.d.ts +6 -0
- package/dist/core/extensions/message-types.d.ts.map +1 -1
- package/dist/core/extensions/message-types.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +9 -3
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +2 -1
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +4 -0
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner-registries.d.ts +2 -1
- package/dist/core/extensions/runner-registries.d.ts.map +1 -1
- package/dist/core/extensions/runner-registries.js +3 -0
- package/dist/core/extensions/runner-registries.js.map +1 -1
- package/dist/core/extensions/runner-ui.d.ts.map +1 -1
- package/dist/core/extensions/runner-ui.js +1 -0
- package/dist/core/extensions/runner-ui.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +4 -2
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +9 -3
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +4 -1
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/stale-context.d.ts +5 -0
- package/dist/core/extensions/stale-context.d.ts.map +1 -0
- package/dist/core/extensions/stale-context.js +11 -0
- package/dist/core/extensions/stale-context.js.map +1 -0
- package/dist/core/extensions/ui-types.d.ts +14 -11
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +3 -2
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/intercom-runtime-group.d.ts +13 -0
- package/dist/core/intercom-runtime-group.d.ts.map +1 -0
- package/dist/core/intercom-runtime-group.js +23 -0
- package/dist/core/intercom-runtime-group.js.map +1 -0
- package/dist/core/keybindings.d.ts +44 -4
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/model-config.d.ts +39 -5
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +6 -0
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-fallback-failures.d.ts +30 -0
- package/dist/core/model-fallback-failures.d.ts.map +1 -0
- package/dist/core/model-fallback-failures.js +610 -0
- package/dist/core/model-fallback-failures.js.map +1 -0
- package/dist/core/model-registry.d.ts +12 -5
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +20 -12
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-cli.d.ts.map +1 -1
- package/dist/core/model-resolver-cli.js +46 -14
- package/dist/core/model-resolver-cli.js.map +1 -1
- package/dist/core/model-resolver-defaults.d.ts.map +1 -1
- package/dist/core/model-resolver-defaults.js +2 -0
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-resolver-scope.d.ts +2 -0
- package/dist/core/model-resolver-scope.d.ts.map +1 -1
- package/dist/core/model-resolver-scope.js +12 -9
- package/dist/core/model-resolver-scope.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime-snapshot.d.ts +10 -0
- package/dist/core/model-runtime-snapshot.d.ts.map +1 -1
- package/dist/core/model-runtime-snapshot.js +14 -1
- package/dist/core/model-runtime-snapshot.js.map +1 -1
- package/dist/core/model-runtime-streaming.d.ts +3 -1
- package/dist/core/model-runtime-streaming.d.ts.map +1 -1
- package/dist/core/model-runtime-streaming.js +16 -0
- package/dist/core/model-runtime-streaming.js.map +1 -1
- package/dist/core/model-runtime-types.d.ts +2 -0
- package/dist/core/model-runtime-types.d.ts.map +1 -1
- package/dist/core/model-runtime-types.js.map +1 -1
- package/dist/core/model-runtime.d.ts +37 -10
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +312 -113
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/oauth-login.d.ts.map +1 -1
- package/dist/core/oauth-login.js +2 -1
- package/dist/core/oauth-login.js.map +1 -1
- package/dist/core/openai-responses-payload-sanitizer.d.ts.map +1 -1
- package/dist/core/openai-responses-payload-sanitizer.js +18 -2
- package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
- package/dist/core/package-manager-git.d.ts.map +1 -1
- package/dist/core/package-manager-git.js +56 -10
- package/dist/core/package-manager-git.js.map +1 -1
- package/dist/core/package-manager-manifest.d.ts +1 -1
- package/dist/core/package-manager-manifest.d.ts.map +1 -1
- package/dist/core/package-manager-manifest.js +19 -9
- package/dist/core/package-manager-manifest.js.map +1 -1
- package/dist/core/package-manager-resource-collector.js.map +1 -1
- package/dist/core/package-manager-resource-files.d.ts.map +1 -1
- package/dist/core/package-manager-resource-files.js +1 -2
- package/dist/core/package-manager-resource-files.js.map +1 -1
- package/dist/core/provider-composer-internal.d.ts +10 -2
- package/dist/core/provider-composer-internal.d.ts.map +1 -1
- package/dist/core/provider-composer-internal.js +7 -3
- package/dist/core/provider-composer-internal.js.map +1 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +19 -12
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +2 -0
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +77 -67
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +3 -0
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/resource-loader-context-files.d.ts.map +1 -1
- package/dist/core/resource-loader-context-files.js +13 -5
- package/dist/core/resource-loader-context-files.js.map +1 -1
- package/dist/core/retry-policy.d.ts +30 -0
- package/dist/core/retry-policy.d.ts.map +1 -0
- package/dist/core/retry-policy.js +25 -0
- package/dist/core/retry-policy.js.map +1 -0
- package/dist/core/runtime-credentials.d.ts +5 -5
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/runtime-credentials.js +8 -8
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/sdk-types.d.ts +8 -2
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +6 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +2 -0
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +7 -0
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-list.d.ts.map +1 -1
- package/dist/core/session-manager-list.js +3 -1
- package/dist/core/session-manager-list.js.map +1 -1
- package/dist/core/settings-manager-ui-accessors.d.ts +8 -1
- package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-ui-accessors.js +31 -0
- package/dist/core/settings-manager-ui-accessors.js.map +1 -1
- package/dist/core/settings-manager.d.ts +2 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-merge.d.ts.map +1 -1
- package/dist/core/settings-merge.js +13 -16
- package/dist/core/settings-merge.js.map +1 -1
- package/dist/core/settings-types.d.ts +5 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +0 -2
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts +2 -2
- package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js +39 -2
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
- package/dist/core/tools/bash-async-execution.d.ts +2 -0
- package/dist/core/tools/bash-async-execution.d.ts.map +1 -1
- package/dist/core/tools/bash-async-execution.js +4 -1
- package/dist/core/tools/bash-async-execution.js.map +1 -1
- package/dist/core/tools/bash-async-output.d.ts +1 -0
- package/dist/core/tools/bash-async-output.d.ts.map +1 -1
- package/dist/core/tools/bash-async-output.js +62 -27
- package/dist/core/tools/bash-async-output.js.map +1 -1
- package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
- package/dist/core/tools/bash-pty-native.js +2 -1
- package/dist/core/tools/bash-pty-native.js.map +1 -1
- package/dist/core/tools/bash.d.ts +9 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +34 -16
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/directory-tree.d.ts +11 -0
- package/dist/core/tools/directory-tree.d.ts.map +1 -1
- package/dist/core/tools/directory-tree.js +26 -0
- package/dist/core/tools/directory-tree.js.map +1 -1
- package/dist/core/tools/edit.d.ts +4 -0
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +12 -8
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/errno.d.ts +25 -0
- package/dist/core/tools/errno.d.ts.map +1 -0
- package/dist/core/tools/errno.js +29 -0
- package/dist/core/tools/errno.js.map +1 -0
- package/dist/core/tools/find.d.ts +8 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +20 -15
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +5 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +7 -7
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +7 -7
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +4 -0
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +5 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +8 -1
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +50 -28
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/oversized-tool-result.d.ts.map +1 -1
- package/dist/core/tools/oversized-tool-result.js +129 -22
- package/dist/core/tools/oversized-tool-result.js.map +1 -1
- package/dist/core/tools/persisted-output-file.d.ts +80 -0
- package/dist/core/tools/persisted-output-file.d.ts.map +1 -0
- package/dist/core/tools/persisted-output-file.js +284 -0
- package/dist/core/tools/persisted-output-file.js.map +1 -0
- package/dist/core/tools/read.d.ts +10 -0
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +20 -8
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/search.d.ts +4 -0
- package/dist/core/tools/search.d.ts.map +1 -1
- package/dist/core/tools/search.js +5 -1
- package/dist/core/tools/search.js.map +1 -1
- package/dist/core/tools/session-temp-cleanup.d.ts +133 -0
- package/dist/core/tools/session-temp-cleanup.d.ts.map +1 -0
- package/dist/core/tools/session-temp-cleanup.js +669 -0
- package/dist/core/tools/session-temp-cleanup.js.map +1 -0
- package/dist/core/tools/session-temp-dir.d.ts +116 -0
- package/dist/core/tools/session-temp-dir.d.ts.map +1 -0
- package/dist/core/tools/session-temp-dir.js +409 -0
- package/dist/core/tools/session-temp-dir.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +2 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/tool-limits.d.ts +11 -0
- package/dist/core/tools/tool-limits.d.ts.map +1 -1
- package/dist/core/tools/tool-limits.js +11 -0
- package/dist/core/tools/tool-limits.js.map +1 -1
- package/dist/core/tools/windows-directory-security.d.ts +82 -0
- package/dist/core/tools/windows-directory-security.d.ts.map +1 -0
- package/dist/core/tools/windows-directory-security.js +238 -0
- package/dist/core/tools/windows-directory-security.js.map +1 -0
- package/dist/core/tools/write.d.ts +4 -0
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +8 -4
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/trust-manager.js +1 -1
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/extensions/llama/huggingface-ui.d.ts +1 -1
- package/dist/extensions/llama/huggingface-ui.d.ts.map +1 -1
- package/dist/extensions/llama/huggingface-ui.js +6 -5
- package/dist/extensions/llama/huggingface-ui.js.map +1 -1
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +11 -2
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +24 -8
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/llama/ui.d.ts.map +1 -1
- package/dist/extensions/llama/ui.js +5 -2
- package/dist/extensions/llama/ui.js.map +1 -1
- package/dist/index-extensions.d.ts +2 -2
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/main-runtime-api-key.d.ts +2 -2
- package/dist/main-runtime-api-key.d.ts.map +1 -1
- package/dist/main-runtime-api-key.js +7 -2
- package/dist/main-runtime-api-key.js.map +1 -1
- package/dist/main-session.js +2 -2
- package/dist/main-session.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +130 -26
- package/dist/main.js.map +1 -1
- package/dist/modes/index.d.ts +1 -0
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +6 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +18 -5
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +5 -4
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +2 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +3 -2
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +17 -7
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +35 -69
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.js +11 -3
- package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.js +25 -15
- package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js +9 -4
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.d.ts +2 -0
- package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.js +2 -0
- package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts +9 -0
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +14 -0
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.d.ts +32 -0
- package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.js +173 -5
- package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.d.ts +1 -1
- package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.js +9 -8
- package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +32 -10
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +2 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +3 -2
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +3 -2
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +1 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +4 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/fast-mode-selector.d.ts +1 -1
- package/dist/modes/interactive/components/fast-mode-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/fast-mode-selector.js +7 -5
- package/dist/modes/interactive/components/fast-mode-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +3 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/host-input-form.d.ts +1 -1
- package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
- package/dist/modes/interactive/components/host-input-form.js +6 -5
- package/dist/modes/interactive/components/host-input-form.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +2 -1
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.js +19 -0
- package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
- package/dist/modes/interactive/components/mermaid.d.ts +11 -0
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
- package/dist/modes/interactive/components/mermaid.js +81 -0
- package/dist/modes/interactive/components/mermaid.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +2 -2
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +9 -6
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +3 -2
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +6 -2
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +39 -13
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-delete.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-delete.js +2 -1
- package/dist/modes/interactive/components/session-selector-delete.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.d.ts +1 -1
- package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.js +12 -11
- package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +3 -3
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.js +9 -0
- package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +21 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts +3 -3
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js +6 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +8 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +3 -2
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +2 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +50 -27
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-component.d.ts +1 -1
- package/dist/modes/interactive/components/tree-selector-component.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-component.js +2 -3
- package/dist/modes/interactive/components/tree-selector-component.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-help.d.ts +1 -1
- package/dist/modes/interactive/components/tree-selector-help.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-help.js +3 -1
- package/dist/modes/interactive/components/tree-selector-help.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-label-input.d.ts +1 -1
- package/dist/modes/interactive/components/tree-selector-label-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-label-input.js +1 -0
- package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-list.d.ts +1 -1
- package/dist/modes/interactive/components/tree-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-list.js +3 -0
- package/dist/modes/interactive/components/tree-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/trust-selector.js +4 -0
- package/dist/modes/interactive/components/trust-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +4 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +4 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +10 -2
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +2 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +36 -18
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +9 -2
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +5 -1
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.js +16 -4
- package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +3 -0
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-editor-actions.js +2 -0
- package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-context.js +12 -7
- package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-custom-ui.js +1 -0
- package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-dialogs.js +7 -0
- package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-widgets.js +7 -24
- package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +9 -8
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +52 -3
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +143 -5
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts +2 -2
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.js +2 -2
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -3
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +1 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.js +107 -41
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-process-lifecycle.js +1 -1
- package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +24 -6
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +44 -5
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +1 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +9 -4
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +37 -18
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-tui.d.ts +21 -0
- package/dist/modes/interactive/interactive-tui.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-tui.js +279 -0
- package/dist/modes/interactive/interactive-tui.js.map +1 -0
- package/dist/modes/interactive/streaming-assistant-message.d.ts +34 -0
- package/dist/modes/interactive/streaming-assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/streaming-assistant-message.js +76 -0
- package/dist/modes/interactive/streaming-assistant-message.js.map +1 -0
- package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -0
- package/dist/modes/interactive/theme/catppuccin-latte.json +1 -0
- package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -0
- package/dist/modes/interactive/theme/catppuccin-mocha.json +1 -0
- package/dist/modes/interactive/theme/dark.json +1 -0
- package/dist/modes/interactive/theme/light.json +1 -0
- package/dist/modes/interactive/theme/terminal-detection.d.ts +10 -0
- package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -1
- package/dist/modes/interactive/theme/terminal-detection.js +19 -0
- package/dist/modes/interactive/theme/terminal-detection.js.map +1 -1
- package/dist/modes/interactive/theme/theme-class.d.ts +2 -2
- package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-class.js +5 -1
- package/dist/modes/interactive/theme/theme-class.js.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts +3 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +10 -13
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.js +1 -0
- package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.d.ts +4 -0
- package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.js +2 -1
- package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +5 -1
- package/dist/modes/interactive/theme/theme.d.ts +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +1 -1
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.js +28 -11
- package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
- package/dist/modes/interactive-engine/engine-render-service.js +3 -3
- package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +2 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.js +2 -2
- package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +7 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +7 -0
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/protocol.d.ts +12 -10
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
- package/dist/modes/interactive-engine/protocol.js +14 -11
- package/dist/modes/interactive-engine/protocol.js.map +1 -1
- package/dist/modes/interactive-engine/remote-component.d.ts +11 -1
- package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-component.js +48 -8
- package/dist/modes/interactive-engine/remote-component.js.map +1 -1
- package/dist/modes/interactive-engine/terminal-mode-controller.d.ts +19 -12
- package/dist/modes/interactive-engine/terminal-mode-controller.d.ts.map +1 -1
- package/dist/modes/interactive-engine/terminal-mode-controller.js +54 -35
- package/dist/modes/interactive-engine/terminal-mode-controller.js.map +1 -1
- package/dist/modes/json-event.d.ts +28 -0
- package/dist/modes/json-event.d.ts.map +1 -0
- package/dist/modes/json-event.js +12 -0
- package/dist/modes/json-event.js.map +1 -0
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +2 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client-process.d.ts +1 -0
- package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-process.js +5 -1
- package/dist/modes/rpc/rpc-client-process.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +7 -2
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +1 -1
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-event-buffer.d.ts +9 -0
- package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-event-buffer.js +10 -5
- package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.js +3 -0
- package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
- package/dist/modes/rpc/rpc-input.js +1 -1
- package/dist/modes/rpc/rpc-input.js.map +1 -1
- package/dist/modes/rpc/rpc-output-buffer.d.ts +9 -0
- package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-output-buffer.js +10 -5
- package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js +3 -0
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/dist/modes/rpc/rpc-responses.d.ts +1 -1
- package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-responses.js +13 -1
- package/dist/modes/rpc/rpc-responses.js.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.js +2 -1
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +9 -2
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/rpc-entry.js +2 -0
- package/dist/rpc-entry.js.map +1 -1
- package/dist/self-update-plan.d.ts.map +1 -1
- package/dist/self-update-plan.js +5 -4
- package/dist/self-update-plan.js.map +1 -1
- package/dist/server/create-harness.d.ts +53 -0
- package/dist/server/create-harness.d.ts.map +1 -0
- package/dist/server/create-harness.js +349 -0
- package/dist/server/create-harness.js.map +1 -0
- package/dist/utils/agent-attribution.d.ts +2 -0
- package/dist/utils/agent-attribution.d.ts.map +1 -0
- package/dist/utils/agent-attribution.js +2 -0
- package/dist/utils/agent-attribution.js.map +1 -0
- package/dist/utils/child-process.d.ts +3 -1
- package/dist/utils/child-process.d.ts.map +1 -1
- package/dist/utils/child-process.js +24 -4
- package/dist/utils/child-process.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +2 -1
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +12 -3
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/management-http.d.ts +23 -0
- package/dist/utils/management-http.d.ts.map +1 -0
- package/dist/utils/management-http.js +50 -0
- package/dist/utils/management-http.js.map +1 -0
- package/dist/utils/open-browser.d.ts.map +1 -1
- package/dist/utils/open-browser.js +2 -1
- package/dist/utils/open-browser.js.map +1 -1
- package/dist/utils/paths.d.ts +2 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +13 -0
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +17 -4
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/tool-result-images.d.ts +17 -0
- package/dist/utils/tool-result-images.d.ts.map +1 -0
- package/dist/utils/tool-result-images.js +41 -0
- package/dist/utils/tool-result-images.js.map +1 -0
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +7 -8
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +4 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +20 -2
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +2 -1
- package/docs/custom-provider.md +15 -7
- package/docs/development.md +1 -0
- package/docs/docs.json +1 -0
- package/docs/environment-variables.md +4 -0
- package/docs/extensions.md +102 -18
- package/docs/i-have-adhd.md +36 -0
- package/docs/intercom.md +31 -16
- package/docs/json.md +2 -2
- package/docs/keybindings.md +55 -12
- package/docs/models/model-selection.md +34 -8
- package/docs/models.md +28 -3
- package/docs/providers.md +20 -2
- package/docs/quickstart.md +5 -5
- package/docs/rpc.md +18 -12
- package/docs/sdk.md +43 -7
- package/docs/security.md +10 -10
- package/docs/sessions.md +2 -0
- package/docs/settings.md +32 -6
- package/docs/subagents.md +30 -45
- package/docs/themes.md +5 -3
- package/docs/tools.md +21 -1
- package/docs/tui.md +41 -24
- package/docs/usage.md +40 -14
- package/docs/windows.md +2 -0
- package/docs/workflows.md +237 -25
- package/examples/extensions/custom-provider-anthropic/index.ts +9 -2
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +9 -2
- package/examples/extensions/gondolin/package-lock.json +3 -3
- package/examples/extensions/modal-editor.ts +8 -10
- package/examples/extensions/rainbow-editor.ts +3 -2
- package/examples/extensions/subagent/README.md +16 -45
- package/examples/extensions/subagent/index.ts +6 -96
- package/examples/extensions/subagent/render.ts +0 -78
- package/examples/extensions/subagent/runner.ts +0 -3
- package/examples/extensions/subagent/schemas.ts +0 -13
- package/examples/extensions/subagent/types.ts +1 -2
- package/examples/sdk/09-api-keys-and-oauth.ts +6 -2
- package/examples/sdk/12-full-control.ts +8 -2
- package/examples/sdk/README.md +4 -1
- package/npm-shrinkwrap.json +191 -634
- package/package.json +14 -7
- package/dist/builtin/subagents/src/agents/chain-serializer.ts +0 -257
- package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +0 -112
- package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +0 -543
- package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +0 -140
- package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +0 -279
- package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +0 -99
- package/dist/builtin/subagents/src/runs/background/async-execution.ts +0 -17
- package/dist/builtin/subagents/src/runs/background/async-resume.ts +0 -402
- package/dist/builtin/subagents/src/runs/background/async-status.ts +0 -411
- package/dist/builtin/subagents/src/runs/background/completion-claims.ts +0 -196
- package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +0 -102
- package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +0 -59
- package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +0 -300
- package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +0 -166
- package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +0 -77
- package/dist/builtin/subagents/src/runs/background/result-retry-scheduler.ts +0 -48
- package/dist/builtin/subagents/src/runs/background/result-status.ts +0 -87
- package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +0 -72
- package/dist/builtin/subagents/src/runs/background/result-watcher.ts +0 -320
- package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +0 -105
- package/dist/builtin/subagents/src/runs/background/run-status.ts +0 -358
- package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +0 -457
- package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +0 -376
- package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +0 -150
- package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +0 -109
- package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +0 -128
- package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +0 -309
- package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +0 -173
- package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +0 -578
- package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +0 -330
- package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +0 -330
- package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +0 -210
- package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +0 -69
- package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +0 -90
- package/dist/builtin/subagents/src/runs/background/top-level-async.ts +0 -12
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +0 -38
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +0 -280
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +0 -217
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +0 -271
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +0 -271
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +0 -200
- package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +0 -184
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +0 -140
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +0 -108
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt-types.ts +0 -17
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +0 -558
- package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +0 -83
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +0 -109
- package/dist/builtin/subagents/src/runs/shared/attempt-watchdog.ts +0 -126
- package/dist/builtin/subagents/src/runs/shared/chain-outputs.ts +0 -126
- package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +0 -387
- package/dist/builtin/subagents/src/runs/shared/final-drain.ts +0 -39
- package/dist/builtin/subagents/src/runs/shared/pi-args.ts +0 -339
- package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +0 -165
- package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +0 -21
- package/dist/builtin/subagents/src/runs/shared/structured-output.ts +0 -150
- package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +0 -232
- package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +0 -86
- package/dist/builtin/subagents/src/slash/saved-chain-mapping.ts +0 -60
- package/dist/builtin/subagents/src/tui/render-chain-graph.ts +0 -335
- package/examples/extensions/subagent/prompts/implement-and-review.md +0 -10
- package/examples/extensions/subagent/prompts/implement.md +0 -10
- package/examples/extensions/subagent/prompts/scout-and-plan.md +0 -9
- /package/dist/builtin/subagents/src/runs/{shared/nested-path.ts → inprocess/runtime-support/nested-paths.ts} +0 -0
|
@@ -19,6 +19,8 @@ function needsLeadingSpacer(role) {
|
|
|
19
19
|
export class ChatTranscriptComponent {
|
|
20
20
|
constructor(entries, renderEntry, cacheKey) {
|
|
21
21
|
this.blockCache = [];
|
|
22
|
+
/** Per-entry heights recorded by the most recent `renderAllRows`. */
|
|
23
|
+
this.staticSegments = [];
|
|
22
24
|
this.entries = entries;
|
|
23
25
|
this.renderEntry = renderEntry;
|
|
24
26
|
this.cacheKey = cacheKey;
|
|
@@ -40,6 +42,27 @@ export class ChatTranscriptComponent {
|
|
|
40
42
|
}
|
|
41
43
|
return count;
|
|
42
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* One segment per cached entry block, identified by the entry object itself.
|
|
47
|
+
*/
|
|
48
|
+
rowSegments(width) {
|
|
49
|
+
if (!this.supportsRowWindow) {
|
|
50
|
+
// Recorded by the last renderAllRows. The viewport measures a static
|
|
51
|
+
// component by rendering it and only then reads its segments, so this
|
|
52
|
+
// is populated for the frame being measured. A width mismatch means the
|
|
53
|
+
// heights describe a different layout, and reporting them would move the
|
|
54
|
+
// anchor by a stale delta; the caller falls back to whole-component
|
|
55
|
+
// accounting instead.
|
|
56
|
+
return this.staticSegmentsWidth === width ? this.staticSegments : [];
|
|
57
|
+
}
|
|
58
|
+
this.ensureBlockCache(width);
|
|
59
|
+
const segments = [];
|
|
60
|
+
for (const block of this.blockCache) {
|
|
61
|
+
if (block !== undefined)
|
|
62
|
+
segments.push({ id: block.entry, rows: block.lines.length });
|
|
63
|
+
}
|
|
64
|
+
return segments;
|
|
65
|
+
}
|
|
43
66
|
renderRows(width, startRow, endRow) {
|
|
44
67
|
const start = Math.max(0, Math.floor(startRow));
|
|
45
68
|
const end = Math.max(start, Math.floor(endRow));
|
|
@@ -99,13 +122,28 @@ export class ChatTranscriptComponent {
|
|
|
99
122
|
};
|
|
100
123
|
}
|
|
101
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Render every entry, recording each one's height as it goes.
|
|
127
|
+
*
|
|
128
|
+
* The heights are what `rowSegments` reports on this path. They are a
|
|
129
|
+
* by-product of work this method already does, so identifying rows costs
|
|
130
|
+
* nothing extra and, unlike a cache key, cannot miss an entry mutated in
|
|
131
|
+
* place -- which is the behaviour a transcript without a cache key exists to
|
|
132
|
+
* provide.
|
|
133
|
+
*/
|
|
102
134
|
renderAllRows(width) {
|
|
103
135
|
const lines = [];
|
|
136
|
+
const segments = [];
|
|
104
137
|
for (let index = 0; index < this.entries.length; index += 1) {
|
|
105
138
|
const entry = this.entries[index];
|
|
106
|
-
if (entry
|
|
107
|
-
|
|
139
|
+
if (entry === undefined)
|
|
140
|
+
continue;
|
|
141
|
+
const block = this.renderEntryBlock(this.renderEntry(entry), entry, index, width);
|
|
142
|
+
segments.push({ id: entry, rows: block.length });
|
|
143
|
+
lines.push(...block);
|
|
108
144
|
}
|
|
145
|
+
this.staticSegments = segments;
|
|
146
|
+
this.staticSegmentsWidth = width;
|
|
109
147
|
return lines;
|
|
110
148
|
}
|
|
111
149
|
renderEntryBlock(component, entry, index, width) {
|
|
@@ -133,6 +171,8 @@ export class ScrollableComponentViewport {
|
|
|
133
171
|
this.visibleRows = 1;
|
|
134
172
|
this.scrollFromBottom = 0;
|
|
135
173
|
this.lastLineCount = 0;
|
|
174
|
+
this.lastComponentSegments = [];
|
|
175
|
+
this.lastComponentRowCounts = [];
|
|
136
176
|
this.lastWidth = 0;
|
|
137
177
|
this.maxScroll = 0;
|
|
138
178
|
}
|
|
@@ -190,12 +230,42 @@ export class ScrollableComponentViewport {
|
|
|
190
230
|
}
|
|
191
231
|
render(width) {
|
|
192
232
|
const componentRows = this.measureComponentRows(width);
|
|
193
|
-
const
|
|
233
|
+
const rowCounts = componentRows.map((rows) => rows.rowCount);
|
|
234
|
+
const lineCount = rowCounts.reduce((sum, count) => sum + count, 0);
|
|
194
235
|
const maxScroll = Math.max(0, lineCount - this.visibleRows);
|
|
195
|
-
|
|
196
|
-
|
|
236
|
+
// The offset is a distance from the bottom, so the first visible row is
|
|
237
|
+
// `maxScroll - scrollFromBottom`. Rows appearing or disappearing move the
|
|
238
|
+
// content a scrolled-up viewer is reading unless the offset moves with
|
|
239
|
+
// them -- a live subagent widget does exactly that every time it gains or
|
|
240
|
+
// drops its current-tool row.
|
|
241
|
+
//
|
|
242
|
+
// Which way the offset must move depends on where the rows changed, so a
|
|
243
|
+
// plain `scrollFromBottom += lineCount - lastLineCount` is wrong half the
|
|
244
|
+
// time. Rows changing *below* the anchor need the offset adjusted by that
|
|
245
|
+
// delta; rows changing *above* it need the offset left alone, because the
|
|
246
|
+
// bottom-relative distance to the anchored content did not change. Anchor
|
|
247
|
+
// on the row the viewer is actually reading and re-derive the offset from
|
|
248
|
+
// it. A viewer already at the bottom keeps scrollFromBottom === 0 and is
|
|
249
|
+
// skipped entirely, so sticky-bottom following is untouched.
|
|
250
|
+
//
|
|
251
|
+
// Per-component row counts alone cannot place a change that happens
|
|
252
|
+
// inside the component holding the anchor -- and in the chat host the
|
|
253
|
+
// whole transcript is one component, so that is the normal case. A
|
|
254
|
+
// component that can hand over a row map turns the "where" question into
|
|
255
|
+
// "where did the anchored segment go". Both kinds may supply one: a
|
|
256
|
+
// transcript built without a cache key is not windowed, but it is still
|
|
257
|
+
// one component spanning the anchor and still knows its own rows.
|
|
258
|
+
const segments = componentRows.map((rows) => rows.segments);
|
|
259
|
+
if (this.scrollFromBottom > 0 && this.lastWidth === width) {
|
|
260
|
+
const previousMaxScroll = Math.max(0, this.lastLineCount - this.visibleRows);
|
|
261
|
+
const anchorRow = Math.max(0, previousMaxScroll - this.scrollFromBottom);
|
|
262
|
+
const shift = rowsShiftedAboveAnchor({ rowCounts: this.lastComponentRowCounts, segments: this.lastComponentSegments }, { rowCounts, segments }, anchorRow);
|
|
263
|
+
const nextAnchorRow = Math.max(0, Math.min(maxScroll, anchorRow + shift));
|
|
264
|
+
this.scrollFromBottom = maxScroll - nextAnchorRow;
|
|
197
265
|
}
|
|
198
266
|
this.lastLineCount = lineCount;
|
|
267
|
+
this.lastComponentRowCounts = rowCounts;
|
|
268
|
+
this.lastComponentSegments = segments;
|
|
199
269
|
this.lastWidth = width;
|
|
200
270
|
this.maxScroll = maxScroll;
|
|
201
271
|
this.clampScroll();
|
|
@@ -216,13 +286,19 @@ export class ScrollableComponentViewport {
|
|
|
216
286
|
kind: "windowed",
|
|
217
287
|
component,
|
|
218
288
|
rowCount: component.rowCount(width),
|
|
289
|
+
segments: component.rowSegments?.(width),
|
|
219
290
|
};
|
|
220
291
|
}
|
|
221
292
|
const lines = component.render(width);
|
|
293
|
+
// Read segments only after rendering: a static transcript records its
|
|
294
|
+
// per-entry heights as a by-product of that render, so asking first
|
|
295
|
+
// would return the previous frame's layout.
|
|
296
|
+
const segments = segmentReporter(component)?.rowSegments(width);
|
|
222
297
|
return {
|
|
223
298
|
kind: "static",
|
|
224
299
|
lines,
|
|
225
300
|
rowCount: lines.length,
|
|
301
|
+
segments: segments !== undefined && segments.length > 0 ? segments : undefined,
|
|
226
302
|
};
|
|
227
303
|
});
|
|
228
304
|
}
|
|
@@ -255,12 +331,104 @@ export class ScrollableComponentViewport {
|
|
|
255
331
|
this.scrollFromBottom = Math.max(0, Math.min(this.maxScroll, this.scrollFromBottom));
|
|
256
332
|
}
|
|
257
333
|
}
|
|
334
|
+
/**
|
|
335
|
+
* Rows gained or lost above `anchorRow`, measured in the previous frame's rows.
|
|
336
|
+
*
|
|
337
|
+
* The anchored row moves down by exactly this many rows, so adding it to the
|
|
338
|
+
* anchor keeps the same content under the viewer.
|
|
339
|
+
*
|
|
340
|
+
* Components entirely above the anchor contribute their whole height delta.
|
|
341
|
+
* The component that *spans* the anchor contributes only what changed above the
|
|
342
|
+
* anchored row, which needs its row map (`rowSegments`); without one it
|
|
343
|
+
* contributes nothing, which is the old behaviour and is right for the
|
|
344
|
+
* append-and-mutate-at-the-tail widgets that have no interior.
|
|
345
|
+
*
|
|
346
|
+
* Row counts are compared positionally over the shared prefix, which is what the
|
|
347
|
+
* chat stacks this viewport drives actually do — they append and mutate at the
|
|
348
|
+
* tail. A component inserted or removed *ahead* of the anchor would be
|
|
349
|
+
* misattributed; the anchor then lands one component off rather than drifting on
|
|
350
|
+
* every frame, and the next user scroll re-establishes it.
|
|
351
|
+
*/
|
|
352
|
+
function rowsShiftedAboveAnchor(previous, next, anchorRow) {
|
|
353
|
+
let cursor = 0;
|
|
354
|
+
let shift = 0;
|
|
355
|
+
const shared = Math.min(previous.rowCounts.length, next.rowCounts.length);
|
|
356
|
+
for (let index = 0; index < shared; index += 1) {
|
|
357
|
+
const previousRows = previous.rowCounts[index] ?? 0;
|
|
358
|
+
const componentEnd = cursor + previousRows;
|
|
359
|
+
if (componentEnd > anchorRow) {
|
|
360
|
+
return shift + rowsShiftedInsideComponent(previous.segments[index], next.segments[index], anchorRow - cursor);
|
|
361
|
+
}
|
|
362
|
+
shift += (next.rowCounts[index] ?? 0) - previousRows;
|
|
363
|
+
cursor = componentEnd;
|
|
364
|
+
}
|
|
365
|
+
return shift;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Rows gained or lost above `anchorRow` *within* one windowed component.
|
|
369
|
+
*
|
|
370
|
+
* Rather than diffing heights, this finds the segment the viewer is parked on
|
|
371
|
+
* and reports how far that same segment moved. Segments are matched by `===` on
|
|
372
|
+
* their id, so a transcript splice that renumbers every cache key still lines
|
|
373
|
+
* up: the entry objects survive it. If the anchored segment itself is gone
|
|
374
|
+
* (the viewer was reading rows that were compacted away) the nearest surviving
|
|
375
|
+
* neighbour above it — then below it — stands in, so the viewer lands on the
|
|
376
|
+
* closest content that still exists instead of drifting by the whole delta.
|
|
377
|
+
*/
|
|
378
|
+
function rowsShiftedInsideComponent(previousSegments, nextSegments, anchorRow) {
|
|
379
|
+
if (previousSegments === undefined || nextSegments === undefined)
|
|
380
|
+
return 0;
|
|
381
|
+
const nextStarts = new Map();
|
|
382
|
+
let cursor = 0;
|
|
383
|
+
for (const segment of nextSegments) {
|
|
384
|
+
if (!nextStarts.has(segment.id))
|
|
385
|
+
nextStarts.set(segment.id, cursor);
|
|
386
|
+
cursor += segment.rows;
|
|
387
|
+
}
|
|
388
|
+
const previousStarts = [];
|
|
389
|
+
let anchorIndex = -1;
|
|
390
|
+
cursor = 0;
|
|
391
|
+
for (let index = 0; index < previousSegments.length; index += 1) {
|
|
392
|
+
previousStarts.push(cursor);
|
|
393
|
+
cursor += previousSegments[index]?.rows ?? 0;
|
|
394
|
+
if (anchorIndex < 0 && cursor > anchorRow)
|
|
395
|
+
anchorIndex = index;
|
|
396
|
+
}
|
|
397
|
+
if (anchorIndex < 0)
|
|
398
|
+
return 0;
|
|
399
|
+
for (let index = anchorIndex; index >= 0; index -= 1) {
|
|
400
|
+
const nextStart = nextStarts.get(previousSegments[index]?.id);
|
|
401
|
+
if (nextStart !== undefined)
|
|
402
|
+
return nextStart - (previousStarts[index] ?? 0);
|
|
403
|
+
}
|
|
404
|
+
for (let index = anchorIndex + 1; index < previousSegments.length; index += 1) {
|
|
405
|
+
const nextStart = nextStarts.get(previousSegments[index]?.id);
|
|
406
|
+
if (nextStart !== undefined)
|
|
407
|
+
return nextStart - (previousStarts[index] ?? 0);
|
|
408
|
+
}
|
|
409
|
+
return 0;
|
|
410
|
+
}
|
|
258
411
|
function isRowWindowComponent(component) {
|
|
259
412
|
const candidate = component;
|
|
260
413
|
return (candidate.supportsRowWindow === true &&
|
|
261
414
|
typeof candidate.rowCount === "function" &&
|
|
262
415
|
typeof candidate.renderRows === "function");
|
|
263
416
|
}
|
|
417
|
+
/**
|
|
418
|
+
* A component that can identify its own rows without being windowed.
|
|
419
|
+
*
|
|
420
|
+
* `ScrollableChatTranscriptComponent` builds its transcript without a cache key
|
|
421
|
+
* — deliberately, because that is what lets it reflect entries mutated in place
|
|
422
|
+
* — so it is not a `RowWindowComponent` and renders every row each frame. It
|
|
423
|
+
* still knows which entry produced which rows, and it is still the component
|
|
424
|
+
* spanning the anchor, so the anchor needs to ask.
|
|
425
|
+
*/
|
|
426
|
+
function segmentReporter(component) {
|
|
427
|
+
const candidate = component;
|
|
428
|
+
return typeof candidate.rowSegments === "function"
|
|
429
|
+
? candidate
|
|
430
|
+
: undefined;
|
|
431
|
+
}
|
|
264
432
|
export class ScrollableChatTranscriptComponent {
|
|
265
433
|
constructor(entries, renderEntry) {
|
|
266
434
|
this.viewport = new ScrollableComponentViewport();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-transcript.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-transcript.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Component, type Container, matchesKey, Spacer } from \"@earendil-works/pi-tui\";\n\n/**\n * Roles that participate in pi's chat spacing contract.\n *\n * Assistant turns own their leading whitespace internally, and tool rows attach\n * directly under the assistant/tool-call row they belong to. User-like rows get\n * one blank line when they are not the first row in the transcript.\n */\nexport type ChatTranscriptRole =\n\t| \"assistant\"\n\t| \"thinking\"\n\t| \"tool\"\n\t| \"user\"\n\t| \"custom\"\n\t| \"notice\"\n\t| \"system\"\n\t| \"summary\";\n\nexport interface ChatTranscriptEntryLike {\n\treadonly role: ChatTranscriptRole;\n}\n\nexport type ChatTranscriptRenderer<TEntry extends ChatTranscriptEntryLike> = (entry: TEntry) => Component;\n\nexport type ChatTranscriptCacheKey<TEntry extends ChatTranscriptEntryLike> = (entry: TEntry, index: number) => string;\n\ninterface CachedChatTranscriptBlock<TEntry extends ChatTranscriptEntryLike> {\n\treadonly entry: TEntry;\n\treadonly key: string;\n\treadonly width: number;\n\treadonly component: Component;\n\treadonly lines: readonly string[];\n}\n\ntype DisposableComponent = Component & { dispose?: () => void };\n\ninterface RowWindowComponent extends Component {\n\treadonly supportsRowWindow: true;\n\trowCount(width: number): number;\n\trenderRows(width: number, startRow: number, endRow: number): string[];\n}\n\ninterface WindowedComponentRows {\n\treadonly kind: \"windowed\";\n\treadonly component: RowWindowComponent;\n\treadonly rowCount: number;\n}\n\ninterface StaticComponentRows {\n\treadonly kind: \"static\";\n\treadonly lines: readonly string[];\n\treadonly rowCount: number;\n}\n\ntype ComponentRows = WindowedComponentRows | StaticComponentRows;\n\nexport function addChatTranscriptEntry(container: Container, component: Component, role: ChatTranscriptRole): void {\n\tif (needsLeadingSpacer(role) && container.children.length > 0) {\n\t\tcontainer.addChild(new Spacer(1));\n\t}\n\tcontainer.addChild(component);\n}\n\nfunction needsLeadingSpacer(role: ChatTranscriptRole): boolean {\n\treturn role === \"user\" || role === \"custom\" || role === \"notice\" || role === \"system\" || role === \"summary\";\n}\n\n/**\n * Reusable pi chat transcript scaffold for extension surfaces.\n *\n * This intentionally mirrors InteractiveMode.addMessageToChat spacing without\n * coupling consumers to a full AgentSession. Extension UIs can bring their own\n * message model while still rendering inside the same Container/Spacer rhythm\n * as the main chat.\n */\nexport class ChatTranscriptComponent<TEntry extends ChatTranscriptEntryLike> implements Component {\n\tprivate readonly entries: readonly TEntry[];\n\tprivate readonly renderEntry: ChatTranscriptRenderer<TEntry>;\n\treadonly supportsRowWindow: boolean;\n\n\tprivate readonly cacheKey: ChatTranscriptCacheKey<TEntry> | undefined;\n\tprivate blockCache: Array<CachedChatTranscriptBlock<TEntry> | undefined> = [];\n\n\tconstructor(\n\t\tentries: readonly TEntry[],\n\t\trenderEntry: ChatTranscriptRenderer<TEntry>,\n\t\tcacheKey?: ChatTranscriptCacheKey<TEntry>,\n\t) {\n\t\tthis.entries = entries;\n\t\tthis.renderEntry = renderEntry;\n\t\tthis.cacheKey = cacheKey;\n\t\tthis.supportsRowWindow = cacheKey !== undefined;\n\t}\n\n\trender(width: number): string[] {\n\t\tif (!this.supportsRowWindow) return this.renderAllRows(width);\n\t\treturn this.renderRows(width, 0, this.rowCount(width));\n\t}\n\n\trowCount(width: number): number {\n\t\tif (!this.supportsRowWindow) return this.renderAllRows(width).length;\n\t\tthis.ensureBlockCache(width);\n\t\tlet count = 0;\n\t\tfor (const block of this.blockCache) {\n\t\t\tif (block !== undefined) count += block.lines.length;\n\t\t}\n\t\treturn count;\n\t}\n\n\trenderRows(width: number, startRow: number, endRow: number): string[] {\n\t\tconst start = Math.max(0, Math.floor(startRow));\n\t\tconst end = Math.max(start, Math.floor(endRow));\n\t\tif (end <= start) return [];\n\t\tif (!this.supportsRowWindow) return this.renderAllRows(width).slice(start, end);\n\n\t\tthis.ensureBlockCache(width);\n\t\tconst lines: string[] = [];\n\t\tlet cursor = 0;\n\t\tfor (let index = 0; index < this.entries.length; index += 1) {\n\t\t\tconst block = this.blockCache[index];\n\t\t\tif (block === undefined) continue;\n\t\t\tconst blockStart = cursor;\n\t\t\tconst blockEnd = blockStart + block.lines.length;\n\t\t\tif (blockEnd > start && blockStart < end) {\n\t\t\t\tconst localStart = Math.max(0, start - blockStart);\n\t\t\t\tconst localEnd = Math.min(block.lines.length, end - blockStart);\n\t\t\t\tlines.push(...block.lines.slice(localStart, localEnd));\n\t\t\t}\n\t\t\tcursor = blockEnd;\n\t\t\tif (cursor >= end) break;\n\t\t}\n\t\treturn lines;\n\t}\n\n\tinvalidate(): void {\n\t\tfor (const block of this.blockCache) disposeComponent(block?.component);\n\t\tthis.blockCache = [];\n\t}\n\n\tprivate ensureBlockCache(width: number): void {\n\t\tif (this.blockCache.length > this.entries.length) {\n\t\t\tfor (let index = this.entries.length; index < this.blockCache.length; index += 1) {\n\t\t\t\tdisposeComponent(this.blockCache[index]?.component);\n\t\t\t}\n\t\t\tthis.blockCache.length = this.entries.length;\n\t\t}\n\t\tfor (let index = 0; index < this.entries.length; index += 1) {\n\t\t\tconst entry = this.entries[index];\n\t\t\tif (entry === undefined) continue;\n\t\t\tconst key = this.cacheKey?.(entry, index) ?? `${index}:${entry.role}`;\n\t\t\tconst cached = this.blockCache[index];\n\t\t\tif (cached !== undefined && cached.entry === entry && cached.key === key && cached.width === width) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdisposeComponent(cached?.component);\n\t\t\tconst component = this.renderEntry(entry);\n\t\t\tthis.blockCache[index] = {\n\t\t\t\tentry,\n\t\t\t\tkey,\n\t\t\t\twidth,\n\t\t\t\tcomponent,\n\t\t\t\tlines: this.renderEntryBlock(component, entry, index, width),\n\t\t\t};\n\t\t}\n\t}\n\n\tprivate renderAllRows(width: number): string[] {\n\t\tconst lines: string[] = [];\n\t\tfor (let index = 0; index < this.entries.length; index += 1) {\n\t\t\tconst entry = this.entries[index];\n\t\t\tif (entry !== undefined) lines.push(...this.renderEntryBlock(this.renderEntry(entry), entry, index, width));\n\t\t}\n\t\treturn lines;\n\t}\n\n\tprivate renderEntryBlock(component: Component, entry: TEntry, index: number, width: number): string[] {\n\t\tconst lines: string[] = [];\n\t\tif (index > 0 && needsLeadingSpacer(entry.role)) lines.push(\"\");\n\t\tlines.push(...component.render(width));\n\t\treturn lines;\n\t}\n}\n\nfunction disposeComponent(component: Component | undefined): void {\n\t(component as DisposableComponent | undefined)?.dispose?.();\n}\n\nconst DEFAULT_SCROLL_STEP_ROWS = 4;\n\n/**\n * Sticky-bottom, scrollable viewport for chat-like component stacks.\n *\n * Pi's main interactive chat gets terminal scrollback for free. Extension\n * overlays render into a fixed rectangle, so they need an explicit viewport\n * with the same sticky-bottom default plus keyboard and mouse history controls.\n */\nexport class ScrollableComponentViewport implements Component {\n\tprivate components: readonly Component[] = [];\n\tprivate visibleRows = 1;\n\tprivate scrollFromBottom = 0;\n\tprivate lastLineCount = 0;\n\tprivate lastWidth = 0;\n\tprivate maxScroll = 0;\n\n\tsetComponents(components: readonly Component[]): void {\n\t\tthis.components = components;\n\t}\n\n\tsetVisibleRows(rows: number): void {\n\t\tthis.visibleRows = Math.max(1, Math.floor(rows));\n\t\tthis.clampScroll();\n\t}\n\n\tgetScrollFromBottom(): number {\n\t\treturn this.scrollFromBottom;\n\t}\n\n\tgetMaxScroll(): number {\n\t\treturn this.maxScroll;\n\t}\n\n\tscrollToBottom(): void {\n\t\tthis.scrollFromBottom = 0;\n\t}\n\n\tscrollToTop(): void {\n\t\tthis.scrollFromBottom = this.maxScroll;\n\t}\n\n\tscrollBy(deltaRows: number): void {\n\t\t// Positive deltas move toward newer content; negative deltas move up\n\t\t// into older history. Store the offset from the sticky bottom so new\n\t\t// streaming output can keep following when the offset is zero.\n\t\tthis.scrollFromBottom -= deltaRows;\n\t\tthis.clampScroll();\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tconst wheelDeltaRows = mouseWheelDeltaRows(data);\n\t\tif (wheelDeltaRows !== 0) {\n\t\t\tthis.scrollBy(wheelDeltaRows);\n\t\t\treturn true;\n\t\t}\n\t\tif (isMouseSequence(data)) return true;\n\t\tif (matchesKey(data, \"pageUp\")) {\n\t\t\tthis.scrollBy(-this.pageSize());\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"pageDown\")) {\n\t\t\tthis.scrollBy(this.pageSize());\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"home\")) {\n\t\t\tthis.scrollToTop();\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"end\")) {\n\t\t\tthis.scrollToBottom();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\trender(width: number): string[] {\n\t\tconst componentRows = this.measureComponentRows(width);\n\t\tconst lineCount = componentRows.reduce((sum, rows) => sum + rows.rowCount, 0);\n\t\tconst maxScroll = Math.max(0, lineCount - this.visibleRows);\n\t\tif (this.scrollFromBottom > 0 && this.lastWidth === width && lineCount > this.lastLineCount) {\n\t\t\tthis.scrollFromBottom += lineCount - this.lastLineCount;\n\t\t}\n\t\tthis.lastLineCount = lineCount;\n\t\tthis.lastWidth = width;\n\t\tthis.maxScroll = maxScroll;\n\t\tthis.clampScroll();\n\n\t\tconst start = Math.max(0, maxScroll - this.scrollFromBottom);\n\t\tconst visible = this.renderVisibleRows(componentRows, width, start, start + this.visibleRows);\n\t\twhile (visible.length < this.visibleRows) visible.push(\" \".repeat(width));\n\t\treturn visible;\n\t}\n\n\tinvalidate(): void {\n\t\tfor (const component of this.components) component.invalidate();\n\t}\n\n\tprivate measureComponentRows(width: number): ComponentRows[] {\n\t\treturn this.components.map((component) => {\n\t\t\tif (isRowWindowComponent(component)) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"windowed\",\n\t\t\t\t\tcomponent,\n\t\t\t\t\trowCount: component.rowCount(width),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst lines = component.render(width);\n\t\t\treturn {\n\t\t\t\tkind: \"static\",\n\t\t\t\tlines,\n\t\t\t\trowCount: lines.length,\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate renderVisibleRows(\n\t\tcomponentRows: readonly ComponentRows[],\n\t\twidth: number,\n\t\tstartRow: number,\n\t\tendRow: number,\n\t): string[] {\n\t\tconst lines: string[] = [];\n\t\tlet cursor = 0;\n\t\tfor (const rows of componentRows) {\n\t\t\tconst componentStart = cursor;\n\t\t\tconst componentEnd = componentStart + rows.rowCount;\n\t\t\tif (componentEnd > startRow && componentStart < endRow) {\n\t\t\t\tconst localStart = Math.max(0, startRow - componentStart);\n\t\t\t\tconst localEnd = Math.min(rows.rowCount, endRow - componentStart);\n\t\t\t\tif (rows.kind === \"windowed\") {\n\t\t\t\t\tlines.push(...rows.component.renderRows(width, localStart, localEnd));\n\t\t\t\t} else {\n\t\t\t\t\tlines.push(...rows.lines.slice(localStart, localEnd));\n\t\t\t\t}\n\t\t\t}\n\t\t\tcursor = componentEnd;\n\t\t\tif (cursor >= endRow) break;\n\t\t}\n\t\treturn lines;\n\t}\n\n\tprivate pageSize(): number {\n\t\treturn Math.max(4, this.visibleRows - 2);\n\t}\n\n\tprivate clampScroll(): void {\n\t\tthis.scrollFromBottom = Math.max(0, Math.min(this.maxScroll, this.scrollFromBottom));\n\t}\n}\n\nfunction isRowWindowComponent(component: Component): component is RowWindowComponent {\n\tconst candidate = component as Partial<RowWindowComponent>;\n\treturn (\n\t\tcandidate.supportsRowWindow === true &&\n\t\ttypeof candidate.rowCount === \"function\" &&\n\t\ttypeof candidate.renderRows === \"function\"\n\t);\n}\n\nexport class ScrollableChatTranscriptComponent<TEntry extends ChatTranscriptEntryLike> implements Component {\n\tprivate readonly viewport = new ScrollableComponentViewport();\n\tprivate readonly transcript: ChatTranscriptComponent<TEntry>;\n\n\tconstructor(entries: readonly TEntry[], renderEntry: ChatTranscriptRenderer<TEntry>) {\n\t\tthis.transcript = new ChatTranscriptComponent(entries, renderEntry);\n\t\tthis.viewport.setComponents([this.transcript]);\n\t}\n\n\tsetVisibleRows(rows: number): void {\n\t\tthis.viewport.setVisibleRows(rows);\n\t}\n\n\thandleInput(data: string): boolean {\n\t\treturn this.viewport.handleInput(data);\n\t}\n\n\trender(width: number): string[] {\n\t\treturn this.viewport.render(width);\n\t}\n\n\tinvalidate(): void {\n\t\tthis.viewport.invalidate();\n\t}\n\n\tgetScrollFromBottom(): number {\n\t\treturn this.viewport.getScrollFromBottom();\n\t}\n\n\tgetMaxScroll(): number {\n\t\treturn this.viewport.getMaxScroll();\n\t}\n\n\tscrollToBottom(): void {\n\t\tthis.viewport.scrollToBottom();\n\t}\n}\n\nfunction mouseWheelDeltaRows(data: string): number {\n\tconst sgr = data.match(/^\\x1b\\[<(\\d+);\\d+;\\d+M$/);\n\tif (sgr) return wheelDeltaForButtonCode(Number.parseInt(sgr[1]!, 10));\n\tif (data.startsWith(\"\\x1b[M\") && data.length >= 6) {\n\t\treturn wheelDeltaForButtonCode(data.charCodeAt(3) - 32);\n\t}\n\treturn 0;\n}\n\nfunction wheelDeltaForButtonCode(code: number): number {\n\tif ((code & 64) === 0) return 0;\n\tconst direction = code & 3;\n\tif (direction === 0) return -DEFAULT_SCROLL_STEP_ROWS;\n\tif (direction === 1) return DEFAULT_SCROLL_STEP_ROWS;\n\treturn 0;\n}\n\nfunction isMouseSequence(data: string): boolean {\n\treturn /^\\x1b\\[<\\d+;\\d+;\\d+[mM]$/.test(data) || data.startsWith(\"\\x1b[M\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"chat-transcript.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-transcript.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Component, type Container, matchesKey, Spacer } from \"@earendil-works/pi-tui\";\n\n/**\n * Roles that participate in pi's chat spacing contract.\n *\n * Assistant turns own their leading whitespace internally, and tool rows attach\n * directly under the assistant/tool-call row they belong to. User-like rows get\n * one blank line when they are not the first row in the transcript.\n */\nexport type ChatTranscriptRole =\n\t| \"assistant\"\n\t| \"thinking\"\n\t| \"tool\"\n\t| \"user\"\n\t| \"custom\"\n\t| \"notice\"\n\t| \"system\"\n\t| \"summary\";\n\nexport interface ChatTranscriptEntryLike {\n\treadonly role: ChatTranscriptRole;\n}\n\nexport type ChatTranscriptRenderer<TEntry extends ChatTranscriptEntryLike> = (entry: TEntry) => Component;\n\nexport type ChatTranscriptCacheKey<TEntry extends ChatTranscriptEntryLike> = (entry: TEntry, index: number) => string;\n\ninterface CachedChatTranscriptBlock<TEntry extends ChatTranscriptEntryLike> {\n\treadonly entry: TEntry;\n\treadonly key: string;\n\treadonly width: number;\n\treadonly component: Component;\n\treadonly lines: readonly string[];\n}\n\ntype DisposableComponent = Component & { dispose?: () => void };\n\n/**\n * A run of rows inside a windowed component, tagged with the identity of the\n * thing that produced them.\n *\n * `id` is compared with `===` only, and is never rendered. Entry *objects* are\n * the natural id for a transcript: cache keys carry the entry's index and so\n * change for every survivor of a splice, while the entry objects themselves are\n * moved, not rebuilt.\n */\nexport interface RowWindowSegment {\n\treadonly id: unknown;\n\treadonly rows: number;\n}\n\ninterface RowWindowComponent extends Component {\n\treadonly supportsRowWindow: true;\n\trowCount(width: number): number;\n\trenderRows(width: number, startRow: number, endRow: number): string[];\n\t/**\n\t * Optional row map, letting the viewport keep a scroll anchor that sits\n\t * *inside* this component when its interior changes height.\n\t */\n\trowSegments?(width: number): readonly RowWindowSegment[];\n}\n\ninterface WindowedComponentRows {\n\treadonly kind: \"windowed\";\n\treadonly component: RowWindowComponent;\n\treadonly rowCount: number;\n\treadonly segments: readonly RowWindowSegment[] | undefined;\n}\n\ninterface StaticComponentRows {\n\treadonly kind: \"static\";\n\treadonly lines: readonly string[];\n\treadonly rowCount: number;\n\t/**\n\t * Present when a static component can still identify its own rows. A\n\t * transcript built without a cache key renders every row each frame rather\n\t * than windowing, but it knows just as well which entry produced which rows,\n\t * and the anchor needs that whenever it is the component spanning the anchor.\n\t */\n\treadonly segments?: readonly RowWindowSegment[] | undefined;\n}\n\ntype ComponentRows = WindowedComponentRows | StaticComponentRows;\n\nexport function addChatTranscriptEntry(container: Container, component: Component, role: ChatTranscriptRole): void {\n\tif (needsLeadingSpacer(role) && container.children.length > 0) {\n\t\tcontainer.addChild(new Spacer(1));\n\t}\n\tcontainer.addChild(component);\n}\n\nfunction needsLeadingSpacer(role: ChatTranscriptRole): boolean {\n\treturn role === \"user\" || role === \"custom\" || role === \"notice\" || role === \"system\" || role === \"summary\";\n}\n\n/**\n * Reusable pi chat transcript scaffold for extension surfaces.\n *\n * This intentionally mirrors InteractiveMode.addMessageToChat spacing without\n * coupling consumers to a full AgentSession. Extension UIs can bring their own\n * message model while still rendering inside the same Container/Spacer rhythm\n * as the main chat.\n */\nexport class ChatTranscriptComponent<TEntry extends ChatTranscriptEntryLike> implements Component {\n\tprivate readonly entries: readonly TEntry[];\n\tprivate readonly renderEntry: ChatTranscriptRenderer<TEntry>;\n\treadonly supportsRowWindow: boolean;\n\n\tprivate readonly cacheKey: ChatTranscriptCacheKey<TEntry> | undefined;\n\tprivate blockCache: Array<CachedChatTranscriptBlock<TEntry> | undefined> = [];\n\t/** Per-entry heights recorded by the most recent `renderAllRows`. */\n\tprivate staticSegments: readonly RowWindowSegment[] = [];\n\t/** Width those heights were measured at; they mean nothing at another width. */\n\tprivate staticSegmentsWidth: number | undefined;\n\n\tconstructor(\n\t\tentries: readonly TEntry[],\n\t\trenderEntry: ChatTranscriptRenderer<TEntry>,\n\t\tcacheKey?: ChatTranscriptCacheKey<TEntry>,\n\t) {\n\t\tthis.entries = entries;\n\t\tthis.renderEntry = renderEntry;\n\t\tthis.cacheKey = cacheKey;\n\t\tthis.supportsRowWindow = cacheKey !== undefined;\n\t}\n\n\trender(width: number): string[] {\n\t\tif (!this.supportsRowWindow) return this.renderAllRows(width);\n\t\treturn this.renderRows(width, 0, this.rowCount(width));\n\t}\n\n\trowCount(width: number): number {\n\t\tif (!this.supportsRowWindow) return this.renderAllRows(width).length;\n\t\tthis.ensureBlockCache(width);\n\t\tlet count = 0;\n\t\tfor (const block of this.blockCache) {\n\t\t\tif (block !== undefined) count += block.lines.length;\n\t\t}\n\t\treturn count;\n\t}\n\n\t/**\n\t * One segment per cached entry block, identified by the entry object itself.\n\t */\n\trowSegments(width: number): readonly RowWindowSegment[] {\n\t\tif (!this.supportsRowWindow) {\n\t\t\t// Recorded by the last renderAllRows. The viewport measures a static\n\t\t\t// component by rendering it and only then reads its segments, so this\n\t\t\t// is populated for the frame being measured. A width mismatch means the\n\t\t\t// heights describe a different layout, and reporting them would move the\n\t\t\t// anchor by a stale delta; the caller falls back to whole-component\n\t\t\t// accounting instead.\n\t\t\treturn this.staticSegmentsWidth === width ? this.staticSegments : [];\n\t\t}\n\t\tthis.ensureBlockCache(width);\n\t\tconst segments: RowWindowSegment[] = [];\n\t\tfor (const block of this.blockCache) {\n\t\t\tif (block !== undefined) segments.push({ id: block.entry, rows: block.lines.length });\n\t\t}\n\t\treturn segments;\n\t}\n\n\trenderRows(width: number, startRow: number, endRow: number): string[] {\n\t\tconst start = Math.max(0, Math.floor(startRow));\n\t\tconst end = Math.max(start, Math.floor(endRow));\n\t\tif (end <= start) return [];\n\t\tif (!this.supportsRowWindow) return this.renderAllRows(width).slice(start, end);\n\n\t\tthis.ensureBlockCache(width);\n\t\tconst lines: string[] = [];\n\t\tlet cursor = 0;\n\t\tfor (let index = 0; index < this.entries.length; index += 1) {\n\t\t\tconst block = this.blockCache[index];\n\t\t\tif (block === undefined) continue;\n\t\t\tconst blockStart = cursor;\n\t\t\tconst blockEnd = blockStart + block.lines.length;\n\t\t\tif (blockEnd > start && blockStart < end) {\n\t\t\t\tconst localStart = Math.max(0, start - blockStart);\n\t\t\t\tconst localEnd = Math.min(block.lines.length, end - blockStart);\n\t\t\t\tlines.push(...block.lines.slice(localStart, localEnd));\n\t\t\t}\n\t\t\tcursor = blockEnd;\n\t\t\tif (cursor >= end) break;\n\t\t}\n\t\treturn lines;\n\t}\n\n\tinvalidate(): void {\n\t\tfor (const block of this.blockCache) disposeComponent(block?.component);\n\t\tthis.blockCache = [];\n\t}\n\n\tprivate ensureBlockCache(width: number): void {\n\t\tif (this.blockCache.length > this.entries.length) {\n\t\t\tfor (let index = this.entries.length; index < this.blockCache.length; index += 1) {\n\t\t\t\tdisposeComponent(this.blockCache[index]?.component);\n\t\t\t}\n\t\t\tthis.blockCache.length = this.entries.length;\n\t\t}\n\t\tfor (let index = 0; index < this.entries.length; index += 1) {\n\t\t\tconst entry = this.entries[index];\n\t\t\tif (entry === undefined) continue;\n\t\t\tconst key = this.cacheKey?.(entry, index) ?? `${index}:${entry.role}`;\n\t\t\tconst cached = this.blockCache[index];\n\t\t\tif (cached !== undefined && cached.entry === entry && cached.key === key && cached.width === width) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdisposeComponent(cached?.component);\n\t\t\tconst component = this.renderEntry(entry);\n\t\t\tthis.blockCache[index] = {\n\t\t\t\tentry,\n\t\t\t\tkey,\n\t\t\t\twidth,\n\t\t\t\tcomponent,\n\t\t\t\tlines: this.renderEntryBlock(component, entry, index, width),\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Render every entry, recording each one's height as it goes.\n\t *\n\t * The heights are what `rowSegments` reports on this path. They are a\n\t * by-product of work this method already does, so identifying rows costs\n\t * nothing extra and, unlike a cache key, cannot miss an entry mutated in\n\t * place -- which is the behaviour a transcript without a cache key exists to\n\t * provide.\n\t */\n\tprivate renderAllRows(width: number): string[] {\n\t\tconst lines: string[] = [];\n\t\tconst segments: RowWindowSegment[] = [];\n\t\tfor (let index = 0; index < this.entries.length; index += 1) {\n\t\t\tconst entry = this.entries[index];\n\t\t\tif (entry === undefined) continue;\n\t\t\tconst block = this.renderEntryBlock(this.renderEntry(entry), entry, index, width);\n\t\t\tsegments.push({ id: entry, rows: block.length });\n\t\t\tlines.push(...block);\n\t\t}\n\t\tthis.staticSegments = segments;\n\t\tthis.staticSegmentsWidth = width;\n\t\treturn lines;\n\t}\n\n\tprivate renderEntryBlock(component: Component, entry: TEntry, index: number, width: number): string[] {\n\t\tconst lines: string[] = [];\n\t\tif (index > 0 && needsLeadingSpacer(entry.role)) lines.push(\"\");\n\t\tlines.push(...component.render(width));\n\t\treturn lines;\n\t}\n}\n\nfunction disposeComponent(component: Component | undefined): void {\n\t(component as DisposableComponent | undefined)?.dispose?.();\n}\n\nconst DEFAULT_SCROLL_STEP_ROWS = 4;\n\n/**\n * Sticky-bottom, scrollable viewport for chat-like component stacks.\n *\n * Pi's main interactive chat gets terminal scrollback for free. Extension\n * overlays render into a fixed rectangle, so they need an explicit viewport\n * with the same sticky-bottom default plus keyboard and mouse history controls.\n */\nexport class ScrollableComponentViewport implements Component {\n\tprivate components: readonly Component[] = [];\n\tprivate visibleRows = 1;\n\tprivate scrollFromBottom = 0;\n\tprivate lastLineCount = 0;\n\tprivate lastComponentSegments: readonly (readonly RowWindowSegment[] | undefined)[] = [];\n\tprivate lastComponentRowCounts: readonly number[] = [];\n\tprivate lastWidth = 0;\n\tprivate maxScroll = 0;\n\n\tsetComponents(components: readonly Component[]): void {\n\t\tthis.components = components;\n\t}\n\n\tsetVisibleRows(rows: number): void {\n\t\tthis.visibleRows = Math.max(1, Math.floor(rows));\n\t\tthis.clampScroll();\n\t}\n\n\tgetScrollFromBottom(): number {\n\t\treturn this.scrollFromBottom;\n\t}\n\n\tgetMaxScroll(): number {\n\t\treturn this.maxScroll;\n\t}\n\n\tscrollToBottom(): void {\n\t\tthis.scrollFromBottom = 0;\n\t}\n\n\tscrollToTop(): void {\n\t\tthis.scrollFromBottom = this.maxScroll;\n\t}\n\n\tscrollBy(deltaRows: number): void {\n\t\t// Positive deltas move toward newer content; negative deltas move up\n\t\t// into older history. Store the offset from the sticky bottom so new\n\t\t// streaming output can keep following when the offset is zero.\n\t\tthis.scrollFromBottom -= deltaRows;\n\t\tthis.clampScroll();\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tconst wheelDeltaRows = mouseWheelDeltaRows(data);\n\t\tif (wheelDeltaRows !== 0) {\n\t\t\tthis.scrollBy(wheelDeltaRows);\n\t\t\treturn true;\n\t\t}\n\t\tif (isMouseSequence(data)) return true;\n\t\tif (matchesKey(data, \"pageUp\")) {\n\t\t\tthis.scrollBy(-this.pageSize());\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"pageDown\")) {\n\t\t\tthis.scrollBy(this.pageSize());\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"home\")) {\n\t\t\tthis.scrollToTop();\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"end\")) {\n\t\t\tthis.scrollToBottom();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\trender(width: number): string[] {\n\t\tconst componentRows = this.measureComponentRows(width);\n\t\tconst rowCounts = componentRows.map((rows) => rows.rowCount);\n\t\tconst lineCount = rowCounts.reduce((sum, count) => sum + count, 0);\n\t\tconst maxScroll = Math.max(0, lineCount - this.visibleRows);\n\t\t// The offset is a distance from the bottom, so the first visible row is\n\t\t// `maxScroll - scrollFromBottom`. Rows appearing or disappearing move the\n\t\t// content a scrolled-up viewer is reading unless the offset moves with\n\t\t// them -- a live subagent widget does exactly that every time it gains or\n\t\t// drops its current-tool row.\n\t\t//\n\t\t// Which way the offset must move depends on where the rows changed, so a\n\t\t// plain `scrollFromBottom += lineCount - lastLineCount` is wrong half the\n\t\t// time. Rows changing *below* the anchor need the offset adjusted by that\n\t\t// delta; rows changing *above* it need the offset left alone, because the\n\t\t// bottom-relative distance to the anchored content did not change. Anchor\n\t\t// on the row the viewer is actually reading and re-derive the offset from\n\t\t// it. A viewer already at the bottom keeps scrollFromBottom === 0 and is\n\t\t// skipped entirely, so sticky-bottom following is untouched.\n\t\t//\n\t\t// Per-component row counts alone cannot place a change that happens\n\t\t// inside the component holding the anchor -- and in the chat host the\n\t\t// whole transcript is one component, so that is the normal case. A\n\t\t// component that can hand over a row map turns the \"where\" question into\n\t\t// \"where did the anchored segment go\". Both kinds may supply one: a\n\t\t// transcript built without a cache key is not windowed, but it is still\n\t\t// one component spanning the anchor and still knows its own rows.\n\t\tconst segments = componentRows.map((rows) => rows.segments);\n\t\tif (this.scrollFromBottom > 0 && this.lastWidth === width) {\n\t\t\tconst previousMaxScroll = Math.max(0, this.lastLineCount - this.visibleRows);\n\t\t\tconst anchorRow = Math.max(0, previousMaxScroll - this.scrollFromBottom);\n\t\t\tconst shift = rowsShiftedAboveAnchor(\n\t\t\t\t{ rowCounts: this.lastComponentRowCounts, segments: this.lastComponentSegments },\n\t\t\t\t{ rowCounts, segments },\n\t\t\t\tanchorRow,\n\t\t\t);\n\t\t\tconst nextAnchorRow = Math.max(0, Math.min(maxScroll, anchorRow + shift));\n\t\t\tthis.scrollFromBottom = maxScroll - nextAnchorRow;\n\t\t}\n\t\tthis.lastLineCount = lineCount;\n\t\tthis.lastComponentRowCounts = rowCounts;\n\t\tthis.lastComponentSegments = segments;\n\t\tthis.lastWidth = width;\n\t\tthis.maxScroll = maxScroll;\n\t\tthis.clampScroll();\n\n\t\tconst start = Math.max(0, maxScroll - this.scrollFromBottom);\n\t\tconst visible = this.renderVisibleRows(componentRows, width, start, start + this.visibleRows);\n\t\twhile (visible.length < this.visibleRows) visible.push(\" \".repeat(width));\n\t\treturn visible;\n\t}\n\n\tinvalidate(): void {\n\t\tfor (const component of this.components) component.invalidate();\n\t}\n\n\tprivate measureComponentRows(width: number): ComponentRows[] {\n\t\treturn this.components.map((component) => {\n\t\t\tif (isRowWindowComponent(component)) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"windowed\",\n\t\t\t\t\tcomponent,\n\t\t\t\t\trowCount: component.rowCount(width),\n\t\t\t\t\tsegments: component.rowSegments?.(width),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst lines = component.render(width);\n\t\t\t// Read segments only after rendering: a static transcript records its\n\t\t\t// per-entry heights as a by-product of that render, so asking first\n\t\t\t// would return the previous frame's layout.\n\t\t\tconst segments = segmentReporter(component)?.rowSegments(width);\n\t\t\treturn {\n\t\t\t\tkind: \"static\",\n\t\t\t\tlines,\n\t\t\t\trowCount: lines.length,\n\t\t\t\tsegments: segments !== undefined && segments.length > 0 ? segments : undefined,\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate renderVisibleRows(\n\t\tcomponentRows: readonly ComponentRows[],\n\t\twidth: number,\n\t\tstartRow: number,\n\t\tendRow: number,\n\t): string[] {\n\t\tconst lines: string[] = [];\n\t\tlet cursor = 0;\n\t\tfor (const rows of componentRows) {\n\t\t\tconst componentStart = cursor;\n\t\t\tconst componentEnd = componentStart + rows.rowCount;\n\t\t\tif (componentEnd > startRow && componentStart < endRow) {\n\t\t\t\tconst localStart = Math.max(0, startRow - componentStart);\n\t\t\t\tconst localEnd = Math.min(rows.rowCount, endRow - componentStart);\n\t\t\t\tif (rows.kind === \"windowed\") {\n\t\t\t\t\tlines.push(...rows.component.renderRows(width, localStart, localEnd));\n\t\t\t\t} else {\n\t\t\t\t\tlines.push(...rows.lines.slice(localStart, localEnd));\n\t\t\t\t}\n\t\t\t}\n\t\t\tcursor = componentEnd;\n\t\t\tif (cursor >= endRow) break;\n\t\t}\n\t\treturn lines;\n\t}\n\n\tprivate pageSize(): number {\n\t\treturn Math.max(4, this.visibleRows - 2);\n\t}\n\n\tprivate clampScroll(): void {\n\t\tthis.scrollFromBottom = Math.max(0, Math.min(this.maxScroll, this.scrollFromBottom));\n\t}\n}\n\n/** One rendered frame's row layout, as the viewport measured it. */\ninterface ComponentRowLayout {\n\treadonly rowCounts: readonly number[];\n\treadonly segments: readonly (readonly RowWindowSegment[] | undefined)[];\n}\n\n/**\n * Rows gained or lost above `anchorRow`, measured in the previous frame's rows.\n *\n * The anchored row moves down by exactly this many rows, so adding it to the\n * anchor keeps the same content under the viewer.\n *\n * Components entirely above the anchor contribute their whole height delta.\n * The component that *spans* the anchor contributes only what changed above the\n * anchored row, which needs its row map (`rowSegments`); without one it\n * contributes nothing, which is the old behaviour and is right for the\n * append-and-mutate-at-the-tail widgets that have no interior.\n *\n * Row counts are compared positionally over the shared prefix, which is what the\n * chat stacks this viewport drives actually do — they append and mutate at the\n * tail. A component inserted or removed *ahead* of the anchor would be\n * misattributed; the anchor then lands one component off rather than drifting on\n * every frame, and the next user scroll re-establishes it.\n */\nfunction rowsShiftedAboveAnchor(previous: ComponentRowLayout, next: ComponentRowLayout, anchorRow: number): number {\n\tlet cursor = 0;\n\tlet shift = 0;\n\tconst shared = Math.min(previous.rowCounts.length, next.rowCounts.length);\n\tfor (let index = 0; index < shared; index += 1) {\n\t\tconst previousRows = previous.rowCounts[index] ?? 0;\n\t\tconst componentEnd = cursor + previousRows;\n\t\tif (componentEnd > anchorRow) {\n\t\t\treturn shift + rowsShiftedInsideComponent(previous.segments[index], next.segments[index], anchorRow - cursor);\n\t\t}\n\t\tshift += (next.rowCounts[index] ?? 0) - previousRows;\n\t\tcursor = componentEnd;\n\t}\n\treturn shift;\n}\n\n/**\n * Rows gained or lost above `anchorRow` *within* one windowed component.\n *\n * Rather than diffing heights, this finds the segment the viewer is parked on\n * and reports how far that same segment moved. Segments are matched by `===` on\n * their id, so a transcript splice that renumbers every cache key still lines\n * up: the entry objects survive it. If the anchored segment itself is gone\n * (the viewer was reading rows that were compacted away) the nearest surviving\n * neighbour above it — then below it — stands in, so the viewer lands on the\n * closest content that still exists instead of drifting by the whole delta.\n */\nfunction rowsShiftedInsideComponent(\n\tpreviousSegments: readonly RowWindowSegment[] | undefined,\n\tnextSegments: readonly RowWindowSegment[] | undefined,\n\tanchorRow: number,\n): number {\n\tif (previousSegments === undefined || nextSegments === undefined) return 0;\n\tconst nextStarts = new Map<unknown, number>();\n\tlet cursor = 0;\n\tfor (const segment of nextSegments) {\n\t\tif (!nextStarts.has(segment.id)) nextStarts.set(segment.id, cursor);\n\t\tcursor += segment.rows;\n\t}\n\tconst previousStarts: number[] = [];\n\tlet anchorIndex = -1;\n\tcursor = 0;\n\tfor (let index = 0; index < previousSegments.length; index += 1) {\n\t\tpreviousStarts.push(cursor);\n\t\tcursor += previousSegments[index]?.rows ?? 0;\n\t\tif (anchorIndex < 0 && cursor > anchorRow) anchorIndex = index;\n\t}\n\tif (anchorIndex < 0) return 0;\n\tfor (let index = anchorIndex; index >= 0; index -= 1) {\n\t\tconst nextStart = nextStarts.get(previousSegments[index]?.id);\n\t\tif (nextStart !== undefined) return nextStart - (previousStarts[index] ?? 0);\n\t}\n\tfor (let index = anchorIndex + 1; index < previousSegments.length; index += 1) {\n\t\tconst nextStart = nextStarts.get(previousSegments[index]?.id);\n\t\tif (nextStart !== undefined) return nextStart - (previousStarts[index] ?? 0);\n\t}\n\treturn 0;\n}\n\nfunction isRowWindowComponent(component: Component): component is RowWindowComponent {\n\tconst candidate = component as Partial<RowWindowComponent>;\n\treturn (\n\t\tcandidate.supportsRowWindow === true &&\n\t\ttypeof candidate.rowCount === \"function\" &&\n\t\ttypeof candidate.renderRows === \"function\"\n\t);\n}\n\n/**\n * A component that can identify its own rows without being windowed.\n *\n * `ScrollableChatTranscriptComponent` builds its transcript without a cache key\n * — deliberately, because that is what lets it reflect entries mutated in place\n * — so it is not a `RowWindowComponent` and renders every row each frame. It\n * still knows which entry produced which rows, and it is still the component\n * spanning the anchor, so the anchor needs to ask.\n */\nfunction segmentReporter(\n\tcomponent: Component,\n): { rowSegments(width: number): readonly RowWindowSegment[] } | undefined {\n\tconst candidate = component as Partial<RowWindowComponent>;\n\treturn typeof candidate.rowSegments === \"function\"\n\t\t? (candidate as { rowSegments(width: number): readonly RowWindowSegment[] })\n\t\t: undefined;\n}\n\nexport class ScrollableChatTranscriptComponent<TEntry extends ChatTranscriptEntryLike> implements Component {\n\tprivate readonly viewport = new ScrollableComponentViewport();\n\tprivate readonly transcript: ChatTranscriptComponent<TEntry>;\n\n\tconstructor(entries: readonly TEntry[], renderEntry: ChatTranscriptRenderer<TEntry>) {\n\t\tthis.transcript = new ChatTranscriptComponent(entries, renderEntry);\n\t\tthis.viewport.setComponents([this.transcript]);\n\t}\n\n\tsetVisibleRows(rows: number): void {\n\t\tthis.viewport.setVisibleRows(rows);\n\t}\n\n\thandleInput(data: string): boolean {\n\t\treturn this.viewport.handleInput(data);\n\t}\n\n\trender(width: number): string[] {\n\t\treturn this.viewport.render(width);\n\t}\n\n\tinvalidate(): void {\n\t\tthis.viewport.invalidate();\n\t}\n\n\tgetScrollFromBottom(): number {\n\t\treturn this.viewport.getScrollFromBottom();\n\t}\n\n\tgetMaxScroll(): number {\n\t\treturn this.viewport.getMaxScroll();\n\t}\n\n\tscrollToBottom(): void {\n\t\tthis.viewport.scrollToBottom();\n\t}\n}\n\nfunction mouseWheelDeltaRows(data: string): number {\n\tconst sgr = data.match(/^\\x1b\\[<(\\d+);\\d+;\\d+M$/);\n\tif (sgr) return wheelDeltaForButtonCode(Number.parseInt(sgr[1]!, 10));\n\tif (data.startsWith(\"\\x1b[M\") && data.length >= 6) {\n\t\treturn wheelDeltaForButtonCode(data.charCodeAt(3) - 32);\n\t}\n\treturn 0;\n}\n\nfunction wheelDeltaForButtonCode(code: number): number {\n\tif ((code & 64) === 0) return 0;\n\tconst direction = code & 3;\n\tif (direction === 0) return -DEFAULT_SCROLL_STEP_ROWS;\n\tif (direction === 1) return DEFAULT_SCROLL_STEP_ROWS;\n\treturn 0;\n}\n\nfunction isMouseSequence(data: string): boolean {\n\treturn /^\\x1b\\[<\\d+;\\d+;\\d+[mM]$/.test(data) || data.startsWith(\"\\x1b[M\");\n}\n"]}
|
|
@@ -53,7 +53,7 @@ export declare class ResourceList implements Component, Focusable {
|
|
|
53
53
|
updateItem(item: ResourceItem, enabled: boolean): void;
|
|
54
54
|
invalidate(): void;
|
|
55
55
|
render(width: number): string[];
|
|
56
|
-
handleInput(data: string):
|
|
56
|
+
handleInput(data: string): boolean;
|
|
57
57
|
private toggleResource;
|
|
58
58
|
private toggleTopLevelResource;
|
|
59
59
|
private togglePackageResource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-selector-list.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/config-selector-list.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,SAAS,EACd,KAAK,SAAS,EAKd,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAoB,MAAM,kCAAkC,CAAC;AACtG,OAAO,KAAK,EAAiB,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAIxF,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAUxF,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,gBAAgB;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IACxC,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAiCD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CA0EtF;AAKD,qBAAa,YAAa,YAAW,SAAS,EAAE,SAAS;IACxD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAS;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,OAAO,CAAC,UAAU,CAAkC;IAC7C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAGzB;IACD,YACC,MAAM,EAAE,aAAa,EAAE,EACvB,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,MAAM,EAUvB;IACD,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAE/C;IACD,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAIvC;IACD,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,WAAW;IA6CnB,OAAO,CAAC,eAAe;IAIvB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAarD;IACD,UAAU,IAAI,IAAI,CAAG;IACrB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA6B9B;IACD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"config-selector-list.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/config-selector-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -263,11 +263,11 @@ export class ResourceList {
|
|
|
263
263
|
const kb = getKeybindings();
|
|
264
264
|
if (kb.matches(data, "tui.select.up")) {
|
|
265
265
|
this.selectedIndex = this.findNextItem(this.selectedIndex, -1);
|
|
266
|
-
return;
|
|
266
|
+
return true;
|
|
267
267
|
}
|
|
268
268
|
if (kb.matches(data, "tui.select.down")) {
|
|
269
269
|
this.selectedIndex = this.findNextItem(this.selectedIndex, 1);
|
|
270
|
-
return;
|
|
270
|
+
return true;
|
|
271
271
|
}
|
|
272
272
|
if (kb.matches(data, "tui.select.pageUp")) {
|
|
273
273
|
// Jump up by maxVisible, then find nearest item
|
|
@@ -278,7 +278,7 @@ export class ResourceList {
|
|
|
278
278
|
if (target < this.filteredItems.length) {
|
|
279
279
|
this.selectedIndex = target;
|
|
280
280
|
}
|
|
281
|
-
return;
|
|
281
|
+
return true;
|
|
282
282
|
}
|
|
283
283
|
if (kb.matches(data, "tui.select.pageDown")) {
|
|
284
284
|
// Jump down by maxVisible, then find nearest item
|
|
@@ -289,19 +289,19 @@ export class ResourceList {
|
|
|
289
289
|
if (target >= 0) {
|
|
290
290
|
this.selectedIndex = target;
|
|
291
291
|
}
|
|
292
|
-
return;
|
|
292
|
+
return true;
|
|
293
293
|
}
|
|
294
294
|
if (kb.matches(data, "tui.select.cancel")) {
|
|
295
295
|
this.onCancel?.();
|
|
296
|
-
return;
|
|
296
|
+
return true;
|
|
297
297
|
}
|
|
298
298
|
if (matchesKey(data, "ctrl+c")) {
|
|
299
299
|
this.onExit?.();
|
|
300
|
-
return;
|
|
300
|
+
return true;
|
|
301
301
|
}
|
|
302
302
|
if (kb.matches(data, "tui.input.tab")) {
|
|
303
303
|
this.onSwitchMode?.();
|
|
304
|
-
return;
|
|
304
|
+
return true;
|
|
305
305
|
}
|
|
306
306
|
if (data === " " || kb.matches(data, "tui.select.confirm")) {
|
|
307
307
|
const entry = this.filteredItems[this.selectedIndex];
|
|
@@ -314,10 +314,11 @@ export class ResourceList {
|
|
|
314
314
|
this.updateItem(entry.item, newEnabled);
|
|
315
315
|
this.onToggle?.(entry.item, newEnabled);
|
|
316
316
|
}
|
|
317
|
-
return;
|
|
317
|
+
return true;
|
|
318
318
|
}
|
|
319
319
|
this.searchInput.handleInput(data);
|
|
320
320
|
this.filterItems(this.searchInput.getValue());
|
|
321
|
+
return true;
|
|
321
322
|
}
|
|
322
323
|
toggleResource(item, enabled) {
|
|
323
324
|
if (item.metadata.origin === "top-level") {
|