@bastani/atomic 0.8.31-alpha.5 → 0.9.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1401) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/dist/builtin/cursor/CHANGELOG.md +10 -1
  3. package/dist/builtin/cursor/package.json +2 -2
  4. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +44 -0
  5. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +271 -0
  6. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +231 -0
  7. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +5 -523
  8. package/dist/builtin/cursor/src/stream.ts +6 -70
  9. package/dist/builtin/cursor/src/transport-errors.ts +74 -0
  10. package/dist/builtin/cursor/src/transport-frame.ts +56 -0
  11. package/dist/builtin/cursor/src/transport-http2.ts +122 -0
  12. package/dist/builtin/cursor/src/transport-native-client.ts +161 -0
  13. package/dist/builtin/cursor/src/transport-run-stream.ts +188 -0
  14. package/dist/builtin/cursor/src/transport-timeouts.ts +87 -0
  15. package/dist/builtin/cursor/src/transport-types.ts +140 -0
  16. package/dist/builtin/cursor/src/transport.ts +24 -790
  17. package/dist/builtin/intercom/CHANGELOG.md +9 -0
  18. package/dist/builtin/intercom/broker/client.ts +0 -35
  19. package/dist/builtin/intercom/contact-supervisor-tool.ts +289 -0
  20. package/dist/builtin/intercom/index-heavy.ts +77 -1336
  21. package/dist/builtin/intercom/intercom-tool.ts +409 -0
  22. package/dist/builtin/intercom/intercom-utils.ts +401 -0
  23. package/dist/builtin/intercom/lifecycle.ts +133 -0
  24. package/dist/builtin/intercom/overlay.ts +96 -0
  25. package/dist/builtin/intercom/package.json +2 -2
  26. package/dist/builtin/intercom/subagent-relay.ts +137 -0
  27. package/dist/builtin/mcp/CHANGELOG.md +9 -0
  28. package/dist/builtin/mcp/config-write-utils.ts +104 -0
  29. package/dist/builtin/mcp/config.ts +4 -180
  30. package/dist/builtin/mcp/mcp-panel-renderer.ts +243 -0
  31. package/dist/builtin/mcp/mcp-panel-state.ts +227 -0
  32. package/dist/builtin/mcp/mcp-panel-types.ts +86 -0
  33. package/dist/builtin/mcp/mcp-panel.ts +145 -579
  34. package/dist/builtin/mcp/mcp-setup-panel.ts +4 -81
  35. package/dist/builtin/mcp/package.json +3 -3
  36. package/dist/builtin/mcp/proxy-auth.ts +61 -0
  37. package/dist/builtin/mcp/proxy-call.ts +373 -0
  38. package/dist/builtin/mcp/proxy-connect.ts +58 -0
  39. package/dist/builtin/mcp/proxy-info-modes.ts +326 -0
  40. package/dist/builtin/mcp/proxy-modes.ts +3 -805
  41. package/dist/builtin/mcp/proxy-types.ts +3 -0
  42. package/dist/builtin/mcp/ui-server-http.ts +81 -0
  43. package/dist/builtin/mcp/ui-server.ts +2 -127
  44. package/dist/builtin/subagents/CHANGELOG.md +9 -0
  45. package/dist/builtin/subagents/package.json +4 -4
  46. package/dist/builtin/subagents/src/agents/agent-discovery.ts +127 -0
  47. package/dist/builtin/subagents/src/agents/agent-loaders.ts +175 -0
  48. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +310 -0
  49. package/dist/builtin/subagents/src/agents/agent-management.ts +3 -309
  50. package/dist/builtin/subagents/src/agents/agent-overrides.ts +397 -0
  51. package/dist/builtin/subagents/src/agents/agent-paths.ts +88 -0
  52. package/dist/builtin/subagents/src/agents/agent-types.ts +136 -0
  53. package/dist/builtin/subagents/src/agents/agents.ts +22 -895
  54. package/dist/builtin/subagents/src/agents/skills-paths.ts +333 -0
  55. package/dist/builtin/subagents/src/agents/skills.ts +3 -326
  56. package/dist/builtin/subagents/src/extension/index.ts +4 -118
  57. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +13 -0
  58. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +401 -0
  59. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +131 -0
  60. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +213 -0
  61. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +84 -0
  62. package/dist/builtin/subagents/src/runs/background/async-execution.ts +13 -795
  63. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +215 -0
  64. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +136 -0
  65. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +105 -0
  66. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +112 -0
  67. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +159 -0
  68. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +127 -0
  69. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +427 -0
  70. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +273 -0
  71. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +269 -0
  72. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +196 -0
  73. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +70 -0
  74. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +44 -2233
  75. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-behavior.ts +75 -0
  76. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-component.ts +202 -0
  77. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-edit.ts +97 -0
  78. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-editor.ts +160 -0
  79. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-frame.ts +72 -0
  80. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-modes.ts +161 -0
  81. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-selectors.ts +203 -0
  82. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-selectors.ts +234 -0
  83. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-state.ts +103 -0
  84. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-types.ts +29 -0
  85. package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +4 -1328
  86. package/dist/builtin/subagents/src/runs/foreground/chain-execution-clarify.ts +117 -0
  87. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +35 -0
  88. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +194 -0
  89. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +183 -0
  90. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +185 -0
  91. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +229 -0
  92. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +194 -0
  93. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +94 -1043
  94. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +135 -0
  95. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +107 -0
  96. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-types.ts +17 -0
  97. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +454 -0
  98. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +219 -0
  99. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +77 -0
  100. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +34 -0
  101. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +56 -0
  102. package/dist/builtin/subagents/src/runs/foreground/execution.ts +6 -1082
  103. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +207 -0
  104. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +140 -0
  105. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +266 -0
  106. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +270 -0
  107. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +157 -0
  108. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +375 -0
  109. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +463 -0
  110. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +17 -0
  111. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +320 -0
  112. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +207 -0
  113. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +121 -0
  114. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +113 -0
  115. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +150 -2522
  116. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +0 -16
  117. package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +167 -0
  118. package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +219 -0
  119. package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +121 -0
  120. package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +289 -0
  121. package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +201 -0
  122. package/dist/builtin/subagents/src/runs/shared/nested-events.ts +50 -935
  123. package/dist/builtin/subagents/src/runs/shared/worktree.ts +0 -78
  124. package/dist/builtin/subagents/src/shared/types-async.ts +265 -0
  125. package/dist/builtin/subagents/src/shared/types-config.ts +125 -0
  126. package/dist/builtin/subagents/src/shared/types-depth.ts +121 -0
  127. package/dist/builtin/subagents/src/shared/types-output.ts +63 -0
  128. package/dist/builtin/subagents/src/shared/types-results.ts +318 -0
  129. package/dist/builtin/subagents/src/shared/types-runtime.ts +136 -0
  130. package/dist/builtin/subagents/src/shared/types.ts +10 -975
  131. package/dist/builtin/subagents/src/slash/slash-commands.ts +0 -12
  132. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +247 -0
  133. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +259 -0
  134. package/dist/builtin/subagents/src/tui/render-layout.ts +120 -0
  135. package/dist/builtin/subagents/src/tui/render-result-animation.ts +56 -0
  136. package/dist/builtin/subagents/src/tui/render-result-compact.ts +154 -0
  137. package/dist/builtin/subagents/src/tui/render-result.ts +390 -0
  138. package/dist/builtin/subagents/src/tui/render-stable-output.ts +83 -0
  139. package/dist/builtin/subagents/src/tui/render-status-progress.ts +133 -0
  140. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +166 -0
  141. package/dist/builtin/subagents/src/tui/render-widget.ts +273 -0
  142. package/dist/builtin/subagents/src/tui/render.ts +14 -1801
  143. package/dist/builtin/web-access/CHANGELOG.md +9 -0
  144. package/dist/builtin/web-access/content-tools.ts +348 -0
  145. package/dist/builtin/web-access/curator-page-assets/script-1.ts +400 -0
  146. package/dist/builtin/web-access/curator-page-assets/script-2.ts +400 -0
  147. package/dist/builtin/web-access/curator-page-assets/script-3.ts +400 -0
  148. package/dist/builtin/web-access/curator-page-assets/script-4.ts +400 -0
  149. package/dist/builtin/web-access/curator-page-assets/script-5.ts +398 -0
  150. package/dist/builtin/web-access/curator-page-assets/styles-1.ts +394 -0
  151. package/dist/builtin/web-access/curator-page-assets/styles-2.ts +394 -0
  152. package/dist/builtin/web-access/curator-page-assets/styles-3.ts +393 -0
  153. package/dist/builtin/web-access/curator-page.ts +17 -3180
  154. package/dist/builtin/web-access/curator-server-helpers.ts +115 -0
  155. package/dist/builtin/web-access/curator-server.ts +2 -113
  156. package/dist/builtin/web-access/exa-mcp.ts +218 -0
  157. package/dist/builtin/web-access/exa.ts +2 -207
  158. package/dist/builtin/web-access/extract-frames.ts +228 -0
  159. package/dist/builtin/web-access/extract.ts +13 -214
  160. package/dist/builtin/web-access/github-config.ts +156 -0
  161. package/dist/builtin/web-access/github-extract.ts +3 -154
  162. package/dist/builtin/web-access/index-heavy.ts +8 -1904
  163. package/dist/builtin/web-access/package.json +3 -2
  164. package/dist/builtin/web-access/web-search-activity.ts +102 -0
  165. package/dist/builtin/web-access/web-search-browser.ts +116 -0
  166. package/dist/builtin/web-access/web-search-command.ts +242 -0
  167. package/dist/builtin/web-access/web-search-config.ts +163 -0
  168. package/dist/builtin/web-access/web-search-curator.ts +214 -0
  169. package/dist/builtin/web-access/web-search-features.ts +165 -0
  170. package/dist/builtin/web-access/web-search-formatting.ts +117 -0
  171. package/dist/builtin/web-access/web-search-return.ts +136 -0
  172. package/dist/builtin/web-access/web-search-summary.ts +170 -0
  173. package/dist/builtin/web-access/web-search-tool.ts +290 -0
  174. package/dist/builtin/web-access/web-search-types.ts +50 -0
  175. package/dist/builtin/workflows/CHANGELOG.md +16 -1
  176. package/dist/builtin/workflows/README.md +189 -122
  177. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +492 -0
  178. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +346 -0
  179. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +36 -849
  180. package/dist/builtin/workflows/builtin/goal-artifacts.ts +43 -0
  181. package/dist/builtin/workflows/builtin/goal-ledger.ts +54 -0
  182. package/dist/builtin/workflows/builtin/goal-prompts.ts +360 -0
  183. package/dist/builtin/workflows/builtin/goal-reducer.ts +141 -0
  184. package/dist/builtin/workflows/builtin/goal-reports.ts +56 -0
  185. package/dist/builtin/workflows/builtin/goal-review.ts +84 -0
  186. package/dist/builtin/workflows/builtin/goal-runner.ts +336 -0
  187. package/dist/builtin/workflows/builtin/goal-schemas.ts +60 -0
  188. package/dist/builtin/workflows/builtin/goal-types.ts +132 -0
  189. package/dist/builtin/workflows/builtin/goal.ts +40 -1201
  190. package/dist/builtin/workflows/builtin/index.d.ts +1 -0
  191. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +432 -0
  192. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +476 -0
  193. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +312 -0
  194. package/dist/builtin/workflows/builtin/open-claude-design.d.ts +1 -0
  195. package/dist/builtin/workflows/builtin/open-claude-design.ts +47 -1131
  196. package/dist/builtin/workflows/builtin/ralph-core.ts +408 -0
  197. package/dist/builtin/workflows/builtin/ralph-models.ts +123 -0
  198. package/dist/builtin/workflows/builtin/ralph-runner.ts +499 -0
  199. package/dist/builtin/workflows/builtin/ralph.ts +50 -1019
  200. package/dist/builtin/workflows/package.json +2 -2
  201. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +2 -2
  202. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +2 -2
  203. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2 -2
  204. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +8 -1
  205. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +13 -15
  206. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +2 -2
  207. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +9 -0
  208. package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +41 -0
  209. package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +217 -0
  210. package/dist/builtin/workflows/src/authoring/workflow.ts +184 -0
  211. package/dist/builtin/workflows/src/authoring.d.ts +14 -66
  212. package/dist/builtin/workflows/src/engine/graph-inference.ts +100 -0
  213. package/dist/builtin/workflows/src/engine/options.ts +40 -0
  214. package/dist/builtin/workflows/src/engine/primitives/chain.ts +29 -0
  215. package/dist/builtin/workflows/src/engine/primitives/exit.ts +2 -0
  216. package/dist/builtin/workflows/src/engine/primitives/parallel.ts +47 -0
  217. package/dist/builtin/workflows/src/engine/primitives/task.ts +108 -0
  218. package/dist/builtin/workflows/src/engine/primitives/ui.ts +41 -0
  219. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +159 -0
  220. package/dist/builtin/workflows/src/engine/replay.ts +8 -0
  221. package/dist/builtin/workflows/src/engine/run.ts +356 -0
  222. package/dist/builtin/workflows/src/engine/runtime.ts +160 -0
  223. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +186 -0
  224. package/dist/builtin/workflows/src/extension/config-file-loader.ts +152 -0
  225. package/dist/builtin/workflows/src/extension/config-loader.ts +2 -167
  226. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +115 -0
  227. package/dist/builtin/workflows/src/extension/discovery.ts +3 -117
  228. package/dist/builtin/workflows/src/extension/extension-factory.ts +120 -0
  229. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +109 -0
  230. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +270 -0
  231. package/dist/builtin/workflows/src/extension/index.ts +42 -4166
  232. package/dist/builtin/workflows/src/extension/public-types.ts +295 -0
  233. package/dist/builtin/workflows/src/extension/render-component.ts +14 -0
  234. package/dist/builtin/workflows/src/extension/runtime-direct.ts +96 -0
  235. package/dist/builtin/workflows/src/extension/runtime.ts +1 -92
  236. package/dist/builtin/workflows/src/extension/ui-surface.ts +286 -0
  237. package/dist/builtin/workflows/src/extension/wiring.ts +6 -475
  238. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +111 -0
  239. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +213 -0
  240. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +81 -0
  241. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +181 -0
  242. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +9 -3
  243. package/dist/builtin/workflows/src/extension/workflow-policy.ts +15 -0
  244. package/dist/builtin/workflows/src/extension/workflow-ports.ts +41 -0
  245. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +23 -0
  246. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +286 -0
  247. package/dist/builtin/workflows/src/extension/workflow-schema.ts +1 -19
  248. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +264 -0
  249. package/dist/builtin/workflows/src/extension/workflow-targets.ts +181 -0
  250. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +175 -0
  251. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +205 -0
  252. package/dist/builtin/workflows/src/extension/workflow-tool-helpers.ts +66 -0
  253. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +164 -0
  254. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +54 -0
  255. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +164 -0
  256. package/dist/builtin/workflows/src/extension/workflow-tool.ts +102 -0
  257. package/dist/builtin/workflows/src/index.ts +0 -2
  258. package/dist/builtin/workflows/src/runs/background/runner.ts +6 -3
  259. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +431 -0
  260. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +232 -0
  261. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +74 -0
  262. package/dist/builtin/workflows/src/runs/foreground/executor-child-workflow.ts +1 -0
  263. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +167 -0
  264. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +450 -0
  265. package/dist/builtin/workflows/src/runs/foreground/executor-direct.ts +233 -0
  266. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +195 -0
  267. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +368 -0
  268. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +83 -0
  269. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +441 -0
  270. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +160 -0
  271. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +274 -0
  272. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +122 -0
  273. package/dist/builtin/workflows/src/runs/foreground/executor-run.ts +1 -0
  274. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +204 -0
  275. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +194 -0
  276. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +120 -0
  277. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +126 -0
  278. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +359 -0
  279. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +135 -0
  280. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +61 -0
  281. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +2 -0
  282. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +293 -0
  283. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +109 -0
  284. package/dist/builtin/workflows/src/runs/foreground/executor.ts +19 -5354
  285. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +219 -0
  286. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +500 -0
  287. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +129 -0
  288. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +53 -0
  289. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +146 -0
  290. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +55 -0
  291. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +82 -0
  292. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +141 -0
  293. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +13 -1355
  294. package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +2 -100
  295. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +453 -0
  296. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +442 -0
  297. package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +2 -836
  298. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +165 -0
  299. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +220 -0
  300. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +335 -0
  301. package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +92 -0
  302. package/dist/builtin/workflows/src/runs/shared/worktree.ts +18 -791
  303. package/dist/builtin/workflows/src/sdk-surface.ts +6 -9
  304. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +371 -0
  305. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +439 -0
  306. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +206 -0
  307. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +282 -0
  308. package/dist/builtin/workflows/src/shared/authoring-contract.d.ts +5 -598
  309. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +428 -0
  310. package/dist/builtin/workflows/src/shared/persistence-restore.ts +9 -431
  311. package/dist/builtin/workflows/src/shared/store-factory.ts +16 -0
  312. package/dist/builtin/workflows/src/shared/store-internal.ts +219 -0
  313. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +219 -0
  314. package/dist/builtin/workflows/src/shared/store-public-types.ts +215 -0
  315. package/dist/builtin/workflows/src/shared/store-run-methods.ts +223 -0
  316. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +305 -0
  317. package/dist/builtin/workflows/src/shared/store.ts +11 -1138
  318. package/dist/builtin/workflows/src/shared/types.ts +25 -8
  319. package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +49 -0
  320. package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +84 -0
  321. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +266 -0
  322. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +75 -0
  323. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +477 -0
  324. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +248 -0
  325. package/dist/builtin/workflows/src/shared/workflow-failures.ts +13 -1001
  326. package/dist/builtin/workflows/src/tui/chat-surface.ts +0 -66
  327. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +45 -0
  328. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +161 -0
  329. package/dist/builtin/workflows/src/tui/graph-view-input.ts +333 -0
  330. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +336 -0
  331. package/dist/builtin/workflows/src/tui/graph-view-render.ts +194 -0
  332. package/dist/builtin/workflows/src/tui/graph-view-state.ts +306 -0
  333. package/dist/builtin/workflows/src/tui/graph-view-types.ts +70 -0
  334. package/dist/builtin/workflows/src/tui/graph-view.ts +4 -1386
  335. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +121 -0
  336. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +11 -223
  337. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +151 -0
  338. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +305 -0
  339. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +300 -0
  340. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +190 -0
  341. package/dist/builtin/workflows/src/tui/inputs-picker.ts +19 -997
  342. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +226 -0
  343. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +373 -0
  344. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +116 -0
  345. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +61 -0
  346. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +129 -0
  347. package/dist/builtin/workflows/src/tui/prompt-card.ts +8 -910
  348. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +315 -0
  349. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +127 -0
  350. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +187 -0
  351. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +222 -0
  352. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +152 -0
  353. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +464 -0
  354. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +242 -0
  355. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +151 -0
  356. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +141 -1777
  357. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +85 -0
  358. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +1 -129
  359. package/dist/builtin/workflows/src/workflows/registry.ts +7 -3
  360. package/dist/config-self-update.d.ts +21 -0
  361. package/dist/config-self-update.d.ts.map +1 -0
  362. package/dist/config-self-update.js +265 -0
  363. package/dist/config-self-update.js.map +1 -0
  364. package/dist/config.d.ts +3 -12
  365. package/dist/config.d.ts.map +1 -1
  366. package/dist/config.js +15 -252
  367. package/dist/config.js.map +1 -1
  368. package/dist/core/agent-session-accessors.d.ts +3 -0
  369. package/dist/core/agent-session-accessors.d.ts.map +1 -0
  370. package/dist/core/agent-session-accessors.js +36 -0
  371. package/dist/core/agent-session-accessors.js.map +1 -0
  372. package/dist/core/agent-session-auto-compaction.d.ts +32 -0
  373. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -0
  374. package/dist/core/agent-session-auto-compaction.js +219 -0
  375. package/dist/core/agent-session-auto-compaction.js.map +1 -0
  376. package/dist/core/agent-session-bash.d.ts +30 -0
  377. package/dist/core/agent-session-bash.d.ts.map +1 -0
  378. package/dist/core/agent-session-bash.js +79 -0
  379. package/dist/core/agent-session-bash.js.map +1 -0
  380. package/dist/core/agent-session-compaction.d.ts +44 -0
  381. package/dist/core/agent-session-compaction.d.ts.map +1 -0
  382. package/dist/core/agent-session-compaction.js +282 -0
  383. package/dist/core/agent-session-compaction.js.map +1 -0
  384. package/dist/core/agent-session-events.d.ts +65 -0
  385. package/dist/core/agent-session-events.d.ts.map +1 -0
  386. package/dist/core/agent-session-events.js +373 -0
  387. package/dist/core/agent-session-events.js.map +1 -0
  388. package/dist/core/agent-session-export.d.ts +42 -0
  389. package/dist/core/agent-session-export.d.ts.map +1 -0
  390. package/dist/core/agent-session-export.js +199 -0
  391. package/dist/core/agent-session-export.js.map +1 -0
  392. package/dist/core/agent-session-extension-bindings.d.ts +37 -0
  393. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -0
  394. package/dist/core/agent-session-extension-bindings.js +231 -0
  395. package/dist/core/agent-session-extension-bindings.js.map +1 -0
  396. package/dist/core/agent-session-message-queue.d.ts +85 -0
  397. package/dist/core/agent-session-message-queue.d.ts.map +1 -0
  398. package/dist/core/agent-session-message-queue.js +264 -0
  399. package/dist/core/agent-session-message-queue.js.map +1 -0
  400. package/dist/core/agent-session-methods.d.ts +300 -0
  401. package/dist/core/agent-session-methods.d.ts.map +1 -0
  402. package/dist/core/agent-session-methods.js +2 -0
  403. package/dist/core/agent-session-methods.js.map +1 -0
  404. package/dist/core/agent-session-models.d.ts +111 -0
  405. package/dist/core/agent-session-models.d.ts.map +1 -0
  406. package/dist/core/agent-session-models.js +368 -0
  407. package/dist/core/agent-session-models.js.map +1 -0
  408. package/dist/core/agent-session-prompt.d.ts +61 -0
  409. package/dist/core/agent-session-prompt.d.ts.map +1 -0
  410. package/dist/core/agent-session-prompt.js +330 -0
  411. package/dist/core/agent-session-prompt.js.map +1 -0
  412. package/dist/core/agent-session-retry.d.ts +62 -0
  413. package/dist/core/agent-session-retry.d.ts.map +1 -0
  414. package/dist/core/agent-session-retry.js +202 -0
  415. package/dist/core/agent-session-retry.js.map +1 -0
  416. package/dist/core/agent-session-services.d.ts +0 -1
  417. package/dist/core/agent-session-services.d.ts.map +1 -1
  418. package/dist/core/agent-session-services.js +0 -1
  419. package/dist/core/agent-session-services.js.map +1 -1
  420. package/dist/core/agent-session-skill-block.d.ts +13 -0
  421. package/dist/core/agent-session-skill-block.d.ts.map +1 -0
  422. package/dist/core/agent-session-skill-block.js +37 -0
  423. package/dist/core/agent-session-skill-block.js.map +1 -0
  424. package/dist/core/agent-session-state.d.ts +48 -0
  425. package/dist/core/agent-session-state.d.ts.map +1 -0
  426. package/dist/core/agent-session-state.js +129 -0
  427. package/dist/core/agent-session-state.js.map +1 -0
  428. package/dist/core/agent-session-tool-hooks.d.ts +7 -0
  429. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -0
  430. package/dist/core/agent-session-tool-hooks.js +72 -0
  431. package/dist/core/agent-session-tool-hooks.js.map +1 -0
  432. package/dist/core/agent-session-tool-registry.d.ts +15 -0
  433. package/dist/core/agent-session-tool-registry.d.ts.map +1 -0
  434. package/dist/core/agent-session-tool-registry.js +149 -0
  435. package/dist/core/agent-session-tool-registry.js.map +1 -0
  436. package/dist/core/agent-session-tree.d.ts +46 -0
  437. package/dist/core/agent-session-tree.d.ts.map +1 -0
  438. package/dist/core/agent-session-tree.js +217 -0
  439. package/dist/core/agent-session-tree.js.map +1 -0
  440. package/dist/core/agent-session-types.d.ts +157 -0
  441. package/dist/core/agent-session-types.d.ts.map +1 -0
  442. package/dist/core/agent-session-types.js +41 -0
  443. package/dist/core/agent-session-types.js.map +1 -0
  444. package/dist/core/agent-session.d.ts +66 -688
  445. package/dist/core/agent-session.d.ts.map +1 -1
  446. package/dist/core/agent-session.js +26 -3153
  447. package/dist/core/agent-session.js.map +1 -1
  448. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  449. package/dist/core/atomic-guide-command.js +1 -1
  450. package/dist/core/atomic-guide-command.js.map +1 -1
  451. package/dist/core/auth-storage-backends.d.ts +49 -0
  452. package/dist/core/auth-storage-backends.d.ts.map +1 -0
  453. package/dist/core/auth-storage-backends.js +185 -0
  454. package/dist/core/auth-storage-backends.js.map +1 -0
  455. package/dist/core/auth-storage.d.ts +2 -49
  456. package/dist/core/auth-storage.d.ts.map +1 -1
  457. package/dist/core/auth-storage.js +3 -183
  458. package/dist/core/auth-storage.js.map +1 -1
  459. package/dist/core/compaction/context-compaction-metrics.d.ts +16 -0
  460. package/dist/core/compaction/context-compaction-metrics.d.ts.map +1 -0
  461. package/dist/core/compaction/context-compaction-metrics.js +58 -0
  462. package/dist/core/compaction/context-compaction-metrics.js.map +1 -0
  463. package/dist/core/compaction/context-compaction-prompt.d.ts +9 -0
  464. package/dist/core/compaction/context-compaction-prompt.d.ts.map +1 -0
  465. package/dist/core/compaction/context-compaction-prompt.js +161 -0
  466. package/dist/core/compaction/context-compaction-prompt.js.map +1 -0
  467. package/dist/core/compaction/context-compaction-runner.d.ts +5 -0
  468. package/dist/core/compaction/context-compaction-runner.d.ts.map +1 -0
  469. package/dist/core/compaction/context-compaction-runner.js +181 -0
  470. package/dist/core/compaction/context-compaction-runner.js.map +1 -0
  471. package/dist/core/compaction/context-compaction-strategy.d.ts +5 -0
  472. package/dist/core/compaction/context-compaction-strategy.d.ts.map +1 -0
  473. package/dist/core/compaction/context-compaction-strategy.js +27 -0
  474. package/dist/core/compaction/context-compaction-strategy.js.map +1 -0
  475. package/dist/core/compaction/context-compaction-types.d.ts +73 -0
  476. package/dist/core/compaction/context-compaction-types.d.ts.map +1 -0
  477. package/dist/core/compaction/context-compaction-types.js +6 -0
  478. package/dist/core/compaction/context-compaction-types.js.map +1 -0
  479. package/dist/core/compaction/context-compaction.d.ts +9 -200
  480. package/dist/core/compaction/context-compaction.d.ts.map +1 -1
  481. package/dist/core/compaction/context-compaction.js +7 -1943
  482. package/dist/core/compaction/context-compaction.js.map +1 -1
  483. package/dist/core/compaction/context-deletion-application.d.ts +13 -0
  484. package/dist/core/compaction/context-deletion-application.d.ts.map +1 -0
  485. package/dist/core/compaction/context-deletion-application.js +259 -0
  486. package/dist/core/compaction/context-deletion-application.js.map +1 -0
  487. package/dist/core/compaction/context-deletion-store.d.ts +78 -0
  488. package/dist/core/compaction/context-deletion-store.d.ts.map +1 -0
  489. package/dist/core/compaction/context-deletion-store.js +162 -0
  490. package/dist/core/compaction/context-deletion-store.js.map +1 -0
  491. package/dist/core/compaction/context-deletion-targets.d.ts +40 -0
  492. package/dist/core/compaction/context-deletion-targets.d.ts.map +1 -0
  493. package/dist/core/compaction/context-deletion-targets.js +267 -0
  494. package/dist/core/compaction/context-deletion-targets.js.map +1 -0
  495. package/dist/core/compaction/context-deletion-tool-definitions.d.ts +187 -0
  496. package/dist/core/compaction/context-deletion-tool-definitions.d.ts.map +1 -0
  497. package/dist/core/compaction/context-deletion-tool-definitions.js +98 -0
  498. package/dist/core/compaction/context-deletion-tool-definitions.js.map +1 -0
  499. package/dist/core/compaction/context-deletion-tool-helpers.d.ts +19 -0
  500. package/dist/core/compaction/context-deletion-tool-helpers.d.ts.map +1 -0
  501. package/dist/core/compaction/context-deletion-tool-helpers.js +137 -0
  502. package/dist/core/compaction/context-deletion-tool-helpers.js.map +1 -0
  503. package/dist/core/compaction/context-deletion-tools.d.ts +4 -0
  504. package/dist/core/compaction/context-deletion-tools.d.ts.map +1 -0
  505. package/dist/core/compaction/context-deletion-tools.js +395 -0
  506. package/dist/core/compaction/context-deletion-tools.js.map +1 -0
  507. package/dist/core/compaction/context-transcript-analysis.d.ts +9 -0
  508. package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -0
  509. package/dist/core/compaction/context-transcript-analysis.js +234 -0
  510. package/dist/core/compaction/context-transcript-analysis.js.map +1 -0
  511. package/dist/core/export-html/index.d.ts.map +1 -1
  512. package/dist/core/export-html/index.js +2 -1
  513. package/dist/core/export-html/index.js.map +1 -1
  514. package/dist/core/export-html/template-js/data-tree.js +287 -0
  515. package/dist/core/export-html/template-js/entries-navigation.js +424 -0
  516. package/dist/core/export-html/template-js/initialization.js +312 -0
  517. package/dist/core/export-html/template-js/message-tools.js +415 -0
  518. package/dist/core/export-html/template-js/tree-filter-render.js +421 -0
  519. package/dist/core/export-html/template-script.d.ts +3 -0
  520. package/dist/core/export-html/template-script.d.ts.map +1 -0
  521. package/dist/core/export-html/template-script.js +13 -0
  522. package/dist/core/export-html/template-script.js.map +1 -0
  523. package/dist/core/export-html/template.js +3 -1
  524. package/dist/core/extensions/agent-events.d.ts +159 -0
  525. package/dist/core/extensions/agent-events.d.ts.map +1 -0
  526. package/dist/core/extensions/agent-events.js +2 -0
  527. package/dist/core/extensions/agent-events.js.map +1 -0
  528. package/dist/core/extensions/api-types.d.ts +189 -0
  529. package/dist/core/extensions/api-types.d.ts.map +1 -0
  530. package/dist/core/extensions/api-types.js +2 -0
  531. package/dist/core/extensions/api-types.js.map +1 -0
  532. package/dist/core/extensions/command-types.d.ts +14 -0
  533. package/dist/core/extensions/command-types.d.ts.map +1 -0
  534. package/dist/core/extensions/command-types.js +2 -0
  535. package/dist/core/extensions/command-types.js.map +1 -0
  536. package/dist/core/extensions/context-types.d.ts +130 -0
  537. package/dist/core/extensions/context-types.d.ts.map +1 -0
  538. package/dist/core/extensions/context-types.js +2 -0
  539. package/dist/core/extensions/context-types.js.map +1 -0
  540. package/dist/core/extensions/event-results.d.ts +61 -0
  541. package/dist/core/extensions/event-results.d.ts.map +1 -0
  542. package/dist/core/extensions/event-results.js +2 -0
  543. package/dist/core/extensions/event-results.js.map +1 -0
  544. package/dist/core/extensions/event-types.d.ts +6 -0
  545. package/dist/core/extensions/event-types.d.ts.map +1 -0
  546. package/dist/core/extensions/event-types.js +2 -0
  547. package/dist/core/extensions/event-types.js.map +1 -0
  548. package/dist/core/extensions/loader-api.d.ts +10 -0
  549. package/dist/core/extensions/loader-api.d.ts.map +1 -0
  550. package/dist/core/extensions/loader-api.js +143 -0
  551. package/dist/core/extensions/loader-api.js.map +1 -0
  552. package/dist/core/extensions/loader-core.d.ts +10 -0
  553. package/dist/core/extensions/loader-core.d.ts.map +1 -0
  554. package/dist/core/extensions/loader-core.js +98 -0
  555. package/dist/core/extensions/loader-core.js.map +1 -0
  556. package/dist/core/extensions/loader-discovery.d.ts +7 -0
  557. package/dist/core/extensions/loader-discovery.d.ts.map +1 -0
  558. package/dist/core/extensions/loader-discovery.js +139 -0
  559. package/dist/core/extensions/loader-discovery.js.map +1 -0
  560. package/dist/core/extensions/loader-resources.d.ts +11 -0
  561. package/dist/core/extensions/loader-resources.d.ts.map +1 -0
  562. package/dist/core/extensions/loader-resources.js +10 -0
  563. package/dist/core/extensions/loader-resources.js.map +1 -0
  564. package/dist/core/extensions/loader-runtime.d.ts +7 -0
  565. package/dist/core/extensions/loader-runtime.d.ts.map +1 -0
  566. package/dist/core/extensions/loader-runtime.js +51 -0
  567. package/dist/core/extensions/loader-runtime.js.map +1 -0
  568. package/dist/core/extensions/loader-virtual-modules.d.ts +9 -0
  569. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -0
  570. package/dist/core/extensions/loader-virtual-modules.js +124 -0
  571. package/dist/core/extensions/loader-virtual-modules.js.map +1 -0
  572. package/dist/core/extensions/loader.d.ts +5 -28
  573. package/dist/core/extensions/loader.d.ts.map +1 -1
  574. package/dist/core/extensions/loader.js +4 -542
  575. package/dist/core/extensions/loader.js.map +1 -1
  576. package/dist/core/extensions/message-types.d.ts +34 -0
  577. package/dist/core/extensions/message-types.d.ts.map +1 -0
  578. package/dist/core/extensions/message-types.js +2 -0
  579. package/dist/core/extensions/message-types.js.map +1 -0
  580. package/dist/core/extensions/provider-types.d.ts +71 -0
  581. package/dist/core/extensions/provider-types.d.ts.map +1 -0
  582. package/dist/core/extensions/provider-types.js +2 -0
  583. package/dist/core/extensions/provider-types.js.map +1 -0
  584. package/dist/core/extensions/runner-context.d.ts +42 -0
  585. package/dist/core/extensions/runner-context.d.ts.map +1 -0
  586. package/dist/core/extensions/runner-context.js +112 -0
  587. package/dist/core/extensions/runner-context.js.map +1 -0
  588. package/dist/core/extensions/runner-events.d.ts +47 -0
  589. package/dist/core/extensions/runner-events.d.ts.map +1 -0
  590. package/dist/core/extensions/runner-events.js +280 -0
  591. package/dist/core/extensions/runner-events.js.map +1 -0
  592. package/dist/core/extensions/runner-handlers.d.ts +32 -0
  593. package/dist/core/extensions/runner-handlers.d.ts.map +1 -0
  594. package/dist/core/extensions/runner-handlers.js +2 -0
  595. package/dist/core/extensions/runner-handlers.js.map +1 -0
  596. package/dist/core/extensions/runner-project-trust.d.ts +6 -0
  597. package/dist/core/extensions/runner-project-trust.d.ts.map +1 -0
  598. package/dist/core/extensions/runner-project-trust.js +27 -0
  599. package/dist/core/extensions/runner-project-trust.js.map +1 -0
  600. package/dist/core/extensions/runner-registries.d.ts +8 -0
  601. package/dist/core/extensions/runner-registries.d.ts.map +1 -0
  602. package/dist/core/extensions/runner-registries.js +76 -0
  603. package/dist/core/extensions/runner-registries.js.map +1 -0
  604. package/dist/core/extensions/runner-shortcuts.d.ts +10 -0
  605. package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -0
  606. package/dist/core/extensions/runner-shortcuts.js +71 -0
  607. package/dist/core/extensions/runner-shortcuts.js.map +1 -0
  608. package/dist/core/extensions/runner-ui.d.ts +3 -0
  609. package/dist/core/extensions/runner-ui.d.ts.map +1 -0
  610. package/dist/core/extensions/runner-ui.js +50 -0
  611. package/dist/core/extensions/runner-ui.js.map +1 -0
  612. package/dist/core/extensions/runner.d.ts +7 -74
  613. package/dist/core/extensions/runner.d.ts.map +1 -1
  614. package/dist/core/extensions/runner.js +67 -673
  615. package/dist/core/extensions/runner.js.map +1 -1
  616. package/dist/core/extensions/runtime-types.d.ts +179 -0
  617. package/dist/core/extensions/runtime-types.d.ts.map +1 -0
  618. package/dist/core/extensions/runtime-types.js +2 -0
  619. package/dist/core/extensions/runtime-types.js.map +1 -0
  620. package/dist/core/extensions/session-events.d.ts +89 -0
  621. package/dist/core/extensions/session-events.d.ts.map +1 -0
  622. package/dist/core/extensions/session-events.js +2 -0
  623. package/dist/core/extensions/session-events.js.map +1 -0
  624. package/dist/core/extensions/tool-events.d.ts +127 -0
  625. package/dist/core/extensions/tool-events.d.ts.map +1 -0
  626. package/dist/core/extensions/tool-events.js +26 -0
  627. package/dist/core/extensions/tool-events.js.map +1 -0
  628. package/dist/core/extensions/tool-types.d.ts +100 -0
  629. package/dist/core/extensions/tool-types.d.ts.map +1 -0
  630. package/dist/core/extensions/tool-types.js +11 -0
  631. package/dist/core/extensions/tool-types.js.map +1 -0
  632. package/dist/core/extensions/types.d.ts +20 -1288
  633. package/dist/core/extensions/types.d.ts.map +1 -1
  634. package/dist/core/extensions/types.js +4 -34
  635. package/dist/core/extensions/types.js.map +1 -1
  636. package/dist/core/extensions/ui-types.d.ts +200 -0
  637. package/dist/core/extensions/ui-types.d.ts.map +1 -0
  638. package/dist/core/extensions/ui-types.js +2 -0
  639. package/dist/core/extensions/ui-types.js.map +1 -0
  640. package/dist/core/index.d.ts +0 -1
  641. package/dist/core/index.d.ts.map +1 -1
  642. package/dist/core/index.js +0 -1
  643. package/dist/core/index.js.map +1 -1
  644. package/dist/core/model-registry-auth.d.ts +7 -0
  645. package/dist/core/model-registry-auth.d.ts.map +1 -0
  646. package/dist/core/model-registry-auth.js +64 -0
  647. package/dist/core/model-registry-auth.js.map +1 -0
  648. package/dist/core/model-registry-builtins.d.ts +9 -0
  649. package/dist/core/model-registry-builtins.d.ts.map +1 -0
  650. package/dist/core/model-registry-builtins.js +126 -0
  651. package/dist/core/model-registry-builtins.js.map +1 -0
  652. package/dist/core/model-registry-custom-loader.d.ts +3 -0
  653. package/dist/core/model-registry-custom-loader.d.ts.map +1 -0
  654. package/dist/core/model-registry-custom-loader.js +213 -0
  655. package/dist/core/model-registry-custom-loader.js.map +1 -0
  656. package/dist/core/model-registry-dynamic.d.ts +6 -0
  657. package/dist/core/model-registry-dynamic.d.ts.map +1 -0
  658. package/dist/core/model-registry-dynamic.js +155 -0
  659. package/dist/core/model-registry-dynamic.js.map +1 -0
  660. package/dist/core/model-registry-loader.d.ts +4 -0
  661. package/dist/core/model-registry-loader.d.ts.map +1 -0
  662. package/dist/core/model-registry-loader.js +20 -0
  663. package/dist/core/model-registry-loader.js.map +1 -0
  664. package/dist/core/model-registry-schemas.d.ts +1136 -0
  665. package/dist/core/model-registry-schemas.d.ts.map +1 -0
  666. package/dist/core/model-registry-schemas.js +171 -0
  667. package/dist/core/model-registry-schemas.js.map +1 -0
  668. package/dist/core/model-registry-types.d.ts +74 -0
  669. package/dist/core/model-registry-types.d.ts.map +1 -0
  670. package/dist/core/model-registry-types.js +2 -0
  671. package/dist/core/model-registry-types.js.map +1 -0
  672. package/dist/core/model-registry.d.ts +3 -76
  673. package/dist/core/model-registry.d.ts.map +1 -1
  674. package/dist/core/model-registry.js +24 -733
  675. package/dist/core/model-registry.js.map +1 -1
  676. package/dist/core/model-resolver-cli.d.ts +19 -0
  677. package/dist/core/model-resolver-cli.d.ts.map +1 -0
  678. package/dist/core/model-resolver-cli.js +118 -0
  679. package/dist/core/model-resolver-cli.js.map +1 -0
  680. package/dist/core/model-resolver-defaults.d.ts +5 -0
  681. package/dist/core/model-resolver-defaults.d.ts.map +1 -0
  682. package/dist/core/model-resolver-defaults.js +47 -0
  683. package/dist/core/model-resolver-defaults.js.map +1 -0
  684. package/dist/core/model-resolver-initial.d.ts +31 -0
  685. package/dist/core/model-resolver-initial.d.ts.map +1 -0
  686. package/dist/core/model-resolver-initial.js +116 -0
  687. package/dist/core/model-resolver-initial.js.map +1 -0
  688. package/dist/core/model-resolver-patterns.d.ts +26 -0
  689. package/dist/core/model-resolver-patterns.d.ts.map +1 -0
  690. package/dist/core/model-resolver-patterns.js +139 -0
  691. package/dist/core/model-resolver-patterns.js.map +1 -0
  692. package/dist/core/model-resolver-scope.d.ts +15 -0
  693. package/dist/core/model-resolver-scope.d.ts.map +1 -0
  694. package/dist/core/model-resolver-scope.js +66 -0
  695. package/dist/core/model-resolver-scope.js.map +1 -0
  696. package/dist/core/model-resolver-types.d.ts +29 -0
  697. package/dist/core/model-resolver-types.d.ts.map +1 -0
  698. package/dist/core/model-resolver-types.js +2 -0
  699. package/dist/core/model-resolver-types.js.map +1 -0
  700. package/dist/core/model-resolver.d.ts +6 -107
  701. package/dist/core/model-resolver.d.ts.map +1 -1
  702. package/dist/core/model-resolver.js +5 -549
  703. package/dist/core/model-resolver.js.map +1 -1
  704. package/dist/core/package-manager-auto-resources.d.ts +5 -0
  705. package/dist/core/package-manager-auto-resources.d.ts.map +1 -0
  706. package/dist/core/package-manager-auto-resources.js +109 -0
  707. package/dist/core/package-manager-auto-resources.js.map +1 -0
  708. package/dist/core/package-manager-command.d.ts +11 -0
  709. package/dist/core/package-manager-command.d.ts.map +1 -0
  710. package/dist/core/package-manager-command.js +102 -0
  711. package/dist/core/package-manager-command.js.map +1 -0
  712. package/dist/core/package-manager-constants.d.ts +4 -0
  713. package/dist/core/package-manager-constants.d.ts.map +1 -0
  714. package/dist/core/package-manager-constants.js +4 -0
  715. package/dist/core/package-manager-constants.js.map +1 -0
  716. package/dist/core/package-manager-env.d.ts +4 -0
  717. package/dist/core/package-manager-env.d.ts.map +1 -0
  718. package/dist/core/package-manager-env.js +40 -0
  719. package/dist/core/package-manager-env.js.map +1 -0
  720. package/dist/core/package-manager-git.d.ts +10 -0
  721. package/dist/core/package-manager-git.d.ts.map +1 -0
  722. package/dist/core/package-manager-git.js +271 -0
  723. package/dist/core/package-manager-git.js.map +1 -0
  724. package/dist/core/package-manager-manifest.d.ts +7 -0
  725. package/dist/core/package-manager-manifest.d.ts.map +1 -0
  726. package/dist/core/package-manager-manifest.js +45 -0
  727. package/dist/core/package-manager-manifest.js.map +1 -0
  728. package/dist/core/package-manager-npm.d.ts +25 -0
  729. package/dist/core/package-manager-npm.d.ts.map +1 -0
  730. package/dist/core/package-manager-npm.js +252 -0
  731. package/dist/core/package-manager-npm.js.map +1 -0
  732. package/dist/core/package-manager-operations.d.ts +11 -0
  733. package/dist/core/package-manager-operations.d.ts.map +1 -0
  734. package/dist/core/package-manager-operations.js +196 -0
  735. package/dist/core/package-manager-operations.js.map +1 -0
  736. package/dist/core/package-manager-paths.d.ts +14 -0
  737. package/dist/core/package-manager-paths.d.ts.map +1 -0
  738. package/dist/core/package-manager-paths.js +61 -0
  739. package/dist/core/package-manager-paths.js.map +1 -0
  740. package/dist/core/package-manager-progress.d.ts +4 -0
  741. package/dist/core/package-manager-progress.d.ts.map +1 -0
  742. package/dist/core/package-manager-progress.js +16 -0
  743. package/dist/core/package-manager-progress.js.map +1 -0
  744. package/dist/core/package-manager-resolver.d.ts +5 -0
  745. package/dist/core/package-manager-resolver.d.ts.map +1 -0
  746. package/dist/core/package-manager-resolver.js +149 -0
  747. package/dist/core/package-manager-resolver.js.map +1 -0
  748. package/dist/core/package-manager-resource-accumulator.d.ts +6 -0
  749. package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -0
  750. package/dist/core/package-manager-resource-accumulator.js +67 -0
  751. package/dist/core/package-manager-resource-accumulator.js.map +1 -0
  752. package/dist/core/package-manager-resource-collector.d.ts +5 -0
  753. package/dist/core/package-manager-resource-collector.d.ts.map +1 -0
  754. package/dist/core/package-manager-resource-collector.js +148 -0
  755. package/dist/core/package-manager-resource-collector.js.map +1 -0
  756. package/dist/core/package-manager-resource-files.d.ts +14 -0
  757. package/dist/core/package-manager-resource-files.d.ts.map +1 -0
  758. package/dist/core/package-manager-resource-files.js +265 -0
  759. package/dist/core/package-manager-resource-files.js.map +1 -0
  760. package/dist/core/package-manager-resource-patterns.d.ts +12 -0
  761. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -0
  762. package/dist/core/package-manager-resource-patterns.js +136 -0
  763. package/dist/core/package-manager-resource-patterns.js.map +1 -0
  764. package/dist/core/package-manager-settings.d.ts +10 -0
  765. package/dist/core/package-manager-settings.d.ts.map +1 -0
  766. package/dist/core/package-manager-settings.js +91 -0
  767. package/dist/core/package-manager-settings.js.map +1 -0
  768. package/dist/core/package-manager-source.d.ts +21 -0
  769. package/dist/core/package-manager-source.d.ts.map +1 -0
  770. package/dist/core/package-manager-source.js +146 -0
  771. package/dist/core/package-manager-source.js.map +1 -0
  772. package/dist/core/package-manager-types.d.ts +169 -0
  773. package/dist/core/package-manager-types.d.ts.map +1 -0
  774. package/dist/core/package-manager-types.js +9 -0
  775. package/dist/core/package-manager-types.js.map +1 -0
  776. package/dist/core/package-manager.d.ts +9 -174
  777. package/dist/core/package-manager.d.ts.map +1 -1
  778. package/dist/core/package-manager.js +56 -2100
  779. package/dist/core/package-manager.js.map +1 -1
  780. package/dist/core/resource-loader-assets.d.ts +6 -0
  781. package/dist/core/resource-loader-assets.d.ts.map +1 -0
  782. package/dist/core/resource-loader-assets.js +209 -0
  783. package/dist/core/resource-loader-assets.js.map +1 -0
  784. package/dist/core/resource-loader-context-files.d.ts +10 -0
  785. package/dist/core/resource-loader-context-files.d.ts.map +1 -0
  786. package/dist/core/resource-loader-context-files.js +74 -0
  787. package/dist/core/resource-loader-context-files.js.map +1 -0
  788. package/dist/core/resource-loader-core.d.ts +83 -0
  789. package/dist/core/resource-loader-core.d.ts.map +1 -0
  790. package/dist/core/resource-loader-core.js +170 -0
  791. package/dist/core/resource-loader-core.js.map +1 -0
  792. package/dist/core/resource-loader-discovery.d.ts +4 -0
  793. package/dist/core/resource-loader-discovery.d.ts.map +1 -0
  794. package/dist/core/resource-loader-discovery.js +28 -0
  795. package/dist/core/resource-loader-discovery.js.map +1 -0
  796. package/dist/core/resource-loader-extensions.d.ts +13 -0
  797. package/dist/core/resource-loader-extensions.d.ts.map +1 -0
  798. package/dist/core/resource-loader-extensions.js +110 -0
  799. package/dist/core/resource-loader-extensions.js.map +1 -0
  800. package/dist/core/resource-loader-helpers.d.ts +4 -0
  801. package/dist/core/resource-loader-helpers.d.ts.map +1 -0
  802. package/dist/core/resource-loader-helpers.js +23 -0
  803. package/dist/core/resource-loader-helpers.js.map +1 -0
  804. package/dist/core/resource-loader-internals.d.ts +97 -0
  805. package/dist/core/resource-loader-internals.d.ts.map +1 -0
  806. package/dist/core/resource-loader-internals.js +4 -0
  807. package/dist/core/resource-loader-internals.js.map +1 -0
  808. package/dist/core/resource-loader-package-resources.d.ts +31 -0
  809. package/dist/core/resource-loader-package-resources.d.ts.map +1 -0
  810. package/dist/core/resource-loader-package-resources.js +112 -0
  811. package/dist/core/resource-loader-package-resources.js.map +1 -0
  812. package/dist/core/resource-loader-paths.d.ts +4 -0
  813. package/dist/core/resource-loader-paths.d.ts.map +1 -0
  814. package/dist/core/resource-loader-paths.js +22 -0
  815. package/dist/core/resource-loader-paths.js.map +1 -0
  816. package/dist/core/resource-loader-reload.d.ts +6 -0
  817. package/dist/core/resource-loader-reload.d.ts.map +1 -0
  818. package/dist/core/resource-loader-reload.js +230 -0
  819. package/dist/core/resource-loader-reload.js.map +1 -0
  820. package/dist/core/resource-loader-source-info.d.ts +9 -0
  821. package/dist/core/resource-loader-source-info.d.ts.map +1 -0
  822. package/dist/core/resource-loader-source-info.js +101 -0
  823. package/dist/core/resource-loader-source-info.js.map +1 -0
  824. package/dist/core/resource-loader-types.d.ts +130 -0
  825. package/dist/core/resource-loader-types.d.ts.map +1 -0
  826. package/dist/core/resource-loader-types.js +2 -0
  827. package/dist/core/resource-loader-types.js.map +1 -0
  828. package/dist/core/resource-loader.d.ts +3 -242
  829. package/dist/core/resource-loader.d.ts.map +1 -1
  830. package/dist/core/resource-loader.js +2 -976
  831. package/dist/core/resource-loader.js.map +1 -1
  832. package/dist/core/sdk-exports.d.ts +7 -0
  833. package/dist/core/sdk-exports.d.ts.map +1 -0
  834. package/dist/core/sdk-exports.js +5 -0
  835. package/dist/core/sdk-exports.js.map +1 -0
  836. package/dist/core/sdk-types.d.ts +83 -0
  837. package/dist/core/sdk-types.d.ts.map +1 -0
  838. package/dist/core/sdk-types.js +2 -0
  839. package/dist/core/sdk-types.js.map +1 -0
  840. package/dist/core/sdk.d.ts +3 -91
  841. package/dist/core/sdk.d.ts.map +1 -1
  842. package/dist/core/sdk.js +2 -7
  843. package/dist/core/sdk.js.map +1 -1
  844. package/dist/core/session-manager-archive.d.ts +27 -0
  845. package/dist/core/session-manager-archive.d.ts.map +1 -0
  846. package/dist/core/session-manager-archive.js +114 -0
  847. package/dist/core/session-manager-archive.js.map +1 -0
  848. package/dist/core/session-manager-core.d.ts +104 -0
  849. package/dist/core/session-manager-core.d.ts.map +1 -0
  850. package/dist/core/session-manager-core.js +346 -0
  851. package/dist/core/session-manager-core.js.map +1 -0
  852. package/dist/core/session-manager-entries.d.ts +38 -0
  853. package/dist/core/session-manager-entries.d.ts.map +1 -0
  854. package/dist/core/session-manager-entries.js +124 -0
  855. package/dist/core/session-manager-entries.js.map +1 -0
  856. package/dist/core/session-manager-history.d.ts +38 -0
  857. package/dist/core/session-manager-history.d.ts.map +1 -0
  858. package/dist/core/session-manager-history.js +379 -0
  859. package/dist/core/session-manager-history.js.map +1 -0
  860. package/dist/core/session-manager-list.d.ts +5 -0
  861. package/dist/core/session-manager-list.d.ts.map +1 -0
  862. package/dist/core/session-manager-list.js +196 -0
  863. package/dist/core/session-manager-list.js.map +1 -0
  864. package/dist/core/session-manager-migrations.d.ts +11 -0
  865. package/dist/core/session-manager-migrations.d.ts.map +1 -0
  866. package/dist/core/session-manager-migrations.js +80 -0
  867. package/dist/core/session-manager-migrations.js.map +1 -0
  868. package/dist/core/session-manager-paths.d.ts +7 -0
  869. package/dist/core/session-manager-paths.d.ts.map +1 -0
  870. package/dist/core/session-manager-paths.js +22 -0
  871. package/dist/core/session-manager-paths.js.map +1 -0
  872. package/dist/core/session-manager-storage.d.ts +15 -0
  873. package/dist/core/session-manager-storage.d.ts.map +1 -0
  874. package/dist/core/session-manager-storage.js +127 -0
  875. package/dist/core/session-manager-storage.js.map +1 -0
  876. package/dist/core/session-manager-types.d.ts +172 -0
  877. package/dist/core/session-manager-types.d.ts.map +1 -0
  878. package/dist/core/session-manager-types.js +2 -0
  879. package/dist/core/session-manager-types.js.map +1 -0
  880. package/dist/core/session-manager-validation.d.ts +7 -0
  881. package/dist/core/session-manager-validation.d.ts.map +1 -0
  882. package/dist/core/session-manager-validation.js +34 -0
  883. package/dist/core/session-manager-validation.js.map +1 -0
  884. package/dist/core/session-manager.d.ts +8 -390
  885. package/dist/core/session-manager.d.ts.map +1 -1
  886. package/dist/core/session-manager.js +7 -1418
  887. package/dist/core/session-manager.js.map +1 -1
  888. package/dist/core/settings-manager-basic-accessors.d.ts +65 -0
  889. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -0
  890. package/dist/core/settings-manager-basic-accessors.js +253 -0
  891. package/dist/core/settings-manager-basic-accessors.js.map +1 -0
  892. package/dist/core/settings-manager-core.d.ts +57 -0
  893. package/dist/core/settings-manager-core.d.ts.map +1 -0
  894. package/dist/core/settings-manager-core.js +387 -0
  895. package/dist/core/settings-manager-core.js.map +1 -0
  896. package/dist/core/settings-manager-internals.d.ts +13 -0
  897. package/dist/core/settings-manager-internals.d.ts.map +1 -0
  898. package/dist/core/settings-manager-internals.js +4 -0
  899. package/dist/core/settings-manager-internals.js.map +1 -0
  900. package/dist/core/settings-manager-resource-accessors.d.ts +43 -0
  901. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -0
  902. package/dist/core/settings-manager-resource-accessors.js +172 -0
  903. package/dist/core/settings-manager-resource-accessors.js.map +1 -0
  904. package/dist/core/settings-manager-ui-accessors.d.ts +44 -0
  905. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -0
  906. package/dist/core/settings-manager-ui-accessors.js +208 -0
  907. package/dist/core/settings-manager-ui-accessors.js.map +1 -0
  908. package/dist/core/settings-manager.d.ts +6 -321
  909. package/dist/core/settings-manager.d.ts.map +1 -1
  910. package/dist/core/settings-manager.js +5 -1060
  911. package/dist/core/settings-manager.js.map +1 -1
  912. package/dist/core/settings-merge.d.ts +4 -0
  913. package/dist/core/settings-merge.d.ts.map +1 -0
  914. package/dist/core/settings-merge.js +26 -0
  915. package/dist/core/settings-merge.js.map +1 -0
  916. package/dist/core/settings-storage.d.ts +20 -0
  917. package/dist/core/settings-storage.d.ts.map +1 -0
  918. package/dist/core/settings-storage.js +100 -0
  919. package/dist/core/settings-storage.js.map +1 -0
  920. package/dist/core/settings-types.d.ts +123 -0
  921. package/dist/core/settings-types.d.ts.map +1 -0
  922. package/dist/core/settings-types.js +2 -0
  923. package/dist/core/settings-types.js.map +1 -0
  924. package/dist/core/system-prompt.d.ts.map +1 -1
  925. package/dist/core/system-prompt.js +7 -0
  926. package/dist/core/system-prompt.js.map +1 -1
  927. package/dist/core/tools/bash.d.ts +0 -5
  928. package/dist/core/tools/bash.d.ts.map +1 -1
  929. package/dist/core/tools/bash.js +10 -11
  930. package/dist/core/tools/bash.js.map +1 -1
  931. package/dist/core/tools/edit-diff-preserve.d.ts +18 -0
  932. package/dist/core/tools/edit-diff-preserve.d.ts.map +1 -0
  933. package/dist/core/tools/edit-diff-preserve.js +85 -0
  934. package/dist/core/tools/edit-diff-preserve.js.map +1 -0
  935. package/dist/core/tools/edit-diff.d.ts +3 -2
  936. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  937. package/dist/core/tools/edit-diff.js +15 -18
  938. package/dist/core/tools/edit-diff.js.map +1 -1
  939. package/dist/core/tools/index.d.ts +0 -1
  940. package/dist/core/tools/index.d.ts.map +1 -1
  941. package/dist/core/tools/index.js +0 -1
  942. package/dist/core/tools/index.js.map +1 -1
  943. package/dist/core/tools/todos-execute.d.ts +5 -0
  944. package/dist/core/tools/todos-execute.d.ts.map +1 -0
  945. package/dist/core/tools/todos-execute.js +200 -0
  946. package/dist/core/tools/todos-execute.js.map +1 -0
  947. package/dist/core/tools/todos-locks.d.ts +4 -0
  948. package/dist/core/tools/todos-locks.d.ts.map +1 -0
  949. package/dist/core/tools/todos-locks.js +80 -0
  950. package/dist/core/tools/todos-locks.js.map +1 -0
  951. package/dist/core/tools/todos-model.d.ts +21 -0
  952. package/dist/core/tools/todos-model.d.ts.map +1 -0
  953. package/dist/core/tools/todos-model.js +71 -0
  954. package/dist/core/tools/todos-model.js.map +1 -0
  955. package/dist/core/tools/todos-mutations.d.ts +6 -0
  956. package/dist/core/tools/todos-mutations.d.ts.map +1 -0
  957. package/dist/core/tools/todos-mutations.js +85 -0
  958. package/dist/core/tools/todos-mutations.js.map +1 -0
  959. package/dist/core/tools/todos-paths.d.ts +5 -0
  960. package/dist/core/tools/todos-paths.d.ts.map +1 -0
  961. package/dist/core/tools/todos-paths.js +25 -0
  962. package/dist/core/tools/todos-paths.js.map +1 -0
  963. package/dist/core/tools/todos-render.d.ts +10 -0
  964. package/dist/core/tools/todos-render.d.ts.map +1 -0
  965. package/dist/core/tools/todos-render.js +159 -0
  966. package/dist/core/tools/todos-render.js.map +1 -0
  967. package/dist/core/tools/todos-storage.d.ts +9 -0
  968. package/dist/core/tools/todos-storage.d.ts.map +1 -0
  969. package/dist/core/tools/todos-storage.js +183 -0
  970. package/dist/core/tools/todos-storage.js.map +1 -0
  971. package/dist/core/tools/todos-types.d.ts +46 -0
  972. package/dist/core/tools/todos-types.d.ts.map +1 -0
  973. package/dist/core/tools/todos-types.js +27 -0
  974. package/dist/core/tools/todos-types.js.map +1 -0
  975. package/dist/core/tools/todos.d.ts +12 -32
  976. package/dist/core/tools/todos.d.ts.map +1 -1
  977. package/dist/core/tools/todos.js +7 -893
  978. package/dist/core/tools/todos.js.map +1 -1
  979. package/dist/index-extensions.d.ts +3 -0
  980. package/dist/index-extensions.d.ts.map +1 -0
  981. package/dist/index-extensions.js +2 -0
  982. package/dist/index-extensions.js.map +1 -0
  983. package/dist/index.d.ts +3 -4
  984. package/dist/index.d.ts.map +1 -1
  985. package/dist/index.js +2 -2
  986. package/dist/index.js.map +1 -1
  987. package/dist/main-app-mode.d.ts +15 -0
  988. package/dist/main-app-mode.d.ts.map +1 -0
  989. package/dist/main-app-mode.js +51 -0
  990. package/dist/main-app-mode.js.map +1 -0
  991. package/dist/main-session-options.d.ts +12 -0
  992. package/dist/main-session-options.d.ts.map +1 -0
  993. package/dist/main-session-options.js +87 -0
  994. package/dist/main-session-options.js.map +1 -0
  995. package/dist/main-session.d.ts +9 -0
  996. package/dist/main-session.d.ts.map +1 -0
  997. package/dist/main-session.js +188 -0
  998. package/dist/main-session.js.map +1 -0
  999. package/dist/main-stdio.d.ts +12 -0
  1000. package/dist/main-stdio.d.ts.map +1 -0
  1001. package/dist/main-stdio.js +68 -0
  1002. package/dist/main-stdio.js.map +1 -0
  1003. package/dist/main.d.ts +2 -3
  1004. package/dist/main.d.ts.map +1 -1
  1005. package/dist/main.js +11 -388
  1006. package/dist/main.js.map +1 -1
  1007. package/dist/migrations-config-values.d.ts +9 -0
  1008. package/dist/migrations-config-values.d.ts.map +1 -0
  1009. package/dist/migrations-config-values.js +298 -0
  1010. package/dist/migrations-config-values.js.map +1 -0
  1011. package/dist/migrations.d.ts.map +1 -1
  1012. package/dist/migrations.js +2 -296
  1013. package/dist/migrations.js.map +1 -1
  1014. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  1015. package/dist/modes/interactive/components/chat-message-renderer.js +0 -7
  1016. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  1017. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +9 -0
  1018. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -0
  1019. package/dist/modes/interactive/components/chat-session-host-actions.js +244 -0
  1020. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -0
  1021. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +18 -0
  1022. package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -0
  1023. package/dist/modes/interactive/components/chat-session-host-editor.js +165 -0
  1024. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -0
  1025. package/dist/modes/interactive/components/chat-session-host-events.d.ts +5 -0
  1026. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -0
  1027. package/dist/modes/interactive/components/chat-session-host-events.js +200 -0
  1028. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -0
  1029. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +13 -0
  1030. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -0
  1031. package/dist/modes/interactive/components/chat-session-host-rendering.js +185 -0
  1032. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -0
  1033. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +13 -0
  1034. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -0
  1035. package/dist/modes/interactive/components/chat-session-host-runtime.js +101 -0
  1036. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -0
  1037. package/dist/modes/interactive/components/chat-session-host-state.d.ts +53 -0
  1038. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -0
  1039. package/dist/modes/interactive/components/chat-session-host-state.js +42 -0
  1040. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -0
  1041. package/dist/modes/interactive/components/chat-session-host-types.d.ts +63 -0
  1042. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -0
  1043. package/dist/modes/interactive/components/chat-session-host-types.js +2 -0
  1044. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -0
  1045. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +28 -0
  1046. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -0
  1047. package/dist/modes/interactive/components/chat-session-host-utils.js +103 -0
  1048. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -0
  1049. package/dist/modes/interactive/components/chat-session-host.d.ts +6 -129
  1050. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  1051. package/dist/modes/interactive/components/chat-session-host.js +50 -1022
  1052. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  1053. package/dist/modes/interactive/components/config-selector-list.d.ts +65 -0
  1054. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -0
  1055. package/dist/modes/interactive/components/config-selector-list.js +458 -0
  1056. package/dist/modes/interactive/components/config-selector-list.js.map +1 -0
  1057. package/dist/modes/interactive/components/config-selector.d.ts +3 -58
  1058. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1059. package/dist/modes/interactive/components/config-selector.js +2 -457
  1060. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1061. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1062. package/dist/modes/interactive/components/model-selector.js +2 -2
  1063. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1064. package/dist/modes/interactive/components/session-selector-delete.d.ts +10 -0
  1065. package/dist/modes/interactive/components/session-selector-delete.d.ts.map +1 -0
  1066. package/dist/modes/interactive/components/session-selector-delete.js +40 -0
  1067. package/dist/modes/interactive/components/session-selector-delete.js.map +1 -0
  1068. package/dist/modes/interactive/components/session-selector-header.d.ts +33 -0
  1069. package/dist/modes/interactive/components/session-selector-header.d.ts.map +1 -0
  1070. package/dist/modes/interactive/components/session-selector-header.js +117 -0
  1071. package/dist/modes/interactive/components/session-selector-header.js.map +1 -0
  1072. package/dist/modes/interactive/components/session-selector-list.d.ts +49 -0
  1073. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -0
  1074. package/dist/modes/interactive/components/session-selector-list.js +307 -0
  1075. package/dist/modes/interactive/components/session-selector-list.js.map +1 -0
  1076. package/dist/modes/interactive/components/session-selector-tree.d.ts +25 -0
  1077. package/dist/modes/interactive/components/session-selector-tree.d.ts.map +1 -0
  1078. package/dist/modes/interactive/components/session-selector-tree.js +53 -0
  1079. package/dist/modes/interactive/components/session-selector-tree.js.map +1 -0
  1080. package/dist/modes/interactive/components/session-selector-types.d.ts +4 -0
  1081. package/dist/modes/interactive/components/session-selector-types.d.ts.map +1 -0
  1082. package/dist/modes/interactive/components/session-selector-types.js +2 -0
  1083. package/dist/modes/interactive/components/session-selector-types.js.map +1 -0
  1084. package/dist/modes/interactive/components/session-selector-utils.d.ts +4 -0
  1085. package/dist/modes/interactive/components/session-selector-utils.d.ts.map +1 -0
  1086. package/dist/modes/interactive/components/session-selector-utils.js +37 -0
  1087. package/dist/modes/interactive/components/session-selector-utils.js.map +1 -0
  1088. package/dist/modes/interactive/components/session-selector.d.ts +3 -49
  1089. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1090. package/dist/modes/interactive/components/session-selector.js +5 -542
  1091. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1092. package/dist/modes/interactive/components/settings-selector-handlers.d.ts +3 -0
  1093. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -0
  1094. package/dist/modes/interactive/components/settings-selector-handlers.js +84 -0
  1095. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -0
  1096. package/dist/modes/interactive/components/settings-selector-items.d.ts +4 -0
  1097. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -0
  1098. package/dist/modes/interactive/components/settings-selector-items.js +211 -0
  1099. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -0
  1100. package/dist/modes/interactive/components/settings-selector-options.d.ts +6 -0
  1101. package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -0
  1102. package/dist/modes/interactive/components/settings-selector-options.js +14 -0
  1103. package/dist/modes/interactive/components/settings-selector-options.js.map +1 -0
  1104. package/dist/modes/interactive/components/settings-selector-submenus.d.ts +44 -0
  1105. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -0
  1106. package/dist/modes/interactive/components/settings-selector-submenus.js +228 -0
  1107. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -0
  1108. package/dist/modes/interactive/components/settings-selector-types.d.ts +67 -0
  1109. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -0
  1110. package/dist/modes/interactive/components/settings-selector-types.js +2 -0
  1111. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -0
  1112. package/dist/modes/interactive/components/settings-selector.d.ts +2 -63
  1113. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1114. package/dist/modes/interactive/components/settings-selector.js +5 -538
  1115. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1116. package/dist/modes/interactive/components/tree-selector-component.d.ts +21 -0
  1117. package/dist/modes/interactive/components/tree-selector-component.d.ts.map +1 -0
  1118. package/dist/modes/interactive/components/tree-selector-component.js +80 -0
  1119. package/dist/modes/interactive/components/tree-selector-component.js.map +1 -0
  1120. package/dist/modes/interactive/components/tree-selector-content.d.ts +8 -0
  1121. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -0
  1122. package/dist/modes/interactive/components/tree-selector-content.js +263 -0
  1123. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -0
  1124. package/dist/modes/interactive/components/tree-selector-help.d.ts +16 -0
  1125. package/dist/modes/interactive/components/tree-selector-help.d.ts.map +1 -0
  1126. package/dist/modes/interactive/components/tree-selector-help.js +103 -0
  1127. package/dist/modes/interactive/components/tree-selector-help.js.map +1 -0
  1128. package/dist/modes/interactive/components/tree-selector-label-input.d.ts +16 -0
  1129. package/dist/modes/interactive/components/tree-selector-label-input.d.ts.map +1 -0
  1130. package/dist/modes/interactive/components/tree-selector-label-input.js +46 -0
  1131. package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -0
  1132. package/dist/modes/interactive/components/tree-selector-list.d.ts +33 -0
  1133. package/dist/modes/interactive/components/tree-selector-list.d.ts.map +1 -0
  1134. package/dist/modes/interactive/components/tree-selector-list.js +336 -0
  1135. package/dist/modes/interactive/components/tree-selector-list.js.map +1 -0
  1136. package/dist/modes/interactive/components/tree-selector-model.d.ts +7 -0
  1137. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -0
  1138. package/dist/modes/interactive/components/tree-selector-model.js +358 -0
  1139. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -0
  1140. package/dist/modes/interactive/components/tree-selector-types.d.ts +57 -0
  1141. package/dist/modes/interactive/components/tree-selector-types.d.ts.map +1 -0
  1142. package/dist/modes/interactive/components/tree-selector-types.js +6 -0
  1143. package/dist/modes/interactive/components/tree-selector-types.js.map +1 -0
  1144. package/dist/modes/interactive/components/tree-selector-viewport.d.ts +10 -0
  1145. package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -0
  1146. package/dist/modes/interactive/components/tree-selector-viewport.js +32 -0
  1147. package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -0
  1148. package/dist/modes/interactive/components/tree-selector.d.ts +2 -88
  1149. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  1150. package/dist/modes/interactive/components/tree-selector.js +1 -1200
  1151. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  1152. package/dist/modes/interactive/interactive-agent-events.d.ts +2 -0
  1153. package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -0
  1154. package/dist/modes/interactive/interactive-agent-events.js +370 -0
  1155. package/dist/modes/interactive/interactive-agent-events.js.map +1 -0
  1156. package/dist/modes/interactive/interactive-auth-login.d.ts +2 -0
  1157. package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -0
  1158. package/dist/modes/interactive/interactive-auth-login.js +214 -0
  1159. package/dist/modes/interactive/interactive-auth-login.js.map +1 -0
  1160. package/dist/modes/interactive/interactive-auth-routing.d.ts +2 -0
  1161. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -0
  1162. package/dist/modes/interactive/interactive-auth-routing.js +128 -0
  1163. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -0
  1164. package/dist/modes/interactive/interactive-autocomplete.d.ts +2 -0
  1165. package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -0
  1166. package/dist/modes/interactive/interactive-autocomplete.js +140 -0
  1167. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -0
  1168. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -0
  1169. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -0
  1170. package/dist/modes/interactive/interactive-bash-compact.js +112 -0
  1171. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -0
  1172. package/dist/modes/interactive/interactive-editor-actions.d.ts +2 -0
  1173. package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -0
  1174. package/dist/modes/interactive/interactive-editor-actions.js +131 -0
  1175. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -0
  1176. package/dist/modes/interactive/interactive-extension-context.d.ts +2 -0
  1177. package/dist/modes/interactive/interactive-extension-context.d.ts.map +1 -0
  1178. package/dist/modes/interactive/interactive-extension-context.js +159 -0
  1179. package/dist/modes/interactive/interactive-extension-context.js.map +1 -0
  1180. package/dist/modes/interactive/interactive-extension-custom-ui.d.ts +2 -0
  1181. package/dist/modes/interactive/interactive-extension-custom-ui.d.ts.map +1 -0
  1182. package/dist/modes/interactive/interactive-extension-custom-ui.js +208 -0
  1183. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -0
  1184. package/dist/modes/interactive/interactive-extension-dialogs.d.ts +2 -0
  1185. package/dist/modes/interactive/interactive-extension-dialogs.d.ts.map +1 -0
  1186. package/dist/modes/interactive/interactive-extension-dialogs.js +162 -0
  1187. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -0
  1188. package/dist/modes/interactive/interactive-extension-runtime.d.ts +2 -0
  1189. package/dist/modes/interactive/interactive-extension-runtime.d.ts.map +1 -0
  1190. package/dist/modes/interactive/interactive-extension-runtime.js +179 -0
  1191. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -0
  1192. package/dist/modes/interactive/interactive-extension-widgets.d.ts +2 -0
  1193. package/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -0
  1194. package/dist/modes/interactive/interactive-extension-widgets.js +113 -0
  1195. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -0
  1196. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts +2 -0
  1197. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -0
  1198. package/dist/modes/interactive/interactive-hotkeys-debug.js +186 -0
  1199. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -0
  1200. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -0
  1201. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -0
  1202. package/dist/modes/interactive/interactive-input-handling.js +275 -0
  1203. package/dist/modes/interactive/interactive-input-handling.js.map +1 -0
  1204. package/dist/modes/interactive/interactive-mode-base.d.ts +103 -0
  1205. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -0
  1206. package/dist/modes/interactive/interactive-mode-base.js +130 -0
  1207. package/dist/modes/interactive/interactive-mode-base.js.map +1 -0
  1208. package/dist/modes/interactive/interactive-mode-deps.d.ts +81 -0
  1209. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -0
  1210. package/dist/modes/interactive/interactive-mode-deps.js +74 -0
  1211. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -0
  1212. package/dist/modes/interactive/interactive-mode-helpers.d.ts +21 -0
  1213. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -0
  1214. package/dist/modes/interactive/interactive-mode-helpers.js +77 -0
  1215. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -0
  1216. package/dist/modes/interactive/interactive-mode-surface.d.ts +313 -0
  1217. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -0
  1218. package/dist/modes/interactive/interactive-mode-surface.js +2 -0
  1219. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -0
  1220. package/dist/modes/interactive/interactive-mode-types.d.ts +29 -0
  1221. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -0
  1222. package/dist/modes/interactive/interactive-mode-types.js +2 -0
  1223. package/dist/modes/interactive/interactive-mode-types.js.map +1 -0
  1224. package/dist/modes/interactive/interactive-mode.d.ts +30 -404
  1225. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1226. package/dist/modes/interactive/interactive-mode.js +29 -5260
  1227. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1228. package/dist/modes/interactive/interactive-model-routing.d.ts +2 -0
  1229. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -0
  1230. package/dist/modes/interactive/interactive-model-routing.js +269 -0
  1231. package/dist/modes/interactive/interactive-model-routing.js.map +1 -0
  1232. package/dist/modes/interactive/interactive-process-lifecycle.d.ts +2 -0
  1233. package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -0
  1234. package/dist/modes/interactive/interactive-process-lifecycle.js +189 -0
  1235. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -0
  1236. package/dist/modes/interactive/interactive-queueing.d.ts +2 -0
  1237. package/dist/modes/interactive/interactive-queueing.d.ts.map +1 -0
  1238. package/dist/modes/interactive/interactive-queueing.js +163 -0
  1239. package/dist/modes/interactive/interactive-queueing.js.map +1 -0
  1240. package/dist/modes/interactive/interactive-render-chat.d.ts +2 -0
  1241. package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -0
  1242. package/dist/modes/interactive/interactive-render-chat.js +170 -0
  1243. package/dist/modes/interactive/interactive-render-chat.js.map +1 -0
  1244. package/dist/modes/interactive/interactive-resource-disclosure.d.ts +2 -0
  1245. package/dist/modes/interactive/interactive-resource-disclosure.d.ts.map +1 -0
  1246. package/dist/modes/interactive/interactive-resource-disclosure.js +101 -0
  1247. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -0
  1248. package/dist/modes/interactive/interactive-resource-paths.d.ts +2 -0
  1249. package/dist/modes/interactive/interactive-resource-paths.d.ts.map +1 -0
  1250. package/dist/modes/interactive/interactive-resource-paths.js +228 -0
  1251. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -0
  1252. package/dist/modes/interactive/interactive-resource-rendering.d.ts +2 -0
  1253. package/dist/modes/interactive/interactive-resource-rendering.d.ts.map +1 -0
  1254. package/dist/modes/interactive/interactive-resource-rendering.js +181 -0
  1255. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -0
  1256. package/dist/modes/interactive/interactive-selectors.d.ts +2 -0
  1257. package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -0
  1258. package/dist/modes/interactive/interactive-selectors.js +198 -0
  1259. package/dist/modes/interactive/interactive-selectors.js.map +1 -0
  1260. package/dist/modes/interactive/interactive-session-routing.d.ts +2 -0
  1261. package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -0
  1262. package/dist/modes/interactive/interactive-session-routing.js +232 -0
  1263. package/dist/modes/interactive/interactive-session-routing.js.map +1 -0
  1264. package/dist/modes/interactive/interactive-session-runtime.d.ts +2 -0
  1265. package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -0
  1266. package/dist/modes/interactive/interactive-session-runtime.js +131 -0
  1267. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -0
  1268. package/dist/modes/interactive/interactive-slash-commands.d.ts +2 -0
  1269. package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -0
  1270. package/dist/modes/interactive/interactive-slash-commands.js +338 -0
  1271. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -0
  1272. package/dist/modes/interactive/interactive-startup.d.ts +2 -0
  1273. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -0
  1274. package/dist/modes/interactive/interactive-startup.js +348 -0
  1275. package/dist/modes/interactive/interactive-startup.js.map +1 -0
  1276. package/dist/modes/interactive/model-search.d.ts +5 -0
  1277. package/dist/modes/interactive/model-search.d.ts.map +1 -1
  1278. package/dist/modes/interactive/model-search.js +9 -0
  1279. package/dist/modes/interactive/model-search.js.map +1 -1
  1280. package/dist/modes/interactive/theme/color-utils.d.ts +20 -0
  1281. package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -0
  1282. package/dist/modes/interactive/theme/color-utils.js +204 -0
  1283. package/dist/modes/interactive/theme/color-utils.js.map +1 -0
  1284. package/dist/modes/interactive/theme/export-colors.d.ts +19 -0
  1285. package/dist/modes/interactive/theme/export-colors.d.ts.map +1 -0
  1286. package/dist/modes/interactive/theme/export-colors.js +69 -0
  1287. package/dist/modes/interactive/theme/export-colors.js.map +1 -0
  1288. package/dist/modes/interactive/theme/global-theme.d.ts +12 -0
  1289. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -0
  1290. package/dist/modes/interactive/theme/global-theme.js +150 -0
  1291. package/dist/modes/interactive/theme/global-theme.js.map +1 -0
  1292. package/dist/modes/interactive/theme/terminal-detection.d.ts +30 -0
  1293. package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -0
  1294. package/dist/modes/interactive/theme/terminal-detection.js +89 -0
  1295. package/dist/modes/interactive/theme/terminal-detection.js.map +1 -0
  1296. package/dist/modes/interactive/theme/theme-class.d.ts +30 -0
  1297. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -0
  1298. package/dist/modes/interactive/theme/theme-class.js +83 -0
  1299. package/dist/modes/interactive/theme/theme-class.js.map +1 -0
  1300. package/dist/modes/interactive/theme/theme-loading.d.ts +17 -0
  1301. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -0
  1302. package/dist/modes/interactive/theme/theme-loading.js +155 -0
  1303. package/dist/modes/interactive/theme/theme-loading.js.map +1 -0
  1304. package/dist/modes/interactive/theme/theme-parse.d.ts +5 -0
  1305. package/dist/modes/interactive/theme/theme-parse.d.ts.map +1 -0
  1306. package/dist/modes/interactive/theme/theme-parse.js +52 -0
  1307. package/dist/modes/interactive/theme/theme-parse.js.map +1 -0
  1308. package/dist/modes/interactive/theme/theme-schema.d.ts +255 -0
  1309. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  1310. package/dist/modes/interactive/theme/theme-schema.js +78 -0
  1311. package/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  1312. package/dist/modes/interactive/theme/theme.d.ts +6 -108
  1313. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1314. package/dist/modes/interactive/theme/theme.js +6 -1065
  1315. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1316. package/dist/modes/interactive/theme/tui-theme.d.ts +15 -0
  1317. package/dist/modes/interactive/theme/tui-theme.d.ts.map +1 -0
  1318. package/dist/modes/interactive/theme/tui-theme.js +199 -0
  1319. package/dist/modes/interactive/theme/tui-theme.js.map +1 -0
  1320. package/dist/modes/rpc/rpc-client.d.ts +1 -61
  1321. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1322. package/dist/modes/rpc/rpc-client.js +1 -72
  1323. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1324. package/dist/modes/rpc/rpc-command-handler.d.ts +14 -0
  1325. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -0
  1326. package/dist/modes/rpc/rpc-command-handler.js +226 -0
  1327. package/dist/modes/rpc/rpc-command-handler.js.map +1 -0
  1328. package/dist/modes/rpc/rpc-extension-ui.d.ts +15 -0
  1329. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -0
  1330. package/dist/modes/rpc/rpc-extension-ui.js +196 -0
  1331. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -0
  1332. package/dist/modes/rpc/rpc-input.d.ts +12 -0
  1333. package/dist/modes/rpc/rpc-input.d.ts.map +1 -0
  1334. package/dist/modes/rpc/rpc-input.js +54 -0
  1335. package/dist/modes/rpc/rpc-input.js.map +1 -0
  1336. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1337. package/dist/modes/rpc/rpc-mode.js +43 -607
  1338. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1339. package/dist/modes/rpc/rpc-responses.d.ts +8 -0
  1340. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -0
  1341. package/dist/modes/rpc/rpc-responses.js +27 -0
  1342. package/dist/modes/rpc/rpc-responses.js.map +1 -0
  1343. package/dist/modes/rpc/rpc-session-binding.d.ts +25 -0
  1344. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -0
  1345. package/dist/modes/rpc/rpc-session-binding.js +70 -0
  1346. package/dist/modes/rpc/rpc-session-binding.js.map +1 -0
  1347. package/dist/package-manager-cli-parser.d.ts +28 -0
  1348. package/dist/package-manager-cli-parser.d.ts.map +1 -0
  1349. package/dist/package-manager-cli-parser.js +269 -0
  1350. package/dist/package-manager-cli-parser.js.map +1 -0
  1351. package/dist/package-manager-cli.d.ts +0 -1
  1352. package/dist/package-manager-cli.d.ts.map +1 -1
  1353. package/dist/package-manager-cli.js +2 -267
  1354. package/dist/package-manager-cli.js.map +1 -1
  1355. package/dist/utils/git.d.ts.map +1 -1
  1356. package/dist/utils/git.js +10 -0
  1357. package/dist/utils/git.js.map +1 -1
  1358. package/dist/utils/shell.d.ts +1 -0
  1359. package/dist/utils/shell.d.ts.map +1 -1
  1360. package/dist/utils/shell.js +12 -5
  1361. package/dist/utils/shell.js.map +1 -1
  1362. package/dist/utils/version-check.d.ts +1 -0
  1363. package/dist/utils/version-check.d.ts.map +1 -1
  1364. package/dist/utils/version-check.js +17 -0
  1365. package/dist/utils/version-check.js.map +1 -1
  1366. package/docs/custom-provider.md +4 -3
  1367. package/docs/development.md +4 -0
  1368. package/docs/models.md +3 -2
  1369. package/docs/packages.md +2 -2
  1370. package/docs/quickstart.md +1 -1
  1371. package/docs/sdk.md +2 -40
  1372. package/docs/security.md +1 -1
  1373. package/docs/workflows.md +246 -179
  1374. package/examples/extensions/custom-provider-anthropic/index.ts +1 -106
  1375. package/examples/extensions/gondolin/index.ts +0 -23
  1376. package/examples/extensions/overlay-qa-animation-components.ts +255 -0
  1377. package/examples/extensions/overlay-qa-focus-components.ts +222 -0
  1378. package/examples/extensions/overlay-qa-position-components.ts +433 -0
  1379. package/examples/extensions/overlay-qa-shared.ts +37 -0
  1380. package/examples/extensions/overlay-qa-streaming-input-components.ts +205 -0
  1381. package/examples/extensions/overlay-qa-tests.ts +17 -1156
  1382. package/examples/extensions/overlay-qa-toggle-passive-components.ts +169 -0
  1383. package/examples/extensions/space-invaders.ts +0 -60
  1384. package/examples/extensions/subagent/display.ts +148 -0
  1385. package/examples/extensions/subagent/index.ts +11 -858
  1386. package/examples/extensions/subagent/render.ts +383 -0
  1387. package/examples/extensions/subagent/runner.ts +252 -0
  1388. package/examples/extensions/subagent/schemas.ts +59 -0
  1389. package/examples/extensions/subagent/types.ts +36 -0
  1390. package/examples/extensions/tic-tac-toe-instructions.ts +65 -0
  1391. package/examples/extensions/tic-tac-toe-rendering.ts +414 -0
  1392. package/examples/extensions/tic-tac-toe-state.ts +158 -0
  1393. package/examples/extensions/tic-tac-toe.ts +92 -754
  1394. package/examples/rpc-extension-ui-components.ts +189 -0
  1395. package/examples/rpc-extension-ui.ts +2 -179
  1396. package/package.json +7 -7
  1397. package/dist/builtin/workflows/src/workflows/define-workflow.ts +0 -277
  1398. package/dist/core/tools/bash-policy.d.ts +0 -62
  1399. package/dist/core/tools/bash-policy.d.ts.map +0 -1
  1400. package/dist/core/tools/bash-policy.js +0 -1069
  1401. package/dist/core/tools/bash-policy.js.map +0 -1
@@ -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"]}