@bastani/atomic 0.8.31-alpha.4 → 0.9.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -1
- package/dist/builtin/cursor/CHANGELOG.md +4 -1
- package/dist/builtin/cursor/package.json +2 -2
- package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +44 -0
- package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +271 -0
- package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +231 -0
- package/dist/builtin/cursor/src/proto/protobuf-codec.ts +5 -523
- package/dist/builtin/cursor/src/stream.ts +6 -70
- package/dist/builtin/cursor/src/transport-errors.ts +74 -0
- package/dist/builtin/cursor/src/transport-frame.ts +56 -0
- package/dist/builtin/cursor/src/transport-http2.ts +122 -0
- package/dist/builtin/cursor/src/transport-native-client.ts +161 -0
- package/dist/builtin/cursor/src/transport-run-stream.ts +188 -0
- package/dist/builtin/cursor/src/transport-timeouts.ts +87 -0
- package/dist/builtin/cursor/src/transport-types.ts +140 -0
- package/dist/builtin/cursor/src/transport.ts +24 -790
- package/dist/builtin/intercom/CHANGELOG.md +3 -0
- package/dist/builtin/intercom/broker/client.ts +0 -35
- package/dist/builtin/intercom/contact-supervisor-tool.ts +289 -0
- package/dist/builtin/intercom/index-heavy.ts +77 -1336
- package/dist/builtin/intercom/intercom-tool.ts +409 -0
- package/dist/builtin/intercom/intercom-utils.ts +401 -0
- package/dist/builtin/intercom/lifecycle.ts +133 -0
- package/dist/builtin/intercom/overlay.ts +96 -0
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/subagent-relay.ts +137 -0
- package/dist/builtin/mcp/CHANGELOG.md +3 -0
- package/dist/builtin/mcp/config-write-utils.ts +104 -0
- package/dist/builtin/mcp/config.ts +4 -180
- package/dist/builtin/mcp/mcp-panel-renderer.ts +243 -0
- package/dist/builtin/mcp/mcp-panel-state.ts +227 -0
- package/dist/builtin/mcp/mcp-panel-types.ts +86 -0
- package/dist/builtin/mcp/mcp-panel.ts +145 -579
- package/dist/builtin/mcp/mcp-setup-panel.ts +4 -81
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/mcp/proxy-auth.ts +61 -0
- package/dist/builtin/mcp/proxy-call.ts +373 -0
- package/dist/builtin/mcp/proxy-connect.ts +58 -0
- package/dist/builtin/mcp/proxy-info-modes.ts +326 -0
- package/dist/builtin/mcp/proxy-modes.ts +3 -805
- package/dist/builtin/mcp/proxy-types.ts +3 -0
- package/dist/builtin/mcp/ui-server-http.ts +81 -0
- package/dist/builtin/mcp/ui-server.ts +2 -127
- package/dist/builtin/subagents/CHANGELOG.md +3 -0
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/src/agents/agent-discovery.ts +127 -0
- package/dist/builtin/subagents/src/agents/agent-loaders.ts +175 -0
- package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +310 -0
- package/dist/builtin/subagents/src/agents/agent-management.ts +3 -309
- package/dist/builtin/subagents/src/agents/agent-overrides.ts +397 -0
- package/dist/builtin/subagents/src/agents/agent-paths.ts +88 -0
- package/dist/builtin/subagents/src/agents/agent-types.ts +136 -0
- package/dist/builtin/subagents/src/agents/agents.ts +22 -895
- package/dist/builtin/subagents/src/agents/skills-paths.ts +333 -0
- package/dist/builtin/subagents/src/agents/skills.ts +3 -326
- package/dist/builtin/subagents/src/extension/index.ts +4 -118
- package/dist/builtin/subagents/src/extension/prompt-guidance.ts +13 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +401 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +131 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +213 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +84 -0
- package/dist/builtin/subagents/src/runs/background/async-execution.ts +13 -795
- package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +215 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +136 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +105 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +112 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +159 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +127 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +427 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +273 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +269 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +196 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +70 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +44 -2233
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-behavior.ts +75 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-component.ts +202 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-edit.ts +97 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-editor.ts +160 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-frame.ts +72 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-modes.ts +161 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-selectors.ts +203 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-selectors.ts +234 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-state.ts +103 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-types.ts +29 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +4 -1328
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-clarify.ts +117 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +35 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +194 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +183 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +185 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +229 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +194 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +94 -1043
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +135 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +107 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt-types.ts +17 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +454 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +219 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +77 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +34 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +56 -0
- package/dist/builtin/subagents/src/runs/foreground/execution.ts +6 -1082
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +207 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +140 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +266 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +270 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +157 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +375 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +463 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +17 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +320 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +207 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +121 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +113 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +150 -2522
- package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +0 -16
- package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +167 -0
- package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +219 -0
- package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +121 -0
- package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +289 -0
- package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +201 -0
- package/dist/builtin/subagents/src/runs/shared/nested-events.ts +50 -935
- package/dist/builtin/subagents/src/runs/shared/worktree.ts +0 -78
- package/dist/builtin/subagents/src/shared/types-async.ts +265 -0
- package/dist/builtin/subagents/src/shared/types-config.ts +125 -0
- package/dist/builtin/subagents/src/shared/types-depth.ts +121 -0
- package/dist/builtin/subagents/src/shared/types-output.ts +63 -0
- package/dist/builtin/subagents/src/shared/types-results.ts +318 -0
- package/dist/builtin/subagents/src/shared/types-runtime.ts +136 -0
- package/dist/builtin/subagents/src/shared/types.ts +10 -975
- package/dist/builtin/subagents/src/slash/slash-commands.ts +0 -12
- package/dist/builtin/subagents/src/tui/render-chain-graph.ts +247 -0
- package/dist/builtin/subagents/src/tui/render-event-formatting.ts +259 -0
- package/dist/builtin/subagents/src/tui/render-layout.ts +120 -0
- package/dist/builtin/subagents/src/tui/render-result-animation.ts +56 -0
- package/dist/builtin/subagents/src/tui/render-result-compact.ts +154 -0
- package/dist/builtin/subagents/src/tui/render-result.ts +390 -0
- package/dist/builtin/subagents/src/tui/render-stable-output.ts +83 -0
- package/dist/builtin/subagents/src/tui/render-status-progress.ts +133 -0
- package/dist/builtin/subagents/src/tui/render-widget-graph.ts +166 -0
- package/dist/builtin/subagents/src/tui/render-widget.ts +273 -0
- package/dist/builtin/subagents/src/tui/render.ts +14 -1801
- package/dist/builtin/web-access/CHANGELOG.md +3 -0
- package/dist/builtin/web-access/content-tools.ts +348 -0
- package/dist/builtin/web-access/curator-page-assets/script-1.ts +400 -0
- package/dist/builtin/web-access/curator-page-assets/script-2.ts +400 -0
- package/dist/builtin/web-access/curator-page-assets/script-3.ts +400 -0
- package/dist/builtin/web-access/curator-page-assets/script-4.ts +400 -0
- package/dist/builtin/web-access/curator-page-assets/script-5.ts +398 -0
- package/dist/builtin/web-access/curator-page-assets/styles-1.ts +394 -0
- package/dist/builtin/web-access/curator-page-assets/styles-2.ts +394 -0
- package/dist/builtin/web-access/curator-page-assets/styles-3.ts +393 -0
- package/dist/builtin/web-access/curator-page.ts +17 -3180
- package/dist/builtin/web-access/curator-server-helpers.ts +115 -0
- package/dist/builtin/web-access/curator-server.ts +2 -113
- package/dist/builtin/web-access/exa-mcp.ts +218 -0
- package/dist/builtin/web-access/exa.ts +2 -207
- package/dist/builtin/web-access/extract-frames.ts +228 -0
- package/dist/builtin/web-access/extract.ts +13 -214
- package/dist/builtin/web-access/github-config.ts +156 -0
- package/dist/builtin/web-access/github-extract.ts +3 -154
- package/dist/builtin/web-access/index-heavy.ts +8 -1904
- package/dist/builtin/web-access/package.json +2 -1
- package/dist/builtin/web-access/web-search-activity.ts +102 -0
- package/dist/builtin/web-access/web-search-browser.ts +116 -0
- package/dist/builtin/web-access/web-search-command.ts +242 -0
- package/dist/builtin/web-access/web-search-config.ts +163 -0
- package/dist/builtin/web-access/web-search-curator.ts +214 -0
- package/dist/builtin/web-access/web-search-features.ts +165 -0
- package/dist/builtin/web-access/web-search-formatting.ts +117 -0
- package/dist/builtin/web-access/web-search-return.ts +136 -0
- package/dist/builtin/web-access/web-search-summary.ts +170 -0
- package/dist/builtin/web-access/web-search-tool.ts +290 -0
- package/dist/builtin/web-access/web-search-types.ts +50 -0
- package/dist/builtin/workflows/CHANGELOG.md +8 -1
- package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +492 -0
- package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +346 -0
- package/dist/builtin/workflows/builtin/deep-research-codebase.ts +6 -822
- package/dist/builtin/workflows/builtin/goal-artifacts.ts +43 -0
- package/dist/builtin/workflows/builtin/goal-ledger.ts +54 -0
- package/dist/builtin/workflows/builtin/goal-prompts.ts +360 -0
- package/dist/builtin/workflows/builtin/goal-reducer.ts +141 -0
- package/dist/builtin/workflows/builtin/goal-reports.ts +56 -0
- package/dist/builtin/workflows/builtin/goal-review.ts +84 -0
- package/dist/builtin/workflows/builtin/goal-runner.ts +343 -0
- package/dist/builtin/workflows/builtin/goal-schemas.ts +60 -0
- package/dist/builtin/workflows/builtin/goal-types.ts +132 -0
- package/dist/builtin/workflows/builtin/goal.ts +4 -1160
- package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +432 -0
- package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +477 -0
- package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +312 -0
- package/dist/builtin/workflows/builtin/open-claude-design.ts +7 -1083
- package/dist/builtin/workflows/builtin/ralph-core.ts +408 -0
- package/dist/builtin/workflows/builtin/ralph-models.ts +123 -0
- package/dist/builtin/workflows/builtin/ralph-review-gate.ts +89 -0
- package/dist/builtin/workflows/builtin/ralph-runner.ts +499 -0
- package/dist/builtin/workflows/builtin/ralph.ts +7 -1015
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +2 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +2 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +8 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +13 -15
- package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +2 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +9 -0
- package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +186 -0
- package/dist/builtin/workflows/src/extension/config-file-loader.ts +152 -0
- package/dist/builtin/workflows/src/extension/config-loader.ts +2 -167
- package/dist/builtin/workflows/src/extension/discovery-loaders.ts +115 -0
- package/dist/builtin/workflows/src/extension/discovery.ts +3 -117
- package/dist/builtin/workflows/src/extension/dispatcher.ts +3 -0
- package/dist/builtin/workflows/src/extension/extension-factory.ts +120 -0
- package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +109 -0
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +270 -0
- package/dist/builtin/workflows/src/extension/index.ts +42 -4151
- package/dist/builtin/workflows/src/extension/public-types.ts +295 -0
- package/dist/builtin/workflows/src/extension/render-component.ts +14 -0
- package/dist/builtin/workflows/src/extension/runtime-direct.ts +96 -0
- package/dist/builtin/workflows/src/extension/runtime.ts +8 -92
- package/dist/builtin/workflows/src/extension/ui-surface.ts +286 -0
- package/dist/builtin/workflows/src/extension/wiring.ts +6 -475
- package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +111 -0
- package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +213 -0
- package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +81 -0
- package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +181 -0
- package/dist/builtin/workflows/src/extension/workflow-policy.ts +15 -0
- package/dist/builtin/workflows/src/extension/workflow-ports.ts +41 -0
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +23 -0
- package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +286 -0
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +1 -1
- package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +264 -0
- package/dist/builtin/workflows/src/extension/workflow-targets.ts +181 -0
- package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +175 -0
- package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +205 -0
- package/dist/builtin/workflows/src/extension/workflow-tool-helpers.ts +66 -0
- package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +164 -0
- package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +54 -0
- package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +164 -0
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +102 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +431 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +232 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +74 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-child-workflow.ts +158 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +167 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +450 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-direct.ts +233 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +195 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +368 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +83 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +441 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +160 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +274 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +122 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-run.ts +359 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +204 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +197 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +120 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +126 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +351 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +134 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +54 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +132 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +293 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +109 -0
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +19 -5258
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +219 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +500 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +129 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +53 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +146 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +55 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +82 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +141 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +13 -1342
- package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +453 -0
- package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +442 -0
- package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +2 -836
- package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +165 -0
- package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +220 -0
- package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +335 -0
- package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +92 -0
- package/dist/builtin/workflows/src/runs/shared/worktree.ts +18 -791
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +365 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +425 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +236 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +354 -0
- package/dist/builtin/workflows/src/shared/authoring-contract.d.ts +5 -598
- package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +428 -0
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +11 -431
- package/dist/builtin/workflows/src/shared/store-factory.ts +16 -0
- package/dist/builtin/workflows/src/shared/store-internal.ts +219 -0
- package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +219 -0
- package/dist/builtin/workflows/src/shared/store-public-types.ts +215 -0
- package/dist/builtin/workflows/src/shared/store-run-methods.ts +223 -0
- package/dist/builtin/workflows/src/shared/store-stage-methods.ts +305 -0
- package/dist/builtin/workflows/src/shared/store.ts +11 -1138
- package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +266 -0
- package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +75 -0
- package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +477 -0
- package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +248 -0
- package/dist/builtin/workflows/src/shared/workflow-failures.ts +13 -1001
- package/dist/builtin/workflows/src/tui/chat-surface.ts +0 -66
- package/dist/builtin/workflows/src/tui/graph-view-constants.ts +45 -0
- package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +161 -0
- package/dist/builtin/workflows/src/tui/graph-view-input.ts +333 -0
- package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +336 -0
- package/dist/builtin/workflows/src/tui/graph-view-render.ts +194 -0
- package/dist/builtin/workflows/src/tui/graph-view-state.ts +306 -0
- package/dist/builtin/workflows/src/tui/graph-view-types.ts +70 -0
- package/dist/builtin/workflows/src/tui/graph-view.ts +4 -1386
- package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +121 -0
- package/dist/builtin/workflows/src/tui/inline-form-editor.ts +11 -223
- package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +151 -0
- package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +305 -0
- package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +300 -0
- package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +190 -0
- package/dist/builtin/workflows/src/tui/inputs-picker.ts +19 -997
- package/dist/builtin/workflows/src/tui/prompt-card-input.ts +226 -0
- package/dist/builtin/workflows/src/tui/prompt-card-render.ts +373 -0
- package/dist/builtin/workflows/src/tui/prompt-card-select.ts +116 -0
- package/dist/builtin/workflows/src/tui/prompt-card-state.ts +61 -0
- package/dist/builtin/workflows/src/tui/prompt-card-text.ts +129 -0
- package/dist/builtin/workflows/src/tui/prompt-card.ts +8 -910
- package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +315 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +127 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +187 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +222 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +152 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +464 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +242 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +151 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +141 -1777
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +85 -0
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +1 -129
- package/dist/config-self-update.d.ts +21 -0
- package/dist/config-self-update.d.ts.map +1 -0
- package/dist/config-self-update.js +265 -0
- package/dist/config-self-update.js.map +1 -0
- package/dist/config.d.ts +3 -12
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +15 -252
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-accessors.d.ts +3 -0
- package/dist/core/agent-session-accessors.d.ts.map +1 -0
- package/dist/core/agent-session-accessors.js +36 -0
- package/dist/core/agent-session-accessors.js.map +1 -0
- package/dist/core/agent-session-auto-compaction.d.ts +32 -0
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -0
- package/dist/core/agent-session-auto-compaction.js +214 -0
- package/dist/core/agent-session-auto-compaction.js.map +1 -0
- package/dist/core/agent-session-bash.d.ts +30 -0
- package/dist/core/agent-session-bash.d.ts.map +1 -0
- package/dist/core/agent-session-bash.js +84 -0
- package/dist/core/agent-session-bash.js.map +1 -0
- package/dist/core/agent-session-compaction.d.ts +44 -0
- package/dist/core/agent-session-compaction.d.ts.map +1 -0
- package/dist/core/agent-session-compaction.js +282 -0
- package/dist/core/agent-session-compaction.js.map +1 -0
- package/dist/core/agent-session-events.d.ts +65 -0
- package/dist/core/agent-session-events.d.ts.map +1 -0
- package/dist/core/agent-session-events.js +373 -0
- package/dist/core/agent-session-events.js.map +1 -0
- package/dist/core/agent-session-export.d.ts +42 -0
- package/dist/core/agent-session-export.d.ts.map +1 -0
- package/dist/core/agent-session-export.js +199 -0
- package/dist/core/agent-session-export.js.map +1 -0
- package/dist/core/agent-session-extension-bindings.d.ts +37 -0
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -0
- package/dist/core/agent-session-extension-bindings.js +231 -0
- package/dist/core/agent-session-extension-bindings.js.map +1 -0
- package/dist/core/agent-session-message-queue.d.ts +85 -0
- package/dist/core/agent-session-message-queue.d.ts.map +1 -0
- package/dist/core/agent-session-message-queue.js +264 -0
- package/dist/core/agent-session-message-queue.js.map +1 -0
- package/dist/core/agent-session-methods.d.ts +302 -0
- package/dist/core/agent-session-methods.d.ts.map +1 -0
- package/dist/core/agent-session-methods.js +2 -0
- package/dist/core/agent-session-methods.js.map +1 -0
- package/dist/core/agent-session-models.d.ts +111 -0
- package/dist/core/agent-session-models.d.ts.map +1 -0
- package/dist/core/agent-session-models.js +368 -0
- package/dist/core/agent-session-models.js.map +1 -0
- package/dist/core/agent-session-prompt.d.ts +61 -0
- package/dist/core/agent-session-prompt.d.ts.map +1 -0
- package/dist/core/agent-session-prompt.js +330 -0
- package/dist/core/agent-session-prompt.js.map +1 -0
- package/dist/core/agent-session-retry.d.ts +62 -0
- package/dist/core/agent-session-retry.d.ts.map +1 -0
- package/dist/core/agent-session-retry.js +202 -0
- package/dist/core/agent-session-retry.js.map +1 -0
- package/dist/core/agent-session-skill-block.d.ts +13 -0
- package/dist/core/agent-session-skill-block.d.ts.map +1 -0
- package/dist/core/agent-session-skill-block.js +37 -0
- package/dist/core/agent-session-skill-block.js.map +1 -0
- package/dist/core/agent-session-state.d.ts +48 -0
- package/dist/core/agent-session-state.d.ts.map +1 -0
- package/dist/core/agent-session-state.js +129 -0
- package/dist/core/agent-session-state.js.map +1 -0
- package/dist/core/agent-session-tool-hooks.d.ts +7 -0
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -0
- package/dist/core/agent-session-tool-hooks.js +72 -0
- package/dist/core/agent-session-tool-hooks.js.map +1 -0
- package/dist/core/agent-session-tool-registry.d.ts +15 -0
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -0
- package/dist/core/agent-session-tool-registry.js +151 -0
- package/dist/core/agent-session-tool-registry.js.map +1 -0
- package/dist/core/agent-session-tree.d.ts +46 -0
- package/dist/core/agent-session-tree.d.ts.map +1 -0
- package/dist/core/agent-session-tree.js +217 -0
- package/dist/core/agent-session-tree.js.map +1 -0
- package/dist/core/agent-session-types.d.ts +159 -0
- package/dist/core/agent-session-types.d.ts.map +1 -0
- package/dist/core/agent-session-types.js +41 -0
- package/dist/core/agent-session-types.js.map +1 -0
- package/dist/core/agent-session.d.ts +68 -688
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +26 -3152
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage-backends.d.ts +49 -0
- package/dist/core/auth-storage-backends.d.ts.map +1 -0
- package/dist/core/auth-storage-backends.js +185 -0
- package/dist/core/auth-storage-backends.js.map +1 -0
- package/dist/core/auth-storage.d.ts +2 -49
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +3 -183
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/compaction/context-compaction-metrics.d.ts +16 -0
- package/dist/core/compaction/context-compaction-metrics.d.ts.map +1 -0
- package/dist/core/compaction/context-compaction-metrics.js +58 -0
- package/dist/core/compaction/context-compaction-metrics.js.map +1 -0
- package/dist/core/compaction/context-compaction-prompt.d.ts +9 -0
- package/dist/core/compaction/context-compaction-prompt.d.ts.map +1 -0
- package/dist/core/compaction/context-compaction-prompt.js +161 -0
- package/dist/core/compaction/context-compaction-prompt.js.map +1 -0
- package/dist/core/compaction/context-compaction-runner.d.ts +5 -0
- package/dist/core/compaction/context-compaction-runner.d.ts.map +1 -0
- package/dist/core/compaction/context-compaction-runner.js +181 -0
- package/dist/core/compaction/context-compaction-runner.js.map +1 -0
- package/dist/core/compaction/context-compaction-strategy.d.ts +5 -0
- package/dist/core/compaction/context-compaction-strategy.d.ts.map +1 -0
- package/dist/core/compaction/context-compaction-strategy.js +27 -0
- package/dist/core/compaction/context-compaction-strategy.js.map +1 -0
- package/dist/core/compaction/context-compaction-types.d.ts +73 -0
- package/dist/core/compaction/context-compaction-types.d.ts.map +1 -0
- package/dist/core/compaction/context-compaction-types.js +6 -0
- package/dist/core/compaction/context-compaction-types.js.map +1 -0
- package/dist/core/compaction/context-compaction.d.ts +9 -200
- package/dist/core/compaction/context-compaction.d.ts.map +1 -1
- package/dist/core/compaction/context-compaction.js +7 -1943
- package/dist/core/compaction/context-compaction.js.map +1 -1
- package/dist/core/compaction/context-deletion-application.d.ts +13 -0
- package/dist/core/compaction/context-deletion-application.d.ts.map +1 -0
- package/dist/core/compaction/context-deletion-application.js +259 -0
- package/dist/core/compaction/context-deletion-application.js.map +1 -0
- package/dist/core/compaction/context-deletion-store.d.ts +78 -0
- package/dist/core/compaction/context-deletion-store.d.ts.map +1 -0
- package/dist/core/compaction/context-deletion-store.js +162 -0
- package/dist/core/compaction/context-deletion-store.js.map +1 -0
- package/dist/core/compaction/context-deletion-targets.d.ts +40 -0
- package/dist/core/compaction/context-deletion-targets.d.ts.map +1 -0
- package/dist/core/compaction/context-deletion-targets.js +267 -0
- package/dist/core/compaction/context-deletion-targets.js.map +1 -0
- package/dist/core/compaction/context-deletion-tool-definitions.d.ts +187 -0
- package/dist/core/compaction/context-deletion-tool-definitions.d.ts.map +1 -0
- package/dist/core/compaction/context-deletion-tool-definitions.js +98 -0
- package/dist/core/compaction/context-deletion-tool-definitions.js.map +1 -0
- package/dist/core/compaction/context-deletion-tool-helpers.d.ts +19 -0
- package/dist/core/compaction/context-deletion-tool-helpers.d.ts.map +1 -0
- package/dist/core/compaction/context-deletion-tool-helpers.js +137 -0
- package/dist/core/compaction/context-deletion-tool-helpers.js.map +1 -0
- package/dist/core/compaction/context-deletion-tools.d.ts +4 -0
- package/dist/core/compaction/context-deletion-tools.d.ts.map +1 -0
- package/dist/core/compaction/context-deletion-tools.js +395 -0
- package/dist/core/compaction/context-deletion-tools.js.map +1 -0
- package/dist/core/compaction/context-transcript-analysis.d.ts +9 -0
- package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -0
- package/dist/core/compaction/context-transcript-analysis.js +234 -0
- package/dist/core/compaction/context-transcript-analysis.js.map +1 -0
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +2 -1
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template-js/data-tree.js +287 -0
- package/dist/core/export-html/template-js/entries-navigation.js +424 -0
- package/dist/core/export-html/template-js/initialization.js +312 -0
- package/dist/core/export-html/template-js/message-tools.js +415 -0
- package/dist/core/export-html/template-js/tree-filter-render.js +421 -0
- package/dist/core/export-html/template-script.d.ts +3 -0
- package/dist/core/export-html/template-script.d.ts.map +1 -0
- package/dist/core/export-html/template-script.js +13 -0
- package/dist/core/export-html/template-script.js.map +1 -0
- package/dist/core/export-html/template.js +3 -1
- package/dist/core/extensions/agent-events.d.ts +159 -0
- package/dist/core/extensions/agent-events.d.ts.map +1 -0
- package/dist/core/extensions/agent-events.js +2 -0
- package/dist/core/extensions/agent-events.js.map +1 -0
- package/dist/core/extensions/api-types.d.ts +189 -0
- package/dist/core/extensions/api-types.d.ts.map +1 -0
- package/dist/core/extensions/api-types.js +2 -0
- package/dist/core/extensions/api-types.js.map +1 -0
- package/dist/core/extensions/command-types.d.ts +14 -0
- package/dist/core/extensions/command-types.d.ts.map +1 -0
- package/dist/core/extensions/command-types.js +2 -0
- package/dist/core/extensions/command-types.js.map +1 -0
- package/dist/core/extensions/context-types.d.ts +130 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -0
- package/dist/core/extensions/context-types.js +2 -0
- package/dist/core/extensions/context-types.js.map +1 -0
- package/dist/core/extensions/event-results.d.ts +61 -0
- package/dist/core/extensions/event-results.d.ts.map +1 -0
- package/dist/core/extensions/event-results.js +2 -0
- package/dist/core/extensions/event-results.js.map +1 -0
- package/dist/core/extensions/event-types.d.ts +6 -0
- package/dist/core/extensions/event-types.d.ts.map +1 -0
- package/dist/core/extensions/event-types.js +2 -0
- package/dist/core/extensions/event-types.js.map +1 -0
- package/dist/core/extensions/loader-api.d.ts +10 -0
- package/dist/core/extensions/loader-api.d.ts.map +1 -0
- package/dist/core/extensions/loader-api.js +143 -0
- package/dist/core/extensions/loader-api.js.map +1 -0
- package/dist/core/extensions/loader-core.d.ts +12 -0
- package/dist/core/extensions/loader-core.d.ts.map +1 -0
- package/dist/core/extensions/loader-core.js +91 -0
- package/dist/core/extensions/loader-core.js.map +1 -0
- package/dist/core/extensions/loader-discovery.d.ts +7 -0
- package/dist/core/extensions/loader-discovery.d.ts.map +1 -0
- package/dist/core/extensions/loader-discovery.js +139 -0
- package/dist/core/extensions/loader-discovery.js.map +1 -0
- package/dist/core/extensions/loader-resources.d.ts +11 -0
- package/dist/core/extensions/loader-resources.d.ts.map +1 -0
- package/dist/core/extensions/loader-resources.js +10 -0
- package/dist/core/extensions/loader-resources.js.map +1 -0
- package/dist/core/extensions/loader-runtime.d.ts +7 -0
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -0
- package/dist/core/extensions/loader-runtime.js +51 -0
- package/dist/core/extensions/loader-runtime.js.map +1 -0
- package/dist/core/extensions/loader-virtual-modules.d.ts +3 -0
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -0
- package/dist/core/extensions/loader-virtual-modules.js +92 -0
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +4 -28
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +3 -542
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/message-types.d.ts +34 -0
- package/dist/core/extensions/message-types.d.ts.map +1 -0
- package/dist/core/extensions/message-types.js +2 -0
- package/dist/core/extensions/message-types.js.map +1 -0
- package/dist/core/extensions/provider-types.d.ts +71 -0
- package/dist/core/extensions/provider-types.d.ts.map +1 -0
- package/dist/core/extensions/provider-types.js +2 -0
- package/dist/core/extensions/provider-types.js.map +1 -0
- package/dist/core/extensions/runner-context.d.ts +42 -0
- package/dist/core/extensions/runner-context.d.ts.map +1 -0
- package/dist/core/extensions/runner-context.js +112 -0
- package/dist/core/extensions/runner-context.js.map +1 -0
- package/dist/core/extensions/runner-events.d.ts +47 -0
- package/dist/core/extensions/runner-events.d.ts.map +1 -0
- package/dist/core/extensions/runner-events.js +280 -0
- package/dist/core/extensions/runner-events.js.map +1 -0
- package/dist/core/extensions/runner-handlers.d.ts +32 -0
- package/dist/core/extensions/runner-handlers.d.ts.map +1 -0
- package/dist/core/extensions/runner-handlers.js +2 -0
- package/dist/core/extensions/runner-handlers.js.map +1 -0
- package/dist/core/extensions/runner-project-trust.d.ts +6 -0
- package/dist/core/extensions/runner-project-trust.d.ts.map +1 -0
- package/dist/core/extensions/runner-project-trust.js +27 -0
- package/dist/core/extensions/runner-project-trust.js.map +1 -0
- package/dist/core/extensions/runner-registries.d.ts +8 -0
- package/dist/core/extensions/runner-registries.d.ts.map +1 -0
- package/dist/core/extensions/runner-registries.js +76 -0
- package/dist/core/extensions/runner-registries.js.map +1 -0
- package/dist/core/extensions/runner-shortcuts.d.ts +10 -0
- package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -0
- package/dist/core/extensions/runner-shortcuts.js +71 -0
- package/dist/core/extensions/runner-shortcuts.js.map +1 -0
- package/dist/core/extensions/runner-ui.d.ts +3 -0
- package/dist/core/extensions/runner-ui.d.ts.map +1 -0
- package/dist/core/extensions/runner-ui.js +50 -0
- package/dist/core/extensions/runner-ui.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +7 -74
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +67 -673
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +179 -0
- package/dist/core/extensions/runtime-types.d.ts.map +1 -0
- package/dist/core/extensions/runtime-types.js +2 -0
- package/dist/core/extensions/runtime-types.js.map +1 -0
- package/dist/core/extensions/session-events.d.ts +89 -0
- package/dist/core/extensions/session-events.d.ts.map +1 -0
- package/dist/core/extensions/session-events.js +2 -0
- package/dist/core/extensions/session-events.js.map +1 -0
- package/dist/core/extensions/tool-events.d.ts +127 -0
- package/dist/core/extensions/tool-events.d.ts.map +1 -0
- package/dist/core/extensions/tool-events.js +26 -0
- package/dist/core/extensions/tool-events.js.map +1 -0
- package/dist/core/extensions/tool-types.d.ts +100 -0
- package/dist/core/extensions/tool-types.d.ts.map +1 -0
- package/dist/core/extensions/tool-types.js +11 -0
- package/dist/core/extensions/tool-types.js.map +1 -0
- package/dist/core/extensions/types.d.ts +20 -1288
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js +4 -34
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/ui-types.d.ts +200 -0
- package/dist/core/extensions/ui-types.d.ts.map +1 -0
- package/dist/core/extensions/ui-types.js +2 -0
- package/dist/core/extensions/ui-types.js.map +1 -0
- package/dist/core/model-registry-auth.d.ts +7 -0
- package/dist/core/model-registry-auth.d.ts.map +1 -0
- package/dist/core/model-registry-auth.js +64 -0
- package/dist/core/model-registry-auth.js.map +1 -0
- package/dist/core/model-registry-builtins.d.ts +9 -0
- package/dist/core/model-registry-builtins.d.ts.map +1 -0
- package/dist/core/model-registry-builtins.js +120 -0
- package/dist/core/model-registry-builtins.js.map +1 -0
- package/dist/core/model-registry-custom-loader.d.ts +3 -0
- package/dist/core/model-registry-custom-loader.d.ts.map +1 -0
- package/dist/core/model-registry-custom-loader.js +213 -0
- package/dist/core/model-registry-custom-loader.js.map +1 -0
- package/dist/core/model-registry-dynamic.d.ts +6 -0
- package/dist/core/model-registry-dynamic.d.ts.map +1 -0
- package/dist/core/model-registry-dynamic.js +155 -0
- package/dist/core/model-registry-dynamic.js.map +1 -0
- package/dist/core/model-registry-loader.d.ts +4 -0
- package/dist/core/model-registry-loader.d.ts.map +1 -0
- package/dist/core/model-registry-loader.js +20 -0
- package/dist/core/model-registry-loader.js.map +1 -0
- package/dist/core/model-registry-schemas.d.ts +1084 -0
- package/dist/core/model-registry-schemas.d.ts.map +1 -0
- package/dist/core/model-registry-schemas.js +161 -0
- package/dist/core/model-registry-schemas.js.map +1 -0
- package/dist/core/model-registry-types.d.ts +74 -0
- package/dist/core/model-registry-types.d.ts.map +1 -0
- package/dist/core/model-registry-types.js +2 -0
- package/dist/core/model-registry-types.js.map +1 -0
- package/dist/core/model-registry.d.ts +3 -76
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +24 -733
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-cli.d.ts +19 -0
- package/dist/core/model-resolver-cli.d.ts.map +1 -0
- package/dist/core/model-resolver-cli.js +118 -0
- package/dist/core/model-resolver-cli.js.map +1 -0
- package/dist/core/model-resolver-defaults.d.ts +5 -0
- package/dist/core/model-resolver-defaults.d.ts.map +1 -0
- package/dist/core/model-resolver-defaults.js +47 -0
- package/dist/core/model-resolver-defaults.js.map +1 -0
- package/dist/core/model-resolver-initial.d.ts +31 -0
- package/dist/core/model-resolver-initial.d.ts.map +1 -0
- package/dist/core/model-resolver-initial.js +116 -0
- package/dist/core/model-resolver-initial.js.map +1 -0
- package/dist/core/model-resolver-patterns.d.ts +26 -0
- package/dist/core/model-resolver-patterns.d.ts.map +1 -0
- package/dist/core/model-resolver-patterns.js +139 -0
- package/dist/core/model-resolver-patterns.js.map +1 -0
- package/dist/core/model-resolver-scope.d.ts +15 -0
- package/dist/core/model-resolver-scope.d.ts.map +1 -0
- package/dist/core/model-resolver-scope.js +66 -0
- package/dist/core/model-resolver-scope.js.map +1 -0
- package/dist/core/model-resolver-types.d.ts +29 -0
- package/dist/core/model-resolver-types.d.ts.map +1 -0
- package/dist/core/model-resolver-types.js +2 -0
- package/dist/core/model-resolver-types.js.map +1 -0
- package/dist/core/model-resolver.d.ts +6 -107
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +5 -549
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/package-manager-auto-resources.d.ts +5 -0
- package/dist/core/package-manager-auto-resources.d.ts.map +1 -0
- package/dist/core/package-manager-auto-resources.js +109 -0
- package/dist/core/package-manager-auto-resources.js.map +1 -0
- package/dist/core/package-manager-command.d.ts +11 -0
- package/dist/core/package-manager-command.d.ts.map +1 -0
- package/dist/core/package-manager-command.js +102 -0
- package/dist/core/package-manager-command.js.map +1 -0
- package/dist/core/package-manager-constants.d.ts +4 -0
- package/dist/core/package-manager-constants.d.ts.map +1 -0
- package/dist/core/package-manager-constants.js +4 -0
- package/dist/core/package-manager-constants.js.map +1 -0
- package/dist/core/package-manager-env.d.ts +4 -0
- package/dist/core/package-manager-env.d.ts.map +1 -0
- package/dist/core/package-manager-env.js +40 -0
- package/dist/core/package-manager-env.js.map +1 -0
- package/dist/core/package-manager-git.d.ts +10 -0
- package/dist/core/package-manager-git.d.ts.map +1 -0
- package/dist/core/package-manager-git.js +271 -0
- package/dist/core/package-manager-git.js.map +1 -0
- package/dist/core/package-manager-manifest.d.ts +7 -0
- package/dist/core/package-manager-manifest.d.ts.map +1 -0
- package/dist/core/package-manager-manifest.js +45 -0
- package/dist/core/package-manager-manifest.js.map +1 -0
- package/dist/core/package-manager-npm.d.ts +25 -0
- package/dist/core/package-manager-npm.d.ts.map +1 -0
- package/dist/core/package-manager-npm.js +252 -0
- package/dist/core/package-manager-npm.js.map +1 -0
- package/dist/core/package-manager-operations.d.ts +11 -0
- package/dist/core/package-manager-operations.d.ts.map +1 -0
- package/dist/core/package-manager-operations.js +196 -0
- package/dist/core/package-manager-operations.js.map +1 -0
- package/dist/core/package-manager-paths.d.ts +14 -0
- package/dist/core/package-manager-paths.d.ts.map +1 -0
- package/dist/core/package-manager-paths.js +61 -0
- package/dist/core/package-manager-paths.js.map +1 -0
- package/dist/core/package-manager-progress.d.ts +4 -0
- package/dist/core/package-manager-progress.d.ts.map +1 -0
- package/dist/core/package-manager-progress.js +16 -0
- package/dist/core/package-manager-progress.js.map +1 -0
- package/dist/core/package-manager-resolver.d.ts +5 -0
- package/dist/core/package-manager-resolver.d.ts.map +1 -0
- package/dist/core/package-manager-resolver.js +149 -0
- package/dist/core/package-manager-resolver.js.map +1 -0
- package/dist/core/package-manager-resource-accumulator.d.ts +6 -0
- package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -0
- package/dist/core/package-manager-resource-accumulator.js +67 -0
- package/dist/core/package-manager-resource-accumulator.js.map +1 -0
- package/dist/core/package-manager-resource-collector.d.ts +5 -0
- package/dist/core/package-manager-resource-collector.d.ts.map +1 -0
- package/dist/core/package-manager-resource-collector.js +148 -0
- package/dist/core/package-manager-resource-collector.js.map +1 -0
- package/dist/core/package-manager-resource-files.d.ts +14 -0
- package/dist/core/package-manager-resource-files.d.ts.map +1 -0
- package/dist/core/package-manager-resource-files.js +265 -0
- package/dist/core/package-manager-resource-files.js.map +1 -0
- package/dist/core/package-manager-resource-patterns.d.ts +12 -0
- package/dist/core/package-manager-resource-patterns.d.ts.map +1 -0
- package/dist/core/package-manager-resource-patterns.js +136 -0
- package/dist/core/package-manager-resource-patterns.js.map +1 -0
- package/dist/core/package-manager-settings.d.ts +10 -0
- package/dist/core/package-manager-settings.d.ts.map +1 -0
- package/dist/core/package-manager-settings.js +91 -0
- package/dist/core/package-manager-settings.js.map +1 -0
- package/dist/core/package-manager-source.d.ts +21 -0
- package/dist/core/package-manager-source.d.ts.map +1 -0
- package/dist/core/package-manager-source.js +146 -0
- package/dist/core/package-manager-source.js.map +1 -0
- package/dist/core/package-manager-types.d.ts +169 -0
- package/dist/core/package-manager-types.d.ts.map +1 -0
- package/dist/core/package-manager-types.js +9 -0
- package/dist/core/package-manager-types.js.map +1 -0
- package/dist/core/package-manager.d.ts +9 -174
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +56 -2100
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/resource-loader-assets.d.ts +6 -0
- package/dist/core/resource-loader-assets.d.ts.map +1 -0
- package/dist/core/resource-loader-assets.js +209 -0
- package/dist/core/resource-loader-assets.js.map +1 -0
- package/dist/core/resource-loader-context-files.d.ts +10 -0
- package/dist/core/resource-loader-context-files.d.ts.map +1 -0
- package/dist/core/resource-loader-context-files.js +74 -0
- package/dist/core/resource-loader-context-files.js.map +1 -0
- package/dist/core/resource-loader-core.d.ts +82 -0
- package/dist/core/resource-loader-core.d.ts.map +1 -0
- package/dist/core/resource-loader-core.js +168 -0
- package/dist/core/resource-loader-core.js.map +1 -0
- package/dist/core/resource-loader-discovery.d.ts +4 -0
- package/dist/core/resource-loader-discovery.d.ts.map +1 -0
- package/dist/core/resource-loader-discovery.js +28 -0
- package/dist/core/resource-loader-discovery.js.map +1 -0
- package/dist/core/resource-loader-extensions.d.ts +13 -0
- package/dist/core/resource-loader-extensions.d.ts.map +1 -0
- package/dist/core/resource-loader-extensions.js +110 -0
- package/dist/core/resource-loader-extensions.js.map +1 -0
- package/dist/core/resource-loader-helpers.d.ts +4 -0
- package/dist/core/resource-loader-helpers.d.ts.map +1 -0
- package/dist/core/resource-loader-helpers.js +23 -0
- package/dist/core/resource-loader-helpers.js.map +1 -0
- package/dist/core/resource-loader-internals.d.ts +96 -0
- package/dist/core/resource-loader-internals.d.ts.map +1 -0
- package/dist/core/resource-loader-internals.js +4 -0
- package/dist/core/resource-loader-internals.js.map +1 -0
- package/dist/core/resource-loader-package-resources.d.ts +31 -0
- package/dist/core/resource-loader-package-resources.d.ts.map +1 -0
- package/dist/core/resource-loader-package-resources.js +112 -0
- package/dist/core/resource-loader-package-resources.js.map +1 -0
- package/dist/core/resource-loader-paths.d.ts +4 -0
- package/dist/core/resource-loader-paths.d.ts.map +1 -0
- package/dist/core/resource-loader-paths.js +22 -0
- package/dist/core/resource-loader-paths.js.map +1 -0
- package/dist/core/resource-loader-reload.d.ts +6 -0
- package/dist/core/resource-loader-reload.d.ts.map +1 -0
- package/dist/core/resource-loader-reload.js +226 -0
- package/dist/core/resource-loader-reload.js.map +1 -0
- package/dist/core/resource-loader-source-info.d.ts +9 -0
- package/dist/core/resource-loader-source-info.d.ts.map +1 -0
- package/dist/core/resource-loader-source-info.js +101 -0
- package/dist/core/resource-loader-source-info.js.map +1 -0
- package/dist/core/resource-loader-types.d.ts +130 -0
- package/dist/core/resource-loader-types.d.ts.map +1 -0
- package/dist/core/resource-loader-types.js +2 -0
- package/dist/core/resource-loader-types.js.map +1 -0
- package/dist/core/resource-loader.d.ts +3 -242
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +2 -976
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk-exports.d.ts +7 -0
- package/dist/core/sdk-exports.d.ts.map +1 -0
- package/dist/core/sdk-exports.js +5 -0
- package/dist/core/sdk-exports.js.map +1 -0
- package/dist/core/sdk-types.d.ts +86 -0
- package/dist/core/sdk-types.d.ts.map +1 -0
- package/dist/core/sdk-types.js +2 -0
- package/dist/core/sdk-types.js.map +1 -0
- package/dist/core/sdk.d.ts +3 -91
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +2 -6
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-archive.d.ts +27 -0
- package/dist/core/session-manager-archive.d.ts.map +1 -0
- package/dist/core/session-manager-archive.js +114 -0
- package/dist/core/session-manager-archive.js.map +1 -0
- package/dist/core/session-manager-core.d.ts +104 -0
- package/dist/core/session-manager-core.d.ts.map +1 -0
- package/dist/core/session-manager-core.js +346 -0
- package/dist/core/session-manager-core.js.map +1 -0
- package/dist/core/session-manager-entries.d.ts +38 -0
- package/dist/core/session-manager-entries.d.ts.map +1 -0
- package/dist/core/session-manager-entries.js +124 -0
- package/dist/core/session-manager-entries.js.map +1 -0
- package/dist/core/session-manager-history.d.ts +38 -0
- package/dist/core/session-manager-history.d.ts.map +1 -0
- package/dist/core/session-manager-history.js +378 -0
- package/dist/core/session-manager-history.js.map +1 -0
- package/dist/core/session-manager-list.d.ts +5 -0
- package/dist/core/session-manager-list.d.ts.map +1 -0
- package/dist/core/session-manager-list.js +196 -0
- package/dist/core/session-manager-list.js.map +1 -0
- package/dist/core/session-manager-migrations.d.ts +11 -0
- package/dist/core/session-manager-migrations.d.ts.map +1 -0
- package/dist/core/session-manager-migrations.js +80 -0
- package/dist/core/session-manager-migrations.js.map +1 -0
- package/dist/core/session-manager-paths.d.ts +7 -0
- package/dist/core/session-manager-paths.d.ts.map +1 -0
- package/dist/core/session-manager-paths.js +22 -0
- package/dist/core/session-manager-paths.js.map +1 -0
- package/dist/core/session-manager-storage.d.ts +15 -0
- package/dist/core/session-manager-storage.d.ts.map +1 -0
- package/dist/core/session-manager-storage.js +127 -0
- package/dist/core/session-manager-storage.js.map +1 -0
- package/dist/core/session-manager-types.d.ts +172 -0
- package/dist/core/session-manager-types.d.ts.map +1 -0
- package/dist/core/session-manager-types.js +2 -0
- package/dist/core/session-manager-types.js.map +1 -0
- package/dist/core/session-manager-validation.d.ts +7 -0
- package/dist/core/session-manager-validation.d.ts.map +1 -0
- package/dist/core/session-manager-validation.js +34 -0
- package/dist/core/session-manager-validation.js.map +1 -0
- package/dist/core/session-manager.d.ts +8 -390
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +7 -1418
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +65 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -0
- package/dist/core/settings-manager-basic-accessors.js +253 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -0
- package/dist/core/settings-manager-core.d.ts +57 -0
- package/dist/core/settings-manager-core.d.ts.map +1 -0
- package/dist/core/settings-manager-core.js +387 -0
- package/dist/core/settings-manager-core.js.map +1 -0
- package/dist/core/settings-manager-internals.d.ts +13 -0
- package/dist/core/settings-manager-internals.d.ts.map +1 -0
- package/dist/core/settings-manager-internals.js +4 -0
- package/dist/core/settings-manager-internals.js.map +1 -0
- package/dist/core/settings-manager-resource-accessors.d.ts +43 -0
- package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -0
- package/dist/core/settings-manager-resource-accessors.js +172 -0
- package/dist/core/settings-manager-resource-accessors.js.map +1 -0
- package/dist/core/settings-manager-ui-accessors.d.ts +44 -0
- package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -0
- package/dist/core/settings-manager-ui-accessors.js +208 -0
- package/dist/core/settings-manager-ui-accessors.js.map +1 -0
- package/dist/core/settings-manager.d.ts +6 -321
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +5 -1060
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-merge.d.ts +4 -0
- package/dist/core/settings-merge.d.ts.map +1 -0
- package/dist/core/settings-merge.js +26 -0
- package/dist/core/settings-merge.js.map +1 -0
- package/dist/core/settings-storage.d.ts +20 -0
- package/dist/core/settings-storage.d.ts.map +1 -0
- package/dist/core/settings-storage.js +100 -0
- package/dist/core/settings-storage.js.map +1 -0
- package/dist/core/settings-types.d.ts +123 -0
- package/dist/core/settings-types.d.ts.map +1 -0
- package/dist/core/settings-types.js +2 -0
- package/dist/core/settings-types.js.map +1 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +7 -0
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash-policy-compile.d.ts +5 -0
- package/dist/core/tools/bash-policy-compile.d.ts.map +1 -0
- package/dist/core/tools/bash-policy-compile.js +241 -0
- package/dist/core/tools/bash-policy-compile.js.map +1 -0
- package/dist/core/tools/bash-policy-evaluate.d.ts +3 -0
- package/dist/core/tools/bash-policy-evaluate.d.ts.map +1 -0
- package/dist/core/tools/bash-policy-evaluate.js +92 -0
- package/dist/core/tools/bash-policy-evaluate.js.map +1 -0
- package/dist/core/tools/bash-policy-format.d.ts +5 -0
- package/dist/core/tools/bash-policy-format.d.ts.map +1 -0
- package/dist/core/tools/bash-policy-format.js +49 -0
- package/dist/core/tools/bash-policy-format.js.map +1 -0
- package/dist/core/tools/bash-policy-parser.d.ts +4 -0
- package/dist/core/tools/bash-policy-parser.d.ts.map +1 -0
- package/dist/core/tools/bash-policy-parser.js +155 -0
- package/dist/core/tools/bash-policy-parser.js.map +1 -0
- package/dist/core/tools/bash-policy-segment.d.ts +3 -0
- package/dist/core/tools/bash-policy-segment.d.ts.map +1 -0
- package/dist/core/tools/bash-policy-segment.js +275 -0
- package/dist/core/tools/bash-policy-segment.js.map +1 -0
- package/dist/core/tools/bash-policy-shell.d.ts +11 -0
- package/dist/core/tools/bash-policy-shell.d.ts.map +1 -0
- package/dist/core/tools/bash-policy-shell.js +267 -0
- package/dist/core/tools/bash-policy-shell.js.map +1 -0
- package/dist/core/tools/bash-policy-types.d.ts +146 -0
- package/dist/core/tools/bash-policy-types.d.ts.map +1 -0
- package/dist/core/tools/bash-policy-types.js +2 -0
- package/dist/core/tools/bash-policy-types.js.map +1 -0
- package/dist/core/tools/bash-policy.d.ts +5 -61
- package/dist/core/tools/bash-policy.d.ts.map +1 -1
- package/dist/core/tools/bash-policy.js +4 -1068
- package/dist/core/tools/bash-policy.js.map +1 -1
- package/dist/core/tools/todos-execute.d.ts +5 -0
- package/dist/core/tools/todos-execute.d.ts.map +1 -0
- package/dist/core/tools/todos-execute.js +200 -0
- package/dist/core/tools/todos-execute.js.map +1 -0
- package/dist/core/tools/todos-locks.d.ts +4 -0
- package/dist/core/tools/todos-locks.d.ts.map +1 -0
- package/dist/core/tools/todos-locks.js +80 -0
- package/dist/core/tools/todos-locks.js.map +1 -0
- package/dist/core/tools/todos-model.d.ts +21 -0
- package/dist/core/tools/todos-model.d.ts.map +1 -0
- package/dist/core/tools/todos-model.js +71 -0
- package/dist/core/tools/todos-model.js.map +1 -0
- package/dist/core/tools/todos-mutations.d.ts +6 -0
- package/dist/core/tools/todos-mutations.d.ts.map +1 -0
- package/dist/core/tools/todos-mutations.js +85 -0
- package/dist/core/tools/todos-mutations.js.map +1 -0
- package/dist/core/tools/todos-paths.d.ts +5 -0
- package/dist/core/tools/todos-paths.d.ts.map +1 -0
- package/dist/core/tools/todos-paths.js +25 -0
- package/dist/core/tools/todos-paths.js.map +1 -0
- package/dist/core/tools/todos-render.d.ts +10 -0
- package/dist/core/tools/todos-render.d.ts.map +1 -0
- package/dist/core/tools/todos-render.js +159 -0
- package/dist/core/tools/todos-render.js.map +1 -0
- package/dist/core/tools/todos-storage.d.ts +9 -0
- package/dist/core/tools/todos-storage.d.ts.map +1 -0
- package/dist/core/tools/todos-storage.js +183 -0
- package/dist/core/tools/todos-storage.js.map +1 -0
- package/dist/core/tools/todos-types.d.ts +46 -0
- package/dist/core/tools/todos-types.d.ts.map +1 -0
- package/dist/core/tools/todos-types.js +27 -0
- package/dist/core/tools/todos-types.js.map +1 -0
- package/dist/core/tools/todos.d.ts +12 -32
- package/dist/core/tools/todos.d.ts.map +1 -1
- package/dist/core/tools/todos.js +7 -893
- package/dist/core/tools/todos.js.map +1 -1
- package/dist/index-extensions.d.ts +3 -0
- package/dist/index-extensions.d.ts.map +1 -0
- package/dist/index-extensions.js +2 -0
- package/dist/index-extensions.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main-app-mode.d.ts +15 -0
- package/dist/main-app-mode.d.ts.map +1 -0
- package/dist/main-app-mode.js +51 -0
- package/dist/main-app-mode.js.map +1 -0
- package/dist/main-session-options.d.ts +12 -0
- package/dist/main-session-options.d.ts.map +1 -0
- package/dist/main-session-options.js +87 -0
- package/dist/main-session-options.js.map +1 -0
- package/dist/main-session.d.ts +9 -0
- package/dist/main-session.d.ts.map +1 -0
- package/dist/main-session.js +188 -0
- package/dist/main-session.js.map +1 -0
- package/dist/main-stdio.d.ts +12 -0
- package/dist/main-stdio.d.ts.map +1 -0
- package/dist/main-stdio.js +68 -0
- package/dist/main-stdio.js.map +1 -0
- package/dist/main.d.ts +2 -3
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +11 -388
- package/dist/main.js.map +1 -1
- package/dist/migrations-config-values.d.ts +9 -0
- package/dist/migrations-config-values.d.ts.map +1 -0
- package/dist/migrations-config-values.js +298 -0
- package/dist/migrations-config-values.js.map +1 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +2 -296
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +0 -7
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts +9 -0
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-actions.js +244 -0
- package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-editor.d.ts +18 -0
- package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-editor.js +165 -0
- package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-events.d.ts +5 -0
- package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-events.js +200 -0
- package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +13 -0
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-rendering.js +185 -0
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +13 -0
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-runtime.js +101 -0
- package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-state.d.ts +53 -0
- package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-state.js +42 -0
- package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-types.d.ts +63 -0
- package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-types.js +2 -0
- package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-utils.d.ts +28 -0
- package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -0
- package/dist/modes/interactive/components/chat-session-host-utils.js +103 -0
- package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -0
- package/dist/modes/interactive/components/chat-session-host.d.ts +6 -129
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +50 -1022
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.d.ts +65 -0
- package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector-list.js +458 -0
- package/dist/modes/interactive/components/config-selector-list.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +3 -58
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +2 -457
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-delete.d.ts +10 -0
- package/dist/modes/interactive/components/session-selector-delete.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-delete.js +40 -0
- package/dist/modes/interactive/components/session-selector-delete.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-header.d.ts +33 -0
- package/dist/modes/interactive/components/session-selector-header.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-header.js +117 -0
- package/dist/modes/interactive/components/session-selector-header.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-list.d.ts +49 -0
- package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-list.js +307 -0
- package/dist/modes/interactive/components/session-selector-list.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-tree.d.ts +25 -0
- package/dist/modes/interactive/components/session-selector-tree.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-tree.js +53 -0
- package/dist/modes/interactive/components/session-selector-tree.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-types.d.ts +4 -0
- package/dist/modes/interactive/components/session-selector-types.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-types.js +2 -0
- package/dist/modes/interactive/components/session-selector-types.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-utils.d.ts +4 -0
- package/dist/modes/interactive/components/session-selector-utils.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-utils.js +37 -0
- package/dist/modes/interactive/components/session-selector-utils.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +3 -49
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +5 -542
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts +3 -0
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector-handlers.js +84 -0
- package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector-items.d.ts +4 -0
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector-items.js +211 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector-options.d.ts +6 -0
- package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector-options.js +14 -0
- package/dist/modes/interactive/components/settings-selector-options.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts +44 -0
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector-submenus.js +228 -0
- package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector-types.d.ts +67 -0
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector-types.js +2 -0
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +2 -63
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +5 -538
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-component.d.ts +21 -0
- package/dist/modes/interactive/components/tree-selector-component.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector-component.js +80 -0
- package/dist/modes/interactive/components/tree-selector-component.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector-content.d.ts +8 -0
- package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector-content.js +263 -0
- package/dist/modes/interactive/components/tree-selector-content.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector-help.d.ts +16 -0
- package/dist/modes/interactive/components/tree-selector-help.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector-help.js +103 -0
- package/dist/modes/interactive/components/tree-selector-help.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector-label-input.d.ts +16 -0
- package/dist/modes/interactive/components/tree-selector-label-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector-label-input.js +46 -0
- package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector-list.d.ts +33 -0
- package/dist/modes/interactive/components/tree-selector-list.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector-list.js +336 -0
- package/dist/modes/interactive/components/tree-selector-list.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector-model.d.ts +7 -0
- package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector-model.js +358 -0
- package/dist/modes/interactive/components/tree-selector-model.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector-types.d.ts +57 -0
- package/dist/modes/interactive/components/tree-selector-types.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector-types.js +6 -0
- package/dist/modes/interactive/components/tree-selector-types.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector-viewport.d.ts +10 -0
- package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector-viewport.js +32 -0
- package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +2 -88
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +1 -1200
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.d.ts +2 -0
- package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-agent-events.js +370 -0
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -0
- package/dist/modes/interactive/interactive-auth-login.d.ts +2 -0
- package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-auth-login.js +214 -0
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -0
- package/dist/modes/interactive/interactive-auth-routing.d.ts +2 -0
- package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-auth-routing.js +128 -0
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -0
- package/dist/modes/interactive/interactive-autocomplete.d.ts +2 -0
- package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-autocomplete.js +140 -0
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -0
- package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -0
- package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-bash-compact.js +112 -0
- package/dist/modes/interactive/interactive-bash-compact.js.map +1 -0
- package/dist/modes/interactive/interactive-editor-actions.d.ts +2 -0
- package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-editor-actions.js +131 -0
- package/dist/modes/interactive/interactive-editor-actions.js.map +1 -0
- package/dist/modes/interactive/interactive-extension-context.d.ts +2 -0
- package/dist/modes/interactive/interactive-extension-context.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-extension-context.js +159 -0
- package/dist/modes/interactive/interactive-extension-context.js.map +1 -0
- package/dist/modes/interactive/interactive-extension-custom-ui.d.ts +2 -0
- package/dist/modes/interactive/interactive-extension-custom-ui.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-extension-custom-ui.js +208 -0
- package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -0
- package/dist/modes/interactive/interactive-extension-dialogs.d.ts +2 -0
- package/dist/modes/interactive/interactive-extension-dialogs.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-extension-dialogs.js +162 -0
- package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -0
- package/dist/modes/interactive/interactive-extension-runtime.d.ts +2 -0
- package/dist/modes/interactive/interactive-extension-runtime.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-extension-runtime.js +179 -0
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -0
- package/dist/modes/interactive/interactive-extension-widgets.d.ts +2 -0
- package/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-extension-widgets.js +113 -0
- package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -0
- package/dist/modes/interactive/interactive-hotkeys-debug.d.ts +2 -0
- package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-hotkeys-debug.js +186 -0
- package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -0
- package/dist/modes/interactive/interactive-input-handling.d.ts +2 -0
- package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-input-handling.js +275 -0
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -0
- package/dist/modes/interactive/interactive-mode-base.d.ts +103 -0
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode-base.js +130 -0
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -0
- package/dist/modes/interactive/interactive-mode-deps.d.ts +81 -0
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode-deps.js +74 -0
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -0
- package/dist/modes/interactive/interactive-mode-helpers.d.ts +21 -0
- package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode-helpers.js +77 -0
- package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -0
- package/dist/modes/interactive/interactive-mode-surface.d.ts +313 -0
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode-surface.js +2 -0
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -0
- package/dist/modes/interactive/interactive-mode-types.d.ts +29 -0
- package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode-types.js +2 -0
- package/dist/modes/interactive/interactive-mode-types.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +30 -404
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +29 -5260
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.d.ts +2 -0
- package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-model-routing.js +269 -0
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -0
- package/dist/modes/interactive/interactive-process-lifecycle.d.ts +2 -0
- package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-process-lifecycle.js +189 -0
- package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -0
- package/dist/modes/interactive/interactive-queueing.d.ts +2 -0
- package/dist/modes/interactive/interactive-queueing.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-queueing.js +163 -0
- package/dist/modes/interactive/interactive-queueing.js.map +1 -0
- package/dist/modes/interactive/interactive-render-chat.d.ts +2 -0
- package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-render-chat.js +170 -0
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -0
- package/dist/modes/interactive/interactive-resource-disclosure.d.ts +2 -0
- package/dist/modes/interactive/interactive-resource-disclosure.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-resource-disclosure.js +101 -0
- package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -0
- package/dist/modes/interactive/interactive-resource-paths.d.ts +2 -0
- package/dist/modes/interactive/interactive-resource-paths.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-resource-paths.js +228 -0
- package/dist/modes/interactive/interactive-resource-paths.js.map +1 -0
- package/dist/modes/interactive/interactive-resource-rendering.d.ts +2 -0
- package/dist/modes/interactive/interactive-resource-rendering.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-resource-rendering.js +181 -0
- package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -0
- package/dist/modes/interactive/interactive-selectors.d.ts +2 -0
- package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-selectors.js +198 -0
- package/dist/modes/interactive/interactive-selectors.js.map +1 -0
- package/dist/modes/interactive/interactive-session-routing.d.ts +2 -0
- package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-session-routing.js +232 -0
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -0
- package/dist/modes/interactive/interactive-session-runtime.d.ts +2 -0
- package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-session-runtime.js +131 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -0
- package/dist/modes/interactive/interactive-slash-commands.d.ts +2 -0
- package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-slash-commands.js +338 -0
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -0
- package/dist/modes/interactive/interactive-startup.d.ts +2 -0
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-startup.js +348 -0
- package/dist/modes/interactive/interactive-startup.js.map +1 -0
- package/dist/modes/interactive/theme/color-utils.d.ts +20 -0
- package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -0
- package/dist/modes/interactive/theme/color-utils.js +204 -0
- package/dist/modes/interactive/theme/color-utils.js.map +1 -0
- package/dist/modes/interactive/theme/export-colors.d.ts +19 -0
- package/dist/modes/interactive/theme/export-colors.d.ts.map +1 -0
- package/dist/modes/interactive/theme/export-colors.js +69 -0
- package/dist/modes/interactive/theme/export-colors.js.map +1 -0
- package/dist/modes/interactive/theme/global-theme.d.ts +12 -0
- package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/global-theme.js +150 -0
- package/dist/modes/interactive/theme/global-theme.js.map +1 -0
- package/dist/modes/interactive/theme/terminal-detection.d.ts +30 -0
- package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -0
- package/dist/modes/interactive/theme/terminal-detection.js +89 -0
- package/dist/modes/interactive/theme/terminal-detection.js.map +1 -0
- package/dist/modes/interactive/theme/theme-class.d.ts +30 -0
- package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-class.js +83 -0
- package/dist/modes/interactive/theme/theme-class.js.map +1 -0
- package/dist/modes/interactive/theme/theme-loading.d.ts +17 -0
- package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-loading.js +155 -0
- package/dist/modes/interactive/theme/theme-loading.js.map +1 -0
- package/dist/modes/interactive/theme/theme-parse.d.ts +5 -0
- package/dist/modes/interactive/theme/theme-parse.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-parse.js +52 -0
- package/dist/modes/interactive/theme/theme-parse.js.map +1 -0
- package/dist/modes/interactive/theme/theme-schema.d.ts +255 -0
- package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-schema.js +78 -0
- package/dist/modes/interactive/theme/theme-schema.js.map +1 -0
- package/dist/modes/interactive/theme/theme.d.ts +6 -108
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +6 -1065
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive/theme/tui-theme.d.ts +15 -0
- package/dist/modes/interactive/theme/tui-theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/tui-theme.js +199 -0
- package/dist/modes/interactive/theme/tui-theme.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +1 -61
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +1 -72
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts +14 -0
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-command-handler.js +226 -0
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -0
- package/dist/modes/rpc/rpc-extension-ui.d.ts +15 -0
- package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-extension-ui.js +196 -0
- package/dist/modes/rpc/rpc-extension-ui.js.map +1 -0
- package/dist/modes/rpc/rpc-input.d.ts +12 -0
- package/dist/modes/rpc/rpc-input.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-input.js +54 -0
- package/dist/modes/rpc/rpc-input.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +43 -607
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-responses.d.ts +8 -0
- package/dist/modes/rpc/rpc-responses.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-responses.js +27 -0
- package/dist/modes/rpc/rpc-responses.js.map +1 -0
- package/dist/modes/rpc/rpc-session-binding.d.ts +25 -0
- package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-session-binding.js +70 -0
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -0
- package/dist/package-manager-cli-parser.d.ts +28 -0
- package/dist/package-manager-cli-parser.d.ts.map +1 -0
- package/dist/package-manager-cli-parser.js +269 -0
- package/dist/package-manager-cli-parser.js.map +1 -0
- package/dist/package-manager-cli.d.ts +0 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +2 -267
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +10 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/version-check.d.ts +1 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +17 -0
- package/dist/utils/version-check.js.map +1 -1
- package/docs/development.md +4 -0
- package/docs/sessions.md +4 -0
- package/docs/workflows.md +13 -7
- package/examples/extensions/custom-provider-anthropic/index.ts +1 -106
- package/examples/extensions/gondolin/index.ts +0 -23
- package/examples/extensions/gondolin/package-lock.json +183 -183
- package/examples/extensions/overlay-qa-animation-components.ts +255 -0
- package/examples/extensions/overlay-qa-focus-components.ts +222 -0
- package/examples/extensions/overlay-qa-position-components.ts +433 -0
- package/examples/extensions/overlay-qa-shared.ts +37 -0
- package/examples/extensions/overlay-qa-streaming-input-components.ts +205 -0
- package/examples/extensions/overlay-qa-tests.ts +17 -1156
- package/examples/extensions/overlay-qa-toggle-passive-components.ts +169 -0
- package/examples/extensions/space-invaders.ts +0 -60
- package/examples/extensions/subagent/display.ts +148 -0
- package/examples/extensions/subagent/index.ts +11 -858
- package/examples/extensions/subagent/render.ts +383 -0
- package/examples/extensions/subagent/runner.ts +252 -0
- package/examples/extensions/subagent/schemas.ts +59 -0
- package/examples/extensions/subagent/types.ts +36 -0
- package/examples/extensions/tic-tac-toe-instructions.ts +65 -0
- package/examples/extensions/tic-tac-toe-rendering.ts +414 -0
- package/examples/extensions/tic-tac-toe-state.ts +158 -0
- package/examples/extensions/tic-tac-toe.ts +92 -754
- package/examples/rpc-extension-ui-components.ts +189 -0
- package/examples/rpc-extension-ui.ts +2 -179
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-selector-list.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tree-selector-list.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Component, getKeybindings, truncateToWidth, visibleWidth } from \"@earendil-works/pi-tui\";\nimport type { SessionTreeNode } from \"../../../core/session-manager.ts\";\nimport { theme } from \"../theme/theme.ts\";\nimport { formatLabelTimestamp, getEntryDisplayText } from \"./tree-selector-content.ts\";\nimport { applyTreeFilter, buildActivePath, findNearestVisibleIndex, flattenTree } from \"./tree-selector-model.ts\";\nimport type { FilterMode, HorizontalViewportRow, ToolCallInfo, TreeListState } from \"./tree-selector-types.ts\";\nimport { renderHorizontalViewport } from \"./tree-selector-viewport.ts\";\n\n/** Tree list component with selection and ASCII art visualization */\nexport class TreeList implements Component {\n\tprivate readonly state: TreeListState;\n\n\tpublic onSelect?: (entryId: string) => void;\n\tpublic onCancel?: () => void;\n\tpublic onLabelEdit?: (entryId: string, currentLabel: string | undefined) => void;\n\n\tconstructor(\n\t\ttree: SessionTreeNode[],\n\t\tcurrentLeafId: string | null,\n\t\tmaxVisibleLines: number,\n\t\tinitialSelectedId?: string,\n\t\tinitialFilterMode?: FilterMode,\n\t) {\n\t\tconst toolCallMap = new Map<string, ToolCallInfo>();\n\t\tconst flatNodes = flattenTree(tree, currentLeafId, toolCallMap);\n\t\tthis.state = {\n\t\t\tflatNodes,\n\t\t\tfilteredNodes: [],\n\t\t\tselectedIndex: 0,\n\t\t\tcurrentLeafId,\n\t\t\tmaxVisibleLines,\n\t\t\tfilterMode: initialFilterMode ?? \"default\",\n\t\t\tsearchQuery: \"\",\n\t\t\ttoolCallMap,\n\t\t\tmultipleRoots: tree.length > 1,\n\t\t\tshowLabelTimestamps: false,\n\t\t\tactivePathIds: new Set(),\n\t\t\tvisibleParentMap: new Map(),\n\t\t\tvisibleChildrenMap: new Map(),\n\t\t\tlastSelectedId: null,\n\t\t\tfoldedNodes: new Set(),\n\t\t};\n\n\t\tbuildActivePath(this.state.flatNodes, this.state.currentLeafId, this.state.activePathIds);\n\t\tapplyTreeFilter(this.state);\n\n\t\t// Start with initialSelectedId if provided, otherwise current leaf\n\t\tconst targetId = initialSelectedId ?? currentLeafId;\n\t\tthis.state.selectedIndex = findNearestVisibleIndex(this.state.flatNodes, this.state.filteredNodes, targetId);\n\t\tthis.state.lastSelectedId = this.state.filteredNodes[this.state.selectedIndex]?.node.entry.id ?? null;\n\t}\n\n\tinvalidate(): void {}\n\n\tgetSearchQuery(): string {\n\t\treturn this.state.searchQuery;\n\t}\n\n\tgetSelectedNode(): SessionTreeNode | undefined {\n\t\treturn this.state.filteredNodes[this.state.selectedIndex]?.node;\n\t}\n\n\tupdateNodeLabel(entryId: string, label: string | undefined, labelTimestamp?: string): void {\n\t\tfor (const flatNode of this.state.flatNodes) {\n\t\t\tif (flatNode.node.entry.id === entryId) {\n\t\t\t\tflatNode.node.label = label;\n\t\t\t\tflatNode.node.labelTimestamp = label ? (labelTimestamp ?? new Date().toISOString()) : undefined;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getStatusLabels(): string {\n\t\tlet labels = \"\";\n\t\tswitch (this.state.filterMode) {\n\t\t\tcase \"no-tools\":\n\t\t\t\tlabels += \" [no-tools]\";\n\t\t\t\tbreak;\n\t\t\tcase \"user-only\":\n\t\t\t\tlabels += \" [user]\";\n\t\t\t\tbreak;\n\t\t\tcase \"labeled-only\":\n\t\t\t\tlabels += \" [labeled]\";\n\t\t\t\tbreak;\n\t\t\tcase \"all\":\n\t\t\t\tlabels += \" [all]\";\n\t\t\t\tbreak;\n\t\t}\n\t\tif (this.state.showLabelTimestamps) {\n\t\t\tlabels += \" [+label time]\";\n\t\t}\n\t\treturn labels;\n\t}\n\n\trender(width: number): string[] {\n\t\tconst state = this.state;\n\t\tconst lines: string[] = [];\n\n\t\tif (state.filteredNodes.length === 0) {\n\t\t\tlines.push(truncateToWidth(theme.fg(\"muted\", \" No entries found\"), width));\n\t\t\tlines.push(truncateToWidth(theme.fg(\"muted\", ` (0/0)${this.getStatusLabels()}`), width));\n\t\t\treturn lines;\n\t\t}\n\n\t\tconst startIndex = Math.max(\n\t\t\t0,\n\t\t\tMath.min(\n\t\t\t\tstate.selectedIndex - Math.floor(state.maxVisibleLines / 2),\n\t\t\t\tstate.filteredNodes.length - state.maxVisibleLines,\n\t\t\t),\n\t\t);\n\t\tconst endIndex = Math.min(startIndex + state.maxVisibleLines, state.filteredNodes.length);\n\n\t\tconst renderedRows: HorizontalViewportRow[] = [];\n\t\tfor (let i = startIndex; i < endIndex; i++) {\n\t\t\tconst flatNode = state.filteredNodes[i];\n\t\t\tconst entry = flatNode.node.entry;\n\t\t\tconst isSelected = i === state.selectedIndex;\n\n\t\t\t// Build line: cursor + prefix + path marker + label + content\n\t\t\tconst cursor = isSelected ? theme.fg(\"accent\", \"› \") : \" \";\n\n\t\t\t// If multiple roots, shift display (roots at 0, not 1)\n\t\t\tconst displayIndent = state.multipleRoots ? Math.max(0, flatNode.indent - 1) : flatNode.indent;\n\n\t\t\t// Build prefix with gutters at their correct positions\n\t\t\t// Each gutter has a position (displayIndent where its connector was shown)\n\t\t\tconst connector =\n\t\t\t\tflatNode.showConnector && !flatNode.isVirtualRootChild ? (flatNode.isLast ? \"└─ \" : \"├─ \") : \"\";\n\t\t\tconst connectorPosition = connector ? displayIndent - 1 : -1;\n\n\t\t\t// Build prefix char by char, placing gutters and connector at their positions\n\t\t\tconst totalChars = displayIndent * 3;\n\t\t\tconst prefixChars: string[] = [];\n\t\t\tconst isFolded = state.foldedNodes.has(entry.id);\n\t\t\tfor (let i = 0; i < totalChars; i++) {\n\t\t\t\tconst level = Math.floor(i / 3);\n\t\t\t\tconst posInLevel = i % 3;\n\n\t\t\t\t// Check if there's a gutter at this level\n\t\t\t\tconst gutter = flatNode.gutters.find((g) => g.position === level);\n\t\t\t\tif (gutter) {\n\t\t\t\t\tif (posInLevel === 0) {\n\t\t\t\t\t\tprefixChars.push(gutter.show ? \"│\" : \" \");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprefixChars.push(\" \");\n\t\t\t\t\t}\n\t\t\t\t} else if (connector && level === connectorPosition) {\n\t\t\t\t\t// Connector at this level, with fold indicator\n\t\t\t\t\tif (posInLevel === 0) {\n\t\t\t\t\t\tprefixChars.push(flatNode.isLast ? \"└\" : \"├\");\n\t\t\t\t\t} else if (posInLevel === 1) {\n\t\t\t\t\t\tconst foldable = this.isFoldable(entry.id);\n\t\t\t\t\t\tprefixChars.push(isFolded ? \"⊞\" : foldable ? \"⊟\" : \"─\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprefixChars.push(\" \");\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tprefixChars.push(\" \");\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst prefix = prefixChars.join(\"\");\n\n\t\t\t// Fold marker for nodes without connectors (roots)\n\t\t\tconst showsFoldInConnector = flatNode.showConnector && !flatNode.isVirtualRootChild;\n\t\t\tconst foldMarker = isFolded && !showsFoldInConnector ? theme.fg(\"accent\", \"⊞ \") : \"\";\n\n\t\t\t// Active path marker - shown right before the entry text\n\t\t\tconst isOnActivePath = state.activePathIds.has(entry.id);\n\t\t\tconst pathMarker = isOnActivePath ? theme.fg(\"accent\", \"• \") : \"\";\n\n\t\t\tconst label = flatNode.node.label ? theme.fg(\"warning\", `[${flatNode.node.label}] `) : \"\";\n\t\t\tconst labelTimestamp =\n\t\t\t\tstate.showLabelTimestamps && flatNode.node.label && flatNode.node.labelTimestamp\n\t\t\t\t\t? theme.fg(\"muted\", `${formatLabelTimestamp(flatNode.node.labelTimestamp)} `)\n\t\t\t\t\t: \"\";\n\t\t\tconst content = getEntryDisplayText(flatNode.node, isSelected, state.toolCallMap);\n\t\t\tconst prefixPart = theme.fg(\"dim\", prefix) + foldMarker + pathMarker;\n\t\t\tconst anchorCol = visibleWidth(prefixPart);\n\t\t\tlet gutter = cursor;\n\t\t\tlet body = prefixPart + label + labelTimestamp + content;\n\t\t\tif (isSelected) {\n\t\t\t\tgutter = theme.bg(\"selectedBg\", gutter);\n\t\t\t\tbody = theme.bg(\"selectedBg\", body);\n\t\t\t}\n\t\t\trenderedRows.push({ gutter, body, anchorCol, bodyWidth: visibleWidth(body), isSelected });\n\t\t}\n\n\t\tlines.push(...renderHorizontalViewport(renderedRows, width));\n\t\tlines.push(\n\t\t\ttruncateToWidth(\n\t\t\t\ttheme.fg(\"muted\", ` (${state.selectedIndex + 1}/${state.filteredNodes.length})${this.getStatusLabels()}`),\n\t\t\t\twidth,\n\t\t\t),\n\t\t);\n\n\t\treturn lines;\n\t}\n\n\thandleInput(keyData: string): void {\n\t\tconst state = this.state;\n\t\tconst kb = getKeybindings();\n\t\tif (kb.matches(keyData, \"tui.select.up\")) {\n\t\t\tstate.selectedIndex = state.selectedIndex === 0 ? state.filteredNodes.length - 1 : state.selectedIndex - 1;\n\t\t} else if (kb.matches(keyData, \"tui.select.down\")) {\n\t\t\tstate.selectedIndex = state.selectedIndex === state.filteredNodes.length - 1 ? 0 : state.selectedIndex + 1;\n\t\t} else if (kb.matches(keyData, \"app.tree.foldOrUp\")) {\n\t\t\tconst currentId = state.filteredNodes[state.selectedIndex]?.node.entry.id;\n\t\t\tif (currentId && this.isFoldable(currentId) && !state.foldedNodes.has(currentId)) {\n\t\t\t\tstate.foldedNodes.add(currentId);\n\t\t\t\tapplyTreeFilter(state);\n\t\t\t} else {\n\t\t\t\tstate.selectedIndex = this.findBranchSegmentStart(\"up\");\n\t\t\t}\n\t\t} else if (kb.matches(keyData, \"app.tree.unfoldOrDown\")) {\n\t\t\tconst currentId = state.filteredNodes[state.selectedIndex]?.node.entry.id;\n\t\t\tif (currentId && state.foldedNodes.has(currentId)) {\n\t\t\t\tstate.foldedNodes.delete(currentId);\n\t\t\t\tapplyTreeFilter(state);\n\t\t\t} else {\n\t\t\t\tstate.selectedIndex = this.findBranchSegmentStart(\"down\");\n\t\t\t}\n\t\t} else if (kb.matches(keyData, \"tui.editor.cursorLeft\") || kb.matches(keyData, \"tui.select.pageUp\")) {\n\t\t\t// Page up\n\t\t\tstate.selectedIndex = Math.max(0, state.selectedIndex - state.maxVisibleLines);\n\t\t} else if (kb.matches(keyData, \"tui.editor.cursorRight\") || kb.matches(keyData, \"tui.select.pageDown\")) {\n\t\t\t// Page down\n\t\t\tstate.selectedIndex = Math.min(state.filteredNodes.length - 1, state.selectedIndex + state.maxVisibleLines);\n\t\t} else if (kb.matches(keyData, \"tui.select.confirm\")) {\n\t\t\tconst selected = state.filteredNodes[state.selectedIndex];\n\t\t\tif (selected && this.onSelect) {\n\t\t\t\tthis.onSelect(selected.node.entry.id);\n\t\t\t}\n\t\t} else if (kb.matches(keyData, \"tui.select.cancel\")) {\n\t\t\tif (state.searchQuery) {\n\t\t\t\tstate.searchQuery = \"\";\n\t\t\t\tstate.foldedNodes.clear();\n\t\t\t\tapplyTreeFilter(state);\n\t\t\t} else {\n\t\t\t\tthis.onCancel?.();\n\t\t\t}\n\t\t} else if (kb.matches(keyData, \"app.tree.filter.default\")) {\n\t\t\t// Direct filter: default\n\t\t\tstate.filterMode = \"default\";\n\t\t\tstate.foldedNodes.clear();\n\t\t\tapplyTreeFilter(state);\n\t\t} else if (kb.matches(keyData, \"app.tree.filter.noTools\")) {\n\t\t\t// Toggle filter: no-tools ↔ default\n\t\t\tstate.filterMode = state.filterMode === \"no-tools\" ? \"default\" : \"no-tools\";\n\t\t\tstate.foldedNodes.clear();\n\t\t\tapplyTreeFilter(state);\n\t\t} else if (kb.matches(keyData, \"app.tree.filter.userOnly\")) {\n\t\t\t// Toggle filter: user-only ↔ default\n\t\t\tstate.filterMode = state.filterMode === \"user-only\" ? \"default\" : \"user-only\";\n\t\t\tstate.foldedNodes.clear();\n\t\t\tapplyTreeFilter(state);\n\t\t} else if (kb.matches(keyData, \"app.tree.filter.labeledOnly\")) {\n\t\t\t// Toggle filter: labeled-only ↔ default\n\t\t\tstate.filterMode = state.filterMode === \"labeled-only\" ? \"default\" : \"labeled-only\";\n\t\t\tstate.foldedNodes.clear();\n\t\t\tapplyTreeFilter(state);\n\t\t} else if (kb.matches(keyData, \"app.tree.filter.all\")) {\n\t\t\t// Toggle filter: all ↔ default\n\t\t\tstate.filterMode = state.filterMode === \"all\" ? \"default\" : \"all\";\n\t\t\tstate.foldedNodes.clear();\n\t\t\tapplyTreeFilter(state);\n\t\t} else if (kb.matches(keyData, \"app.tree.filter.cycleBackward\")) {\n\t\t\t// Cycle filter backwards\n\t\t\tconst modes: FilterMode[] = [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"];\n\t\t\tconst currentIndex = modes.indexOf(state.filterMode);\n\t\t\tstate.filterMode = modes[(currentIndex - 1 + modes.length) % modes.length];\n\t\t\tstate.foldedNodes.clear();\n\t\t\tapplyTreeFilter(state);\n\t\t} else if (kb.matches(keyData, \"app.tree.filter.cycleForward\")) {\n\t\t\t// Cycle filter forwards: default → no-tools → user-only → labeled-only → all → default\n\t\t\tconst modes: FilterMode[] = [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"];\n\t\t\tconst currentIndex = modes.indexOf(state.filterMode);\n\t\t\tstate.filterMode = modes[(currentIndex + 1) % modes.length];\n\t\t\tstate.foldedNodes.clear();\n\t\t\tapplyTreeFilter(state);\n\t\t} else if (kb.matches(keyData, \"tui.editor.deleteCharBackward\")) {\n\t\t\tif (state.searchQuery.length > 0) {\n\t\t\t\tstate.searchQuery = state.searchQuery.slice(0, -1);\n\t\t\t\tstate.foldedNodes.clear();\n\t\t\t\tapplyTreeFilter(state);\n\t\t\t}\n\t\t} else if (kb.matches(keyData, \"app.tree.editLabel\")) {\n\t\t\tconst selected = state.filteredNodes[state.selectedIndex];\n\t\t\tif (selected && this.onLabelEdit) {\n\t\t\t\tthis.onLabelEdit(selected.node.entry.id, selected.node.label);\n\t\t\t}\n\t\t} else if (kb.matches(keyData, \"app.tree.toggleLabelTimestamp\")) {\n\t\t\tstate.showLabelTimestamps = !state.showLabelTimestamps;\n\t\t} else {\n\t\t\tconst hasControlChars = [...keyData].some((ch) => {\n\t\t\t\tconst code = ch.charCodeAt(0);\n\t\t\t\treturn code < 32 || code === 0x7f || (code >= 0x80 && code <= 0x9f);\n\t\t\t});\n\t\t\tif (!hasControlChars && keyData.length > 0) {\n\t\t\t\tstate.searchQuery += keyData;\n\t\t\t\tstate.foldedNodes.clear();\n\t\t\t\tapplyTreeFilter(state);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Whether a node can be folded. A node is foldable if it has visible children\n\t * and is either a root (no visible parent) or a segment start (visible parent\n\t * has multiple visible children).\n\t */\n\tprivate isFoldable(entryId: string): boolean {\n\t\tconst children = this.state.visibleChildrenMap.get(entryId);\n\t\tif (!children || children.length === 0) return false;\n\t\tconst parentId = this.state.visibleParentMap.get(entryId);\n\t\tif (parentId === null || parentId === undefined) return true;\n\t\tconst siblings = this.state.visibleChildrenMap.get(parentId);\n\t\treturn siblings !== undefined && siblings.length > 1;\n\t}\n\n\t/**\n\t * Find the index of the next branch segment start in the given direction.\n\t * A segment start is the first child of a branch point.\n\t *\n\t * \"up\" walks the visible parent chain; \"down\" walks visible children\n\t * (always following the first child).\n\t */\n\tprivate findBranchSegmentStart(direction: \"up\" | \"down\"): number {\n\t\tconst selectedId = this.state.filteredNodes[this.state.selectedIndex]?.node.entry.id;\n\t\tif (!selectedId) return this.state.selectedIndex;\n\n\t\tconst indexByEntryId = new Map(this.state.filteredNodes.map((node, i) => [node.node.entry.id, i]));\n\t\tlet currentId: string = selectedId;\n\t\tif (direction === \"down\") {\n\t\t\twhile (true) {\n\t\t\t\tconst children: string[] = this.state.visibleChildrenMap.get(currentId) ?? [];\n\t\t\t\tif (children.length === 0) return indexByEntryId.get(currentId)!;\n\t\t\t\tif (children.length > 1) return indexByEntryId.get(children[0])!;\n\t\t\t\tcurrentId = children[0];\n\t\t\t}\n\t\t}\n\n\t\t// direction === \"up\"\n\t\twhile (true) {\n\t\t\tconst parentId: string | null = this.state.visibleParentMap.get(currentId) ?? null;\n\t\t\tif (parentId === null) return indexByEntryId.get(currentId)!;\n\t\t\tconst children = this.state.visibleChildrenMap.get(parentId) ?? [];\n\t\t\tif (children.length > 1) {\n\t\t\t\tconst segmentStart = indexByEntryId.get(currentId)!;\n\t\t\t\tif (segmentStart < this.state.selectedIndex) {\n\t\t\t\t\treturn segmentStart;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrentId = parentId;\n\t\t}\n\t}\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SessionTreeNode } from "../../../core/session-manager.ts";
|
|
2
|
+
import type { FlatNode, ToolCallInfo, TreeListState } from "./tree-selector-types.ts";
|
|
3
|
+
export declare function flattenTree(roots: SessionTreeNode[], currentLeafId: string | null, toolCallMap: Map<string, ToolCallInfo>): FlatNode[];
|
|
4
|
+
export declare function buildActivePath(flatNodes: FlatNode[], currentLeafId: string | null, activePathIds: Set<string>): void;
|
|
5
|
+
export declare function findNearestVisibleIndex(flatNodes: FlatNode[], filteredNodes: FlatNode[], entryId: string | null): number;
|
|
6
|
+
export declare function applyTreeFilter(state: TreeListState): void;
|
|
7
|
+
//# sourceMappingURL=tree-selector-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-selector-model.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tree-selector-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,KAAK,EAAE,QAAQ,EAAc,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAElG,wBAAgB,WAAW,CAC1B,KAAK,EAAE,eAAe,EAAE,EACxB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACpC,QAAQ,EAAE,CAgIZ;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAkBrH;AAED,wBAAgB,uBAAuB,CACtC,SAAS,EAAE,QAAQ,EAAE,EACrB,aAAa,EAAE,QAAQ,EAAE,EACzB,OAAO,EAAE,MAAM,GAAG,IAAI,GACpB,MAAM,CAwBR;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAiG1D","sourcesContent":["import type { SessionTreeNode } from \"../../../core/session-manager.ts\";\nimport { getSearchableText, hasTextContent } from \"./tree-selector-content.ts\";\nimport type { FlatNode, GutterInfo, ToolCallInfo, TreeListState } from \"./tree-selector-types.ts\";\n\nexport function flattenTree(\n\troots: SessionTreeNode[],\n\tcurrentLeafId: string | null,\n\ttoolCallMap: Map<string, ToolCallInfo>,\n): FlatNode[] {\n\tconst result: FlatNode[] = [];\n\ttoolCallMap.clear();\n\n\t// Indentation rules:\n\t// - At indent 0: stay at 0 unless parent has >1 children (then +1)\n\t// - At indent 1: children always go to indent 2 (visual grouping of subtree)\n\t// - At indent 2+: stay flat for single-child chains, +1 only if parent branches\n\n\t// Stack items: [node, indent, justBranched, showConnector, isLast, gutters, isVirtualRootChild]\n\ttype StackItem = [SessionTreeNode, number, boolean, boolean, boolean, GutterInfo[], boolean];\n\tconst stack: StackItem[] = [];\n\n\t// Determine which subtrees contain the active leaf (to sort current branch first)\n\t// Use iterative post-order traversal to avoid stack overflow\n\tconst containsActive = new Map<SessionTreeNode, boolean>();\n\tconst leafId = currentLeafId;\n\t{\n\t\t// Build list in pre-order, then process in reverse for post-order effect\n\t\tconst allNodes: SessionTreeNode[] = [];\n\t\tconst preOrderStack: SessionTreeNode[] = [...roots];\n\t\twhile (preOrderStack.length > 0) {\n\t\t\tconst node = preOrderStack.pop()!;\n\t\t\tallNodes.push(node);\n\t\t\t// Push children in reverse so they're processed left-to-right\n\t\t\tfor (let i = node.children.length - 1; i >= 0; i--) {\n\t\t\t\tpreOrderStack.push(node.children[i]);\n\t\t\t}\n\t\t}\n\t\t// Process in reverse (post-order): children before parents\n\t\tfor (let i = allNodes.length - 1; i >= 0; i--) {\n\t\t\tconst node = allNodes[i];\n\t\t\tlet has = leafId !== null && node.entry.id === leafId;\n\t\t\tfor (const child of node.children) {\n\t\t\t\tif (containsActive.get(child)) {\n\t\t\t\t\thas = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontainsActive.set(node, has);\n\t\t}\n\t}\n\n\t// Add roots in reverse order, prioritizing the one containing the active leaf\n\t// If multiple roots, treat them as children of a virtual root that branches\n\tconst multipleRoots = roots.length > 1;\n\tconst orderedRoots = [...roots].sort((a, b) => Number(containsActive.get(b)) - Number(containsActive.get(a)));\n\tfor (let i = orderedRoots.length - 1; i >= 0; i--) {\n\t\tconst isLast = i === orderedRoots.length - 1;\n\t\tstack.push([orderedRoots[i], multipleRoots ? 1 : 0, multipleRoots, multipleRoots, isLast, [], multipleRoots]);\n\t}\n\n\twhile (stack.length > 0) {\n\t\tconst [node, indent, justBranched, showConnector, isLast, gutters, isVirtualRootChild] = stack.pop()!;\n\n\t\t// Extract tool calls from assistant messages for later lookup\n\t\tconst entry = node.entry;\n\t\tif (entry.type === \"message\" && entry.message.role === \"assistant\") {\n\t\t\tconst content = (entry.message as { content?: unknown }).content;\n\t\t\tif (Array.isArray(content)) {\n\t\t\t\tfor (const block of content) {\n\t\t\t\t\tif (typeof block === \"object\" && block !== null && \"type\" in block && block.type === \"toolCall\") {\n\t\t\t\t\t\tconst tc = block as { id: string; name: string; arguments: Record<string, unknown> };\n\t\t\t\t\t\ttoolCallMap.set(tc.id, { name: tc.name, arguments: tc.arguments });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tresult.push({ node, indent, showConnector, isLast, gutters, isVirtualRootChild });\n\n\t\tconst children = node.children;\n\t\tconst multipleChildren = children.length > 1;\n\n\t\t// Order children so the branch containing the active leaf comes first\n\t\tconst orderedChildren = (() => {\n\t\t\tconst prioritized: SessionTreeNode[] = [];\n\t\t\tconst rest: SessionTreeNode[] = [];\n\t\t\tfor (const child of children) {\n\t\t\t\tif (containsActive.get(child)) {\n\t\t\t\t\tprioritized.push(child);\n\t\t\t\t} else {\n\t\t\t\t\trest.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn [...prioritized, ...rest];\n\t\t})();\n\n\t\t// Calculate child indent\n\t\tlet childIndent: number;\n\t\tif (multipleChildren) {\n\t\t\t// Parent branches: children get +1\n\t\t\tchildIndent = indent + 1;\n\t\t} else if (justBranched && indent > 0) {\n\t\t\t// First generation after a branch: +1 for visual grouping\n\t\t\tchildIndent = indent + 1;\n\t\t} else {\n\t\t\t// Single-child chain: stay flat\n\t\t\tchildIndent = indent;\n\t\t}\n\n\t\t// Build gutters for children\n\t\t// If this node showed a connector, add a gutter entry for descendants\n\t\t// Only add gutter if connector is actually displayed (not suppressed for virtual root children)\n\t\tconst connectorDisplayed = showConnector && !isVirtualRootChild;\n\t\t// When connector is displayed, add a gutter entry at the connector's position\n\t\t// Connector is at position (displayIndent - 1), so gutter should be there too\n\t\tconst currentDisplayIndent = multipleRoots ? Math.max(0, indent - 1) : indent;\n\t\tconst connectorPosition = Math.max(0, currentDisplayIndent - 1);\n\t\tconst childGutters: GutterInfo[] = connectorDisplayed\n\t\t\t? [...gutters, { position: connectorPosition, show: !isLast }]\n\t\t\t: gutters;\n\n\t\t// Add children in reverse order\n\t\tfor (let i = orderedChildren.length - 1; i >= 0; i--) {\n\t\t\tconst childIsLast = i === orderedChildren.length - 1;\n\t\t\tstack.push([\n\t\t\t\torderedChildren[i],\n\t\t\t\tchildIndent,\n\t\t\t\tmultipleChildren,\n\t\t\t\tmultipleChildren,\n\t\t\t\tchildIsLast,\n\t\t\t\tchildGutters,\n\t\t\t\tfalse,\n\t\t\t]);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function buildActivePath(flatNodes: FlatNode[], currentLeafId: string | null, activePathIds: Set<string>): void {\n\tactivePathIds.clear();\n\tif (!currentLeafId) return;\n\n\t// Build a map of id -> entry for parent lookup\n\tconst entryMap = new Map<string, FlatNode>();\n\tfor (const flatNode of flatNodes) {\n\t\tentryMap.set(flatNode.node.entry.id, flatNode);\n\t}\n\n\t// Walk from leaf to root\n\tlet currentId: string | null = currentLeafId;\n\twhile (currentId) {\n\t\tactivePathIds.add(currentId);\n\t\tconst node = entryMap.get(currentId);\n\t\tif (!node) break;\n\t\tcurrentId = node.node.entry.parentId ?? null;\n\t}\n}\n\nexport function findNearestVisibleIndex(\n\tflatNodes: FlatNode[],\n\tfilteredNodes: FlatNode[],\n\tentryId: string | null,\n): number {\n\tif (filteredNodes.length === 0) return 0;\n\n\t// Build a map for parent lookup\n\tconst entryMap = new Map<string, FlatNode>();\n\tfor (const flatNode of flatNodes) {\n\t\tentryMap.set(flatNode.node.entry.id, flatNode);\n\t}\n\n\t// Build a map of visible entry IDs to their indices in filteredNodes\n\tconst visibleIdToIndex = new Map<string, number>(filteredNodes.map((node, i) => [node.node.entry.id, i]));\n\n\t// Walk from entryId up to root, looking for a visible entry\n\tlet currentId = entryId;\n\twhile (currentId !== null) {\n\t\tconst index = visibleIdToIndex.get(currentId);\n\t\tif (index !== undefined) return index;\n\t\tconst node = entryMap.get(currentId);\n\t\tif (!node) break;\n\t\tcurrentId = node.node.entry.parentId ?? null;\n\t}\n\n\t// Fallback: last visible entry\n\treturn filteredNodes.length - 1;\n}\n\nexport function applyTreeFilter(state: TreeListState): void {\n\t// Update lastSelectedId only when we have a valid selection (non-empty list)\n\t// This preserves the selection when switching through empty filter results\n\tif (state.filteredNodes.length > 0) {\n\t\tstate.lastSelectedId = state.filteredNodes[state.selectedIndex]?.node.entry.id ?? state.lastSelectedId;\n\t}\n\n\tconst searchTokens = state.searchQuery.toLowerCase().split(/\\s+/).filter(Boolean);\n\n\tstate.filteredNodes = state.flatNodes.filter((flatNode) => {\n\t\tconst entry = flatNode.node.entry;\n\t\tconst isCurrentLeaf = entry.id === state.currentLeafId;\n\n\t\t// Skip assistant messages with only tool calls (no text) unless error/aborted\n\t\t// Always show current leaf so active position is visible\n\t\tif (entry.type === \"message\" && entry.message.role === \"assistant\" && !isCurrentLeaf) {\n\t\t\tconst msg = entry.message as { stopReason?: string; content?: unknown };\n\t\t\tconst hasText = hasTextContent(msg.content);\n\t\t\tconst isErrorOrAborted = msg.stopReason && msg.stopReason !== \"stop\" && msg.stopReason !== \"toolUse\";\n\t\t\t// Only hide if no text AND not an error/aborted message\n\t\t\tif (!hasText && !isErrorOrAborted) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Apply filter mode\n\t\tlet passesFilter = true;\n\t\t// Entry types hidden in default view (settings/bookkeeping)\n\t\tconst isSettingsEntry =\n\t\t\tentry.type === \"label\" ||\n\t\t\tentry.type === \"custom\" ||\n\t\t\tentry.type === \"model_change\" ||\n\t\t\tentry.type === \"thinking_level_change\" ||\n\t\t\tentry.type === \"context_window_change\" ||\n\t\t\tentry.type === \"session_info\";\n\n\t\tswitch (state.filterMode) {\n\t\t\tcase \"user-only\":\n\t\t\t\t// Just user messages\n\t\t\t\tpassesFilter = entry.type === \"message\" && entry.message.role === \"user\";\n\t\t\t\tbreak;\n\t\t\tcase \"no-tools\":\n\t\t\t\t// Default minus tool results\n\t\t\t\tpassesFilter = !isSettingsEntry && !(entry.type === \"message\" && entry.message.role === \"toolResult\");\n\t\t\t\tbreak;\n\t\t\tcase \"labeled-only\":\n\t\t\t\t// Just labeled entries\n\t\t\t\tpassesFilter = flatNode.node.label !== undefined;\n\t\t\t\tbreak;\n\t\t\tcase \"all\":\n\t\t\t\t// Show everything\n\t\t\t\tpassesFilter = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Default mode: hide settings/bookkeeping entries\n\t\t\t\tpassesFilter = !isSettingsEntry;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (!passesFilter) return false;\n\n\t\t// Apply search filter\n\t\tif (searchTokens.length > 0) {\n\t\t\tconst nodeText = getSearchableText(flatNode.node).toLowerCase();\n\t\t\treturn searchTokens.every((token) => nodeText.includes(token));\n\t\t}\n\n\t\treturn true;\n\t});\n\n\t// Filter out descendants of folded nodes.\n\tif (state.foldedNodes.size > 0) {\n\t\tconst skipSet = new Set<string>();\n\t\tfor (const flatNode of state.flatNodes) {\n\t\t\tconst { id, parentId } = flatNode.node.entry;\n\t\t\tif (parentId != null && (state.foldedNodes.has(parentId) || skipSet.has(parentId))) {\n\t\t\t\tskipSet.add(id);\n\t\t\t}\n\t\t}\n\t\tstate.filteredNodes = state.filteredNodes.filter((flatNode) => !skipSet.has(flatNode.node.entry.id));\n\t}\n\n\t// Recalculate visual structure (indent, connectors, gutters) based on visible tree\n\trecalculateVisualStructure(state);\n\n\t// Try to preserve cursor on the same node, or find nearest visible ancestor\n\tif (state.lastSelectedId) {\n\t\tstate.selectedIndex = findNearestVisibleIndex(state.flatNodes, state.filteredNodes, state.lastSelectedId);\n\t} else if (state.selectedIndex >= state.filteredNodes.length) {\n\t\t// Clamp index if out of bounds\n\t\tstate.selectedIndex = Math.max(0, state.filteredNodes.length - 1);\n\t}\n\n\t// Update lastSelectedId to the actual selection (may have changed due to parent walk)\n\tif (state.filteredNodes.length > 0) {\n\t\tstate.lastSelectedId = state.filteredNodes[state.selectedIndex]?.node.entry.id ?? state.lastSelectedId;\n\t}\n}\n\n/**\n * Recompute indentation/connectors for the filtered view\n *\n * Filtering can hide intermediate entries; descendants attach to the nearest visible ancestor.\n * Keep indentation semantics aligned with flattenTree() so single-child chains don't drift right.\n */\nfunction recalculateVisualStructure(state: TreeListState): void {\n\tif (state.filteredNodes.length === 0) return;\n\n\tconst visibleIds = new Set(state.filteredNodes.map((n) => n.node.entry.id));\n\n\t// Build entry map for efficient parent lookup (using full tree)\n\tconst entryMap = new Map<string, FlatNode>();\n\tfor (const flatNode of state.flatNodes) {\n\t\tentryMap.set(flatNode.node.entry.id, flatNode);\n\t}\n\n\t// Find nearest visible ancestor for a node\n\tconst findVisibleAncestor = (nodeId: string): string | null => {\n\t\tlet currentId = entryMap.get(nodeId)?.node.entry.parentId ?? null;\n\t\twhile (currentId !== null) {\n\t\t\tif (visibleIds.has(currentId)) {\n\t\t\t\treturn currentId;\n\t\t\t}\n\t\t\tcurrentId = entryMap.get(currentId)?.node.entry.parentId ?? null;\n\t\t}\n\t\treturn null;\n\t};\n\n\t// Build visible tree structure:\n\t// - visibleParent: nodeId → nearest visible ancestor (or null for roots)\n\t// - visibleChildren: parentId → list of visible children (in filteredNodes order)\n\tconst visibleParent = new Map<string, string | null>();\n\tconst visibleChildren = new Map<string | null, string[]>();\n\tvisibleChildren.set(null, []); // root-level nodes\n\n\tfor (const flatNode of state.filteredNodes) {\n\t\tconst nodeId = flatNode.node.entry.id;\n\t\tconst ancestorId = findVisibleAncestor(nodeId);\n\t\tvisibleParent.set(nodeId, ancestorId);\n\n\t\tif (!visibleChildren.has(ancestorId)) {\n\t\t\tvisibleChildren.set(ancestorId, []);\n\t\t}\n\t\tvisibleChildren.get(ancestorId)!.push(nodeId);\n\t}\n\n\t// Update multipleRoots based on visible roots\n\tconst visibleRootIds = visibleChildren.get(null)!;\n\tstate.multipleRoots = visibleRootIds.length > 1;\n\n\t// Build a map for quick lookup: nodeId → FlatNode\n\tconst filteredNodeMap = new Map<string, FlatNode>();\n\tfor (const flatNode of state.filteredNodes) {\n\t\tfilteredNodeMap.set(flatNode.node.entry.id, flatNode);\n\t}\n\n\t// DFS over the visible tree using flattenTree() indentation semantics\n\t// Stack items: [nodeId, indent, justBranched, showConnector, isLast, gutters, isVirtualRootChild]\n\ttype StackItem = [string, number, boolean, boolean, boolean, GutterInfo[], boolean];\n\tconst stack: StackItem[] = [];\n\n\t// Add visible roots in reverse order (to process in forward order via stack)\n\tfor (let i = visibleRootIds.length - 1; i >= 0; i--) {\n\t\tconst isLast = i === visibleRootIds.length - 1;\n\t\tstack.push([\n\t\t\tvisibleRootIds[i],\n\t\t\tstate.multipleRoots ? 1 : 0,\n\t\t\tstate.multipleRoots,\n\t\t\tstate.multipleRoots,\n\t\t\tisLast,\n\t\t\t[],\n\t\t\tstate.multipleRoots,\n\t\t]);\n\t}\n\n\twhile (stack.length > 0) {\n\t\tconst [nodeId, indent, justBranched, showConnector, isLast, gutters, isVirtualRootChild] = stack.pop()!;\n\n\t\tconst flatNode = filteredNodeMap.get(nodeId);\n\t\tif (!flatNode) continue;\n\n\t\t// Update this node's visual properties\n\t\tflatNode.indent = indent;\n\t\tflatNode.showConnector = showConnector;\n\t\tflatNode.isLast = isLast;\n\t\tflatNode.gutters = gutters;\n\t\tflatNode.isVirtualRootChild = isVirtualRootChild;\n\n\t\t// Get visible children of this node\n\t\tconst children = visibleChildren.get(nodeId) || [];\n\t\tconst multipleChildren = children.length > 1;\n\n\t\t// Child indent follows flattenTree(): branch points (and first generation after a branch) shift +1\n\t\tlet childIndent: number;\n\t\tif (multipleChildren) {\n\t\t\tchildIndent = indent + 1;\n\t\t} else if (justBranched && indent > 0) {\n\t\t\tchildIndent = indent + 1;\n\t\t} else {\n\t\t\tchildIndent = indent;\n\t\t}\n\n\t\t// Child gutters follow flattenTree() connector/gutter rules\n\t\tconst connectorDisplayed = showConnector && !isVirtualRootChild;\n\t\tconst currentDisplayIndent = state.multipleRoots ? Math.max(0, indent - 1) : indent;\n\t\tconst connectorPosition = Math.max(0, currentDisplayIndent - 1);\n\t\tconst childGutters: GutterInfo[] = connectorDisplayed\n\t\t\t? [...gutters, { position: connectorPosition, show: !isLast }]\n\t\t\t: gutters;\n\n\t\t// Add children in reverse order (to process in forward order via stack)\n\t\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\t\tconst childIsLast = i === children.length - 1;\n\t\t\tstack.push([\n\t\t\t\tchildren[i],\n\t\t\t\tchildIndent,\n\t\t\t\tmultipleChildren,\n\t\t\t\tmultipleChildren,\n\t\t\t\tchildIsLast,\n\t\t\t\tchildGutters,\n\t\t\t\tfalse,\n\t\t\t]);\n\t\t}\n\t}\n\n\t// Store visible tree maps for ancestor/descendant lookups in navigation\n\tstate.visibleParentMap = visibleParent;\n\tstate.visibleChildrenMap = visibleChildren;\n}\n"]}
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import { getSearchableText, hasTextContent } from "./tree-selector-content.js";
|
|
2
|
+
export function flattenTree(roots, currentLeafId, toolCallMap) {
|
|
3
|
+
const result = [];
|
|
4
|
+
toolCallMap.clear();
|
|
5
|
+
const stack = [];
|
|
6
|
+
// Determine which subtrees contain the active leaf (to sort current branch first)
|
|
7
|
+
// Use iterative post-order traversal to avoid stack overflow
|
|
8
|
+
const containsActive = new Map();
|
|
9
|
+
const leafId = currentLeafId;
|
|
10
|
+
{
|
|
11
|
+
// Build list in pre-order, then process in reverse for post-order effect
|
|
12
|
+
const allNodes = [];
|
|
13
|
+
const preOrderStack = [...roots];
|
|
14
|
+
while (preOrderStack.length > 0) {
|
|
15
|
+
const node = preOrderStack.pop();
|
|
16
|
+
allNodes.push(node);
|
|
17
|
+
// Push children in reverse so they're processed left-to-right
|
|
18
|
+
for (let i = node.children.length - 1; i >= 0; i--) {
|
|
19
|
+
preOrderStack.push(node.children[i]);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Process in reverse (post-order): children before parents
|
|
23
|
+
for (let i = allNodes.length - 1; i >= 0; i--) {
|
|
24
|
+
const node = allNodes[i];
|
|
25
|
+
let has = leafId !== null && node.entry.id === leafId;
|
|
26
|
+
for (const child of node.children) {
|
|
27
|
+
if (containsActive.get(child)) {
|
|
28
|
+
has = true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
containsActive.set(node, has);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Add roots in reverse order, prioritizing the one containing the active leaf
|
|
35
|
+
// If multiple roots, treat them as children of a virtual root that branches
|
|
36
|
+
const multipleRoots = roots.length > 1;
|
|
37
|
+
const orderedRoots = [...roots].sort((a, b) => Number(containsActive.get(b)) - Number(containsActive.get(a)));
|
|
38
|
+
for (let i = orderedRoots.length - 1; i >= 0; i--) {
|
|
39
|
+
const isLast = i === orderedRoots.length - 1;
|
|
40
|
+
stack.push([orderedRoots[i], multipleRoots ? 1 : 0, multipleRoots, multipleRoots, isLast, [], multipleRoots]);
|
|
41
|
+
}
|
|
42
|
+
while (stack.length > 0) {
|
|
43
|
+
const [node, indent, justBranched, showConnector, isLast, gutters, isVirtualRootChild] = stack.pop();
|
|
44
|
+
// Extract tool calls from assistant messages for later lookup
|
|
45
|
+
const entry = node.entry;
|
|
46
|
+
if (entry.type === "message" && entry.message.role === "assistant") {
|
|
47
|
+
const content = entry.message.content;
|
|
48
|
+
if (Array.isArray(content)) {
|
|
49
|
+
for (const block of content) {
|
|
50
|
+
if (typeof block === "object" && block !== null && "type" in block && block.type === "toolCall") {
|
|
51
|
+
const tc = block;
|
|
52
|
+
toolCallMap.set(tc.id, { name: tc.name, arguments: tc.arguments });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
result.push({ node, indent, showConnector, isLast, gutters, isVirtualRootChild });
|
|
58
|
+
const children = node.children;
|
|
59
|
+
const multipleChildren = children.length > 1;
|
|
60
|
+
// Order children so the branch containing the active leaf comes first
|
|
61
|
+
const orderedChildren = (() => {
|
|
62
|
+
const prioritized = [];
|
|
63
|
+
const rest = [];
|
|
64
|
+
for (const child of children) {
|
|
65
|
+
if (containsActive.get(child)) {
|
|
66
|
+
prioritized.push(child);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
rest.push(child);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return [...prioritized, ...rest];
|
|
73
|
+
})();
|
|
74
|
+
// Calculate child indent
|
|
75
|
+
let childIndent;
|
|
76
|
+
if (multipleChildren) {
|
|
77
|
+
// Parent branches: children get +1
|
|
78
|
+
childIndent = indent + 1;
|
|
79
|
+
}
|
|
80
|
+
else if (justBranched && indent > 0) {
|
|
81
|
+
// First generation after a branch: +1 for visual grouping
|
|
82
|
+
childIndent = indent + 1;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Single-child chain: stay flat
|
|
86
|
+
childIndent = indent;
|
|
87
|
+
}
|
|
88
|
+
// Build gutters for children
|
|
89
|
+
// If this node showed a connector, add a gutter entry for descendants
|
|
90
|
+
// Only add gutter if connector is actually displayed (not suppressed for virtual root children)
|
|
91
|
+
const connectorDisplayed = showConnector && !isVirtualRootChild;
|
|
92
|
+
// When connector is displayed, add a gutter entry at the connector's position
|
|
93
|
+
// Connector is at position (displayIndent - 1), so gutter should be there too
|
|
94
|
+
const currentDisplayIndent = multipleRoots ? Math.max(0, indent - 1) : indent;
|
|
95
|
+
const connectorPosition = Math.max(0, currentDisplayIndent - 1);
|
|
96
|
+
const childGutters = connectorDisplayed
|
|
97
|
+
? [...gutters, { position: connectorPosition, show: !isLast }]
|
|
98
|
+
: gutters;
|
|
99
|
+
// Add children in reverse order
|
|
100
|
+
for (let i = orderedChildren.length - 1; i >= 0; i--) {
|
|
101
|
+
const childIsLast = i === orderedChildren.length - 1;
|
|
102
|
+
stack.push([
|
|
103
|
+
orderedChildren[i],
|
|
104
|
+
childIndent,
|
|
105
|
+
multipleChildren,
|
|
106
|
+
multipleChildren,
|
|
107
|
+
childIsLast,
|
|
108
|
+
childGutters,
|
|
109
|
+
false,
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
export function buildActivePath(flatNodes, currentLeafId, activePathIds) {
|
|
116
|
+
activePathIds.clear();
|
|
117
|
+
if (!currentLeafId)
|
|
118
|
+
return;
|
|
119
|
+
// Build a map of id -> entry for parent lookup
|
|
120
|
+
const entryMap = new Map();
|
|
121
|
+
for (const flatNode of flatNodes) {
|
|
122
|
+
entryMap.set(flatNode.node.entry.id, flatNode);
|
|
123
|
+
}
|
|
124
|
+
// Walk from leaf to root
|
|
125
|
+
let currentId = currentLeafId;
|
|
126
|
+
while (currentId) {
|
|
127
|
+
activePathIds.add(currentId);
|
|
128
|
+
const node = entryMap.get(currentId);
|
|
129
|
+
if (!node)
|
|
130
|
+
break;
|
|
131
|
+
currentId = node.node.entry.parentId ?? null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
export function findNearestVisibleIndex(flatNodes, filteredNodes, entryId) {
|
|
135
|
+
if (filteredNodes.length === 0)
|
|
136
|
+
return 0;
|
|
137
|
+
// Build a map for parent lookup
|
|
138
|
+
const entryMap = new Map();
|
|
139
|
+
for (const flatNode of flatNodes) {
|
|
140
|
+
entryMap.set(flatNode.node.entry.id, flatNode);
|
|
141
|
+
}
|
|
142
|
+
// Build a map of visible entry IDs to their indices in filteredNodes
|
|
143
|
+
const visibleIdToIndex = new Map(filteredNodes.map((node, i) => [node.node.entry.id, i]));
|
|
144
|
+
// Walk from entryId up to root, looking for a visible entry
|
|
145
|
+
let currentId = entryId;
|
|
146
|
+
while (currentId !== null) {
|
|
147
|
+
const index = visibleIdToIndex.get(currentId);
|
|
148
|
+
if (index !== undefined)
|
|
149
|
+
return index;
|
|
150
|
+
const node = entryMap.get(currentId);
|
|
151
|
+
if (!node)
|
|
152
|
+
break;
|
|
153
|
+
currentId = node.node.entry.parentId ?? null;
|
|
154
|
+
}
|
|
155
|
+
// Fallback: last visible entry
|
|
156
|
+
return filteredNodes.length - 1;
|
|
157
|
+
}
|
|
158
|
+
export function applyTreeFilter(state) {
|
|
159
|
+
// Update lastSelectedId only when we have a valid selection (non-empty list)
|
|
160
|
+
// This preserves the selection when switching through empty filter results
|
|
161
|
+
if (state.filteredNodes.length > 0) {
|
|
162
|
+
state.lastSelectedId = state.filteredNodes[state.selectedIndex]?.node.entry.id ?? state.lastSelectedId;
|
|
163
|
+
}
|
|
164
|
+
const searchTokens = state.searchQuery.toLowerCase().split(/\s+/).filter(Boolean);
|
|
165
|
+
state.filteredNodes = state.flatNodes.filter((flatNode) => {
|
|
166
|
+
const entry = flatNode.node.entry;
|
|
167
|
+
const isCurrentLeaf = entry.id === state.currentLeafId;
|
|
168
|
+
// Skip assistant messages with only tool calls (no text) unless error/aborted
|
|
169
|
+
// Always show current leaf so active position is visible
|
|
170
|
+
if (entry.type === "message" && entry.message.role === "assistant" && !isCurrentLeaf) {
|
|
171
|
+
const msg = entry.message;
|
|
172
|
+
const hasText = hasTextContent(msg.content);
|
|
173
|
+
const isErrorOrAborted = msg.stopReason && msg.stopReason !== "stop" && msg.stopReason !== "toolUse";
|
|
174
|
+
// Only hide if no text AND not an error/aborted message
|
|
175
|
+
if (!hasText && !isErrorOrAborted) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Apply filter mode
|
|
180
|
+
let passesFilter = true;
|
|
181
|
+
// Entry types hidden in default view (settings/bookkeeping)
|
|
182
|
+
const isSettingsEntry = entry.type === "label" ||
|
|
183
|
+
entry.type === "custom" ||
|
|
184
|
+
entry.type === "model_change" ||
|
|
185
|
+
entry.type === "thinking_level_change" ||
|
|
186
|
+
entry.type === "context_window_change" ||
|
|
187
|
+
entry.type === "session_info";
|
|
188
|
+
switch (state.filterMode) {
|
|
189
|
+
case "user-only":
|
|
190
|
+
// Just user messages
|
|
191
|
+
passesFilter = entry.type === "message" && entry.message.role === "user";
|
|
192
|
+
break;
|
|
193
|
+
case "no-tools":
|
|
194
|
+
// Default minus tool results
|
|
195
|
+
passesFilter = !isSettingsEntry && !(entry.type === "message" && entry.message.role === "toolResult");
|
|
196
|
+
break;
|
|
197
|
+
case "labeled-only":
|
|
198
|
+
// Just labeled entries
|
|
199
|
+
passesFilter = flatNode.node.label !== undefined;
|
|
200
|
+
break;
|
|
201
|
+
case "all":
|
|
202
|
+
// Show everything
|
|
203
|
+
passesFilter = true;
|
|
204
|
+
break;
|
|
205
|
+
default:
|
|
206
|
+
// Default mode: hide settings/bookkeeping entries
|
|
207
|
+
passesFilter = !isSettingsEntry;
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
if (!passesFilter)
|
|
211
|
+
return false;
|
|
212
|
+
// Apply search filter
|
|
213
|
+
if (searchTokens.length > 0) {
|
|
214
|
+
const nodeText = getSearchableText(flatNode.node).toLowerCase();
|
|
215
|
+
return searchTokens.every((token) => nodeText.includes(token));
|
|
216
|
+
}
|
|
217
|
+
return true;
|
|
218
|
+
});
|
|
219
|
+
// Filter out descendants of folded nodes.
|
|
220
|
+
if (state.foldedNodes.size > 0) {
|
|
221
|
+
const skipSet = new Set();
|
|
222
|
+
for (const flatNode of state.flatNodes) {
|
|
223
|
+
const { id, parentId } = flatNode.node.entry;
|
|
224
|
+
if (parentId != null && (state.foldedNodes.has(parentId) || skipSet.has(parentId))) {
|
|
225
|
+
skipSet.add(id);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
state.filteredNodes = state.filteredNodes.filter((flatNode) => !skipSet.has(flatNode.node.entry.id));
|
|
229
|
+
}
|
|
230
|
+
// Recalculate visual structure (indent, connectors, gutters) based on visible tree
|
|
231
|
+
recalculateVisualStructure(state);
|
|
232
|
+
// Try to preserve cursor on the same node, or find nearest visible ancestor
|
|
233
|
+
if (state.lastSelectedId) {
|
|
234
|
+
state.selectedIndex = findNearestVisibleIndex(state.flatNodes, state.filteredNodes, state.lastSelectedId);
|
|
235
|
+
}
|
|
236
|
+
else if (state.selectedIndex >= state.filteredNodes.length) {
|
|
237
|
+
// Clamp index if out of bounds
|
|
238
|
+
state.selectedIndex = Math.max(0, state.filteredNodes.length - 1);
|
|
239
|
+
}
|
|
240
|
+
// Update lastSelectedId to the actual selection (may have changed due to parent walk)
|
|
241
|
+
if (state.filteredNodes.length > 0) {
|
|
242
|
+
state.lastSelectedId = state.filteredNodes[state.selectedIndex]?.node.entry.id ?? state.lastSelectedId;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Recompute indentation/connectors for the filtered view
|
|
247
|
+
*
|
|
248
|
+
* Filtering can hide intermediate entries; descendants attach to the nearest visible ancestor.
|
|
249
|
+
* Keep indentation semantics aligned with flattenTree() so single-child chains don't drift right.
|
|
250
|
+
*/
|
|
251
|
+
function recalculateVisualStructure(state) {
|
|
252
|
+
if (state.filteredNodes.length === 0)
|
|
253
|
+
return;
|
|
254
|
+
const visibleIds = new Set(state.filteredNodes.map((n) => n.node.entry.id));
|
|
255
|
+
// Build entry map for efficient parent lookup (using full tree)
|
|
256
|
+
const entryMap = new Map();
|
|
257
|
+
for (const flatNode of state.flatNodes) {
|
|
258
|
+
entryMap.set(flatNode.node.entry.id, flatNode);
|
|
259
|
+
}
|
|
260
|
+
// Find nearest visible ancestor for a node
|
|
261
|
+
const findVisibleAncestor = (nodeId) => {
|
|
262
|
+
let currentId = entryMap.get(nodeId)?.node.entry.parentId ?? null;
|
|
263
|
+
while (currentId !== null) {
|
|
264
|
+
if (visibleIds.has(currentId)) {
|
|
265
|
+
return currentId;
|
|
266
|
+
}
|
|
267
|
+
currentId = entryMap.get(currentId)?.node.entry.parentId ?? null;
|
|
268
|
+
}
|
|
269
|
+
return null;
|
|
270
|
+
};
|
|
271
|
+
// Build visible tree structure:
|
|
272
|
+
// - visibleParent: nodeId → nearest visible ancestor (or null for roots)
|
|
273
|
+
// - visibleChildren: parentId → list of visible children (in filteredNodes order)
|
|
274
|
+
const visibleParent = new Map();
|
|
275
|
+
const visibleChildren = new Map();
|
|
276
|
+
visibleChildren.set(null, []); // root-level nodes
|
|
277
|
+
for (const flatNode of state.filteredNodes) {
|
|
278
|
+
const nodeId = flatNode.node.entry.id;
|
|
279
|
+
const ancestorId = findVisibleAncestor(nodeId);
|
|
280
|
+
visibleParent.set(nodeId, ancestorId);
|
|
281
|
+
if (!visibleChildren.has(ancestorId)) {
|
|
282
|
+
visibleChildren.set(ancestorId, []);
|
|
283
|
+
}
|
|
284
|
+
visibleChildren.get(ancestorId).push(nodeId);
|
|
285
|
+
}
|
|
286
|
+
// Update multipleRoots based on visible roots
|
|
287
|
+
const visibleRootIds = visibleChildren.get(null);
|
|
288
|
+
state.multipleRoots = visibleRootIds.length > 1;
|
|
289
|
+
// Build a map for quick lookup: nodeId → FlatNode
|
|
290
|
+
const filteredNodeMap = new Map();
|
|
291
|
+
for (const flatNode of state.filteredNodes) {
|
|
292
|
+
filteredNodeMap.set(flatNode.node.entry.id, flatNode);
|
|
293
|
+
}
|
|
294
|
+
const stack = [];
|
|
295
|
+
// Add visible roots in reverse order (to process in forward order via stack)
|
|
296
|
+
for (let i = visibleRootIds.length - 1; i >= 0; i--) {
|
|
297
|
+
const isLast = i === visibleRootIds.length - 1;
|
|
298
|
+
stack.push([
|
|
299
|
+
visibleRootIds[i],
|
|
300
|
+
state.multipleRoots ? 1 : 0,
|
|
301
|
+
state.multipleRoots,
|
|
302
|
+
state.multipleRoots,
|
|
303
|
+
isLast,
|
|
304
|
+
[],
|
|
305
|
+
state.multipleRoots,
|
|
306
|
+
]);
|
|
307
|
+
}
|
|
308
|
+
while (stack.length > 0) {
|
|
309
|
+
const [nodeId, indent, justBranched, showConnector, isLast, gutters, isVirtualRootChild] = stack.pop();
|
|
310
|
+
const flatNode = filteredNodeMap.get(nodeId);
|
|
311
|
+
if (!flatNode)
|
|
312
|
+
continue;
|
|
313
|
+
// Update this node's visual properties
|
|
314
|
+
flatNode.indent = indent;
|
|
315
|
+
flatNode.showConnector = showConnector;
|
|
316
|
+
flatNode.isLast = isLast;
|
|
317
|
+
flatNode.gutters = gutters;
|
|
318
|
+
flatNode.isVirtualRootChild = isVirtualRootChild;
|
|
319
|
+
// Get visible children of this node
|
|
320
|
+
const children = visibleChildren.get(nodeId) || [];
|
|
321
|
+
const multipleChildren = children.length > 1;
|
|
322
|
+
// Child indent follows flattenTree(): branch points (and first generation after a branch) shift +1
|
|
323
|
+
let childIndent;
|
|
324
|
+
if (multipleChildren) {
|
|
325
|
+
childIndent = indent + 1;
|
|
326
|
+
}
|
|
327
|
+
else if (justBranched && indent > 0) {
|
|
328
|
+
childIndent = indent + 1;
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
childIndent = indent;
|
|
332
|
+
}
|
|
333
|
+
// Child gutters follow flattenTree() connector/gutter rules
|
|
334
|
+
const connectorDisplayed = showConnector && !isVirtualRootChild;
|
|
335
|
+
const currentDisplayIndent = state.multipleRoots ? Math.max(0, indent - 1) : indent;
|
|
336
|
+
const connectorPosition = Math.max(0, currentDisplayIndent - 1);
|
|
337
|
+
const childGutters = connectorDisplayed
|
|
338
|
+
? [...gutters, { position: connectorPosition, show: !isLast }]
|
|
339
|
+
: gutters;
|
|
340
|
+
// Add children in reverse order (to process in forward order via stack)
|
|
341
|
+
for (let i = children.length - 1; i >= 0; i--) {
|
|
342
|
+
const childIsLast = i === children.length - 1;
|
|
343
|
+
stack.push([
|
|
344
|
+
children[i],
|
|
345
|
+
childIndent,
|
|
346
|
+
multipleChildren,
|
|
347
|
+
multipleChildren,
|
|
348
|
+
childIsLast,
|
|
349
|
+
childGutters,
|
|
350
|
+
false,
|
|
351
|
+
]);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
// Store visible tree maps for ancestor/descendant lookups in navigation
|
|
355
|
+
state.visibleParentMap = visibleParent;
|
|
356
|
+
state.visibleChildrenMap = visibleChildren;
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=tree-selector-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-selector-model.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tree-selector-model.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SessionTreeNode } from \"../../../core/session-manager.ts\";\nimport { getSearchableText, hasTextContent } from \"./tree-selector-content.ts\";\nimport type { FlatNode, GutterInfo, ToolCallInfo, TreeListState } from \"./tree-selector-types.ts\";\n\nexport function flattenTree(\n\troots: SessionTreeNode[],\n\tcurrentLeafId: string | null,\n\ttoolCallMap: Map<string, ToolCallInfo>,\n): FlatNode[] {\n\tconst result: FlatNode[] = [];\n\ttoolCallMap.clear();\n\n\t// Indentation rules:\n\t// - At indent 0: stay at 0 unless parent has >1 children (then +1)\n\t// - At indent 1: children always go to indent 2 (visual grouping of subtree)\n\t// - At indent 2+: stay flat for single-child chains, +1 only if parent branches\n\n\t// Stack items: [node, indent, justBranched, showConnector, isLast, gutters, isVirtualRootChild]\n\ttype StackItem = [SessionTreeNode, number, boolean, boolean, boolean, GutterInfo[], boolean];\n\tconst stack: StackItem[] = [];\n\n\t// Determine which subtrees contain the active leaf (to sort current branch first)\n\t// Use iterative post-order traversal to avoid stack overflow\n\tconst containsActive = new Map<SessionTreeNode, boolean>();\n\tconst leafId = currentLeafId;\n\t{\n\t\t// Build list in pre-order, then process in reverse for post-order effect\n\t\tconst allNodes: SessionTreeNode[] = [];\n\t\tconst preOrderStack: SessionTreeNode[] = [...roots];\n\t\twhile (preOrderStack.length > 0) {\n\t\t\tconst node = preOrderStack.pop()!;\n\t\t\tallNodes.push(node);\n\t\t\t// Push children in reverse so they're processed left-to-right\n\t\t\tfor (let i = node.children.length - 1; i >= 0; i--) {\n\t\t\t\tpreOrderStack.push(node.children[i]);\n\t\t\t}\n\t\t}\n\t\t// Process in reverse (post-order): children before parents\n\t\tfor (let i = allNodes.length - 1; i >= 0; i--) {\n\t\t\tconst node = allNodes[i];\n\t\t\tlet has = leafId !== null && node.entry.id === leafId;\n\t\t\tfor (const child of node.children) {\n\t\t\t\tif (containsActive.get(child)) {\n\t\t\t\t\thas = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontainsActive.set(node, has);\n\t\t}\n\t}\n\n\t// Add roots in reverse order, prioritizing the one containing the active leaf\n\t// If multiple roots, treat them as children of a virtual root that branches\n\tconst multipleRoots = roots.length > 1;\n\tconst orderedRoots = [...roots].sort((a, b) => Number(containsActive.get(b)) - Number(containsActive.get(a)));\n\tfor (let i = orderedRoots.length - 1; i >= 0; i--) {\n\t\tconst isLast = i === orderedRoots.length - 1;\n\t\tstack.push([orderedRoots[i], multipleRoots ? 1 : 0, multipleRoots, multipleRoots, isLast, [], multipleRoots]);\n\t}\n\n\twhile (stack.length > 0) {\n\t\tconst [node, indent, justBranched, showConnector, isLast, gutters, isVirtualRootChild] = stack.pop()!;\n\n\t\t// Extract tool calls from assistant messages for later lookup\n\t\tconst entry = node.entry;\n\t\tif (entry.type === \"message\" && entry.message.role === \"assistant\") {\n\t\t\tconst content = (entry.message as { content?: unknown }).content;\n\t\t\tif (Array.isArray(content)) {\n\t\t\t\tfor (const block of content) {\n\t\t\t\t\tif (typeof block === \"object\" && block !== null && \"type\" in block && block.type === \"toolCall\") {\n\t\t\t\t\t\tconst tc = block as { id: string; name: string; arguments: Record<string, unknown> };\n\t\t\t\t\t\ttoolCallMap.set(tc.id, { name: tc.name, arguments: tc.arguments });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tresult.push({ node, indent, showConnector, isLast, gutters, isVirtualRootChild });\n\n\t\tconst children = node.children;\n\t\tconst multipleChildren = children.length > 1;\n\n\t\t// Order children so the branch containing the active leaf comes first\n\t\tconst orderedChildren = (() => {\n\t\t\tconst prioritized: SessionTreeNode[] = [];\n\t\t\tconst rest: SessionTreeNode[] = [];\n\t\t\tfor (const child of children) {\n\t\t\t\tif (containsActive.get(child)) {\n\t\t\t\t\tprioritized.push(child);\n\t\t\t\t} else {\n\t\t\t\t\trest.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn [...prioritized, ...rest];\n\t\t})();\n\n\t\t// Calculate child indent\n\t\tlet childIndent: number;\n\t\tif (multipleChildren) {\n\t\t\t// Parent branches: children get +1\n\t\t\tchildIndent = indent + 1;\n\t\t} else if (justBranched && indent > 0) {\n\t\t\t// First generation after a branch: +1 for visual grouping\n\t\t\tchildIndent = indent + 1;\n\t\t} else {\n\t\t\t// Single-child chain: stay flat\n\t\t\tchildIndent = indent;\n\t\t}\n\n\t\t// Build gutters for children\n\t\t// If this node showed a connector, add a gutter entry for descendants\n\t\t// Only add gutter if connector is actually displayed (not suppressed for virtual root children)\n\t\tconst connectorDisplayed = showConnector && !isVirtualRootChild;\n\t\t// When connector is displayed, add a gutter entry at the connector's position\n\t\t// Connector is at position (displayIndent - 1), so gutter should be there too\n\t\tconst currentDisplayIndent = multipleRoots ? Math.max(0, indent - 1) : indent;\n\t\tconst connectorPosition = Math.max(0, currentDisplayIndent - 1);\n\t\tconst childGutters: GutterInfo[] = connectorDisplayed\n\t\t\t? [...gutters, { position: connectorPosition, show: !isLast }]\n\t\t\t: gutters;\n\n\t\t// Add children in reverse order\n\t\tfor (let i = orderedChildren.length - 1; i >= 0; i--) {\n\t\t\tconst childIsLast = i === orderedChildren.length - 1;\n\t\t\tstack.push([\n\t\t\t\torderedChildren[i],\n\t\t\t\tchildIndent,\n\t\t\t\tmultipleChildren,\n\t\t\t\tmultipleChildren,\n\t\t\t\tchildIsLast,\n\t\t\t\tchildGutters,\n\t\t\t\tfalse,\n\t\t\t]);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function buildActivePath(flatNodes: FlatNode[], currentLeafId: string | null, activePathIds: Set<string>): void {\n\tactivePathIds.clear();\n\tif (!currentLeafId) return;\n\n\t// Build a map of id -> entry for parent lookup\n\tconst entryMap = new Map<string, FlatNode>();\n\tfor (const flatNode of flatNodes) {\n\t\tentryMap.set(flatNode.node.entry.id, flatNode);\n\t}\n\n\t// Walk from leaf to root\n\tlet currentId: string | null = currentLeafId;\n\twhile (currentId) {\n\t\tactivePathIds.add(currentId);\n\t\tconst node = entryMap.get(currentId);\n\t\tif (!node) break;\n\t\tcurrentId = node.node.entry.parentId ?? null;\n\t}\n}\n\nexport function findNearestVisibleIndex(\n\tflatNodes: FlatNode[],\n\tfilteredNodes: FlatNode[],\n\tentryId: string | null,\n): number {\n\tif (filteredNodes.length === 0) return 0;\n\n\t// Build a map for parent lookup\n\tconst entryMap = new Map<string, FlatNode>();\n\tfor (const flatNode of flatNodes) {\n\t\tentryMap.set(flatNode.node.entry.id, flatNode);\n\t}\n\n\t// Build a map of visible entry IDs to their indices in filteredNodes\n\tconst visibleIdToIndex = new Map<string, number>(filteredNodes.map((node, i) => [node.node.entry.id, i]));\n\n\t// Walk from entryId up to root, looking for a visible entry\n\tlet currentId = entryId;\n\twhile (currentId !== null) {\n\t\tconst index = visibleIdToIndex.get(currentId);\n\t\tif (index !== undefined) return index;\n\t\tconst node = entryMap.get(currentId);\n\t\tif (!node) break;\n\t\tcurrentId = node.node.entry.parentId ?? null;\n\t}\n\n\t// Fallback: last visible entry\n\treturn filteredNodes.length - 1;\n}\n\nexport function applyTreeFilter(state: TreeListState): void {\n\t// Update lastSelectedId only when we have a valid selection (non-empty list)\n\t// This preserves the selection when switching through empty filter results\n\tif (state.filteredNodes.length > 0) {\n\t\tstate.lastSelectedId = state.filteredNodes[state.selectedIndex]?.node.entry.id ?? state.lastSelectedId;\n\t}\n\n\tconst searchTokens = state.searchQuery.toLowerCase().split(/\\s+/).filter(Boolean);\n\n\tstate.filteredNodes = state.flatNodes.filter((flatNode) => {\n\t\tconst entry = flatNode.node.entry;\n\t\tconst isCurrentLeaf = entry.id === state.currentLeafId;\n\n\t\t// Skip assistant messages with only tool calls (no text) unless error/aborted\n\t\t// Always show current leaf so active position is visible\n\t\tif (entry.type === \"message\" && entry.message.role === \"assistant\" && !isCurrentLeaf) {\n\t\t\tconst msg = entry.message as { stopReason?: string; content?: unknown };\n\t\t\tconst hasText = hasTextContent(msg.content);\n\t\t\tconst isErrorOrAborted = msg.stopReason && msg.stopReason !== \"stop\" && msg.stopReason !== \"toolUse\";\n\t\t\t// Only hide if no text AND not an error/aborted message\n\t\t\tif (!hasText && !isErrorOrAborted) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Apply filter mode\n\t\tlet passesFilter = true;\n\t\t// Entry types hidden in default view (settings/bookkeeping)\n\t\tconst isSettingsEntry =\n\t\t\tentry.type === \"label\" ||\n\t\t\tentry.type === \"custom\" ||\n\t\t\tentry.type === \"model_change\" ||\n\t\t\tentry.type === \"thinking_level_change\" ||\n\t\t\tentry.type === \"context_window_change\" ||\n\t\t\tentry.type === \"session_info\";\n\n\t\tswitch (state.filterMode) {\n\t\t\tcase \"user-only\":\n\t\t\t\t// Just user messages\n\t\t\t\tpassesFilter = entry.type === \"message\" && entry.message.role === \"user\";\n\t\t\t\tbreak;\n\t\t\tcase \"no-tools\":\n\t\t\t\t// Default minus tool results\n\t\t\t\tpassesFilter = !isSettingsEntry && !(entry.type === \"message\" && entry.message.role === \"toolResult\");\n\t\t\t\tbreak;\n\t\t\tcase \"labeled-only\":\n\t\t\t\t// Just labeled entries\n\t\t\t\tpassesFilter = flatNode.node.label !== undefined;\n\t\t\t\tbreak;\n\t\t\tcase \"all\":\n\t\t\t\t// Show everything\n\t\t\t\tpassesFilter = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Default mode: hide settings/bookkeeping entries\n\t\t\t\tpassesFilter = !isSettingsEntry;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (!passesFilter) return false;\n\n\t\t// Apply search filter\n\t\tif (searchTokens.length > 0) {\n\t\t\tconst nodeText = getSearchableText(flatNode.node).toLowerCase();\n\t\t\treturn searchTokens.every((token) => nodeText.includes(token));\n\t\t}\n\n\t\treturn true;\n\t});\n\n\t// Filter out descendants of folded nodes.\n\tif (state.foldedNodes.size > 0) {\n\t\tconst skipSet = new Set<string>();\n\t\tfor (const flatNode of state.flatNodes) {\n\t\t\tconst { id, parentId } = flatNode.node.entry;\n\t\t\tif (parentId != null && (state.foldedNodes.has(parentId) || skipSet.has(parentId))) {\n\t\t\t\tskipSet.add(id);\n\t\t\t}\n\t\t}\n\t\tstate.filteredNodes = state.filteredNodes.filter((flatNode) => !skipSet.has(flatNode.node.entry.id));\n\t}\n\n\t// Recalculate visual structure (indent, connectors, gutters) based on visible tree\n\trecalculateVisualStructure(state);\n\n\t// Try to preserve cursor on the same node, or find nearest visible ancestor\n\tif (state.lastSelectedId) {\n\t\tstate.selectedIndex = findNearestVisibleIndex(state.flatNodes, state.filteredNodes, state.lastSelectedId);\n\t} else if (state.selectedIndex >= state.filteredNodes.length) {\n\t\t// Clamp index if out of bounds\n\t\tstate.selectedIndex = Math.max(0, state.filteredNodes.length - 1);\n\t}\n\n\t// Update lastSelectedId to the actual selection (may have changed due to parent walk)\n\tif (state.filteredNodes.length > 0) {\n\t\tstate.lastSelectedId = state.filteredNodes[state.selectedIndex]?.node.entry.id ?? state.lastSelectedId;\n\t}\n}\n\n/**\n * Recompute indentation/connectors for the filtered view\n *\n * Filtering can hide intermediate entries; descendants attach to the nearest visible ancestor.\n * Keep indentation semantics aligned with flattenTree() so single-child chains don't drift right.\n */\nfunction recalculateVisualStructure(state: TreeListState): void {\n\tif (state.filteredNodes.length === 0) return;\n\n\tconst visibleIds = new Set(state.filteredNodes.map((n) => n.node.entry.id));\n\n\t// Build entry map for efficient parent lookup (using full tree)\n\tconst entryMap = new Map<string, FlatNode>();\n\tfor (const flatNode of state.flatNodes) {\n\t\tentryMap.set(flatNode.node.entry.id, flatNode);\n\t}\n\n\t// Find nearest visible ancestor for a node\n\tconst findVisibleAncestor = (nodeId: string): string | null => {\n\t\tlet currentId = entryMap.get(nodeId)?.node.entry.parentId ?? null;\n\t\twhile (currentId !== null) {\n\t\t\tif (visibleIds.has(currentId)) {\n\t\t\t\treturn currentId;\n\t\t\t}\n\t\t\tcurrentId = entryMap.get(currentId)?.node.entry.parentId ?? null;\n\t\t}\n\t\treturn null;\n\t};\n\n\t// Build visible tree structure:\n\t// - visibleParent: nodeId → nearest visible ancestor (or null for roots)\n\t// - visibleChildren: parentId → list of visible children (in filteredNodes order)\n\tconst visibleParent = new Map<string, string | null>();\n\tconst visibleChildren = new Map<string | null, string[]>();\n\tvisibleChildren.set(null, []); // root-level nodes\n\n\tfor (const flatNode of state.filteredNodes) {\n\t\tconst nodeId = flatNode.node.entry.id;\n\t\tconst ancestorId = findVisibleAncestor(nodeId);\n\t\tvisibleParent.set(nodeId, ancestorId);\n\n\t\tif (!visibleChildren.has(ancestorId)) {\n\t\t\tvisibleChildren.set(ancestorId, []);\n\t\t}\n\t\tvisibleChildren.get(ancestorId)!.push(nodeId);\n\t}\n\n\t// Update multipleRoots based on visible roots\n\tconst visibleRootIds = visibleChildren.get(null)!;\n\tstate.multipleRoots = visibleRootIds.length > 1;\n\n\t// Build a map for quick lookup: nodeId → FlatNode\n\tconst filteredNodeMap = new Map<string, FlatNode>();\n\tfor (const flatNode of state.filteredNodes) {\n\t\tfilteredNodeMap.set(flatNode.node.entry.id, flatNode);\n\t}\n\n\t// DFS over the visible tree using flattenTree() indentation semantics\n\t// Stack items: [nodeId, indent, justBranched, showConnector, isLast, gutters, isVirtualRootChild]\n\ttype StackItem = [string, number, boolean, boolean, boolean, GutterInfo[], boolean];\n\tconst stack: StackItem[] = [];\n\n\t// Add visible roots in reverse order (to process in forward order via stack)\n\tfor (let i = visibleRootIds.length - 1; i >= 0; i--) {\n\t\tconst isLast = i === visibleRootIds.length - 1;\n\t\tstack.push([\n\t\t\tvisibleRootIds[i],\n\t\t\tstate.multipleRoots ? 1 : 0,\n\t\t\tstate.multipleRoots,\n\t\t\tstate.multipleRoots,\n\t\t\tisLast,\n\t\t\t[],\n\t\t\tstate.multipleRoots,\n\t\t]);\n\t}\n\n\twhile (stack.length > 0) {\n\t\tconst [nodeId, indent, justBranched, showConnector, isLast, gutters, isVirtualRootChild] = stack.pop()!;\n\n\t\tconst flatNode = filteredNodeMap.get(nodeId);\n\t\tif (!flatNode) continue;\n\n\t\t// Update this node's visual properties\n\t\tflatNode.indent = indent;\n\t\tflatNode.showConnector = showConnector;\n\t\tflatNode.isLast = isLast;\n\t\tflatNode.gutters = gutters;\n\t\tflatNode.isVirtualRootChild = isVirtualRootChild;\n\n\t\t// Get visible children of this node\n\t\tconst children = visibleChildren.get(nodeId) || [];\n\t\tconst multipleChildren = children.length > 1;\n\n\t\t// Child indent follows flattenTree(): branch points (and first generation after a branch) shift +1\n\t\tlet childIndent: number;\n\t\tif (multipleChildren) {\n\t\t\tchildIndent = indent + 1;\n\t\t} else if (justBranched && indent > 0) {\n\t\t\tchildIndent = indent + 1;\n\t\t} else {\n\t\t\tchildIndent = indent;\n\t\t}\n\n\t\t// Child gutters follow flattenTree() connector/gutter rules\n\t\tconst connectorDisplayed = showConnector && !isVirtualRootChild;\n\t\tconst currentDisplayIndent = state.multipleRoots ? Math.max(0, indent - 1) : indent;\n\t\tconst connectorPosition = Math.max(0, currentDisplayIndent - 1);\n\t\tconst childGutters: GutterInfo[] = connectorDisplayed\n\t\t\t? [...gutters, { position: connectorPosition, show: !isLast }]\n\t\t\t: gutters;\n\n\t\t// Add children in reverse order (to process in forward order via stack)\n\t\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\t\tconst childIsLast = i === children.length - 1;\n\t\t\tstack.push([\n\t\t\t\tchildren[i],\n\t\t\t\tchildIndent,\n\t\t\t\tmultipleChildren,\n\t\t\t\tmultipleChildren,\n\t\t\t\tchildIsLast,\n\t\t\t\tchildGutters,\n\t\t\t\tfalse,\n\t\t\t]);\n\t\t}\n\t}\n\n\t// Store visible tree maps for ancestor/descendant lookups in navigation\n\tstate.visibleParentMap = visibleParent;\n\tstate.visibleChildrenMap = visibleChildren;\n}\n"]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { SessionTreeNode } from "../../../core/session-manager.ts";
|
|
2
|
+
/** Gutter info: position (displayIndent where connector was) and whether to show │ */
|
|
3
|
+
export interface GutterInfo {
|
|
4
|
+
position: number;
|
|
5
|
+
show: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** Flattened tree node for navigation */
|
|
8
|
+
export interface FlatNode {
|
|
9
|
+
node: SessionTreeNode;
|
|
10
|
+
/** Indentation level (each level = 3 chars) */
|
|
11
|
+
indent: number;
|
|
12
|
+
/** Whether to show connector (├─ or └─) - true if parent has multiple children */
|
|
13
|
+
showConnector: boolean;
|
|
14
|
+
/** If showConnector, true = last sibling (└─), false = not last (├─) */
|
|
15
|
+
isLast: boolean;
|
|
16
|
+
/** Gutter info for each ancestor branch point */
|
|
17
|
+
gutters: GutterInfo[];
|
|
18
|
+
/** True if this node is a root under a virtual branching root (multiple roots) */
|
|
19
|
+
isVirtualRootChild: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface HorizontalViewportRow {
|
|
22
|
+
gutter: string;
|
|
23
|
+
body: string;
|
|
24
|
+
anchorCol: number;
|
|
25
|
+
bodyWidth: number;
|
|
26
|
+
isSelected: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare const TREE_GUTTER_WIDTH = 2;
|
|
29
|
+
export declare const MIN_VISIBLE_ANCHOR_CONTENT_WIDTH = 4;
|
|
30
|
+
export declare const MAX_VISIBLE_ANCHOR_CONTENT_WIDTH = 20;
|
|
31
|
+
export declare const MIN_ANCHOR_CONTEXT_WIDTH = 2;
|
|
32
|
+
export declare const MAX_ANCHOR_CONTEXT_WIDTH = 12;
|
|
33
|
+
/** Filter mode for tree display */
|
|
34
|
+
export type FilterMode = "default" | "no-tools" | "user-only" | "labeled-only" | "all";
|
|
35
|
+
/** Tool call info for lookup */
|
|
36
|
+
export interface ToolCallInfo {
|
|
37
|
+
name: string;
|
|
38
|
+
arguments: Record<string, unknown>;
|
|
39
|
+
}
|
|
40
|
+
export interface TreeListState {
|
|
41
|
+
flatNodes: FlatNode[];
|
|
42
|
+
filteredNodes: FlatNode[];
|
|
43
|
+
selectedIndex: number;
|
|
44
|
+
currentLeafId: string | null;
|
|
45
|
+
maxVisibleLines: number;
|
|
46
|
+
filterMode: FilterMode;
|
|
47
|
+
searchQuery: string;
|
|
48
|
+
toolCallMap: Map<string, ToolCallInfo>;
|
|
49
|
+
multipleRoots: boolean;
|
|
50
|
+
showLabelTimestamps: boolean;
|
|
51
|
+
activePathIds: Set<string>;
|
|
52
|
+
visibleParentMap: Map<string, string | null>;
|
|
53
|
+
visibleChildrenMap: Map<string | null, string[]>;
|
|
54
|
+
lastSelectedId: string | null;
|
|
55
|
+
foldedNodes: Set<string>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=tree-selector-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-selector-types.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tree-selector-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,sFAAsF;AACtF,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACd;AAED,yCAAyC;AACzC,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,eAAe,CAAC;IACtB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,aAAa,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,kFAAkF;IAClF,kBAAkB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,gCAAgC,KAAK,CAAC;AACnD,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,mCAAmC;AACnC,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,KAAK,CAAC;AAEvF,gCAAgC;AAChC,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,kBAAkB,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB","sourcesContent":["import type { SessionTreeNode } from \"../../../core/session-manager.ts\";\n\n/** Gutter info: position (displayIndent where connector was) and whether to show │ */\nexport interface GutterInfo {\n\tposition: number; // displayIndent level where the connector was shown\n\tshow: boolean; // true = show │, false = show spaces\n}\n\n/** Flattened tree node for navigation */\nexport interface FlatNode {\n\tnode: SessionTreeNode;\n\t/** Indentation level (each level = 3 chars) */\n\tindent: number;\n\t/** Whether to show connector (├─ or └─) - true if parent has multiple children */\n\tshowConnector: boolean;\n\t/** If showConnector, true = last sibling (└─), false = not last (├─) */\n\tisLast: boolean;\n\t/** Gutter info for each ancestor branch point */\n\tgutters: GutterInfo[];\n\t/** True if this node is a root under a virtual branching root (multiple roots) */\n\tisVirtualRootChild: boolean;\n}\n\nexport interface HorizontalViewportRow {\n\tgutter: string;\n\tbody: string;\n\tanchorCol: number;\n\tbodyWidth: number;\n\tisSelected: boolean;\n}\n\nexport const TREE_GUTTER_WIDTH = 2;\nexport const MIN_VISIBLE_ANCHOR_CONTENT_WIDTH = 4;\nexport const MAX_VISIBLE_ANCHOR_CONTENT_WIDTH = 20;\nexport const MIN_ANCHOR_CONTEXT_WIDTH = 2;\nexport const MAX_ANCHOR_CONTEXT_WIDTH = 12;\n\n/** Filter mode for tree display */\nexport type FilterMode = \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\n/** Tool call info for lookup */\nexport interface ToolCallInfo {\n\tname: string;\n\targuments: Record<string, unknown>;\n}\n\nexport interface TreeListState {\n\tflatNodes: FlatNode[];\n\tfilteredNodes: FlatNode[];\n\tselectedIndex: number;\n\tcurrentLeafId: string | null;\n\tmaxVisibleLines: number;\n\tfilterMode: FilterMode;\n\tsearchQuery: string;\n\ttoolCallMap: Map<string, ToolCallInfo>;\n\tmultipleRoots: boolean;\n\tshowLabelTimestamps: boolean;\n\tactivePathIds: Set<string>;\n\tvisibleParentMap: Map<string, string | null>;\n\tvisibleChildrenMap: Map<string | null, string[]>;\n\tlastSelectedId: string | null;\n\tfoldedNodes: Set<string>;\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const TREE_GUTTER_WIDTH = 2;
|
|
2
|
+
export const MIN_VISIBLE_ANCHOR_CONTENT_WIDTH = 4;
|
|
3
|
+
export const MAX_VISIBLE_ANCHOR_CONTENT_WIDTH = 20;
|
|
4
|
+
export const MIN_ANCHOR_CONTEXT_WIDTH = 2;
|
|
5
|
+
export const MAX_ANCHOR_CONTEXT_WIDTH = 12;
|
|
6
|
+
//# sourceMappingURL=tree-selector-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-selector-types.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tree-selector-types.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC","sourcesContent":["import type { SessionTreeNode } from \"../../../core/session-manager.ts\";\n\n/** Gutter info: position (displayIndent where connector was) and whether to show │ */\nexport interface GutterInfo {\n\tposition: number; // displayIndent level where the connector was shown\n\tshow: boolean; // true = show │, false = show spaces\n}\n\n/** Flattened tree node for navigation */\nexport interface FlatNode {\n\tnode: SessionTreeNode;\n\t/** Indentation level (each level = 3 chars) */\n\tindent: number;\n\t/** Whether to show connector (├─ or └─) - true if parent has multiple children */\n\tshowConnector: boolean;\n\t/** If showConnector, true = last sibling (└─), false = not last (├─) */\n\tisLast: boolean;\n\t/** Gutter info for each ancestor branch point */\n\tgutters: GutterInfo[];\n\t/** True if this node is a root under a virtual branching root (multiple roots) */\n\tisVirtualRootChild: boolean;\n}\n\nexport interface HorizontalViewportRow {\n\tgutter: string;\n\tbody: string;\n\tanchorCol: number;\n\tbodyWidth: number;\n\tisSelected: boolean;\n}\n\nexport const TREE_GUTTER_WIDTH = 2;\nexport const MIN_VISIBLE_ANCHOR_CONTENT_WIDTH = 4;\nexport const MAX_VISIBLE_ANCHOR_CONTENT_WIDTH = 20;\nexport const MIN_ANCHOR_CONTEXT_WIDTH = 2;\nexport const MAX_ANCHOR_CONTEXT_WIDTH = 12;\n\n/** Filter mode for tree display */\nexport type FilterMode = \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\n/** Tool call info for lookup */\nexport interface ToolCallInfo {\n\tname: string;\n\targuments: Record<string, unknown>;\n}\n\nexport interface TreeListState {\n\tflatNodes: FlatNode[];\n\tfilteredNodes: FlatNode[];\n\tselectedIndex: number;\n\tcurrentLeafId: string | null;\n\tmaxVisibleLines: number;\n\tfilterMode: FilterMode;\n\tsearchQuery: string;\n\ttoolCallMap: Map<string, ToolCallInfo>;\n\tmultipleRoots: boolean;\n\tshowLabelTimestamps: boolean;\n\tactivePathIds: Set<string>;\n\tvisibleParentMap: Map<string, string | null>;\n\tvisibleChildrenMap: Map<string | null, string[]>;\n\tlastSelectedId: string | null;\n\tfoldedNodes: Set<string>;\n}\n"]}
|